Merge branch 'dev'

commit fb9d3f736b
Merge: 4d4d5453 049dc179
Author: shamoon <4887959+shamoon@users.noreply.github.com>
Date:   Sun Dec 4 16:47:58 2022 -0800

    Merge pull request #2000 from paperless-ngx/feature-frontend-paperless-mail

    Feature: frontend paperless mail

commit 4d4d545343
Merge: 2704bcb9 4b31e5d0
Author: Trenton H <797416+stumpylog@users.noreply.github.com>
Date:   Sun Dec 4 16:34:41 2022 -0800

    Merge pull request #848 from p-h-a-i-l/feature-consume-eml

    Feature ability to consume mails and eml files

commit 049dc17902
Author: Trenton Holmes <797416+stumpylog@users.noreply.github.com>
Date:   Sun Dec 4 16:33:07 2022 -0800

    Moves where the mail views live and puts the ordering on those

commit 4b31e5d0b4
Author: Trenton Holmes <797416+stumpylog@users.noreply.github.com>
Date:   Sun Dec 4 14:00:59 2022 -0800

    Fixes my broken formatting

commit 8076ebd78c
Merge: fe2db4db 2704bcb9
Author: Trenton Holmes <797416+stumpylog@users.noreply.github.com>
Date:   Sun Dec 4 13:55:46 2022 -0800

    Merge remote-tracking branch 'upstream/dev' into feature-consume-eml

commit 2704bcb979
Author: Trenton Holmes <797416+stumpylog@users.noreply.github.com>
Date:   Sun Dec 4 13:06:18 2022 -0800

    Resets to -dev versioning

commit 59f6074093
Author: Trenton Holmes <797416+stumpylog@users.noreply.github.com>
Date:   Sun Dec 4 12:58:03 2022 -0800

    Bumps version to 1.10.2

commit b1da7f3491
Author: Trenton Holmes <797416+stumpylog@users.noreply.github.com>
Date:   Sun Dec 4 12:57:19 2022 -0800

    Probably fixes the changelog step not working

commit adde88e7b9
Merge: a8f3c4be 8e876ef2
Author: Trenton Holmes <797416+stumpylog@users.noreply.github.com>
Date:   Sun Dec 4 12:55:55 2022 -0800

    Merge branch 'dev'

commit 8e876ef2d1
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Sun Dec 4 10:20:48 2022 -0800

    New translations messages.xlf (Serbian (Latin))
    [ci skip]

commit 2ea0f83a91
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Sat Dec 3 05:12:02 2022 -0800

    New translations messages.xlf (Italian)
    [ci skip]

commit 05d8ea5a9d
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Sat Dec 3 02:09:05 2022 -0800

    New translations messages.xlf (Serbian (Latin))
    [ci skip]

commit 967248233f
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Sat Dec 3 02:09:04 2022 -0800

    New translations messages.xlf (French)
    [ci skip]

commit b4c4b9fb6a
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Sat Dec 3 02:09:03 2022 -0800

    New translations messages.xlf (Spanish)
    [ci skip]

commit adb6483abc
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Sat Dec 3 02:09:01 2022 -0800

    New translations messages.xlf (Arabic)
    [ci skip]

commit 908db55bb7
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Sat Dec 3 02:09:00 2022 -0800

    New translations messages.xlf (Belarusian)
    [ci skip]

commit 610f20de28
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Sat Dec 3 02:08:59 2022 -0800

    New translations messages.xlf (Czech)
    [ci skip]

commit b2513a5cde
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Sat Dec 3 02:08:57 2022 -0800

    New translations messages.xlf (Danish)
    [ci skip]

commit bfa1c13d01
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Sat Dec 3 02:08:56 2022 -0800

    New translations messages.xlf (Finnish)
    [ci skip]

commit 12aaff431f
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Sat Dec 3 02:08:55 2022 -0800

    New translations messages.xlf (Hebrew)
    [ci skip]

commit 547e5ea55e
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Sat Dec 3 02:08:54 2022 -0800

    New translations messages.xlf (Italian)
    [ci skip]

commit c301127096
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Sat Dec 3 02:08:52 2022 -0800

    New translations messages.xlf (Dutch)
    [ci skip]

commit 19147855e7
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Sat Dec 3 02:08:51 2022 -0800

    New translations messages.xlf (Romanian)
    [ci skip]

commit 4e7c7ea1d6
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Sat Dec 3 02:08:49 2022 -0800

    New translations messages.xlf (Norwegian)
    [ci skip]

commit fcf8a49160
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Sat Dec 3 02:08:48 2022 -0800

    New translations messages.xlf (Portuguese)
    [ci skip]

commit c6d658a954
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Sat Dec 3 02:08:47 2022 -0800

    New translations messages.xlf (Russian)
    [ci skip]

commit a78cd6526c
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Sat Dec 3 02:08:45 2022 -0800

    New translations messages.xlf (Slovenian)
    [ci skip]

commit bf895b54f4
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Sat Dec 3 02:08:44 2022 -0800

    New translations messages.xlf (Swedish)
    [ci skip]

commit e5f84ef583
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Sat Dec 3 02:08:43 2022 -0800

    New translations messages.xlf (Turkish)
    [ci skip]

commit 8c690a9a51
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Sat Dec 3 02:08:41 2022 -0800

    New translations messages.xlf (Chinese Simplified)
    [ci skip]

commit 56526b970a
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Sat Dec 3 02:08:40 2022 -0800

    New translations messages.xlf (Portuguese, Brazilian)
    [ci skip]

commit 94fbf92916
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Sat Dec 3 02:08:38 2022 -0800

    New translations messages.xlf (Croatian)
    [ci skip]

commit 37f5e46d09
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Sat Dec 3 02:08:37 2022 -0800

    New translations messages.xlf (Luxembourgish)
    [ci skip]

commit 38be817637
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Sat Dec 3 02:08:36 2022 -0800

    New translations messages.xlf (Polish)
    [ci skip]

commit 17303f41da
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Sat Dec 3 02:08:34 2022 -0800

    New translations messages.xlf (German)
    [ci skip]

commit 55ef0d4a1b
Author: Trenton Holmes <797416+stumpylog@users.noreply.github.com>
Date:   Sun Dec 4 08:44:35 2022 -0800

    Fixes language code checks around two part languages

commit a8f3c4be54
Merge: fa62ae82 1b9de2be
Author: shamoon <4887959+shamoon@users.noreply.github.com>
Date:   Sat Dec 3 18:47:09 2022 -0800

    Merge pull request #1947 from alexander-bauer/helm

    Take ownership of k8s-at-home Helm chart,

commit 1b9de2be5a
Author: shamoon <4887959+shamoon@users.noreply.github.com>
Date:   Sat Dec 3 18:46:19 2022 -0800

    Use checkout v3

commit 0e8265f1ae
Merge: ea38eb01 5b45a140
Author: shamoon <4887959+shamoon@users.noreply.github.com>
Date:   Sat Dec 3 18:44:28 2022 -0800

    Merge pull request #2109 from paperless-ngx/fix/redis-socket-parsing

    Bugfix: Redis socket compatibility didn't handle URLs with ports

commit 5b45a140b9
Author: Trenton Holmes <797416+stumpylog@users.noreply.github.com>
Date:   Sat Dec 3 18:30:21 2022 -0800

    Fixes issue when the Redis URL also specifies a port

commit 72fb9a475d
Author: Alexander Bauer <sasha@linux.com>
Date:   Thu Nov 10 02:24:04 2022 +0000

    Ignore end-of-lines on generated Chart README

commit bf97f5807f
Author: Alexander Bauer <sasha@linux.com>
Date:   Thu Nov 10 02:21:29 2022 +0000

    Ignore non-yaml Helm chart template

commit a707818b4d
Author: Alexander Bauer <sasha@linux.com>
Date:   Thu Nov 10 01:54:35 2022 +0000

    Change Helm chart releaser to use version tags only

commit fb46c1b96a
Author: Alexander Bauer <sasha@linux.com>
Date:   Thu Nov 10 01:52:02 2022 +0000

    Ignore generated Helm chart README from prettier

commit 3226d8b25b
Author: Alexander Bauer <sasha@linux.com>
Date:   Tue Nov 8 00:46:27 2022 +0000

    fixup! Add mostly-unchanged Helm chart from k8s-at-home

commit 5c4363cbea
Author: Alexander Bauer <sasha@linux.com>
Date:   Tue Nov 8 00:24:04 2022 +0000

    Add mostly-unchanged Helm chart from k8s-at-home

    - Add the chart from k8s-at-home with some modifications
    - Add the Apache 2.0 license to the new charts/paperless-ngx
      subdirectory, the license under which the chart was distributed by
      k8s-at-home. I believe the chart will have to maintain this license.

    - Update the maintainers section and contact information to point to
      Paperless-ngx.
    - Regenerate the README (using helm-docs)

    - Add a GitHub actions configuration to publish the chart using GitHub
      pages. This makes the GitHub Pages page rendered by this repository
      usable as a Helm repository, without affecting potential future uses
      of the Pages site.

    These are in response to discussion #1790.

commit fa62ae820b
Merge: bcc029a2 17891baf
Author: shamoon <4887959+shamoon@users.noreply.github.com>
Date:   Sat Dec 3 14:19:36 2022 -0800

    Merge pull request #2106 from tooomm/docs/edit

    Docs: Some more small MkDocs updates

commit 17891bafaf
Author: tooomm <tooomm@users.noreply.github.com>
Date:   Sat Dec 3 20:02:40 2022 +0100

    lint

commit 15fdadadef
Author: tooomm <tooomm@users.noreply.github.com>
Date:   Sat Dec 3 19:36:49 2022 +0100

    open demo in new page

commit ce9f604d81
Author: Michael Shamoon <4887959+shamoon@users.noreply.github.com>
Date:   Sat Dec 3 09:29:34 2022 -0800

    Explicit default ordering for rule / account views

commit 4f876db5d1
Author: Michael Shamoon <4887959+shamoon@users.noreply.github.com>
Date:   Mon Nov 28 21:38:52 2022 -0800

    prevent loss of unsaved changes to settings on tab nav

commit 5e5f56dc67
Author: Michael Shamoon <4887959+shamoon@users.noreply.github.com>
Date:   Mon Nov 28 20:39:03 2022 -0800

    Re-org where some of the new classes are found

commit 93fab8bb95
Author: Michael Shamoon <4887959+shamoon@users.noreply.github.com>
Date:   Mon Nov 28 12:53:20 2022 -0800

    Apply code suggestions from @stumpylog

commit 35ca2195fe
Author: Michael Shamoon <4887959+shamoon@users.noreply.github.com>
Date:   Mon Nov 28 15:51:39 2022 -0800

    frontend mail rule validation

    Display non-field validation errors, hide action param field if not needed

commit 7ace66d7fd
Author: Michael Shamoon <4887959+shamoon@users.noreply.github.com>
Date:   Mon Nov 28 13:58:37 2022 -0800

    fix edit dialog getters

commit 4f9a31244b
Author: Michael Shamoon <4887959+shamoon@users.noreply.github.com>
Date:   Fri Nov 18 20:23:40 2022 -0800

    Add settings routing

commit 14cf4f7095
Author: Michael Shamoon <4887959+shamoon@users.noreply.github.com>
Date:   Fri Nov 18 19:38:49 2022 -0800

    Update frontend strings

commit 8bd7c27826
Author: Michael Shamoon <4887959+shamoon@users.noreply.github.com>
Date:   Fri Nov 18 17:11:15 2022 -0800

    Hide order parameter, fix imap port

commit 8c4f486fe9
Author: Michael Shamoon <4887959+shamoon@users.noreply.github.com>
Date:   Fri Nov 18 14:22:07 2022 -0800

    API mail rule & account tests

    and fix use of assign_tags

commit 2849414445
Author: Michael Shamoon <4887959+shamoon@users.noreply.github.com>
Date:   Fri Nov 18 14:21:31 2022 -0800

    one-way imap password setting via API, ObfuscatedPasswordField

commit ea1ea0816f
Author: Michael Shamoon <4887959+shamoon@users.noreply.github.com>
Date:   Fri Nov 18 14:10:17 2022 -0800

    Fix mail account / rule delete

commit 52d3a8703c
Author: Michael Shamoon <4887959+shamoon@users.noreply.github.com>
Date:   Sat Nov 12 15:14:58 2022 -0800

    Dynamically load mail rules / accounts settings

commit 4cb4d6adcd
Author: Michael Shamoon <4887959+shamoon@users.noreply.github.com>
Date:   Sat Nov 12 15:15:59 2022 -0800

    update settings tests to not wait on data which is now on-demand

commit 24444237f2
Author: Michael Shamoon <4887959+shamoon@users.noreply.github.com>
Date:   Sat Nov 12 14:46:57 2022 -0800

    dynamic loading of settings tab contents

commit 40c8629aef
Author: Michael Shamoon <4887959+shamoon@users.noreply.github.com>
Date:   Thu Nov 10 21:04:29 2022 -0800

    Update welcome tour, move admin button

commit 98cdf614a5
Author: Michael Shamoon <4887959+shamoon@users.noreply.github.com>
Date:   Wed Nov 9 19:59:35 2022 -0800

    Mail form tweaks

    Include add button

    Include add button

commit 2eb2d99a91
Author: Michael Shamoon <4887959+shamoon@users.noreply.github.com>
Date:   Wed Nov 9 03:43:57 2022 -0800

    Update frontend fixtures & tests for compatibility

commit 18ad9bcbf2
Author: Michael Shamoon <4887959+shamoon@users.noreply.github.com>
Date:   Tue Nov 8 12:18:47 2022 -0800

    Working mail rule & account edit

commit 997bff4917
Author: Michael Shamoon <4887959+shamoon@users.noreply.github.com>
Date:   Wed Nov 9 02:40:45 2022 -0800

    Update deprecated edit-dialog rxjs

commit 78f9a80895
Author: Michael Shamoon <4887959+shamoon@users.noreply.github.com>
Date:   Tue Nov 8 12:09:16 2022 -0800

    mail account + rule deletion

commit 9231df7a4a
Author: Michael Shamoon <4887959+shamoon@users.noreply.github.com>
Date:   Tue Nov 8 11:50:57 2022 -0800

    Mail rule edit dialog

commit 6f25917c86
Author: Michael Shamoon <4887959+shamoon@users.noreply.github.com>
Date:   Tue Nov 8 11:11:35 2022 -0800

    Mail account edit dialog

commit c41d1a78a8
Author: Michael Shamoon <4887959+shamoon@users.noreply.github.com>
Date:   Tue Nov 8 10:53:41 2022 -0800

    remove unused toastService from edit dialogs and add confirmation

commit c3331086d5
Author: Michael Shamoon <4887959+shamoon@users.noreply.github.com>
Date:   Tue Nov 8 03:39:54 2022 -0800

    Basic data retrieval

commit 6bd9ccd8f6
Author: tooomm <tooomm@users.noreply.github.com>
Date:   Sat Dec 3 18:30:02 2022 +0100

    update default edit path

commit 68c7cecb07
Author: tooomm <tooomm@users.noreply.github.com>
Date:   Sat Dec 3 18:29:14 2022 +0100

    add mkdocs site to gitignore

commit bcc029a2c7
Merge: 9d418055 1727eb00
Author: shamoon <4887959+shamoon@users.noreply.github.com>
Date:   Sat Dec 3 09:00:02 2022 -0800

    Merge pull request #2104 from paperless-ngx/docs-cleanup

    Chore: Cleans up documentation links

commit ea38eb01b2
Author: Trenton H <797416+stumpylog@users.noreply.github.com>
Date:   Fri Dec 2 13:54:15 2022 -0800

    Adds support for database number specification

commit 01d070b882
Author: Trenton H <797416+stumpylog@users.noreply.github.com>
Date:   Fri Dec 2 09:34:59 2022 -0800

    Adds a layer to translate between differing formats of socket based Redis URLs

commit 1727eb00cc
Author: Trenton Holmes <797416+stumpylog@users.noreply.github.com>
Date:   Fri Dec 2 19:34:43 2022 -0800

    Cleans up a number of internal links

commit 9d4180553c
Merge: 7c614264 8049af4b
Author: shamoon <4887959+shamoon@users.noreply.github.com>
Date:   Sat Dec 3 07:58:12 2022 -0800

    Merge pull request #2102 from tooomm/patch-1

    Fix doc links in contributing

commit 8049af4b22
Author: tooomm <tooomm@users.noreply.github.com>
Date:   Sat Dec 3 14:38:55 2022 +0100

    Fix doc links in contributing

commit 7c6142643d
Author: Michael Shamoon <4887959+shamoon@users.noreply.github.com>
Date:   Sat Dec 3 02:08:51 2022 -0800

    Update more docs references

commit 2e8706f4e2
Author: Michael Shamoon <4887959+shamoon@users.noreply.github.com>
Date:   Sat Dec 3 02:05:49 2022 -0800

    Update frontend translation strings

commit d39d32d555
Author: Michael Shamoon <4887959+shamoon@users.noreply.github.com>
Date:   Sat Dec 3 02:04:30 2022 -0800

    Fix docs references

commit 6f52945449
Author: Michael Shamoon <4887959+shamoon@users.noreply.github.com>
Date:   Sat Dec 3 01:47:04 2022 -0800

    docs index formatting error

commit 37025297b5
Merge: aa023ea2 dc9e9e3b
Author: shamoon <4887959+shamoon@users.noreply.github.com>
Date:   Sat Dec 3 01:33:31 2022 -0800

    Merge pull request #2095 from paperless-ngx/update-readme-doc-links

    Documentation: Update docs links and screenshot in readme, add favicon

commit aa023ea2e3
Author: Michael Shamoon <4887959+shamoon@users.noreply.github.com>
Date:   Sat Dec 3 01:30:07 2022 -0800

    correct docs deploy domain

commit 78bf0b63a5
Merge: 29391c1c a96ecd67
Author: Felix E <felix@eckhofer.com>
Date:   Sat Dec 3 09:10:20 2022 +0100

    Merge pull request #2087 from Ricks-ha/main

    Add examples to URL and TIME_ZONE

commit dc9e9e3b48
Author: Michael Shamoon <4887959+shamoon@users.noreply.github.com>
Date:   Fri Dec 2 20:06:51 2022 -0800

    add favicon

commit ab29c49b7a
Author: shamoon <4887959+shamoon@users.noreply.github.com>
Date:   Fri Dec 2 19:09:19 2022 -0800

    Update docs links and screenshot in readme

commit 1c0ac474b8
Merge: 25fb8d9c 29391c1c
Author: Trenton Holmes <797416+stumpylog@users.noreply.github.com>
Date:   Fri Dec 2 19:05:28 2022 -0800

    Merge branch 'main' into dev

commit 29391c1c7b
Merge: 58a01a57 69383497
Author: shamoon <4887959+shamoon@users.noreply.github.com>
Date:   Fri Dec 2 15:22:39 2022 -0800

    Merge pull request #2067 from paperless-ngx/material-docs

    [WIP] Feature: Move docs to material-mkdocs

commit 693834971c
Author: Michael Shamoon <4887959+shamoon@users.noreply.github.com>
Date:   Thu Dec 1 20:00:23 2022 -0800

    Add v1.10.1 changelog

commit 97376d4b72
Author: Michael Shamoon <4887959+shamoon@users.noreply.github.com>
Date:   Fri Dec 2 09:09:29 2022 -0800

    update ci for documentation build vs deploy

commit 3ee1d2a9a9
Author: Michael Shamoon <4887959+shamoon@users.noreply.github.com>
Date:   Tue Nov 29 21:20:45 2022 -0800

    Add changes from #2069

commit 605f885e19
Author: Michael Shamoon <4887959+shamoon@users.noreply.github.com>
Date:   Tue Nov 29 12:49:23 2022 -0800

    Move docs to material-mkdocs

commit 25fb8d9c3b
Author: Michael Shamoon <4887959+shamoon@users.noreply.github.com>
Date:   Fri Dec 2 08:30:42 2022 -0800

    Update dev version string

commit a96ecd673b
Author: Ricks-ha <ricks@ricksha.eu>
Date:   Fri Dec 2 13:27:57 2022 +0100

    Add examples to URL and TIME_ZONE

commit 58a01a57ee
Merge: a96f79f6 c18fc03e
Author: shamoon <4887959+shamoon@users.noreply.github.com>
Date:   Fri Dec 2 03:36:55 2022 -0800

    Merge pull request #2082 from paperless-ngx/v1.10.1-changelog

    Chore: Add v1.10.1 changelong

commit c18fc03ef3
Author: Michael Shamoon <4887959+shamoon@users.noreply.github.com>
Date:   Thu Dec 1 20:00:23 2022 -0800

    Add v1.10.1 changelong

commit a96f79f6a3
Author: Michael Shamoon <4887959+shamoon@users.noreply.github.com>
Date:   Thu Dec 1 18:54:00 2022 -0800

    Bump version to 1.10.1

commit d6f1d004a3
Merge: 88cf6ef8 da72d357
Author: Michael Shamoon <4887959+shamoon@users.noreply.github.com>
Date:   Thu Dec 1 18:52:35 2022 -0800

    Merge branch 'dev'

commit da72d3571b
Merge: 8241da0e 86592928
Author: shamoon <4887959+shamoon@users.noreply.github.com>
Date:   Thu Dec 1 18:52:06 2022 -0800

    Merge pull request #2050 from paperless-ngx/l10n_dev

    New Crowdin updates

commit 8241da0eb3
Author: Michael Shamoon <4887959+shamoon@users.noreply.github.com>
Date:   Thu Dec 1 17:01:22 2022 -0800

    fix broken npm package-lock

commit 51562667bf
Merge: 1aee2988 97eeae65
Author: shamoon <4887959+shamoon@users.noreply.github.com>
Date:   Thu Dec 1 16:40:07 2022 -0800

    Merge pull request #2076 from paperless-ngx/dependabot/npm_and_yarn/src-ui/dev/tslib-2.4.1

    Bump tslib from 2.4.0 to 2.4.1 in /src-ui

commit 97eeae65a3
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Date:   Fri Dec 2 00:39:26 2022 +0000

    Bump tslib from 2.4.0 to 2.4.1 in /src-ui

    Bumps [tslib](https://github.com/Microsoft/tslib) from 2.4.0 to 2.4.1.
    - [Release notes](https://github.com/Microsoft/tslib/releases)
    - [Commits](https://github.com/Microsoft/tslib/compare/2.4.0...2.4.1)

    ---
    updated-dependencies:
    - dependency-name: tslib
      dependency-type: direct:production
      update-type: version-update:semver-patch
    ...

    Signed-off-by: dependabot[bot] <support@github.com>

commit 1aee2988f7
Merge: a63a8dd4 6f0077ef
Author: shamoon <4887959+shamoon@users.noreply.github.com>
Date:   Thu Dec 1 16:39:24 2022 -0800

    Merge pull request #2079 from paperless-ngx/dependabot/npm_and_yarn/src-ui/dev/angular-builders/jest-14.1.0

    Bump @angular-builders/jest from 14.0.1 to 14.1.0 in /src-ui

commit a63a8dd488
Merge: 06a9df6d 39be68a1
Author: shamoon <4887959+shamoon@users.noreply.github.com>
Date:   Thu Dec 1 16:38:38 2022 -0800

    Merge pull request #2078 from paperless-ngx/dependabot/npm_and_yarn/src-ui/dev/jest-preset-angular-12.2.3

    Bump jest-preset-angular from 12.2.2 to 12.2.3 in /src-ui

commit 06a9df6dbd
Merge: 49933bb5 7d7d9630
Author: shamoon <4887959+shamoon@users.noreply.github.com>
Date:   Thu Dec 1 16:37:25 2022 -0800

    Merge pull request #2080 from paperless-ngx/dependabot/npm_and_yarn/src-ui/dev/ngx-file-drop-14.0.2

    Bump ngx-file-drop from 14.0.1 to 14.0.2 in /src-ui

commit 49933bb5a8
Merge: 02c782a1 ac69babf
Author: shamoon <4887959+shamoon@users.noreply.github.com>
Date:   Thu Dec 1 16:18:07 2022 -0800

    Merge pull request #2077 from paperless-ngx/dependabot/npm_and_yarn/src-ui/dev/ngneat/dirty-check-forms-3.0.3

    Bump @ngneat/dirty-check-forms from 3.0.2 to 3.0.3 in /src-ui

commit 7d7d9630c1
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Date:   Thu Dec 1 20:03:32 2022 +0000

    Bump ngx-file-drop from 14.0.1 to 14.0.2 in /src-ui

    Bumps [ngx-file-drop](https://github.com/georgipeltekov/ngx-file-drop) from 14.0.1 to 14.0.2.
    - [Release notes](https://github.com/georgipeltekov/ngx-file-drop/releases)
    - [Changelog](https://github.com/georgipeltekov/ngx-file-drop/blob/master/CHANGELOG.md)
    - [Commits](https://github.com/georgipeltekov/ngx-file-drop/compare/v14.0.1...v14.0.2)

    ---
    updated-dependencies:
    - dependency-name: ngx-file-drop
      dependency-type: direct:production
      update-type: version-update:semver-patch
    ...

    Signed-off-by: dependabot[bot] <support@github.com>

commit 6f0077efac
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Date:   Thu Dec 1 20:03:05 2022 +0000

    Bump @angular-builders/jest from 14.0.1 to 14.1.0 in /src-ui

    Bumps [@angular-builders/jest](https://github.com/just-jeb/angular-builders/tree/HEAD/packages/jest) from 14.0.1 to 14.1.0.
    - [Release notes](https://github.com/just-jeb/angular-builders/releases)
    - [Changelog](https://github.com/just-jeb/angular-builders/blob/master/packages/jest/CHANGELOG.md)
    - [Commits](https://github.com/just-jeb/angular-builders/commits/@angular-builders/jest@14.1.0/packages/jest)

    ---
    updated-dependencies:
    - dependency-name: "@angular-builders/jest"
      dependency-type: direct:development
      update-type: version-update:semver-minor
    ...

    Signed-off-by: dependabot[bot] <support@github.com>

commit 39be68a1a4
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Date:   Thu Dec 1 20:02:39 2022 +0000

    Bump jest-preset-angular from 12.2.2 to 12.2.3 in /src-ui

    Bumps [jest-preset-angular](https://github.com/thymikee/jest-preset-angular) from 12.2.2 to 12.2.3.
    - [Release notes](https://github.com/thymikee/jest-preset-angular/releases)
    - [Changelog](https://github.com/thymikee/jest-preset-angular/blob/main/CHANGELOG.md)
    - [Commits](https://github.com/thymikee/jest-preset-angular/compare/v12.2.2...v12.2.3)

    ---
    updated-dependencies:
    - dependency-name: jest-preset-angular
      dependency-type: direct:development
      update-type: version-update:semver-patch
    ...

    Signed-off-by: dependabot[bot] <support@github.com>

commit ac69babfce
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Date:   Thu Dec 1 20:02:11 2022 +0000

    Bump @ngneat/dirty-check-forms from 3.0.2 to 3.0.3 in /src-ui

    Bumps [@ngneat/dirty-check-forms](https://github.com/ngneat/dirty-check-forms) from 3.0.2 to 3.0.3.
    - [Release notes](https://github.com/ngneat/dirty-check-forms/releases)
    - [Changelog](https://github.com/ngneat/dirty-check-forms/blob/master/CHANGELOG.md)
    - [Commits](https://github.com/ngneat/dirty-check-forms/compare/v3.0.2...v3.0.3)

    ---
    updated-dependencies:
    - dependency-name: "@ngneat/dirty-check-forms"
      dependency-type: direct:production
      update-type: version-update:semver-patch
    ...

    Signed-off-by: dependabot[bot] <support@github.com>

commit 02c782a127
Merge: 4e90fda8 9b602a4b
Author: shamoon <4887959+shamoon@users.noreply.github.com>
Date:   Thu Dec 1 08:19:59 2022 -0800

    Merge pull request #2073 from paperless-ngx/fix-frontend-tasks-display

    Fix: frontend tasks display in 1.10.0

commit 4e90fda80f
Author: Trenton Holmes <797416+stumpylog@users.noreply.github.com>
Date:   Tue Nov 29 20:06:56 2022 -0800

    Expands documentation around the permissions of the custom scripts and the folder

commit 88e3e556a1
Author: Trenton Holmes <797416+stumpylog@users.noreply.github.com>
Date:   Tue Nov 29 20:05:08 2022 -0800

    Fixes the custom scripts not running as root

commit 88cf6ef843
Author: shamoon <4887959+shamoon@users.noreply.github.com>
Date:   Wed Nov 30 15:14:21 2022 -0800

    add demo badge

commit 9b602a4bf0
Author: Michael Shamoon <4887959+shamoon@users.noreply.github.com>
Date:   Wed Nov 30 13:55:51 2022 -0800

    Fix frontend tasks display

commit fe2db4dbf7
Author: phail <phail@hacknology.de>
Date:   Wed Nov 30 10:16:39 2022 +0100

    adapt compose file for eml parsing

commit 47c88a6bdd
Merge: 4aa31859 a3bc3b78
Author: phail <phail@hacknology.de>
Date:   Wed Nov 30 10:10:57 2022 +0100

    Merge remote-tracking branch 'paperless/dev' into feature-consume-eml

commit a3bc3b78d5
Author: Trenton H <797416+stumpylog@users.noreply.github.com>
Date:   Tue Nov 29 14:34:12 2022 -0800

    Also display the container logs

commit fed7d3e993
Author: Trenton H <797416+stumpylog@users.noreply.github.com>
Date:   Tue Nov 29 13:59:48 2022 -0800

    Use docker compose to start and stop containers which match directly to our command overrides

commit 3a74f24e49
Author: Trenton H <797416+stumpylog@users.noreply.github.com>
Date:   Tue Nov 29 12:44:53 2022 -0800

    Adds libatomic1 for supporting armv7 better

commit 52afab39cf
Author: Trenton H <797416+stumpylog@users.noreply.github.com>
Date:   Tue Nov 29 12:16:51 2022 -0800

    Organizes the system packages a little bit more

commit 8659292852
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Tue Nov 29 00:29:45 2022 -0800

    New translations django.po (Norwegian)
    [ci skip]

commit ce73f159fd
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Mon Nov 28 14:13:54 2022 -0800

    New translations messages.xlf (Serbian (Latin))
    [ci skip]

commit 71382e9c62
Merge: 5d3a6e23 a1a802fc
Author: shamoon <4887959+shamoon@users.noreply.github.com>
Date:   Mon Nov 28 14:05:57 2022 -0800

    Merge pull request #2062 from paperless-ngx/fix/2053-long-names-too-quiet

    Bugfix: Don't silence an exception when trying to handle file naming

commit a1a802fc92
Author: Trenton H <797416+stumpylog@users.noreply.github.com>
Date:   Mon Nov 28 13:44:17 2022 -0800

    Don't silence an exception when trying to handle file naming

commit 4200fc610d
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Mon Nov 28 13:17:22 2022 -0800

    New translations messages.xlf (Serbian (Latin))
    [ci skip]

commit 32d212cd9f
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Mon Nov 28 11:17:07 2022 -0800

    New translations messages.xlf (German)
    [ci skip]

commit 5d3a6e230d
Merge: b33fcc11 f0497e77
Author: shamoon <4887959+shamoon@users.noreply.github.com>
Date:   Mon Nov 28 11:04:44 2022 -0800

    Merge pull request #2057 from paperless-ngx/fix/2044-lang-code-diffs

    Bugfix: Some tesseract languages aren't detected as installed.

commit b33fcc117e
Author: Trenton H <797416+stumpylog@users.noreply.github.com>
Date:   Mon Nov 28 09:25:03 2022 -0800

    Transition to a maintained upload release assert

commit e96d65f945
Author: Trenton H <797416+stumpylog@users.noreply.github.com>
Date:   Mon Nov 14 15:38:35 2022 -0800

    Allows parsing of WebP format images

commit cfeed0ce6e
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Mon Nov 28 08:30:32 2022 -0800

    New translations django.po (Polish)
    [ci skip]

commit b89ecf7d77
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Mon Nov 28 05:28:39 2022 -0800

    New translations messages.xlf (Luxembourgish)
    [ci skip]

commit 5ca25d44ba
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Mon Nov 28 04:27:31 2022 -0800

    New translations messages.xlf (Luxembourgish)
    [ci skip]

commit 1e11c12d96
Merge: e74d7dad 3e22e8e0
Author: Michael Shamoon <4887959+shamoon@users.noreply.github.com>
Date:   Sun Nov 27 21:16:50 2022 -0800

    Merge branch 'main' into dev

commit 3e22e8e0b9
Author: Trenton Holmes <797416+stumpylog@users.noreply.github.com>
Date:   Sun Nov 27 19:22:59 2022 -0800

    prepends the latest changelog

commit dba45f93a4
Author: Trenton Holmes <797416+stumpylog@users.noreply.github.com>
Date:   Sun Nov 27 19:22:03 2022 -0800

    Fixes the pre-commit command

commit 18f3f44ae9
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Sun Nov 27 17:58:25 2022 -0800

    New translations messages.xlf (Serbian (Latin))
    [ci skip]

commit 85a6a271dc
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Sun Nov 27 17:58:23 2022 -0800

    New translations messages.xlf (French)
    [ci skip]

commit abb515d4ea
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Sun Nov 27 17:58:22 2022 -0800

    New translations messages.xlf (Spanish)
    [ci skip]

commit 309d1f2b67
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Sun Nov 27 17:58:21 2022 -0800

    New translations messages.xlf (Arabic)
    [ci skip]

commit fa2f09bc4b
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Sun Nov 27 17:58:19 2022 -0800

    New translations messages.xlf (Belarusian)
    [ci skip]

commit c51590cd12
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Sun Nov 27 17:58:18 2022 -0800

    New translations messages.xlf (Czech)
    [ci skip]

commit 8e01406acf
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Sun Nov 27 17:58:17 2022 -0800

    New translations messages.xlf (Danish)
    [ci skip]

commit 7cce2f0fe6
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Sun Nov 27 17:58:16 2022 -0800

    New translations messages.xlf (Finnish)
    [ci skip]

commit 95091c2f39
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Sun Nov 27 17:58:14 2022 -0800

    New translations messages.xlf (Hebrew)
    [ci skip]

commit 4a0aa12bd9
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Sun Nov 27 17:58:13 2022 -0800

    New translations messages.xlf (Italian)
    [ci skip]

commit 9a0329746a
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Sun Nov 27 17:58:11 2022 -0800

    New translations messages.xlf (Dutch)
    [ci skip]

commit 8392a6fd4a
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Sun Nov 27 17:58:10 2022 -0800

    New translations messages.xlf (Romanian)
    [ci skip]

commit 8fa18bb8a6
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Sun Nov 27 17:58:09 2022 -0800

    New translations messages.xlf (Norwegian)
    [ci skip]

commit 0095b593fb
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Sun Nov 27 17:58:08 2022 -0800

    New translations messages.xlf (Portuguese)
    [ci skip]

commit b1e5135e21
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Sun Nov 27 17:58:05 2022 -0800

    New translations messages.xlf (Russian)
    [ci skip]

commit e88755e7ac
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Sun Nov 27 17:58:04 2022 -0800

    New translations messages.xlf (Slovenian)
    [ci skip]

commit c582947291
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Sun Nov 27 17:58:02 2022 -0800

    New translations messages.xlf (Swedish)
    [ci skip]

commit 98fe3a2cb7
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Sun Nov 27 17:58:01 2022 -0800

    New translations messages.xlf (Turkish)
    [ci skip]

commit 61647606fa
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Sun Nov 27 17:57:59 2022 -0800

    New translations messages.xlf (Chinese Simplified)
    [ci skip]

commit 95a1e5c645
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Sun Nov 27 17:57:58 2022 -0800

    New translations messages.xlf (Portuguese, Brazilian)
    [ci skip]

commit 8ead77f128
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Sun Nov 27 17:57:57 2022 -0800

    New translations messages.xlf (Croatian)
    [ci skip]

commit b9e9e82f33
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Sun Nov 27 17:57:55 2022 -0800

    New translations messages.xlf (Luxembourgish)
    [ci skip]

commit 487fd3a5dd
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Sun Nov 27 17:57:54 2022 -0800

    New translations messages.xlf (Polish)
    [ci skip]

commit 657786a2fe
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Sun Nov 27 17:57:52 2022 -0800

    New translations messages.xlf (German)
    [ci skip]

commit e74d7dadfb
Author: Trenton Holmes <797416+stumpylog@users.noreply.github.com>
Date:   Sun Nov 27 17:43:46 2022 -0800

    Adds the -dev back to the UI version

commit a2937cd54d
Merge: 9b01aa92 7b3ce628
Author: Trenton Holmes <797416+stumpylog@users.noreply.github.com>
Date:   Sun Nov 27 17:42:41 2022 -0800

    Merge branch 'main' into dev

commit 7b3ce6289f
Author: Trenton Holmes <797416+stumpylog@users.noreply.github.com>
Date:   Sun Nov 27 17:21:12 2022 -0800

    Bumps version number to 1.10.0

commit a16e8324be
Merge: 34a0111f 39de531d
Author: Trenton H <797416+stumpylog@users.noreply.github.com>
Date:   Sun Nov 27 17:18:08 2022 -0800

    Merge pull request #1960 from paperless-ngx/beta

    [Beta] Paperless-ngx v1.10.0 Release Candidate

commit 39de531df5
Merge: 4764d4fd c9d6c208
Author: shamoon <4887959+shamoon@users.noreply.github.com>
Date:   Sun Nov 27 14:47:14 2022 -0800

    Merge pull request #2041 from paperless-ngx/l10n_dev

    New Crowdin updates

commit 4764d4fd2b
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Sat Nov 26 12:28:51 2022 -0800

    New translations django.po (German)
    [ci skip]

commit e147d4571f
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Sat Nov 26 09:54:00 2022 -0800

    New translations django.po (German)
    [ci skip]

commit dc9aaa6472
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Tue Nov 22 15:21:31 2022 -0800

    New translations django.po (German)
    [ci skip]

commit 8a061c4ac2
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Tue Nov 22 15:21:30 2022 -0800

    New translations messages.xlf (German)
    [ci skip]

commit d051c5c282
Author: Michael Shamoon <4887959+shamoon@users.noreply.github.com>
Date:   Sat Nov 12 08:48:48 2022 -0800

    Remove ar-SA

commit 9e60810a8b
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Sat Nov 12 08:33:08 2022 -0800

    New translations messages.xlf (Arabic)
    [ci skip]

commit 96ee7990b2
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Fri Nov 11 13:59:54 2022 -0800

    New translations messages.xlf (Serbian (Latin))
    [ci skip]

commit 224bfeb72e
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Fri Nov 11 13:04:01 2022 -0800

    New translations messages.xlf (Serbian (Latin))
    [ci skip]

commit f0497e7744
Author: Trenton Holmes <797416+stumpylog@users.noreply.github.com>
Date:   Sun Nov 27 08:28:22 2022 -0800

    Fixes how a language code like chi-sim is treated in the checks

commit c9d6c208af
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Sat Nov 26 12:28:51 2022 -0800

    New translations django.po (German)
    [ci skip]

commit 9f2b8b1734
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Sat Nov 26 09:54:00 2022 -0800

    New translations django.po (German)
    [ci skip]

commit a04b9e3755
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Tue Nov 22 15:21:31 2022 -0800

    New translations django.po (German)
    [ci skip]

commit a81d4c5e9d
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Tue Nov 22 15:21:30 2022 -0800

    New translations messages.xlf (German)
    [ci skip]

commit 2140d42098
Merge: a5283525 2a5dc4de
Author: shamoon <4887959+shamoon@users.noreply.github.com>
Date:   Tue Nov 22 14:35:34 2022 -0800

    Merge pull request #2025 from paperless-ngx/fix-redo-ocr-message

    Add info that re-do OCR doesnt automatically refresh content

commit 43325371fc
Author: Michael Shamoon <4887959+shamoon@users.noreply.github.com>
Date:   Sat Nov 12 08:48:48 2022 -0800

    Remove ar-SA

commit d10721089e
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Sat Nov 12 08:33:08 2022 -0800

    New translations messages.xlf (Arabic)
    [ci skip]

commit f1a1a2da8b
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Fri Nov 11 13:59:54 2022 -0800

    New translations messages.xlf (Serbian (Latin))
    [ci skip]

commit 612e0a1163
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Fri Nov 11 13:04:01 2022 -0800

    New translations messages.xlf (Serbian (Latin))
    [ci skip]

commit 2a5dc4de38
Author: Michael Shamoon <4887959+shamoon@users.noreply.github.com>
Date:   Tue Nov 22 14:16:04 2022 -0800

    Add info that re-do OCR doesnt automatically refresh content

commit a5283525bc
Merge: f0155565 de98d748
Author: shamoon <4887959+shamoon@users.noreply.github.com>
Date:   Tue Nov 22 13:53:08 2022 -0800

    Merge pull request #2023 from paperless-ngx/fix/2019-create-date

    Bugfix: Fix created_date being a string

commit de98d748a9
Author: Trenton H <797416+stumpylog@users.noreply.github.com>
Date:   Tue Nov 22 10:11:27 2022 -0800

    If override_date is provided, coerce it into a datetime

commit f015556562
Author: Trenton H <797416+stumpylog@users.noreply.github.com>
Date:   Mon Nov 21 14:56:14 2022 -0800

    Adds a test to cover this edge case

commit b897d6de2e
Author: Trenton H <797416+stumpylog@users.noreply.github.com>
Date:   Mon Nov 21 14:45:20 2022 -0800

    Don't use the sidecar file when redoing the OCR, it only contains new text

commit 54f20b381e
Author: Trenton H <797416+stumpylog@users.noreply.github.com>
Date:   Mon Nov 21 12:59:14 2022 -0800

    Documents some issues and the required manual fixes for MariaDB

commit c0d4248021
Merge: 27f7f0a9 870e295a
Author: shamoon <4887959+shamoon@users.noreply.github.com>
Date:   Mon Nov 21 22:19:02 2022 -0800

    Merge pull request #1973 from paperless-ngx/l10n_dev

    New Crowdin updates

commit 870e295aae
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Mon Nov 21 21:43:54 2022 -0800

    New translations messages.xlf (German)
    [ci skip]

commit 4aa318598f
Author: phail <phail@hacknology.de>
Date:   Sun Nov 20 23:26:20 2022 +0100

    add test comments

commit 00f39d8b58
Author: phail <phail@hacknology.de>
Date:   Sun Nov 20 22:49:42 2022 +0100

    add test comments

commit 0b1a16908f
Author: phail <phail@hacknology.de>
Date:   Sun Nov 20 20:33:07 2022 +0100

    Include .eml reference in docs

commit d9796e5003
Author: phail <phail@hacknology.de>
Date:   Sun Nov 20 20:24:36 2022 +0100

    change order of elements in parsed Texts

commit 3599bb52c0
Author: phail <phail@hacknology.de>
Date:   Sun Nov 20 20:12:41 2022 +0100

    minor test improvements

commit af8a6c3764
Author: phail <phail@hacknology.de>
Date:   Sun Nov 20 19:53:57 2022 +0100

    fix filenames

commit 6d37ebf79e
Author: Trenton Holmes <797416+stumpylog@users.noreply.github.com>
Date:   Sun Nov 20 09:15:06 2022 -0800

    Fixes one more place which used manual size formatting

commit f6a70b85f4
Author: Trenton Holmes <797416+stumpylog@users.noreply.github.com>
Date:   Sun Nov 20 09:13:08 2022 -0800

    Use Django templating engine

commit 538a4219bd
Author: Trenton Holmes <797416+stumpylog@users.noreply.github.com>
Date:   Sun Nov 20 09:10:44 2022 -0800

    Fixes missing return

commit 85c41b79be
Author: Trenton Holmes <797416+stumpylog@users.noreply.github.com>
Date:   Sun Nov 20 08:02:06 2022 -0800

    Adds the new packages without updating other dependencies

commit 25d014d8ef
Merge: 9ec89762 27f7f0a9
Author: shamoon <4887959+shamoon@users.noreply.github.com>
Date:   Sun Nov 20 07:48:55 2022 -0800

    Merge branch 'beta' into l10n_dev

commit 9b01aa9202
Author: Trenton H <797416+stumpylog@users.noreply.github.com>
Date:   Mon Nov 14 15:47:22 2022 -0800

    Fixes the link for flake8 to the new (?) GitHub repo

commit df101f5e7a
Author: phail <phail@hacknology.de>
Date:   Sun Nov 20 16:09:46 2022 +0100

    split handle_message function

commit 1fa735eb23
Author: phail <phail@hacknology.de>
Date:   Sun Nov 20 15:44:43 2022 +0100

    use imagehash instead of bitwise hashing

commit ebe21a0114
Author: phail <phail@hacknology.de>
Date:   Sun Nov 20 14:22:30 2022 +0100

    eml parsing requires tika

commit d132eba143
Author: phail <phail@hacknology.de>
Date:   Sun Nov 20 12:48:03 2022 +0100

    optimize regex

commit 073c3c8fed
Author: phail <phail@hacknology.de>
Date:   Sun Nov 20 12:36:49 2022 +0100

    use html.escape instead of some self build functions

commit e3c1bde793
Author: phail <phail@hacknology.de>
Date:   Sun Nov 20 12:06:35 2022 +0100

    remove log mocking, replace pytest raises, use humanfriendly

commit 27f7f0a941
Merge: 9f5fd6c3 914661fd
Author: shamoon <4887959+shamoon@users.noreply.github.com>
Date:   Thu Nov 17 14:31:46 2022 -0800

    Merge pull request #1998 from paperless-ngx/fix/1993-date-overflow

    Bugfix: Don't allow exceptions during date parsing to fail consume

commit 9f5fd6c3ba
Merge: 0ae82005 3dfeee93
Author: shamoon <4887959+shamoon@users.noreply.github.com>
Date:   Thu Nov 17 14:30:23 2022 -0800

    Merge pull request #1967 from paperless-ngx/feature-scripts-output

    Feature: Capture stdout & stderr of the pre/post consume scripts

commit 914661fdbb
Author: Trenton H <797416+stumpylog@users.noreply.github.com>
Date:   Thu Nov 17 13:37:37 2022 -0800

    Don't allow an exception when trying to parse a date cause complete failure

commit 0ae8200593
Author: Trenton H <797416+stumpylog@users.noreply.github.com>
Date:   Mon Nov 14 15:47:22 2022 -0800

    Fixes the link for flake8 to the new (?) GitHub repo

commit b68906b14e
Author: phail <phail@hacknology.de>
Date:   Sun Nov 13 22:49:52 2022 +0100

    merge pipfile

commit 681eecc46e
Merge: 1578e8de d4712234
Author: phail <phail@hacknology.de>
Date:   Sun Nov 13 22:43:55 2022 +0100

    Merge remote-tracking branch 'paperless/dev' into feature-consume-eml

commit 1578e8de2d
Author: phail <phail@hacknology.de>
Date:   Sun Nov 13 22:33:26 2022 +0100

    fix live tests

commit 023c931401
Author: Michael Shamoon <4887959+shamoon@users.noreply.github.com>
Date:   Sun Nov 13 07:11:45 2022 -0800

    Fix top search not working due to missing button type

commit 9ec89762a3
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Sat Nov 12 09:31:54 2022 -0800

    New translations messages.xlf (Serbian (Latin))
    [ci skip]

commit fa47595ac8
Author: Michael Shamoon <4887959+shamoon@users.noreply.github.com>
Date:   Sat Nov 12 08:58:01 2022 -0800

    remove ar_SA

    [ci skip]

commit 79f5019b40
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Sat Nov 12 08:53:52 2022 -0800

    New Crowdin updates (#1971)

    * New translations messages.xlf (Serbian (Latin))
    [ci skip]

    * New translations messages.xlf (Serbian (Latin))
    [ci skip]

    * New translations messages.xlf (Italian)
    [ci skip]

    * New translations django.po (Italian)
    [ci skip]

    * New translations django.po (Serbian (Latin))
    [ci skip]

    * New translations messages.xlf (Russian)
    [ci skip]

    * New translations messages.xlf (Polish)
    [ci skip]

    * New translations messages.xlf (Serbian (Latin))
    [ci skip]

    * New translations messages.xlf (Luxembourgish)
    [ci skip]

    * New translations messages.xlf (Croatian)
    [ci skip]

    * New translations messages.xlf (Portuguese, Brazilian)
    [ci skip]

    * New translations messages.xlf (Chinese Simplified)
    [ci skip]

    * New translations messages.xlf (Turkish)
    [ci skip]

    * New translations messages.xlf (Swedish)
    [ci skip]

    * New translations messages.xlf (Slovenian)
    [ci skip]

    * New translations messages.xlf (Portuguese)
    [ci skip]

    * New translations messages.xlf (Norwegian)
    [ci skip]

    * New translations messages.xlf (German)
    [ci skip]

    * New translations messages.xlf (Dutch)
    [ci skip]

    * New translations messages.xlf (Italian)
    [ci skip]

    * New translations messages.xlf (Hebrew)
    [ci skip]

    * New translations messages.xlf (Finnish)
    [ci skip]

    * New translations messages.xlf (Danish)
    [ci skip]

    * New translations messages.xlf (Czech)
    [ci skip]

    * New translations messages.xlf (Belarusian)
    [ci skip]

    * New translations messages.xlf (Spanish)
    [ci skip]

    * New translations messages.xlf (French)
    [ci skip]

    * New translations messages.xlf (Romanian)
    [ci skip]

    * New translations messages.xlf (Arabic)
    [ci skip]

    * Remove ar-SA

    * remote ar other than ar-ar

    Co-authored-by: Michael Shamoon <4887959+shamoon@users.noreply.github.com>

commit 756ce2f9d8
Merge: 50a211f3 d4712234
Author: Michael Shamoon <4887959+shamoon@users.noreply.github.com>
Date:   Sat Nov 12 08:33:43 2022 -0800

    Merge branch 'dev' into beta

commit d47122340a
Author: Michael Shamoon <4887959+shamoon@users.noreply.github.com>
Date:   Sat Nov 12 08:31:25 2022 -0800

    Add translation strings for welcome tour buttons

commit b01cbc9aa0
Author: phail <phail@hacknology.de>
Date:   Sat Nov 12 15:48:30 2022 +0100

    add conditions to unittests

commit 3dfeee9332
Author: Trenton H <797416+stumpylog@users.noreply.github.com>
Date:   Fri Nov 11 10:09:56 2022 -0800

    Don't do decoding work if not needed

commit 057f6016cc
Author: Trenton H <797416+stumpylog@users.noreply.github.com>
Date:   Fri Nov 11 08:58:49 2022 -0800

    Adds further testing to cover scripts with non-zero exit codes

commit c4965580de
Author: Trenton H <797416+stumpylog@users.noreply.github.com>
Date:   Thu Nov 10 17:40:36 2022 -0800

    Fixes stderr appearing to have content when it doesn't

commit 9a47963fd5
Author: Trenton Holmes <797416+stumpylog@users.noreply.github.com>
Date:   Wed Nov 9 20:11:36 2022 -0800

    Captures the stdout and stderr of the pre/post scripts into the log

commit 50a211f367
Author: Trenton H <797416+stumpylog@users.noreply.github.com>
Date:   Thu Nov 10 17:25:39 2022 -0800

    Fixes an issue with the install of languages and read-only variable

commit 5f278d7fbb
Merge: e5106bdc a17d2519
Author: shamoon <4887959+shamoon@users.noreply.github.com>
Date:   Wed Nov 9 21:37:29 2022 -0800

    Merge pull request #1956 from paperless-ngx/l10n_dev

    New Crowdin updates

commit a17d251913
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Wed Nov 9 15:12:37 2022 -0800

    New translations django.po (Serbian (Latin))
    [ci skip]

commit 1cbf088656
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Wed Nov 9 15:12:36 2022 -0800

    New translations messages.xlf (Serbian (Latin))
    [ci skip]

commit d3254d6bcf
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Wed Nov 9 15:12:35 2022 -0800

    New translations messages.xlf (Luxembourgish)
    [ci skip]

commit 1543729c7b
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Wed Nov 9 15:12:34 2022 -0800

    New translations messages.xlf (Croatian)
    [ci skip]

commit ef2a96c34b
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Wed Nov 9 15:12:32 2022 -0800

    New translations messages.xlf (Portuguese, Brazilian)
    [ci skip]

commit 656b1e150f
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Wed Nov 9 15:12:31 2022 -0800

    New translations messages.xlf (Chinese Simplified)
    [ci skip]

commit e0f61003cf
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Wed Nov 9 15:12:30 2022 -0800

    New translations messages.xlf (Turkish)
    [ci skip]

commit 1ca98678cd
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Wed Nov 9 15:12:28 2022 -0800

    New translations messages.xlf (Swedish)
    [ci skip]

commit 9919cc1956
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Wed Nov 9 15:12:27 2022 -0800

    New translations messages.xlf (Slovenian)
    [ci skip]

commit d2096e3c05
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Wed Nov 9 15:12:26 2022 -0800

    New translations messages.xlf (Portuguese)
    [ci skip]

commit 5f2b508b7a
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Wed Nov 9 15:12:24 2022 -0800

    New translations messages.xlf (Polish)
    [ci skip]

commit 752d4f4249
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Wed Nov 9 15:12:23 2022 -0800

    New translations django.po (German)
    [ci skip]

commit 72e7d5150e
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Wed Nov 9 15:12:22 2022 -0800

    New translations messages.xlf (Norwegian)
    [ci skip]

commit 42a9e05a7f
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Wed Nov 9 15:12:21 2022 -0800

    New translations messages.xlf (Italian)
    [ci skip]

commit b4add2ed55
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Wed Nov 9 15:12:19 2022 -0800

    New translations messages.xlf (Hebrew)
    [ci skip]

commit ed7d9295bd
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Wed Nov 9 15:12:18 2022 -0800

    New translations messages.xlf (Finnish)
    [ci skip]

commit 5b7b1b2349
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Wed Nov 9 15:12:16 2022 -0800

    New translations messages.xlf (Danish)
    [ci skip]

commit d5c930acc9
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Wed Nov 9 15:12:15 2022 -0800

    New translations messages.xlf (Czech)
    [ci skip]

commit 4c93d6d7e6
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Wed Nov 9 15:12:14 2022 -0800

    New translations messages.xlf (Belarusian)
    [ci skip]

commit 066f3264fb
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Wed Nov 9 15:12:12 2022 -0800

    New translations messages.xlf (Spanish)
    [ci skip]

commit 88a803f949
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Wed Nov 9 15:12:11 2022 -0800

    New translations messages.xlf (French)
    [ci skip]

commit e69615dc06
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Wed Nov 9 15:12:10 2022 -0800

    New translations messages.xlf (Romanian)
    [ci skip]

commit a1e0840e24
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Wed Nov 9 15:12:08 2022 -0800

    New translations messages.xlf (Dutch)
    [ci skip]

commit d814353e83
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Wed Nov 9 15:12:07 2022 -0800

    New translations messages.xlf (German)
    [ci skip]

commit 06d7845eca
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Wed Nov 9 15:12:04 2022 -0800

    New translations django.po (Dutch)
    [ci skip]

commit ae8682c7a5
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Wed Nov 9 15:12:03 2022 -0800

    New translations django.po (Romanian)
    [ci skip]

commit c9c0b3d430
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Wed Nov 9 15:12:02 2022 -0800

    New translations django.po (Luxembourgish)
    [ci skip]

commit cc46fc7e4b
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Wed Nov 9 15:12:01 2022 -0800

    New translations django.po (Croatian)
    [ci skip]

commit d1b1ba21cd
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Wed Nov 9 15:12:00 2022 -0800

    New translations django.po (Portuguese, Brazilian)
    [ci skip]

commit a009417a99
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Wed Nov 9 15:11:59 2022 -0800

    New translations django.po (Chinese Simplified)
    [ci skip]

commit 775da720ec
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Wed Nov 9 15:11:58 2022 -0800

    New translations django.po (Turkish)
    [ci skip]

commit aeae6ea0d3
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Wed Nov 9 15:11:57 2022 -0800

    New translations django.po (Swedish)
    [ci skip]

commit 0ae46d2269
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Wed Nov 9 15:11:56 2022 -0800

    New translations django.po (Slovenian)
    [ci skip]

commit 0e7f1ec0de
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Wed Nov 9 15:11:55 2022 -0800

    New translations django.po (Russian)
    [ci skip]

commit 13cd55b96f
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Wed Nov 9 15:11:53 2022 -0800

    New translations django.po (Portuguese)
    [ci skip]

commit 9139e807ec
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Wed Nov 9 15:11:52 2022 -0800

    New translations messages.xlf (Arabic)
    [ci skip]

commit 53616f6625
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Wed Nov 9 15:11:51 2022 -0800

    New translations django.po (Polish)
    [ci skip]

commit 526fdf1153
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Wed Nov 9 15:11:50 2022 -0800

    New translations django.po (Italian)
    [ci skip]

commit fc4aceb0ee
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Wed Nov 9 15:11:49 2022 -0800

    New translations django.po (Hebrew)
    [ci skip]

commit 3d8421b718
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Wed Nov 9 15:11:48 2022 -0800

    New translations django.po (Finnish)
    [ci skip]

commit 6cebceda15
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Wed Nov 9 15:11:47 2022 -0800

    New translations django.po (Danish)
    [ci skip]

commit e1fd6bda19
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Wed Nov 9 15:11:46 2022 -0800

    New translations django.po (Czech)
    [ci skip]

commit fd34414b17
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Wed Nov 9 15:11:45 2022 -0800

    New translations django.po (Belarusian)
    [ci skip]

commit 3ce1886a54
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Wed Nov 9 15:11:44 2022 -0800

    New translations django.po (Arabic)
    [ci skip]

commit 8ed43779a8
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Wed Nov 9 15:11:43 2022 -0800

    New translations django.po (Spanish)
    [ci skip]

commit a7949b3e22
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Wed Nov 9 15:11:42 2022 -0800

    New translations django.po (French)
    [ci skip]

commit 19c293c3e6
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Wed Nov 9 15:11:41 2022 -0800

    New translations django.po (Norwegian)
    [ci skip]

commit ccb1ec4ff5
Author: Paperless-ngx Translation Bot [bot] <99855517+paperless-l10n@users.noreply.github.com>
Date:   Wed Nov 9 15:11:40 2022 -0800

    New translations messages.xlf (Russian)
    [ci skip]

commit e5106bdca0
Author: Trenton H <797416+stumpylog@users.noreply.github.com>
Date:   Wed Nov 9 14:00:09 2022 -0800

    Updates the version strings to 1.10.0

commit ba1366f49a
Merge: 34a0111f f3b3db30
Author: Trenton H <797416+stumpylog@users.noreply.github.com>
Date:   Wed Nov 9 13:51:10 2022 -0800

    Merge branch 'dev' into beta

commit acd3832417
Author: phail <phail@hacknology.de>
Date:   Thu Nov 3 21:08:15 2022 +0100

    merge Pipfile.lock

commit 82b2ba3cc2
Merge: 3de6e0bc 7e3e0a0f
Author: phail <phail@hacknology.de>
Date:   Thu Nov 3 21:00:01 2022 +0100

    Merge remote-tracking branch 'paperless/dev' into feature-consume-eml

commit 3de6e0bcf1
Author: phail <phail@hacknology.de>
Date:   Thu Nov 3 00:58:36 2022 +0100

    put parser into setup
    make test using convert optional
    Gotenberg live testing

commit 34a0111ff5
Author: shamoon <4887959+shamoon@users.noreply.github.com>
Date:   Mon Oct 31 13:06:17 2022 -0700

    update logs section

commit b511b084d0
Author: shamoon <4887959+shamoon@users.noreply.github.com>
Date:   Sun Oct 30 06:48:41 2022 -0700

    Update matrix url

    [ci skip]

commit 6df73ae940
Author: phail <phail@hacknology.de>
Date:   Sat Oct 29 23:20:35 2022 +0200

    gotenberg with modified cmd

commit 4a24ba51c5
Merge: 87472b31 d5fb98b7
Author: shamoon <4887959+shamoon@users.noreply.github.com>
Date:   Fri Oct 28 22:22:08 2022 -0700

    Merge pull request #1876 from astubenbord/main

    Added new application to list of affiliated projects

commit d5fb98b7c4
Author: Anton Stubenbord <79228196+astubenbord@users.noreply.github.com>
Date:   Fri Oct 28 11:07:42 2022 +0200

    Added new application to list of affiliated projects

commit 2204090151
Author: phail <phail@hacknology.de>
Date:   Thu Oct 27 23:53:47 2022 +0200

    fix string

commit 3c81a7468b
Author: phail <phail@hacknology.de>
Date:   Thu Oct 27 23:41:29 2022 +0200

    replace thumbnail creation with mock

commit 5ef86f9489
Merge: 90cb0836 9b82ab95
Author: phail <phail@hacknology.de>
Date:   Thu Oct 27 23:12:51 2022 +0200

    Merge remote-tracking branch 'paperless/dev' into feature-consume-eml

commit 90cb0836bb
Author: phail <phail@hacknology.de>
Date:   Thu Oct 27 23:11:41 2022 +0200

    Downgrade pdf validation to text only

commit ef1d4264b5
Author: phail <phail@hacknology.de>
Date:   Thu Oct 27 00:27:15 2022 +0200

    improve test coverage a little

commit e1fa59122d
Merge: 5bf26369 3357fa19
Author: phail <phail@hacknology.de>
Date:   Wed Oct 26 20:59:49 2022 +0200

    Merge remote-tracking branch 'paperless/dev' into feature-consume-eml

commit 5bf26369e2
Author: phail <phail@hacknology.de>
Date:   Tue Oct 25 21:17:40 2022 +0200

    remove erroring paramerter

commit 36239ba09f
Author: phail <phail@hacknology.de>
Date:   Mon Oct 24 22:15:33 2022 +0200

    rename help text

commit 318c1d2fbd
Merge: e7c40fc3 f8ce6285
Author: phail <phail@hacknology.de>
Date:   Mon Oct 24 21:12:35 2022 +0200

    Merge remote-tracking branch 'paperless/dev' into feature-consume-eml

commit e7c40fc3dc
Author: phail <phail@hacknology.de>
Date:   Sun Oct 23 22:02:11 2022 +0200

    Update Pipfile

commit 0da0b1c062
Author: phail <phail@hacknology.de>
Date:   Sun Oct 23 21:39:15 2022 +0200

    update variable names

commit 08988e11f8
Merge: 30372b0e 8be6c707
Author: phail <phail@hacknology.de>
Date:   Sun Oct 23 20:37:22 2022 +0200

    Merge remote-tracking branch 'paperless/dev' into feature-consume-eml

commit 30372b0e85
Author: phail <phail@hacknology.de>
Date:   Sun Oct 23 17:18:10 2022 +0200

    add tests for mail_to_html and generate_pdf_from_mail

commit 567e89d1c7
Author: phail <phail@hacknology.de>
Date:   Sat Oct 22 02:25:23 2022 +0200

    test for broken eml, add test_generate_pdf

commit f1f5227ccd
Author: phail <phail@hacknology.de>
Date:   Sat Oct 22 00:44:32 2022 +0200

    add unittest for external images

commit 09b5bd17f2
Author: phail <phail@hacknology.de>
Date:   Wed Oct 19 23:19:33 2022 +0200

    add unittest for generate_pdf_from_html

commit e384bd78c5
Author: phail <phail@hacknology.de>
Date:   Tue Oct 18 23:48:07 2022 +0200

    add unittest for transform_inline_html

commit fda844f64c
Author: phail <phail@hacknology.de>
Date:   Sat Oct 15 15:41:43 2022 +0200

    add unittest for parse

commit daf90399bd
Author: phail <phail@hacknology.de>
Date:   Sat Oct 15 13:13:29 2022 +0200

    Add unitest for tika_parse()

commit 3d37e49c1a
Author: phail <phail@hacknology.de>
Date:   Fri Oct 14 15:43:43 2022 +0200

    add 2 more tests

commit 261c6fb990
Author: phail <phail@hacknology.de>
Date:   Thu Oct 13 01:03:09 2022 +0200

    add unittest for get_thumbnail

commit 87472b31d2
Merge: 430c5c3b 1024d7e6
Author: shamoon <4887959+shamoon@users.noreply.github.com>
Date:   Tue Oct 11 19:59:46 2022 -0700

    Merge pull request #1780 from paperless-ngx/fix/issue-1647

    Documentation: Add note re MS exchange servers

commit 1024d7e6e2
Author: Michael Shamoon <4887959+shamoon@users.noreply.github.com>
Date:   Tue Oct 11 15:12:22 2022 -0700

    Add note re MS exchange servers

commit 430c5c3b87
Merge: 0b5c6d35 b7c33550
Author: shamoon <4887959+shamoon@users.noreply.github.com>
Date:   Fri Oct 7 23:45:51 2022 -0700

    Merge pull request #1761 from paperless-ngx/docs/lsio-tweak

    Documentation: Tweak LinuxServer

commit b7c335507f
Author: Trenton Holmes <holmes.trenton@gmail.com>
Date:   Thu Oct 6 18:24:25 2022 -0700

    Fixes the LSIO migration setting for the media root

commit 0b5c6d3532
Merge: fdac108c 5fd39472
Author: shamoon <4887959+shamoon@users.noreply.github.com>
Date:   Thu Oct 6 13:22:58 2022 -0700

    Merge pull request #1731 from paperless-ngx/fix/1624

    Documentation: Adds troubleshooting note about Kubernetes and ports

commit fdac108cab
Merge: 5639659b 821c14fb
Author: shamoon <4887959+shamoon@users.noreply.github.com>
Date:   Mon Oct 3 17:07:06 2022 -0700

    Merge pull request #1733 from paperless-ngx/docs-lsio-migrate

    Documentation: LinuxServer.io Migration

commit 821c14fbce
Author: Trenton H <holmes.trenton@gmail.com>
Date:   Mon Oct 3 11:14:18 2022 -0700

    Corrects how the link to example compose files looks

commit 8c03d9c638
Author: Trenton H <holmes.trenton@gmail.com>
Date:   Mon Oct 3 11:11:51 2022 -0700

    Corrects a re-numbered step

commit 174a609449
Author: Trenton H <holmes.trenton@gmail.com>
Date:   Mon Oct 3 10:16:53 2022 -0700

    Adds a few steps for migration from the LinuxServer.io image

commit 5fd394726e
Author: Trenton H <holmes.trenton@gmail.com>
Date:   Mon Oct 3 09:01:07 2022 -0700

    Adds troubleshooting note for Kubernetes about needing to set the port again

commit 5639659b63
Merge: 807b7130 7ba9cdbe
Author: shamoon <4887959+shamoon@users.noreply.github.com>
Date:   Wed Sep 28 09:48:20 2022 -0700

    Merge pull request #1683 from paperless-ngx/fix/issue-1660

    Mariadb compose files should use `PAPERLESS_DBPASS`

commit 7ba9cdbe23
Author: Michael Shamoon <4887959+shamoon@users.noreply.github.com>
Date:   Wed Sep 28 09:07:30 2022 -0700

    Mariadb compose files should use `PAPERLESS_DBPASS`

commit 807b7130e5
Merge: 9d117ee1 e2d593c0
Author: shamoon <4887959+shamoon@users.noreply.github.com>
Date:   Tue Sep 27 16:50:23 2022 -0700

    Merge pull request #1671 from paperless-ngx/v1.9.2-changelog

    [Documentation] Add v1.9.2 changelog

commit e2d593c023
Author: Michael Shamoon <4887959+shamoon@users.noreply.github.com>
Date:   Tue Sep 27 10:04:41 2022 -0700

    Fix formatting, add note about 1.9.1 version string

commit 7455963124
Author: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
Date:   Tue Sep 27 17:01:37 2022 +0000

    Changelog  - GHA

commit cdd2b99b6b
Merge: d0a0ae91 72ce4405
Author: phail <phail@hacknology.de>
Date:   Mon Jul 11 23:58:21 2022 +0200

    Merge remote-tracking branch 'paperless/dev' into feature-consume-eml

commit d0a0ae91c4
Merge: c04b9fd7 feaf2da8
Author: phail <phail@hacknology.de>
Date:   Fri May 20 19:29:52 2022 +0200

    Merge branch 'dev' into feature-consume-eml

commit c04b9fd7f6
Author: phail <phail@hacknology.de>
Date:   Thu May 19 22:51:17 2022 +0200

    switch to From: Header instead of date to compensate for older libmagic versions

commit 6809b15ce1
Author: phail <phail@hacknology.de>
Date:   Sat May 14 16:47:12 2022 +0200

    workaround for wrong mime detection of .eml files

commit c317eca1ca
Author: phail <phel@hacknology.de>
Date:   Thu May 5 00:20:32 2022 +0200

    add attachment size to pdf

commit 466afa8203
Author: phail <phel@hacknology.de>
Date:   Wed May 4 23:42:59 2022 +0200

    fix consumption of mails without html
    split pdf generation functions

commit c2e3dc76d9
Author: phail <phel@hacknology.de>
Date:   Tue May 3 23:21:33 2022 +0200

    add parsing of inline attachments
    remove insecure chromium option
    fix html parsing

commit 5a899664f8
Author: phail <phel@hacknology.de>
Date:   Tue May 3 18:02:08 2022 +0200

    remove .eml parser from tika

commit 990e905a04
Merge: 6b7155a8 98ebb095
Author: phail <phel@hacknology.de>
Date:   Tue May 3 17:42:56 2022 +0200

    Merge remote-tracking branch 'paperless/dev' into feature-consume-eml

commit 6b7155a849
Author: phail <phel@hacknology.de>
Date:   Sat Apr 30 17:33:12 2022 +0200

    merge migrations

commit 47851ddd3f
Merge: 47189643 0f1e3164
Author: phail <phel@hacknology.de>
Date:   Fri Apr 29 23:52:56 2022 +0200

    Merge remote-tracking branch 'paperless/dev' into feature-consume-eml

commit 47189643ff
Author: phail <phel@hacknology.de>
Date:   Fri Apr 29 22:58:11 2022 +0200

    add eml parser to paperless_mail

commit c1efe11cf3
Author: phail <phel@hacknology.de>
Date:   Wed Apr 27 23:32:10 2022 +0200

    improve pdf generation

commit 0e40ef5f35
Author: phail <phel@hacknology.de>
Date:   Wed Apr 27 19:52:59 2022 +0200

    add css for pdf generation

commit c8081595c4
Author: phail <phel@hacknology.de>
Date:   Tue Apr 26 23:25:48 2022 +0200

    improve pdf generation

commit a2b5b3b253
Author: phail <phel@hacknology.de>
Date:   Tue Apr 26 23:12:36 2022 +0200

    moved files

commit 790bcf05ed
Author: phail <phel@hacknology.de>
Date:   Mon Apr 25 20:55:00 2022 +0200

    add prototype archive pdf

commit d8d2d53c59
Author: phail <phel@hacknology.de>
Date:   Tue Apr 19 20:14:31 2022 +0200

    fix Mail actions mixup

commit 027897ff03
Author: phail <phel@hacknology.de>
Date:   Tue Apr 19 00:39:00 2022 +0200

    work in progress Mail parsing

commit cca576f518
Author: phail <phel@hacknology.de>
Date:   Fri Apr 15 14:40:02 2022 +0200

    add feature to consume imap mail als .eml

commit 5fcf1b5434
Author: phail <phel@hacknology.de>
Date:   Thu Apr 14 00:19:30 2022 +0200

    remove uneeded print and fix merge fail

commit 942b5aa9df
Merge: c05b39a0 cc936160
Author: phail <phel@hacknology.de>
Date:   Wed Apr 13 23:55:38 2022 +0200

    Merge branch 'dev' into fix-mail-starttls

commit c05b39a056
Author: phail <phel@hacknology.de>
Date:   Wed Apr 13 23:37:21 2022 +0200

    fix unittest

commit 3c8196527f
Author: phail <phel@hacknology.de>
Date:   Sat Apr 9 13:07:14 2022 +0200

    adapt to starttls interface change in imap_tools
    pin imap-tools version to avoid breaking changes
    improve mail log

Update settings.component.ts

Update settings.component.ts
This commit is contained in:
Michael Shamoon
2022-12-05 01:25:11 -08:00
parent 4279ba13e9
commit b21970fd53
229 changed files with 39451 additions and 16009 deletions

View File

@@ -2,7 +2,8 @@ import datetime
import hashlib
import os
import uuid
from subprocess import Popen
from subprocess import CompletedProcess
from subprocess import run
from typing import Optional
from typing import Type
@@ -148,13 +149,20 @@ class Consumer(LoggingMixin):
script_env["DOCUMENT_SOURCE_PATH"] = filepath_arg
try:
Popen(
(
completed_proc = run(
args=[
settings.PRE_CONSUME_SCRIPT,
filepath_arg,
),
],
env=script_env,
).wait()
capture_output=True,
)
self._log_script_outputs(completed_proc)
# Raises exception on non-zero output
completed_proc.check_returncode()
except Exception as e:
self._fail(
MESSAGE_PRE_CONSUME_SCRIPT_ERROR,
@@ -208,8 +216,8 @@ class Consumer(LoggingMixin):
script_env["DOCUMENT_ORIGINAL_FILENAME"] = str(document.original_filename)
try:
Popen(
(
completed_proc = run(
args=[
settings.POST_CONSUME_SCRIPT,
str(document.pk),
document.get_public_filename(),
@@ -219,9 +227,16 @@ class Consumer(LoggingMixin):
reverse("document-thumb", kwargs={"pk": document.pk}),
str(document.correspondent),
str(",".join(document.tags.all().values_list("name", flat=True))),
),
],
env=script_env,
).wait()
capture_output=True,
)
self._log_script_outputs(completed_proc)
# Raises exception on non-zero output
completed_proc.check_returncode()
except Exception as e:
self._fail(
MESSAGE_POST_CONSUME_SCRIPT_ERROR,
@@ -444,7 +459,12 @@ class Consumer(LoggingMixin):
return document
def _store(self, text, date, mime_type) -> Document:
def _store(
self,
text: str,
date: Optional[datetime.datetime],
mime_type: str,
) -> Document:
# If someone gave us the original filename, use it instead of doc.
@@ -510,3 +530,39 @@ class Consumer(LoggingMixin):
with open(source, "rb") as read_file:
with open(target, "wb") as write_file:
write_file.write(read_file.read())
def _log_script_outputs(self, completed_process: CompletedProcess):
"""
Decodes a process stdout and stderr streams and logs them to the main log
"""
# Log what the script exited as
self.log(
"info",
f"{completed_process.args[0]} exited {completed_process.returncode}",
)
# Decode the output (if any)
if len(completed_process.stdout):
stdout_str = (
completed_process.stdout.decode("utf8", errors="ignore")
.strip()
.split(
"\n",
)
)
self.log("info", "Script stdout:")
for line in stdout_str:
self.log("info", line)
if len(completed_process.stderr):
stderr_str = (
completed_process.stderr.decode("utf8", errors="ignore")
.strip()
.split(
"\n",
)
)
self.log("warning", "Script stderr:")
for line in stderr_str:
self.log("warning", line)

View File

@@ -260,7 +260,7 @@ def parse_date_generator(filename, text) -> Iterator[datetime.datetime]:
try:
date = __parser(date_string, date_order)
except (TypeError, ValueError):
except Exception:
# Skip all matches that do not parse to a proper date
date = None

View File

@@ -447,7 +447,8 @@ def update_filename_and_move_files(sender, instance, **kwargs):
archive_filename=instance.archive_filename,
)
except (OSError, DatabaseError, CannotMoveFilesException):
except (OSError, DatabaseError, CannotMoveFilesException) as e:
logger.warn(f"Exception during file handling: {e}")
# This happens when either:
# - moving the files failed due to file system errors
# - saving to the database failed due to database errors
@@ -456,9 +457,11 @@ def update_filename_and_move_files(sender, instance, **kwargs):
# Try to move files to their original location.
try:
if move_original and os.path.isfile(instance.source_path):
logger.info("Restoring previous original path")
os.rename(instance.source_path, old_source_path)
if move_archive and os.path.isfile(instance.archive_path):
logger.info("Restoring previous archive path")
os.rename(instance.archive_path, old_archive_path)
except Exception:
@@ -468,7 +471,7 @@ def update_filename_and_move_files(sender, instance, **kwargs):
# issue that's going to get caught by the santiy checker.
# All files remain in place and will never be overwritten,
# so this is not the end of the world.
# B: if moving the orignal file failed, nothing has changed
# B: if moving the original file failed, nothing has changed
# anyway.
pass

View File

@@ -3,6 +3,7 @@ import logging
import os
import shutil
import uuid
from datetime import datetime
from pathlib import Path
from typing import Type
@@ -98,6 +99,14 @@ def consume_file(
path = Path(path).resolve()
# Celery converts this to a string, but everything expects a datetime
# Long term solution is to not use JSON for the serializer but pickle instead
if override_created is not None and isinstance(override_created, str):
try:
override_created = datetime.fromisoformat(override_created)
except Exception:
pass
# check for separators in current document
if settings.CONSUMER_ENABLE_BARCODES:

View File

@@ -76,7 +76,7 @@
</g>
</svg>
<h6 class="m-auto">{% translate "Paperless-ngx is loading..." %}</h6>
<p class="warning m-auto mt-3 small fade hide">{% translate "Still here?! Hmm, something might be wrong." %} <a href="https://paperless-ngx.readthedocs.io/en/latest/">{% translate "Here's a link to the docs." %}</a></p>
<p class="warning m-auto mt-3 small fade hide">{% translate "Still here?! Hmm, something might be wrong." %} <a href="https://docs.paperless-ngx.com">{% translate "Here's a link to the docs." %}</a></p>
</div>
</div>
</app-root>

View File

@@ -2,7 +2,9 @@ import datetime
import os
import re
import shutil
import stat
import tempfile
from subprocess import CalledProcessError
from unittest import mock
from unittest.mock import MagicMock
@@ -801,7 +803,16 @@ class TestConsumerCreatedDate(DirectoriesMixin, TestCase):
class PreConsumeTestCase(TestCase):
@mock.patch("documents.consumer.Popen")
def setUp(self) -> None:
# this prevents websocket message reports during testing.
patcher = mock.patch("documents.consumer.Consumer._send_progress")
self._send_progress = patcher.start()
self.addCleanup(patcher.stop)
return super().setUp()
@mock.patch("documents.consumer.run")
@override_settings(PRE_CONSUME_SCRIPT=None)
def test_no_pre_consume_script(self, m):
c = Consumer()
@@ -809,7 +820,7 @@ class PreConsumeTestCase(TestCase):
c.run_pre_consume_script()
m.assert_not_called()
@mock.patch("documents.consumer.Popen")
@mock.patch("documents.consumer.run")
@mock.patch("documents.consumer.Consumer._send_progress")
@override_settings(PRE_CONSUME_SCRIPT="does-not-exist")
def test_pre_consume_script_not_found(self, m, m2):
@@ -818,7 +829,7 @@ class PreConsumeTestCase(TestCase):
c.path = "path-to-file"
self.assertRaises(ConsumerError, c.run_pre_consume_script)
@mock.patch("documents.consumer.Popen")
@mock.patch("documents.consumer.run")
def test_pre_consume_script(self, m):
with tempfile.NamedTemporaryFile() as script:
with override_settings(PRE_CONSUME_SCRIPT=script.name):
@@ -830,14 +841,78 @@ class PreConsumeTestCase(TestCase):
args, kwargs = m.call_args
command = args[0]
command = kwargs["args"]
self.assertEqual(command[0], script.name)
self.assertEqual(command[1], "path-to-file")
@mock.patch("documents.consumer.Consumer.log")
def test_script_with_output(self, mocked_log):
"""
GIVEN:
- A script which outputs to stdout and stderr
WHEN:
- The script is executed as a consume script
THEN:
- The script's outputs are logged
"""
with tempfile.NamedTemporaryFile(mode="w") as script:
# Write up a little script
with script.file as outfile:
outfile.write("#!/usr/bin/env bash\n")
outfile.write("echo This message goes to stdout\n")
outfile.write("echo This message goes to stderr >&2")
# Make the file executable
st = os.stat(script.name)
os.chmod(script.name, st.st_mode | stat.S_IEXEC)
with override_settings(PRE_CONSUME_SCRIPT=script.name):
c = Consumer()
c.path = "path-to-file"
c.run_pre_consume_script()
mocked_log.assert_called()
mocked_log.assert_any_call("info", "This message goes to stdout")
mocked_log.assert_any_call("warning", "This message goes to stderr")
def test_script_exit_non_zero(self):
"""
GIVEN:
- A script which exits with a non-zero exit code
WHEN:
- The script is executed as a pre-consume script
THEN:
- A ConsumerError is raised
"""
with tempfile.NamedTemporaryFile(mode="w") as script:
# Write up a little script
with script.file as outfile:
outfile.write("#!/usr/bin/env bash\n")
outfile.write("exit 100\n")
# Make the file executable
st = os.stat(script.name)
os.chmod(script.name, st.st_mode | stat.S_IEXEC)
with override_settings(PRE_CONSUME_SCRIPT=script.name):
c = Consumer()
c.path = "path-to-file"
self.assertRaises(ConsumerError, c.run_pre_consume_script)
class PostConsumeTestCase(TestCase):
@mock.patch("documents.consumer.Popen")
def setUp(self) -> None:
# this prevents websocket message reports during testing.
patcher = mock.patch("documents.consumer.Consumer._send_progress")
self._send_progress = patcher.start()
self.addCleanup(patcher.stop)
return super().setUp()
@mock.patch("documents.consumer.run")
@override_settings(POST_CONSUME_SCRIPT=None)
def test_no_post_consume_script(self, m):
doc = Document.objects.create(title="Test", mime_type="application/pdf")
@@ -858,7 +933,7 @@ class PostConsumeTestCase(TestCase):
c.filename = "somefile.pdf"
self.assertRaises(ConsumerError, c.run_post_consume_script, doc)
@mock.patch("documents.consumer.Popen")
@mock.patch("documents.consumer.run")
def test_post_consume_script_simple(self, m):
with tempfile.NamedTemporaryFile() as script:
with override_settings(POST_CONSUME_SCRIPT=script.name):
@@ -868,7 +943,7 @@ class PostConsumeTestCase(TestCase):
m.assert_called_once()
@mock.patch("documents.consumer.Popen")
@mock.patch("documents.consumer.run")
def test_post_consume_script_with_correspondent(self, m):
with tempfile.NamedTemporaryFile() as script:
with override_settings(POST_CONSUME_SCRIPT=script.name):
@@ -889,7 +964,7 @@ class PostConsumeTestCase(TestCase):
args, kwargs = m.call_args
command = args[0]
command = kwargs["args"]
self.assertEqual(command[0], script.name)
self.assertEqual(command[1], str(doc.pk))
@@ -897,3 +972,29 @@ class PostConsumeTestCase(TestCase):
self.assertEqual(command[6], f"/api/documents/{doc.pk}/thumb/")
self.assertEqual(command[7], "my_bank")
self.assertCountEqual(command[8].split(","), ["a", "b"])
def test_script_exit_non_zero(self):
"""
GIVEN:
- A script which exits with a non-zero exit code
WHEN:
- The script is executed as a post-consume script
THEN:
- A ConsumerError is raised
"""
with tempfile.NamedTemporaryFile(mode="w") as script:
# Write up a little script
with script.file as outfile:
outfile.write("#!/usr/bin/env bash\n")
outfile.write("exit -500\n")
# Make the file executable
st = os.stat(script.name)
os.chmod(script.name, st.st_mode | stat.S_IEXEC)
with override_settings(POST_CONSUME_SCRIPT=script.name):
c = Consumer()
doc = Document.objects.create(title="Test", mime_type="application/pdf")
c.path = "path-to-file"
with self.assertRaises(ConsumerError):
c.run_post_consume_script(doc)

View File

@@ -1,698 +0,0 @@
msgid ""
msgstr ""
"Project-Id-Version: paperless-ng\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-05-16 09:38+0000\n"
"PO-Revision-Date: 2021-11-23 18:07\n"
"Last-Translator: \n"
"Language-Team: Arabic, Bahrain\n"
"Language: ar_BH\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=6; plural=(n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5);\n"
"X-Crowdin-Project: paperless-ng\n"
"X-Crowdin-Project-ID: 434940\n"
"X-Crowdin-Language: ar-BH\n"
"X-Crowdin-File: /dev/src/locale/en_US/LC_MESSAGES/django.po\n"
"X-Crowdin-File-ID: 54\n"
#: documents/apps.py:10
msgid "Documents"
msgstr ""
#: documents/models.py:32
msgid "Any word"
msgstr ""
#: documents/models.py:33
msgid "All words"
msgstr ""
#: documents/models.py:34
msgid "Exact match"
msgstr ""
#: documents/models.py:35
msgid "Regular expression"
msgstr ""
#: documents/models.py:36
msgid "Fuzzy word"
msgstr ""
#: documents/models.py:37
msgid "Automatic"
msgstr ""
#: documents/models.py:41 documents/models.py:350 paperless_mail/models.py:25
#: paperless_mail/models.py:117
msgid "name"
msgstr ""
#: documents/models.py:45
msgid "match"
msgstr ""
#: documents/models.py:49
msgid "matching algorithm"
msgstr ""
#: documents/models.py:55
msgid "is insensitive"
msgstr ""
#: documents/models.py:74 documents/models.py:120
msgid "correspondent"
msgstr ""
#: documents/models.py:75
msgid "correspondents"
msgstr ""
#: documents/models.py:81
msgid "color"
msgstr ""
#: documents/models.py:87
msgid "is inbox tag"
msgstr ""
#: documents/models.py:89
msgid "Marks this tag as an inbox tag: All newly consumed documents will be tagged with inbox tags."
msgstr ""
#: documents/models.py:94
msgid "tag"
msgstr ""
#: documents/models.py:95 documents/models.py:151
msgid "tags"
msgstr ""
#: documents/models.py:101 documents/models.py:133
msgid "document type"
msgstr ""
#: documents/models.py:102
msgid "document types"
msgstr ""
#: documents/models.py:110
msgid "Unencrypted"
msgstr ""
#: documents/models.py:111
msgid "Encrypted with GNU Privacy Guard"
msgstr ""
#: documents/models.py:124
msgid "title"
msgstr ""
#: documents/models.py:137
msgid "content"
msgstr ""
#: documents/models.py:139
msgid "The raw, text-only data of the document. This field is primarily used for searching."
msgstr ""
#: documents/models.py:144
msgid "mime type"
msgstr ""
#: documents/models.py:155
msgid "checksum"
msgstr ""
#: documents/models.py:159
msgid "The checksum of the original document."
msgstr ""
#: documents/models.py:163
msgid "archive checksum"
msgstr ""
#: documents/models.py:168
msgid "The checksum of the archived document."
msgstr ""
#: documents/models.py:172 documents/models.py:328
msgid "created"
msgstr ""
#: documents/models.py:176
msgid "modified"
msgstr ""
#: documents/models.py:180
msgid "storage type"
msgstr ""
#: documents/models.py:188
msgid "added"
msgstr ""
#: documents/models.py:192
msgid "filename"
msgstr ""
#: documents/models.py:198
msgid "Current filename in storage"
msgstr ""
#: documents/models.py:202
msgid "archive filename"
msgstr ""
#: documents/models.py:208
msgid "Current archive filename in storage"
msgstr ""
#: documents/models.py:212
msgid "archive serial number"
msgstr ""
#: documents/models.py:217
msgid "The position of this document in your physical document archive."
msgstr ""
#: documents/models.py:223
msgid "document"
msgstr ""
#: documents/models.py:224
msgid "documents"
msgstr ""
#: documents/models.py:311
msgid "debug"
msgstr ""
#: documents/models.py:312
msgid "information"
msgstr ""
#: documents/models.py:313
msgid "warning"
msgstr ""
#: documents/models.py:314
msgid "error"
msgstr ""
#: documents/models.py:315
msgid "critical"
msgstr ""
#: documents/models.py:319
msgid "group"
msgstr ""
#: documents/models.py:322
msgid "message"
msgstr ""
#: documents/models.py:325
msgid "level"
msgstr ""
#: documents/models.py:332
msgid "log"
msgstr ""
#: documents/models.py:333
msgid "logs"
msgstr ""
#: documents/models.py:344 documents/models.py:401
msgid "saved view"
msgstr ""
#: documents/models.py:345
msgid "saved views"
msgstr ""
#: documents/models.py:348
msgid "user"
msgstr ""
#: documents/models.py:354
msgid "show on dashboard"
msgstr ""
#: documents/models.py:357
msgid "show in sidebar"
msgstr ""
#: documents/models.py:361
msgid "sort field"
msgstr ""
#: documents/models.py:367
msgid "sort reverse"
msgstr ""
#: documents/models.py:373
msgid "title contains"
msgstr ""
#: documents/models.py:374
msgid "content contains"
msgstr ""
#: documents/models.py:375
msgid "ASN is"
msgstr ""
#: documents/models.py:376
msgid "correspondent is"
msgstr ""
#: documents/models.py:377
msgid "document type is"
msgstr ""
#: documents/models.py:378
msgid "is in inbox"
msgstr ""
#: documents/models.py:379
msgid "has tag"
msgstr ""
#: documents/models.py:380
msgid "has any tag"
msgstr ""
#: documents/models.py:381
msgid "created before"
msgstr ""
#: documents/models.py:382
msgid "created after"
msgstr ""
#: documents/models.py:383
msgid "created year is"
msgstr ""
#: documents/models.py:384
msgid "created month is"
msgstr ""
#: documents/models.py:385
msgid "created day is"
msgstr ""
#: documents/models.py:386
msgid "added before"
msgstr ""
#: documents/models.py:387
msgid "added after"
msgstr ""
#: documents/models.py:388
msgid "modified before"
msgstr ""
#: documents/models.py:389
msgid "modified after"
msgstr ""
#: documents/models.py:390
msgid "does not have tag"
msgstr ""
#: documents/models.py:391
msgid "does not have ASN"
msgstr ""
#: documents/models.py:392
msgid "title or content contains"
msgstr ""
#: documents/models.py:393
msgid "fulltext query"
msgstr ""
#: documents/models.py:394
msgid "more like this"
msgstr ""
#: documents/models.py:405
msgid "rule type"
msgstr ""
#: documents/models.py:409
msgid "value"
msgstr ""
#: documents/models.py:415
msgid "filter rule"
msgstr ""
#: documents/models.py:416
msgid "filter rules"
msgstr ""
#: documents/serialisers.py:53
#, python-format
msgid "Invalid regular expression: %(error)s"
msgstr ""
#: documents/serialisers.py:177
msgid "Invalid color."
msgstr ""
#: documents/serialisers.py:451
#, python-format
msgid "File type %(type)s not supported"
msgstr ""
#: documents/templates/index.html:22
msgid "Paperless-ng is loading..."
msgstr ""
#: documents/templates/registration/logged_out.html:14
msgid "Paperless-ng signed out"
msgstr ""
#: documents/templates/registration/logged_out.html:45
msgid "You have been successfully logged out. Bye!"
msgstr ""
#: documents/templates/registration/logged_out.html:46
msgid "Sign in again"
msgstr ""
#: documents/templates/registration/login.html:15
msgid "Paperless-ng sign in"
msgstr ""
#: documents/templates/registration/login.html:47
msgid "Please sign in."
msgstr ""
#: documents/templates/registration/login.html:50
msgid "Your username and password didn't match. Please try again."
msgstr ""
#: documents/templates/registration/login.html:53
msgid "Username"
msgstr ""
#: documents/templates/registration/login.html:54
msgid "Password"
msgstr ""
#: documents/templates/registration/login.html:59
msgid "Sign in"
msgstr ""
#: paperless/settings.py:303
msgid "English (US)"
msgstr ""
#: paperless/settings.py:304
msgid "English (GB)"
msgstr ""
#: paperless/settings.py:305
msgid "German"
msgstr ""
#: paperless/settings.py:306
msgid "Dutch"
msgstr ""
#: paperless/settings.py:307
msgid "French"
msgstr ""
#: paperless/settings.py:308
msgid "Portuguese (Brazil)"
msgstr ""
#: paperless/settings.py:309
msgid "Portuguese"
msgstr ""
#: paperless/settings.py:310
msgid "Italian"
msgstr ""
#: paperless/settings.py:311
msgid "Romanian"
msgstr ""
#: paperless/settings.py:312
msgid "Russian"
msgstr ""
#: paperless/settings.py:313
msgid "Spanish"
msgstr ""
#: paperless/settings.py:314
msgid "Polish"
msgstr ""
#: paperless/settings.py:315
msgid "Swedish"
msgstr ""
#: paperless/urls.py:120
msgid "Paperless-ng administration"
msgstr ""
#: paperless_mail/admin.py:15
msgid "Authentication"
msgstr ""
#: paperless_mail/admin.py:18
msgid "Advanced settings"
msgstr ""
#: paperless_mail/admin.py:37
msgid "Filter"
msgstr ""
#: paperless_mail/admin.py:39
msgid "Paperless will only process mails that match ALL of the filters given below."
msgstr ""
#: paperless_mail/admin.py:49
msgid "Actions"
msgstr ""
#: paperless_mail/admin.py:51
msgid "The action applied to the mail. This action is only performed when documents were consumed from the mail. Mails without attachments will remain entirely untouched."
msgstr ""
#: paperless_mail/admin.py:58
msgid "Metadata"
msgstr ""
#: paperless_mail/admin.py:60
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."
msgstr ""
#: paperless_mail/apps.py:9
msgid "Paperless mail"
msgstr ""
#: paperless_mail/models.py:11
msgid "mail account"
msgstr ""
#: paperless_mail/models.py:12
msgid "mail accounts"
msgstr ""
#: paperless_mail/models.py:19
msgid "No encryption"
msgstr ""
#: paperless_mail/models.py:20
msgid "Use SSL"
msgstr ""
#: paperless_mail/models.py:21
msgid "Use STARTTLS"
msgstr ""
#: paperless_mail/models.py:29
msgid "IMAP server"
msgstr ""
#: paperless_mail/models.py:33
msgid "IMAP port"
msgstr ""
#: paperless_mail/models.py:36
msgid "This is usually 143 for unencrypted and STARTTLS connections, and 993 for SSL connections."
msgstr ""
#: paperless_mail/models.py:40
msgid "IMAP security"
msgstr ""
#: paperless_mail/models.py:46
msgid "username"
msgstr ""
#: paperless_mail/models.py:50
msgid "password"
msgstr ""
#: paperless_mail/models.py:54
msgid "character set"
msgstr ""
#: paperless_mail/models.py:57
msgid "The character set to use when communicating with the mail server, such as 'UTF-8' or 'US-ASCII'."
msgstr ""
#: paperless_mail/models.py:68
msgid "mail rule"
msgstr ""
#: paperless_mail/models.py:69
msgid "mail rules"
msgstr ""
#: paperless_mail/models.py:75
msgid "Only process attachments."
msgstr ""
#: paperless_mail/models.py:76
msgid "Process all files, including 'inline' attachments."
msgstr ""
#: paperless_mail/models.py:86
msgid "Mark as read, don't process read mails"
msgstr ""
#: paperless_mail/models.py:87
msgid "Flag the mail, don't process flagged mails"
msgstr ""
#: paperless_mail/models.py:88
msgid "Move to specified folder"
msgstr ""
#: paperless_mail/models.py:89
msgid "Delete"
msgstr ""
#: paperless_mail/models.py:96
msgid "Use subject as title"
msgstr ""
#: paperless_mail/models.py:97
msgid "Use attachment filename as title"
msgstr ""
#: paperless_mail/models.py:107
msgid "Do not assign a correspondent"
msgstr ""
#: paperless_mail/models.py:109
msgid "Use mail address"
msgstr ""
#: paperless_mail/models.py:111
msgid "Use name (or mail address if not available)"
msgstr ""
#: paperless_mail/models.py:113
msgid "Use correspondent selected below"
msgstr ""
#: paperless_mail/models.py:121
msgid "order"
msgstr ""
#: paperless_mail/models.py:128
msgid "account"
msgstr ""
#: paperless_mail/models.py:132
msgid "folder"
msgstr ""
#: paperless_mail/models.py:134
msgid "Subfolders must be separated by dots."
msgstr ""
#: paperless_mail/models.py:138
msgid "filter from"
msgstr ""
#: paperless_mail/models.py:141
msgid "filter subject"
msgstr ""
#: paperless_mail/models.py:144
msgid "filter body"
msgstr ""
#: paperless_mail/models.py:148
msgid "filter attachment filename"
msgstr ""
#: paperless_mail/models.py:150
msgid "Only consume documents which entirely match this filename if specified. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive."
msgstr ""
#: paperless_mail/models.py:156
msgid "maximum age"
msgstr ""
#: paperless_mail/models.py:158
msgid "Specified in days."
msgstr ""
#: paperless_mail/models.py:161
msgid "attachment type"
msgstr ""
#: paperless_mail/models.py:164
msgid "Inline attachments include embedded images, so it's best to combine this option with a filename filter."
msgstr ""
#: paperless_mail/models.py:169
msgid "action"
msgstr ""
#: paperless_mail/models.py:175
msgid "action parameter"
msgstr ""
#: paperless_mail/models.py:177
msgid "Additional parameter for the action selected above, i.e., the target folder of the move to folder action. Subfolders must be separated by dots."
msgstr ""
#: paperless_mail/models.py:184
msgid "assign title from"
msgstr ""
#: paperless_mail/models.py:194
msgid "assign this tag"
msgstr ""
#: paperless_mail/models.py:202
msgid "assign this document type"
msgstr ""
#: paperless_mail/models.py:206
msgid "assign correspondent from"
msgstr ""
#: paperless_mail/models.py:216
msgid "assign this correspondent"
msgstr ""

View File

@@ -1,698 +0,0 @@
msgid ""
msgstr ""
"Project-Id-Version: paperless-ng\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-05-16 09:38+0000\n"
"PO-Revision-Date: 2021-11-23 18:07\n"
"Last-Translator: \n"
"Language-Team: Arabic, Egypt\n"
"Language: ar_EG\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=6; plural=(n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5);\n"
"X-Crowdin-Project: paperless-ng\n"
"X-Crowdin-Project-ID: 434940\n"
"X-Crowdin-Language: ar-EG\n"
"X-Crowdin-File: /dev/src/locale/en_US/LC_MESSAGES/django.po\n"
"X-Crowdin-File-ID: 54\n"
#: documents/apps.py:10
msgid "Documents"
msgstr ""
#: documents/models.py:32
msgid "Any word"
msgstr ""
#: documents/models.py:33
msgid "All words"
msgstr ""
#: documents/models.py:34
msgid "Exact match"
msgstr ""
#: documents/models.py:35
msgid "Regular expression"
msgstr ""
#: documents/models.py:36
msgid "Fuzzy word"
msgstr ""
#: documents/models.py:37
msgid "Automatic"
msgstr ""
#: documents/models.py:41 documents/models.py:350 paperless_mail/models.py:25
#: paperless_mail/models.py:117
msgid "name"
msgstr ""
#: documents/models.py:45
msgid "match"
msgstr ""
#: documents/models.py:49
msgid "matching algorithm"
msgstr ""
#: documents/models.py:55
msgid "is insensitive"
msgstr ""
#: documents/models.py:74 documents/models.py:120
msgid "correspondent"
msgstr ""
#: documents/models.py:75
msgid "correspondents"
msgstr ""
#: documents/models.py:81
msgid "color"
msgstr ""
#: documents/models.py:87
msgid "is inbox tag"
msgstr ""
#: documents/models.py:89
msgid "Marks this tag as an inbox tag: All newly consumed documents will be tagged with inbox tags."
msgstr ""
#: documents/models.py:94
msgid "tag"
msgstr ""
#: documents/models.py:95 documents/models.py:151
msgid "tags"
msgstr ""
#: documents/models.py:101 documents/models.py:133
msgid "document type"
msgstr ""
#: documents/models.py:102
msgid "document types"
msgstr ""
#: documents/models.py:110
msgid "Unencrypted"
msgstr ""
#: documents/models.py:111
msgid "Encrypted with GNU Privacy Guard"
msgstr ""
#: documents/models.py:124
msgid "title"
msgstr ""
#: documents/models.py:137
msgid "content"
msgstr ""
#: documents/models.py:139
msgid "The raw, text-only data of the document. This field is primarily used for searching."
msgstr ""
#: documents/models.py:144
msgid "mime type"
msgstr ""
#: documents/models.py:155
msgid "checksum"
msgstr ""
#: documents/models.py:159
msgid "The checksum of the original document."
msgstr ""
#: documents/models.py:163
msgid "archive checksum"
msgstr ""
#: documents/models.py:168
msgid "The checksum of the archived document."
msgstr ""
#: documents/models.py:172 documents/models.py:328
msgid "created"
msgstr ""
#: documents/models.py:176
msgid "modified"
msgstr ""
#: documents/models.py:180
msgid "storage type"
msgstr ""
#: documents/models.py:188
msgid "added"
msgstr ""
#: documents/models.py:192
msgid "filename"
msgstr ""
#: documents/models.py:198
msgid "Current filename in storage"
msgstr ""
#: documents/models.py:202
msgid "archive filename"
msgstr ""
#: documents/models.py:208
msgid "Current archive filename in storage"
msgstr ""
#: documents/models.py:212
msgid "archive serial number"
msgstr ""
#: documents/models.py:217
msgid "The position of this document in your physical document archive."
msgstr ""
#: documents/models.py:223
msgid "document"
msgstr ""
#: documents/models.py:224
msgid "documents"
msgstr ""
#: documents/models.py:311
msgid "debug"
msgstr ""
#: documents/models.py:312
msgid "information"
msgstr ""
#: documents/models.py:313
msgid "warning"
msgstr ""
#: documents/models.py:314
msgid "error"
msgstr ""
#: documents/models.py:315
msgid "critical"
msgstr ""
#: documents/models.py:319
msgid "group"
msgstr ""
#: documents/models.py:322
msgid "message"
msgstr ""
#: documents/models.py:325
msgid "level"
msgstr ""
#: documents/models.py:332
msgid "log"
msgstr ""
#: documents/models.py:333
msgid "logs"
msgstr ""
#: documents/models.py:344 documents/models.py:401
msgid "saved view"
msgstr ""
#: documents/models.py:345
msgid "saved views"
msgstr ""
#: documents/models.py:348
msgid "user"
msgstr ""
#: documents/models.py:354
msgid "show on dashboard"
msgstr ""
#: documents/models.py:357
msgid "show in sidebar"
msgstr ""
#: documents/models.py:361
msgid "sort field"
msgstr ""
#: documents/models.py:367
msgid "sort reverse"
msgstr ""
#: documents/models.py:373
msgid "title contains"
msgstr ""
#: documents/models.py:374
msgid "content contains"
msgstr ""
#: documents/models.py:375
msgid "ASN is"
msgstr ""
#: documents/models.py:376
msgid "correspondent is"
msgstr ""
#: documents/models.py:377
msgid "document type is"
msgstr ""
#: documents/models.py:378
msgid "is in inbox"
msgstr ""
#: documents/models.py:379
msgid "has tag"
msgstr ""
#: documents/models.py:380
msgid "has any tag"
msgstr ""
#: documents/models.py:381
msgid "created before"
msgstr ""
#: documents/models.py:382
msgid "created after"
msgstr ""
#: documents/models.py:383
msgid "created year is"
msgstr ""
#: documents/models.py:384
msgid "created month is"
msgstr ""
#: documents/models.py:385
msgid "created day is"
msgstr ""
#: documents/models.py:386
msgid "added before"
msgstr ""
#: documents/models.py:387
msgid "added after"
msgstr ""
#: documents/models.py:388
msgid "modified before"
msgstr ""
#: documents/models.py:389
msgid "modified after"
msgstr ""
#: documents/models.py:390
msgid "does not have tag"
msgstr ""
#: documents/models.py:391
msgid "does not have ASN"
msgstr ""
#: documents/models.py:392
msgid "title or content contains"
msgstr ""
#: documents/models.py:393
msgid "fulltext query"
msgstr ""
#: documents/models.py:394
msgid "more like this"
msgstr ""
#: documents/models.py:405
msgid "rule type"
msgstr ""
#: documents/models.py:409
msgid "value"
msgstr ""
#: documents/models.py:415
msgid "filter rule"
msgstr ""
#: documents/models.py:416
msgid "filter rules"
msgstr ""
#: documents/serialisers.py:53
#, python-format
msgid "Invalid regular expression: %(error)s"
msgstr ""
#: documents/serialisers.py:177
msgid "Invalid color."
msgstr ""
#: documents/serialisers.py:451
#, python-format
msgid "File type %(type)s not supported"
msgstr ""
#: documents/templates/index.html:22
msgid "Paperless-ng is loading..."
msgstr ""
#: documents/templates/registration/logged_out.html:14
msgid "Paperless-ng signed out"
msgstr ""
#: documents/templates/registration/logged_out.html:45
msgid "You have been successfully logged out. Bye!"
msgstr ""
#: documents/templates/registration/logged_out.html:46
msgid "Sign in again"
msgstr ""
#: documents/templates/registration/login.html:15
msgid "Paperless-ng sign in"
msgstr ""
#: documents/templates/registration/login.html:47
msgid "Please sign in."
msgstr ""
#: documents/templates/registration/login.html:50
msgid "Your username and password didn't match. Please try again."
msgstr ""
#: documents/templates/registration/login.html:53
msgid "Username"
msgstr ""
#: documents/templates/registration/login.html:54
msgid "Password"
msgstr ""
#: documents/templates/registration/login.html:59
msgid "Sign in"
msgstr ""
#: paperless/settings.py:303
msgid "English (US)"
msgstr ""
#: paperless/settings.py:304
msgid "English (GB)"
msgstr ""
#: paperless/settings.py:305
msgid "German"
msgstr ""
#: paperless/settings.py:306
msgid "Dutch"
msgstr ""
#: paperless/settings.py:307
msgid "French"
msgstr ""
#: paperless/settings.py:308
msgid "Portuguese (Brazil)"
msgstr ""
#: paperless/settings.py:309
msgid "Portuguese"
msgstr ""
#: paperless/settings.py:310
msgid "Italian"
msgstr ""
#: paperless/settings.py:311
msgid "Romanian"
msgstr ""
#: paperless/settings.py:312
msgid "Russian"
msgstr ""
#: paperless/settings.py:313
msgid "Spanish"
msgstr ""
#: paperless/settings.py:314
msgid "Polish"
msgstr ""
#: paperless/settings.py:315
msgid "Swedish"
msgstr ""
#: paperless/urls.py:120
msgid "Paperless-ng administration"
msgstr ""
#: paperless_mail/admin.py:15
msgid "Authentication"
msgstr ""
#: paperless_mail/admin.py:18
msgid "Advanced settings"
msgstr ""
#: paperless_mail/admin.py:37
msgid "Filter"
msgstr ""
#: paperless_mail/admin.py:39
msgid "Paperless will only process mails that match ALL of the filters given below."
msgstr ""
#: paperless_mail/admin.py:49
msgid "Actions"
msgstr ""
#: paperless_mail/admin.py:51
msgid "The action applied to the mail. This action is only performed when documents were consumed from the mail. Mails without attachments will remain entirely untouched."
msgstr ""
#: paperless_mail/admin.py:58
msgid "Metadata"
msgstr ""
#: paperless_mail/admin.py:60
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."
msgstr ""
#: paperless_mail/apps.py:9
msgid "Paperless mail"
msgstr ""
#: paperless_mail/models.py:11
msgid "mail account"
msgstr ""
#: paperless_mail/models.py:12
msgid "mail accounts"
msgstr ""
#: paperless_mail/models.py:19
msgid "No encryption"
msgstr ""
#: paperless_mail/models.py:20
msgid "Use SSL"
msgstr ""
#: paperless_mail/models.py:21
msgid "Use STARTTLS"
msgstr ""
#: paperless_mail/models.py:29
msgid "IMAP server"
msgstr ""
#: paperless_mail/models.py:33
msgid "IMAP port"
msgstr ""
#: paperless_mail/models.py:36
msgid "This is usually 143 for unencrypted and STARTTLS connections, and 993 for SSL connections."
msgstr ""
#: paperless_mail/models.py:40
msgid "IMAP security"
msgstr ""
#: paperless_mail/models.py:46
msgid "username"
msgstr ""
#: paperless_mail/models.py:50
msgid "password"
msgstr ""
#: paperless_mail/models.py:54
msgid "character set"
msgstr ""
#: paperless_mail/models.py:57
msgid "The character set to use when communicating with the mail server, such as 'UTF-8' or 'US-ASCII'."
msgstr ""
#: paperless_mail/models.py:68
msgid "mail rule"
msgstr ""
#: paperless_mail/models.py:69
msgid "mail rules"
msgstr ""
#: paperless_mail/models.py:75
msgid "Only process attachments."
msgstr ""
#: paperless_mail/models.py:76
msgid "Process all files, including 'inline' attachments."
msgstr ""
#: paperless_mail/models.py:86
msgid "Mark as read, don't process read mails"
msgstr ""
#: paperless_mail/models.py:87
msgid "Flag the mail, don't process flagged mails"
msgstr ""
#: paperless_mail/models.py:88
msgid "Move to specified folder"
msgstr ""
#: paperless_mail/models.py:89
msgid "Delete"
msgstr ""
#: paperless_mail/models.py:96
msgid "Use subject as title"
msgstr ""
#: paperless_mail/models.py:97
msgid "Use attachment filename as title"
msgstr ""
#: paperless_mail/models.py:107
msgid "Do not assign a correspondent"
msgstr ""
#: paperless_mail/models.py:109
msgid "Use mail address"
msgstr ""
#: paperless_mail/models.py:111
msgid "Use name (or mail address if not available)"
msgstr ""
#: paperless_mail/models.py:113
msgid "Use correspondent selected below"
msgstr ""
#: paperless_mail/models.py:121
msgid "order"
msgstr ""
#: paperless_mail/models.py:128
msgid "account"
msgstr ""
#: paperless_mail/models.py:132
msgid "folder"
msgstr ""
#: paperless_mail/models.py:134
msgid "Subfolders must be separated by dots."
msgstr ""
#: paperless_mail/models.py:138
msgid "filter from"
msgstr ""
#: paperless_mail/models.py:141
msgid "filter subject"
msgstr ""
#: paperless_mail/models.py:144
msgid "filter body"
msgstr ""
#: paperless_mail/models.py:148
msgid "filter attachment filename"
msgstr ""
#: paperless_mail/models.py:150
msgid "Only consume documents which entirely match this filename if specified. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive."
msgstr ""
#: paperless_mail/models.py:156
msgid "maximum age"
msgstr ""
#: paperless_mail/models.py:158
msgid "Specified in days."
msgstr ""
#: paperless_mail/models.py:161
msgid "attachment type"
msgstr ""
#: paperless_mail/models.py:164
msgid "Inline attachments include embedded images, so it's best to combine this option with a filename filter."
msgstr ""
#: paperless_mail/models.py:169
msgid "action"
msgstr ""
#: paperless_mail/models.py:175
msgid "action parameter"
msgstr ""
#: paperless_mail/models.py:177
msgid "Additional parameter for the action selected above, i.e., the target folder of the move to folder action. Subfolders must be separated by dots."
msgstr ""
#: paperless_mail/models.py:184
msgid "assign title from"
msgstr ""
#: paperless_mail/models.py:194
msgid "assign this tag"
msgstr ""
#: paperless_mail/models.py:202
msgid "assign this document type"
msgstr ""
#: paperless_mail/models.py:206
msgid "assign correspondent from"
msgstr ""
#: paperless_mail/models.py:216
msgid "assign this correspondent"
msgstr ""

View File

@@ -1,698 +0,0 @@
msgid ""
msgstr ""
"Project-Id-Version: paperless-ng\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-05-16 09:38+0000\n"
"PO-Revision-Date: 2021-11-23 18:07\n"
"Last-Translator: \n"
"Language-Team: Arabic, Yemen\n"
"Language: ar_YE\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=6; plural=(n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5);\n"
"X-Crowdin-Project: paperless-ng\n"
"X-Crowdin-Project-ID: 434940\n"
"X-Crowdin-Language: ar-YE\n"
"X-Crowdin-File: /dev/src/locale/en_US/LC_MESSAGES/django.po\n"
"X-Crowdin-File-ID: 54\n"
#: documents/apps.py:10
msgid "Documents"
msgstr ""
#: documents/models.py:32
msgid "Any word"
msgstr ""
#: documents/models.py:33
msgid "All words"
msgstr ""
#: documents/models.py:34
msgid "Exact match"
msgstr ""
#: documents/models.py:35
msgid "Regular expression"
msgstr ""
#: documents/models.py:36
msgid "Fuzzy word"
msgstr ""
#: documents/models.py:37
msgid "Automatic"
msgstr ""
#: documents/models.py:41 documents/models.py:350 paperless_mail/models.py:25
#: paperless_mail/models.py:117
msgid "name"
msgstr ""
#: documents/models.py:45
msgid "match"
msgstr ""
#: documents/models.py:49
msgid "matching algorithm"
msgstr ""
#: documents/models.py:55
msgid "is insensitive"
msgstr ""
#: documents/models.py:74 documents/models.py:120
msgid "correspondent"
msgstr ""
#: documents/models.py:75
msgid "correspondents"
msgstr ""
#: documents/models.py:81
msgid "color"
msgstr ""
#: documents/models.py:87
msgid "is inbox tag"
msgstr ""
#: documents/models.py:89
msgid "Marks this tag as an inbox tag: All newly consumed documents will be tagged with inbox tags."
msgstr ""
#: documents/models.py:94
msgid "tag"
msgstr ""
#: documents/models.py:95 documents/models.py:151
msgid "tags"
msgstr ""
#: documents/models.py:101 documents/models.py:133
msgid "document type"
msgstr ""
#: documents/models.py:102
msgid "document types"
msgstr ""
#: documents/models.py:110
msgid "Unencrypted"
msgstr ""
#: documents/models.py:111
msgid "Encrypted with GNU Privacy Guard"
msgstr ""
#: documents/models.py:124
msgid "title"
msgstr ""
#: documents/models.py:137
msgid "content"
msgstr ""
#: documents/models.py:139
msgid "The raw, text-only data of the document. This field is primarily used for searching."
msgstr ""
#: documents/models.py:144
msgid "mime type"
msgstr ""
#: documents/models.py:155
msgid "checksum"
msgstr ""
#: documents/models.py:159
msgid "The checksum of the original document."
msgstr ""
#: documents/models.py:163
msgid "archive checksum"
msgstr ""
#: documents/models.py:168
msgid "The checksum of the archived document."
msgstr ""
#: documents/models.py:172 documents/models.py:328
msgid "created"
msgstr ""
#: documents/models.py:176
msgid "modified"
msgstr ""
#: documents/models.py:180
msgid "storage type"
msgstr ""
#: documents/models.py:188
msgid "added"
msgstr ""
#: documents/models.py:192
msgid "filename"
msgstr ""
#: documents/models.py:198
msgid "Current filename in storage"
msgstr ""
#: documents/models.py:202
msgid "archive filename"
msgstr ""
#: documents/models.py:208
msgid "Current archive filename in storage"
msgstr ""
#: documents/models.py:212
msgid "archive serial number"
msgstr ""
#: documents/models.py:217
msgid "The position of this document in your physical document archive."
msgstr ""
#: documents/models.py:223
msgid "document"
msgstr ""
#: documents/models.py:224
msgid "documents"
msgstr ""
#: documents/models.py:311
msgid "debug"
msgstr ""
#: documents/models.py:312
msgid "information"
msgstr ""
#: documents/models.py:313
msgid "warning"
msgstr ""
#: documents/models.py:314
msgid "error"
msgstr ""
#: documents/models.py:315
msgid "critical"
msgstr ""
#: documents/models.py:319
msgid "group"
msgstr ""
#: documents/models.py:322
msgid "message"
msgstr ""
#: documents/models.py:325
msgid "level"
msgstr ""
#: documents/models.py:332
msgid "log"
msgstr ""
#: documents/models.py:333
msgid "logs"
msgstr ""
#: documents/models.py:344 documents/models.py:401
msgid "saved view"
msgstr ""
#: documents/models.py:345
msgid "saved views"
msgstr ""
#: documents/models.py:348
msgid "user"
msgstr ""
#: documents/models.py:354
msgid "show on dashboard"
msgstr ""
#: documents/models.py:357
msgid "show in sidebar"
msgstr ""
#: documents/models.py:361
msgid "sort field"
msgstr ""
#: documents/models.py:367
msgid "sort reverse"
msgstr ""
#: documents/models.py:373
msgid "title contains"
msgstr ""
#: documents/models.py:374
msgid "content contains"
msgstr ""
#: documents/models.py:375
msgid "ASN is"
msgstr ""
#: documents/models.py:376
msgid "correspondent is"
msgstr ""
#: documents/models.py:377
msgid "document type is"
msgstr ""
#: documents/models.py:378
msgid "is in inbox"
msgstr ""
#: documents/models.py:379
msgid "has tag"
msgstr ""
#: documents/models.py:380
msgid "has any tag"
msgstr ""
#: documents/models.py:381
msgid "created before"
msgstr ""
#: documents/models.py:382
msgid "created after"
msgstr ""
#: documents/models.py:383
msgid "created year is"
msgstr ""
#: documents/models.py:384
msgid "created month is"
msgstr ""
#: documents/models.py:385
msgid "created day is"
msgstr ""
#: documents/models.py:386
msgid "added before"
msgstr ""
#: documents/models.py:387
msgid "added after"
msgstr ""
#: documents/models.py:388
msgid "modified before"
msgstr ""
#: documents/models.py:389
msgid "modified after"
msgstr ""
#: documents/models.py:390
msgid "does not have tag"
msgstr ""
#: documents/models.py:391
msgid "does not have ASN"
msgstr ""
#: documents/models.py:392
msgid "title or content contains"
msgstr ""
#: documents/models.py:393
msgid "fulltext query"
msgstr ""
#: documents/models.py:394
msgid "more like this"
msgstr ""
#: documents/models.py:405
msgid "rule type"
msgstr ""
#: documents/models.py:409
msgid "value"
msgstr ""
#: documents/models.py:415
msgid "filter rule"
msgstr ""
#: documents/models.py:416
msgid "filter rules"
msgstr ""
#: documents/serialisers.py:53
#, python-format
msgid "Invalid regular expression: %(error)s"
msgstr ""
#: documents/serialisers.py:177
msgid "Invalid color."
msgstr ""
#: documents/serialisers.py:451
#, python-format
msgid "File type %(type)s not supported"
msgstr ""
#: documents/templates/index.html:22
msgid "Paperless-ng is loading..."
msgstr ""
#: documents/templates/registration/logged_out.html:14
msgid "Paperless-ng signed out"
msgstr ""
#: documents/templates/registration/logged_out.html:45
msgid "You have been successfully logged out. Bye!"
msgstr ""
#: documents/templates/registration/logged_out.html:46
msgid "Sign in again"
msgstr ""
#: documents/templates/registration/login.html:15
msgid "Paperless-ng sign in"
msgstr ""
#: documents/templates/registration/login.html:47
msgid "Please sign in."
msgstr ""
#: documents/templates/registration/login.html:50
msgid "Your username and password didn't match. Please try again."
msgstr ""
#: documents/templates/registration/login.html:53
msgid "Username"
msgstr ""
#: documents/templates/registration/login.html:54
msgid "Password"
msgstr ""
#: documents/templates/registration/login.html:59
msgid "Sign in"
msgstr ""
#: paperless/settings.py:303
msgid "English (US)"
msgstr ""
#: paperless/settings.py:304
msgid "English (GB)"
msgstr ""
#: paperless/settings.py:305
msgid "German"
msgstr ""
#: paperless/settings.py:306
msgid "Dutch"
msgstr ""
#: paperless/settings.py:307
msgid "French"
msgstr ""
#: paperless/settings.py:308
msgid "Portuguese (Brazil)"
msgstr ""
#: paperless/settings.py:309
msgid "Portuguese"
msgstr ""
#: paperless/settings.py:310
msgid "Italian"
msgstr ""
#: paperless/settings.py:311
msgid "Romanian"
msgstr ""
#: paperless/settings.py:312
msgid "Russian"
msgstr ""
#: paperless/settings.py:313
msgid "Spanish"
msgstr ""
#: paperless/settings.py:314
msgid "Polish"
msgstr ""
#: paperless/settings.py:315
msgid "Swedish"
msgstr ""
#: paperless/urls.py:120
msgid "Paperless-ng administration"
msgstr ""
#: paperless_mail/admin.py:15
msgid "Authentication"
msgstr ""
#: paperless_mail/admin.py:18
msgid "Advanced settings"
msgstr ""
#: paperless_mail/admin.py:37
msgid "Filter"
msgstr ""
#: paperless_mail/admin.py:39
msgid "Paperless will only process mails that match ALL of the filters given below."
msgstr ""
#: paperless_mail/admin.py:49
msgid "Actions"
msgstr ""
#: paperless_mail/admin.py:51
msgid "The action applied to the mail. This action is only performed when documents were consumed from the mail. Mails without attachments will remain entirely untouched."
msgstr ""
#: paperless_mail/admin.py:58
msgid "Metadata"
msgstr ""
#: paperless_mail/admin.py:60
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."
msgstr ""
#: paperless_mail/apps.py:9
msgid "Paperless mail"
msgstr ""
#: paperless_mail/models.py:11
msgid "mail account"
msgstr ""
#: paperless_mail/models.py:12
msgid "mail accounts"
msgstr ""
#: paperless_mail/models.py:19
msgid "No encryption"
msgstr ""
#: paperless_mail/models.py:20
msgid "Use SSL"
msgstr ""
#: paperless_mail/models.py:21
msgid "Use STARTTLS"
msgstr ""
#: paperless_mail/models.py:29
msgid "IMAP server"
msgstr ""
#: paperless_mail/models.py:33
msgid "IMAP port"
msgstr ""
#: paperless_mail/models.py:36
msgid "This is usually 143 for unencrypted and STARTTLS connections, and 993 for SSL connections."
msgstr ""
#: paperless_mail/models.py:40
msgid "IMAP security"
msgstr ""
#: paperless_mail/models.py:46
msgid "username"
msgstr ""
#: paperless_mail/models.py:50
msgid "password"
msgstr ""
#: paperless_mail/models.py:54
msgid "character set"
msgstr ""
#: paperless_mail/models.py:57
msgid "The character set to use when communicating with the mail server, such as 'UTF-8' or 'US-ASCII'."
msgstr ""
#: paperless_mail/models.py:68
msgid "mail rule"
msgstr ""
#: paperless_mail/models.py:69
msgid "mail rules"
msgstr ""
#: paperless_mail/models.py:75
msgid "Only process attachments."
msgstr ""
#: paperless_mail/models.py:76
msgid "Process all files, including 'inline' attachments."
msgstr ""
#: paperless_mail/models.py:86
msgid "Mark as read, don't process read mails"
msgstr ""
#: paperless_mail/models.py:87
msgid "Flag the mail, don't process flagged mails"
msgstr ""
#: paperless_mail/models.py:88
msgid "Move to specified folder"
msgstr ""
#: paperless_mail/models.py:89
msgid "Delete"
msgstr ""
#: paperless_mail/models.py:96
msgid "Use subject as title"
msgstr ""
#: paperless_mail/models.py:97
msgid "Use attachment filename as title"
msgstr ""
#: paperless_mail/models.py:107
msgid "Do not assign a correspondent"
msgstr ""
#: paperless_mail/models.py:109
msgid "Use mail address"
msgstr ""
#: paperless_mail/models.py:111
msgid "Use name (or mail address if not available)"
msgstr ""
#: paperless_mail/models.py:113
msgid "Use correspondent selected below"
msgstr ""
#: paperless_mail/models.py:121
msgid "order"
msgstr ""
#: paperless_mail/models.py:128
msgid "account"
msgstr ""
#: paperless_mail/models.py:132
msgid "folder"
msgstr ""
#: paperless_mail/models.py:134
msgid "Subfolders must be separated by dots."
msgstr ""
#: paperless_mail/models.py:138
msgid "filter from"
msgstr ""
#: paperless_mail/models.py:141
msgid "filter subject"
msgstr ""
#: paperless_mail/models.py:144
msgid "filter body"
msgstr ""
#: paperless_mail/models.py:148
msgid "filter attachment filename"
msgstr ""
#: paperless_mail/models.py:150
msgid "Only consume documents which entirely match this filename if specified. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive."
msgstr ""
#: paperless_mail/models.py:156
msgid "maximum age"
msgstr ""
#: paperless_mail/models.py:158
msgid "Specified in days."
msgstr ""
#: paperless_mail/models.py:161
msgid "attachment type"
msgstr ""
#: paperless_mail/models.py:164
msgid "Inline attachments include embedded images, so it's best to combine this option with a filename filter."
msgstr ""
#: paperless_mail/models.py:169
msgid "action"
msgstr ""
#: paperless_mail/models.py:175
msgid "action parameter"
msgstr ""
#: paperless_mail/models.py:177
msgid "Additional parameter for the action selected above, i.e., the target folder of the move to folder action. Subfolders must be separated by dots."
msgstr ""
#: paperless_mail/models.py:184
msgid "assign title from"
msgstr ""
#: paperless_mail/models.py:194
msgid "assign this tag"
msgstr ""
#: paperless_mail/models.py:202
msgid "assign this document type"
msgstr ""
#: paperless_mail/models.py:206
msgid "assign correspondent from"
msgstr ""
#: paperless_mail/models.py:216
msgid "assign this correspondent"
msgstr ""

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-07-08 14:11-0700\n"
"PO-Revision-Date: 2022-10-16 13:46\n"
"POT-Creation-Date: 2022-11-09 21:50+0000\n"
"PO-Revision-Date: 2022-11-09 23:11\n"
"Last-Translator: \n"
"Language-Team: Belarusian\n"
"Language: be_BY\n"
@@ -21,378 +21,490 @@ msgstr ""
msgid "Documents"
msgstr "Дакументы"
#: documents/models.py:29
#: documents/models.py:32
msgid "Any word"
msgstr "Любое слова"
#: documents/models.py:30
#: documents/models.py:33
msgid "All words"
msgstr "Усе словы"
#: documents/models.py:31
#: documents/models.py:34
msgid "Exact match"
msgstr "Дакладнае супадзенне"
#: documents/models.py:32
#: documents/models.py:35
msgid "Regular expression"
msgstr "Рэгулярны выраз"
#: documents/models.py:33
#: documents/models.py:36
msgid "Fuzzy word"
msgstr "Невыразнае слова"
#: documents/models.py:34
#: documents/models.py:37
msgid "Automatic"
msgstr "Аўтаматычна"
#: documents/models.py:37 documents/models.py:354 paperless_mail/models.py:16
#: documents/models.py:40 documents/models.py:367 paperless_mail/models.py:16
#: paperless_mail/models.py:80
msgid "name"
msgstr "назва"
#: documents/models.py:39
#: documents/models.py:42
msgid "match"
msgstr "супадзенне"
#: documents/models.py:42
#: documents/models.py:45
msgid "matching algorithm"
msgstr "алгарытм супастаўлення"
#: documents/models.py:47
#: documents/models.py:50
msgid "is insensitive"
msgstr "без уліку рэгістра"
#: documents/models.py:60 documents/models.py:115
#: documents/models.py:63 documents/models.py:118
msgid "correspondent"
msgstr "карэспандэнт"
#: documents/models.py:61
#: documents/models.py:64
msgid "correspondents"
msgstr "карэспандэнты"
#: documents/models.py:66
#: documents/models.py:69
msgid "color"
msgstr "колер"
#: documents/models.py:69
#: documents/models.py:72
msgid "is inbox tag"
msgstr "гэта ўваходны тэг"
#: documents/models.py:72
#: documents/models.py:75
msgid "Marks this tag as an inbox tag: All newly consumed documents will be tagged with inbox tags."
msgstr "Пазначыць гэты тэг як тэг папкі \"Уваходныя\": Усе нядаўна спажытыя дакументы будуць пазначаны тэгамі \"Уваходныя\"."
#: documents/models.py:78
#: documents/models.py:81
msgid "tag"
msgstr "тэг"
#: documents/models.py:79 documents/models.py:153
#: documents/models.py:82 documents/models.py:156
msgid "tags"
msgstr "тэгі"
#: documents/models.py:84 documents/models.py:135
#: documents/models.py:87 documents/models.py:138
msgid "document type"
msgstr "тып дакумента"
#: documents/models.py:85
#: documents/models.py:88
msgid "document types"
msgstr "тыпы дакументаў"
#: documents/models.py:90
#: documents/models.py:93
msgid "path"
msgstr "шлях"
#: documents/models.py:96 documents/models.py:124
#: documents/models.py:99 documents/models.py:127
msgid "storage path"
msgstr "шлях захоўвання"
#: documents/models.py:97
#: documents/models.py:100
msgid "storage paths"
msgstr "шляхі захоўвання"
#: documents/models.py:105
#: documents/models.py:108
msgid "Unencrypted"
msgstr "Незашыфраваны"
#: documents/models.py:106
#: documents/models.py:109
msgid "Encrypted with GNU Privacy Guard"
msgstr "Зашыфравана з дапамогай GNU Privacy Guard"
#: documents/models.py:127
#: documents/models.py:130
msgid "title"
msgstr "назва"
#: documents/models.py:139
#: documents/models.py:142 documents/models.py:611
msgid "content"
msgstr "змест"
#: documents/models.py:142
#: documents/models.py:145
msgid "The raw, text-only data of the document. This field is primarily used for searching."
msgstr "Неапрацаваныя тэкставыя даныя дакумента. Гэта поле ў асноўным выкарыстоўваецца для пошуку."
#: documents/models.py:147
#: documents/models.py:150
msgid "mime type"
msgstr "тып MIME"
#: documents/models.py:157
#: documents/models.py:160
msgid "checksum"
msgstr "кантрольная сума"
#: documents/models.py:161
#: documents/models.py:164
msgid "The checksum of the original document."
msgstr "Кантрольная сума зыходнага дакумента."
#: documents/models.py:165
#: documents/models.py:168
msgid "archive checksum"
msgstr "кантрольная сума архіва"
#: documents/models.py:170
#: documents/models.py:173
msgid "The checksum of the archived document."
msgstr "Кантрольная сума архіўнага дакумента."
#: documents/models.py:173 documents/models.py:335 documents/models.py:520
#: documents/models.py:176 documents/models.py:348 documents/models.py:617
msgid "created"
msgstr "створаны"
#: documents/models.py:176
#: documents/models.py:179
msgid "modified"
msgstr "мадыфікаваны"
#: documents/models.py:183
#: documents/models.py:186
msgid "storage type"
msgstr "тып захоўвання"
#: documents/models.py:191
#: documents/models.py:194
msgid "added"
msgstr "дададзена"
#: documents/models.py:198
#: documents/models.py:201
msgid "filename"
msgstr "імя файла"
#: documents/models.py:204
#: documents/models.py:207
msgid "Current filename in storage"
msgstr "Цяперашняе імя файла ў сховішчы"
#: documents/models.py:208
#: documents/models.py:211
msgid "archive filename"
msgstr "імя файла архіва"
#: documents/models.py:214
#: documents/models.py:217
msgid "Current archive filename in storage"
msgstr "Цяперашняе імя файла архіва ў сховішчы"
#: documents/models.py:218
#: documents/models.py:221
msgid "original filename"
msgstr ""
#: documents/models.py:227
msgid "The original name of the file when it was uploaded"
msgstr ""
#: documents/models.py:231
msgid "archive serial number"
msgstr "парадкавы нумар архіва"
#: documents/models.py:224
#: documents/models.py:237
msgid "The position of this document in your physical document archive."
msgstr "Пазіцыя гэтага дакумента ў вашым фізічным архіве дакументаў."
#: documents/models.py:230
#: documents/models.py:243 documents/models.py:628
msgid "document"
msgstr "дакумент"
#: documents/models.py:231
#: documents/models.py:244
msgid "documents"
msgstr "дакументы"
#: documents/models.py:318
#: documents/models.py:331
msgid "debug"
msgstr "адладка"
#: documents/models.py:319
#: documents/models.py:332
msgid "information"
msgstr "інфармацыя"
#: documents/models.py:320
#: documents/models.py:333
msgid "warning"
msgstr "папярэджанне"
#: documents/models.py:321
#: documents/models.py:334
msgid "error"
msgstr "памылка"
#: documents/models.py:322
#: documents/models.py:335
msgid "critical"
msgstr "крытычны"
#: documents/models.py:325
#: documents/models.py:338
msgid "group"
msgstr "група"
#: documents/models.py:327
#: documents/models.py:340
msgid "message"
msgstr "паведамленне"
#: documents/models.py:330
#: documents/models.py:343
msgid "level"
msgstr "узровень"
#: documents/models.py:339
#: documents/models.py:352
msgid "log"
msgstr "лог"
#: documents/models.py:340
#: documents/models.py:353
msgid "logs"
msgstr "логі"
#: documents/models.py:350 documents/models.py:403
#: documents/models.py:363 documents/models.py:419
msgid "saved view"
msgstr "захаваны выгляд"
#: documents/models.py:351
#: documents/models.py:364
msgid "saved views"
msgstr "захаваныя выгляды"
#: documents/models.py:353
#: documents/models.py:366 documents/models.py:637
msgid "user"
msgstr "карыстальнік"
#: documents/models.py:357
#: documents/models.py:370
msgid "show on dashboard"
msgstr "паказаць на панэлі"
#: documents/models.py:360
#: documents/models.py:373
msgid "show in sidebar"
msgstr "паказаць у бакавой панэлі"
#: documents/models.py:364
#: documents/models.py:377
msgid "sort field"
msgstr "поле сартавання"
#: documents/models.py:369
#: documents/models.py:382
msgid "sort reverse"
msgstr "сартаваць у адваротным парадку"
#: documents/models.py:374
#: documents/models.py:387
msgid "title contains"
msgstr "назва змяшчае"
#: documents/models.py:375
#: documents/models.py:388
msgid "content contains"
msgstr "змест змяшчае"
#: documents/models.py:376
#: documents/models.py:389
msgid "ASN is"
msgstr "ASN"
#: documents/models.py:377
#: documents/models.py:390
msgid "correspondent is"
msgstr "карэспандэнт"
#: documents/models.py:378
#: documents/models.py:391
msgid "document type is"
msgstr "тып дакумента"
#: documents/models.py:379
#: documents/models.py:392
msgid "is in inbox"
msgstr "ва ўваходных"
#: documents/models.py:380
#: documents/models.py:393
msgid "has tag"
msgstr "мае тэг"
#: documents/models.py:381
#: documents/models.py:394
msgid "has any tag"
msgstr "мае любы тэг"
#: documents/models.py:382
#: documents/models.py:395
msgid "created before"
msgstr "створана перад"
#: documents/models.py:383
#: documents/models.py:396
msgid "created after"
msgstr "створана пасля"
#: documents/models.py:384
#: documents/models.py:397
msgid "created year is"
msgstr "год стварэння"
#: documents/models.py:385
#: documents/models.py:398
msgid "created month is"
msgstr "месяц стварэння"
#: documents/models.py:386
#: documents/models.py:399
msgid "created day is"
msgstr "дзень стварэння"
#: documents/models.py:387
#: documents/models.py:400
msgid "added before"
msgstr "даданы перад"
#: documents/models.py:388
#: documents/models.py:401
msgid "added after"
msgstr "даданы пасля"
#: documents/models.py:389
#: documents/models.py:402
msgid "modified before"
msgstr "зменены перад"
#: documents/models.py:390
#: documents/models.py:403
msgid "modified after"
msgstr "зменены пасля"
#: documents/models.py:391
#: documents/models.py:404
msgid "does not have tag"
msgstr "не мае тэга"
#: documents/models.py:392
#: documents/models.py:405
msgid "does not have ASN"
msgstr "не мае ASN"
#: documents/models.py:393
#: documents/models.py:406
msgid "title or content contains"
msgstr "назва або змест смяшчае"
#: documents/models.py:394
#: documents/models.py:407
msgid "fulltext query"
msgstr "поўнатэкставы запыт"
#: documents/models.py:395
#: documents/models.py:408
msgid "more like this"
msgstr "больш падобнага"
#: documents/models.py:396
#: documents/models.py:409
msgid "has tags in"
msgstr "мае тэгі ў"
#: documents/models.py:406
#: documents/models.py:410
msgid "ASN greater than"
msgstr ""
#: documents/models.py:411
msgid "ASN less than"
msgstr ""
#: documents/models.py:412
msgid "storage path is"
msgstr ""
#: documents/models.py:422
msgid "rule type"
msgstr "тып правіла"
#: documents/models.py:408
#: documents/models.py:424
msgid "value"
msgstr "значэнне"
#: documents/models.py:411
#: documents/models.py:427
msgid "filter rule"
msgstr "правіла фільтрацыі"
#: documents/models.py:412
#: documents/models.py:428
msgid "filter rules"
msgstr "правілы фільтрацыі"
#: documents/models.py:521
msgid "started"
msgstr "пачата"
#: documents/models.py:536
msgid "Task ID"
msgstr ""
#: documents/serialisers.py:70
#: documents/models.py:537
msgid "Celery ID for the Task that was run"
msgstr ""
#: documents/models.py:542
msgid "Acknowledged"
msgstr ""
#: documents/models.py:543
msgid "If the task is acknowledged via the frontend or API"
msgstr ""
#: documents/models.py:549 documents/models.py:556
msgid "Task Name"
msgstr ""
#: documents/models.py:550
msgid "Name of the file which the Task was run for"
msgstr ""
#: documents/models.py:557
msgid "Name of the Task which was run"
msgstr ""
#: documents/models.py:562
msgid "Task Positional Arguments"
msgstr ""
#: documents/models.py:564
msgid "JSON representation of the positional arguments used with the task"
msgstr ""
#: documents/models.py:569
msgid "Task Named Arguments"
msgstr ""
#: documents/models.py:571
msgid "JSON representation of the named arguments used with the task"
msgstr ""
#: documents/models.py:578
msgid "Task State"
msgstr ""
#: documents/models.py:579
msgid "Current state of the task being run"
msgstr ""
#: documents/models.py:584
msgid "Created DateTime"
msgstr ""
#: documents/models.py:585
msgid "Datetime field when the task result was created in UTC"
msgstr ""
#: documents/models.py:590
msgid "Started DateTime"
msgstr ""
#: documents/models.py:591
msgid "Datetime field when the task was started in UTC"
msgstr ""
#: documents/models.py:596
msgid "Completed DateTime"
msgstr ""
#: documents/models.py:597
msgid "Datetime field when the task was completed in UTC"
msgstr ""
#: documents/models.py:602
msgid "Result Data"
msgstr ""
#: documents/models.py:604
msgid "The data returned by the task"
msgstr ""
#: documents/models.py:613
msgid "Comment for the document"
msgstr ""
#: documents/models.py:642
msgid "comment"
msgstr ""
#: documents/models.py:643
msgid "comments"
msgstr ""
#: documents/serialisers.py:72
#, python-format
msgid "Invalid regular expression: %(error)s"
msgstr "Няправільны рэгулярны выраз: %(error)s"
#: documents/serialisers.py:191
#: documents/serialisers.py:193
msgid "Invalid color."
msgstr "Няправільны колер."
#: documents/serialisers.py:515
#: documents/serialisers.py:518
#, python-format
msgid "File type %(type)s not supported"
msgstr "Тып файла %(type)s не падтрымліваецца"
#: documents/serialisers.py:596
#: documents/serialisers.py:599
msgid "Invalid variable detected."
msgstr "Выяўлена няправільная зменная."
@@ -444,87 +556,87 @@ msgstr "Пароль"
msgid "Sign in"
msgstr "Увайсці"
#: paperless/settings.py:339
#: paperless/settings.py:378
msgid "English (US)"
msgstr "Англійская (ЗША)"
#: paperless/settings.py:340
#: paperless/settings.py:379
msgid "Belarusian"
msgstr "Беларуская"
#: paperless/settings.py:341
#: paperless/settings.py:380
msgid "Czech"
msgstr "Чэшская"
#: paperless/settings.py:342
#: paperless/settings.py:381
msgid "Danish"
msgstr "Дацкая"
#: paperless/settings.py:343
#: paperless/settings.py:382
msgid "German"
msgstr "Нямецкая"
#: paperless/settings.py:344
#: paperless/settings.py:383
msgid "English (GB)"
msgstr "Англійская (Вялікабрытанія)"
#: paperless/settings.py:345
#: paperless/settings.py:384
msgid "Spanish"
msgstr "Іспанская"
#: paperless/settings.py:346
#: paperless/settings.py:385
msgid "French"
msgstr "Французская"
#: paperless/settings.py:347
#: paperless/settings.py:386
msgid "Italian"
msgstr "Італьянская"
#: paperless/settings.py:348
#: paperless/settings.py:387
msgid "Luxembourgish"
msgstr "Люксембургская"
#: paperless/settings.py:349
#: paperless/settings.py:388
msgid "Dutch"
msgstr "Нідэрландская"
#: paperless/settings.py:350
#: paperless/settings.py:389
msgid "Polish"
msgstr "Польская"
#: paperless/settings.py:351
#: paperless/settings.py:390
msgid "Portuguese (Brazil)"
msgstr "Партугальская (Бразілія)"
#: paperless/settings.py:352
#: paperless/settings.py:391
msgid "Portuguese"
msgstr "Партугальская"
#: paperless/settings.py:353
#: paperless/settings.py:392
msgid "Romanian"
msgstr "Румынская"
#: paperless/settings.py:354
#: paperless/settings.py:393
msgid "Russian"
msgstr "Руская"
#: paperless/settings.py:355
#: paperless/settings.py:394
msgid "Slovenian"
msgstr "Славенская"
#: paperless/settings.py:356
#: paperless/settings.py:395
msgid "Serbian"
msgstr "Сербская"
#: paperless/settings.py:357
#: paperless/settings.py:396
msgid "Swedish"
msgstr "Шведская"
#: paperless/settings.py:358
#: paperless/settings.py:397
msgid "Turkish"
msgstr "Турэцкая"
#: paperless/settings.py:359
#: paperless/settings.py:398
msgid "Chinese Simplified"
msgstr "Кітайская спрошчаная"

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-07-08 14:11-0700\n"
"PO-Revision-Date: 2022-10-18 20:06\n"
"POT-Creation-Date: 2022-11-09 21:50+0000\n"
"PO-Revision-Date: 2022-11-09 23:11\n"
"Last-Translator: \n"
"Language-Team: Czech\n"
"Language: cs_CZ\n"
@@ -21,378 +21,490 @@ msgstr ""
msgid "Documents"
msgstr "Dokumenty"
#: documents/models.py:29
#: documents/models.py:32
msgid "Any word"
msgstr "Jakékoliv slovo"
#: documents/models.py:30
#: documents/models.py:33
msgid "All words"
msgstr "Všechna slova"
#: documents/models.py:31
#: documents/models.py:34
msgid "Exact match"
msgstr "Přesná shoda"
#: documents/models.py:32
#: documents/models.py:35
msgid "Regular expression"
msgstr "Regulární výraz"
#: documents/models.py:33
#: documents/models.py:36
msgid "Fuzzy word"
msgstr "Fuzzy slovo"
#: documents/models.py:34
#: documents/models.py:37
msgid "Automatic"
msgstr "Automatický"
#: documents/models.py:37 documents/models.py:354 paperless_mail/models.py:16
#: documents/models.py:40 documents/models.py:367 paperless_mail/models.py:16
#: paperless_mail/models.py:80
msgid "name"
msgstr "název"
#: documents/models.py:39
#: documents/models.py:42
msgid "match"
msgstr "shoda"
#: documents/models.py:42
#: documents/models.py:45
msgid "matching algorithm"
msgstr "algoritmus pro shodu"
#: documents/models.py:47
#: documents/models.py:50
msgid "is insensitive"
msgstr "je ignorováno"
#: documents/models.py:60 documents/models.py:115
#: documents/models.py:63 documents/models.py:118
msgid "correspondent"
msgstr "korespondent"
#: documents/models.py:61
#: documents/models.py:64
msgid "correspondents"
msgstr "korespondenti"
#: documents/models.py:66
#: documents/models.py:69
msgid "color"
msgstr "barva"
#: documents/models.py:69
#: documents/models.py:72
msgid "is inbox tag"
msgstr "tag přichozí"
#: documents/models.py:72
#: documents/models.py:75
msgid "Marks this tag as an inbox tag: All newly consumed documents will be tagged with inbox tags."
msgstr "Označí tento tag jako tag pro příchozí: Všechny nově zkonzumované dokumenty budou označeny tagem pro přichozí"
#: documents/models.py:78
#: documents/models.py:81
msgid "tag"
msgstr "tagy"
#: documents/models.py:79 documents/models.py:153
#: documents/models.py:82 documents/models.py:156
msgid "tags"
msgstr "tagy"
#: documents/models.py:84 documents/models.py:135
#: documents/models.py:87 documents/models.py:138
msgid "document type"
msgstr "typ dokumentu"
#: documents/models.py:85
#: documents/models.py:88
msgid "document types"
msgstr "typy dokumentu"
#: documents/models.py:90
#: documents/models.py:93
msgid "path"
msgstr "cesta"
#: documents/models.py:96 documents/models.py:124
#: documents/models.py:99 documents/models.py:127
msgid "storage path"
msgstr "cesta k úložišti"
#: documents/models.py:97
#: documents/models.py:100
msgid "storage paths"
msgstr "cesta k úložišti"
#: documents/models.py:105
#: documents/models.py:108
msgid "Unencrypted"
msgstr "Nešifrované"
#: documents/models.py:106
#: documents/models.py:109
msgid "Encrypted with GNU Privacy Guard"
msgstr "Šifrované pomocí GNU Privacy Guard"
#: documents/models.py:127
#: documents/models.py:130
msgid "title"
msgstr "titulek"
#: documents/models.py:139
#: documents/models.py:142 documents/models.py:611
msgid "content"
msgstr "obsah"
#: documents/models.py:142
#: documents/models.py:145
msgid "The raw, text-only data of the document. This field is primarily used for searching."
msgstr "Nezpracovaná, pouze textová data dokumentu. Toto pole je používáno především pro vyhledávání."
#: documents/models.py:147
#: documents/models.py:150
msgid "mime type"
msgstr "mime typ"
#: documents/models.py:157
#: documents/models.py:160
msgid "checksum"
msgstr "kontrolní součet"
#: documents/models.py:161
#: documents/models.py:164
msgid "The checksum of the original document."
msgstr "Kontrolní součet původního dokumentu"
#: documents/models.py:165
#: documents/models.py:168
msgid "archive checksum"
msgstr "kontrolní součet archivu"
#: documents/models.py:170
#: documents/models.py:173
msgid "The checksum of the archived document."
msgstr "Kontrolní součet archivovaného dokumentu."
#: documents/models.py:173 documents/models.py:335 documents/models.py:520
#: documents/models.py:176 documents/models.py:348 documents/models.py:617
msgid "created"
msgstr "vytvořeno"
#: documents/models.py:176
#: documents/models.py:179
msgid "modified"
msgstr "upraveno"
#: documents/models.py:183
#: documents/models.py:186
msgid "storage type"
msgstr "typ úložiště"
#: documents/models.py:191
#: documents/models.py:194
msgid "added"
msgstr "přidáno"
#: documents/models.py:198
#: documents/models.py:201
msgid "filename"
msgstr "název souboru"
#: documents/models.py:204
#: documents/models.py:207
msgid "Current filename in storage"
msgstr "Aktuální název souboru v úložišti"
#: documents/models.py:208
#: documents/models.py:211
msgid "archive filename"
msgstr "Název archivovaného souboru"
#: documents/models.py:214
#: documents/models.py:217
msgid "Current archive filename in storage"
msgstr "Aktuální název souboru archivu v úložišti"
#: documents/models.py:218
#: documents/models.py:221
msgid "original filename"
msgstr ""
#: documents/models.py:227
msgid "The original name of the file when it was uploaded"
msgstr ""
#: documents/models.py:231
msgid "archive serial number"
msgstr "sériové číslo archivu"
#: documents/models.py:224
#: documents/models.py:237
msgid "The position of this document in your physical document archive."
msgstr "Pozice dokumentu ve vašem archivu fyzických dokumentů"
#: documents/models.py:230
#: documents/models.py:243 documents/models.py:628
msgid "document"
msgstr "dokument"
#: documents/models.py:231
#: documents/models.py:244
msgid "documents"
msgstr "dokumenty"
#: documents/models.py:318
#: documents/models.py:331
msgid "debug"
msgstr "ladění"
#: documents/models.py:319
#: documents/models.py:332
msgid "information"
msgstr "informace"
#: documents/models.py:320
#: documents/models.py:333
msgid "warning"
msgstr "varování"
#: documents/models.py:321
#: documents/models.py:334
msgid "error"
msgstr "chyba"
#: documents/models.py:322
#: documents/models.py:335
msgid "critical"
msgstr "kritická"
#: documents/models.py:325
#: documents/models.py:338
msgid "group"
msgstr "skupina"
#: documents/models.py:327
#: documents/models.py:340
msgid "message"
msgstr "zpráva"
#: documents/models.py:330
#: documents/models.py:343
msgid "level"
msgstr "úroveň"
#: documents/models.py:339
#: documents/models.py:352
msgid "log"
msgstr "záznam"
#: documents/models.py:340
#: documents/models.py:353
msgid "logs"
msgstr "záznamy"
#: documents/models.py:350 documents/models.py:403
#: documents/models.py:363 documents/models.py:419
msgid "saved view"
msgstr "uložený pohled"
#: documents/models.py:351
#: documents/models.py:364
msgid "saved views"
msgstr "uložené pohledy"
#: documents/models.py:353
#: documents/models.py:366 documents/models.py:637
msgid "user"
msgstr "uživatel"
#: documents/models.py:357
#: documents/models.py:370
msgid "show on dashboard"
msgstr "zobrazit v dashboardu"
#: documents/models.py:360
#: documents/models.py:373
msgid "show in sidebar"
msgstr "zobrazit v postranním menu"
#: documents/models.py:364
#: documents/models.py:377
msgid "sort field"
msgstr "pole na řazení"
#: documents/models.py:369
#: documents/models.py:382
msgid "sort reverse"
msgstr "třídit opačně"
#: documents/models.py:374
#: documents/models.py:387
msgid "title contains"
msgstr "titulek obsahuje"
#: documents/models.py:375
#: documents/models.py:388
msgid "content contains"
msgstr "obsah obsahuje"
#: documents/models.py:376
#: documents/models.py:389
msgid "ASN is"
msgstr "ASN je"
#: documents/models.py:377
#: documents/models.py:390
msgid "correspondent is"
msgstr "korespondent je"
#: documents/models.py:378
#: documents/models.py:391
msgid "document type is"
msgstr "typ dokumentu je"
#: documents/models.py:379
#: documents/models.py:392
msgid "is in inbox"
msgstr "je v příchozích"
#: documents/models.py:380
#: documents/models.py:393
msgid "has tag"
msgstr "má tag"
#: documents/models.py:381
#: documents/models.py:394
msgid "has any tag"
msgstr "má jakýkoliv tag"
#: documents/models.py:382
#: documents/models.py:395
msgid "created before"
msgstr "vytvořeno před"
#: documents/models.py:383
#: documents/models.py:396
msgid "created after"
msgstr "vytvořeno po"
#: documents/models.py:384
#: documents/models.py:397
msgid "created year is"
msgstr "rok vytvoření je"
#: documents/models.py:385
#: documents/models.py:398
msgid "created month is"
msgstr "měsíc vytvoření je"
#: documents/models.py:386
#: documents/models.py:399
msgid "created day is"
msgstr "den vytvoření je"
#: documents/models.py:387
#: documents/models.py:400
msgid "added before"
msgstr "přidáno před"
#: documents/models.py:388
#: documents/models.py:401
msgid "added after"
msgstr "přidáno po"
#: documents/models.py:389
#: documents/models.py:402
msgid "modified before"
msgstr "upraveno před"
#: documents/models.py:390
#: documents/models.py:403
msgid "modified after"
msgstr "upraveno po"
#: documents/models.py:391
#: documents/models.py:404
msgid "does not have tag"
msgstr "nemá tag"
#: documents/models.py:392
#: documents/models.py:405
msgid "does not have ASN"
msgstr "Nemá ASN"
#: documents/models.py:393
#: documents/models.py:406
msgid "title or content contains"
msgstr "Titulek nebo obsah obsahuje"
#: documents/models.py:394
#: documents/models.py:407
msgid "fulltext query"
msgstr "Fulltextový dotaz"
#: documents/models.py:395
#: documents/models.py:408
msgid "more like this"
msgstr "Podobné"
#: documents/models.py:396
#: documents/models.py:409
msgid "has tags in"
msgstr "má značky v"
#: documents/models.py:406
#: documents/models.py:410
msgid "ASN greater than"
msgstr ""
#: documents/models.py:411
msgid "ASN less than"
msgstr ""
#: documents/models.py:412
msgid "storage path is"
msgstr ""
#: documents/models.py:422
msgid "rule type"
msgstr "typ pravidla"
#: documents/models.py:408
#: documents/models.py:424
msgid "value"
msgstr "hodnota"
#: documents/models.py:411
#: documents/models.py:427
msgid "filter rule"
msgstr "filtrovací pravidlo"
#: documents/models.py:412
#: documents/models.py:428
msgid "filter rules"
msgstr "filtrovací pravidla"
#: documents/models.py:521
msgid "started"
msgstr "zahájeno"
#: documents/models.py:536
msgid "Task ID"
msgstr ""
#: documents/serialisers.py:70
#: documents/models.py:537
msgid "Celery ID for the Task that was run"
msgstr ""
#: documents/models.py:542
msgid "Acknowledged"
msgstr ""
#: documents/models.py:543
msgid "If the task is acknowledged via the frontend or API"
msgstr ""
#: documents/models.py:549 documents/models.py:556
msgid "Task Name"
msgstr ""
#: documents/models.py:550
msgid "Name of the file which the Task was run for"
msgstr ""
#: documents/models.py:557
msgid "Name of the Task which was run"
msgstr ""
#: documents/models.py:562
msgid "Task Positional Arguments"
msgstr ""
#: documents/models.py:564
msgid "JSON representation of the positional arguments used with the task"
msgstr ""
#: documents/models.py:569
msgid "Task Named Arguments"
msgstr ""
#: documents/models.py:571
msgid "JSON representation of the named arguments used with the task"
msgstr ""
#: documents/models.py:578
msgid "Task State"
msgstr ""
#: documents/models.py:579
msgid "Current state of the task being run"
msgstr ""
#: documents/models.py:584
msgid "Created DateTime"
msgstr ""
#: documents/models.py:585
msgid "Datetime field when the task result was created in UTC"
msgstr ""
#: documents/models.py:590
msgid "Started DateTime"
msgstr ""
#: documents/models.py:591
msgid "Datetime field when the task was started in UTC"
msgstr ""
#: documents/models.py:596
msgid "Completed DateTime"
msgstr ""
#: documents/models.py:597
msgid "Datetime field when the task was completed in UTC"
msgstr ""
#: documents/models.py:602
msgid "Result Data"
msgstr ""
#: documents/models.py:604
msgid "The data returned by the task"
msgstr ""
#: documents/models.py:613
msgid "Comment for the document"
msgstr ""
#: documents/models.py:642
msgid "comment"
msgstr ""
#: documents/models.py:643
msgid "comments"
msgstr ""
#: documents/serialisers.py:72
#, python-format
msgid "Invalid regular expression: %(error)s"
msgstr "Neplatný regulární výraz: %(error)s"
#: documents/serialisers.py:191
#: documents/serialisers.py:193
msgid "Invalid color."
msgstr "Neplatná barva."
#: documents/serialisers.py:515
#: documents/serialisers.py:518
#, python-format
msgid "File type %(type)s not supported"
msgstr "Typ souboru %(type)s není podporován"
#: documents/serialisers.py:596
#: documents/serialisers.py:599
msgid "Invalid variable detected."
msgstr "Zjištěna neplatná proměnná."
@@ -444,87 +556,87 @@ msgstr "Heslo"
msgid "Sign in"
msgstr "Přihlásit se"
#: paperless/settings.py:339
#: paperless/settings.py:378
msgid "English (US)"
msgstr "Angličtina (US)"
#: paperless/settings.py:340
#: paperless/settings.py:379
msgid "Belarusian"
msgstr "Běloruština"
#: paperless/settings.py:341
#: paperless/settings.py:380
msgid "Czech"
msgstr "Čeština"
#: paperless/settings.py:342
#: paperless/settings.py:381
msgid "Danish"
msgstr "Dánština"
#: paperless/settings.py:343
#: paperless/settings.py:382
msgid "German"
msgstr "Němčina"
#: paperless/settings.py:344
#: paperless/settings.py:383
msgid "English (GB)"
msgstr "Angličtina (GB)"
#: paperless/settings.py:345
#: paperless/settings.py:384
msgid "Spanish"
msgstr "Španělština"
#: paperless/settings.py:346
#: paperless/settings.py:385
msgid "French"
msgstr "Francouzština"
#: paperless/settings.py:347
#: paperless/settings.py:386
msgid "Italian"
msgstr "Italština"
#: paperless/settings.py:348
#: paperless/settings.py:387
msgid "Luxembourgish"
msgstr "Lucemburština"
#: paperless/settings.py:349
#: paperless/settings.py:388
msgid "Dutch"
msgstr "Holandština"
#: paperless/settings.py:350
#: paperless/settings.py:389
msgid "Polish"
msgstr "Polština"
#: paperless/settings.py:351
#: paperless/settings.py:390
msgid "Portuguese (Brazil)"
msgstr "Portugalština (Brazílie)"
#: paperless/settings.py:352
#: paperless/settings.py:391
msgid "Portuguese"
msgstr "Portugalština"
#: paperless/settings.py:353
#: paperless/settings.py:392
msgid "Romanian"
msgstr "Rumunština"
#: paperless/settings.py:354
#: paperless/settings.py:393
msgid "Russian"
msgstr "Ruština"
#: paperless/settings.py:355
#: paperless/settings.py:394
msgid "Slovenian"
msgstr "Slovinština"
#: paperless/settings.py:356
#: paperless/settings.py:395
msgid "Serbian"
msgstr "Srbština"
#: paperless/settings.py:357
#: paperless/settings.py:396
msgid "Swedish"
msgstr "Švédština"
#: paperless/settings.py:358
#: paperless/settings.py:397
msgid "Turkish"
msgstr "Turečtina"
#: paperless/settings.py:359
#: paperless/settings.py:398
msgid "Chinese Simplified"
msgstr "Čínština (zjednodušená)"

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-07-08 14:11-0700\n"
"PO-Revision-Date: 2022-07-08 22:07\n"
"POT-Creation-Date: 2022-11-09 21:50+0000\n"
"PO-Revision-Date: 2022-11-09 23:11\n"
"Last-Translator: \n"
"Language-Team: Danish\n"
"Language: da_DK\n"
@@ -21,378 +21,490 @@ msgstr ""
msgid "Documents"
msgstr "Dokumenter"
#: documents/models.py:29
#: documents/models.py:32
msgid "Any word"
msgstr "Ethvert ord"
#: documents/models.py:30
#: documents/models.py:33
msgid "All words"
msgstr "Alle ord"
#: documents/models.py:31
#: documents/models.py:34
msgid "Exact match"
msgstr "Præcis match"
#: documents/models.py:32
#: documents/models.py:35
msgid "Regular expression"
msgstr "Regulær udtryk"
#: documents/models.py:33
#: documents/models.py:36
msgid "Fuzzy word"
msgstr "Tilnærmet ord"
#: documents/models.py:34
#: documents/models.py:37
msgid "Automatic"
msgstr "Automatisk"
#: documents/models.py:37 documents/models.py:354 paperless_mail/models.py:16
#: documents/models.py:40 documents/models.py:367 paperless_mail/models.py:16
#: paperless_mail/models.py:80
msgid "name"
msgstr "navn"
#: documents/models.py:39
#: documents/models.py:42
msgid "match"
msgstr "match"
#: documents/models.py:42
#: documents/models.py:45
msgid "matching algorithm"
msgstr "matching algoritme"
#: documents/models.py:47
#: documents/models.py:50
msgid "is insensitive"
msgstr "er usensitiv"
#: documents/models.py:60 documents/models.py:115
#: documents/models.py:63 documents/models.py:118
msgid "correspondent"
msgstr "korrespondent"
#: documents/models.py:61
#: documents/models.py:64
msgid "correspondents"
msgstr "korrespondenter"
#: documents/models.py:66
#: documents/models.py:69
msgid "color"
msgstr "farve"
#: documents/models.py:69
#: documents/models.py:72
msgid "is inbox tag"
msgstr "er indbakkeetiket"
#: documents/models.py:72
#: documents/models.py:75
msgid "Marks this tag as an inbox tag: All newly consumed documents will be tagged with inbox tags."
msgstr "Markerer denne etiket som en indbakkeetiket: Alle ny-bearbejdede dokumenter vil blive mærket med indbakkeetiketter."
#: documents/models.py:78
#: documents/models.py:81
msgid "tag"
msgstr "etiket"
#: documents/models.py:79 documents/models.py:153
#: documents/models.py:82 documents/models.py:156
msgid "tags"
msgstr "etiketter"
#: documents/models.py:84 documents/models.py:135
#: documents/models.py:87 documents/models.py:138
msgid "document type"
msgstr "dokumenttype"
#: documents/models.py:85
#: documents/models.py:88
msgid "document types"
msgstr "dokumenttyper"
#: documents/models.py:90
#: documents/models.py:93
msgid "path"
msgstr ""
#: documents/models.py:96 documents/models.py:124
#: documents/models.py:99 documents/models.py:127
msgid "storage path"
msgstr ""
#: documents/models.py:97
#: documents/models.py:100
msgid "storage paths"
msgstr ""
#: documents/models.py:105
#: documents/models.py:108
msgid "Unencrypted"
msgstr "Ukrypteret"
#: documents/models.py:106
#: documents/models.py:109
msgid "Encrypted with GNU Privacy Guard"
msgstr "Krypteret med GNU Privacy Guard"
#: documents/models.py:127
#: documents/models.py:130
msgid "title"
msgstr "titel"
#: documents/models.py:139
#: documents/models.py:142 documents/models.py:611
msgid "content"
msgstr "indhold"
#: documents/models.py:142
#: documents/models.py:145
msgid "The raw, text-only data of the document. This field is primarily used for searching."
msgstr "Dokumentets rå tekstdata. Dette felt bruges primært til søgning."
#: documents/models.py:147
#: documents/models.py:150
msgid "mime type"
msgstr "MIME-type"
#: documents/models.py:157
#: documents/models.py:160
msgid "checksum"
msgstr "kontrolsum"
#: documents/models.py:161
#: documents/models.py:164
msgid "The checksum of the original document."
msgstr "Kontrolsummen af det oprindelige dokument."
#: documents/models.py:165
#: documents/models.py:168
msgid "archive checksum"
msgstr "arkiv kontrolsum"
#: documents/models.py:170
#: documents/models.py:173
msgid "The checksum of the archived document."
msgstr "Kontrolsummen af det arkiverede dokument."
#: documents/models.py:173 documents/models.py:335 documents/models.py:520
#: documents/models.py:176 documents/models.py:348 documents/models.py:617
msgid "created"
msgstr "oprettet"
#: documents/models.py:176
#: documents/models.py:179
msgid "modified"
msgstr "ændret"
#: documents/models.py:183
#: documents/models.py:186
msgid "storage type"
msgstr "lagringstype"
#: documents/models.py:191
#: documents/models.py:194
msgid "added"
msgstr "tilføjet"
#: documents/models.py:198
#: documents/models.py:201
msgid "filename"
msgstr "filnavn"
#: documents/models.py:204
#: documents/models.py:207
msgid "Current filename in storage"
msgstr "Nuværende filnavn lagret"
#: documents/models.py:208
#: documents/models.py:211
msgid "archive filename"
msgstr "arkiv filnavn"
#: documents/models.py:214
#: documents/models.py:217
msgid "Current archive filename in storage"
msgstr "Nuværende arkivfilnavn lagret"
#: documents/models.py:218
#: documents/models.py:221
msgid "original filename"
msgstr ""
#: documents/models.py:227
msgid "The original name of the file when it was uploaded"
msgstr ""
#: documents/models.py:231
msgid "archive serial number"
msgstr "arkiv serienummer"
#: documents/models.py:224
#: documents/models.py:237
msgid "The position of this document in your physical document archive."
msgstr "Placeringen af dette dokument i dit fysiske dokumentarkiv."
#: documents/models.py:230
#: documents/models.py:243 documents/models.py:628
msgid "document"
msgstr "dokument"
#: documents/models.py:231
#: documents/models.py:244
msgid "documents"
msgstr "dokumenter"
#: documents/models.py:318
#: documents/models.py:331
msgid "debug"
msgstr "fejlfinding"
#: documents/models.py:319
#: documents/models.py:332
msgid "information"
msgstr "information"
#: documents/models.py:320
#: documents/models.py:333
msgid "warning"
msgstr "advarsel"
#: documents/models.py:321
#: documents/models.py:334
msgid "error"
msgstr "fejl"
#: documents/models.py:322
#: documents/models.py:335
msgid "critical"
msgstr "kritisk"
#: documents/models.py:325
#: documents/models.py:338
msgid "group"
msgstr "gruppe"
#: documents/models.py:327
#: documents/models.py:340
msgid "message"
msgstr "besked"
#: documents/models.py:330
#: documents/models.py:343
msgid "level"
msgstr "niveau"
#: documents/models.py:339
#: documents/models.py:352
msgid "log"
msgstr "log"
#: documents/models.py:340
#: documents/models.py:353
msgid "logs"
msgstr "logninger"
#: documents/models.py:350 documents/models.py:403
#: documents/models.py:363 documents/models.py:419
msgid "saved view"
msgstr "gemt visning"
#: documents/models.py:351
#: documents/models.py:364
msgid "saved views"
msgstr "gemte visninger"
#: documents/models.py:353
#: documents/models.py:366 documents/models.py:637
msgid "user"
msgstr "bruger"
#: documents/models.py:357
#: documents/models.py:370
msgid "show on dashboard"
msgstr "vis på betjeningspanel"
#: documents/models.py:360
#: documents/models.py:373
msgid "show in sidebar"
msgstr "vis i sidepanelet"
#: documents/models.py:364
#: documents/models.py:377
msgid "sort field"
msgstr "sortér felt"
#: documents/models.py:369
#: documents/models.py:382
msgid "sort reverse"
msgstr "sortér omvendt"
#: documents/models.py:374
#: documents/models.py:387
msgid "title contains"
msgstr "titel indeholder"
#: documents/models.py:375
#: documents/models.py:388
msgid "content contains"
msgstr "indhold indeholder"
#: documents/models.py:376
#: documents/models.py:389
msgid "ASN is"
msgstr "ASN er"
#: documents/models.py:377
#: documents/models.py:390
msgid "correspondent is"
msgstr "korrespondent er"
#: documents/models.py:378
#: documents/models.py:391
msgid "document type is"
msgstr "dokumenttype er"
#: documents/models.py:379
#: documents/models.py:392
msgid "is in inbox"
msgstr "er i indbakke"
#: documents/models.py:380
#: documents/models.py:393
msgid "has tag"
msgstr "har etiket"
#: documents/models.py:381
#: documents/models.py:394
msgid "has any tag"
msgstr "har en etiket"
#: documents/models.py:382
#: documents/models.py:395
msgid "created before"
msgstr "oprettet før"
#: documents/models.py:383
#: documents/models.py:396
msgid "created after"
msgstr "oprettet efter"
#: documents/models.py:384
#: documents/models.py:397
msgid "created year is"
msgstr "oprettet år er"
#: documents/models.py:385
#: documents/models.py:398
msgid "created month is"
msgstr "oprettet måned er"
#: documents/models.py:386
#: documents/models.py:399
msgid "created day is"
msgstr "oprettet dag er"
#: documents/models.py:387
#: documents/models.py:400
msgid "added before"
msgstr "tilføjet før"
#: documents/models.py:388
#: documents/models.py:401
msgid "added after"
msgstr "tilføjet efter"
#: documents/models.py:389
#: documents/models.py:402
msgid "modified before"
msgstr "ændret før"
#: documents/models.py:390
#: documents/models.py:403
msgid "modified after"
msgstr "ændret efter"
#: documents/models.py:391
#: documents/models.py:404
msgid "does not have tag"
msgstr "har ikke nogen etiket"
#: documents/models.py:392
#: documents/models.py:405
msgid "does not have ASN"
msgstr "har ikke ASN"
#: documents/models.py:393
#: documents/models.py:406
msgid "title or content contains"
msgstr "titel eller indhold indeholder"
#: documents/models.py:394
#: documents/models.py:407
msgid "fulltext query"
msgstr "fuldtekst forespørgsel"
#: documents/models.py:395
#: documents/models.py:408
msgid "more like this"
msgstr "mere som dette"
#: documents/models.py:396
#: documents/models.py:409
msgid "has tags in"
msgstr "har etiketter i"
#: documents/models.py:406
#: documents/models.py:410
msgid "ASN greater than"
msgstr ""
#: documents/models.py:411
msgid "ASN less than"
msgstr ""
#: documents/models.py:412
msgid "storage path is"
msgstr ""
#: documents/models.py:422
msgid "rule type"
msgstr "regeltype"
#: documents/models.py:408
#: documents/models.py:424
msgid "value"
msgstr "værdi"
#: documents/models.py:411
#: documents/models.py:427
msgid "filter rule"
msgstr "filtreringsregel"
#: documents/models.py:412
#: documents/models.py:428
msgid "filter rules"
msgstr "filtreringsregler"
#: documents/models.py:521
msgid "started"
#: documents/models.py:536
msgid "Task ID"
msgstr ""
#: documents/serialisers.py:70
#: documents/models.py:537
msgid "Celery ID for the Task that was run"
msgstr ""
#: documents/models.py:542
msgid "Acknowledged"
msgstr ""
#: documents/models.py:543
msgid "If the task is acknowledged via the frontend or API"
msgstr ""
#: documents/models.py:549 documents/models.py:556
msgid "Task Name"
msgstr ""
#: documents/models.py:550
msgid "Name of the file which the Task was run for"
msgstr ""
#: documents/models.py:557
msgid "Name of the Task which was run"
msgstr ""
#: documents/models.py:562
msgid "Task Positional Arguments"
msgstr ""
#: documents/models.py:564
msgid "JSON representation of the positional arguments used with the task"
msgstr ""
#: documents/models.py:569
msgid "Task Named Arguments"
msgstr ""
#: documents/models.py:571
msgid "JSON representation of the named arguments used with the task"
msgstr ""
#: documents/models.py:578
msgid "Task State"
msgstr ""
#: documents/models.py:579
msgid "Current state of the task being run"
msgstr ""
#: documents/models.py:584
msgid "Created DateTime"
msgstr ""
#: documents/models.py:585
msgid "Datetime field when the task result was created in UTC"
msgstr ""
#: documents/models.py:590
msgid "Started DateTime"
msgstr ""
#: documents/models.py:591
msgid "Datetime field when the task was started in UTC"
msgstr ""
#: documents/models.py:596
msgid "Completed DateTime"
msgstr ""
#: documents/models.py:597
msgid "Datetime field when the task was completed in UTC"
msgstr ""
#: documents/models.py:602
msgid "Result Data"
msgstr ""
#: documents/models.py:604
msgid "The data returned by the task"
msgstr ""
#: documents/models.py:613
msgid "Comment for the document"
msgstr ""
#: documents/models.py:642
msgid "comment"
msgstr ""
#: documents/models.py:643
msgid "comments"
msgstr ""
#: documents/serialisers.py:72
#, python-format
msgid "Invalid regular expression: %(error)s"
msgstr "Ugyldigt regulært udtryk: %(error)s"
#: documents/serialisers.py:191
#: documents/serialisers.py:193
msgid "Invalid color."
msgstr "Ugyldig farve."
#: documents/serialisers.py:515
#: documents/serialisers.py:518
#, python-format
msgid "File type %(type)s not supported"
msgstr "Filtype %(type)s understøttes ikke"
#: documents/serialisers.py:596
#: documents/serialisers.py:599
msgid "Invalid variable detected."
msgstr ""
@@ -444,87 +556,87 @@ msgstr "Adgangskode"
msgid "Sign in"
msgstr "Log ind"
#: paperless/settings.py:339
#: paperless/settings.py:378
msgid "English (US)"
msgstr "Engelsk (USA)"
#: paperless/settings.py:340
#: paperless/settings.py:379
msgid "Belarusian"
msgstr ""
#: paperless/settings.py:341
#: paperless/settings.py:380
msgid "Czech"
msgstr "Tjekkisk"
#: paperless/settings.py:342
#: paperless/settings.py:381
msgid "Danish"
msgstr "Dansk"
#: paperless/settings.py:343
#: paperless/settings.py:382
msgid "German"
msgstr "Tysk"
#: paperless/settings.py:344
#: paperless/settings.py:383
msgid "English (GB)"
msgstr "Engelsk (GB)"
#: paperless/settings.py:345
#: paperless/settings.py:384
msgid "Spanish"
msgstr "Spansk"
#: paperless/settings.py:346
#: paperless/settings.py:385
msgid "French"
msgstr "Fransk"
#: paperless/settings.py:347
#: paperless/settings.py:386
msgid "Italian"
msgstr "Italiensk"
#: paperless/settings.py:348
#: paperless/settings.py:387
msgid "Luxembourgish"
msgstr "Luxemburgsk"
#: paperless/settings.py:349
#: paperless/settings.py:388
msgid "Dutch"
msgstr "Hollandsk"
#: paperless/settings.py:350
#: paperless/settings.py:389
msgid "Polish"
msgstr "Polsk"
#: paperless/settings.py:351
#: paperless/settings.py:390
msgid "Portuguese (Brazil)"
msgstr "Portugisisk (Brasilien)"
#: paperless/settings.py:352
#: paperless/settings.py:391
msgid "Portuguese"
msgstr "Portugisisk"
#: paperless/settings.py:353
#: paperless/settings.py:392
msgid "Romanian"
msgstr "Romansk"
#: paperless/settings.py:354
#: paperless/settings.py:393
msgid "Russian"
msgstr "Russisk"
#: paperless/settings.py:355
#: paperless/settings.py:394
msgid "Slovenian"
msgstr ""
#: paperless/settings.py:356
#: paperless/settings.py:395
msgid "Serbian"
msgstr ""
#: paperless/settings.py:357
#: paperless/settings.py:396
msgid "Swedish"
msgstr "Svensk"
#: paperless/settings.py:358
#: paperless/settings.py:397
msgid "Turkish"
msgstr ""
#: paperless/settings.py:359
#: paperless/settings.py:398
msgid "Chinese Simplified"
msgstr ""

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-07-08 14:11-0700\n"
"PO-Revision-Date: 2022-09-04 11:44\n"
"POT-Creation-Date: 2022-11-09 21:50+0000\n"
"PO-Revision-Date: 2022-11-26 20:28\n"
"Last-Translator: \n"
"Language-Team: German\n"
"Language: de_DE\n"
@@ -21,378 +21,490 @@ msgstr ""
msgid "Documents"
msgstr "Dokumente"
#: documents/models.py:29
#: documents/models.py:32
msgid "Any word"
msgstr "Irgendein Wort"
#: documents/models.py:30
#: documents/models.py:33
msgid "All words"
msgstr "Alle Wörter"
#: documents/models.py:31
#: documents/models.py:34
msgid "Exact match"
msgstr "Exakte Übereinstimmung"
#: documents/models.py:32
#: documents/models.py:35
msgid "Regular expression"
msgstr "Regulärer Ausdruck"
#: documents/models.py:33
#: documents/models.py:36
msgid "Fuzzy word"
msgstr "Ungenaues Wort"
#: documents/models.py:34
#: documents/models.py:37
msgid "Automatic"
msgstr "Automatisch"
#: documents/models.py:37 documents/models.py:354 paperless_mail/models.py:16
#: documents/models.py:40 documents/models.py:367 paperless_mail/models.py:16
#: paperless_mail/models.py:80
msgid "name"
msgstr "Name"
#: documents/models.py:39
#: documents/models.py:42
msgid "match"
msgstr "Zuweisungsmuster"
#: documents/models.py:42
#: documents/models.py:45
msgid "matching algorithm"
msgstr "Zuweisungsalgorithmus"
#: documents/models.py:47
#: documents/models.py:50
msgid "is insensitive"
msgstr "Groß-/Kleinschreibung irrelevant"
#: documents/models.py:60 documents/models.py:115
#: documents/models.py:63 documents/models.py:118
msgid "correspondent"
msgstr "Korrespondent"
#: documents/models.py:61
#: documents/models.py:64
msgid "correspondents"
msgstr "Korrespondenten"
#: documents/models.py:66
#: documents/models.py:69
msgid "color"
msgstr "Farbe"
#: documents/models.py:69
#: documents/models.py:72
msgid "is inbox tag"
msgstr "Posteingangs-Tag"
#: documents/models.py:72
#: documents/models.py:75
msgid "Marks this tag as an inbox tag: All newly consumed documents will be tagged with inbox tags."
msgstr "Markiert das Tag als Posteingangs-Tag. Neue Dokumente werden immer mit diesem Tag versehen."
#: documents/models.py:78
#: documents/models.py:81
msgid "tag"
msgstr "Tag"
#: documents/models.py:79 documents/models.py:153
#: documents/models.py:82 documents/models.py:156
msgid "tags"
msgstr "Tags"
#: documents/models.py:84 documents/models.py:135
#: documents/models.py:87 documents/models.py:138
msgid "document type"
msgstr "Dokumenttyp"
#: documents/models.py:85
#: documents/models.py:88
msgid "document types"
msgstr "Dokumenttypen"
#: documents/models.py:90
#: documents/models.py:93
msgid "path"
msgstr "Pfad"
#: documents/models.py:96 documents/models.py:124
#: documents/models.py:99 documents/models.py:127
msgid "storage path"
msgstr "Speicherpfad"
#: documents/models.py:97
#: documents/models.py:100
msgid "storage paths"
msgstr "Speicherpfade"
#: documents/models.py:105
#: documents/models.py:108
msgid "Unencrypted"
msgstr "Nicht verschlüsselt"
#: documents/models.py:106
#: documents/models.py:109
msgid "Encrypted with GNU Privacy Guard"
msgstr "Durch GNU Privacy Guard verschlüsselt"
#: documents/models.py:127
#: documents/models.py:130
msgid "title"
msgstr "Titel"
#: documents/models.py:139
#: documents/models.py:142 documents/models.py:611
msgid "content"
msgstr "Inhalt"
#: documents/models.py:142
#: documents/models.py:145
msgid "The raw, text-only data of the document. This field is primarily used for searching."
msgstr "Der Inhalt des Dokuments in Textform. Dieses Feld wird primär für die Suche verwendet."
#: documents/models.py:147
#: documents/models.py:150
msgid "mime type"
msgstr "MIME-Typ"
#: documents/models.py:157
#: documents/models.py:160
msgid "checksum"
msgstr "Prüfsumme"
#: documents/models.py:161
#: documents/models.py:164
msgid "The checksum of the original document."
msgstr "Die Prüfsumme des originalen Dokuments."
#: documents/models.py:165
#: documents/models.py:168
msgid "archive checksum"
msgstr "Archiv-Prüfsumme"
#: documents/models.py:170
#: documents/models.py:173
msgid "The checksum of the archived document."
msgstr "Die Prüfsumme des archivierten Dokuments."
#: documents/models.py:173 documents/models.py:335 documents/models.py:520
#: documents/models.py:176 documents/models.py:348 documents/models.py:617
msgid "created"
msgstr "Erstellt"
#: documents/models.py:176
#: documents/models.py:179
msgid "modified"
msgstr "Geändert"
#: documents/models.py:183
#: documents/models.py:186
msgid "storage type"
msgstr "Speichertyp"
#: documents/models.py:191
#: documents/models.py:194
msgid "added"
msgstr "Hinzugefügt"
#: documents/models.py:198
#: documents/models.py:201
msgid "filename"
msgstr "Dateiname"
#: documents/models.py:204
#: documents/models.py:207
msgid "Current filename in storage"
msgstr "Aktueller Dateiname im Datenspeicher"
#: documents/models.py:208
#: documents/models.py:211
msgid "archive filename"
msgstr "Archiv-Dateiname"
#: documents/models.py:214
#: documents/models.py:217
msgid "Current archive filename in storage"
msgstr "Aktueller Dateiname im Archiv"
#: documents/models.py:218
#: documents/models.py:221
msgid "original filename"
msgstr "Original-Dateiname"
#: documents/models.py:227
msgid "The original name of the file when it was uploaded"
msgstr "Der Originalname der Datei beim Hochladen"
#: documents/models.py:231
msgid "archive serial number"
msgstr "Archiv-Seriennummer"
#: documents/models.py:224
#: documents/models.py:237
msgid "The position of this document in your physical document archive."
msgstr "Die Position dieses Dokuments in Ihrem physischen Dokumentenarchiv."
#: documents/models.py:230
#: documents/models.py:243 documents/models.py:628
msgid "document"
msgstr "Dokument"
#: documents/models.py:231
#: documents/models.py:244
msgid "documents"
msgstr "Dokumente"
#: documents/models.py:318
#: documents/models.py:331
msgid "debug"
msgstr "Debug"
#: documents/models.py:319
#: documents/models.py:332
msgid "information"
msgstr "Information"
#: documents/models.py:320
#: documents/models.py:333
msgid "warning"
msgstr "Warnung"
#: documents/models.py:321
#: documents/models.py:334
msgid "error"
msgstr "Fehler"
#: documents/models.py:322
#: documents/models.py:335
msgid "critical"
msgstr "Kritisch"
#: documents/models.py:325
#: documents/models.py:338
msgid "group"
msgstr "Gruppe"
#: documents/models.py:327
#: documents/models.py:340
msgid "message"
msgstr "Nachricht"
#: documents/models.py:330
#: documents/models.py:343
msgid "level"
msgstr "Level"
#: documents/models.py:339
#: documents/models.py:352
msgid "log"
msgstr "Protokoll"
#: documents/models.py:340
#: documents/models.py:353
msgid "logs"
msgstr "Protokoll"
#: documents/models.py:350 documents/models.py:403
#: documents/models.py:363 documents/models.py:419
msgid "saved view"
msgstr "Gespeicherte Ansicht"
#: documents/models.py:351
#: documents/models.py:364
msgid "saved views"
msgstr "Gespeicherte Ansichten"
#: documents/models.py:353
#: documents/models.py:366 documents/models.py:637
msgid "user"
msgstr "Benutzer"
#: documents/models.py:357
#: documents/models.py:370
msgid "show on dashboard"
msgstr "Auf Startseite zeigen"
#: documents/models.py:360
#: documents/models.py:373
msgid "show in sidebar"
msgstr "In Seitenleiste zeigen"
#: documents/models.py:364
#: documents/models.py:377
msgid "sort field"
msgstr "Sortierfeld"
#: documents/models.py:369
#: documents/models.py:382
msgid "sort reverse"
msgstr "Umgekehrte Sortierung"
#: documents/models.py:374
#: documents/models.py:387
msgid "title contains"
msgstr "Titel enthält"
#: documents/models.py:375
#: documents/models.py:388
msgid "content contains"
msgstr "Inhalt enthält"
#: documents/models.py:376
#: documents/models.py:389
msgid "ASN is"
msgstr "ASN ist"
#: documents/models.py:377
#: documents/models.py:390
msgid "correspondent is"
msgstr "Korrespondent ist"
#: documents/models.py:378
#: documents/models.py:391
msgid "document type is"
msgstr "Dokumenttyp ist"
#: documents/models.py:379
#: documents/models.py:392
msgid "is in inbox"
msgstr "Ist im Posteingang"
#: documents/models.py:380
#: documents/models.py:393
msgid "has tag"
msgstr "Hat Tag"
#: documents/models.py:381
#: documents/models.py:394
msgid "has any tag"
msgstr "Hat irgendein Tag"
#: documents/models.py:382
#: documents/models.py:395
msgid "created before"
msgstr "Ausgestellt vor"
#: documents/models.py:383
#: documents/models.py:396
msgid "created after"
msgstr "Ausgestellt nach"
#: documents/models.py:384
#: documents/models.py:397
msgid "created year is"
msgstr "Ausgestellt im Jahr"
#: documents/models.py:385
#: documents/models.py:398
msgid "created month is"
msgstr "Ausgestellt im Monat"
#: documents/models.py:386
#: documents/models.py:399
msgid "created day is"
msgstr "Ausgestellt am Tag"
#: documents/models.py:387
#: documents/models.py:400
msgid "added before"
msgstr "Hinzugefügt vor"
#: documents/models.py:388
#: documents/models.py:401
msgid "added after"
msgstr "Hinzugefügt nach"
#: documents/models.py:389
#: documents/models.py:402
msgid "modified before"
msgstr "Geändert vor"
#: documents/models.py:390
#: documents/models.py:403
msgid "modified after"
msgstr "Geändert nach"
#: documents/models.py:391
#: documents/models.py:404
msgid "does not have tag"
msgstr "Hat nicht folgendes Tag"
#: documents/models.py:392
#: documents/models.py:405
msgid "does not have ASN"
msgstr "Dokument hat keine ASN"
#: documents/models.py:393
#: documents/models.py:406
msgid "title or content contains"
msgstr "Titel oder Inhalt enthält"
#: documents/models.py:394
#: documents/models.py:407
msgid "fulltext query"
msgstr "Volltextsuche"
#: documents/models.py:395
#: documents/models.py:408
msgid "more like this"
msgstr "Ähnliche Dokumente"
#: documents/models.py:396
#: documents/models.py:409
msgid "has tags in"
msgstr "hat Tags in"
#: documents/models.py:406
#: documents/models.py:410
msgid "ASN greater than"
msgstr "ASN größer als"
#: documents/models.py:411
msgid "ASN less than"
msgstr "ASN kleiner als"
#: documents/models.py:412
msgid "storage path is"
msgstr "Speicherpfad ist"
#: documents/models.py:422
msgid "rule type"
msgstr "Regeltyp"
#: documents/models.py:408
#: documents/models.py:424
msgid "value"
msgstr "Wert"
#: documents/models.py:411
#: documents/models.py:427
msgid "filter rule"
msgstr "Filterregel"
#: documents/models.py:412
#: documents/models.py:428
msgid "filter rules"
msgstr "Filterregeln"
#: documents/models.py:521
msgid "started"
msgstr "gestartet"
#: documents/models.py:536
msgid "Task ID"
msgstr "Aufgaben ID"
#: documents/serialisers.py:70
#: documents/models.py:537
msgid "Celery ID for the Task that was run"
msgstr "Celery-ID für die ausgeführte Aufgabe"
#: documents/models.py:542
msgid "Acknowledged"
msgstr "Bestätigt"
#: documents/models.py:543
msgid "If the task is acknowledged via the frontend or API"
msgstr "Wenn die Aufgabe über das Frontend oder die API bestätigt wird"
#: documents/models.py:549 documents/models.py:556
msgid "Task Name"
msgstr "Aufgabenname"
#: documents/models.py:550
msgid "Name of the file which the Task was run for"
msgstr "Name der Datei, für die die Aufgabe ausgeführt wurde"
#: documents/models.py:557
msgid "Name of the Task which was run"
msgstr "Name der ausgeführten Aufgabe"
#: documents/models.py:562
msgid "Task Positional Arguments"
msgstr "Aufgabe: Positionsargumente"
#: documents/models.py:564
msgid "JSON representation of the positional arguments used with the task"
msgstr "JSON-Darstellung der Positionsargumente, die für die Aufgabe verwendet werden"
#: documents/models.py:569
msgid "Task Named Arguments"
msgstr "Aufgabe: Benannte Argumente"
#: documents/models.py:571
msgid "JSON representation of the named arguments used with the task"
msgstr "JSON-Darstellung der benannten Argumente, die für die Aufgabe verwendet werden"
#: documents/models.py:578
msgid "Task State"
msgstr "Aufgabe: Status"
#: documents/models.py:579
msgid "Current state of the task being run"
msgstr "Aktueller Status der laufenden Aufgabe"
#: documents/models.py:584
msgid "Created DateTime"
msgstr "Erstellungsdatum/-zeit"
#: documents/models.py:585
msgid "Datetime field when the task result was created in UTC"
msgstr "Zeitpunkt, an dem das Ergebnis der Aufgabe erstellt wurde (in UTC)"
#: documents/models.py:590
msgid "Started DateTime"
msgstr "Startzeitpunk"
#: documents/models.py:591
msgid "Datetime field when the task was started in UTC"
msgstr "Zeitpunkt, als die Aufgabe erstellt wurde (in UTC)"
#: documents/models.py:596
msgid "Completed DateTime"
msgstr "Abgeschlossen Zeitpunkt"
#: documents/models.py:597
msgid "Datetime field when the task was completed in UTC"
msgstr "Zeitpunkt, an dem die Aufgabe abgeschlossen wurde (in UTC)"
#: documents/models.py:602
msgid "Result Data"
msgstr "Ergebnisse"
#: documents/models.py:604
msgid "The data returned by the task"
msgstr "Die von der Aufgabe zurückgegebenen Daten"
#: documents/models.py:613
msgid "Comment for the document"
msgstr "Kommentar zu diesem Dokument"
#: documents/models.py:642
msgid "comment"
msgstr "Kommentar"
#: documents/models.py:643
msgid "comments"
msgstr "Kommentare"
#: documents/serialisers.py:72
#, python-format
msgid "Invalid regular expression: %(error)s"
msgstr "Ungültiger regulärer Ausdruck: %(error)s"
#: documents/serialisers.py:191
#: documents/serialisers.py:193
msgid "Invalid color."
msgstr "Ungültige Farbe."
#: documents/serialisers.py:515
#: documents/serialisers.py:518
#, python-format
msgid "File type %(type)s not supported"
msgstr "Dateityp %(type)s nicht unterstützt"
#: documents/serialisers.py:596
#: documents/serialisers.py:599
msgid "Invalid variable detected."
msgstr "Ungültige Variable entdeckt."
@@ -444,87 +556,87 @@ msgstr "Kennwort"
msgid "Sign in"
msgstr "Anmelden"
#: paperless/settings.py:339
#: paperless/settings.py:378
msgid "English (US)"
msgstr "Englisch (US)"
#: paperless/settings.py:340
#: paperless/settings.py:379
msgid "Belarusian"
msgstr "Belarussisch"
#: paperless/settings.py:341
#: paperless/settings.py:380
msgid "Czech"
msgstr "Tschechisch"
#: paperless/settings.py:342
#: paperless/settings.py:381
msgid "Danish"
msgstr "Dänisch"
#: paperless/settings.py:343
#: paperless/settings.py:382
msgid "German"
msgstr "Deutsch"
#: paperless/settings.py:344
#: paperless/settings.py:383
msgid "English (GB)"
msgstr "Englisch (UK)"
#: paperless/settings.py:345
#: paperless/settings.py:384
msgid "Spanish"
msgstr "Spanisch"
#: paperless/settings.py:346
#: paperless/settings.py:385
msgid "French"
msgstr "Französisch"
#: paperless/settings.py:347
#: paperless/settings.py:386
msgid "Italian"
msgstr "Italienisch"
#: paperless/settings.py:348
#: paperless/settings.py:387
msgid "Luxembourgish"
msgstr "Luxemburgisch"
#: paperless/settings.py:349
#: paperless/settings.py:388
msgid "Dutch"
msgstr "Niederländisch"
#: paperless/settings.py:350
#: paperless/settings.py:389
msgid "Polish"
msgstr "Polnisch"
#: paperless/settings.py:351
#: paperless/settings.py:390
msgid "Portuguese (Brazil)"
msgstr "Portugiesisch (Brasilien)"
#: paperless/settings.py:352
#: paperless/settings.py:391
msgid "Portuguese"
msgstr "Portugiesisch"
#: paperless/settings.py:353
#: paperless/settings.py:392
msgid "Romanian"
msgstr "Rumänisch"
#: paperless/settings.py:354
#: paperless/settings.py:393
msgid "Russian"
msgstr "Russisch"
#: paperless/settings.py:355
#: paperless/settings.py:394
msgid "Slovenian"
msgstr "Slowenisch"
#: paperless/settings.py:356
#: paperless/settings.py:395
msgid "Serbian"
msgstr "Serbisch"
#: paperless/settings.py:357
#: paperless/settings.py:396
msgid "Swedish"
msgstr "Schwedisch"
#: paperless/settings.py:358
#: paperless/settings.py:397
msgid "Turkish"
msgstr "Türkisch"
#: paperless/settings.py:359
#: paperless/settings.py:398
msgid "Chinese Simplified"
msgstr "Vereinfachtes Chinesisch"

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-07-08 14:11-0700\n"
"PO-Revision-Date: 2022-07-08 22:07\n"
"POT-Creation-Date: 2022-11-09 21:50+0000\n"
"PO-Revision-Date: 2022-11-09 23:11\n"
"Last-Translator: \n"
"Language-Team: Spanish\n"
"Language: es_ES\n"
@@ -21,378 +21,490 @@ msgstr ""
msgid "Documents"
msgstr "Documentos"
#: documents/models.py:29
#: documents/models.py:32
msgid "Any word"
msgstr "Cualquier palabra"
#: documents/models.py:30
#: documents/models.py:33
msgid "All words"
msgstr "Todas las palabras"
#: documents/models.py:31
#: documents/models.py:34
msgid "Exact match"
msgstr "Coincidencia exacta"
#: documents/models.py:32
#: documents/models.py:35
msgid "Regular expression"
msgstr "Expresión regular"
#: documents/models.py:33
#: documents/models.py:36
msgid "Fuzzy word"
msgstr "Palabra borrosa"
#: documents/models.py:34
#: documents/models.py:37
msgid "Automatic"
msgstr "Automático"
#: documents/models.py:37 documents/models.py:354 paperless_mail/models.py:16
#: documents/models.py:40 documents/models.py:367 paperless_mail/models.py:16
#: paperless_mail/models.py:80
msgid "name"
msgstr "nombre"
#: documents/models.py:39
#: documents/models.py:42
msgid "match"
msgstr "coincidencia"
#: documents/models.py:42
#: documents/models.py:45
msgid "matching algorithm"
msgstr "Algoritmo de coincidencia"
#: documents/models.py:47
#: documents/models.py:50
msgid "is insensitive"
msgstr "es insensible"
#: documents/models.py:60 documents/models.py:115
#: documents/models.py:63 documents/models.py:118
msgid "correspondent"
msgstr "interlocutor"
#: documents/models.py:61
#: documents/models.py:64
msgid "correspondents"
msgstr "interlocutores"
#: documents/models.py:66
#: documents/models.py:69
msgid "color"
msgstr "color"
#: documents/models.py:69
#: documents/models.py:72
msgid "is inbox tag"
msgstr "es etiqueta de bandeja"
#: documents/models.py:72
#: documents/models.py:75
msgid "Marks this tag as an inbox tag: All newly consumed documents will be tagged with inbox tags."
msgstr "Marca esta etiqueta como una etiqueta de bandeja: todos los documentos recién consumidos serán etiquetados con las etiquetas de bandeja."
#: documents/models.py:78
#: documents/models.py:81
msgid "tag"
msgstr "etiqueta"
#: documents/models.py:79 documents/models.py:153
#: documents/models.py:82 documents/models.py:156
msgid "tags"
msgstr "etiquetas"
#: documents/models.py:84 documents/models.py:135
#: documents/models.py:87 documents/models.py:138
msgid "document type"
msgstr "tipo de documento"
#: documents/models.py:85
#: documents/models.py:88
msgid "document types"
msgstr "tipos de documento"
#: documents/models.py:90
#: documents/models.py:93
msgid "path"
msgstr "ruta"
#: documents/models.py:96 documents/models.py:124
#: documents/models.py:99 documents/models.py:127
msgid "storage path"
msgstr "ruta de almacenamiento"
#: documents/models.py:97
#: documents/models.py:100
msgid "storage paths"
msgstr "rutas de almacenamiento"
#: documents/models.py:105
#: documents/models.py:108
msgid "Unencrypted"
msgstr "Sin cifrar"
#: documents/models.py:106
#: documents/models.py:109
msgid "Encrypted with GNU Privacy Guard"
msgstr "Cifrado con GNU Privacy Guard"
#: documents/models.py:127
#: documents/models.py:130
msgid "title"
msgstr "título"
#: documents/models.py:139
#: documents/models.py:142 documents/models.py:611
msgid "content"
msgstr "contenido"
#: documents/models.py:142
#: documents/models.py:145
msgid "The raw, text-only data of the document. This field is primarily used for searching."
msgstr "Los datos de texto en bruto del documento. Este campo se utiliza principalmente para las búsquedas."
#: documents/models.py:147
#: documents/models.py:150
msgid "mime type"
msgstr "tipo MIME"
#: documents/models.py:157
#: documents/models.py:160
msgid "checksum"
msgstr "Cadena de verificación"
#: documents/models.py:161
#: documents/models.py:164
msgid "The checksum of the original document."
msgstr "La cadena de verificación del documento original."
#: documents/models.py:165
#: documents/models.py:168
msgid "archive checksum"
msgstr "cadena de comprobación del archivo"
#: documents/models.py:170
#: documents/models.py:173
msgid "The checksum of the archived document."
msgstr "La cadena de verificación del documento archivado."
#: documents/models.py:173 documents/models.py:335 documents/models.py:520
#: documents/models.py:176 documents/models.py:348 documents/models.py:617
msgid "created"
msgstr "creado"
#: documents/models.py:176
#: documents/models.py:179
msgid "modified"
msgstr "modificado"
#: documents/models.py:183
#: documents/models.py:186
msgid "storage type"
msgstr "tipo de almacenamiento"
#: documents/models.py:191
#: documents/models.py:194
msgid "added"
msgstr "añadido"
#: documents/models.py:198
#: documents/models.py:201
msgid "filename"
msgstr "nombre del archivo"
#: documents/models.py:204
#: documents/models.py:207
msgid "Current filename in storage"
msgstr "Nombre de archivo actual en disco"
#: documents/models.py:208
#: documents/models.py:211
msgid "archive filename"
msgstr "nombre de archivo"
#: documents/models.py:214
#: documents/models.py:217
msgid "Current archive filename in storage"
msgstr "Nombre de archivo actual en disco"
#: documents/models.py:218
#: documents/models.py:221
msgid "original filename"
msgstr ""
#: documents/models.py:227
msgid "The original name of the file when it was uploaded"
msgstr ""
#: documents/models.py:231
msgid "archive serial number"
msgstr "número de serie del archivo"
#: documents/models.py:224
#: documents/models.py:237
msgid "The position of this document in your physical document archive."
msgstr "Posición de este documento en tu archivo físico de documentos."
#: documents/models.py:230
#: documents/models.py:243 documents/models.py:628
msgid "document"
msgstr "documento"
#: documents/models.py:231
#: documents/models.py:244
msgid "documents"
msgstr "documentos"
#: documents/models.py:318
#: documents/models.py:331
msgid "debug"
msgstr "depuración"
#: documents/models.py:319
#: documents/models.py:332
msgid "information"
msgstr "información"
#: documents/models.py:320
#: documents/models.py:333
msgid "warning"
msgstr "alerta"
#: documents/models.py:321
#: documents/models.py:334
msgid "error"
msgstr "error"
#: documents/models.py:322
#: documents/models.py:335
msgid "critical"
msgstr "crítico"
#: documents/models.py:325
#: documents/models.py:338
msgid "group"
msgstr "grupo"
#: documents/models.py:327
#: documents/models.py:340
msgid "message"
msgstr "mensaje"
#: documents/models.py:330
#: documents/models.py:343
msgid "level"
msgstr "nivel"
#: documents/models.py:339
#: documents/models.py:352
msgid "log"
msgstr "log"
#: documents/models.py:340
#: documents/models.py:353
msgid "logs"
msgstr "logs"
#: documents/models.py:350 documents/models.py:403
#: documents/models.py:363 documents/models.py:419
msgid "saved view"
msgstr "vista guardada"
#: documents/models.py:351
#: documents/models.py:364
msgid "saved views"
msgstr "vistas guardadas"
#: documents/models.py:353
#: documents/models.py:366 documents/models.py:637
msgid "user"
msgstr "usuario"
#: documents/models.py:357
#: documents/models.py:370
msgid "show on dashboard"
msgstr "mostrar en el panel de control"
#: documents/models.py:360
#: documents/models.py:373
msgid "show in sidebar"
msgstr "mostrar en barra lateral"
#: documents/models.py:364
#: documents/models.py:377
msgid "sort field"
msgstr "campo de ordenación"
#: documents/models.py:369
#: documents/models.py:382
msgid "sort reverse"
msgstr "ordenar al revés"
#: documents/models.py:374
#: documents/models.py:387
msgid "title contains"
msgstr "el título contiene"
#: documents/models.py:375
#: documents/models.py:388
msgid "content contains"
msgstr "el contenido contiene"
#: documents/models.py:376
#: documents/models.py:389
msgid "ASN is"
msgstr "ASN es"
#: documents/models.py:377
#: documents/models.py:390
msgid "correspondent is"
msgstr "interlocutor es"
#: documents/models.py:378
#: documents/models.py:391
msgid "document type is"
msgstr "el tipo de documento es"
#: documents/models.py:379
#: documents/models.py:392
msgid "is in inbox"
msgstr "está en la bandeja de entrada"
#: documents/models.py:380
#: documents/models.py:393
msgid "has tag"
msgstr "tiene la etiqueta"
#: documents/models.py:381
#: documents/models.py:394
msgid "has any tag"
msgstr "tiene cualquier etiqueta"
#: documents/models.py:382
#: documents/models.py:395
msgid "created before"
msgstr "creado antes"
#: documents/models.py:383
#: documents/models.py:396
msgid "created after"
msgstr "creado después"
#: documents/models.py:384
#: documents/models.py:397
msgid "created year is"
msgstr "el año de creación es"
#: documents/models.py:385
#: documents/models.py:398
msgid "created month is"
msgstr "el mes de creación es"
#: documents/models.py:386
#: documents/models.py:399
msgid "created day is"
msgstr "creado el día"
#: documents/models.py:387
#: documents/models.py:400
msgid "added before"
msgstr "agregado antes de"
#: documents/models.py:388
#: documents/models.py:401
msgid "added after"
msgstr "agregado después de"
#: documents/models.py:389
#: documents/models.py:402
msgid "modified before"
msgstr "modificado después de"
#: documents/models.py:390
#: documents/models.py:403
msgid "modified after"
msgstr "modificado antes de"
#: documents/models.py:391
#: documents/models.py:404
msgid "does not have tag"
msgstr "no tiene la etiqueta"
#: documents/models.py:392
#: documents/models.py:405
msgid "does not have ASN"
msgstr "no tiene ASN"
#: documents/models.py:393
#: documents/models.py:406
msgid "title or content contains"
msgstr "el título o cuerpo contiene"
#: documents/models.py:394
#: documents/models.py:407
msgid "fulltext query"
msgstr "consulta de texto completo"
#: documents/models.py:395
#: documents/models.py:408
msgid "more like this"
msgstr "más contenido similar"
#: documents/models.py:396
#: documents/models.py:409
msgid "has tags in"
msgstr "tiene etiquetas en"
#: documents/models.py:406
#: documents/models.py:410
msgid "ASN greater than"
msgstr ""
#: documents/models.py:411
msgid "ASN less than"
msgstr ""
#: documents/models.py:412
msgid "storage path is"
msgstr ""
#: documents/models.py:422
msgid "rule type"
msgstr "tipo de regla"
#: documents/models.py:408
#: documents/models.py:424
msgid "value"
msgstr "valor"
#: documents/models.py:411
#: documents/models.py:427
msgid "filter rule"
msgstr "regla de filtrado"
#: documents/models.py:412
#: documents/models.py:428
msgid "filter rules"
msgstr "reglas de filtrado"
#: documents/models.py:521
msgid "started"
#: documents/models.py:536
msgid "Task ID"
msgstr ""
#: documents/serialisers.py:70
#: documents/models.py:537
msgid "Celery ID for the Task that was run"
msgstr ""
#: documents/models.py:542
msgid "Acknowledged"
msgstr ""
#: documents/models.py:543
msgid "If the task is acknowledged via the frontend or API"
msgstr ""
#: documents/models.py:549 documents/models.py:556
msgid "Task Name"
msgstr ""
#: documents/models.py:550
msgid "Name of the file which the Task was run for"
msgstr ""
#: documents/models.py:557
msgid "Name of the Task which was run"
msgstr ""
#: documents/models.py:562
msgid "Task Positional Arguments"
msgstr ""
#: documents/models.py:564
msgid "JSON representation of the positional arguments used with the task"
msgstr ""
#: documents/models.py:569
msgid "Task Named Arguments"
msgstr ""
#: documents/models.py:571
msgid "JSON representation of the named arguments used with the task"
msgstr ""
#: documents/models.py:578
msgid "Task State"
msgstr ""
#: documents/models.py:579
msgid "Current state of the task being run"
msgstr ""
#: documents/models.py:584
msgid "Created DateTime"
msgstr ""
#: documents/models.py:585
msgid "Datetime field when the task result was created in UTC"
msgstr ""
#: documents/models.py:590
msgid "Started DateTime"
msgstr ""
#: documents/models.py:591
msgid "Datetime field when the task was started in UTC"
msgstr ""
#: documents/models.py:596
msgid "Completed DateTime"
msgstr ""
#: documents/models.py:597
msgid "Datetime field when the task was completed in UTC"
msgstr ""
#: documents/models.py:602
msgid "Result Data"
msgstr ""
#: documents/models.py:604
msgid "The data returned by the task"
msgstr ""
#: documents/models.py:613
msgid "Comment for the document"
msgstr ""
#: documents/models.py:642
msgid "comment"
msgstr ""
#: documents/models.py:643
msgid "comments"
msgstr ""
#: documents/serialisers.py:72
#, python-format
msgid "Invalid regular expression: %(error)s"
msgstr "Expresión irregular inválida: %(error)s"
#: documents/serialisers.py:191
#: documents/serialisers.py:193
msgid "Invalid color."
msgstr "Color inválido."
#: documents/serialisers.py:515
#: documents/serialisers.py:518
#, python-format
msgid "File type %(type)s not supported"
msgstr "Tipo de fichero %(type)s no suportado"
#: documents/serialisers.py:596
#: documents/serialisers.py:599
msgid "Invalid variable detected."
msgstr "Variable inválida."
@@ -444,87 +556,87 @@ msgstr "Contraseña"
msgid "Sign in"
msgstr "Iniciar sesión"
#: paperless/settings.py:339
#: paperless/settings.py:378
msgid "English (US)"
msgstr "Inglés (US)"
#: paperless/settings.py:340
#: paperless/settings.py:379
msgid "Belarusian"
msgstr "Bielorruso"
#: paperless/settings.py:341
#: paperless/settings.py:380
msgid "Czech"
msgstr "Checo"
#: paperless/settings.py:342
#: paperless/settings.py:381
msgid "Danish"
msgstr "Danés"
#: paperless/settings.py:343
#: paperless/settings.py:382
msgid "German"
msgstr "Alemán"
#: paperless/settings.py:344
#: paperless/settings.py:383
msgid "English (GB)"
msgstr "Inglés (Gran Bretaña)"
#: paperless/settings.py:345
#: paperless/settings.py:384
msgid "Spanish"
msgstr "Español"
#: paperless/settings.py:346
#: paperless/settings.py:385
msgid "French"
msgstr "Francés"
#: paperless/settings.py:347
#: paperless/settings.py:386
msgid "Italian"
msgstr "Italiano"
#: paperless/settings.py:348
#: paperless/settings.py:387
msgid "Luxembourgish"
msgstr "Luxemburgués"
#: paperless/settings.py:349
#: paperless/settings.py:388
msgid "Dutch"
msgstr "Alemán"
#: paperless/settings.py:350
#: paperless/settings.py:389
msgid "Polish"
msgstr "Polaco"
#: paperless/settings.py:351
#: paperless/settings.py:390
msgid "Portuguese (Brazil)"
msgstr "Portugués (Brasil)"
#: paperless/settings.py:352
#: paperless/settings.py:391
msgid "Portuguese"
msgstr "Portugués"
#: paperless/settings.py:353
#: paperless/settings.py:392
msgid "Romanian"
msgstr "Rumano"
#: paperless/settings.py:354
#: paperless/settings.py:393
msgid "Russian"
msgstr "Ruso"
#: paperless/settings.py:355
#: paperless/settings.py:394
msgid "Slovenian"
msgstr "Esloveno"
#: paperless/settings.py:356
#: paperless/settings.py:395
msgid "Serbian"
msgstr "Serbio"
#: paperless/settings.py:357
#: paperless/settings.py:396
msgid "Swedish"
msgstr "Sueco"
#: paperless/settings.py:358
#: paperless/settings.py:397
msgid "Turkish"
msgstr "Turco"
#: paperless/settings.py:359
#: paperless/settings.py:398
msgid "Chinese Simplified"
msgstr "Chino simplificado"

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-07-08 14:11-0700\n"
"PO-Revision-Date: 2022-09-06 20:21\n"
"POT-Creation-Date: 2022-11-09 21:50+0000\n"
"PO-Revision-Date: 2022-11-09 23:11\n"
"Last-Translator: \n"
"Language-Team: Finnish\n"
"Language: fi_FI\n"
@@ -21,378 +21,490 @@ msgstr ""
msgid "Documents"
msgstr "Dokumentit"
#: documents/models.py:29
#: documents/models.py:32
msgid "Any word"
msgstr "Mikä tahansa sana"
#: documents/models.py:30
#: documents/models.py:33
msgid "All words"
msgstr "Kaikki sanat"
#: documents/models.py:31
#: documents/models.py:34
msgid "Exact match"
msgstr "Tarkka osuma"
#: documents/models.py:32
#: documents/models.py:35
msgid "Regular expression"
msgstr "Säännöllinen lauseke (regex)"
#: documents/models.py:33
#: documents/models.py:36
msgid "Fuzzy word"
msgstr "Sumea sana"
#: documents/models.py:34
#: documents/models.py:37
msgid "Automatic"
msgstr "Automaattinen"
#: documents/models.py:37 documents/models.py:354 paperless_mail/models.py:16
#: documents/models.py:40 documents/models.py:367 paperless_mail/models.py:16
#: paperless_mail/models.py:80
msgid "name"
msgstr "nimi"
#: documents/models.py:39
#: documents/models.py:42
msgid "match"
msgstr "osuma"
#: documents/models.py:42
#: documents/models.py:45
msgid "matching algorithm"
msgstr "tunnistusalgoritmi"
#: documents/models.py:47
#: documents/models.py:50
msgid "is insensitive"
msgstr "ei ole herkkä"
#: documents/models.py:60 documents/models.py:115
#: documents/models.py:63 documents/models.py:118
msgid "correspondent"
msgstr "yhteyshenkilö"
#: documents/models.py:61
#: documents/models.py:64
msgid "correspondents"
msgstr "yhteyshenkilöt"
#: documents/models.py:66
#: documents/models.py:69
msgid "color"
msgstr "väri"
#: documents/models.py:69
#: documents/models.py:72
msgid "is inbox tag"
msgstr "on uusien tunniste"
#: documents/models.py:72
#: documents/models.py:75
msgid "Marks this tag as an inbox tag: All newly consumed documents will be tagged with inbox tags."
msgstr "Merkitsee tämän tunnisteen uusien tunnisteeksi: Kaikille vastasyötetyille tiedostoille annetaan tämä tunniste."
#: documents/models.py:78
#: documents/models.py:81
msgid "tag"
msgstr "tunniste"
#: documents/models.py:79 documents/models.py:153
#: documents/models.py:82 documents/models.py:156
msgid "tags"
msgstr "tunnisteet"
#: documents/models.py:84 documents/models.py:135
#: documents/models.py:87 documents/models.py:138
msgid "document type"
msgstr "asiakirjatyyppi"
#: documents/models.py:85
#: documents/models.py:88
msgid "document types"
msgstr "asiakirjatyypit"
#: documents/models.py:90
#: documents/models.py:93
msgid "path"
msgstr "polku"
#: documents/models.py:96 documents/models.py:124
#: documents/models.py:99 documents/models.py:127
msgid "storage path"
msgstr "tallennustilan polku"
#: documents/models.py:97
#: documents/models.py:100
msgid "storage paths"
msgstr "tallennustilan polut"
#: documents/models.py:105
#: documents/models.py:108
msgid "Unencrypted"
msgstr "Salaamaton"
#: documents/models.py:106
#: documents/models.py:109
msgid "Encrypted with GNU Privacy Guard"
msgstr "GNU Privacy Guard -salattu"
#: documents/models.py:127
#: documents/models.py:130
msgid "title"
msgstr "otsikko"
#: documents/models.py:139
#: documents/models.py:142 documents/models.py:611
msgid "content"
msgstr "sisältö"
#: documents/models.py:142
#: documents/models.py:145
msgid "The raw, text-only data of the document. This field is primarily used for searching."
msgstr "Raaka vain teksti -muotoinen dokumentin sisältö. Kenttää käytetään pääasiassa hakutoiminnossa."
#: documents/models.py:147
#: documents/models.py:150
msgid "mime type"
msgstr "mime-tyyppi"
#: documents/models.py:157
#: documents/models.py:160
msgid "checksum"
msgstr "tarkistussumma"
#: documents/models.py:161
#: documents/models.py:164
msgid "The checksum of the original document."
msgstr "Alkuperäisen dokumentin tarkistussumma."
#: documents/models.py:165
#: documents/models.py:168
msgid "archive checksum"
msgstr "arkistotarkastussumma"
#: documents/models.py:170
#: documents/models.py:173
msgid "The checksum of the archived document."
msgstr "Arkistoidun dokumentin tarkistussumma."
#: documents/models.py:173 documents/models.py:335 documents/models.py:520
#: documents/models.py:176 documents/models.py:348 documents/models.py:617
msgid "created"
msgstr "luotu"
#: documents/models.py:176
#: documents/models.py:179
msgid "modified"
msgstr "muokattu"
#: documents/models.py:183
#: documents/models.py:186
msgid "storage type"
msgstr "tallennustilan tyyppi"
#: documents/models.py:191
#: documents/models.py:194
msgid "added"
msgstr "lisätty"
#: documents/models.py:198
#: documents/models.py:201
msgid "filename"
msgstr "tiedostonimi"
#: documents/models.py:204
#: documents/models.py:207
msgid "Current filename in storage"
msgstr "Tiedostonimi tallennustilassa"
#: documents/models.py:208
#: documents/models.py:211
msgid "archive filename"
msgstr "arkistointitiedostonimi"
#: documents/models.py:214
#: documents/models.py:217
msgid "Current archive filename in storage"
msgstr "Tämänhetkinen arkistointitiedostoimi tallennustilassa"
#: documents/models.py:218
#: documents/models.py:221
msgid "original filename"
msgstr ""
#: documents/models.py:227
msgid "The original name of the file when it was uploaded"
msgstr ""
#: documents/models.py:231
msgid "archive serial number"
msgstr "arkistointisarjanumero"
#: documents/models.py:224
#: documents/models.py:237
msgid "The position of this document in your physical document archive."
msgstr "Dokumentin sijainti fyysisessa dokumenttiarkistossa."
#: documents/models.py:230
#: documents/models.py:243 documents/models.py:628
msgid "document"
msgstr "dokumentti"
#: documents/models.py:231
#: documents/models.py:244
msgid "documents"
msgstr "dokumentit"
#: documents/models.py:318
#: documents/models.py:331
msgid "debug"
msgstr "virheenjäljitys"
#: documents/models.py:319
#: documents/models.py:332
msgid "information"
msgstr "informaatio"
#: documents/models.py:320
#: documents/models.py:333
msgid "warning"
msgstr "varoitus"
#: documents/models.py:321
#: documents/models.py:334
msgid "error"
msgstr "virhe"
#: documents/models.py:322
#: documents/models.py:335
msgid "critical"
msgstr "kriittinen"
#: documents/models.py:325
#: documents/models.py:338
msgid "group"
msgstr "ryhmä"
#: documents/models.py:327
#: documents/models.py:340
msgid "message"
msgstr "viesti"
#: documents/models.py:330
#: documents/models.py:343
msgid "level"
msgstr "taso"
#: documents/models.py:339
#: documents/models.py:352
msgid "log"
msgstr "loki"
#: documents/models.py:340
#: documents/models.py:353
msgid "logs"
msgstr "lokit"
#: documents/models.py:350 documents/models.py:403
#: documents/models.py:363 documents/models.py:419
msgid "saved view"
msgstr "tallennettu näkymä"
#: documents/models.py:351
#: documents/models.py:364
msgid "saved views"
msgstr "tallennetut näkymät"
#: documents/models.py:353
#: documents/models.py:366 documents/models.py:637
msgid "user"
msgstr "käyttäjä"
#: documents/models.py:357
#: documents/models.py:370
msgid "show on dashboard"
msgstr "näytä etusivulla"
#: documents/models.py:360
#: documents/models.py:373
msgid "show in sidebar"
msgstr "näytä sivupaneelissa"
#: documents/models.py:364
#: documents/models.py:377
msgid "sort field"
msgstr "lajittelukenttä"
#: documents/models.py:369
#: documents/models.py:382
msgid "sort reverse"
msgstr "lajittele käänteisesti"
#: documents/models.py:374
#: documents/models.py:387
msgid "title contains"
msgstr "otsikko sisältää"
#: documents/models.py:375
#: documents/models.py:388
msgid "content contains"
msgstr "sisältö sisältää"
#: documents/models.py:376
#: documents/models.py:389
msgid "ASN is"
msgstr "ASN on"
#: documents/models.py:377
#: documents/models.py:390
msgid "correspondent is"
msgstr "yhteyshenkilö on"
#: documents/models.py:378
#: documents/models.py:391
msgid "document type is"
msgstr "dokumenttityyppi on"
#: documents/models.py:379
#: documents/models.py:392
msgid "is in inbox"
msgstr "on uusi"
#: documents/models.py:380
#: documents/models.py:393
msgid "has tag"
msgstr "on tagattu"
#: documents/models.py:381
#: documents/models.py:394
msgid "has any tag"
msgstr "on mikä tahansa tagi"
#: documents/models.py:382
#: documents/models.py:395
msgid "created before"
msgstr "luotu ennen"
#: documents/models.py:383
#: documents/models.py:396
msgid "created after"
msgstr "luotu jälkeen"
#: documents/models.py:384
#: documents/models.py:397
msgid "created year is"
msgstr "luotu vuonna"
#: documents/models.py:385
#: documents/models.py:398
msgid "created month is"
msgstr "luotu kuukautena"
#: documents/models.py:386
#: documents/models.py:399
msgid "created day is"
msgstr "luomispäivä on"
#: documents/models.py:387
#: documents/models.py:400
msgid "added before"
msgstr "lisätty ennen"
#: documents/models.py:388
#: documents/models.py:401
msgid "added after"
msgstr "lisätty jälkeen"
#: documents/models.py:389
#: documents/models.py:402
msgid "modified before"
msgstr "muokattu ennen"
#: documents/models.py:390
#: documents/models.py:403
msgid "modified after"
msgstr "muokattu jälkeen"
#: documents/models.py:391
#: documents/models.py:404
msgid "does not have tag"
msgstr "ei ole tagia"
#: documents/models.py:392
#: documents/models.py:405
msgid "does not have ASN"
msgstr "ei ole ASN-numeroa"
#: documents/models.py:393
#: documents/models.py:406
msgid "title or content contains"
msgstr "otsikko tai sisältö sisältää"
#: documents/models.py:394
#: documents/models.py:407
msgid "fulltext query"
msgstr "fulltext-kysely"
#: documents/models.py:395
#: documents/models.py:408
msgid "more like this"
msgstr "enemmän kuten tämä"
#: documents/models.py:396
#: documents/models.py:409
msgid "has tags in"
msgstr "sisältää tagit"
#: documents/models.py:406
#: documents/models.py:410
msgid "ASN greater than"
msgstr ""
#: documents/models.py:411
msgid "ASN less than"
msgstr ""
#: documents/models.py:412
msgid "storage path is"
msgstr ""
#: documents/models.py:422
msgid "rule type"
msgstr "sääntötyyppi"
#: documents/models.py:408
#: documents/models.py:424
msgid "value"
msgstr "arvo"
#: documents/models.py:411
#: documents/models.py:427
msgid "filter rule"
msgstr "suodatussääntö"
#: documents/models.py:412
#: documents/models.py:428
msgid "filter rules"
msgstr "suodatussäännöt"
#: documents/models.py:521
msgid "started"
msgstr "aloitettu"
#: documents/models.py:536
msgid "Task ID"
msgstr ""
#: documents/serialisers.py:70
#: documents/models.py:537
msgid "Celery ID for the Task that was run"
msgstr ""
#: documents/models.py:542
msgid "Acknowledged"
msgstr ""
#: documents/models.py:543
msgid "If the task is acknowledged via the frontend or API"
msgstr ""
#: documents/models.py:549 documents/models.py:556
msgid "Task Name"
msgstr ""
#: documents/models.py:550
msgid "Name of the file which the Task was run for"
msgstr ""
#: documents/models.py:557
msgid "Name of the Task which was run"
msgstr ""
#: documents/models.py:562
msgid "Task Positional Arguments"
msgstr ""
#: documents/models.py:564
msgid "JSON representation of the positional arguments used with the task"
msgstr ""
#: documents/models.py:569
msgid "Task Named Arguments"
msgstr ""
#: documents/models.py:571
msgid "JSON representation of the named arguments used with the task"
msgstr ""
#: documents/models.py:578
msgid "Task State"
msgstr ""
#: documents/models.py:579
msgid "Current state of the task being run"
msgstr ""
#: documents/models.py:584
msgid "Created DateTime"
msgstr ""
#: documents/models.py:585
msgid "Datetime field when the task result was created in UTC"
msgstr ""
#: documents/models.py:590
msgid "Started DateTime"
msgstr ""
#: documents/models.py:591
msgid "Datetime field when the task was started in UTC"
msgstr ""
#: documents/models.py:596
msgid "Completed DateTime"
msgstr ""
#: documents/models.py:597
msgid "Datetime field when the task was completed in UTC"
msgstr ""
#: documents/models.py:602
msgid "Result Data"
msgstr ""
#: documents/models.py:604
msgid "The data returned by the task"
msgstr ""
#: documents/models.py:613
msgid "Comment for the document"
msgstr ""
#: documents/models.py:642
msgid "comment"
msgstr ""
#: documents/models.py:643
msgid "comments"
msgstr ""
#: documents/serialisers.py:72
#, python-format
msgid "Invalid regular expression: %(error)s"
msgstr "Virheellinen regex-lauseke: %(error)s"
#: documents/serialisers.py:191
#: documents/serialisers.py:193
msgid "Invalid color."
msgstr "Virheellinen väri."
#: documents/serialisers.py:515
#: documents/serialisers.py:518
#, python-format
msgid "File type %(type)s not supported"
msgstr "Tiedostotyyppiä %(type)s ei tueta"
#: documents/serialisers.py:596
#: documents/serialisers.py:599
msgid "Invalid variable detected."
msgstr "Virheellinen muuttuja havaittu."
@@ -444,87 +556,87 @@ msgstr "Salasana"
msgid "Sign in"
msgstr "Kirjaudu sisään"
#: paperless/settings.py:339
#: paperless/settings.py:378
msgid "English (US)"
msgstr "Englanti (US)"
#: paperless/settings.py:340
#: paperless/settings.py:379
msgid "Belarusian"
msgstr "valkovenäjä"
#: paperless/settings.py:341
#: paperless/settings.py:380
msgid "Czech"
msgstr "Tšekki"
#: paperless/settings.py:342
#: paperless/settings.py:381
msgid "Danish"
msgstr "Tanska"
#: paperless/settings.py:343
#: paperless/settings.py:382
msgid "German"
msgstr "Saksa"
#: paperless/settings.py:344
#: paperless/settings.py:383
msgid "English (GB)"
msgstr "Englanti (US)"
#: paperless/settings.py:345
#: paperless/settings.py:384
msgid "Spanish"
msgstr "Espanja"
#: paperless/settings.py:346
#: paperless/settings.py:385
msgid "French"
msgstr "Ranska"
#: paperless/settings.py:347
#: paperless/settings.py:386
msgid "Italian"
msgstr "Italia"
#: paperless/settings.py:348
#: paperless/settings.py:387
msgid "Luxembourgish"
msgstr "Luxemburg"
#: paperless/settings.py:349
#: paperless/settings.py:388
msgid "Dutch"
msgstr "Hollanti"
#: paperless/settings.py:350
#: paperless/settings.py:389
msgid "Polish"
msgstr "puola"
#: paperless/settings.py:351
#: paperless/settings.py:390
msgid "Portuguese (Brazil)"
msgstr "portugali (Brasilia)"
#: paperless/settings.py:352
#: paperless/settings.py:391
msgid "Portuguese"
msgstr "portugali"
#: paperless/settings.py:353
#: paperless/settings.py:392
msgid "Romanian"
msgstr "romania"
#: paperless/settings.py:354
#: paperless/settings.py:393
msgid "Russian"
msgstr "venäjä"
#: paperless/settings.py:355
#: paperless/settings.py:394
msgid "Slovenian"
msgstr "Slovenia"
#: paperless/settings.py:356
#: paperless/settings.py:395
msgid "Serbian"
msgstr "Serbia"
#: paperless/settings.py:357
#: paperless/settings.py:396
msgid "Swedish"
msgstr "ruotsi"
#: paperless/settings.py:358
#: paperless/settings.py:397
msgid "Turkish"
msgstr "Turkki"
#: paperless/settings.py:359
#: paperless/settings.py:398
msgid "Chinese Simplified"
msgstr "Kiina (yksinkertaistettu)"

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-07-08 14:11-0700\n"
"PO-Revision-Date: 2022-09-07 21:41\n"
"POT-Creation-Date: 2022-11-09 21:50+0000\n"
"PO-Revision-Date: 2022-11-09 23:11\n"
"Last-Translator: \n"
"Language-Team: French\n"
"Language: fr_FR\n"
@@ -21,378 +21,490 @@ msgstr ""
msgid "Documents"
msgstr "Documents"
#: documents/models.py:29
#: documents/models.py:32
msgid "Any word"
msgstr "Un des mots"
#: documents/models.py:30
#: documents/models.py:33
msgid "All words"
msgstr "Tous les mots"
#: documents/models.py:31
#: documents/models.py:34
msgid "Exact match"
msgstr "Concordance exacte"
#: documents/models.py:32
#: documents/models.py:35
msgid "Regular expression"
msgstr "Expression régulière"
#: documents/models.py:33
#: documents/models.py:36
msgid "Fuzzy word"
msgstr "Mot approximatif"
#: documents/models.py:34
#: documents/models.py:37
msgid "Automatic"
msgstr "Automatique"
#: documents/models.py:37 documents/models.py:354 paperless_mail/models.py:16
#: documents/models.py:40 documents/models.py:367 paperless_mail/models.py:16
#: paperless_mail/models.py:80
msgid "name"
msgstr "nom"
#: documents/models.py:39
#: documents/models.py:42
msgid "match"
msgstr "rapprochement"
#: documents/models.py:42
#: documents/models.py:45
msgid "matching algorithm"
msgstr "algorithme de rapprochement"
#: documents/models.py:47
#: documents/models.py:50
msgid "is insensitive"
msgstr "est insensible à la casse"
#: documents/models.py:60 documents/models.py:115
#: documents/models.py:63 documents/models.py:118
msgid "correspondent"
msgstr "correspondant"
#: documents/models.py:61
#: documents/models.py:64
msgid "correspondents"
msgstr "correspondants"
#: documents/models.py:66
#: documents/models.py:69
msgid "color"
msgstr "couleur"
#: documents/models.py:69
#: documents/models.py:72
msgid "is inbox tag"
msgstr "est une étiquette de boîte de réception"
#: documents/models.py:72
#: documents/models.py:75
msgid "Marks this tag as an inbox tag: All newly consumed documents will be tagged with inbox tags."
msgstr "Marque cette étiquette comme étiquette de boîte de réception : ces étiquettes sont affectées à tous les documents nouvellement traités."
#: documents/models.py:78
#: documents/models.py:81
msgid "tag"
msgstr "étiquette"
#: documents/models.py:79 documents/models.py:153
#: documents/models.py:82 documents/models.py:156
msgid "tags"
msgstr "étiquettes"
#: documents/models.py:84 documents/models.py:135
#: documents/models.py:87 documents/models.py:138
msgid "document type"
msgstr "type de document"
#: documents/models.py:85
#: documents/models.py:88
msgid "document types"
msgstr "types de document"
#: documents/models.py:90
#: documents/models.py:93
msgid "path"
msgstr "chemin"
#: documents/models.py:96 documents/models.py:124
#: documents/models.py:99 documents/models.py:127
msgid "storage path"
msgstr "chemin de stockage"
#: documents/models.py:97
#: documents/models.py:100
msgid "storage paths"
msgstr "chemins de stockage"
#: documents/models.py:105
#: documents/models.py:108
msgid "Unencrypted"
msgstr "Non chiffré"
#: documents/models.py:106
#: documents/models.py:109
msgid "Encrypted with GNU Privacy Guard"
msgstr "Chiffré avec GNU Privacy Guard"
#: documents/models.py:127
#: documents/models.py:130
msgid "title"
msgstr "titre"
#: documents/models.py:139
#: documents/models.py:142 documents/models.py:611
msgid "content"
msgstr "contenu"
#: documents/models.py:142
#: documents/models.py:145
msgid "The raw, text-only data of the document. This field is primarily used for searching."
msgstr "Les données brutes du document, en format texte uniquement. Ce champ est principalement utilisé pour la recherche."
#: documents/models.py:147
#: documents/models.py:150
msgid "mime type"
msgstr "type mime"
#: documents/models.py:157
#: documents/models.py:160
msgid "checksum"
msgstr "somme de contrôle"
#: documents/models.py:161
#: documents/models.py:164
msgid "The checksum of the original document."
msgstr "La somme de contrôle du document original."
#: documents/models.py:165
#: documents/models.py:168
msgid "archive checksum"
msgstr "somme de contrôle de l'archive"
#: documents/models.py:170
#: documents/models.py:173
msgid "The checksum of the archived document."
msgstr "La somme de contrôle du document archivé."
#: documents/models.py:173 documents/models.py:335 documents/models.py:520
#: documents/models.py:176 documents/models.py:348 documents/models.py:617
msgid "created"
msgstr "créé le"
#: documents/models.py:176
#: documents/models.py:179
msgid "modified"
msgstr "modifié"
#: documents/models.py:183
#: documents/models.py:186
msgid "storage type"
msgstr "forme d'enregistrement :"
#: documents/models.py:191
#: documents/models.py:194
msgid "added"
msgstr "date d'ajout"
#: documents/models.py:198
#: documents/models.py:201
msgid "filename"
msgstr "nom du fichier"
#: documents/models.py:204
#: documents/models.py:207
msgid "Current filename in storage"
msgstr "Nom du fichier courant en base de données"
#: documents/models.py:208
#: documents/models.py:211
msgid "archive filename"
msgstr "nom de fichier de l'archive"
#: documents/models.py:214
#: documents/models.py:217
msgid "Current archive filename in storage"
msgstr "Nom du fichier d'archive courant en base de données"
#: documents/models.py:218
#: documents/models.py:221
msgid "original filename"
msgstr ""
#: documents/models.py:227
msgid "The original name of the file when it was uploaded"
msgstr ""
#: documents/models.py:231
msgid "archive serial number"
msgstr "numéro de série de l'archive"
#: documents/models.py:224
#: documents/models.py:237
msgid "The position of this document in your physical document archive."
msgstr "Le classement de ce document dans votre archive de documents physiques."
#: documents/models.py:230
#: documents/models.py:243 documents/models.py:628
msgid "document"
msgstr "document"
#: documents/models.py:231
#: documents/models.py:244
msgid "documents"
msgstr "documents"
#: documents/models.py:318
#: documents/models.py:331
msgid "debug"
msgstr "débogage"
#: documents/models.py:319
#: documents/models.py:332
msgid "information"
msgstr "informations"
#: documents/models.py:320
#: documents/models.py:333
msgid "warning"
msgstr "avertissement"
#: documents/models.py:321
#: documents/models.py:334
msgid "error"
msgstr "erreur"
#: documents/models.py:322
#: documents/models.py:335
msgid "critical"
msgstr "critique"
#: documents/models.py:325
#: documents/models.py:338
msgid "group"
msgstr "groupe"
#: documents/models.py:327
#: documents/models.py:340
msgid "message"
msgstr "message"
#: documents/models.py:330
#: documents/models.py:343
msgid "level"
msgstr "niveau"
#: documents/models.py:339
#: documents/models.py:352
msgid "log"
msgstr "journal"
#: documents/models.py:340
#: documents/models.py:353
msgid "logs"
msgstr "journaux"
#: documents/models.py:350 documents/models.py:403
#: documents/models.py:363 documents/models.py:419
msgid "saved view"
msgstr "vue enregistrée"
#: documents/models.py:351
#: documents/models.py:364
msgid "saved views"
msgstr "vues enregistrées"
#: documents/models.py:353
#: documents/models.py:366 documents/models.py:637
msgid "user"
msgstr "utilisateur"
#: documents/models.py:357
#: documents/models.py:370
msgid "show on dashboard"
msgstr "montrer sur le tableau de bord"
#: documents/models.py:360
#: documents/models.py:373
msgid "show in sidebar"
msgstr "montrer dans la barre latérale"
#: documents/models.py:364
#: documents/models.py:377
msgid "sort field"
msgstr "champ de tri"
#: documents/models.py:369
#: documents/models.py:382
msgid "sort reverse"
msgstr "tri inverse"
#: documents/models.py:374
#: documents/models.py:387
msgid "title contains"
msgstr "le titre contient"
#: documents/models.py:375
#: documents/models.py:388
msgid "content contains"
msgstr "le contenu contient"
#: documents/models.py:376
#: documents/models.py:389
msgid "ASN is"
msgstr "le NSA est"
#: documents/models.py:377
#: documents/models.py:390
msgid "correspondent is"
msgstr "le correspondant est"
#: documents/models.py:378
#: documents/models.py:391
msgid "document type is"
msgstr "le type de document est"
#: documents/models.py:379
#: documents/models.py:392
msgid "is in inbox"
msgstr "est dans la boîte de réception"
#: documents/models.py:380
#: documents/models.py:393
msgid "has tag"
msgstr "porte l'étiquette"
#: documents/models.py:381
#: documents/models.py:394
msgid "has any tag"
msgstr "porte l'une des étiquettes"
#: documents/models.py:382
#: documents/models.py:395
msgid "created before"
msgstr "créé avant"
#: documents/models.py:383
#: documents/models.py:396
msgid "created after"
msgstr "créé après"
#: documents/models.py:384
#: documents/models.py:397
msgid "created year is"
msgstr "l'année de création est"
#: documents/models.py:385
#: documents/models.py:398
msgid "created month is"
msgstr "le mois de création est"
#: documents/models.py:386
#: documents/models.py:399
msgid "created day is"
msgstr "le jour de création est"
#: documents/models.py:387
#: documents/models.py:400
msgid "added before"
msgstr "ajouté avant"
#: documents/models.py:388
#: documents/models.py:401
msgid "added after"
msgstr "ajouté après"
#: documents/models.py:389
#: documents/models.py:402
msgid "modified before"
msgstr "modifié avant"
#: documents/models.py:390
#: documents/models.py:403
msgid "modified after"
msgstr "modifié après"
#: documents/models.py:391
#: documents/models.py:404
msgid "does not have tag"
msgstr "ne porte pas d'étiquette"
#: documents/models.py:392
#: documents/models.py:405
msgid "does not have ASN"
msgstr "ne porte pas de NSA"
#: documents/models.py:393
#: documents/models.py:406
msgid "title or content contains"
msgstr "le titre ou le contenu contient"
#: documents/models.py:394
#: documents/models.py:407
msgid "fulltext query"
msgstr "recherche en texte intégral"
#: documents/models.py:395
#: documents/models.py:408
msgid "more like this"
msgstr "documents relatifs"
#: documents/models.py:396
#: documents/models.py:409
msgid "has tags in"
msgstr "porte une étiquette parmi"
#: documents/models.py:406
#: documents/models.py:410
msgid "ASN greater than"
msgstr ""
#: documents/models.py:411
msgid "ASN less than"
msgstr ""
#: documents/models.py:412
msgid "storage path is"
msgstr ""
#: documents/models.py:422
msgid "rule type"
msgstr "type de règle"
#: documents/models.py:408
#: documents/models.py:424
msgid "value"
msgstr "valeur"
#: documents/models.py:411
#: documents/models.py:427
msgid "filter rule"
msgstr "règle de filtrage"
#: documents/models.py:412
#: documents/models.py:428
msgid "filter rules"
msgstr "règles de filtrage"
#: documents/models.py:521
msgid "started"
msgstr "démarré"
#: documents/models.py:536
msgid "Task ID"
msgstr ""
#: documents/serialisers.py:70
#: documents/models.py:537
msgid "Celery ID for the Task that was run"
msgstr ""
#: documents/models.py:542
msgid "Acknowledged"
msgstr ""
#: documents/models.py:543
msgid "If the task is acknowledged via the frontend or API"
msgstr ""
#: documents/models.py:549 documents/models.py:556
msgid "Task Name"
msgstr ""
#: documents/models.py:550
msgid "Name of the file which the Task was run for"
msgstr ""
#: documents/models.py:557
msgid "Name of the Task which was run"
msgstr ""
#: documents/models.py:562
msgid "Task Positional Arguments"
msgstr ""
#: documents/models.py:564
msgid "JSON representation of the positional arguments used with the task"
msgstr ""
#: documents/models.py:569
msgid "Task Named Arguments"
msgstr ""
#: documents/models.py:571
msgid "JSON representation of the named arguments used with the task"
msgstr ""
#: documents/models.py:578
msgid "Task State"
msgstr ""
#: documents/models.py:579
msgid "Current state of the task being run"
msgstr ""
#: documents/models.py:584
msgid "Created DateTime"
msgstr ""
#: documents/models.py:585
msgid "Datetime field when the task result was created in UTC"
msgstr ""
#: documents/models.py:590
msgid "Started DateTime"
msgstr ""
#: documents/models.py:591
msgid "Datetime field when the task was started in UTC"
msgstr ""
#: documents/models.py:596
msgid "Completed DateTime"
msgstr ""
#: documents/models.py:597
msgid "Datetime field when the task was completed in UTC"
msgstr ""
#: documents/models.py:602
msgid "Result Data"
msgstr ""
#: documents/models.py:604
msgid "The data returned by the task"
msgstr ""
#: documents/models.py:613
msgid "Comment for the document"
msgstr ""
#: documents/models.py:642
msgid "comment"
msgstr ""
#: documents/models.py:643
msgid "comments"
msgstr ""
#: documents/serialisers.py:72
#, python-format
msgid "Invalid regular expression: %(error)s"
msgstr "Expression régulière incorrecte : %(error)s"
#: documents/serialisers.py:191
#: documents/serialisers.py:193
msgid "Invalid color."
msgstr "Couleur incorrecte."
#: documents/serialisers.py:515
#: documents/serialisers.py:518
#, python-format
msgid "File type %(type)s not supported"
msgstr "Type de fichier %(type)s non pris en charge"
#: documents/serialisers.py:596
#: documents/serialisers.py:599
msgid "Invalid variable detected."
msgstr "Variable non valide détectée."
@@ -444,87 +556,87 @@ msgstr "Mot de passe"
msgid "Sign in"
msgstr "S'identifier"
#: paperless/settings.py:339
#: paperless/settings.py:378
msgid "English (US)"
msgstr "Anglais (US)"
#: paperless/settings.py:340
#: paperless/settings.py:379
msgid "Belarusian"
msgstr "Biélorusse"
#: paperless/settings.py:341
#: paperless/settings.py:380
msgid "Czech"
msgstr "Tchèque"
#: paperless/settings.py:342
#: paperless/settings.py:381
msgid "Danish"
msgstr "Danois"
#: paperless/settings.py:343
#: paperless/settings.py:382
msgid "German"
msgstr "Allemand"
#: paperless/settings.py:344
#: paperless/settings.py:383
msgid "English (GB)"
msgstr "Anglais (GB)"
#: paperless/settings.py:345
#: paperless/settings.py:384
msgid "Spanish"
msgstr "Espagnol"
#: paperless/settings.py:346
#: paperless/settings.py:385
msgid "French"
msgstr "Français"
#: paperless/settings.py:347
#: paperless/settings.py:386
msgid "Italian"
msgstr "Italien"
#: paperless/settings.py:348
#: paperless/settings.py:387
msgid "Luxembourgish"
msgstr "Luxembourgeois"
#: paperless/settings.py:349
#: paperless/settings.py:388
msgid "Dutch"
msgstr "Néerlandais"
#: paperless/settings.py:350
#: paperless/settings.py:389
msgid "Polish"
msgstr "Polonais"
#: paperless/settings.py:351
#: paperless/settings.py:390
msgid "Portuguese (Brazil)"
msgstr "Portugais (Brésil)"
#: paperless/settings.py:352
#: paperless/settings.py:391
msgid "Portuguese"
msgstr "Portugais"
#: paperless/settings.py:353
#: paperless/settings.py:392
msgid "Romanian"
msgstr "Roumain"
#: paperless/settings.py:354
#: paperless/settings.py:393
msgid "Russian"
msgstr "Russe"
#: paperless/settings.py:355
#: paperless/settings.py:394
msgid "Slovenian"
msgstr "Slovène"
#: paperless/settings.py:356
#: paperless/settings.py:395
msgid "Serbian"
msgstr "Serbe"
#: paperless/settings.py:357
#: paperless/settings.py:396
msgid "Swedish"
msgstr "Suédois"
#: paperless/settings.py:358
#: paperless/settings.py:397
msgid "Turkish"
msgstr "Turc"
#: paperless/settings.py:359
#: paperless/settings.py:398
msgid "Chinese Simplified"
msgstr "Chinois simplifié"

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-07-08 14:11-0700\n"
"PO-Revision-Date: 2022-07-08 22:06\n"
"POT-Creation-Date: 2022-11-09 21:50+0000\n"
"PO-Revision-Date: 2022-11-09 23:11\n"
"Last-Translator: \n"
"Language-Team: Hebrew\n"
"Language: he_IL\n"
@@ -21,378 +21,490 @@ msgstr ""
msgid "Documents"
msgstr "מסמכים"
#: documents/models.py:29
#: documents/models.py:32
msgid "Any word"
msgstr "מילה כלשהי"
#: documents/models.py:30
#: documents/models.py:33
msgid "All words"
msgstr "כל המילים"
#: documents/models.py:31
#: documents/models.py:34
msgid "Exact match"
msgstr "התאמה מדוייקת"
#: documents/models.py:32
#: documents/models.py:35
msgid "Regular expression"
msgstr "ביטוי רגולרי"
#: documents/models.py:33
#: documents/models.py:36
msgid "Fuzzy word"
msgstr "מילה מעורפלת"
#: documents/models.py:34
#: documents/models.py:37
msgid "Automatic"
msgstr "אוטומטי"
#: documents/models.py:37 documents/models.py:354 paperless_mail/models.py:16
#: documents/models.py:40 documents/models.py:367 paperless_mail/models.py:16
#: paperless_mail/models.py:80
msgid "name"
msgstr "שם"
#: documents/models.py:39
#: documents/models.py:42
msgid "match"
msgstr "התאמה"
#: documents/models.py:42
#: documents/models.py:45
msgid "matching algorithm"
msgstr "אלגוריתם התאמה"
#: documents/models.py:47
#: documents/models.py:50
msgid "is insensitive"
msgstr "אינו רגיש"
#: documents/models.py:60 documents/models.py:115
#: documents/models.py:63 documents/models.py:118
msgid "correspondent"
msgstr "מכותב"
#: documents/models.py:61
#: documents/models.py:64
msgid "correspondents"
msgstr "מכותבים"
#: documents/models.py:66
#: documents/models.py:69
msgid "color"
msgstr "צבע"
#: documents/models.py:69
#: documents/models.py:72
msgid "is inbox tag"
msgstr "תגית דואר נכנס"
#: documents/models.py:72
#: documents/models.py:75
msgid "Marks this tag as an inbox tag: All newly consumed documents will be tagged with inbox tags."
msgstr "מסמן תגית זו כתגית דואר נכנס: כל המסמכים החדשים שהתקבלו יתויגו עם תגית דואר נכנס."
#: documents/models.py:78
#: documents/models.py:81
msgid "tag"
msgstr "תגית"
#: documents/models.py:79 documents/models.py:153
#: documents/models.py:82 documents/models.py:156
msgid "tags"
msgstr "תגיות"
#: documents/models.py:84 documents/models.py:135
#: documents/models.py:87 documents/models.py:138
msgid "document type"
msgstr "סוג מסמך"
#: documents/models.py:85
#: documents/models.py:88
msgid "document types"
msgstr "סוגי מסמך"
#: documents/models.py:90
#: documents/models.py:93
msgid "path"
msgstr "נתיב"
#: documents/models.py:96 documents/models.py:124
#: documents/models.py:99 documents/models.py:127
msgid "storage path"
msgstr "נתיב אכסון"
#: documents/models.py:97
#: documents/models.py:100
msgid "storage paths"
msgstr "נתיבי אכסון"
#: documents/models.py:105
#: documents/models.py:108
msgid "Unencrypted"
msgstr "לא מוצפן"
#: documents/models.py:106
#: documents/models.py:109
msgid "Encrypted with GNU Privacy Guard"
msgstr "הוצפן באמצעות GNU Privacy Guard"
#: documents/models.py:127
#: documents/models.py:130
msgid "title"
msgstr "כותרת"
#: documents/models.py:139
#: documents/models.py:142 documents/models.py:611
msgid "content"
msgstr "תוכן"
#: documents/models.py:142
#: documents/models.py:145
msgid "The raw, text-only data of the document. This field is primarily used for searching."
msgstr "הנתונים הגולמיים של המסמך, המכילים טקסט בלבד. שדה זה משמש בעיקר לצורך חיפוש."
#: documents/models.py:147
#: documents/models.py:150
msgid "mime type"
msgstr "סוג mime"
#: documents/models.py:157
#: documents/models.py:160
msgid "checksum"
msgstr "מחרוזת בדיקה"
#: documents/models.py:161
#: documents/models.py:164
msgid "The checksum of the original document."
msgstr "מחרוזת בדיקה של המסמך המקורי."
#: documents/models.py:165
#: documents/models.py:168
msgid "archive checksum"
msgstr "מחרוזת בדיקה לארכיון"
#: documents/models.py:170
#: documents/models.py:173
msgid "The checksum of the archived document."
msgstr "מחרוזת הבדיקה למסמך בארכיון."
#: documents/models.py:173 documents/models.py:335 documents/models.py:520
#: documents/models.py:176 documents/models.py:348 documents/models.py:617
msgid "created"
msgstr "נוצר"
#: documents/models.py:176
#: documents/models.py:179
msgid "modified"
msgstr "נערך לאחרונה"
#: documents/models.py:183
#: documents/models.py:186
msgid "storage type"
msgstr "סוג אחסון"
#: documents/models.py:191
#: documents/models.py:194
msgid "added"
msgstr "התווסף"
#: documents/models.py:198
#: documents/models.py:201
msgid "filename"
msgstr "שם קובץ"
#: documents/models.py:204
#: documents/models.py:207
msgid "Current filename in storage"
msgstr "שם קובץ נוכחי באחסון"
#: documents/models.py:208
#: documents/models.py:211
msgid "archive filename"
msgstr "שם קובץ בארכיון"
#: documents/models.py:214
#: documents/models.py:217
msgid "Current archive filename in storage"
msgstr "שם קובץ ארכיוני נוכחי באחסון"
#: documents/models.py:218
#: documents/models.py:221
msgid "original filename"
msgstr ""
#: documents/models.py:227
msgid "The original name of the file when it was uploaded"
msgstr ""
#: documents/models.py:231
msgid "archive serial number"
msgstr "מספר סידורי בארכיון"
#: documents/models.py:224
#: documents/models.py:237
msgid "The position of this document in your physical document archive."
msgstr "מיקומו של מסמך זה בארכיון המסמכים הפיזי שלך."
#: documents/models.py:230
#: documents/models.py:243 documents/models.py:628
msgid "document"
msgstr "מסמך"
#: documents/models.py:231
#: documents/models.py:244
msgid "documents"
msgstr "מסמכים"
#: documents/models.py:318
#: documents/models.py:331
msgid "debug"
msgstr "ניפוי שגיאות"
#: documents/models.py:319
#: documents/models.py:332
msgid "information"
msgstr "מידע"
#: documents/models.py:320
#: documents/models.py:333
msgid "warning"
msgstr "אזהרה"
#: documents/models.py:321
#: documents/models.py:334
msgid "error"
msgstr "שגיאה"
#: documents/models.py:322
#: documents/models.py:335
msgid "critical"
msgstr "קריטי"
#: documents/models.py:325
#: documents/models.py:338
msgid "group"
msgstr "קבוצה"
#: documents/models.py:327
#: documents/models.py:340
msgid "message"
msgstr "הודעה"
#: documents/models.py:330
#: documents/models.py:343
msgid "level"
msgstr "רמה"
#: documents/models.py:339
#: documents/models.py:352
msgid "log"
msgstr "יומן רישום"
#: documents/models.py:340
#: documents/models.py:353
msgid "logs"
msgstr "יומני רישום"
#: documents/models.py:350 documents/models.py:403
#: documents/models.py:363 documents/models.py:419
msgid "saved view"
msgstr "תצוגה שמורה"
#: documents/models.py:351
#: documents/models.py:364
msgid "saved views"
msgstr "תצוגות שמורות"
#: documents/models.py:353
#: documents/models.py:366 documents/models.py:637
msgid "user"
msgstr "משתמש"
#: documents/models.py:357
#: documents/models.py:370
msgid "show on dashboard"
msgstr "הצג בדשבורד"
#: documents/models.py:360
#: documents/models.py:373
msgid "show in sidebar"
msgstr "הצג בסרגל צידי"
#: documents/models.py:364
#: documents/models.py:377
msgid "sort field"
msgstr "שדה המיון"
#: documents/models.py:369
#: documents/models.py:382
msgid "sort reverse"
msgstr "מיין הפוך"
#: documents/models.py:374
#: documents/models.py:387
msgid "title contains"
msgstr "כותרת מכילה"
#: documents/models.py:375
#: documents/models.py:388
msgid "content contains"
msgstr "תוכן מכיל"
#: documents/models.py:376
#: documents/models.py:389
msgid "ASN is"
msgstr "מס\"ד הוא"
#: documents/models.py:377
#: documents/models.py:390
msgid "correspondent is"
msgstr "מכותב הוא"
#: documents/models.py:378
#: documents/models.py:391
msgid "document type is"
msgstr "סוג מסמך הוא"
#: documents/models.py:379
#: documents/models.py:392
msgid "is in inbox"
msgstr "בתיבה הנכנסת"
#: documents/models.py:380
#: documents/models.py:393
msgid "has tag"
msgstr "ישנו תיוג"
#: documents/models.py:381
#: documents/models.py:394
msgid "has any tag"
msgstr "ישנו כל תיוג"
#: documents/models.py:382
#: documents/models.py:395
msgid "created before"
msgstr "נוצר לפני"
#: documents/models.py:383
#: documents/models.py:396
msgid "created after"
msgstr "נוצר לאחר"
#: documents/models.py:384
#: documents/models.py:397
msgid "created year is"
msgstr "נוצר בשנת"
#: documents/models.py:385
#: documents/models.py:398
msgid "created month is"
msgstr "נוצר בחודש"
#: documents/models.py:386
#: documents/models.py:399
msgid "created day is"
msgstr "נוצר ביום"
#: documents/models.py:387
#: documents/models.py:400
msgid "added before"
msgstr "הוסף לפני"
#: documents/models.py:388
#: documents/models.py:401
msgid "added after"
msgstr "הוסף אחרי"
#: documents/models.py:389
#: documents/models.py:402
msgid "modified before"
msgstr "נערך לפני"
#: documents/models.py:390
#: documents/models.py:403
msgid "modified after"
msgstr "נערך אחרי"
#: documents/models.py:391
#: documents/models.py:404
msgid "does not have tag"
msgstr "אינו כולל את התיוג"
#: documents/models.py:392
#: documents/models.py:405
msgid "does not have ASN"
msgstr "אינו בעל מס\"ד"
#: documents/models.py:393
#: documents/models.py:406
msgid "title or content contains"
msgstr "כותרת או תוכן מכילים"
#: documents/models.py:394
#: documents/models.py:407
msgid "fulltext query"
msgstr "שאילתת טקסט מלא"
#: documents/models.py:395
#: documents/models.py:408
msgid "more like this"
msgstr "עוד כמו זה"
#: documents/models.py:396
#: documents/models.py:409
msgid "has tags in"
msgstr "מכיל תגים ב-"
#: documents/models.py:406
#: documents/models.py:410
msgid "ASN greater than"
msgstr ""
#: documents/models.py:411
msgid "ASN less than"
msgstr ""
#: documents/models.py:412
msgid "storage path is"
msgstr ""
#: documents/models.py:422
msgid "rule type"
msgstr "סוג כלל"
#: documents/models.py:408
#: documents/models.py:424
msgid "value"
msgstr "ערך"
#: documents/models.py:411
#: documents/models.py:427
msgid "filter rule"
msgstr "חוק סינון"
#: documents/models.py:412
#: documents/models.py:428
msgid "filter rules"
msgstr "חוקי סינון"
#: documents/models.py:521
msgid "started"
#: documents/models.py:536
msgid "Task ID"
msgstr ""
#: documents/serialisers.py:70
#: documents/models.py:537
msgid "Celery ID for the Task that was run"
msgstr ""
#: documents/models.py:542
msgid "Acknowledged"
msgstr ""
#: documents/models.py:543
msgid "If the task is acknowledged via the frontend or API"
msgstr ""
#: documents/models.py:549 documents/models.py:556
msgid "Task Name"
msgstr ""
#: documents/models.py:550
msgid "Name of the file which the Task was run for"
msgstr ""
#: documents/models.py:557
msgid "Name of the Task which was run"
msgstr ""
#: documents/models.py:562
msgid "Task Positional Arguments"
msgstr ""
#: documents/models.py:564
msgid "JSON representation of the positional arguments used with the task"
msgstr ""
#: documents/models.py:569
msgid "Task Named Arguments"
msgstr ""
#: documents/models.py:571
msgid "JSON representation of the named arguments used with the task"
msgstr ""
#: documents/models.py:578
msgid "Task State"
msgstr ""
#: documents/models.py:579
msgid "Current state of the task being run"
msgstr ""
#: documents/models.py:584
msgid "Created DateTime"
msgstr ""
#: documents/models.py:585
msgid "Datetime field when the task result was created in UTC"
msgstr ""
#: documents/models.py:590
msgid "Started DateTime"
msgstr ""
#: documents/models.py:591
msgid "Datetime field when the task was started in UTC"
msgstr ""
#: documents/models.py:596
msgid "Completed DateTime"
msgstr ""
#: documents/models.py:597
msgid "Datetime field when the task was completed in UTC"
msgstr ""
#: documents/models.py:602
msgid "Result Data"
msgstr ""
#: documents/models.py:604
msgid "The data returned by the task"
msgstr ""
#: documents/models.py:613
msgid "Comment for the document"
msgstr ""
#: documents/models.py:642
msgid "comment"
msgstr ""
#: documents/models.py:643
msgid "comments"
msgstr ""
#: documents/serialisers.py:72
#, python-format
msgid "Invalid regular expression: %(error)s"
msgstr "ביטוי רגולרי בלתי חוקי: %(error)s"
#: documents/serialisers.py:191
#: documents/serialisers.py:193
msgid "Invalid color."
msgstr "צבע לא חוקי."
#: documents/serialisers.py:515
#: documents/serialisers.py:518
#, python-format
msgid "File type %(type)s not supported"
msgstr "סוג קובץ %(type)s לא נתמך"
#: documents/serialisers.py:596
#: documents/serialisers.py:599
msgid "Invalid variable detected."
msgstr "משתנה לא חוקי זוהה."
@@ -444,87 +556,87 @@ msgstr "סיסמה"
msgid "Sign in"
msgstr "התחבר"
#: paperless/settings.py:339
#: paperless/settings.py:378
msgid "English (US)"
msgstr "אנגלית (ארה\"ב)"
#: paperless/settings.py:340
#: paperless/settings.py:379
msgid "Belarusian"
msgstr "בלרוסית"
#: paperless/settings.py:341
#: paperless/settings.py:380
msgid "Czech"
msgstr "צ'כית"
#: paperless/settings.py:342
#: paperless/settings.py:381
msgid "Danish"
msgstr "דנית"
#: paperless/settings.py:343
#: paperless/settings.py:382
msgid "German"
msgstr "גרמנית"
#: paperless/settings.py:344
#: paperless/settings.py:383
msgid "English (GB)"
msgstr "אנגלית (בריטניה)"
#: paperless/settings.py:345
#: paperless/settings.py:384
msgid "Spanish"
msgstr "ספרדית"
#: paperless/settings.py:346
#: paperless/settings.py:385
msgid "French"
msgstr "צרפתית"
#: paperless/settings.py:347
#: paperless/settings.py:386
msgid "Italian"
msgstr "איטלקית"
#: paperless/settings.py:348
#: paperless/settings.py:387
msgid "Luxembourgish"
msgstr "לוקסמבורגית"
#: paperless/settings.py:349
#: paperless/settings.py:388
msgid "Dutch"
msgstr "הולנדית"
#: paperless/settings.py:350
#: paperless/settings.py:389
msgid "Polish"
msgstr "פולנית"
#: paperless/settings.py:351
#: paperless/settings.py:390
msgid "Portuguese (Brazil)"
msgstr "פורטוגזית (ברזיל)"
#: paperless/settings.py:352
#: paperless/settings.py:391
msgid "Portuguese"
msgstr "פורטוגזית"
#: paperless/settings.py:353
#: paperless/settings.py:392
msgid "Romanian"
msgstr "רומנית"
#: paperless/settings.py:354
#: paperless/settings.py:393
msgid "Russian"
msgstr "רוסית"
#: paperless/settings.py:355
#: paperless/settings.py:394
msgid "Slovenian"
msgstr "סלובנית"
#: paperless/settings.py:356
#: paperless/settings.py:395
msgid "Serbian"
msgstr "סרבית"
#: paperless/settings.py:357
#: paperless/settings.py:396
msgid "Swedish"
msgstr "שוודית"
#: paperless/settings.py:358
#: paperless/settings.py:397
msgid "Turkish"
msgstr "טורקית"
#: paperless/settings.py:359
#: paperless/settings.py:398
msgid "Chinese Simplified"
msgstr "סינית מופשטת"

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-07-08 14:11-0700\n"
"PO-Revision-Date: 2022-07-09 12:27\n"
"POT-Creation-Date: 2022-11-09 21:50+0000\n"
"PO-Revision-Date: 2022-11-09 23:12\n"
"Last-Translator: \n"
"Language-Team: Croatian\n"
"Language: hr_HR\n"
@@ -21,378 +21,490 @@ msgstr ""
msgid "Documents"
msgstr "Dokumenti"
#: documents/models.py:29
#: documents/models.py:32
msgid "Any word"
msgstr "Bilo koja riječ"
#: documents/models.py:30
#: documents/models.py:33
msgid "All words"
msgstr "Sve riječi"
#: documents/models.py:31
#: documents/models.py:34
msgid "Exact match"
msgstr "Točno podudaranje"
#: documents/models.py:32
#: documents/models.py:35
msgid "Regular expression"
msgstr "Uobičajeni izraz"
#: documents/models.py:33
#: documents/models.py:36
msgid "Fuzzy word"
msgstr "Nejasna riječ"
#: documents/models.py:34
#: documents/models.py:37
msgid "Automatic"
msgstr "Automatski"
#: documents/models.py:37 documents/models.py:354 paperless_mail/models.py:16
#: documents/models.py:40 documents/models.py:367 paperless_mail/models.py:16
#: paperless_mail/models.py:80
msgid "name"
msgstr "ime"
#: documents/models.py:39
#: documents/models.py:42
msgid "match"
msgstr "podudarati"
#: documents/models.py:42
#: documents/models.py:45
msgid "matching algorithm"
msgstr "algoritam podudaranja"
#: documents/models.py:47
#: documents/models.py:50
msgid "is insensitive"
msgstr "ne razlikuje velika i mala slova"
#: documents/models.py:60 documents/models.py:115
#: documents/models.py:63 documents/models.py:118
msgid "correspondent"
msgstr "dopisnik"
#: documents/models.py:61
#: documents/models.py:64
msgid "correspondents"
msgstr "dopisnici"
#: documents/models.py:66
#: documents/models.py:69
msgid "color"
msgstr "boja"
#: documents/models.py:69
#: documents/models.py:72
msgid "is inbox tag"
msgstr "oznaka ulazne pošte (inbox)"
#: documents/models.py:72
#: documents/models.py:75
msgid "Marks this tag as an inbox tag: All newly consumed documents will be tagged with inbox tags."
msgstr "Označava ovu oznaku kao oznaku ulazne pošte (inbox): Svi novopotrošeni dokumenti bit će označeni oznakama ulazne pošte (inbox)."
#: documents/models.py:78
#: documents/models.py:81
msgid "tag"
msgstr "oznaka"
#: documents/models.py:79 documents/models.py:153
#: documents/models.py:82 documents/models.py:156
msgid "tags"
msgstr "oznake"
#: documents/models.py:84 documents/models.py:135
#: documents/models.py:87 documents/models.py:138
msgid "document type"
msgstr "vrsta dokumenta"
#: documents/models.py:85
#: documents/models.py:88
msgid "document types"
msgstr "vrste dokumenta"
#: documents/models.py:90
#: documents/models.py:93
msgid "path"
msgstr "putanja"
#: documents/models.py:96 documents/models.py:124
#: documents/models.py:99 documents/models.py:127
msgid "storage path"
msgstr "putanja pohrane"
#: documents/models.py:97
#: documents/models.py:100
msgid "storage paths"
msgstr "putanje pohrane"
#: documents/models.py:105
#: documents/models.py:108
msgid "Unencrypted"
msgstr "Nekriptirano"
#: documents/models.py:106
#: documents/models.py:109
msgid "Encrypted with GNU Privacy Guard"
msgstr "Enkriptirano s GNU Privacy Guard"
#: documents/models.py:127
#: documents/models.py:130
msgid "title"
msgstr "naslov"
#: documents/models.py:139
#: documents/models.py:142 documents/models.py:611
msgid "content"
msgstr "sadržaj"
#: documents/models.py:142
#: documents/models.py:145
msgid "The raw, text-only data of the document. This field is primarily used for searching."
msgstr "Neobrađeni tekstualni podaci dokumenta. Ovo se polje koristi prvenstveno za pretraživanje."
#: documents/models.py:147
#: documents/models.py:150
msgid "mime type"
msgstr "vrste mime"
#: documents/models.py:157
#: documents/models.py:160
msgid "checksum"
msgstr "kontrolni zbroj"
#: documents/models.py:161
#: documents/models.py:164
msgid "The checksum of the original document."
msgstr "Kontrolni zbroj originalnog dokumenta."
#: documents/models.py:165
#: documents/models.py:168
msgid "archive checksum"
msgstr "arhivski kontrolni zbroj"
#: documents/models.py:170
#: documents/models.py:173
msgid "The checksum of the archived document."
msgstr "Kontrolni zbroj arhiviranog dokumenta."
#: documents/models.py:173 documents/models.py:335 documents/models.py:520
#: documents/models.py:176 documents/models.py:348 documents/models.py:617
msgid "created"
msgstr "stvoreno"
#: documents/models.py:176
#: documents/models.py:179
msgid "modified"
msgstr "modificiran"
#: documents/models.py:183
#: documents/models.py:186
msgid "storage type"
msgstr "vrsta pohrane"
#: documents/models.py:191
#: documents/models.py:194
msgid "added"
msgstr "dodano"
#: documents/models.py:198
#: documents/models.py:201
msgid "filename"
msgstr "naziv datoteke"
#: documents/models.py:204
#: documents/models.py:207
msgid "Current filename in storage"
msgstr "Trenutni naziv pohranjene datoteke"
#: documents/models.py:208
#: documents/models.py:211
msgid "archive filename"
msgstr "naziv arhivirane datoteke"
#: documents/models.py:214
#: documents/models.py:217
msgid "Current archive filename in storage"
msgstr "Trenutni naziv arhivirane pohranjene datoteke"
#: documents/models.py:218
#: documents/models.py:221
msgid "original filename"
msgstr ""
#: documents/models.py:227
msgid "The original name of the file when it was uploaded"
msgstr ""
#: documents/models.py:231
msgid "archive serial number"
msgstr "arhivirani serijski broj"
#: documents/models.py:224
#: documents/models.py:237
msgid "The position of this document in your physical document archive."
msgstr "Položaj ovog dokumenta u vašoj fizičkoj arhivi dokumenata."
#: documents/models.py:230
#: documents/models.py:243 documents/models.py:628
msgid "document"
msgstr "dokument"
#: documents/models.py:231
#: documents/models.py:244
msgid "documents"
msgstr "dokumenti"
#: documents/models.py:318
#: documents/models.py:331
msgid "debug"
msgstr "otklanjanje pogrešaka"
#: documents/models.py:319
#: documents/models.py:332
msgid "information"
msgstr "informacije"
#: documents/models.py:320
#: documents/models.py:333
msgid "warning"
msgstr "upozorenje"
#: documents/models.py:321
#: documents/models.py:334
msgid "error"
msgstr "greška"
#: documents/models.py:322
#: documents/models.py:335
msgid "critical"
msgstr "kritično"
#: documents/models.py:325
#: documents/models.py:338
msgid "group"
msgstr "grupa"
#: documents/models.py:327
#: documents/models.py:340
msgid "message"
msgstr "poruka"
#: documents/models.py:330
#: documents/models.py:343
msgid "level"
msgstr "razina"
#: documents/models.py:339
#: documents/models.py:352
msgid "log"
msgstr "zapisnik"
#: documents/models.py:340
#: documents/models.py:353
msgid "logs"
msgstr "zapisnici"
#: documents/models.py:350 documents/models.py:403
#: documents/models.py:363 documents/models.py:419
msgid "saved view"
msgstr "spremljen prikaz"
#: documents/models.py:351
#: documents/models.py:364
msgid "saved views"
msgstr "spremljeni prikazi"
#: documents/models.py:353
#: documents/models.py:366 documents/models.py:637
msgid "user"
msgstr "korisnik"
#: documents/models.py:357
#: documents/models.py:370
msgid "show on dashboard"
msgstr "prikaži na nadzornoj ploči"
#: documents/models.py:360
#: documents/models.py:373
msgid "show in sidebar"
msgstr "prikaži u bočnoj traci"
#: documents/models.py:364
#: documents/models.py:377
msgid "sort field"
msgstr "sortiraj polje"
#: documents/models.py:369
#: documents/models.py:382
msgid "sort reverse"
msgstr "obrnuto sortiranje"
#: documents/models.py:374
#: documents/models.py:387
msgid "title contains"
msgstr "naslov sadrži"
#: documents/models.py:375
#: documents/models.py:388
msgid "content contains"
msgstr "sadržaj sadrži"
#: documents/models.py:376
#: documents/models.py:389
msgid "ASN is"
msgstr "ASN je"
#: documents/models.py:377
#: documents/models.py:390
msgid "correspondent is"
msgstr "dopisnik je"
#: documents/models.py:378
#: documents/models.py:391
msgid "document type is"
msgstr "vrsta dokumenta je"
#: documents/models.py:379
#: documents/models.py:392
msgid "is in inbox"
msgstr "nalazi se u ulaznoj pošti"
#: documents/models.py:380
#: documents/models.py:393
msgid "has tag"
msgstr "ima oznaku"
#: documents/models.py:381
#: documents/models.py:394
msgid "has any tag"
msgstr "ima bilo kakvu oznaku"
#: documents/models.py:382
#: documents/models.py:395
msgid "created before"
msgstr "stvoreni prije"
#: documents/models.py:383
#: documents/models.py:396
msgid "created after"
msgstr "stvoreno poslije"
#: documents/models.py:384
#: documents/models.py:397
msgid "created year is"
msgstr "godina stvaranja je"
#: documents/models.py:385
#: documents/models.py:398
msgid "created month is"
msgstr "mjesec stvaranja je"
#: documents/models.py:386
#: documents/models.py:399
msgid "created day is"
msgstr "dan stvaranja je"
#: documents/models.py:387
#: documents/models.py:400
msgid "added before"
msgstr "dodano prije"
#: documents/models.py:388
#: documents/models.py:401
msgid "added after"
msgstr "dodano poslije"
#: documents/models.py:389
#: documents/models.py:402
msgid "modified before"
msgstr "modificirano prije"
#: documents/models.py:390
#: documents/models.py:403
msgid "modified after"
msgstr "modificirano poslije"
#: documents/models.py:391
#: documents/models.py:404
msgid "does not have tag"
msgstr "ne posjeduje oznaku"
#: documents/models.py:392
#: documents/models.py:405
msgid "does not have ASN"
msgstr "ne posjeduje ASN"
#: documents/models.py:393
#: documents/models.py:406
msgid "title or content contains"
msgstr "naziv ili sadržaj sadrži"
#: documents/models.py:394
#: documents/models.py:407
msgid "fulltext query"
msgstr "upit za cijeli tekst"
#: documents/models.py:395
#: documents/models.py:408
msgid "more like this"
msgstr "više poput ovog"
#: documents/models.py:396
#: documents/models.py:409
msgid "has tags in"
msgstr "sadrži oznake"
#: documents/models.py:406
#: documents/models.py:410
msgid "ASN greater than"
msgstr ""
#: documents/models.py:411
msgid "ASN less than"
msgstr ""
#: documents/models.py:412
msgid "storage path is"
msgstr ""
#: documents/models.py:422
msgid "rule type"
msgstr "vrsta pravila"
#: documents/models.py:408
#: documents/models.py:424
msgid "value"
msgstr "vrijednost"
#: documents/models.py:411
#: documents/models.py:427
msgid "filter rule"
msgstr "pravilo filtera"
#: documents/models.py:412
#: documents/models.py:428
msgid "filter rules"
msgstr "pravila filtera"
#: documents/models.py:521
msgid "started"
msgstr "započeto"
#: documents/models.py:536
msgid "Task ID"
msgstr ""
#: documents/serialisers.py:70
#: documents/models.py:537
msgid "Celery ID for the Task that was run"
msgstr ""
#: documents/models.py:542
msgid "Acknowledged"
msgstr ""
#: documents/models.py:543
msgid "If the task is acknowledged via the frontend or API"
msgstr ""
#: documents/models.py:549 documents/models.py:556
msgid "Task Name"
msgstr ""
#: documents/models.py:550
msgid "Name of the file which the Task was run for"
msgstr ""
#: documents/models.py:557
msgid "Name of the Task which was run"
msgstr ""
#: documents/models.py:562
msgid "Task Positional Arguments"
msgstr ""
#: documents/models.py:564
msgid "JSON representation of the positional arguments used with the task"
msgstr ""
#: documents/models.py:569
msgid "Task Named Arguments"
msgstr ""
#: documents/models.py:571
msgid "JSON representation of the named arguments used with the task"
msgstr ""
#: documents/models.py:578
msgid "Task State"
msgstr ""
#: documents/models.py:579
msgid "Current state of the task being run"
msgstr ""
#: documents/models.py:584
msgid "Created DateTime"
msgstr ""
#: documents/models.py:585
msgid "Datetime field when the task result was created in UTC"
msgstr ""
#: documents/models.py:590
msgid "Started DateTime"
msgstr ""
#: documents/models.py:591
msgid "Datetime field when the task was started in UTC"
msgstr ""
#: documents/models.py:596
msgid "Completed DateTime"
msgstr ""
#: documents/models.py:597
msgid "Datetime field when the task was completed in UTC"
msgstr ""
#: documents/models.py:602
msgid "Result Data"
msgstr ""
#: documents/models.py:604
msgid "The data returned by the task"
msgstr ""
#: documents/models.py:613
msgid "Comment for the document"
msgstr ""
#: documents/models.py:642
msgid "comment"
msgstr ""
#: documents/models.py:643
msgid "comments"
msgstr ""
#: documents/serialisers.py:72
#, python-format
msgid "Invalid regular expression: %(error)s"
msgstr "Nevažeći regularni izraz: %(error)s"
#: documents/serialisers.py:191
#: documents/serialisers.py:193
msgid "Invalid color."
msgstr "Nevažeća boja."
#: documents/serialisers.py:515
#: documents/serialisers.py:518
#, python-format
msgid "File type %(type)s not supported"
msgstr "Vrsta datoteke %(type)s nije podržana"
#: documents/serialisers.py:596
#: documents/serialisers.py:599
msgid "Invalid variable detected."
msgstr "Otkrivena je nevaljana vrsta datoteke."
@@ -444,87 +556,87 @@ msgstr "Lozinka"
msgid "Sign in"
msgstr "Prijava"
#: paperless/settings.py:339
#: paperless/settings.py:378
msgid "English (US)"
msgstr "Engleski (US)"
#: paperless/settings.py:340
#: paperless/settings.py:379
msgid "Belarusian"
msgstr "Bjeloruski"
#: paperless/settings.py:341
#: paperless/settings.py:380
msgid "Czech"
msgstr "Češki"
#: paperless/settings.py:342
#: paperless/settings.py:381
msgid "Danish"
msgstr "Danski"
#: paperless/settings.py:343
#: paperless/settings.py:382
msgid "German"
msgstr "Njemački"
#: paperless/settings.py:344
#: paperless/settings.py:383
msgid "English (GB)"
msgstr "Engleski (GB)"
#: paperless/settings.py:345
#: paperless/settings.py:384
msgid "Spanish"
msgstr "Španjolski"
#: paperless/settings.py:346
#: paperless/settings.py:385
msgid "French"
msgstr "Francuski"
#: paperless/settings.py:347
#: paperless/settings.py:386
msgid "Italian"
msgstr "Talijanski"
#: paperless/settings.py:348
#: paperless/settings.py:387
msgid "Luxembourgish"
msgstr "Luksemburški"
#: paperless/settings.py:349
#: paperless/settings.py:388
msgid "Dutch"
msgstr "Nizozemski"
#: paperless/settings.py:350
#: paperless/settings.py:389
msgid "Polish"
msgstr "Poljski"
#: paperless/settings.py:351
#: paperless/settings.py:390
msgid "Portuguese (Brazil)"
msgstr "Portugalski (Brazil)"
#: paperless/settings.py:352
#: paperless/settings.py:391
msgid "Portuguese"
msgstr "Portugalski"
#: paperless/settings.py:353
#: paperless/settings.py:392
msgid "Romanian"
msgstr "Rumunjski"
#: paperless/settings.py:354
#: paperless/settings.py:393
msgid "Russian"
msgstr "Ruski"
#: paperless/settings.py:355
#: paperless/settings.py:394
msgid "Slovenian"
msgstr "Slovenski"
#: paperless/settings.py:356
#: paperless/settings.py:395
msgid "Serbian"
msgstr "Srpski"
#: paperless/settings.py:357
#: paperless/settings.py:396
msgid "Swedish"
msgstr "Švedski"
#: paperless/settings.py:358
#: paperless/settings.py:397
msgid "Turkish"
msgstr "Turski"
#: paperless/settings.py:359
#: paperless/settings.py:398
msgid "Chinese Simplified"
msgstr "Pojednostavljeni kineski"

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-07-08 14:11-0700\n"
"PO-Revision-Date: 2022-08-03 11:24\n"
"POT-Creation-Date: 2022-11-09 21:50+0000\n"
"PO-Revision-Date: 2022-11-12 10:50\n"
"Last-Translator: \n"
"Language-Team: Italian\n"
"Language: it_IT\n"
@@ -21,378 +21,490 @@ msgstr ""
msgid "Documents"
msgstr "Documenti"
#: documents/models.py:29
#: documents/models.py:32
msgid "Any word"
msgstr "Qualsiasi parola"
#: documents/models.py:30
#: documents/models.py:33
msgid "All words"
msgstr "Tutte le parole"
#: documents/models.py:31
#: documents/models.py:34
msgid "Exact match"
msgstr "Corrispondenza esatta"
#: documents/models.py:32
#: documents/models.py:35
msgid "Regular expression"
msgstr "Espressione regolare"
#: documents/models.py:33
#: documents/models.py:36
msgid "Fuzzy word"
msgstr "Parole fuzzy"
#: documents/models.py:34
#: documents/models.py:37
msgid "Automatic"
msgstr "Automatico"
#: documents/models.py:37 documents/models.py:354 paperless_mail/models.py:16
#: documents/models.py:40 documents/models.py:367 paperless_mail/models.py:16
#: paperless_mail/models.py:80
msgid "name"
msgstr "nome"
#: documents/models.py:39
#: documents/models.py:42
msgid "match"
msgstr "corrispondenza"
#: documents/models.py:42
#: documents/models.py:45
msgid "matching algorithm"
msgstr "algoritmo di corrispondenza"
#: documents/models.py:47
#: documents/models.py:50
msgid "is insensitive"
msgstr "non distingue maiuscole e minuscole"
#: documents/models.py:60 documents/models.py:115
#: documents/models.py:63 documents/models.py:118
msgid "correspondent"
msgstr "corrispondente"
#: documents/models.py:61
#: documents/models.py:64
msgid "correspondents"
msgstr "corrispondenti"
#: documents/models.py:66
#: documents/models.py:69
msgid "color"
msgstr "colore"
#: documents/models.py:69
#: documents/models.py:72
msgid "is inbox tag"
msgstr "è tag di arrivo"
#: documents/models.py:72
#: documents/models.py:75
msgid "Marks this tag as an inbox tag: All newly consumed documents will be tagged with inbox tags."
msgstr "Contrassegna questo tag come tag in arrivo: tutti i documenti elaborati verranno taggati con questo tag."
#: documents/models.py:78
#: documents/models.py:81
msgid "tag"
msgstr "tag"
#: documents/models.py:79 documents/models.py:153
#: documents/models.py:82 documents/models.py:156
msgid "tags"
msgstr "tag"
#: documents/models.py:84 documents/models.py:135
#: documents/models.py:87 documents/models.py:138
msgid "document type"
msgstr "tipo di documento"
#: documents/models.py:85
#: documents/models.py:88
msgid "document types"
msgstr "tipi di documento"
#: documents/models.py:90
#: documents/models.py:93
msgid "path"
msgstr "percorso"
#: documents/models.py:96 documents/models.py:124
#: documents/models.py:99 documents/models.py:127
msgid "storage path"
msgstr "percorso di archiviazione"
#: documents/models.py:97
#: documents/models.py:100
msgid "storage paths"
msgstr "percorsi di archiviazione"
#: documents/models.py:105
#: documents/models.py:108
msgid "Unencrypted"
msgstr "Non criptato"
#: documents/models.py:106
#: documents/models.py:109
msgid "Encrypted with GNU Privacy Guard"
msgstr "Criptato con GNU Privacy Guard"
#: documents/models.py:127
#: documents/models.py:130
msgid "title"
msgstr "titolo"
#: documents/models.py:139
#: documents/models.py:142 documents/models.py:611
msgid "content"
msgstr "contenuto"
#: documents/models.py:142
#: documents/models.py:145
msgid "The raw, text-only data of the document. This field is primarily used for searching."
msgstr "I dati grezzi o solo testo del documento. Questo campo è usato principalmente per la ricerca."
#: documents/models.py:147
#: documents/models.py:150
msgid "mime type"
msgstr "tipo mime"
#: documents/models.py:157
#: documents/models.py:160
msgid "checksum"
msgstr "checksum"
#: documents/models.py:161
#: documents/models.py:164
msgid "The checksum of the original document."
msgstr "Il checksum del documento originale."
#: documents/models.py:165
#: documents/models.py:168
msgid "archive checksum"
msgstr "checksum dell'archivio"
#: documents/models.py:170
#: documents/models.py:173
msgid "The checksum of the archived document."
msgstr "Il checksum del documento archiviato."
#: documents/models.py:173 documents/models.py:335 documents/models.py:520
#: documents/models.py:176 documents/models.py:348 documents/models.py:617
msgid "created"
msgstr "creato il"
#: documents/models.py:176
#: documents/models.py:179
msgid "modified"
msgstr "modificato il"
#: documents/models.py:183
#: documents/models.py:186
msgid "storage type"
msgstr "tipo di storage"
#: documents/models.py:191
#: documents/models.py:194
msgid "added"
msgstr "aggiunto il"
#: documents/models.py:198
#: documents/models.py:201
msgid "filename"
msgstr "nome del file"
#: documents/models.py:204
#: documents/models.py:207
msgid "Current filename in storage"
msgstr "Nome del file corrente nello storage"
#: documents/models.py:208
#: documents/models.py:211
msgid "archive filename"
msgstr "Nome file in archivio"
#: documents/models.py:214
#: documents/models.py:217
msgid "Current archive filename in storage"
msgstr "Il nome del file nell'archiviazione"
#: documents/models.py:218
#: documents/models.py:221
msgid "original filename"
msgstr "nome file originale"
#: documents/models.py:227
msgid "The original name of the file when it was uploaded"
msgstr "Il nome originale del file quando è stato caricato"
#: documents/models.py:231
msgid "archive serial number"
msgstr "numero seriale dell'archivio"
#: documents/models.py:224
#: documents/models.py:237
msgid "The position of this document in your physical document archive."
msgstr "Posizione di questo documento all'interno dell'archivio fisico."
#: documents/models.py:230
#: documents/models.py:243 documents/models.py:628
msgid "document"
msgstr "documento"
#: documents/models.py:231
#: documents/models.py:244
msgid "documents"
msgstr "documenti"
#: documents/models.py:318
#: documents/models.py:331
msgid "debug"
msgstr "debug"
#: documents/models.py:319
#: documents/models.py:332
msgid "information"
msgstr "informazione"
#: documents/models.py:320
#: documents/models.py:333
msgid "warning"
msgstr "avvertimento"
#: documents/models.py:321
#: documents/models.py:334
msgid "error"
msgstr "errore"
#: documents/models.py:322
#: documents/models.py:335
msgid "critical"
msgstr "critico"
#: documents/models.py:325
#: documents/models.py:338
msgid "group"
msgstr "gruppo"
#: documents/models.py:327
#: documents/models.py:340
msgid "message"
msgstr "messaggio"
#: documents/models.py:330
#: documents/models.py:343
msgid "level"
msgstr "livello"
#: documents/models.py:339
#: documents/models.py:352
msgid "log"
msgstr "logs"
#: documents/models.py:340
#: documents/models.py:353
msgid "logs"
msgstr "log"
#: documents/models.py:350 documents/models.py:403
#: documents/models.py:363 documents/models.py:419
msgid "saved view"
msgstr "vista salvata"
#: documents/models.py:351
#: documents/models.py:364
msgid "saved views"
msgstr "viste salvate"
#: documents/models.py:353
#: documents/models.py:366 documents/models.py:637
msgid "user"
msgstr "utente"
#: documents/models.py:357
#: documents/models.py:370
msgid "show on dashboard"
msgstr "mostra sul cruscotto"
#: documents/models.py:360
#: documents/models.py:373
msgid "show in sidebar"
msgstr "mostra nella barra laterale"
#: documents/models.py:364
#: documents/models.py:377
msgid "sort field"
msgstr "campo di ordinamento"
#: documents/models.py:369
#: documents/models.py:382
msgid "sort reverse"
msgstr "ordine invertito"
#: documents/models.py:374
#: documents/models.py:387
msgid "title contains"
msgstr "il titolo contiene"
#: documents/models.py:375
#: documents/models.py:388
msgid "content contains"
msgstr "il contenuto contiene"
#: documents/models.py:376
#: documents/models.py:389
msgid "ASN is"
msgstr "ASN è"
#: documents/models.py:377
#: documents/models.py:390
msgid "correspondent is"
msgstr "la corrispondenza è"
#: documents/models.py:378
#: documents/models.py:391
msgid "document type is"
msgstr "il tipo di documento è"
#: documents/models.py:379
#: documents/models.py:392
msgid "is in inbox"
msgstr "è in arrivo"
#: documents/models.py:380
#: documents/models.py:393
msgid "has tag"
msgstr "ha etichetta"
#: documents/models.py:381
#: documents/models.py:394
msgid "has any tag"
msgstr "ha qualsiasi etichetta"
#: documents/models.py:382
#: documents/models.py:395
msgid "created before"
msgstr "creato prima del"
#: documents/models.py:383
#: documents/models.py:396
msgid "created after"
msgstr "creato dopo il"
#: documents/models.py:384
#: documents/models.py:397
msgid "created year is"
msgstr "l'anno di creazione è"
#: documents/models.py:385
#: documents/models.py:398
msgid "created month is"
msgstr "il mese di creazione è"
#: documents/models.py:386
#: documents/models.py:399
msgid "created day is"
msgstr "il giorno di creazione è"
#: documents/models.py:387
#: documents/models.py:400
msgid "added before"
msgstr "aggiunto prima del"
#: documents/models.py:388
#: documents/models.py:401
msgid "added after"
msgstr "aggiunto dopo il"
#: documents/models.py:389
#: documents/models.py:402
msgid "modified before"
msgstr "modificato prima del"
#: documents/models.py:390
#: documents/models.py:403
msgid "modified after"
msgstr "modificato dopo"
#: documents/models.py:391
#: documents/models.py:404
msgid "does not have tag"
msgstr "non ha tag"
#: documents/models.py:392
#: documents/models.py:405
msgid "does not have ASN"
msgstr "non ha ASN"
#: documents/models.py:393
#: documents/models.py:406
msgid "title or content contains"
msgstr "il titolo o il contenuto contiene"
#: documents/models.py:394
#: documents/models.py:407
msgid "fulltext query"
msgstr "query fulltext"
#: documents/models.py:395
#: documents/models.py:408
msgid "more like this"
msgstr "altro come questo"
#: documents/models.py:396
#: documents/models.py:409
msgid "has tags in"
msgstr "ha tag in"
#: documents/models.py:406
#: documents/models.py:410
msgid "ASN greater than"
msgstr "ASN maggiore di"
#: documents/models.py:411
msgid "ASN less than"
msgstr "ASN minore di"
#: documents/models.py:412
msgid "storage path is"
msgstr "il percorso di archiviazione è"
#: documents/models.py:422
msgid "rule type"
msgstr "tipo di regola"
#: documents/models.py:408
#: documents/models.py:424
msgid "value"
msgstr "valore"
#: documents/models.py:411
#: documents/models.py:427
msgid "filter rule"
msgstr "regola filtro"
#: documents/models.py:412
#: documents/models.py:428
msgid "filter rules"
msgstr "regole filtro"
#: documents/models.py:521
msgid "started"
msgstr "avviato"
#: documents/models.py:536
msgid "Task ID"
msgstr "ID Attività"
#: documents/serialisers.py:70
#: documents/models.py:537
msgid "Celery ID for the Task that was run"
msgstr ""
#: documents/models.py:542
msgid "Acknowledged"
msgstr ""
#: documents/models.py:543
msgid "If the task is acknowledged via the frontend or API"
msgstr ""
#: documents/models.py:549 documents/models.py:556
msgid "Task Name"
msgstr ""
#: documents/models.py:550
msgid "Name of the file which the Task was run for"
msgstr ""
#: documents/models.py:557
msgid "Name of the Task which was run"
msgstr ""
#: documents/models.py:562
msgid "Task Positional Arguments"
msgstr ""
#: documents/models.py:564
msgid "JSON representation of the positional arguments used with the task"
msgstr ""
#: documents/models.py:569
msgid "Task Named Arguments"
msgstr ""
#: documents/models.py:571
msgid "JSON representation of the named arguments used with the task"
msgstr ""
#: documents/models.py:578
msgid "Task State"
msgstr ""
#: documents/models.py:579
msgid "Current state of the task being run"
msgstr ""
#: documents/models.py:584
msgid "Created DateTime"
msgstr ""
#: documents/models.py:585
msgid "Datetime field when the task result was created in UTC"
msgstr ""
#: documents/models.py:590
msgid "Started DateTime"
msgstr ""
#: documents/models.py:591
msgid "Datetime field when the task was started in UTC"
msgstr ""
#: documents/models.py:596
msgid "Completed DateTime"
msgstr ""
#: documents/models.py:597
msgid "Datetime field when the task was completed in UTC"
msgstr ""
#: documents/models.py:602
msgid "Result Data"
msgstr ""
#: documents/models.py:604
msgid "The data returned by the task"
msgstr ""
#: documents/models.py:613
msgid "Comment for the document"
msgstr ""
#: documents/models.py:642
msgid "comment"
msgstr "commento"
#: documents/models.py:643
msgid "comments"
msgstr "commenti"
#: documents/serialisers.py:72
#, python-format
msgid "Invalid regular expression: %(error)s"
msgstr "Espressione regolare non valida: %(error)s"
#: documents/serialisers.py:191
#: documents/serialisers.py:193
msgid "Invalid color."
msgstr "Colore non valido."
#: documents/serialisers.py:515
#: documents/serialisers.py:518
#, python-format
msgid "File type %(type)s not supported"
msgstr "Il tipo di file %(type)s non è supportato"
#: documents/serialisers.py:596
#: documents/serialisers.py:599
msgid "Invalid variable detected."
msgstr "Variabile non valida."
@@ -444,87 +556,87 @@ msgstr "Password"
msgid "Sign in"
msgstr "Accedi"
#: paperless/settings.py:339
#: paperless/settings.py:378
msgid "English (US)"
msgstr "Inglese (US)"
#: paperless/settings.py:340
#: paperless/settings.py:379
msgid "Belarusian"
msgstr "Bielorusso"
#: paperless/settings.py:341
#: paperless/settings.py:380
msgid "Czech"
msgstr "Ceco"
#: paperless/settings.py:342
#: paperless/settings.py:381
msgid "Danish"
msgstr "Danese"
#: paperless/settings.py:343
#: paperless/settings.py:382
msgid "German"
msgstr "Tedesco"
#: paperless/settings.py:344
#: paperless/settings.py:383
msgid "English (GB)"
msgstr "Inglese (GB)"
#: paperless/settings.py:345
#: paperless/settings.py:384
msgid "Spanish"
msgstr "Spagnolo"
#: paperless/settings.py:346
#: paperless/settings.py:385
msgid "French"
msgstr "Francese"
#: paperless/settings.py:347
#: paperless/settings.py:386
msgid "Italian"
msgstr "Italiano"
#: paperless/settings.py:348
#: paperless/settings.py:387
msgid "Luxembourgish"
msgstr "Lussemburghese"
#: paperless/settings.py:349
#: paperless/settings.py:388
msgid "Dutch"
msgstr "Olandese"
#: paperless/settings.py:350
#: paperless/settings.py:389
msgid "Polish"
msgstr "Polacco"
#: paperless/settings.py:351
#: paperless/settings.py:390
msgid "Portuguese (Brazil)"
msgstr "Portoghese (Brasile)"
#: paperless/settings.py:352
#: paperless/settings.py:391
msgid "Portuguese"
msgstr "Portoghese"
#: paperless/settings.py:353
#: paperless/settings.py:392
msgid "Romanian"
msgstr "Rumeno"
#: paperless/settings.py:354
#: paperless/settings.py:393
msgid "Russian"
msgstr "Russo"
#: paperless/settings.py:355
#: paperless/settings.py:394
msgid "Slovenian"
msgstr "Sloveno"
#: paperless/settings.py:356
#: paperless/settings.py:395
msgid "Serbian"
msgstr "Serbo"
#: paperless/settings.py:357
#: paperless/settings.py:396
msgid "Swedish"
msgstr "Svedese"
#: paperless/settings.py:358
#: paperless/settings.py:397
msgid "Turkish"
msgstr "Turco"
#: paperless/settings.py:359
#: paperless/settings.py:398
msgid "Chinese Simplified"
msgstr "Cinese semplificato"

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-07-08 14:11-0700\n"
"PO-Revision-Date: 2022-07-08 22:07\n"
"POT-Creation-Date: 2022-11-09 21:50+0000\n"
"PO-Revision-Date: 2022-11-09 23:12\n"
"Last-Translator: \n"
"Language-Team: Luxembourgish\n"
"Language: lb_LU\n"
@@ -21,378 +21,490 @@ msgstr ""
msgid "Documents"
msgstr "Dokumenter"
#: documents/models.py:29
#: documents/models.py:32
msgid "Any word"
msgstr "Iergendee Wuert"
#: documents/models.py:30
#: documents/models.py:33
msgid "All words"
msgstr "All d'Wierder"
#: documents/models.py:31
#: documents/models.py:34
msgid "Exact match"
msgstr "Exakten Treffer"
#: documents/models.py:32
#: documents/models.py:35
msgid "Regular expression"
msgstr "Regulären Ausdrock"
#: documents/models.py:33
#: documents/models.py:36
msgid "Fuzzy word"
msgstr "Ongenaut Wuert"
#: documents/models.py:34
#: documents/models.py:37
msgid "Automatic"
msgstr "Automatesch"
#: documents/models.py:37 documents/models.py:354 paperless_mail/models.py:16
#: documents/models.py:40 documents/models.py:367 paperless_mail/models.py:16
#: paperless_mail/models.py:80
msgid "name"
msgstr "Numm"
#: documents/models.py:39
#: documents/models.py:42
msgid "match"
msgstr "Zouweisungsmuster"
#: documents/models.py:42
#: documents/models.py:45
msgid "matching algorithm"
msgstr "Zouweisungsalgorithmus"
#: documents/models.py:47
#: documents/models.py:50
msgid "is insensitive"
msgstr "Grouss-/Klengschreiwung ignoréieren"
#: documents/models.py:60 documents/models.py:115
#: documents/models.py:63 documents/models.py:118
msgid "correspondent"
msgstr "Korrespondent"
#: documents/models.py:61
#: documents/models.py:64
msgid "correspondents"
msgstr "Korrespondenten"
#: documents/models.py:66
#: documents/models.py:69
msgid "color"
msgstr "Faarf"
#: documents/models.py:69
#: documents/models.py:72
msgid "is inbox tag"
msgstr "Postaganks-Etikett"
#: documents/models.py:72
#: documents/models.py:75
msgid "Marks this tag as an inbox tag: All newly consumed documents will be tagged with inbox tags."
msgstr "Dës Etikett als Postaganks-Etikett markéieren: All nei importéiert Dokumenter kréien ëmmer dës Etikett zougewisen."
#: documents/models.py:78
#: documents/models.py:81
msgid "tag"
msgstr "Etikett"
#: documents/models.py:79 documents/models.py:153
#: documents/models.py:82 documents/models.py:156
msgid "tags"
msgstr "Etiketten"
#: documents/models.py:84 documents/models.py:135
#: documents/models.py:87 documents/models.py:138
msgid "document type"
msgstr "Dokumententyp"
#: documents/models.py:85
#: documents/models.py:88
msgid "document types"
msgstr "Dokumententypen"
#: documents/models.py:90
#: documents/models.py:93
msgid "path"
msgstr "Pfad"
#: documents/models.py:96 documents/models.py:124
#: documents/models.py:99 documents/models.py:127
msgid "storage path"
msgstr "Späicherpfad"
#: documents/models.py:97
#: documents/models.py:100
msgid "storage paths"
msgstr "Späicherpfaden"
#: documents/models.py:105
#: documents/models.py:108
msgid "Unencrypted"
msgstr "Onverschlësselt"
#: documents/models.py:106
#: documents/models.py:109
msgid "Encrypted with GNU Privacy Guard"
msgstr "Verschlësselt mat GNU Privacy Guard"
#: documents/models.py:127
#: documents/models.py:130
msgid "title"
msgstr "Titel"
#: documents/models.py:139
#: documents/models.py:142 documents/models.py:611
msgid "content"
msgstr "Inhalt"
#: documents/models.py:142
#: documents/models.py:145
msgid "The raw, text-only data of the document. This field is primarily used for searching."
msgstr "De réien Textinhalt vum Dokument. Dëst Feld gëtt primär fir d'Sich benotzt."
#: documents/models.py:147
#: documents/models.py:150
msgid "mime type"
msgstr "MIME-Typ"
#: documents/models.py:157
#: documents/models.py:160
msgid "checksum"
msgstr "Préifzomm"
#: documents/models.py:161
#: documents/models.py:164
msgid "The checksum of the original document."
msgstr "D'Préifzomm vum Original-Dokument."
#: documents/models.py:165
#: documents/models.py:168
msgid "archive checksum"
msgstr "Archiv-Préifzomm"
#: documents/models.py:170
#: documents/models.py:173
msgid "The checksum of the archived document."
msgstr "D'Préifzomm vum archivéierten Dokument."
#: documents/models.py:173 documents/models.py:335 documents/models.py:520
#: documents/models.py:176 documents/models.py:348 documents/models.py:617
msgid "created"
msgstr "erstallt"
#: documents/models.py:176
#: documents/models.py:179
msgid "modified"
msgstr "verännert"
#: documents/models.py:183
#: documents/models.py:186
msgid "storage type"
msgstr "Späichertyp"
#: documents/models.py:191
#: documents/models.py:194
msgid "added"
msgstr "derbäigesat"
#: documents/models.py:198
#: documents/models.py:201
msgid "filename"
msgstr "Fichiersnumm"
#: documents/models.py:204
#: documents/models.py:207
msgid "Current filename in storage"
msgstr "Aktuellen Dateinumm am Späicher"
#: documents/models.py:208
#: documents/models.py:211
msgid "archive filename"
msgstr "Archiv-Dateinumm"
#: documents/models.py:214
#: documents/models.py:217
msgid "Current archive filename in storage"
msgstr "Aktuellen Dateinumm am Archiv"
#: documents/models.py:218
#: documents/models.py:221
msgid "original filename"
msgstr ""
#: documents/models.py:227
msgid "The original name of the file when it was uploaded"
msgstr ""
#: documents/models.py:231
msgid "archive serial number"
msgstr "Archiv-Seriennummer"
#: documents/models.py:224
#: documents/models.py:237
msgid "The position of this document in your physical document archive."
msgstr "D'Positioun vun dësem Dokument am physeschen Dokumentenarchiv."
#: documents/models.py:230
#: documents/models.py:243 documents/models.py:628
msgid "document"
msgstr "Dokument"
#: documents/models.py:231
#: documents/models.py:244
msgid "documents"
msgstr "Dokumenter"
#: documents/models.py:318
#: documents/models.py:331
msgid "debug"
msgstr "Fehlersiich"
#: documents/models.py:319
#: documents/models.py:332
msgid "information"
msgstr "Informatioun"
#: documents/models.py:320
#: documents/models.py:333
msgid "warning"
msgstr "Warnung"
#: documents/models.py:321
#: documents/models.py:334
msgid "error"
msgstr "Feeler"
#: documents/models.py:322
#: documents/models.py:335
msgid "critical"
msgstr "kritesch"
#: documents/models.py:325
#: documents/models.py:338
msgid "group"
msgstr "Grupp"
#: documents/models.py:327
#: documents/models.py:340
msgid "message"
msgstr "Message"
#: documents/models.py:330
#: documents/models.py:343
msgid "level"
msgstr "Niveau"
#: documents/models.py:339
#: documents/models.py:352
msgid "log"
msgstr "Protokoll"
#: documents/models.py:340
#: documents/models.py:353
msgid "logs"
msgstr "Protokoller"
#: documents/models.py:350 documents/models.py:403
#: documents/models.py:363 documents/models.py:419
msgid "saved view"
msgstr "Gespäichert Usiicht"
#: documents/models.py:351
#: documents/models.py:364
msgid "saved views"
msgstr "Gespäichert Usiichten"
#: documents/models.py:353
#: documents/models.py:366 documents/models.py:637
msgid "user"
msgstr "Benotzer"
#: documents/models.py:357
#: documents/models.py:370
msgid "show on dashboard"
msgstr "Op der Startsäit uweisen"
#: documents/models.py:360
#: documents/models.py:373
msgid "show in sidebar"
msgstr "An der Säiteleescht uweisen"
#: documents/models.py:364
#: documents/models.py:377
msgid "sort field"
msgstr "Zortéierfeld"
#: documents/models.py:369
#: documents/models.py:382
msgid "sort reverse"
msgstr "ëmgedréint zortéieren"
#: documents/models.py:374
#: documents/models.py:387
msgid "title contains"
msgstr "Titel enthält"
#: documents/models.py:375
#: documents/models.py:388
msgid "content contains"
msgstr "Inhalt enthält"
#: documents/models.py:376
#: documents/models.py:389
msgid "ASN is"
msgstr "ASN ass"
#: documents/models.py:377
#: documents/models.py:390
msgid "correspondent is"
msgstr "Korrespondent ass"
#: documents/models.py:378
#: documents/models.py:391
msgid "document type is"
msgstr "Dokumententyp ass"
#: documents/models.py:379
#: documents/models.py:392
msgid "is in inbox"
msgstr "ass am Postagank"
#: documents/models.py:380
#: documents/models.py:393
msgid "has tag"
msgstr "huet Etikett"
#: documents/models.py:381
#: documents/models.py:394
msgid "has any tag"
msgstr "huet iergendeng Etikett"
#: documents/models.py:382
#: documents/models.py:395
msgid "created before"
msgstr "erstallt virun"
#: documents/models.py:383
#: documents/models.py:396
msgid "created after"
msgstr "erstallt no"
#: documents/models.py:384
#: documents/models.py:397
msgid "created year is"
msgstr "Erstellungsjoer ass"
#: documents/models.py:385
#: documents/models.py:398
msgid "created month is"
msgstr "Erstellungsmount ass"
#: documents/models.py:386
#: documents/models.py:399
msgid "created day is"
msgstr "Erstellungsdag ass"
#: documents/models.py:387
#: documents/models.py:400
msgid "added before"
msgstr "dobäigesat virun"
#: documents/models.py:388
#: documents/models.py:401
msgid "added after"
msgstr "dobäigesat no"
#: documents/models.py:389
#: documents/models.py:402
msgid "modified before"
msgstr "verännert virun"
#: documents/models.py:390
#: documents/models.py:403
msgid "modified after"
msgstr "verännert no"
#: documents/models.py:391
#: documents/models.py:404
msgid "does not have tag"
msgstr "huet dës Etikett net"
#: documents/models.py:392
#: documents/models.py:405
msgid "does not have ASN"
msgstr "huet keng ASN"
#: documents/models.py:393
#: documents/models.py:406
msgid "title or content contains"
msgstr "Titel oder Inhalt enthalen"
#: documents/models.py:394
#: documents/models.py:407
msgid "fulltext query"
msgstr "Volltextsich"
#: documents/models.py:395
#: documents/models.py:408
msgid "more like this"
msgstr "ähnlech Dokumenter"
#: documents/models.py:396
#: documents/models.py:409
msgid "has tags in"
msgstr "huet Etiketten an"
#: documents/models.py:406
#: documents/models.py:410
msgid "ASN greater than"
msgstr ""
#: documents/models.py:411
msgid "ASN less than"
msgstr ""
#: documents/models.py:412
msgid "storage path is"
msgstr ""
#: documents/models.py:422
msgid "rule type"
msgstr "Reegeltyp"
#: documents/models.py:408
#: documents/models.py:424
msgid "value"
msgstr "Wäert"
#: documents/models.py:411
#: documents/models.py:427
msgid "filter rule"
msgstr "Filterreegel"
#: documents/models.py:412
#: documents/models.py:428
msgid "filter rules"
msgstr "Filterreegelen"
#: documents/models.py:521
msgid "started"
#: documents/models.py:536
msgid "Task ID"
msgstr ""
#: documents/serialisers.py:70
#: documents/models.py:537
msgid "Celery ID for the Task that was run"
msgstr ""
#: documents/models.py:542
msgid "Acknowledged"
msgstr ""
#: documents/models.py:543
msgid "If the task is acknowledged via the frontend or API"
msgstr ""
#: documents/models.py:549 documents/models.py:556
msgid "Task Name"
msgstr ""
#: documents/models.py:550
msgid "Name of the file which the Task was run for"
msgstr ""
#: documents/models.py:557
msgid "Name of the Task which was run"
msgstr ""
#: documents/models.py:562
msgid "Task Positional Arguments"
msgstr ""
#: documents/models.py:564
msgid "JSON representation of the positional arguments used with the task"
msgstr ""
#: documents/models.py:569
msgid "Task Named Arguments"
msgstr ""
#: documents/models.py:571
msgid "JSON representation of the named arguments used with the task"
msgstr ""
#: documents/models.py:578
msgid "Task State"
msgstr ""
#: documents/models.py:579
msgid "Current state of the task being run"
msgstr ""
#: documents/models.py:584
msgid "Created DateTime"
msgstr ""
#: documents/models.py:585
msgid "Datetime field when the task result was created in UTC"
msgstr ""
#: documents/models.py:590
msgid "Started DateTime"
msgstr ""
#: documents/models.py:591
msgid "Datetime field when the task was started in UTC"
msgstr ""
#: documents/models.py:596
msgid "Completed DateTime"
msgstr ""
#: documents/models.py:597
msgid "Datetime field when the task was completed in UTC"
msgstr ""
#: documents/models.py:602
msgid "Result Data"
msgstr ""
#: documents/models.py:604
msgid "The data returned by the task"
msgstr ""
#: documents/models.py:613
msgid "Comment for the document"
msgstr ""
#: documents/models.py:642
msgid "comment"
msgstr ""
#: documents/models.py:643
msgid "comments"
msgstr ""
#: documents/serialisers.py:72
#, python-format
msgid "Invalid regular expression: %(error)s"
msgstr "Ongëltege regulären Ausdrock: %(error)s"
#: documents/serialisers.py:191
#: documents/serialisers.py:193
msgid "Invalid color."
msgstr "Ongëlteg Faarf."
#: documents/serialisers.py:515
#: documents/serialisers.py:518
#, python-format
msgid "File type %(type)s not supported"
msgstr "Fichierstyp %(type)s net ënnerstëtzt"
#: documents/serialisers.py:596
#: documents/serialisers.py:599
msgid "Invalid variable detected."
msgstr "Ongëlteg Zeechen detektéiert."
@@ -444,87 +556,87 @@ msgstr "Passwuert"
msgid "Sign in"
msgstr "Umellen"
#: paperless/settings.py:339
#: paperless/settings.py:378
msgid "English (US)"
msgstr "Englesch (USA)"
#: paperless/settings.py:340
#: paperless/settings.py:379
msgid "Belarusian"
msgstr "Belarusesch"
#: paperless/settings.py:341
#: paperless/settings.py:380
msgid "Czech"
msgstr "Tschechesch"
#: paperless/settings.py:342
#: paperless/settings.py:381
msgid "Danish"
msgstr "Dänesch"
#: paperless/settings.py:343
#: paperless/settings.py:382
msgid "German"
msgstr "Däitsch"
#: paperless/settings.py:344
#: paperless/settings.py:383
msgid "English (GB)"
msgstr "Englesch (GB)"
#: paperless/settings.py:345
#: paperless/settings.py:384
msgid "Spanish"
msgstr "Spuenesch"
#: paperless/settings.py:346
#: paperless/settings.py:385
msgid "French"
msgstr "Franséisch"
#: paperless/settings.py:347
#: paperless/settings.py:386
msgid "Italian"
msgstr "Italienesch"
#: paperless/settings.py:348
#: paperless/settings.py:387
msgid "Luxembourgish"
msgstr "Lëtzebuergesch"
#: paperless/settings.py:349
#: paperless/settings.py:388
msgid "Dutch"
msgstr "Hollännesch"
#: paperless/settings.py:350
#: paperless/settings.py:389
msgid "Polish"
msgstr "Polnesch"
#: paperless/settings.py:351
#: paperless/settings.py:390
msgid "Portuguese (Brazil)"
msgstr "Portugisesch (Brasilien)"
#: paperless/settings.py:352
#: paperless/settings.py:391
msgid "Portuguese"
msgstr "Portugisesch"
#: paperless/settings.py:353
#: paperless/settings.py:392
msgid "Romanian"
msgstr "Rumänesch"
#: paperless/settings.py:354
#: paperless/settings.py:393
msgid "Russian"
msgstr "Russesch"
#: paperless/settings.py:355
#: paperless/settings.py:394
msgid "Slovenian"
msgstr "Slowenesch"
#: paperless/settings.py:356
#: paperless/settings.py:395
msgid "Serbian"
msgstr "Serbesch"
#: paperless/settings.py:357
#: paperless/settings.py:396
msgid "Swedish"
msgstr "Schwedesch"
#: paperless/settings.py:358
#: paperless/settings.py:397
msgid "Turkish"
msgstr "Tierkesch"
#: paperless/settings.py:359
#: paperless/settings.py:398
msgid "Chinese Simplified"
msgstr "Chinesesch (Vereinfacht)"

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-07-08 14:11-0700\n"
"PO-Revision-Date: 2022-10-27 09:51\n"
"POT-Creation-Date: 2022-11-09 21:50+0000\n"
"PO-Revision-Date: 2022-11-09 23:12\n"
"Last-Translator: \n"
"Language-Team: Dutch\n"
"Language: nl_NL\n"
@@ -21,378 +21,490 @@ msgstr ""
msgid "Documents"
msgstr "Documenten"
#: documents/models.py:29
#: documents/models.py:32
msgid "Any word"
msgstr "Elk woord"
#: documents/models.py:30
#: documents/models.py:33
msgid "All words"
msgstr "Alle woorden"
#: documents/models.py:31
#: documents/models.py:34
msgid "Exact match"
msgstr "Exacte overeenkomst"
#: documents/models.py:32
#: documents/models.py:35
msgid "Regular expression"
msgstr "Reguliere expressie"
#: documents/models.py:33
#: documents/models.py:36
msgid "Fuzzy word"
msgstr "Gelijkaardig woord"
#: documents/models.py:34
#: documents/models.py:37
msgid "Automatic"
msgstr "Automatisch"
#: documents/models.py:37 documents/models.py:354 paperless_mail/models.py:16
#: documents/models.py:40 documents/models.py:367 paperless_mail/models.py:16
#: paperless_mail/models.py:80
msgid "name"
msgstr "naam"
#: documents/models.py:39
#: documents/models.py:42
msgid "match"
msgstr "Overeenkomst"
#: documents/models.py:42
#: documents/models.py:45
msgid "matching algorithm"
msgstr "Algoritme voor het bepalen van de overeenkomst"
#: documents/models.py:47
#: documents/models.py:50
msgid "is insensitive"
msgstr "is niet hoofdlettergevoelig"
#: documents/models.py:60 documents/models.py:115
#: documents/models.py:63 documents/models.py:118
msgid "correspondent"
msgstr "correspondent"
#: documents/models.py:61
#: documents/models.py:64
msgid "correspondents"
msgstr "correspondenten"
#: documents/models.py:66
#: documents/models.py:69
msgid "color"
msgstr "Kleur"
#: documents/models.py:69
#: documents/models.py:72
msgid "is inbox tag"
msgstr "is \"Postvak in\"-label"
#: documents/models.py:72
#: documents/models.py:75
msgid "Marks this tag as an inbox tag: All newly consumed documents will be tagged with inbox tags."
msgstr "Markeert dit label als een \"Postvak in\"-label: alle nieuw verwerkte documenten krijgen de \"Postvak in\"-labels."
#: documents/models.py:78
#: documents/models.py:81
msgid "tag"
msgstr "label"
#: documents/models.py:79 documents/models.py:153
#: documents/models.py:82 documents/models.py:156
msgid "tags"
msgstr "labels"
#: documents/models.py:84 documents/models.py:135
#: documents/models.py:87 documents/models.py:138
msgid "document type"
msgstr "documenttype"
#: documents/models.py:85
#: documents/models.py:88
msgid "document types"
msgstr "documenttypen"
#: documents/models.py:90
#: documents/models.py:93
msgid "path"
msgstr "pad"
#: documents/models.py:96 documents/models.py:124
#: documents/models.py:99 documents/models.py:127
msgid "storage path"
msgstr "opslag pad"
#: documents/models.py:97
#: documents/models.py:100
msgid "storage paths"
msgstr "opslag paden"
#: documents/models.py:105
#: documents/models.py:108
msgid "Unencrypted"
msgstr "Niet versleuteld"
#: documents/models.py:106
#: documents/models.py:109
msgid "Encrypted with GNU Privacy Guard"
msgstr "Versleuteld met GNU Privacy Guard"
#: documents/models.py:127
#: documents/models.py:130
msgid "title"
msgstr "titel"
#: documents/models.py:139
#: documents/models.py:142 documents/models.py:611
msgid "content"
msgstr "inhoud"
#: documents/models.py:142
#: documents/models.py:145
msgid "The raw, text-only data of the document. This field is primarily used for searching."
msgstr "De onbewerkte gegevens van het document. Dit veld wordt voornamelijk gebruikt om te zoeken."
#: documents/models.py:147
#: documents/models.py:150
msgid "mime type"
msgstr "mimetype"
#: documents/models.py:157
#: documents/models.py:160
msgid "checksum"
msgstr "checksum"
#: documents/models.py:161
#: documents/models.py:164
msgid "The checksum of the original document."
msgstr "De checksum van het oorspronkelijke document."
#: documents/models.py:165
#: documents/models.py:168
msgid "archive checksum"
msgstr "archief checksum"
#: documents/models.py:170
#: documents/models.py:173
msgid "The checksum of the archived document."
msgstr "De checksum van het gearchiveerde document."
#: documents/models.py:173 documents/models.py:335 documents/models.py:520
#: documents/models.py:176 documents/models.py:348 documents/models.py:617
msgid "created"
msgstr "aangemaakt"
#: documents/models.py:176
#: documents/models.py:179
msgid "modified"
msgstr "gewijzigd"
#: documents/models.py:183
#: documents/models.py:186
msgid "storage type"
msgstr "type opslag"
#: documents/models.py:191
#: documents/models.py:194
msgid "added"
msgstr "toegevoegd"
#: documents/models.py:198
#: documents/models.py:201
msgid "filename"
msgstr "bestandsnaam"
#: documents/models.py:204
#: documents/models.py:207
msgid "Current filename in storage"
msgstr "Huidige bestandsnaam in opslag"
#: documents/models.py:208
#: documents/models.py:211
msgid "archive filename"
msgstr "Bestandsnaam in archief"
#: documents/models.py:214
#: documents/models.py:217
msgid "Current archive filename in storage"
msgstr "Huidige bestandsnaam in archief"
#: documents/models.py:218
#: documents/models.py:221
msgid "original filename"
msgstr ""
#: documents/models.py:227
msgid "The original name of the file when it was uploaded"
msgstr ""
#: documents/models.py:231
msgid "archive serial number"
msgstr "serienummer in archief"
#: documents/models.py:224
#: documents/models.py:237
msgid "The position of this document in your physical document archive."
msgstr "De positie van dit document in je fysieke documentenarchief."
#: documents/models.py:230
#: documents/models.py:243 documents/models.py:628
msgid "document"
msgstr "document"
#: documents/models.py:231
#: documents/models.py:244
msgid "documents"
msgstr "documenten"
#: documents/models.py:318
#: documents/models.py:331
msgid "debug"
msgstr "debug"
#: documents/models.py:319
#: documents/models.py:332
msgid "information"
msgstr "informatie"
#: documents/models.py:320
#: documents/models.py:333
msgid "warning"
msgstr "waarschuwing"
#: documents/models.py:321
#: documents/models.py:334
msgid "error"
msgstr "fout"
#: documents/models.py:322
#: documents/models.py:335
msgid "critical"
msgstr "kritisch"
#: documents/models.py:325
#: documents/models.py:338
msgid "group"
msgstr "groep"
#: documents/models.py:327
#: documents/models.py:340
msgid "message"
msgstr "bericht"
#: documents/models.py:330
#: documents/models.py:343
msgid "level"
msgstr "niveau"
#: documents/models.py:339
#: documents/models.py:352
msgid "log"
msgstr "bericht"
#: documents/models.py:340
#: documents/models.py:353
msgid "logs"
msgstr "berichten"
#: documents/models.py:350 documents/models.py:403
#: documents/models.py:363 documents/models.py:419
msgid "saved view"
msgstr "opgeslagen view"
#: documents/models.py:351
#: documents/models.py:364
msgid "saved views"
msgstr "opgeslagen views"
#: documents/models.py:353
#: documents/models.py:366 documents/models.py:637
msgid "user"
msgstr "gebruiker"
#: documents/models.py:357
#: documents/models.py:370
msgid "show on dashboard"
msgstr "weergeven op dashboard"
#: documents/models.py:360
#: documents/models.py:373
msgid "show in sidebar"
msgstr "weergeven in zijbalk"
#: documents/models.py:364
#: documents/models.py:377
msgid "sort field"
msgstr "sorteerveld"
#: documents/models.py:369
#: documents/models.py:382
msgid "sort reverse"
msgstr "omgekeerd sorteren"
#: documents/models.py:374
#: documents/models.py:387
msgid "title contains"
msgstr "titel bevat"
#: documents/models.py:375
#: documents/models.py:388
msgid "content contains"
msgstr "inhoud bevat"
#: documents/models.py:376
#: documents/models.py:389
msgid "ASN is"
msgstr "ASN is"
#: documents/models.py:377
#: documents/models.py:390
msgid "correspondent is"
msgstr "correspondent is"
#: documents/models.py:378
#: documents/models.py:391
msgid "document type is"
msgstr "documenttype is"
#: documents/models.py:379
#: documents/models.py:392
msgid "is in inbox"
msgstr "zit in \"Postvak in\""
#: documents/models.py:380
#: documents/models.py:393
msgid "has tag"
msgstr "heeft label"
#: documents/models.py:381
#: documents/models.py:394
msgid "has any tag"
msgstr "heeft één van de labels"
#: documents/models.py:382
#: documents/models.py:395
msgid "created before"
msgstr "aangemaakt voor"
#: documents/models.py:383
#: documents/models.py:396
msgid "created after"
msgstr "aangemaakt na"
#: documents/models.py:384
#: documents/models.py:397
msgid "created year is"
msgstr "aangemaakt jaar is"
#: documents/models.py:385
#: documents/models.py:398
msgid "created month is"
msgstr "aangemaakte maand is"
#: documents/models.py:386
#: documents/models.py:399
msgid "created day is"
msgstr "aangemaakte dag is"
#: documents/models.py:387
#: documents/models.py:400
msgid "added before"
msgstr "toegevoegd voor"
#: documents/models.py:388
#: documents/models.py:401
msgid "added after"
msgstr "toegevoegd na"
#: documents/models.py:389
#: documents/models.py:402
msgid "modified before"
msgstr "gewijzigd voor"
#: documents/models.py:390
#: documents/models.py:403
msgid "modified after"
msgstr "gewijzigd na"
#: documents/models.py:391
#: documents/models.py:404
msgid "does not have tag"
msgstr "heeft geen label"
#: documents/models.py:392
#: documents/models.py:405
msgid "does not have ASN"
msgstr "heeft geen ASN"
#: documents/models.py:393
#: documents/models.py:406
msgid "title or content contains"
msgstr "titel of inhoud bevat"
#: documents/models.py:394
#: documents/models.py:407
msgid "fulltext query"
msgstr "inhoud doorzoeken"
#: documents/models.py:395
#: documents/models.py:408
msgid "more like this"
msgstr "meer zoals dit"
#: documents/models.py:396
#: documents/models.py:409
msgid "has tags in"
msgstr "heeft tags in"
#: documents/models.py:406
#: documents/models.py:410
msgid "ASN greater than"
msgstr ""
#: documents/models.py:411
msgid "ASN less than"
msgstr ""
#: documents/models.py:412
msgid "storage path is"
msgstr ""
#: documents/models.py:422
msgid "rule type"
msgstr "type regel"
#: documents/models.py:408
#: documents/models.py:424
msgid "value"
msgstr "waarde"
#: documents/models.py:411
#: documents/models.py:427
msgid "filter rule"
msgstr "filterregel"
#: documents/models.py:412
#: documents/models.py:428
msgid "filter rules"
msgstr "filterregels"
#: documents/models.py:521
msgid "started"
msgstr "gestart"
#: documents/models.py:536
msgid "Task ID"
msgstr ""
#: documents/serialisers.py:70
#: documents/models.py:537
msgid "Celery ID for the Task that was run"
msgstr ""
#: documents/models.py:542
msgid "Acknowledged"
msgstr ""
#: documents/models.py:543
msgid "If the task is acknowledged via the frontend or API"
msgstr ""
#: documents/models.py:549 documents/models.py:556
msgid "Task Name"
msgstr ""
#: documents/models.py:550
msgid "Name of the file which the Task was run for"
msgstr ""
#: documents/models.py:557
msgid "Name of the Task which was run"
msgstr ""
#: documents/models.py:562
msgid "Task Positional Arguments"
msgstr ""
#: documents/models.py:564
msgid "JSON representation of the positional arguments used with the task"
msgstr ""
#: documents/models.py:569
msgid "Task Named Arguments"
msgstr ""
#: documents/models.py:571
msgid "JSON representation of the named arguments used with the task"
msgstr ""
#: documents/models.py:578
msgid "Task State"
msgstr ""
#: documents/models.py:579
msgid "Current state of the task being run"
msgstr ""
#: documents/models.py:584
msgid "Created DateTime"
msgstr ""
#: documents/models.py:585
msgid "Datetime field when the task result was created in UTC"
msgstr ""
#: documents/models.py:590
msgid "Started DateTime"
msgstr ""
#: documents/models.py:591
msgid "Datetime field when the task was started in UTC"
msgstr ""
#: documents/models.py:596
msgid "Completed DateTime"
msgstr ""
#: documents/models.py:597
msgid "Datetime field when the task was completed in UTC"
msgstr ""
#: documents/models.py:602
msgid "Result Data"
msgstr ""
#: documents/models.py:604
msgid "The data returned by the task"
msgstr ""
#: documents/models.py:613
msgid "Comment for the document"
msgstr ""
#: documents/models.py:642
msgid "comment"
msgstr ""
#: documents/models.py:643
msgid "comments"
msgstr ""
#: documents/serialisers.py:72
#, python-format
msgid "Invalid regular expression: %(error)s"
msgstr "Ongeldige reguliere expressie: %(error)s"
#: documents/serialisers.py:191
#: documents/serialisers.py:193
msgid "Invalid color."
msgstr "Ongeldig kleur."
#: documents/serialisers.py:515
#: documents/serialisers.py:518
#, python-format
msgid "File type %(type)s not supported"
msgstr "Bestandstype %(type)s niet ondersteund"
#: documents/serialisers.py:596
#: documents/serialisers.py:599
msgid "Invalid variable detected."
msgstr "Ongeldige variabele ontdekt."
@@ -444,87 +556,87 @@ msgstr "Wachtwoord"
msgid "Sign in"
msgstr "Aanmelden"
#: paperless/settings.py:339
#: paperless/settings.py:378
msgid "English (US)"
msgstr "Engels (US)"
#: paperless/settings.py:340
#: paperless/settings.py:379
msgid "Belarusian"
msgstr "Wit-Russisch"
#: paperless/settings.py:341
#: paperless/settings.py:380
msgid "Czech"
msgstr "Tsjechisch"
#: paperless/settings.py:342
#: paperless/settings.py:381
msgid "Danish"
msgstr "Deens"
#: paperless/settings.py:343
#: paperless/settings.py:382
msgid "German"
msgstr "Duits"
#: paperless/settings.py:344
#: paperless/settings.py:383
msgid "English (GB)"
msgstr "Engels (Brits)"
#: paperless/settings.py:345
#: paperless/settings.py:384
msgid "Spanish"
msgstr "Spaans"
#: paperless/settings.py:346
#: paperless/settings.py:385
msgid "French"
msgstr "Frans"
#: paperless/settings.py:347
#: paperless/settings.py:386
msgid "Italian"
msgstr "Italiaans"
#: paperless/settings.py:348
#: paperless/settings.py:387
msgid "Luxembourgish"
msgstr "Luxemburgs"
#: paperless/settings.py:349
#: paperless/settings.py:388
msgid "Dutch"
msgstr "Nederlands"
#: paperless/settings.py:350
#: paperless/settings.py:389
msgid "Polish"
msgstr "Pools"
#: paperless/settings.py:351
#: paperless/settings.py:390
msgid "Portuguese (Brazil)"
msgstr "Portugees (Brazilië)"
#: paperless/settings.py:352
#: paperless/settings.py:391
msgid "Portuguese"
msgstr "Portugees"
#: paperless/settings.py:353
#: paperless/settings.py:392
msgid "Romanian"
msgstr "Roemeens"
#: paperless/settings.py:354
#: paperless/settings.py:393
msgid "Russian"
msgstr "Russisch"
#: paperless/settings.py:355
#: paperless/settings.py:394
msgid "Slovenian"
msgstr "Sloveens"
#: paperless/settings.py:356
#: paperless/settings.py:395
msgid "Serbian"
msgstr "Servisch"
#: paperless/settings.py:357
#: paperless/settings.py:396
msgid "Swedish"
msgstr "Zweeds"
#: paperless/settings.py:358
#: paperless/settings.py:397
msgid "Turkish"
msgstr "Turks"
#: paperless/settings.py:359
#: paperless/settings.py:398
msgid "Chinese Simplified"
msgstr "Chinees (vereenvoudigd)"

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-07-08 14:11-0700\n"
"PO-Revision-Date: 2022-08-03 08:59\n"
"POT-Creation-Date: 2022-11-09 21:50+0000\n"
"PO-Revision-Date: 2022-11-29 08:29\n"
"Last-Translator: \n"
"Language-Team: Norwegian\n"
"Language: no_NO\n"
@@ -21,378 +21,490 @@ msgstr ""
msgid "Documents"
msgstr "Dokumenter"
#: documents/models.py:29
#: documents/models.py:32
msgid "Any word"
msgstr "Hvilket som helst ord"
#: documents/models.py:30
#: documents/models.py:33
msgid "All words"
msgstr "Alle ord"
#: documents/models.py:31
#: documents/models.py:34
msgid "Exact match"
msgstr "Eksakt match"
#: documents/models.py:32
#: documents/models.py:35
msgid "Regular expression"
msgstr "Regulære uttrykk"
#: documents/models.py:33
#: documents/models.py:36
msgid "Fuzzy word"
msgstr "Fuzzy word"
#: documents/models.py:34
#: documents/models.py:37
msgid "Automatic"
msgstr "Automatisk"
#: documents/models.py:37 documents/models.py:354 paperless_mail/models.py:16
#: documents/models.py:40 documents/models.py:367 paperless_mail/models.py:16
#: paperless_mail/models.py:80
msgid "name"
msgstr "navn"
#: documents/models.py:39
#: documents/models.py:42
msgid "match"
msgstr "treff"
#: documents/models.py:42
#: documents/models.py:45
msgid "matching algorithm"
msgstr "samsvarende algoritme"
#: documents/models.py:47
#: documents/models.py:50
msgid "is insensitive"
msgstr "er insensitiv"
#: documents/models.py:60 documents/models.py:115
#: documents/models.py:63 documents/models.py:118
msgid "correspondent"
msgstr "korrespondent"
#: documents/models.py:61
#: documents/models.py:64
msgid "correspondents"
msgstr "korrespondenter"
#: documents/models.py:66
#: documents/models.py:69
msgid "color"
msgstr "farge"
#: documents/models.py:69
#: documents/models.py:72
msgid "is inbox tag"
msgstr "er innboks tag"
#: documents/models.py:72
#: documents/models.py:75
msgid "Marks this tag as an inbox tag: All newly consumed documents will be tagged with inbox tags."
msgstr "Markerer dette merket som en innboks-tag: Alle nybrukte dokumenter vil bli merket med innboks-tagger."
#: documents/models.py:78
#: documents/models.py:81
msgid "tag"
msgstr "tagg"
#: documents/models.py:79 documents/models.py:153
#: documents/models.py:82 documents/models.py:156
msgid "tags"
msgstr "tagger"
#: documents/models.py:84 documents/models.py:135
#: documents/models.py:87 documents/models.py:138
msgid "document type"
msgstr "dokument type"
#: documents/models.py:85
#: documents/models.py:88
msgid "document types"
msgstr "dokumenttyper"
#: documents/models.py:90
#: documents/models.py:93
msgid "path"
msgstr "sti"
#: documents/models.py:96 documents/models.py:124
#: documents/models.py:99 documents/models.py:127
msgid "storage path"
msgstr "lagringssti"
#: documents/models.py:97
#: documents/models.py:100
msgid "storage paths"
msgstr "lagringsveier"
#: documents/models.py:105
#: documents/models.py:108
msgid "Unencrypted"
msgstr "Ukryptert"
#: documents/models.py:106
#: documents/models.py:109
msgid "Encrypted with GNU Privacy Guard"
msgstr "Kryptert med GNU Personvernvakt"
#: documents/models.py:127
#: documents/models.py:130
msgid "title"
msgstr "tittel"
#: documents/models.py:139
#: documents/models.py:142 documents/models.py:611
msgid "content"
msgstr "innhold"
#: documents/models.py:142
#: documents/models.py:145
msgid "The raw, text-only data of the document. This field is primarily used for searching."
msgstr "Raw, tekstbare data fra dokumentet. Dette feltet brukes primært for søking."
#: documents/models.py:147
#: documents/models.py:150
msgid "mime type"
msgstr "mime type"
#: documents/models.py:157
#: documents/models.py:160
msgid "checksum"
msgstr "sjekksum"
#: documents/models.py:161
#: documents/models.py:164
msgid "The checksum of the original document."
msgstr "Sjekksummen av det opprinnelige dokumentet."
#: documents/models.py:165
#: documents/models.py:168
msgid "archive checksum"
msgstr "arkiv sjekksum"
#: documents/models.py:170
#: documents/models.py:173
msgid "The checksum of the archived document."
msgstr "Sjekksummen av det arkiverte dokumentet."
#: documents/models.py:173 documents/models.py:335 documents/models.py:520
#: documents/models.py:176 documents/models.py:348 documents/models.py:617
msgid "created"
msgstr "opprettet"
#: documents/models.py:176
#: documents/models.py:179
msgid "modified"
msgstr "endret"
#: documents/models.py:183
#: documents/models.py:186
msgid "storage type"
msgstr "lagringstype"
#: documents/models.py:191
#: documents/models.py:194
msgid "added"
msgstr "lagt til"
#: documents/models.py:198
#: documents/models.py:201
msgid "filename"
msgstr "filnavn"
#: documents/models.py:204
#: documents/models.py:207
msgid "Current filename in storage"
msgstr "Gjeldende filnavn i lagring"
#: documents/models.py:208
#: documents/models.py:211
msgid "archive filename"
msgstr "arkiver filnavn"
#: documents/models.py:214
#: documents/models.py:217
msgid "Current archive filename in storage"
msgstr "Gjeldende arkiv filnavn i lagring"
#: documents/models.py:218
#: documents/models.py:221
msgid "original filename"
msgstr "opprinnelig filnavn"
#: documents/models.py:227
msgid "The original name of the file when it was uploaded"
msgstr "Det opprinnelige filnavnet da den ble lastet opp"
#: documents/models.py:231
msgid "archive serial number"
msgstr "arkiver serienummer"
#: documents/models.py:224
#: documents/models.py:237
msgid "The position of this document in your physical document archive."
msgstr "Dokumentets posisjon i ditt fysiske dokumentarkiv."
#: documents/models.py:230
#: documents/models.py:243 documents/models.py:628
msgid "document"
msgstr "dokument"
#: documents/models.py:231
#: documents/models.py:244
msgid "documents"
msgstr "dokumenter"
#: documents/models.py:318
#: documents/models.py:331
msgid "debug"
msgstr "feilsøk"
#: documents/models.py:319
#: documents/models.py:332
msgid "information"
msgstr "informasjon"
#: documents/models.py:320
#: documents/models.py:333
msgid "warning"
msgstr "advarsel"
#: documents/models.py:321
#: documents/models.py:334
msgid "error"
msgstr "feil"
#: documents/models.py:322
#: documents/models.py:335
msgid "critical"
msgstr "kritisk"
#: documents/models.py:325
#: documents/models.py:338
msgid "group"
msgstr "gruppe"
#: documents/models.py:327
#: documents/models.py:340
msgid "message"
msgstr "melding"
#: documents/models.py:330
#: documents/models.py:343
msgid "level"
msgstr "nivå"
#: documents/models.py:339
#: documents/models.py:352
msgid "log"
msgstr "Logg"
#: documents/models.py:340
#: documents/models.py:353
msgid "logs"
msgstr "logger"
#: documents/models.py:350 documents/models.py:403
#: documents/models.py:363 documents/models.py:419
msgid "saved view"
msgstr "lagret visning"
#: documents/models.py:351
#: documents/models.py:364
msgid "saved views"
msgstr "lagrede visninger"
#: documents/models.py:353
#: documents/models.py:366 documents/models.py:637
msgid "user"
msgstr "bruker"
#: documents/models.py:357
#: documents/models.py:370
msgid "show on dashboard"
msgstr "vis på dashbordet"
#: documents/models.py:360
#: documents/models.py:373
msgid "show in sidebar"
msgstr "vis i sidestolpen"
#: documents/models.py:364
#: documents/models.py:377
msgid "sort field"
msgstr "sorter felt"
#: documents/models.py:369
#: documents/models.py:382
msgid "sort reverse"
msgstr "sorter på baksiden"
#: documents/models.py:374
#: documents/models.py:387
msgid "title contains"
msgstr "tittelen inneholder"
#: documents/models.py:375
#: documents/models.py:388
msgid "content contains"
msgstr "innholdet inneholder"
#: documents/models.py:376
#: documents/models.py:389
msgid "ASN is"
msgstr "ASN er"
#: documents/models.py:377
#: documents/models.py:390
msgid "correspondent is"
msgstr "tilsvarendet er"
#: documents/models.py:378
#: documents/models.py:391
msgid "document type is"
msgstr "dokumenttype er"
#: documents/models.py:379
#: documents/models.py:392
msgid "is in inbox"
msgstr "er i innboksen"
#: documents/models.py:380
#: documents/models.py:393
msgid "has tag"
msgstr "har tagg"
#: documents/models.py:381
#: documents/models.py:394
msgid "has any tag"
msgstr "har en tag"
#: documents/models.py:382
#: documents/models.py:395
msgid "created before"
msgstr "opprettet før"
#: documents/models.py:383
#: documents/models.py:396
msgid "created after"
msgstr "opprettet etter"
#: documents/models.py:384
#: documents/models.py:397
msgid "created year is"
msgstr "opprettet år er"
#: documents/models.py:385
#: documents/models.py:398
msgid "created month is"
msgstr "opprettet måned er"
#: documents/models.py:386
#: documents/models.py:399
msgid "created day is"
msgstr "opprettet dag er"
#: documents/models.py:387
#: documents/models.py:400
msgid "added before"
msgstr "lagt til før"
#: documents/models.py:388
#: documents/models.py:401
msgid "added after"
msgstr "lagt til etter"
#: documents/models.py:389
#: documents/models.py:402
msgid "modified before"
msgstr "endret før"
#: documents/models.py:390
#: documents/models.py:403
msgid "modified after"
msgstr "endret etter"
#: documents/models.py:391
#: documents/models.py:404
msgid "does not have tag"
msgstr "har ikke tagg"
#: documents/models.py:392
#: documents/models.py:405
msgid "does not have ASN"
msgstr "har ikke ASN"
#: documents/models.py:393
#: documents/models.py:406
msgid "title or content contains"
msgstr "tittel eller innhold inneholder"
#: documents/models.py:394
#: documents/models.py:407
msgid "fulltext query"
msgstr "full tekst spørring"
#: documents/models.py:395
#: documents/models.py:408
msgid "more like this"
msgstr "mer som dette"
#: documents/models.py:396
#: documents/models.py:409
msgid "has tags in"
msgstr "har tags i"
#: documents/models.py:406
#: documents/models.py:410
msgid "ASN greater than"
msgstr "ASN større enn"
#: documents/models.py:411
msgid "ASN less than"
msgstr "ASN mindre enn"
#: documents/models.py:412
msgid "storage path is"
msgstr "lagringssti er"
#: documents/models.py:422
msgid "rule type"
msgstr "Type regel"
#: documents/models.py:408
#: documents/models.py:424
msgid "value"
msgstr "verdi"
#: documents/models.py:411
#: documents/models.py:427
msgid "filter rule"
msgstr "filtrer regel"
#: documents/models.py:412
#: documents/models.py:428
msgid "filter rules"
msgstr "filtrer regler"
#: documents/models.py:521
msgid "started"
msgstr "startet"
#: documents/models.py:536
msgid "Task ID"
msgstr "Oppgave ID"
#: documents/serialisers.py:70
#: documents/models.py:537
msgid "Celery ID for the Task that was run"
msgstr "Celery ID for oppgaven som ble kjørt"
#: documents/models.py:542
msgid "Acknowledged"
msgstr "Bekreftet"
#: documents/models.py:543
msgid "If the task is acknowledged via the frontend or API"
msgstr "Hvis oppgaven bekreftes via frontend eller API"
#: documents/models.py:549 documents/models.py:556
msgid "Task Name"
msgstr "Oppgavenavn"
#: documents/models.py:550
msgid "Name of the file which the Task was run for"
msgstr "Navn på filen som oppgaven ble kjørt for"
#: documents/models.py:557
msgid "Name of the Task which was run"
msgstr "Navn på Oppgaven som ble kjørt"
#: documents/models.py:562
msgid "Task Positional Arguments"
msgstr ""
#: documents/models.py:564
msgid "JSON representation of the positional arguments used with the task"
msgstr ""
#: documents/models.py:569
msgid "Task Named Arguments"
msgstr ""
#: documents/models.py:571
msgid "JSON representation of the named arguments used with the task"
msgstr ""
#: documents/models.py:578
msgid "Task State"
msgstr ""
#: documents/models.py:579
msgid "Current state of the task being run"
msgstr ""
#: documents/models.py:584
msgid "Created DateTime"
msgstr ""
#: documents/models.py:585
msgid "Datetime field when the task result was created in UTC"
msgstr ""
#: documents/models.py:590
msgid "Started DateTime"
msgstr ""
#: documents/models.py:591
msgid "Datetime field when the task was started in UTC"
msgstr ""
#: documents/models.py:596
msgid "Completed DateTime"
msgstr ""
#: documents/models.py:597
msgid "Datetime field when the task was completed in UTC"
msgstr ""
#: documents/models.py:602
msgid "Result Data"
msgstr ""
#: documents/models.py:604
msgid "The data returned by the task"
msgstr ""
#: documents/models.py:613
msgid "Comment for the document"
msgstr ""
#: documents/models.py:642
msgid "comment"
msgstr ""
#: documents/models.py:643
msgid "comments"
msgstr ""
#: documents/serialisers.py:72
#, python-format
msgid "Invalid regular expression: %(error)s"
msgstr "Ugyldig regulært uttrykk: %(error)s"
#: documents/serialisers.py:191
#: documents/serialisers.py:193
msgid "Invalid color."
msgstr "Ugyldig farge."
#: documents/serialisers.py:515
#: documents/serialisers.py:518
#, python-format
msgid "File type %(type)s not supported"
msgstr "Filtype %(type)s støttes ikke"
#: documents/serialisers.py:596
#: documents/serialisers.py:599
msgid "Invalid variable detected."
msgstr "Ugyldig variabel oppdaget."
@@ -444,87 +556,87 @@ msgstr "Passord"
msgid "Sign in"
msgstr "Logg inn"
#: paperless/settings.py:339
#: paperless/settings.py:378
msgid "English (US)"
msgstr "Engelsk (US)"
#: paperless/settings.py:340
#: paperless/settings.py:379
msgid "Belarusian"
msgstr "Hviterussisk"
#: paperless/settings.py:341
#: paperless/settings.py:380
msgid "Czech"
msgstr "Tsjekkisk"
#: paperless/settings.py:342
#: paperless/settings.py:381
msgid "Danish"
msgstr "Dansk"
#: paperless/settings.py:343
#: paperless/settings.py:382
msgid "German"
msgstr "Tysk"
#: paperless/settings.py:344
#: paperless/settings.py:383
msgid "English (GB)"
msgstr "Engelsk (GB)"
#: paperless/settings.py:345
#: paperless/settings.py:384
msgid "Spanish"
msgstr "Spansk"
#: paperless/settings.py:346
#: paperless/settings.py:385
msgid "French"
msgstr "Fransk"
#: paperless/settings.py:347
#: paperless/settings.py:386
msgid "Italian"
msgstr "Italiensk"
#: paperless/settings.py:348
#: paperless/settings.py:387
msgid "Luxembourgish"
msgstr "Luxembourgsk"
#: paperless/settings.py:349
#: paperless/settings.py:388
msgid "Dutch"
msgstr "Nederlandsk"
#: paperless/settings.py:350
#: paperless/settings.py:389
msgid "Polish"
msgstr "Polsk"
#: paperless/settings.py:351
#: paperless/settings.py:390
msgid "Portuguese (Brazil)"
msgstr "Portugisisk (Brasil)"
#: paperless/settings.py:352
#: paperless/settings.py:391
msgid "Portuguese"
msgstr "Portugisisk"
#: paperless/settings.py:353
#: paperless/settings.py:392
msgid "Romanian"
msgstr "Rumensk"
#: paperless/settings.py:354
#: paperless/settings.py:393
msgid "Russian"
msgstr "Russisk"
#: paperless/settings.py:355
#: paperless/settings.py:394
msgid "Slovenian"
msgstr "Slovenian"
#: paperless/settings.py:356
#: paperless/settings.py:395
msgid "Serbian"
msgstr "Serbisk"
#: paperless/settings.py:357
#: paperless/settings.py:396
msgid "Swedish"
msgstr "Svensk"
#: paperless/settings.py:358
#: paperless/settings.py:397
msgid "Turkish"
msgstr "Tyrkisk"
#: paperless/settings.py:359
#: paperless/settings.py:398
msgid "Chinese Simplified"
msgstr "Kinesisk forenklet"

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-07-08 14:11-0700\n"
"PO-Revision-Date: 2022-08-17 11:20\n"
"POT-Creation-Date: 2022-11-09 21:50+0000\n"
"PO-Revision-Date: 2022-11-28 16:30\n"
"Last-Translator: \n"
"Language-Team: Polish\n"
"Language: pl_PL\n"
@@ -21,378 +21,490 @@ msgstr ""
msgid "Documents"
msgstr "Dokumenty"
#: documents/models.py:29
#: documents/models.py:32
msgid "Any word"
msgstr "Dowolne słowo"
#: documents/models.py:30
#: documents/models.py:33
msgid "All words"
msgstr "Wszystkie słowa"
#: documents/models.py:31
#: documents/models.py:34
msgid "Exact match"
msgstr "Dokładne dopasowanie"
#: documents/models.py:32
#: documents/models.py:35
msgid "Regular expression"
msgstr "Wyrażenie regularne"
#: documents/models.py:33
#: documents/models.py:36
msgid "Fuzzy word"
msgstr "Dopasowanie rozmyte"
#: documents/models.py:34
#: documents/models.py:37
msgid "Automatic"
msgstr "Automatyczny"
#: documents/models.py:37 documents/models.py:354 paperless_mail/models.py:16
#: documents/models.py:40 documents/models.py:367 paperless_mail/models.py:16
#: paperless_mail/models.py:80
msgid "name"
msgstr "nazwa"
#: documents/models.py:39
#: documents/models.py:42
msgid "match"
msgstr "dopasowanie"
#: documents/models.py:42
#: documents/models.py:45
msgid "matching algorithm"
msgstr "algorytm dopasowania"
#: documents/models.py:47
#: documents/models.py:50
msgid "is insensitive"
msgstr "bez rozróżniania wielkości znaków"
#: documents/models.py:60 documents/models.py:115
#: documents/models.py:63 documents/models.py:118
msgid "correspondent"
msgstr "korespondent"
#: documents/models.py:61
#: documents/models.py:64
msgid "correspondents"
msgstr "korespondenci"
#: documents/models.py:66
#: documents/models.py:69
msgid "color"
msgstr "kolor"
#: documents/models.py:69
#: documents/models.py:72
msgid "is inbox tag"
msgstr "jest tagiem skrzynki odbiorczej"
#: documents/models.py:72
#: documents/models.py:75
msgid "Marks this tag as an inbox tag: All newly consumed documents will be tagged with inbox tags."
msgstr "Zaznacza ten tag jako tag skrzynki odbiorczej: Wszystkie nowo przetworzone dokumenty będą oznaczone tagami skrzynki odbiorczej."
#: documents/models.py:78
#: documents/models.py:81
msgid "tag"
msgstr "znacznik"
#: documents/models.py:79 documents/models.py:153
#: documents/models.py:82 documents/models.py:156
msgid "tags"
msgstr "tagi"
#: documents/models.py:84 documents/models.py:135
#: documents/models.py:87 documents/models.py:138
msgid "document type"
msgstr "typ dokumentu"
#: documents/models.py:85
#: documents/models.py:88
msgid "document types"
msgstr "typy dokumentów"
#: documents/models.py:90
#: documents/models.py:93
msgid "path"
msgstr "ścieżka"
#: documents/models.py:96 documents/models.py:124
#: documents/models.py:99 documents/models.py:127
msgid "storage path"
msgstr "ścieżka przechowywania"
#: documents/models.py:97
#: documents/models.py:100
msgid "storage paths"
msgstr "ścieżki składowania"
#: documents/models.py:105
#: documents/models.py:108
msgid "Unencrypted"
msgstr "Niezaszyfrowane"
#: documents/models.py:106
#: documents/models.py:109
msgid "Encrypted with GNU Privacy Guard"
msgstr "Zaszyfrowane przy użyciu GNU Privacy Guard"
#: documents/models.py:127
#: documents/models.py:130
msgid "title"
msgstr "tytuł"
#: documents/models.py:139
#: documents/models.py:142 documents/models.py:611
msgid "content"
msgstr "zawartość"
#: documents/models.py:142
#: documents/models.py:145
msgid "The raw, text-only data of the document. This field is primarily used for searching."
msgstr "Surowe, tekstowe dane dokumentu. To pole jest używane głównie do wyszukiwania."
#: documents/models.py:147
#: documents/models.py:150
msgid "mime type"
msgstr "mime type"
#: documents/models.py:157
#: documents/models.py:160
msgid "checksum"
msgstr "suma kontrolna"
#: documents/models.py:161
#: documents/models.py:164
msgid "The checksum of the original document."
msgstr "Suma kontrolna oryginalnego dokumentu."
#: documents/models.py:165
#: documents/models.py:168
msgid "archive checksum"
msgstr "suma kontrolna archiwum"
#: documents/models.py:170
#: documents/models.py:173
msgid "The checksum of the archived document."
msgstr "Suma kontrolna zarchiwizowanego dokumentu."
#: documents/models.py:173 documents/models.py:335 documents/models.py:520
#: documents/models.py:176 documents/models.py:348 documents/models.py:617
msgid "created"
msgstr "utworzono"
#: documents/models.py:176
#: documents/models.py:179
msgid "modified"
msgstr "zmodyfikowano"
#: documents/models.py:183
#: documents/models.py:186
msgid "storage type"
msgstr "typ przechowywania"
#: documents/models.py:191
#: documents/models.py:194
msgid "added"
msgstr "dodano"
#: documents/models.py:198
#: documents/models.py:201
msgid "filename"
msgstr "nazwa pliku"
#: documents/models.py:204
#: documents/models.py:207
msgid "Current filename in storage"
msgstr "Aktualna nazwa pliku w pamięci"
#: documents/models.py:208
#: documents/models.py:211
msgid "archive filename"
msgstr "nazwa pliku archiwum"
#: documents/models.py:214
#: documents/models.py:217
msgid "Current archive filename in storage"
msgstr "Aktualna nazwa pliku archiwum w pamięci"
#: documents/models.py:218
#: documents/models.py:221
msgid "original filename"
msgstr "oryginalna nazwa pliku"
#: documents/models.py:227
msgid "The original name of the file when it was uploaded"
msgstr "Oryginalna nazwa pliku, gdy został przesłany"
#: documents/models.py:231
msgid "archive serial number"
msgstr "numer seryjny archiwum"
#: documents/models.py:224
#: documents/models.py:237
msgid "The position of this document in your physical document archive."
msgstr "Pozycja tego dokumentu w archiwum dokumentów fizycznych."
#: documents/models.py:230
#: documents/models.py:243 documents/models.py:628
msgid "document"
msgstr "dokument"
#: documents/models.py:231
#: documents/models.py:244
msgid "documents"
msgstr "dokumenty"
#: documents/models.py:318
#: documents/models.py:331
msgid "debug"
msgstr "debugowanie"
#: documents/models.py:319
#: documents/models.py:332
msgid "information"
msgstr "informacja"
#: documents/models.py:320
#: documents/models.py:333
msgid "warning"
msgstr "ostrzeżenie"
#: documents/models.py:321
#: documents/models.py:334
msgid "error"
msgstr "błąd"
#: documents/models.py:322
#: documents/models.py:335
msgid "critical"
msgstr "krytyczne"
#: documents/models.py:325
#: documents/models.py:338
msgid "group"
msgstr "grupa"
#: documents/models.py:327
#: documents/models.py:340
msgid "message"
msgstr "wiadomość"
#: documents/models.py:330
#: documents/models.py:343
msgid "level"
msgstr "poziom"
#: documents/models.py:339
#: documents/models.py:352
msgid "log"
msgstr "log"
#: documents/models.py:340
#: documents/models.py:353
msgid "logs"
msgstr "logi"
#: documents/models.py:350 documents/models.py:403
#: documents/models.py:363 documents/models.py:419
msgid "saved view"
msgstr "zapisany widok"
#: documents/models.py:351
#: documents/models.py:364
msgid "saved views"
msgstr "zapisane widoki"
#: documents/models.py:353
#: documents/models.py:366 documents/models.py:637
msgid "user"
msgstr "użytkownik"
#: documents/models.py:357
#: documents/models.py:370
msgid "show on dashboard"
msgstr "pokaż na stronie głównej"
#: documents/models.py:360
#: documents/models.py:373
msgid "show in sidebar"
msgstr "pokaż na pasku bocznym"
#: documents/models.py:364
#: documents/models.py:377
msgid "sort field"
msgstr "pole sortowania"
#: documents/models.py:369
#: documents/models.py:382
msgid "sort reverse"
msgstr "sortuj malejąco"
#: documents/models.py:374
#: documents/models.py:387
msgid "title contains"
msgstr "tytuł zawiera"
#: documents/models.py:375
#: documents/models.py:388
msgid "content contains"
msgstr "zawartość zawiera"
#: documents/models.py:376
#: documents/models.py:389
msgid "ASN is"
msgstr "numer archiwum jest"
#: documents/models.py:377
#: documents/models.py:390
msgid "correspondent is"
msgstr "korespondentem jest"
#: documents/models.py:378
#: documents/models.py:391
msgid "document type is"
msgstr "typ dokumentu jest"
#: documents/models.py:379
#: documents/models.py:392
msgid "is in inbox"
msgstr "jest w skrzynce odbiorczej"
#: documents/models.py:380
#: documents/models.py:393
msgid "has tag"
msgstr "ma tag"
#: documents/models.py:381
#: documents/models.py:394
msgid "has any tag"
msgstr "ma dowolny tag"
#: documents/models.py:382
#: documents/models.py:395
msgid "created before"
msgstr "utworzony przed"
#: documents/models.py:383
#: documents/models.py:396
msgid "created after"
msgstr "utworzony po"
#: documents/models.py:384
#: documents/models.py:397
msgid "created year is"
msgstr "rok utworzenia to"
#: documents/models.py:385
#: documents/models.py:398
msgid "created month is"
msgstr "miesiąc utworzenia to"
#: documents/models.py:386
#: documents/models.py:399
msgid "created day is"
msgstr "dzień utworzenia to"
#: documents/models.py:387
#: documents/models.py:400
msgid "added before"
msgstr "dodany przed"
#: documents/models.py:388
#: documents/models.py:401
msgid "added after"
msgstr "dodany po"
#: documents/models.py:389
#: documents/models.py:402
msgid "modified before"
msgstr "zmodyfikowany przed"
#: documents/models.py:390
#: documents/models.py:403
msgid "modified after"
msgstr "zmodyfikowany po"
#: documents/models.py:391
#: documents/models.py:404
msgid "does not have tag"
msgstr "nie ma tagu"
#: documents/models.py:392
#: documents/models.py:405
msgid "does not have ASN"
msgstr "nie ma numeru archiwum"
#: documents/models.py:393
#: documents/models.py:406
msgid "title or content contains"
msgstr "tytuł lub zawartość zawiera"
#: documents/models.py:394
#: documents/models.py:407
msgid "fulltext query"
msgstr "zapytanie pełnotekstowe"
#: documents/models.py:395
#: documents/models.py:408
msgid "more like this"
msgstr "podobne dokumenty"
#: documents/models.py:396
#: documents/models.py:409
msgid "has tags in"
msgstr "ma znaczniki w"
#: documents/models.py:406
#: documents/models.py:410
msgid "ASN greater than"
msgstr "ASN większy niż"
#: documents/models.py:411
msgid "ASN less than"
msgstr "ASN mniejszy niż"
#: documents/models.py:412
msgid "storage path is"
msgstr "ścieżką przechowywania jest"
#: documents/models.py:422
msgid "rule type"
msgstr "typ reguły"
#: documents/models.py:408
#: documents/models.py:424
msgid "value"
msgstr "wartość"
#: documents/models.py:411
#: documents/models.py:427
msgid "filter rule"
msgstr "reguła filtrowania"
#: documents/models.py:412
#: documents/models.py:428
msgid "filter rules"
msgstr "reguły filtrowania"
#: documents/models.py:521
msgid "started"
msgstr "start"
#: documents/models.py:536
msgid "Task ID"
msgstr "ID zadania"
#: documents/serialisers.py:70
#: documents/models.py:537
msgid "Celery ID for the Task that was run"
msgstr "ID Celery dla zadania, które zostało uruchomione"
#: documents/models.py:542
msgid "Acknowledged"
msgstr "Potwierdzono"
#: documents/models.py:543
msgid "If the task is acknowledged via the frontend or API"
msgstr "Jeśli zadanie jest potwierdzone przez frontend lub API"
#: documents/models.py:549 documents/models.py:556
msgid "Task Name"
msgstr "Nazwa zadania"
#: documents/models.py:550
msgid "Name of the file which the Task was run for"
msgstr ""
#: documents/models.py:557
msgid "Name of the Task which was run"
msgstr ""
#: documents/models.py:562
msgid "Task Positional Arguments"
msgstr ""
#: documents/models.py:564
msgid "JSON representation of the positional arguments used with the task"
msgstr ""
#: documents/models.py:569
msgid "Task Named Arguments"
msgstr ""
#: documents/models.py:571
msgid "JSON representation of the named arguments used with the task"
msgstr ""
#: documents/models.py:578
msgid "Task State"
msgstr "Stan zadania"
#: documents/models.py:579
msgid "Current state of the task being run"
msgstr ""
#: documents/models.py:584
msgid "Created DateTime"
msgstr ""
#: documents/models.py:585
msgid "Datetime field when the task result was created in UTC"
msgstr ""
#: documents/models.py:590
msgid "Started DateTime"
msgstr ""
#: documents/models.py:591
msgid "Datetime field when the task was started in UTC"
msgstr ""
#: documents/models.py:596
msgid "Completed DateTime"
msgstr ""
#: documents/models.py:597
msgid "Datetime field when the task was completed in UTC"
msgstr ""
#: documents/models.py:602
msgid "Result Data"
msgstr ""
#: documents/models.py:604
msgid "The data returned by the task"
msgstr "Dane zwrócone przez zadanie"
#: documents/models.py:613
msgid "Comment for the document"
msgstr "Komentarz do dokumentu"
#: documents/models.py:642
msgid "comment"
msgstr "komentarz"
#: documents/models.py:643
msgid "comments"
msgstr "komentarze"
#: documents/serialisers.py:72
#, python-format
msgid "Invalid regular expression: %(error)s"
msgstr "Nieprawidłowe wyrażenie regularne: %(error)s"
#: documents/serialisers.py:191
#: documents/serialisers.py:193
msgid "Invalid color."
msgstr "Nieprawidłowy kolor."
#: documents/serialisers.py:515
#: documents/serialisers.py:518
#, python-format
msgid "File type %(type)s not supported"
msgstr "Typ pliku %(type)s nie jest obsługiwany"
#: documents/serialisers.py:596
#: documents/serialisers.py:599
msgid "Invalid variable detected."
msgstr "Wykryto nieprawidłową zmienną."
@@ -444,87 +556,87 @@ msgstr "Hasło"
msgid "Sign in"
msgstr "Zaloguj się"
#: paperless/settings.py:339
#: paperless/settings.py:378
msgid "English (US)"
msgstr "Angielski (USA)"
#: paperless/settings.py:340
#: paperless/settings.py:379
msgid "Belarusian"
msgstr "Białoruski"
#: paperless/settings.py:341
#: paperless/settings.py:380
msgid "Czech"
msgstr "Czeski"
#: paperless/settings.py:342
#: paperless/settings.py:381
msgid "Danish"
msgstr "Duński"
#: paperless/settings.py:343
#: paperless/settings.py:382
msgid "German"
msgstr "Niemiecki"
#: paperless/settings.py:344
#: paperless/settings.py:383
msgid "English (GB)"
msgstr "Angielski (Wielka Brytania)"
#: paperless/settings.py:345
#: paperless/settings.py:384
msgid "Spanish"
msgstr "Hiszpański"
#: paperless/settings.py:346
#: paperless/settings.py:385
msgid "French"
msgstr "Francuski"
#: paperless/settings.py:347
#: paperless/settings.py:386
msgid "Italian"
msgstr "Włoski"
#: paperless/settings.py:348
#: paperless/settings.py:387
msgid "Luxembourgish"
msgstr "Luksemburski"
#: paperless/settings.py:349
#: paperless/settings.py:388
msgid "Dutch"
msgstr "Holenderski"
#: paperless/settings.py:350
#: paperless/settings.py:389
msgid "Polish"
msgstr "Polski"
#: paperless/settings.py:351
#: paperless/settings.py:390
msgid "Portuguese (Brazil)"
msgstr "Portugalski (Brazylia)"
#: paperless/settings.py:352
#: paperless/settings.py:391
msgid "Portuguese"
msgstr "Portugalski"
#: paperless/settings.py:353
#: paperless/settings.py:392
msgid "Romanian"
msgstr "Rumuński"
#: paperless/settings.py:354
#: paperless/settings.py:393
msgid "Russian"
msgstr "Rosyjski"
#: paperless/settings.py:355
#: paperless/settings.py:394
msgid "Slovenian"
msgstr "Słoweński"
#: paperless/settings.py:356
#: paperless/settings.py:395
msgid "Serbian"
msgstr "Serbski"
#: paperless/settings.py:357
#: paperless/settings.py:396
msgid "Swedish"
msgstr "Szwedzki"
#: paperless/settings.py:358
#: paperless/settings.py:397
msgid "Turkish"
msgstr "Turecki"
#: paperless/settings.py:359
#: paperless/settings.py:398
msgid "Chinese Simplified"
msgstr "Chiński uproszczony"

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-07-08 14:11-0700\n"
"PO-Revision-Date: 2022-07-08 22:07\n"
"POT-Creation-Date: 2022-11-09 21:50+0000\n"
"PO-Revision-Date: 2022-11-09 23:11\n"
"Last-Translator: \n"
"Language-Team: Portuguese, Brazilian\n"
"Language: pt_BR\n"
@@ -21,378 +21,490 @@ msgstr ""
msgid "Documents"
msgstr "Documentos"
#: documents/models.py:29
#: documents/models.py:32
msgid "Any word"
msgstr "Qualquer palavra"
#: documents/models.py:30
#: documents/models.py:33
msgid "All words"
msgstr "Todas as palavras"
#: documents/models.py:31
#: documents/models.py:34
msgid "Exact match"
msgstr "Detecção exata"
#: documents/models.py:32
#: documents/models.py:35
msgid "Regular expression"
msgstr "Expressão regular"
#: documents/models.py:33
#: documents/models.py:36
msgid "Fuzzy word"
msgstr "Palavra difusa (fuzzy)"
#: documents/models.py:34
#: documents/models.py:37
msgid "Automatic"
msgstr "Automático"
#: documents/models.py:37 documents/models.py:354 paperless_mail/models.py:16
#: documents/models.py:40 documents/models.py:367 paperless_mail/models.py:16
#: paperless_mail/models.py:80
msgid "name"
msgstr "nome"
#: documents/models.py:39
#: documents/models.py:42
msgid "match"
msgstr "detecção"
#: documents/models.py:42
#: documents/models.py:45
msgid "matching algorithm"
msgstr "algoritmo de detecção"
#: documents/models.py:47
#: documents/models.py:50
msgid "is insensitive"
msgstr "diferencia maiúsculas de minúsculas"
#: documents/models.py:60 documents/models.py:115
#: documents/models.py:63 documents/models.py:118
msgid "correspondent"
msgstr "correspondente"
#: documents/models.py:61
#: documents/models.py:64
msgid "correspondents"
msgstr "correspondentes"
#: documents/models.py:66
#: documents/models.py:69
msgid "color"
msgstr "cor"
#: documents/models.py:69
#: documents/models.py:72
msgid "is inbox tag"
msgstr "é etiqueta caixa de entrada"
#: documents/models.py:72
#: documents/models.py:75
msgid "Marks this tag as an inbox tag: All newly consumed documents will be tagged with inbox tags."
msgstr "Marca essa etiqueta como caixa de entrada: Todos os novos documentos consumidos terão as etiquetas de caixa de entrada."
#: documents/models.py:78
#: documents/models.py:81
msgid "tag"
msgstr "etiqueta"
#: documents/models.py:79 documents/models.py:153
#: documents/models.py:82 documents/models.py:156
msgid "tags"
msgstr "etiquetas"
#: documents/models.py:84 documents/models.py:135
#: documents/models.py:87 documents/models.py:138
msgid "document type"
msgstr "tipo de documento"
#: documents/models.py:85
#: documents/models.py:88
msgid "document types"
msgstr "tipos de documento"
#: documents/models.py:90
#: documents/models.py:93
msgid "path"
msgstr ""
#: documents/models.py:96 documents/models.py:124
#: documents/models.py:99 documents/models.py:127
msgid "storage path"
msgstr ""
#: documents/models.py:97
#: documents/models.py:100
msgid "storage paths"
msgstr ""
#: documents/models.py:105
#: documents/models.py:108
msgid "Unencrypted"
msgstr "Não encriptado"
#: documents/models.py:106
#: documents/models.py:109
msgid "Encrypted with GNU Privacy Guard"
msgstr "Encriptado com GNU Privacy Guard"
#: documents/models.py:127
#: documents/models.py:130
msgid "title"
msgstr "título"
#: documents/models.py:139
#: documents/models.py:142 documents/models.py:611
msgid "content"
msgstr "conteúdo"
#: documents/models.py:142
#: documents/models.py:145
msgid "The raw, text-only data of the document. This field is primarily used for searching."
msgstr "O conteúdo de texto bruto do documento. Esse campo é usado principalmente para busca."
#: documents/models.py:147
#: documents/models.py:150
msgid "mime type"
msgstr "tipo mime"
#: documents/models.py:157
#: documents/models.py:160
msgid "checksum"
msgstr "some de verificação"
#: documents/models.py:161
#: documents/models.py:164
msgid "The checksum of the original document."
msgstr "A soma de verificação original do documento."
#: documents/models.py:165
#: documents/models.py:168
msgid "archive checksum"
msgstr "Soma de verificação de arquivamento."
#: documents/models.py:170
#: documents/models.py:173
msgid "The checksum of the archived document."
msgstr "A soma de verificação do documento arquivado."
#: documents/models.py:173 documents/models.py:335 documents/models.py:520
#: documents/models.py:176 documents/models.py:348 documents/models.py:617
msgid "created"
msgstr "criado"
#: documents/models.py:176
#: documents/models.py:179
msgid "modified"
msgstr "modificado"
#: documents/models.py:183
#: documents/models.py:186
msgid "storage type"
msgstr "tipo de armazenamento"
#: documents/models.py:191
#: documents/models.py:194
msgid "added"
msgstr "adicionado"
#: documents/models.py:198
#: documents/models.py:201
msgid "filename"
msgstr "nome do arquivo"
#: documents/models.py:204
#: documents/models.py:207
msgid "Current filename in storage"
msgstr "Nome do arquivo atual armazenado"
#: documents/models.py:208
#: documents/models.py:211
msgid "archive filename"
msgstr "nome do arquivo para arquivamento"
#: documents/models.py:214
#: documents/models.py:217
msgid "Current archive filename in storage"
msgstr "Nome do arquivo para arquivamento armazenado"
#: documents/models.py:218
#: documents/models.py:221
msgid "original filename"
msgstr ""
#: documents/models.py:227
msgid "The original name of the file when it was uploaded"
msgstr ""
#: documents/models.py:231
msgid "archive serial number"
msgstr "número de sério de arquivamento"
#: documents/models.py:224
#: documents/models.py:237
msgid "The position of this document in your physical document archive."
msgstr "A posição deste documento no seu arquivamento físico."
#: documents/models.py:230
#: documents/models.py:243 documents/models.py:628
msgid "document"
msgstr "documento"
#: documents/models.py:231
#: documents/models.py:244
msgid "documents"
msgstr "documentos"
#: documents/models.py:318
#: documents/models.py:331
msgid "debug"
msgstr "debug"
#: documents/models.py:319
#: documents/models.py:332
msgid "information"
msgstr "informação"
#: documents/models.py:320
#: documents/models.py:333
msgid "warning"
msgstr "aviso"
#: documents/models.py:321
#: documents/models.py:334
msgid "error"
msgstr "erro"
#: documents/models.py:322
#: documents/models.py:335
msgid "critical"
msgstr "crítico"
#: documents/models.py:325
#: documents/models.py:338
msgid "group"
msgstr "grupo"
#: documents/models.py:327
#: documents/models.py:340
msgid "message"
msgstr "mensagem"
#: documents/models.py:330
#: documents/models.py:343
msgid "level"
msgstr "nível"
#: documents/models.py:339
#: documents/models.py:352
msgid "log"
msgstr "log"
#: documents/models.py:340
#: documents/models.py:353
msgid "logs"
msgstr "logs"
#: documents/models.py:350 documents/models.py:403
#: documents/models.py:363 documents/models.py:419
msgid "saved view"
msgstr "visualização"
#: documents/models.py:351
#: documents/models.py:364
msgid "saved views"
msgstr "visualizações"
#: documents/models.py:353
#: documents/models.py:366 documents/models.py:637
msgid "user"
msgstr "usuário"
#: documents/models.py:357
#: documents/models.py:370
msgid "show on dashboard"
msgstr "exibir no painel de controle"
#: documents/models.py:360
#: documents/models.py:373
msgid "show in sidebar"
msgstr "exibir no painel lateral"
#: documents/models.py:364
#: documents/models.py:377
msgid "sort field"
msgstr "ordenar campo"
#: documents/models.py:369
#: documents/models.py:382
msgid "sort reverse"
msgstr "odernar reverso"
#: documents/models.py:374
#: documents/models.py:387
msgid "title contains"
msgstr "título contém"
#: documents/models.py:375
#: documents/models.py:388
msgid "content contains"
msgstr "conteúdo contém"
#: documents/models.py:376
#: documents/models.py:389
msgid "ASN is"
msgstr "NSA é"
#: documents/models.py:377
#: documents/models.py:390
msgid "correspondent is"
msgstr "correspondente é"
#: documents/models.py:378
#: documents/models.py:391
msgid "document type is"
msgstr "tipo de documento é"
#: documents/models.py:379
#: documents/models.py:392
msgid "is in inbox"
msgstr "é caixa de entrada"
#: documents/models.py:380
#: documents/models.py:393
msgid "has tag"
msgstr "contém etiqueta"
#: documents/models.py:381
#: documents/models.py:394
msgid "has any tag"
msgstr "contém qualquer etiqueta"
#: documents/models.py:382
#: documents/models.py:395
msgid "created before"
msgstr "criado antes de"
#: documents/models.py:383
#: documents/models.py:396
msgid "created after"
msgstr "criado depois de"
#: documents/models.py:384
#: documents/models.py:397
msgid "created year is"
msgstr "ano de criação é"
#: documents/models.py:385
#: documents/models.py:398
msgid "created month is"
msgstr "mês de criação é"
#: documents/models.py:386
#: documents/models.py:399
msgid "created day is"
msgstr "dia de criação é"
#: documents/models.py:387
#: documents/models.py:400
msgid "added before"
msgstr "adicionado antes de"
#: documents/models.py:388
#: documents/models.py:401
msgid "added after"
msgstr "adicionado depois de"
#: documents/models.py:389
#: documents/models.py:402
msgid "modified before"
msgstr "modificado antes de"
#: documents/models.py:390
#: documents/models.py:403
msgid "modified after"
msgstr "modificado depois de"
#: documents/models.py:391
#: documents/models.py:404
msgid "does not have tag"
msgstr "não tem etiqueta"
#: documents/models.py:392
#: documents/models.py:405
msgid "does not have ASN"
msgstr "não tem NSA"
#: documents/models.py:393
#: documents/models.py:406
msgid "title or content contains"
msgstr "título ou conteúdo contém"
#: documents/models.py:394
#: documents/models.py:407
msgid "fulltext query"
msgstr "pesquisa de texto completo"
#: documents/models.py:395
#: documents/models.py:408
msgid "more like this"
msgstr "mais como este"
#: documents/models.py:396
#: documents/models.py:409
msgid "has tags in"
msgstr "contém etiqueta em"
#: documents/models.py:406
#: documents/models.py:410
msgid "ASN greater than"
msgstr ""
#: documents/models.py:411
msgid "ASN less than"
msgstr ""
#: documents/models.py:412
msgid "storage path is"
msgstr ""
#: documents/models.py:422
msgid "rule type"
msgstr "tipo de regra"
#: documents/models.py:408
#: documents/models.py:424
msgid "value"
msgstr "valor"
#: documents/models.py:411
#: documents/models.py:427
msgid "filter rule"
msgstr "regra de filtragem"
#: documents/models.py:412
#: documents/models.py:428
msgid "filter rules"
msgstr "regras de filtragem"
#: documents/models.py:521
msgid "started"
#: documents/models.py:536
msgid "Task ID"
msgstr ""
#: documents/serialisers.py:70
#: documents/models.py:537
msgid "Celery ID for the Task that was run"
msgstr ""
#: documents/models.py:542
msgid "Acknowledged"
msgstr ""
#: documents/models.py:543
msgid "If the task is acknowledged via the frontend or API"
msgstr ""
#: documents/models.py:549 documents/models.py:556
msgid "Task Name"
msgstr ""
#: documents/models.py:550
msgid "Name of the file which the Task was run for"
msgstr ""
#: documents/models.py:557
msgid "Name of the Task which was run"
msgstr ""
#: documents/models.py:562
msgid "Task Positional Arguments"
msgstr ""
#: documents/models.py:564
msgid "JSON representation of the positional arguments used with the task"
msgstr ""
#: documents/models.py:569
msgid "Task Named Arguments"
msgstr ""
#: documents/models.py:571
msgid "JSON representation of the named arguments used with the task"
msgstr ""
#: documents/models.py:578
msgid "Task State"
msgstr ""
#: documents/models.py:579
msgid "Current state of the task being run"
msgstr ""
#: documents/models.py:584
msgid "Created DateTime"
msgstr ""
#: documents/models.py:585
msgid "Datetime field when the task result was created in UTC"
msgstr ""
#: documents/models.py:590
msgid "Started DateTime"
msgstr ""
#: documents/models.py:591
msgid "Datetime field when the task was started in UTC"
msgstr ""
#: documents/models.py:596
msgid "Completed DateTime"
msgstr ""
#: documents/models.py:597
msgid "Datetime field when the task was completed in UTC"
msgstr ""
#: documents/models.py:602
msgid "Result Data"
msgstr ""
#: documents/models.py:604
msgid "The data returned by the task"
msgstr ""
#: documents/models.py:613
msgid "Comment for the document"
msgstr ""
#: documents/models.py:642
msgid "comment"
msgstr ""
#: documents/models.py:643
msgid "comments"
msgstr ""
#: documents/serialisers.py:72
#, python-format
msgid "Invalid regular expression: %(error)s"
msgstr "Expressão regular inválida: %(error)s"
#: documents/serialisers.py:191
#: documents/serialisers.py:193
msgid "Invalid color."
msgstr "Cor inválida."
#: documents/serialisers.py:515
#: documents/serialisers.py:518
#, python-format
msgid "File type %(type)s not supported"
msgstr "Tipo de arquivo %(type)s não suportado"
#: documents/serialisers.py:596
#: documents/serialisers.py:599
msgid "Invalid variable detected."
msgstr ""
@@ -444,87 +556,87 @@ msgstr "Senha"
msgid "Sign in"
msgstr "Entrar"
#: paperless/settings.py:339
#: paperless/settings.py:378
msgid "English (US)"
msgstr "Inglês (EUA)"
#: paperless/settings.py:340
#: paperless/settings.py:379
msgid "Belarusian"
msgstr ""
#: paperless/settings.py:341
#: paperless/settings.py:380
msgid "Czech"
msgstr "Tcheco"
#: paperless/settings.py:342
#: paperless/settings.py:381
msgid "Danish"
msgstr "Dinamarquês"
#: paperless/settings.py:343
#: paperless/settings.py:382
msgid "German"
msgstr "Alemão"
#: paperless/settings.py:344
#: paperless/settings.py:383
msgid "English (GB)"
msgstr "Inglês (GB)"
#: paperless/settings.py:345
#: paperless/settings.py:384
msgid "Spanish"
msgstr "Espanhol"
#: paperless/settings.py:346
#: paperless/settings.py:385
msgid "French"
msgstr "Francês"
#: paperless/settings.py:347
#: paperless/settings.py:386
msgid "Italian"
msgstr "Italiano"
#: paperless/settings.py:348
#: paperless/settings.py:387
msgid "Luxembourgish"
msgstr "Luxemburguês"
#: paperless/settings.py:349
#: paperless/settings.py:388
msgid "Dutch"
msgstr "Holandês"
#: paperless/settings.py:350
#: paperless/settings.py:389
msgid "Polish"
msgstr "Polonês"
#: paperless/settings.py:351
#: paperless/settings.py:390
msgid "Portuguese (Brazil)"
msgstr "Português (Brasil)"
#: paperless/settings.py:352
#: paperless/settings.py:391
msgid "Portuguese"
msgstr "Português"
#: paperless/settings.py:353
#: paperless/settings.py:392
msgid "Romanian"
msgstr "Romeno"
#: paperless/settings.py:354
#: paperless/settings.py:393
msgid "Russian"
msgstr "Russo"
#: paperless/settings.py:355
#: paperless/settings.py:394
msgid "Slovenian"
msgstr ""
#: paperless/settings.py:356
#: paperless/settings.py:395
msgid "Serbian"
msgstr ""
#: paperless/settings.py:357
#: paperless/settings.py:396
msgid "Swedish"
msgstr "Sueco"
#: paperless/settings.py:358
#: paperless/settings.py:397
msgid "Turkish"
msgstr ""
#: paperless/settings.py:359
#: paperless/settings.py:398
msgid "Chinese Simplified"
msgstr ""

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-07-08 14:11-0700\n"
"PO-Revision-Date: 2022-07-08 22:07\n"
"POT-Creation-Date: 2022-11-09 21:50+0000\n"
"PO-Revision-Date: 2022-11-09 23:11\n"
"Last-Translator: \n"
"Language-Team: Portuguese\n"
"Language: pt_PT\n"
@@ -21,378 +21,490 @@ msgstr ""
msgid "Documents"
msgstr "Documentos"
#: documents/models.py:29
#: documents/models.py:32
msgid "Any word"
msgstr "Qualquer palavra"
#: documents/models.py:30
#: documents/models.py:33
msgid "All words"
msgstr "Todas as palavras"
#: documents/models.py:31
#: documents/models.py:34
msgid "Exact match"
msgstr "Detecção exata"
#: documents/models.py:32
#: documents/models.py:35
msgid "Regular expression"
msgstr "Expressão regular"
#: documents/models.py:33
#: documents/models.py:36
msgid "Fuzzy word"
msgstr "Palavra difusa (fuzzy)"
#: documents/models.py:34
#: documents/models.py:37
msgid "Automatic"
msgstr "Automático"
#: documents/models.py:37 documents/models.py:354 paperless_mail/models.py:16
#: documents/models.py:40 documents/models.py:367 paperless_mail/models.py:16
#: paperless_mail/models.py:80
msgid "name"
msgstr "nome"
#: documents/models.py:39
#: documents/models.py:42
msgid "match"
msgstr "correspondência"
#: documents/models.py:42
#: documents/models.py:45
msgid "matching algorithm"
msgstr "algoritmo correspondente"
#: documents/models.py:47
#: documents/models.py:50
msgid "is insensitive"
msgstr "é insensível"
#: documents/models.py:60 documents/models.py:115
#: documents/models.py:63 documents/models.py:118
msgid "correspondent"
msgstr "correspondente"
#: documents/models.py:61
#: documents/models.py:64
msgid "correspondents"
msgstr "correspondentes"
#: documents/models.py:66
#: documents/models.py:69
msgid "color"
msgstr "cor"
#: documents/models.py:69
#: documents/models.py:72
msgid "is inbox tag"
msgstr "é etiqueta de novo"
#: documents/models.py:72
#: documents/models.py:75
msgid "Marks this tag as an inbox tag: All newly consumed documents will be tagged with inbox tags."
msgstr "Marca esta etiqueta como uma etiqueta de entrada. Todos os documentos recentemente consumidos serão etiquetados com a etiqueta de entrada."
#: documents/models.py:78
#: documents/models.py:81
msgid "tag"
msgstr "etiqueta"
#: documents/models.py:79 documents/models.py:153
#: documents/models.py:82 documents/models.py:156
msgid "tags"
msgstr "etiquetas"
#: documents/models.py:84 documents/models.py:135
#: documents/models.py:87 documents/models.py:138
msgid "document type"
msgstr "tipo de documento"
#: documents/models.py:85
#: documents/models.py:88
msgid "document types"
msgstr "tipos de documento"
#: documents/models.py:90
#: documents/models.py:93
msgid "path"
msgstr ""
#: documents/models.py:96 documents/models.py:124
#: documents/models.py:99 documents/models.py:127
msgid "storage path"
msgstr ""
#: documents/models.py:97
#: documents/models.py:100
msgid "storage paths"
msgstr ""
#: documents/models.py:105
#: documents/models.py:108
msgid "Unencrypted"
msgstr "Não encriptado"
#: documents/models.py:106
#: documents/models.py:109
msgid "Encrypted with GNU Privacy Guard"
msgstr "Encriptado com GNU Privacy Guard"
#: documents/models.py:127
#: documents/models.py:130
msgid "title"
msgstr "título"
#: documents/models.py:139
#: documents/models.py:142 documents/models.py:611
msgid "content"
msgstr "conteúdo"
#: documents/models.py:142
#: documents/models.py:145
msgid "The raw, text-only data of the document. This field is primarily used for searching."
msgstr "Os dados de texto, em cru, do documento. Este campo é utilizado principalmente para pesquisar."
#: documents/models.py:147
#: documents/models.py:150
msgid "mime type"
msgstr "tipo mime"
#: documents/models.py:157
#: documents/models.py:160
msgid "checksum"
msgstr "soma de verificação"
#: documents/models.py:161
#: documents/models.py:164
msgid "The checksum of the original document."
msgstr "A soma de verificação do documento original."
#: documents/models.py:165
#: documents/models.py:168
msgid "archive checksum"
msgstr "arquivar soma de verificação"
#: documents/models.py:170
#: documents/models.py:173
msgid "The checksum of the archived document."
msgstr "A soma de verificação do documento arquivado."
#: documents/models.py:173 documents/models.py:335 documents/models.py:520
#: documents/models.py:176 documents/models.py:348 documents/models.py:617
msgid "created"
msgstr "criado"
#: documents/models.py:176
#: documents/models.py:179
msgid "modified"
msgstr "modificado"
#: documents/models.py:183
#: documents/models.py:186
msgid "storage type"
msgstr "tipo de armazenamento"
#: documents/models.py:191
#: documents/models.py:194
msgid "added"
msgstr "adicionado"
#: documents/models.py:198
#: documents/models.py:201
msgid "filename"
msgstr "nome de ficheiro"
#: documents/models.py:204
#: documents/models.py:207
msgid "Current filename in storage"
msgstr "Nome do arquivo atual no armazenamento"
#: documents/models.py:208
#: documents/models.py:211
msgid "archive filename"
msgstr "nome do ficheiro de arquivo"
#: documents/models.py:214
#: documents/models.py:217
msgid "Current archive filename in storage"
msgstr "Nome do arquivo atual em no armazenamento"
#: documents/models.py:218
#: documents/models.py:221
msgid "original filename"
msgstr ""
#: documents/models.py:227
msgid "The original name of the file when it was uploaded"
msgstr ""
#: documents/models.py:231
msgid "archive serial number"
msgstr "numero de série de arquivo"
#: documents/models.py:224
#: documents/models.py:237
msgid "The position of this document in your physical document archive."
msgstr "A posição do documento no seu arquivo físico de documentos."
#: documents/models.py:230
#: documents/models.py:243 documents/models.py:628
msgid "document"
msgstr "documento"
#: documents/models.py:231
#: documents/models.py:244
msgid "documents"
msgstr "documentos"
#: documents/models.py:318
#: documents/models.py:331
msgid "debug"
msgstr "depurar"
#: documents/models.py:319
#: documents/models.py:332
msgid "information"
msgstr "informação"
#: documents/models.py:320
#: documents/models.py:333
msgid "warning"
msgstr "aviso"
#: documents/models.py:321
#: documents/models.py:334
msgid "error"
msgstr "erro"
#: documents/models.py:322
#: documents/models.py:335
msgid "critical"
msgstr "crítico"
#: documents/models.py:325
#: documents/models.py:338
msgid "group"
msgstr "grupo"
#: documents/models.py:327
#: documents/models.py:340
msgid "message"
msgstr "mensagem"
#: documents/models.py:330
#: documents/models.py:343
msgid "level"
msgstr "nível"
#: documents/models.py:339
#: documents/models.py:352
msgid "log"
msgstr "registo"
#: documents/models.py:340
#: documents/models.py:353
msgid "logs"
msgstr "registos"
#: documents/models.py:350 documents/models.py:403
#: documents/models.py:363 documents/models.py:419
msgid "saved view"
msgstr "vista guardada"
#: documents/models.py:351
#: documents/models.py:364
msgid "saved views"
msgstr "vistas guardadas"
#: documents/models.py:353
#: documents/models.py:366 documents/models.py:637
msgid "user"
msgstr "utilizador"
#: documents/models.py:357
#: documents/models.py:370
msgid "show on dashboard"
msgstr "exibir no painel de controlo"
#: documents/models.py:360
#: documents/models.py:373
msgid "show in sidebar"
msgstr "mostrar na navegação lateral"
#: documents/models.py:364
#: documents/models.py:377
msgid "sort field"
msgstr "ordenar campo"
#: documents/models.py:369
#: documents/models.py:382
msgid "sort reverse"
msgstr "ordenar inversamente"
#: documents/models.py:374
#: documents/models.py:387
msgid "title contains"
msgstr "o título contém"
#: documents/models.py:375
#: documents/models.py:388
msgid "content contains"
msgstr "o conteúdo contém"
#: documents/models.py:376
#: documents/models.py:389
msgid "ASN is"
msgstr "O NSA é"
#: documents/models.py:377
#: documents/models.py:390
msgid "correspondent is"
msgstr "o correspondente é"
#: documents/models.py:378
#: documents/models.py:391
msgid "document type is"
msgstr "o tipo de documento é"
#: documents/models.py:379
#: documents/models.py:392
msgid "is in inbox"
msgstr "está na entrada"
#: documents/models.py:380
#: documents/models.py:393
msgid "has tag"
msgstr "tem etiqueta"
#: documents/models.py:381
#: documents/models.py:394
msgid "has any tag"
msgstr "tem qualquer etiqueta"
#: documents/models.py:382
#: documents/models.py:395
msgid "created before"
msgstr "criado antes"
#: documents/models.py:383
#: documents/models.py:396
msgid "created after"
msgstr "criado depois"
#: documents/models.py:384
#: documents/models.py:397
msgid "created year is"
msgstr "ano criada é"
#: documents/models.py:385
#: documents/models.py:398
msgid "created month is"
msgstr "mês criado é"
#: documents/models.py:386
#: documents/models.py:399
msgid "created day is"
msgstr "dia criado é"
#: documents/models.py:387
#: documents/models.py:400
msgid "added before"
msgstr "adicionada antes"
#: documents/models.py:388
#: documents/models.py:401
msgid "added after"
msgstr "adicionado depois de"
#: documents/models.py:389
#: documents/models.py:402
msgid "modified before"
msgstr "modificado antes de"
#: documents/models.py:390
#: documents/models.py:403
msgid "modified after"
msgstr "modificado depois de"
#: documents/models.py:391
#: documents/models.py:404
msgid "does not have tag"
msgstr "não tem etiqueta"
#: documents/models.py:392
#: documents/models.py:405
msgid "does not have ASN"
msgstr "não possui um NSA"
#: documents/models.py:393
#: documents/models.py:406
msgid "title or content contains"
msgstr "título ou conteúdo contém"
#: documents/models.py:394
#: documents/models.py:407
msgid "fulltext query"
msgstr "consulta de texto completo"
#: documents/models.py:395
#: documents/models.py:408
msgid "more like this"
msgstr "mais como este"
#: documents/models.py:396
#: documents/models.py:409
msgid "has tags in"
msgstr "tem etiquetas em"
#: documents/models.py:406
#: documents/models.py:410
msgid "ASN greater than"
msgstr ""
#: documents/models.py:411
msgid "ASN less than"
msgstr ""
#: documents/models.py:412
msgid "storage path is"
msgstr ""
#: documents/models.py:422
msgid "rule type"
msgstr "tipo de regra"
#: documents/models.py:408
#: documents/models.py:424
msgid "value"
msgstr "valor"
#: documents/models.py:411
#: documents/models.py:427
msgid "filter rule"
msgstr "regra de filtragem"
#: documents/models.py:412
#: documents/models.py:428
msgid "filter rules"
msgstr "regras de filtragem"
#: documents/models.py:521
msgid "started"
#: documents/models.py:536
msgid "Task ID"
msgstr ""
#: documents/serialisers.py:70
#: documents/models.py:537
msgid "Celery ID for the Task that was run"
msgstr ""
#: documents/models.py:542
msgid "Acknowledged"
msgstr ""
#: documents/models.py:543
msgid "If the task is acknowledged via the frontend or API"
msgstr ""
#: documents/models.py:549 documents/models.py:556
msgid "Task Name"
msgstr ""
#: documents/models.py:550
msgid "Name of the file which the Task was run for"
msgstr ""
#: documents/models.py:557
msgid "Name of the Task which was run"
msgstr ""
#: documents/models.py:562
msgid "Task Positional Arguments"
msgstr ""
#: documents/models.py:564
msgid "JSON representation of the positional arguments used with the task"
msgstr ""
#: documents/models.py:569
msgid "Task Named Arguments"
msgstr ""
#: documents/models.py:571
msgid "JSON representation of the named arguments used with the task"
msgstr ""
#: documents/models.py:578
msgid "Task State"
msgstr ""
#: documents/models.py:579
msgid "Current state of the task being run"
msgstr ""
#: documents/models.py:584
msgid "Created DateTime"
msgstr ""
#: documents/models.py:585
msgid "Datetime field when the task result was created in UTC"
msgstr ""
#: documents/models.py:590
msgid "Started DateTime"
msgstr ""
#: documents/models.py:591
msgid "Datetime field when the task was started in UTC"
msgstr ""
#: documents/models.py:596
msgid "Completed DateTime"
msgstr ""
#: documents/models.py:597
msgid "Datetime field when the task was completed in UTC"
msgstr ""
#: documents/models.py:602
msgid "Result Data"
msgstr ""
#: documents/models.py:604
msgid "The data returned by the task"
msgstr ""
#: documents/models.py:613
msgid "Comment for the document"
msgstr ""
#: documents/models.py:642
msgid "comment"
msgstr ""
#: documents/models.py:643
msgid "comments"
msgstr ""
#: documents/serialisers.py:72
#, python-format
msgid "Invalid regular expression: %(error)s"
msgstr "Expressão regular inválida: %(error)s"
#: documents/serialisers.py:191
#: documents/serialisers.py:193
msgid "Invalid color."
msgstr "Cor invalida."
#: documents/serialisers.py:515
#: documents/serialisers.py:518
#, python-format
msgid "File type %(type)s not supported"
msgstr "Tipo de arquivo %(type)s não suportado"
#: documents/serialisers.py:596
#: documents/serialisers.py:599
msgid "Invalid variable detected."
msgstr ""
@@ -444,87 +556,87 @@ msgstr "Palavra-passe"
msgid "Sign in"
msgstr "Iniciar sessão"
#: paperless/settings.py:339
#: paperless/settings.py:378
msgid "English (US)"
msgstr "Inglês (EUA)"
#: paperless/settings.py:340
#: paperless/settings.py:379
msgid "Belarusian"
msgstr ""
#: paperless/settings.py:341
#: paperless/settings.py:380
msgid "Czech"
msgstr "Checo"
#: paperless/settings.py:342
#: paperless/settings.py:381
msgid "Danish"
msgstr "Dinamarquês"
#: paperless/settings.py:343
#: paperless/settings.py:382
msgid "German"
msgstr "Deutsch"
#: paperless/settings.py:344
#: paperless/settings.py:383
msgid "English (GB)"
msgstr "Inglês (GB)"
#: paperless/settings.py:345
#: paperless/settings.py:384
msgid "Spanish"
msgstr "Espanhol"
#: paperless/settings.py:346
#: paperless/settings.py:385
msgid "French"
msgstr "Français"
#: paperless/settings.py:347
#: paperless/settings.py:386
msgid "Italian"
msgstr "Italiano"
#: paperless/settings.py:348
#: paperless/settings.py:387
msgid "Luxembourgish"
msgstr "Luxemburguês"
#: paperless/settings.py:349
#: paperless/settings.py:388
msgid "Dutch"
msgstr "Nederlandse"
#: paperless/settings.py:350
#: paperless/settings.py:389
msgid "Polish"
msgstr "Polaco"
#: paperless/settings.py:351
#: paperless/settings.py:390
msgid "Portuguese (Brazil)"
msgstr "Português (Brasil)"
#: paperless/settings.py:352
#: paperless/settings.py:391
msgid "Portuguese"
msgstr "Português"
#: paperless/settings.py:353
#: paperless/settings.py:392
msgid "Romanian"
msgstr "Romeno"
#: paperless/settings.py:354
#: paperless/settings.py:393
msgid "Russian"
msgstr "Russo"
#: paperless/settings.py:355
#: paperless/settings.py:394
msgid "Slovenian"
msgstr ""
#: paperless/settings.py:356
#: paperless/settings.py:395
msgid "Serbian"
msgstr ""
#: paperless/settings.py:357
#: paperless/settings.py:396
msgid "Swedish"
msgstr "Sueco"
#: paperless/settings.py:358
#: paperless/settings.py:397
msgid "Turkish"
msgstr ""
#: paperless/settings.py:359
#: paperless/settings.py:398
msgid "Chinese Simplified"
msgstr ""

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-07-08 14:11-0700\n"
"PO-Revision-Date: 2022-07-08 22:07\n"
"POT-Creation-Date: 2022-11-09 21:50+0000\n"
"PO-Revision-Date: 2022-11-09 23:12\n"
"Last-Translator: \n"
"Language-Team: Romanian\n"
"Language: ro_RO\n"
@@ -21,378 +21,490 @@ msgstr ""
msgid "Documents"
msgstr "Documente"
#: documents/models.py:29
#: documents/models.py:32
msgid "Any word"
msgstr "Orice cuvânt"
#: documents/models.py:30
#: documents/models.py:33
msgid "All words"
msgstr "Toate cuvintele"
#: documents/models.py:31
#: documents/models.py:34
msgid "Exact match"
msgstr "Potrivire exactă"
#: documents/models.py:32
#: documents/models.py:35
msgid "Regular expression"
msgstr "Expresie regulată"
#: documents/models.py:33
#: documents/models.py:36
msgid "Fuzzy word"
msgstr "Mod neatent"
#: documents/models.py:34
#: documents/models.py:37
msgid "Automatic"
msgstr "Automat"
#: documents/models.py:37 documents/models.py:354 paperless_mail/models.py:16
#: documents/models.py:40 documents/models.py:367 paperless_mail/models.py:16
#: paperless_mail/models.py:80
msgid "name"
msgstr "nume"
#: documents/models.py:39
#: documents/models.py:42
msgid "match"
msgstr "potrivire"
#: documents/models.py:42
#: documents/models.py:45
msgid "matching algorithm"
msgstr "algoritm de potrivire"
#: documents/models.py:47
#: documents/models.py:50
msgid "is insensitive"
msgstr "nu ține cont de majuscule"
#: documents/models.py:60 documents/models.py:115
#: documents/models.py:63 documents/models.py:118
msgid "correspondent"
msgstr "corespondent"
#: documents/models.py:61
#: documents/models.py:64
msgid "correspondents"
msgstr "corespondenți"
#: documents/models.py:66
#: documents/models.py:69
msgid "color"
msgstr "culoare"
#: documents/models.py:69
#: documents/models.py:72
msgid "is inbox tag"
msgstr "este etichetă inbox"
#: documents/models.py:72
#: documents/models.py:75
msgid "Marks this tag as an inbox tag: All newly consumed documents will be tagged with inbox tags."
msgstr "Marchează aceasta eticheta ca etichetă inbox: Toate documentele nou consumate primesc aceasta eticheta."
#: documents/models.py:78
#: documents/models.py:81
msgid "tag"
msgstr "etichetă"
#: documents/models.py:79 documents/models.py:153
#: documents/models.py:82 documents/models.py:156
msgid "tags"
msgstr "etichete"
#: documents/models.py:84 documents/models.py:135
#: documents/models.py:87 documents/models.py:138
msgid "document type"
msgstr "tip de document"
#: documents/models.py:85
#: documents/models.py:88
msgid "document types"
msgstr "tipuri de document"
#: documents/models.py:90
#: documents/models.py:93
msgid "path"
msgstr ""
#: documents/models.py:96 documents/models.py:124
#: documents/models.py:99 documents/models.py:127
msgid "storage path"
msgstr ""
#: documents/models.py:97
#: documents/models.py:100
msgid "storage paths"
msgstr ""
#: documents/models.py:105
#: documents/models.py:108
msgid "Unencrypted"
msgstr "Necriptat"
#: documents/models.py:106
#: documents/models.py:109
msgid "Encrypted with GNU Privacy Guard"
msgstr "Criptat cu GNU Privacy Guard"
#: documents/models.py:127
#: documents/models.py:130
msgid "title"
msgstr "titlu"
#: documents/models.py:139
#: documents/models.py:142 documents/models.py:611
msgid "content"
msgstr "conținut"
#: documents/models.py:142
#: documents/models.py:145
msgid "The raw, text-only data of the document. This field is primarily used for searching."
msgstr "Textul brut al documentului. Acest camp este folosit in principal pentru căutare."
#: documents/models.py:147
#: documents/models.py:150
msgid "mime type"
msgstr "tip MIME"
#: documents/models.py:157
#: documents/models.py:160
msgid "checksum"
msgstr "sumă de control"
#: documents/models.py:161
#: documents/models.py:164
msgid "The checksum of the original document."
msgstr "Suma de control a documentului original."
#: documents/models.py:165
#: documents/models.py:168
msgid "archive checksum"
msgstr "suma de control a arhivei"
#: documents/models.py:170
#: documents/models.py:173
msgid "The checksum of the archived document."
msgstr "Suma de control a documentului arhivat."
#: documents/models.py:173 documents/models.py:335 documents/models.py:520
#: documents/models.py:176 documents/models.py:348 documents/models.py:617
msgid "created"
msgstr "creat"
#: documents/models.py:176
#: documents/models.py:179
msgid "modified"
msgstr "modificat"
#: documents/models.py:183
#: documents/models.py:186
msgid "storage type"
msgstr "tip de stocare"
#: documents/models.py:191
#: documents/models.py:194
msgid "added"
msgstr "adăugat"
#: documents/models.py:198
#: documents/models.py:201
msgid "filename"
msgstr "nume fișier"
#: documents/models.py:204
#: documents/models.py:207
msgid "Current filename in storage"
msgstr "Numele curent al fișierului stocat"
#: documents/models.py:208
#: documents/models.py:211
msgid "archive filename"
msgstr "nume fișier arhiva"
#: documents/models.py:214
#: documents/models.py:217
msgid "Current archive filename in storage"
msgstr "Numele curent al arhivei stocate"
#: documents/models.py:218
#: documents/models.py:221
msgid "original filename"
msgstr ""
#: documents/models.py:227
msgid "The original name of the file when it was uploaded"
msgstr ""
#: documents/models.py:231
msgid "archive serial number"
msgstr "număr serial in arhiva"
#: documents/models.py:224
#: documents/models.py:237
msgid "The position of this document in your physical document archive."
msgstr "Poziția acestui document in arhiva fizica."
#: documents/models.py:230
#: documents/models.py:243 documents/models.py:628
msgid "document"
msgstr "document"
#: documents/models.py:231
#: documents/models.py:244
msgid "documents"
msgstr "documente"
#: documents/models.py:318
#: documents/models.py:331
msgid "debug"
msgstr "depanare"
#: documents/models.py:319
#: documents/models.py:332
msgid "information"
msgstr "informații"
#: documents/models.py:320
#: documents/models.py:333
msgid "warning"
msgstr "avertizare"
#: documents/models.py:321
#: documents/models.py:334
msgid "error"
msgstr "eroare"
#: documents/models.py:322
#: documents/models.py:335
msgid "critical"
msgstr "critic"
#: documents/models.py:325
#: documents/models.py:338
msgid "group"
msgstr "grup"
#: documents/models.py:327
#: documents/models.py:340
msgid "message"
msgstr "mesaj"
#: documents/models.py:330
#: documents/models.py:343
msgid "level"
msgstr "nivel"
#: documents/models.py:339
#: documents/models.py:352
msgid "log"
msgstr "jurnal"
#: documents/models.py:340
#: documents/models.py:353
msgid "logs"
msgstr "jurnale"
#: documents/models.py:350 documents/models.py:403
#: documents/models.py:363 documents/models.py:419
msgid "saved view"
msgstr "vizualizare"
#: documents/models.py:351
#: documents/models.py:364
msgid "saved views"
msgstr "vizualizări"
#: documents/models.py:353
#: documents/models.py:366 documents/models.py:637
msgid "user"
msgstr "utilizator"
#: documents/models.py:357
#: documents/models.py:370
msgid "show on dashboard"
msgstr "afișează pe tabloul de bord"
#: documents/models.py:360
#: documents/models.py:373
msgid "show in sidebar"
msgstr "afișează in bara laterala"
#: documents/models.py:364
#: documents/models.py:377
msgid "sort field"
msgstr "sortează camp"
#: documents/models.py:369
#: documents/models.py:382
msgid "sort reverse"
msgstr "sortează invers"
#: documents/models.py:374
#: documents/models.py:387
msgid "title contains"
msgstr "titlul conține"
#: documents/models.py:375
#: documents/models.py:388
msgid "content contains"
msgstr "conținutul conține"
#: documents/models.py:376
#: documents/models.py:389
msgid "ASN is"
msgstr "Avizul prealabil de expediție este"
#: documents/models.py:377
#: documents/models.py:390
msgid "correspondent is"
msgstr "corespondentul este"
#: documents/models.py:378
#: documents/models.py:391
msgid "document type is"
msgstr "tipul documentului este"
#: documents/models.py:379
#: documents/models.py:392
msgid "is in inbox"
msgstr "este în inbox"
#: documents/models.py:380
#: documents/models.py:393
msgid "has tag"
msgstr "are eticheta"
#: documents/models.py:381
#: documents/models.py:394
msgid "has any tag"
msgstr "are orice eticheta"
#: documents/models.py:382
#: documents/models.py:395
msgid "created before"
msgstr "creat înainte de"
#: documents/models.py:383
#: documents/models.py:396
msgid "created after"
msgstr "creat după"
#: documents/models.py:384
#: documents/models.py:397
msgid "created year is"
msgstr "anul creării este"
#: documents/models.py:385
#: documents/models.py:398
msgid "created month is"
msgstr "luna creării este"
#: documents/models.py:386
#: documents/models.py:399
msgid "created day is"
msgstr "ziua creării este"
#: documents/models.py:387
#: documents/models.py:400
msgid "added before"
msgstr "adăugat înainte de"
#: documents/models.py:388
#: documents/models.py:401
msgid "added after"
msgstr "adăugat după"
#: documents/models.py:389
#: documents/models.py:402
msgid "modified before"
msgstr "modificat înainte de"
#: documents/models.py:390
#: documents/models.py:403
msgid "modified after"
msgstr "modificat după"
#: documents/models.py:391
#: documents/models.py:404
msgid "does not have tag"
msgstr "nu are etichetă"
#: documents/models.py:392
#: documents/models.py:405
msgid "does not have ASN"
msgstr "nu are aviz prealabil de expediție"
#: documents/models.py:393
#: documents/models.py:406
msgid "title or content contains"
msgstr "titlul sau conținutul conține"
#: documents/models.py:394
#: documents/models.py:407
msgid "fulltext query"
msgstr "query fulltext"
#: documents/models.py:395
#: documents/models.py:408
msgid "more like this"
msgstr "mai multe ca aceasta"
#: documents/models.py:396
#: documents/models.py:409
msgid "has tags in"
msgstr "are etichete în"
#: documents/models.py:406
#: documents/models.py:410
msgid "ASN greater than"
msgstr ""
#: documents/models.py:411
msgid "ASN less than"
msgstr ""
#: documents/models.py:412
msgid "storage path is"
msgstr ""
#: documents/models.py:422
msgid "rule type"
msgstr "tip de regula"
#: documents/models.py:408
#: documents/models.py:424
msgid "value"
msgstr "valoare"
#: documents/models.py:411
#: documents/models.py:427
msgid "filter rule"
msgstr "regulă de filtrare"
#: documents/models.py:412
#: documents/models.py:428
msgid "filter rules"
msgstr "reguli de filtrare"
#: documents/models.py:521
msgid "started"
#: documents/models.py:536
msgid "Task ID"
msgstr ""
#: documents/serialisers.py:70
#: documents/models.py:537
msgid "Celery ID for the Task that was run"
msgstr ""
#: documents/models.py:542
msgid "Acknowledged"
msgstr ""
#: documents/models.py:543
msgid "If the task is acknowledged via the frontend or API"
msgstr ""
#: documents/models.py:549 documents/models.py:556
msgid "Task Name"
msgstr ""
#: documents/models.py:550
msgid "Name of the file which the Task was run for"
msgstr ""
#: documents/models.py:557
msgid "Name of the Task which was run"
msgstr ""
#: documents/models.py:562
msgid "Task Positional Arguments"
msgstr ""
#: documents/models.py:564
msgid "JSON representation of the positional arguments used with the task"
msgstr ""
#: documents/models.py:569
msgid "Task Named Arguments"
msgstr ""
#: documents/models.py:571
msgid "JSON representation of the named arguments used with the task"
msgstr ""
#: documents/models.py:578
msgid "Task State"
msgstr ""
#: documents/models.py:579
msgid "Current state of the task being run"
msgstr ""
#: documents/models.py:584
msgid "Created DateTime"
msgstr ""
#: documents/models.py:585
msgid "Datetime field when the task result was created in UTC"
msgstr ""
#: documents/models.py:590
msgid "Started DateTime"
msgstr ""
#: documents/models.py:591
msgid "Datetime field when the task was started in UTC"
msgstr ""
#: documents/models.py:596
msgid "Completed DateTime"
msgstr ""
#: documents/models.py:597
msgid "Datetime field when the task was completed in UTC"
msgstr ""
#: documents/models.py:602
msgid "Result Data"
msgstr ""
#: documents/models.py:604
msgid "The data returned by the task"
msgstr ""
#: documents/models.py:613
msgid "Comment for the document"
msgstr ""
#: documents/models.py:642
msgid "comment"
msgstr ""
#: documents/models.py:643
msgid "comments"
msgstr ""
#: documents/serialisers.py:72
#, python-format
msgid "Invalid regular expression: %(error)s"
msgstr "Expresie regulată invalida: %(error)s"
#: documents/serialisers.py:191
#: documents/serialisers.py:193
msgid "Invalid color."
msgstr "Culoare invalidă."
#: documents/serialisers.py:515
#: documents/serialisers.py:518
#, python-format
msgid "File type %(type)s not supported"
msgstr "Tip de fișier %(type)s nesuportat"
#: documents/serialisers.py:596
#: documents/serialisers.py:599
msgid "Invalid variable detected."
msgstr ""
@@ -444,87 +556,87 @@ msgstr "Parolă"
msgid "Sign in"
msgstr "Conectare"
#: paperless/settings.py:339
#: paperless/settings.py:378
msgid "English (US)"
msgstr "Engleză (Americană)"
#: paperless/settings.py:340
#: paperless/settings.py:379
msgid "Belarusian"
msgstr ""
#: paperless/settings.py:341
#: paperless/settings.py:380
msgid "Czech"
msgstr "Cehă"
#: paperless/settings.py:342
#: paperless/settings.py:381
msgid "Danish"
msgstr "Daneză"
#: paperless/settings.py:343
#: paperless/settings.py:382
msgid "German"
msgstr "Germană"
#: paperless/settings.py:344
#: paperless/settings.py:383
msgid "English (GB)"
msgstr "Engleză (Britanică)"
#: paperless/settings.py:345
#: paperless/settings.py:384
msgid "Spanish"
msgstr "Spaniolă"
#: paperless/settings.py:346
#: paperless/settings.py:385
msgid "French"
msgstr "Franceză"
#: paperless/settings.py:347
#: paperless/settings.py:386
msgid "Italian"
msgstr "Italiană"
#: paperless/settings.py:348
#: paperless/settings.py:387
msgid "Luxembourgish"
msgstr "Luxemburgheză"
#: paperless/settings.py:349
#: paperless/settings.py:388
msgid "Dutch"
msgstr "Olandeză"
#: paperless/settings.py:350
#: paperless/settings.py:389
msgid "Polish"
msgstr "Poloneză"
#: paperless/settings.py:351
#: paperless/settings.py:390
msgid "Portuguese (Brazil)"
msgstr "Portugheză (Brazilia)"
#: paperless/settings.py:352
#: paperless/settings.py:391
msgid "Portuguese"
msgstr "Portugheză"
#: paperless/settings.py:353
#: paperless/settings.py:392
msgid "Romanian"
msgstr "Română"
#: paperless/settings.py:354
#: paperless/settings.py:393
msgid "Russian"
msgstr "Rusă"
#: paperless/settings.py:355
#: paperless/settings.py:394
msgid "Slovenian"
msgstr ""
#: paperless/settings.py:356
#: paperless/settings.py:395
msgid "Serbian"
msgstr ""
#: paperless/settings.py:357
#: paperless/settings.py:396
msgid "Swedish"
msgstr "Suedeză"
#: paperless/settings.py:358
#: paperless/settings.py:397
msgid "Turkish"
msgstr ""
#: paperless/settings.py:359
#: paperless/settings.py:398
msgid "Chinese Simplified"
msgstr ""

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-07-08 14:11-0700\n"
"PO-Revision-Date: 2022-08-03 16:12\n"
"POT-Creation-Date: 2022-11-09 21:50+0000\n"
"PO-Revision-Date: 2022-11-09 23:11\n"
"Last-Translator: \n"
"Language-Team: Russian\n"
"Language: ru_RU\n"
@@ -21,378 +21,490 @@ msgstr ""
msgid "Documents"
msgstr "Документы"
#: documents/models.py:29
#: documents/models.py:32
msgid "Any word"
msgstr "Любые слова"
#: documents/models.py:30
#: documents/models.py:33
msgid "All words"
msgstr "Все слова"
#: documents/models.py:31
#: documents/models.py:34
msgid "Exact match"
msgstr "Точное соответствие"
#: documents/models.py:32
#: documents/models.py:35
msgid "Regular expression"
msgstr "Регулярное выражение"
#: documents/models.py:33
#: documents/models.py:36
msgid "Fuzzy word"
msgstr "\"Нечёткий\" режим"
#: documents/models.py:34
#: documents/models.py:37
msgid "Automatic"
msgstr "Автоматически"
#: documents/models.py:37 documents/models.py:354 paperless_mail/models.py:16
#: documents/models.py:40 documents/models.py:367 paperless_mail/models.py:16
#: paperless_mail/models.py:80
msgid "name"
msgstr "имя"
#: documents/models.py:39
#: documents/models.py:42
msgid "match"
msgstr "соответствие"
#: documents/models.py:42
#: documents/models.py:45
msgid "matching algorithm"
msgstr "алгоритм сопоставления"
#: documents/models.py:47
#: documents/models.py:50
msgid "is insensitive"
msgstr "без учёта регистра"
#: documents/models.py:60 documents/models.py:115
#: documents/models.py:63 documents/models.py:118
msgid "correspondent"
msgstr "корреспондент"
#: documents/models.py:61
#: documents/models.py:64
msgid "correspondents"
msgstr "корреспонденты"
#: documents/models.py:66
#: documents/models.py:69
msgid "color"
msgstr "цвет"
#: documents/models.py:69
#: documents/models.py:72
msgid "is inbox tag"
msgstr "это входящий тег"
#: documents/models.py:72
#: documents/models.py:75
msgid "Marks this tag as an inbox tag: All newly consumed documents will be tagged with inbox tags."
msgstr "Отметить этот тег как «Входящий»: все вновь добавленные документы будут помечены тегами «Входящие»."
#: documents/models.py:78
#: documents/models.py:81
msgid "tag"
msgstr "тег"
#: documents/models.py:79 documents/models.py:153
#: documents/models.py:82 documents/models.py:156
msgid "tags"
msgstr "теги"
#: documents/models.py:84 documents/models.py:135
#: documents/models.py:87 documents/models.py:138
msgid "document type"
msgstr "тип документа"
#: documents/models.py:85
#: documents/models.py:88
msgid "document types"
msgstr "типы документов"
#: documents/models.py:90
#: documents/models.py:93
msgid "path"
msgstr "путь"
#: documents/models.py:96 documents/models.py:124
#: documents/models.py:99 documents/models.py:127
msgid "storage path"
msgstr "путь к хранилищу"
#: documents/models.py:97
#: documents/models.py:100
msgid "storage paths"
msgstr "пути хранения"
#: documents/models.py:105
#: documents/models.py:108
msgid "Unencrypted"
msgstr "не зашифровано"
#: documents/models.py:106
#: documents/models.py:109
msgid "Encrypted with GNU Privacy Guard"
msgstr "Зашифровано с помощью GNU Privacy Guard"
#: documents/models.py:127
#: documents/models.py:130
msgid "title"
msgstr "заголовок"
#: documents/models.py:139
#: documents/models.py:142 documents/models.py:611
msgid "content"
msgstr "содержимое"
#: documents/models.py:142
#: documents/models.py:145
msgid "The raw, text-only data of the document. This field is primarily used for searching."
msgstr "Это поле используется в основном для поиска."
#: documents/models.py:147
#: documents/models.py:150
msgid "mime type"
msgstr "тип Mime"
#: documents/models.py:157
#: documents/models.py:160
msgid "checksum"
msgstr "контрольная сумма"
#: documents/models.py:161
#: documents/models.py:164
msgid "The checksum of the original document."
msgstr "Контрольная сумма оригинального документа."
#: documents/models.py:165
#: documents/models.py:168
msgid "archive checksum"
msgstr "контрольная сумма архива"
#: documents/models.py:170
#: documents/models.py:173
msgid "The checksum of the archived document."
msgstr "Контрольная сумма архивного документа."
#: documents/models.py:173 documents/models.py:335 documents/models.py:520
#: documents/models.py:176 documents/models.py:348 documents/models.py:617
msgid "created"
msgstr "создано"
#: documents/models.py:176
#: documents/models.py:179
msgid "modified"
msgstr "изменено"
#: documents/models.py:183
#: documents/models.py:186
msgid "storage type"
msgstr "тип хранилища"
#: documents/models.py:191
#: documents/models.py:194
msgid "added"
msgstr "добавлено"
#: documents/models.py:198
#: documents/models.py:201
msgid "filename"
msgstr "имя файла"
#: documents/models.py:204
#: documents/models.py:207
msgid "Current filename in storage"
msgstr "Текущее имя файла в хранилище"
#: documents/models.py:208
#: documents/models.py:211
msgid "archive filename"
msgstr "имя файла архива"
#: documents/models.py:214
#: documents/models.py:217
msgid "Current archive filename in storage"
msgstr "Текущее имя файла архива в хранилище"
#: documents/models.py:218
#: documents/models.py:221
msgid "original filename"
msgstr ""
#: documents/models.py:227
msgid "The original name of the file when it was uploaded"
msgstr ""
#: documents/models.py:231
msgid "archive serial number"
msgstr "архивный номер (АН)"
#: documents/models.py:224
#: documents/models.py:237
msgid "The position of this document in your physical document archive."
msgstr "Позиция этого документа в вашем физическом архиве документов."
#: documents/models.py:230
#: documents/models.py:243 documents/models.py:628
msgid "document"
msgstr "документ"
#: documents/models.py:231
#: documents/models.py:244
msgid "documents"
msgstr "документы"
#: documents/models.py:318
#: documents/models.py:331
msgid "debug"
msgstr "отладка"
#: documents/models.py:319
#: documents/models.py:332
msgid "information"
msgstr "информация"
#: documents/models.py:320
#: documents/models.py:333
msgid "warning"
msgstr "предупреждение"
#: documents/models.py:321
#: documents/models.py:334
msgid "error"
msgstr "ошибка"
#: documents/models.py:322
#: documents/models.py:335
msgid "critical"
msgstr "критическая"
#: documents/models.py:325
#: documents/models.py:338
msgid "group"
msgstr "группа"
#: documents/models.py:327
#: documents/models.py:340
msgid "message"
msgstr "сообщение"
#: documents/models.py:330
#: documents/models.py:343
msgid "level"
msgstr "уровень"
#: documents/models.py:339
#: documents/models.py:352
msgid "log"
msgstr "журнал"
#: documents/models.py:340
#: documents/models.py:353
msgid "logs"
msgstr "логи"
#: documents/models.py:350 documents/models.py:403
#: documents/models.py:363 documents/models.py:419
msgid "saved view"
msgstr "сохранённое представление"
#: documents/models.py:351
#: documents/models.py:364
msgid "saved views"
msgstr "сохраненные представления"
#: documents/models.py:353
#: documents/models.py:366 documents/models.py:637
msgid "user"
msgstr "пользователь"
#: documents/models.py:357
#: documents/models.py:370
msgid "show on dashboard"
msgstr "показать на панели"
#: documents/models.py:360
#: documents/models.py:373
msgid "show in sidebar"
msgstr "показать в боковой панели"
#: documents/models.py:364
#: documents/models.py:377
msgid "sort field"
msgstr "Поле сортировки"
#: documents/models.py:369
#: documents/models.py:382
msgid "sort reverse"
msgstr "обратная сортировка"
#: documents/models.py:374
#: documents/models.py:387
msgid "title contains"
msgstr "заголовок содержит"
#: documents/models.py:375
#: documents/models.py:388
msgid "content contains"
msgstr "содержимое содержит"
#: documents/models.py:376
#: documents/models.py:389
msgid "ASN is"
msgstr "АН"
#: documents/models.py:377
#: documents/models.py:390
msgid "correspondent is"
msgstr "корреспондент"
#: documents/models.py:378
#: documents/models.py:391
msgid "document type is"
msgstr "тип документа"
#: documents/models.py:379
#: documents/models.py:392
msgid "is in inbox"
msgstr "во входящих"
#: documents/models.py:380
#: documents/models.py:393
msgid "has tag"
msgstr "есть тег"
#: documents/models.py:381
#: documents/models.py:394
msgid "has any tag"
msgstr "есть любой тег"
#: documents/models.py:382
#: documents/models.py:395
msgid "created before"
msgstr "создан до"
#: documents/models.py:383
#: documents/models.py:396
msgid "created after"
msgstr "создан после"
#: documents/models.py:384
#: documents/models.py:397
msgid "created year is"
msgstr "год создания"
#: documents/models.py:385
#: documents/models.py:398
msgid "created month is"
msgstr "месяц создания"
#: documents/models.py:386
#: documents/models.py:399
msgid "created day is"
msgstr "день создания"
#: documents/models.py:387
#: documents/models.py:400
msgid "added before"
msgstr "добавлен до"
#: documents/models.py:388
#: documents/models.py:401
msgid "added after"
msgstr "добавлен после"
#: documents/models.py:389
#: documents/models.py:402
msgid "modified before"
msgstr "изменен до"
#: documents/models.py:390
#: documents/models.py:403
msgid "modified after"
msgstr "изменен после"
#: documents/models.py:391
#: documents/models.py:404
msgid "does not have tag"
msgstr "не имеет тега"
#: documents/models.py:392
#: documents/models.py:405
msgid "does not have ASN"
msgstr "не имеет архивного номера"
#: documents/models.py:393
#: documents/models.py:406
msgid "title or content contains"
msgstr "Название или содержимое включает"
#: documents/models.py:394
#: documents/models.py:407
msgid "fulltext query"
msgstr "полнотекстовый запрос"
#: documents/models.py:395
#: documents/models.py:408
msgid "more like this"
msgstr "больше похожих"
#: documents/models.py:396
#: documents/models.py:409
msgid "has tags in"
msgstr "имеет теги в"
#: documents/models.py:406
#: documents/models.py:410
msgid "ASN greater than"
msgstr ""
#: documents/models.py:411
msgid "ASN less than"
msgstr ""
#: documents/models.py:412
msgid "storage path is"
msgstr ""
#: documents/models.py:422
msgid "rule type"
msgstr "Тип правила"
#: documents/models.py:408
#: documents/models.py:424
msgid "value"
msgstr "значение"
#: documents/models.py:411
#: documents/models.py:427
msgid "filter rule"
msgstr "Правило фильтрации"
#: documents/models.py:412
#: documents/models.py:428
msgid "filter rules"
msgstr "правила фильтрации"
#: documents/models.py:521
msgid "started"
msgstr "запущено"
#: documents/models.py:536
msgid "Task ID"
msgstr ""
#: documents/serialisers.py:70
#: documents/models.py:537
msgid "Celery ID for the Task that was run"
msgstr ""
#: documents/models.py:542
msgid "Acknowledged"
msgstr ""
#: documents/models.py:543
msgid "If the task is acknowledged via the frontend or API"
msgstr ""
#: documents/models.py:549 documents/models.py:556
msgid "Task Name"
msgstr ""
#: documents/models.py:550
msgid "Name of the file which the Task was run for"
msgstr ""
#: documents/models.py:557
msgid "Name of the Task which was run"
msgstr ""
#: documents/models.py:562
msgid "Task Positional Arguments"
msgstr ""
#: documents/models.py:564
msgid "JSON representation of the positional arguments used with the task"
msgstr ""
#: documents/models.py:569
msgid "Task Named Arguments"
msgstr ""
#: documents/models.py:571
msgid "JSON representation of the named arguments used with the task"
msgstr ""
#: documents/models.py:578
msgid "Task State"
msgstr ""
#: documents/models.py:579
msgid "Current state of the task being run"
msgstr ""
#: documents/models.py:584
msgid "Created DateTime"
msgstr ""
#: documents/models.py:585
msgid "Datetime field when the task result was created in UTC"
msgstr ""
#: documents/models.py:590
msgid "Started DateTime"
msgstr ""
#: documents/models.py:591
msgid "Datetime field when the task was started in UTC"
msgstr ""
#: documents/models.py:596
msgid "Completed DateTime"
msgstr ""
#: documents/models.py:597
msgid "Datetime field when the task was completed in UTC"
msgstr ""
#: documents/models.py:602
msgid "Result Data"
msgstr ""
#: documents/models.py:604
msgid "The data returned by the task"
msgstr ""
#: documents/models.py:613
msgid "Comment for the document"
msgstr ""
#: documents/models.py:642
msgid "comment"
msgstr ""
#: documents/models.py:643
msgid "comments"
msgstr ""
#: documents/serialisers.py:72
#, python-format
msgid "Invalid regular expression: %(error)s"
msgstr "неверное регулярное выражение: %(error)s"
#: documents/serialisers.py:191
#: documents/serialisers.py:193
msgid "Invalid color."
msgstr "Неверный цвет."
#: documents/serialisers.py:515
#: documents/serialisers.py:518
#, python-format
msgid "File type %(type)s not supported"
msgstr "Тип файла %(type)s не поддерживается"
#: documents/serialisers.py:596
#: documents/serialisers.py:599
msgid "Invalid variable detected."
msgstr "Обнаружена неверная переменная."
@@ -444,87 +556,87 @@ msgstr "Пароль"
msgid "Sign in"
msgstr "Вход"
#: paperless/settings.py:339
#: paperless/settings.py:378
msgid "English (US)"
msgstr "Английский (США)"
#: paperless/settings.py:340
#: paperless/settings.py:379
msgid "Belarusian"
msgstr "Белорусский"
#: paperless/settings.py:341
#: paperless/settings.py:380
msgid "Czech"
msgstr "Чешский"
#: paperless/settings.py:342
#: paperless/settings.py:381
msgid "Danish"
msgstr "Датский"
#: paperless/settings.py:343
#: paperless/settings.py:382
msgid "German"
msgstr "Немецкий"
#: paperless/settings.py:344
#: paperless/settings.py:383
msgid "English (GB)"
msgstr "Английский (Великобритании)"
#: paperless/settings.py:345
#: paperless/settings.py:384
msgid "Spanish"
msgstr "Испанский"
#: paperless/settings.py:346
#: paperless/settings.py:385
msgid "French"
msgstr "Французский"
#: paperless/settings.py:347
#: paperless/settings.py:386
msgid "Italian"
msgstr "Итальянский"
#: paperless/settings.py:348
#: paperless/settings.py:387
msgid "Luxembourgish"
msgstr "Люксембургский"
#: paperless/settings.py:349
#: paperless/settings.py:388
msgid "Dutch"
msgstr "Датский"
#: paperless/settings.py:350
#: paperless/settings.py:389
msgid "Polish"
msgstr "Польский"
#: paperless/settings.py:351
#: paperless/settings.py:390
msgid "Portuguese (Brazil)"
msgstr "Португальский (Бразилия)"
#: paperless/settings.py:352
#: paperless/settings.py:391
msgid "Portuguese"
msgstr "Португальский"
#: paperless/settings.py:353
#: paperless/settings.py:392
msgid "Romanian"
msgstr "Румынский"
#: paperless/settings.py:354
#: paperless/settings.py:393
msgid "Russian"
msgstr "Русский"
#: paperless/settings.py:355
#: paperless/settings.py:394
msgid "Slovenian"
msgstr "Словенский"
#: paperless/settings.py:356
#: paperless/settings.py:395
msgid "Serbian"
msgstr "Сербский"
#: paperless/settings.py:357
#: paperless/settings.py:396
msgid "Swedish"
msgstr "Шведский"
#: paperless/settings.py:358
#: paperless/settings.py:397
msgid "Turkish"
msgstr "Турецкий"
#: paperless/settings.py:359
#: paperless/settings.py:398
msgid "Chinese Simplified"
msgstr "Китайский упрощенный"

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-07-08 14:11-0700\n"
"PO-Revision-Date: 2022-08-25 12:46\n"
"POT-Creation-Date: 2022-11-09 21:50+0000\n"
"PO-Revision-Date: 2022-11-09 23:11\n"
"Last-Translator: \n"
"Language-Team: Slovenian\n"
"Language: sl_SI\n"
@@ -21,378 +21,490 @@ msgstr ""
msgid "Documents"
msgstr "Dokumenti"
#: documents/models.py:29
#: documents/models.py:32
msgid "Any word"
msgstr "Katerakoli beseda"
#: documents/models.py:30
#: documents/models.py:33
msgid "All words"
msgstr "Vse besede"
#: documents/models.py:31
#: documents/models.py:34
msgid "Exact match"
msgstr "Točno ujemanje"
#: documents/models.py:32
#: documents/models.py:35
msgid "Regular expression"
msgstr "Regularni izraz"
#: documents/models.py:33
#: documents/models.py:36
msgid "Fuzzy word"
msgstr "Fuzzy beseda"
#: documents/models.py:34
#: documents/models.py:37
msgid "Automatic"
msgstr "Samodejno"
#: documents/models.py:37 documents/models.py:354 paperless_mail/models.py:16
#: documents/models.py:40 documents/models.py:367 paperless_mail/models.py:16
#: paperless_mail/models.py:80
msgid "name"
msgstr "ime"
#: documents/models.py:39
#: documents/models.py:42
msgid "match"
msgstr "ujemanje"
#: documents/models.py:42
#: documents/models.py:45
msgid "matching algorithm"
msgstr "algoritem ujemanja"
#: documents/models.py:47
#: documents/models.py:50
msgid "is insensitive"
msgstr "brez razlikovanje velikosti črk"
#: documents/models.py:60 documents/models.py:115
#: documents/models.py:63 documents/models.py:118
msgid "correspondent"
msgstr "dopisnik"
#: documents/models.py:61
#: documents/models.py:64
msgid "correspondents"
msgstr "dopisniki"
#: documents/models.py:66
#: documents/models.py:69
msgid "color"
msgstr "barva"
#: documents/models.py:69
#: documents/models.py:72
msgid "is inbox tag"
msgstr "je vhodna oznaka"
#: documents/models.py:72
#: documents/models.py:75
msgid "Marks this tag as an inbox tag: All newly consumed documents will be tagged with inbox tags."
msgstr "Označi to oznako kot vhodno oznako: vsi na novo obdelani dokumenti bodo označeni z vhodno oznako."
#: documents/models.py:78
#: documents/models.py:81
msgid "tag"
msgstr "oznaka"
#: documents/models.py:79 documents/models.py:153
#: documents/models.py:82 documents/models.py:156
msgid "tags"
msgstr "oznake"
#: documents/models.py:84 documents/models.py:135
#: documents/models.py:87 documents/models.py:138
msgid "document type"
msgstr "vrsta dokumenta"
#: documents/models.py:85
#: documents/models.py:88
msgid "document types"
msgstr "vrste dokumentov"
#: documents/models.py:90
#: documents/models.py:93
msgid "path"
msgstr "pot"
#: documents/models.py:96 documents/models.py:124
#: documents/models.py:99 documents/models.py:127
msgid "storage path"
msgstr "pot do shrambe"
#: documents/models.py:97
#: documents/models.py:100
msgid "storage paths"
msgstr "poti do shrambe"
#: documents/models.py:105
#: documents/models.py:108
msgid "Unencrypted"
msgstr "Nešifrirano"
#: documents/models.py:106
#: documents/models.py:109
msgid "Encrypted with GNU Privacy Guard"
msgstr "Šifrirano z GNU Privacy Guard"
#: documents/models.py:127
#: documents/models.py:130
msgid "title"
msgstr "naslov"
#: documents/models.py:139
#: documents/models.py:142 documents/models.py:611
msgid "content"
msgstr "vsebina"
#: documents/models.py:142
#: documents/models.py:145
msgid "The raw, text-only data of the document. This field is primarily used for searching."
msgstr "Neobdelani besedilni podatki dokumenta. To polje se uporablja predvsem za iskanje."
#: documents/models.py:147
#: documents/models.py:150
msgid "mime type"
msgstr "vrsta mime"
#: documents/models.py:157
#: documents/models.py:160
msgid "checksum"
msgstr "kontrolna vsota"
#: documents/models.py:161
#: documents/models.py:164
msgid "The checksum of the original document."
msgstr "Kontrolna vsota izvirnega dokumenta."
#: documents/models.py:165
#: documents/models.py:168
msgid "archive checksum"
msgstr "arhivska kontrolna vsota"
#: documents/models.py:170
#: documents/models.py:173
msgid "The checksum of the archived document."
msgstr "Kontrolna vsota arhiviranega dokumenta."
#: documents/models.py:173 documents/models.py:335 documents/models.py:520
#: documents/models.py:176 documents/models.py:348 documents/models.py:617
msgid "created"
msgstr "ustvarjeno"
#: documents/models.py:176
#: documents/models.py:179
msgid "modified"
msgstr "spremenjeno"
#: documents/models.py:183
#: documents/models.py:186
msgid "storage type"
msgstr "vrsta shrambe"
#: documents/models.py:191
#: documents/models.py:194
msgid "added"
msgstr "dodano"
#: documents/models.py:198
#: documents/models.py:201
msgid "filename"
msgstr "ime datoteke"
#: documents/models.py:204
#: documents/models.py:207
msgid "Current filename in storage"
msgstr "Trenutno ime dokumenta v shrambi"
#: documents/models.py:208
#: documents/models.py:211
msgid "archive filename"
msgstr "ime arhivske datoteke"
#: documents/models.py:214
#: documents/models.py:217
msgid "Current archive filename in storage"
msgstr "Trenutno ime arhivske datoteke v shrambi"
#: documents/models.py:218
#: documents/models.py:221
msgid "original filename"
msgstr ""
#: documents/models.py:227
msgid "The original name of the file when it was uploaded"
msgstr ""
#: documents/models.py:231
msgid "archive serial number"
msgstr "arhivska serijska številka"
#: documents/models.py:224
#: documents/models.py:237
msgid "The position of this document in your physical document archive."
msgstr "Položaj tega dokumenta v vašem fizičnem arhivu dokumentov."
#: documents/models.py:230
#: documents/models.py:243 documents/models.py:628
msgid "document"
msgstr "dokument"
#: documents/models.py:231
#: documents/models.py:244
msgid "documents"
msgstr "dokumenti"
#: documents/models.py:318
#: documents/models.py:331
msgid "debug"
msgstr "razhroščevanje"
#: documents/models.py:319
#: documents/models.py:332
msgid "information"
msgstr "informacija"
#: documents/models.py:320
#: documents/models.py:333
msgid "warning"
msgstr "opozorilo"
#: documents/models.py:321
#: documents/models.py:334
msgid "error"
msgstr "napaka"
#: documents/models.py:322
#: documents/models.py:335
msgid "critical"
msgstr "kritično"
#: documents/models.py:325
#: documents/models.py:338
msgid "group"
msgstr "skupina"
#: documents/models.py:327
#: documents/models.py:340
msgid "message"
msgstr "sporočilo"
#: documents/models.py:330
#: documents/models.py:343
msgid "level"
msgstr "nivo"
#: documents/models.py:339
#: documents/models.py:352
msgid "log"
msgstr "dnevnik"
#: documents/models.py:340
#: documents/models.py:353
msgid "logs"
msgstr "dnevniki"
#: documents/models.py:350 documents/models.py:403
#: documents/models.py:363 documents/models.py:419
msgid "saved view"
msgstr "shranjeni pogled"
#: documents/models.py:351
#: documents/models.py:364
msgid "saved views"
msgstr "shranjeni pogledi"
#: documents/models.py:353
#: documents/models.py:366 documents/models.py:637
msgid "user"
msgstr "uporabnik"
#: documents/models.py:357
#: documents/models.py:370
msgid "show on dashboard"
msgstr "prikaži na pregledni plošči"
#: documents/models.py:360
#: documents/models.py:373
msgid "show in sidebar"
msgstr "prikaži v stranski vrstici"
#: documents/models.py:364
#: documents/models.py:377
msgid "sort field"
msgstr "polje za razvrščanje"
#: documents/models.py:369
#: documents/models.py:382
msgid "sort reverse"
msgstr "razvrsti obratno"
#: documents/models.py:374
#: documents/models.py:387
msgid "title contains"
msgstr "naslov vsebuje"
#: documents/models.py:375
#: documents/models.py:388
msgid "content contains"
msgstr "vsebina vsebuje"
#: documents/models.py:376
#: documents/models.py:389
msgid "ASN is"
msgstr "ASN je"
#: documents/models.py:377
#: documents/models.py:390
msgid "correspondent is"
msgstr "dopisnik je"
#: documents/models.py:378
#: documents/models.py:391
msgid "document type is"
msgstr "vrsta dokumenta je"
#: documents/models.py:379
#: documents/models.py:392
msgid "is in inbox"
msgstr "je v prejetem"
#: documents/models.py:380
#: documents/models.py:393
msgid "has tag"
msgstr "ima oznako"
#: documents/models.py:381
#: documents/models.py:394
msgid "has any tag"
msgstr "ima katero koli oznako"
#: documents/models.py:382
#: documents/models.py:395
msgid "created before"
msgstr "ustvarjeno pred"
#: documents/models.py:383
#: documents/models.py:396
msgid "created after"
msgstr "ustvarjeno po"
#: documents/models.py:384
#: documents/models.py:397
msgid "created year is"
msgstr "leto nastanka"
#: documents/models.py:385
#: documents/models.py:398
msgid "created month is"
msgstr "mesec nastanka"
#: documents/models.py:386
#: documents/models.py:399
msgid "created day is"
msgstr "dan nastanka"
#: documents/models.py:387
#: documents/models.py:400
msgid "added before"
msgstr "dodano pred"
#: documents/models.py:388
#: documents/models.py:401
msgid "added after"
msgstr "dodano po"
#: documents/models.py:389
#: documents/models.py:402
msgid "modified before"
msgstr "spremenjeno pred"
#: documents/models.py:390
#: documents/models.py:403
msgid "modified after"
msgstr "spremenjeno po"
#: documents/models.py:391
#: documents/models.py:404
msgid "does not have tag"
msgstr "nima oznake"
#: documents/models.py:392
#: documents/models.py:405
msgid "does not have ASN"
msgstr "nima ASN"
#: documents/models.py:393
#: documents/models.py:406
msgid "title or content contains"
msgstr "naslov ali vsebina vsebujeta"
#: documents/models.py:394
#: documents/models.py:407
msgid "fulltext query"
msgstr "polnobesedilna poizvedba"
#: documents/models.py:395
#: documents/models.py:408
msgid "more like this"
msgstr "več takih"
#: documents/models.py:396
#: documents/models.py:409
msgid "has tags in"
msgstr "ima oznake"
#: documents/models.py:406
#: documents/models.py:410
msgid "ASN greater than"
msgstr ""
#: documents/models.py:411
msgid "ASN less than"
msgstr ""
#: documents/models.py:412
msgid "storage path is"
msgstr ""
#: documents/models.py:422
msgid "rule type"
msgstr "vrsta pravila"
#: documents/models.py:408
#: documents/models.py:424
msgid "value"
msgstr "vrednost"
#: documents/models.py:411
#: documents/models.py:427
msgid "filter rule"
msgstr "filtriraj pravilo"
#: documents/models.py:412
#: documents/models.py:428
msgid "filter rules"
msgstr "filtriraj pravila"
#: documents/models.py:521
msgid "started"
msgstr "zagnano"
#: documents/models.py:536
msgid "Task ID"
msgstr ""
#: documents/serialisers.py:70
#: documents/models.py:537
msgid "Celery ID for the Task that was run"
msgstr ""
#: documents/models.py:542
msgid "Acknowledged"
msgstr ""
#: documents/models.py:543
msgid "If the task is acknowledged via the frontend or API"
msgstr ""
#: documents/models.py:549 documents/models.py:556
msgid "Task Name"
msgstr ""
#: documents/models.py:550
msgid "Name of the file which the Task was run for"
msgstr ""
#: documents/models.py:557
msgid "Name of the Task which was run"
msgstr ""
#: documents/models.py:562
msgid "Task Positional Arguments"
msgstr ""
#: documents/models.py:564
msgid "JSON representation of the positional arguments used with the task"
msgstr ""
#: documents/models.py:569
msgid "Task Named Arguments"
msgstr ""
#: documents/models.py:571
msgid "JSON representation of the named arguments used with the task"
msgstr ""
#: documents/models.py:578
msgid "Task State"
msgstr ""
#: documents/models.py:579
msgid "Current state of the task being run"
msgstr ""
#: documents/models.py:584
msgid "Created DateTime"
msgstr ""
#: documents/models.py:585
msgid "Datetime field when the task result was created in UTC"
msgstr ""
#: documents/models.py:590
msgid "Started DateTime"
msgstr ""
#: documents/models.py:591
msgid "Datetime field when the task was started in UTC"
msgstr ""
#: documents/models.py:596
msgid "Completed DateTime"
msgstr ""
#: documents/models.py:597
msgid "Datetime field when the task was completed in UTC"
msgstr ""
#: documents/models.py:602
msgid "Result Data"
msgstr ""
#: documents/models.py:604
msgid "The data returned by the task"
msgstr ""
#: documents/models.py:613
msgid "Comment for the document"
msgstr ""
#: documents/models.py:642
msgid "comment"
msgstr ""
#: documents/models.py:643
msgid "comments"
msgstr ""
#: documents/serialisers.py:72
#, python-format
msgid "Invalid regular expression: %(error)s"
msgstr "Neveljaven splošen izraz: %(error)s"
#: documents/serialisers.py:191
#: documents/serialisers.py:193
msgid "Invalid color."
msgstr "Napačna barva."
#: documents/serialisers.py:515
#: documents/serialisers.py:518
#, python-format
msgid "File type %(type)s not supported"
msgstr "Vrsta datoteke %(type)s ni podprta"
#: documents/serialisers.py:596
#: documents/serialisers.py:599
msgid "Invalid variable detected."
msgstr "Zaznani neveljavni znaki."
@@ -444,87 +556,87 @@ msgstr "Geslo"
msgid "Sign in"
msgstr "Prijava"
#: paperless/settings.py:339
#: paperless/settings.py:378
msgid "English (US)"
msgstr "Angleščina (ZDA)"
#: paperless/settings.py:340
#: paperless/settings.py:379
msgid "Belarusian"
msgstr "Beloruščina"
#: paperless/settings.py:341
#: paperless/settings.py:380
msgid "Czech"
msgstr "Češčina"
#: paperless/settings.py:342
#: paperless/settings.py:381
msgid "Danish"
msgstr "Danščina"
#: paperless/settings.py:343
#: paperless/settings.py:382
msgid "German"
msgstr "Nemščina"
#: paperless/settings.py:344
#: paperless/settings.py:383
msgid "English (GB)"
msgstr "Angleščina (GB)"
#: paperless/settings.py:345
#: paperless/settings.py:384
msgid "Spanish"
msgstr "Španščina"
#: paperless/settings.py:346
#: paperless/settings.py:385
msgid "French"
msgstr "Francoščina"
#: paperless/settings.py:347
#: paperless/settings.py:386
msgid "Italian"
msgstr "Italijanščina"
#: paperless/settings.py:348
#: paperless/settings.py:387
msgid "Luxembourgish"
msgstr "Luksemburški"
#: paperless/settings.py:349
#: paperless/settings.py:388
msgid "Dutch"
msgstr "Nizozemščina"
#: paperless/settings.py:350
#: paperless/settings.py:389
msgid "Polish"
msgstr "Poljščina"
#: paperless/settings.py:351
#: paperless/settings.py:390
msgid "Portuguese (Brazil)"
msgstr "Portugalščina (Brazilija)"
#: paperless/settings.py:352
#: paperless/settings.py:391
msgid "Portuguese"
msgstr "Portugalščina"
#: paperless/settings.py:353
#: paperless/settings.py:392
msgid "Romanian"
msgstr "Romunščina"
#: paperless/settings.py:354
#: paperless/settings.py:393
msgid "Russian"
msgstr "Ruščina"
#: paperless/settings.py:355
#: paperless/settings.py:394
msgid "Slovenian"
msgstr "Slovenščina"
#: paperless/settings.py:356
#: paperless/settings.py:395
msgid "Serbian"
msgstr "Srbščina"
#: paperless/settings.py:357
#: paperless/settings.py:396
msgid "Swedish"
msgstr "Švedščina"
#: paperless/settings.py:358
#: paperless/settings.py:397
msgid "Turkish"
msgstr "Turščina"
#: paperless/settings.py:359
#: paperless/settings.py:398
msgid "Chinese Simplified"
msgstr "Poenostavljena kitajščina"

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-07-08 14:11-0700\n"
"PO-Revision-Date: 2022-08-04 23:55\n"
"POT-Creation-Date: 2022-11-09 21:50+0000\n"
"PO-Revision-Date: 2022-11-12 13:08\n"
"Last-Translator: \n"
"Language-Team: Serbian (Latin)\n"
"Language: sr_CS\n"
@@ -21,378 +21,490 @@ msgstr ""
msgid "Documents"
msgstr "Dokumenta"
#: documents/models.py:29
#: documents/models.py:32
msgid "Any word"
msgstr "Bilo koja reč"
#: documents/models.py:30
#: documents/models.py:33
msgid "All words"
msgstr "Sve reči"
#: documents/models.py:31
#: documents/models.py:34
msgid "Exact match"
msgstr "Tačno podudaranje"
#: documents/models.py:32
#: documents/models.py:35
msgid "Regular expression"
msgstr "Regularni izraz"
#: documents/models.py:33
#: documents/models.py:36
msgid "Fuzzy word"
msgstr "Fuzzy reč"
#: documents/models.py:34
#: documents/models.py:37
msgid "Automatic"
msgstr "Automatski"
#: documents/models.py:37 documents/models.py:354 paperless_mail/models.py:16
#: documents/models.py:40 documents/models.py:367 paperless_mail/models.py:16
#: paperless_mail/models.py:80
msgid "name"
msgstr "naziv"
#: documents/models.py:39
#: documents/models.py:42
msgid "match"
msgstr "poklapanje"
#: documents/models.py:42
#: documents/models.py:45
msgid "matching algorithm"
msgstr "algoritam podudaranja"
#: documents/models.py:47
#: documents/models.py:50
msgid "is insensitive"
msgstr "bez razlike veliko/malo slovo"
#: documents/models.py:60 documents/models.py:115
#: documents/models.py:63 documents/models.py:118
msgid "correspondent"
msgstr "korespodent"
#: documents/models.py:61
#: documents/models.py:64
msgid "correspondents"
msgstr "korespodenti"
#: documents/models.py:66
#: documents/models.py:69
msgid "color"
msgstr "boja"
#: documents/models.py:69
#: documents/models.py:72
msgid "is inbox tag"
msgstr "je oznaka prijemnog sandučeta"
#: documents/models.py:72
#: documents/models.py:75
msgid "Marks this tag as an inbox tag: All newly consumed documents will be tagged with inbox tags."
msgstr "Označava ovu oznaku kao oznaku prijemnog sandučeta (inbox): Svi novoobrađeni dokumenti će biti označeni oznakama prijemnog sandučeta (inbox)."
#: documents/models.py:78
#: documents/models.py:81
msgid "tag"
msgstr "oznaka"
#: documents/models.py:79 documents/models.py:153
#: documents/models.py:82 documents/models.py:156
msgid "tags"
msgstr "oznake"
#: documents/models.py:84 documents/models.py:135
#: documents/models.py:87 documents/models.py:138
msgid "document type"
msgstr "tip dokumenta"
#: documents/models.py:85
#: documents/models.py:88
msgid "document types"
msgstr "tipovi dokumenta"
#: documents/models.py:90
#: documents/models.py:93
msgid "path"
msgstr "putanja"
#: documents/models.py:96 documents/models.py:124
#: documents/models.py:99 documents/models.py:127
msgid "storage path"
msgstr "putanja skladišta"
#: documents/models.py:97
#: documents/models.py:100
msgid "storage paths"
msgstr "putanja skladišta"
#: documents/models.py:105
#: documents/models.py:108
msgid "Unencrypted"
msgstr "Nešifrovano"
#: documents/models.py:106
#: documents/models.py:109
msgid "Encrypted with GNU Privacy Guard"
msgstr "Šifrovano pomoću GNU Privacy Guard"
#: documents/models.py:127
#: documents/models.py:130
msgid "title"
msgstr "naslov"
#: documents/models.py:139
#: documents/models.py:142 documents/models.py:611
msgid "content"
msgstr "sadržaj"
#: documents/models.py:142
#: documents/models.py:145
msgid "The raw, text-only data of the document. This field is primarily used for searching."
msgstr "Neobrađeni tekstualni podaci dokumenta. Ovo se polje koristi prvenstveno za pretraživanje."
#: documents/models.py:147
#: documents/models.py:150
msgid "mime type"
msgstr "mime tip"
#: documents/models.py:157
#: documents/models.py:160
msgid "checksum"
msgstr "kontrolna suma"
#: documents/models.py:161
#: documents/models.py:164
msgid "The checksum of the original document."
msgstr "Kontrolna suma originalnog dokumenta."
#: documents/models.py:165
#: documents/models.py:168
msgid "archive checksum"
msgstr "arhivni checksum"
#: documents/models.py:170
#: documents/models.py:173
msgid "The checksum of the archived document."
msgstr "Kontrolna suma arhivnog dokumenta."
#: documents/models.py:173 documents/models.py:335 documents/models.py:520
#: documents/models.py:176 documents/models.py:348 documents/models.py:617
msgid "created"
msgstr "kreirano"
#: documents/models.py:176
#: documents/models.py:179
msgid "modified"
msgstr "izmenjeno"
#: documents/models.py:183
#: documents/models.py:186
msgid "storage type"
msgstr "tip skladišta"
#: documents/models.py:191
#: documents/models.py:194
msgid "added"
msgstr "dodato"
#: documents/models.py:198
#: documents/models.py:201
msgid "filename"
msgstr "naziv fajla"
#: documents/models.py:204
#: documents/models.py:207
msgid "Current filename in storage"
msgstr "Trenutni naziv sačuvane datoteke"
#: documents/models.py:208
#: documents/models.py:211
msgid "archive filename"
msgstr "naziv fajla arhive"
#: documents/models.py:214
#: documents/models.py:217
msgid "Current archive filename in storage"
msgstr "Trenutni naziv arhivirane sačuvane datoteke"
#: documents/models.py:218
#: documents/models.py:221
msgid "original filename"
msgstr "originalno ime fajla"
#: documents/models.py:227
msgid "The original name of the file when it was uploaded"
msgstr "Originalni naziv fajla kada je otpremljen"
#: documents/models.py:231
msgid "archive serial number"
msgstr "arhivski serijski broj"
#: documents/models.py:224
#: documents/models.py:237
msgid "The position of this document in your physical document archive."
msgstr "Položaj ovog dokumenta u vašoj fizičkoj arhivi dokumenata."
#: documents/models.py:230
#: documents/models.py:243 documents/models.py:628
msgid "document"
msgstr "dokument"
#: documents/models.py:231
#: documents/models.py:244
msgid "documents"
msgstr "dokumenta"
#: documents/models.py:318
#: documents/models.py:331
msgid "debug"
msgstr "okloni greške"
#: documents/models.py:319
#: documents/models.py:332
msgid "information"
msgstr "informacija"
#: documents/models.py:320
#: documents/models.py:333
msgid "warning"
msgstr "upozorenje"
#: documents/models.py:321
#: documents/models.py:334
msgid "error"
msgstr "grеška"
#: documents/models.py:322
#: documents/models.py:335
msgid "critical"
msgstr "kritično"
#: documents/models.py:325
#: documents/models.py:338
msgid "group"
msgstr "grupa"
#: documents/models.py:327
#: documents/models.py:340
msgid "message"
msgstr "poruka"
#: documents/models.py:330
#: documents/models.py:343
msgid "level"
msgstr "nivo"
#: documents/models.py:339
#: documents/models.py:352
msgid "log"
msgstr "log"
#: documents/models.py:340
#: documents/models.py:353
msgid "logs"
msgstr "logovi"
#: documents/models.py:350 documents/models.py:403
#: documents/models.py:363 documents/models.py:419
msgid "saved view"
msgstr "sačuvani prikaz"
#: documents/models.py:351
#: documents/models.py:364
msgid "saved views"
msgstr "sačuvani prikazi"
#: documents/models.py:353
#: documents/models.py:366 documents/models.py:637
msgid "user"
msgstr "korisnik"
#: documents/models.py:357
#: documents/models.py:370
msgid "show on dashboard"
msgstr "prikaži na kontrolnoj tabli"
#: documents/models.py:360
#: documents/models.py:373
msgid "show in sidebar"
msgstr "prikaži u bočnoj traci"
#: documents/models.py:364
#: documents/models.py:377
msgid "sort field"
msgstr "polje za sortiranje"
#: documents/models.py:369
#: documents/models.py:382
msgid "sort reverse"
msgstr "obrnuto sortiranje"
#: documents/models.py:374
#: documents/models.py:387
msgid "title contains"
msgstr "naslov sadrži"
#: documents/models.py:375
#: documents/models.py:388
msgid "content contains"
msgstr "sadržaj sadrži"
#: documents/models.py:376
#: documents/models.py:389
msgid "ASN is"
msgstr "ASN je"
#: documents/models.py:377
#: documents/models.py:390
msgid "correspondent is"
msgstr "korespodent je"
#: documents/models.py:378
#: documents/models.py:391
msgid "document type is"
msgstr "tip dokumenta je"
#: documents/models.py:379
#: documents/models.py:392
msgid "is in inbox"
msgstr "je u prijemnog sandučetu"
#: documents/models.py:380
#: documents/models.py:393
msgid "has tag"
msgstr "ima oznaku"
#: documents/models.py:381
#: documents/models.py:394
msgid "has any tag"
msgstr "ima bilo koju oznaku"
#: documents/models.py:382
#: documents/models.py:395
msgid "created before"
msgstr "kreiran pre"
#: documents/models.py:383
#: documents/models.py:396
msgid "created after"
msgstr "kreiran posle"
#: documents/models.py:384
#: documents/models.py:397
msgid "created year is"
msgstr "godina kreiranja je"
#: documents/models.py:385
#: documents/models.py:398
msgid "created month is"
msgstr "mesec kreiranja je"
#: documents/models.py:386
#: documents/models.py:399
msgid "created day is"
msgstr "dan kreiranja je"
#: documents/models.py:387
#: documents/models.py:400
msgid "added before"
msgstr "dodat pre"
#: documents/models.py:388
#: documents/models.py:401
msgid "added after"
msgstr "dodat posle"
#: documents/models.py:389
#: documents/models.py:402
msgid "modified before"
msgstr "izmenjen pre"
#: documents/models.py:390
#: documents/models.py:403
msgid "modified after"
msgstr "izmenjen posle"
#: documents/models.py:391
#: documents/models.py:404
msgid "does not have tag"
msgstr "nema oznaku"
#: documents/models.py:392
#: documents/models.py:405
msgid "does not have ASN"
msgstr "nema ASN"
#: documents/models.py:393
#: documents/models.py:406
msgid "title or content contains"
msgstr "naslov i sadržaj sadrži"
#: documents/models.py:394
#: documents/models.py:407
msgid "fulltext query"
msgstr "upit za ceo tekst"
#: documents/models.py:395
#: documents/models.py:408
msgid "more like this"
msgstr "više ovakvih"
#: documents/models.py:396
#: documents/models.py:409
msgid "has tags in"
msgstr "ima oznake u"
#: documents/models.py:406
#: documents/models.py:410
msgid "ASN greater than"
msgstr "ASN veći od"
#: documents/models.py:411
msgid "ASN less than"
msgstr "ASN manji od"
#: documents/models.py:412
msgid "storage path is"
msgstr "putanja skladišta je"
#: documents/models.py:422
msgid "rule type"
msgstr "tip pravila"
#: documents/models.py:408
#: documents/models.py:424
msgid "value"
msgstr "vrednost"
#: documents/models.py:411
#: documents/models.py:427
msgid "filter rule"
msgstr "filter pravilo"
#: documents/models.py:412
#: documents/models.py:428
msgid "filter rules"
msgstr "filter pravila"
#: documents/models.py:521
msgid "started"
msgstr "pokrenuto"
#: documents/models.py:536
msgid "Task ID"
msgstr "ID Zadatka"
#: documents/serialisers.py:70
#: documents/models.py:537
msgid "Celery ID for the Task that was run"
msgstr "Celery ID za zadatak koji je pokrenut"
#: documents/models.py:542
msgid "Acknowledged"
msgstr "Potvrđeno"
#: documents/models.py:543
msgid "If the task is acknowledged via the frontend or API"
msgstr "Ako je zadatak potvrđen preko frontenda ili API-ja"
#: documents/models.py:549 documents/models.py:556
msgid "Task Name"
msgstr "Ime zadatka"
#: documents/models.py:550
msgid "Name of the file which the Task was run for"
msgstr "Naziv fajla za koji je zadatak pokrenut"
#: documents/models.py:557
msgid "Name of the Task which was run"
msgstr "Naziv zadatka koji je bio pokrenut"
#: documents/models.py:562
msgid "Task Positional Arguments"
msgstr "Pozicioni argumenti zadatka"
#: documents/models.py:564
msgid "JSON representation of the positional arguments used with the task"
msgstr "JSON prikaz pozicionih argumenata koji se koriste sa zadatkom"
#: documents/models.py:569
msgid "Task Named Arguments"
msgstr "Argumenti zadatka"
#: documents/models.py:571
msgid "JSON representation of the named arguments used with the task"
msgstr "JSON prikaz imenovanih argumenata koji se koriste sa zadatkom"
#: documents/models.py:578
msgid "Task State"
msgstr "Stanje zadatka"
#: documents/models.py:579
msgid "Current state of the task being run"
msgstr "Trenutno stanje zadatka koji se izvršava"
#: documents/models.py:584
msgid "Created DateTime"
msgstr "Datum i vreme kreiranja"
#: documents/models.py:585
msgid "Datetime field when the task result was created in UTC"
msgstr "Polje datuma i vremena kada je rezultat zadatka kreiran u UTC"
#: documents/models.py:590
msgid "Started DateTime"
msgstr "Datum i vreme početka"
#: documents/models.py:591
msgid "Datetime field when the task was started in UTC"
msgstr "Polje datuma i vremena kada je zadatak pokrenut u UTC"
#: documents/models.py:596
msgid "Completed DateTime"
msgstr "Datum i vreme završetka"
#: documents/models.py:597
msgid "Datetime field when the task was completed in UTC"
msgstr "Polje datuma i vremena kada je zadatak završen u UTC"
#: documents/models.py:602
msgid "Result Data"
msgstr "Podaci o rezultatu"
#: documents/models.py:604
msgid "The data returned by the task"
msgstr "Podaci koje vraća zadatak"
#: documents/models.py:613
msgid "Comment for the document"
msgstr "Komentar za dokument"
#: documents/models.py:642
msgid "comment"
msgstr "komentar"
#: documents/models.py:643
msgid "comments"
msgstr "komentari"
#: documents/serialisers.py:72
#, python-format
msgid "Invalid regular expression: %(error)s"
msgstr "Nevažeći regularni izraz: %(error)s"
#: documents/serialisers.py:191
#: documents/serialisers.py:193
msgid "Invalid color."
msgstr "Nevažeća boja."
#: documents/serialisers.py:515
#: documents/serialisers.py:518
#, python-format
msgid "File type %(type)s not supported"
msgstr "Vrsta datoteke %(type)s nije podržana"
#: documents/serialisers.py:596
#: documents/serialisers.py:599
msgid "Invalid variable detected."
msgstr "Otkrivena je nevažeća promenljiva."
@@ -444,87 +556,87 @@ msgstr "Lozinka"
msgid "Sign in"
msgstr "Prijavite se"
#: paperless/settings.py:339
#: paperless/settings.py:378
msgid "English (US)"
msgstr "Engleski (US)"
#: paperless/settings.py:340
#: paperless/settings.py:379
msgid "Belarusian"
msgstr "Beloruski"
#: paperless/settings.py:341
#: paperless/settings.py:380
msgid "Czech"
msgstr "Češki"
#: paperless/settings.py:342
#: paperless/settings.py:381
msgid "Danish"
msgstr "Danski"
#: paperless/settings.py:343
#: paperless/settings.py:382
msgid "German"
msgstr "Nemački"
#: paperless/settings.py:344
#: paperless/settings.py:383
msgid "English (GB)"
msgstr "Engleski (UK)"
#: paperless/settings.py:345
#: paperless/settings.py:384
msgid "Spanish"
msgstr "Španski"
#: paperless/settings.py:346
#: paperless/settings.py:385
msgid "French"
msgstr "Francuski"
#: paperless/settings.py:347
#: paperless/settings.py:386
msgid "Italian"
msgstr "Italijanski"
#: paperless/settings.py:348
#: paperless/settings.py:387
msgid "Luxembourgish"
msgstr "Luksemburški"
#: paperless/settings.py:349
#: paperless/settings.py:388
msgid "Dutch"
msgstr "Holandski"
#: paperless/settings.py:350
#: paperless/settings.py:389
msgid "Polish"
msgstr "Poljski"
#: paperless/settings.py:351
#: paperless/settings.py:390
msgid "Portuguese (Brazil)"
msgstr "Portugalski (Brazil)"
#: paperless/settings.py:352
#: paperless/settings.py:391
msgid "Portuguese"
msgstr "Portugalski"
#: paperless/settings.py:353
#: paperless/settings.py:392
msgid "Romanian"
msgstr "Rumunski"
#: paperless/settings.py:354
#: paperless/settings.py:393
msgid "Russian"
msgstr "Ruski"
#: paperless/settings.py:355
#: paperless/settings.py:394
msgid "Slovenian"
msgstr "Slovenački"
#: paperless/settings.py:356
#: paperless/settings.py:395
msgid "Serbian"
msgstr "Srpski"
#: paperless/settings.py:357
#: paperless/settings.py:396
msgid "Swedish"
msgstr "Švedski"
#: paperless/settings.py:358
#: paperless/settings.py:397
msgid "Turkish"
msgstr "Turski"
#: paperless/settings.py:359
#: paperless/settings.py:398
msgid "Chinese Simplified"
msgstr "Kineski pojednostavljen"

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-07-08 14:11-0700\n"
"PO-Revision-Date: 2022-07-08 22:07\n"
"POT-Creation-Date: 2022-11-09 21:50+0000\n"
"PO-Revision-Date: 2022-11-09 23:11\n"
"Last-Translator: \n"
"Language-Team: Swedish\n"
"Language: sv_SE\n"
@@ -21,378 +21,490 @@ msgstr ""
msgid "Documents"
msgstr "Dokument"
#: documents/models.py:29
#: documents/models.py:32
msgid "Any word"
msgstr "Valfritt ord"
#: documents/models.py:30
#: documents/models.py:33
msgid "All words"
msgstr "Alla ord"
#: documents/models.py:31
#: documents/models.py:34
msgid "Exact match"
msgstr "Exakt matchning"
#: documents/models.py:32
#: documents/models.py:35
msgid "Regular expression"
msgstr "Reguljära uttryck"
#: documents/models.py:33
#: documents/models.py:36
msgid "Fuzzy word"
msgstr "Ungefärligt ord"
#: documents/models.py:34
#: documents/models.py:37
msgid "Automatic"
msgstr "Automatisk"
#: documents/models.py:37 documents/models.py:354 paperless_mail/models.py:16
#: documents/models.py:40 documents/models.py:367 paperless_mail/models.py:16
#: paperless_mail/models.py:80
msgid "name"
msgstr "namn"
#: documents/models.py:39
#: documents/models.py:42
msgid "match"
msgstr "träff"
#: documents/models.py:42
#: documents/models.py:45
msgid "matching algorithm"
msgstr "matchande algoritm"
#: documents/models.py:47
#: documents/models.py:50
msgid "is insensitive"
msgstr "är ej skiftlägeskänsligt"
#: documents/models.py:60 documents/models.py:115
#: documents/models.py:63 documents/models.py:118
msgid "correspondent"
msgstr "korrespondent"
#: documents/models.py:61
#: documents/models.py:64
msgid "correspondents"
msgstr "korrespondenter"
#: documents/models.py:66
#: documents/models.py:69
msgid "color"
msgstr "färg"
#: documents/models.py:69
#: documents/models.py:72
msgid "is inbox tag"
msgstr "är inkorgsetikett"
#: documents/models.py:72
#: documents/models.py:75
msgid "Marks this tag as an inbox tag: All newly consumed documents will be tagged with inbox tags."
msgstr "Markerar denna etikett som en inkorgsetikett: Alla nyligen konsumerade dokument kommer att märkas med inkorgsetiketter."
#: documents/models.py:78
#: documents/models.py:81
msgid "tag"
msgstr "etikett"
#: documents/models.py:79 documents/models.py:153
#: documents/models.py:82 documents/models.py:156
msgid "tags"
msgstr "etiketter"
#: documents/models.py:84 documents/models.py:135
#: documents/models.py:87 documents/models.py:138
msgid "document type"
msgstr "dokumenttyp"
#: documents/models.py:85
#: documents/models.py:88
msgid "document types"
msgstr "dokumenttyper"
#: documents/models.py:90
#: documents/models.py:93
msgid "path"
msgstr ""
#: documents/models.py:96 documents/models.py:124
#: documents/models.py:99 documents/models.py:127
msgid "storage path"
msgstr ""
#: documents/models.py:97
#: documents/models.py:100
msgid "storage paths"
msgstr ""
#: documents/models.py:105
#: documents/models.py:108
msgid "Unencrypted"
msgstr "Okrypterad"
#: documents/models.py:106
#: documents/models.py:109
msgid "Encrypted with GNU Privacy Guard"
msgstr "Krypterad med GNU Privacy Guard"
#: documents/models.py:127
#: documents/models.py:130
msgid "title"
msgstr "titel"
#: documents/models.py:139
#: documents/models.py:142 documents/models.py:611
msgid "content"
msgstr "innehåll"
#: documents/models.py:142
#: documents/models.py:145
msgid "The raw, text-only data of the document. This field is primarily used for searching."
msgstr "Dokumentets obearbetade textdata. Detta fält används främst för sökning."
#: documents/models.py:147
#: documents/models.py:150
msgid "mime type"
msgstr "MIME-typ"
#: documents/models.py:157
#: documents/models.py:160
msgid "checksum"
msgstr "kontrollsumma"
#: documents/models.py:161
#: documents/models.py:164
msgid "The checksum of the original document."
msgstr "Kontrollsumman för originaldokumentet."
#: documents/models.py:165
#: documents/models.py:168
msgid "archive checksum"
msgstr "arkivera kontrollsumma"
#: documents/models.py:170
#: documents/models.py:173
msgid "The checksum of the archived document."
msgstr "Kontrollsumman för det arkiverade dokumentet."
#: documents/models.py:173 documents/models.py:335 documents/models.py:520
#: documents/models.py:176 documents/models.py:348 documents/models.py:617
msgid "created"
msgstr "skapad"
#: documents/models.py:176
#: documents/models.py:179
msgid "modified"
msgstr "ändrad"
#: documents/models.py:183
#: documents/models.py:186
msgid "storage type"
msgstr "lagringstyp"
#: documents/models.py:191
#: documents/models.py:194
msgid "added"
msgstr "tillagd"
#: documents/models.py:198
#: documents/models.py:201
msgid "filename"
msgstr "filnamn"
#: documents/models.py:204
#: documents/models.py:207
msgid "Current filename in storage"
msgstr "Nuvarande filnamn i lagringsutrymmet"
#: documents/models.py:208
#: documents/models.py:211
msgid "archive filename"
msgstr "arkivfilnamn"
#: documents/models.py:214
#: documents/models.py:217
msgid "Current archive filename in storage"
msgstr "Nuvarande arkivfilnamn i lagringsutrymmet"
#: documents/models.py:218
#: documents/models.py:221
msgid "original filename"
msgstr ""
#: documents/models.py:227
msgid "The original name of the file when it was uploaded"
msgstr ""
#: documents/models.py:231
msgid "archive serial number"
msgstr "serienummer (arkivering)"
#: documents/models.py:224
#: documents/models.py:237
msgid "The position of this document in your physical document archive."
msgstr "Placeringen av detta dokument i ditt fysiska dokumentarkiv."
#: documents/models.py:230
#: documents/models.py:243 documents/models.py:628
msgid "document"
msgstr "dokument"
#: documents/models.py:231
#: documents/models.py:244
msgid "documents"
msgstr "dokument"
#: documents/models.py:318
#: documents/models.py:331
msgid "debug"
msgstr "felsök"
#: documents/models.py:319
#: documents/models.py:332
msgid "information"
msgstr ""
#: documents/models.py:320
#: documents/models.py:333
msgid "warning"
msgstr "varning"
#: documents/models.py:321
#: documents/models.py:334
msgid "error"
msgstr "fel"
#: documents/models.py:322
#: documents/models.py:335
msgid "critical"
msgstr "kritisk"
#: documents/models.py:325
#: documents/models.py:338
msgid "group"
msgstr "grupp"
#: documents/models.py:327
#: documents/models.py:340
msgid "message"
msgstr "meddelande"
#: documents/models.py:330
#: documents/models.py:343
msgid "level"
msgstr "nivå"
#: documents/models.py:339
#: documents/models.py:352
msgid "log"
msgstr "logg"
#: documents/models.py:340
#: documents/models.py:353
msgid "logs"
msgstr "loggar"
#: documents/models.py:350 documents/models.py:403
#: documents/models.py:363 documents/models.py:419
msgid "saved view"
msgstr "sparad vy"
#: documents/models.py:351
#: documents/models.py:364
msgid "saved views"
msgstr "sparade vyer"
#: documents/models.py:353
#: documents/models.py:366 documents/models.py:637
msgid "user"
msgstr "användare"
#: documents/models.py:357
#: documents/models.py:370
msgid "show on dashboard"
msgstr "visa på kontrollpanelen"
#: documents/models.py:360
#: documents/models.py:373
msgid "show in sidebar"
msgstr "visa i sidofältet"
#: documents/models.py:364
#: documents/models.py:377
msgid "sort field"
msgstr "sortera fält"
#: documents/models.py:369
#: documents/models.py:382
msgid "sort reverse"
msgstr "sortera omvänt"
#: documents/models.py:374
#: documents/models.py:387
msgid "title contains"
msgstr "titel innehåller"
#: documents/models.py:375
#: documents/models.py:388
msgid "content contains"
msgstr "innehåll innehåller"
#: documents/models.py:376
#: documents/models.py:389
msgid "ASN is"
msgstr "ASN är"
#: documents/models.py:377
#: documents/models.py:390
msgid "correspondent is"
msgstr "korrespondent är"
#: documents/models.py:378
#: documents/models.py:391
msgid "document type is"
msgstr "dokumenttyp är"
#: documents/models.py:379
#: documents/models.py:392
msgid "is in inbox"
msgstr "är i inkorgen"
#: documents/models.py:380
#: documents/models.py:393
msgid "has tag"
msgstr "har etikett"
#: documents/models.py:381
#: documents/models.py:394
msgid "has any tag"
msgstr "har någon etikett"
#: documents/models.py:382
#: documents/models.py:395
msgid "created before"
msgstr "skapad före"
#: documents/models.py:383
#: documents/models.py:396
msgid "created after"
msgstr "skapad efter"
#: documents/models.py:384
#: documents/models.py:397
msgid "created year is"
msgstr "skapat år är"
#: documents/models.py:385
#: documents/models.py:398
msgid "created month is"
msgstr "skapad månad är"
#: documents/models.py:386
#: documents/models.py:399
msgid "created day is"
msgstr "skapad dag är"
#: documents/models.py:387
#: documents/models.py:400
msgid "added before"
msgstr "tillagd före"
#: documents/models.py:388
#: documents/models.py:401
msgid "added after"
msgstr "tillagd efter"
#: documents/models.py:389
#: documents/models.py:402
msgid "modified before"
msgstr "ändrad före"
#: documents/models.py:390
#: documents/models.py:403
msgid "modified after"
msgstr "ändrad efter"
#: documents/models.py:391
#: documents/models.py:404
msgid "does not have tag"
msgstr "har inte etikett"
#: documents/models.py:392
#: documents/models.py:405
msgid "does not have ASN"
msgstr "har inte ASN"
#: documents/models.py:393
#: documents/models.py:406
msgid "title or content contains"
msgstr "titel eller innehåll innehåller"
#: documents/models.py:394
#: documents/models.py:407
msgid "fulltext query"
msgstr "fulltextfråga"
#: documents/models.py:395
#: documents/models.py:408
msgid "more like this"
msgstr "mer som detta"
#: documents/models.py:396
#: documents/models.py:409
msgid "has tags in"
msgstr ""
#: documents/models.py:406
#: documents/models.py:410
msgid "ASN greater than"
msgstr ""
#: documents/models.py:411
msgid "ASN less than"
msgstr ""
#: documents/models.py:412
msgid "storage path is"
msgstr ""
#: documents/models.py:422
msgid "rule type"
msgstr "regeltyp"
#: documents/models.py:408
#: documents/models.py:424
msgid "value"
msgstr "värde"
#: documents/models.py:411
#: documents/models.py:427
msgid "filter rule"
msgstr "filtrera regel"
#: documents/models.py:412
#: documents/models.py:428
msgid "filter rules"
msgstr "filtrera regler"
#: documents/models.py:521
msgid "started"
#: documents/models.py:536
msgid "Task ID"
msgstr ""
#: documents/serialisers.py:70
#: documents/models.py:537
msgid "Celery ID for the Task that was run"
msgstr ""
#: documents/models.py:542
msgid "Acknowledged"
msgstr ""
#: documents/models.py:543
msgid "If the task is acknowledged via the frontend or API"
msgstr ""
#: documents/models.py:549 documents/models.py:556
msgid "Task Name"
msgstr ""
#: documents/models.py:550
msgid "Name of the file which the Task was run for"
msgstr ""
#: documents/models.py:557
msgid "Name of the Task which was run"
msgstr ""
#: documents/models.py:562
msgid "Task Positional Arguments"
msgstr ""
#: documents/models.py:564
msgid "JSON representation of the positional arguments used with the task"
msgstr ""
#: documents/models.py:569
msgid "Task Named Arguments"
msgstr ""
#: documents/models.py:571
msgid "JSON representation of the named arguments used with the task"
msgstr ""
#: documents/models.py:578
msgid "Task State"
msgstr ""
#: documents/models.py:579
msgid "Current state of the task being run"
msgstr ""
#: documents/models.py:584
msgid "Created DateTime"
msgstr ""
#: documents/models.py:585
msgid "Datetime field when the task result was created in UTC"
msgstr ""
#: documents/models.py:590
msgid "Started DateTime"
msgstr ""
#: documents/models.py:591
msgid "Datetime field when the task was started in UTC"
msgstr ""
#: documents/models.py:596
msgid "Completed DateTime"
msgstr ""
#: documents/models.py:597
msgid "Datetime field when the task was completed in UTC"
msgstr ""
#: documents/models.py:602
msgid "Result Data"
msgstr ""
#: documents/models.py:604
msgid "The data returned by the task"
msgstr ""
#: documents/models.py:613
msgid "Comment for the document"
msgstr ""
#: documents/models.py:642
msgid "comment"
msgstr ""
#: documents/models.py:643
msgid "comments"
msgstr ""
#: documents/serialisers.py:72
#, python-format
msgid "Invalid regular expression: %(error)s"
msgstr "Ogiltigt reguljärt uttryck: %(error)s"
#: documents/serialisers.py:191
#: documents/serialisers.py:193
msgid "Invalid color."
msgstr "Ogiltig färg."
#: documents/serialisers.py:515
#: documents/serialisers.py:518
#, python-format
msgid "File type %(type)s not supported"
msgstr "Filtypen %(type)s stöds inte"
#: documents/serialisers.py:596
#: documents/serialisers.py:599
msgid "Invalid variable detected."
msgstr ""
@@ -444,87 +556,87 @@ msgstr "Lösenord"
msgid "Sign in"
msgstr "Logga in"
#: paperless/settings.py:339
#: paperless/settings.py:378
msgid "English (US)"
msgstr "Engelska (USA)"
#: paperless/settings.py:340
#: paperless/settings.py:379
msgid "Belarusian"
msgstr ""
#: paperless/settings.py:341
#: paperless/settings.py:380
msgid "Czech"
msgstr ""
#: paperless/settings.py:342
#: paperless/settings.py:381
msgid "Danish"
msgstr ""
#: paperless/settings.py:343
#: paperless/settings.py:382
msgid "German"
msgstr "Tyska"
#: paperless/settings.py:344
#: paperless/settings.py:383
msgid "English (GB)"
msgstr "Engelska (GB)"
#: paperless/settings.py:345
#: paperless/settings.py:384
msgid "Spanish"
msgstr "Spanska"
#: paperless/settings.py:346
#: paperless/settings.py:385
msgid "French"
msgstr "Franska"
#: paperless/settings.py:347
#: paperless/settings.py:386
msgid "Italian"
msgstr "Italienska"
#: paperless/settings.py:348
#: paperless/settings.py:387
msgid "Luxembourgish"
msgstr ""
#: paperless/settings.py:349
#: paperless/settings.py:388
msgid "Dutch"
msgstr "Holländska"
#: paperless/settings.py:350
#: paperless/settings.py:389
msgid "Polish"
msgstr "Polska"
#: paperless/settings.py:351
#: paperless/settings.py:390
msgid "Portuguese (Brazil)"
msgstr "Portugisiska (Brasilien)"
#: paperless/settings.py:352
#: paperless/settings.py:391
msgid "Portuguese"
msgstr "Portugisiska"
#: paperless/settings.py:353
#: paperless/settings.py:392
msgid "Romanian"
msgstr "Rumänska"
#: paperless/settings.py:354
#: paperless/settings.py:393
msgid "Russian"
msgstr "Ryska"
#: paperless/settings.py:355
#: paperless/settings.py:394
msgid "Slovenian"
msgstr ""
#: paperless/settings.py:356
#: paperless/settings.py:395
msgid "Serbian"
msgstr ""
#: paperless/settings.py:357
#: paperless/settings.py:396
msgid "Swedish"
msgstr "Svenska"
#: paperless/settings.py:358
#: paperless/settings.py:397
msgid "Turkish"
msgstr ""
#: paperless/settings.py:359
#: paperless/settings.py:398
msgid "Chinese Simplified"
msgstr ""

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-07-08 14:11-0700\n"
"PO-Revision-Date: 2022-08-01 19:02\n"
"POT-Creation-Date: 2022-11-09 21:50+0000\n"
"PO-Revision-Date: 2022-11-09 23:11\n"
"Last-Translator: \n"
"Language-Team: Turkish\n"
"Language: tr_TR\n"
@@ -21,378 +21,490 @@ msgstr ""
msgid "Documents"
msgstr "Belgeler"
#: documents/models.py:29
#: documents/models.py:32
msgid "Any word"
msgstr "Herhangi bir kelime"
#: documents/models.py:30
#: documents/models.py:33
msgid "All words"
msgstr "Tüm Kelimeler"
#: documents/models.py:31
#: documents/models.py:34
msgid "Exact match"
msgstr "Tam eşleşme"
#: documents/models.py:32
#: documents/models.py:35
msgid "Regular expression"
msgstr "Düzenli ifade"
#: documents/models.py:33
#: documents/models.py:36
msgid "Fuzzy word"
msgstr "Fuzzy Kelime"
#: documents/models.py:34
#: documents/models.py:37
msgid "Automatic"
msgstr "Otomatik"
#: documents/models.py:37 documents/models.py:354 paperless_mail/models.py:16
#: documents/models.py:40 documents/models.py:367 paperless_mail/models.py:16
#: paperless_mail/models.py:80
msgid "name"
msgstr "ad"
#: documents/models.py:39
#: documents/models.py:42
msgid "match"
msgstr "eşleme"
#: documents/models.py:42
#: documents/models.py:45
msgid "matching algorithm"
msgstr "eşleştirme algoritması"
#: documents/models.py:47
#: documents/models.py:50
msgid "is insensitive"
msgstr "duyarsızdır"
#: documents/models.py:60 documents/models.py:115
#: documents/models.py:63 documents/models.py:118
msgid "correspondent"
msgstr "muhabir"
#: documents/models.py:61
#: documents/models.py:64
msgid "correspondents"
msgstr "muhabirler"
#: documents/models.py:66
#: documents/models.py:69
msgid "color"
msgstr "renk"
#: documents/models.py:69
#: documents/models.py:72
msgid "is inbox tag"
msgstr "gelen kutu etiketidir"
#: documents/models.py:72
#: documents/models.py:75
msgid "Marks this tag as an inbox tag: All newly consumed documents will be tagged with inbox tags."
msgstr "Bu etiketi, gelen kutusu etiketi olarak işaretle: Yeni aktarılan tüm dokümanlar gelen kutusu etiketi ile etiketlendirileceklerdir."
#: documents/models.py:78
#: documents/models.py:81
msgid "tag"
msgstr "etiket"
#: documents/models.py:79 documents/models.py:153
#: documents/models.py:82 documents/models.py:156
msgid "tags"
msgstr "etiketler"
#: documents/models.py:84 documents/models.py:135
#: documents/models.py:87 documents/models.py:138
msgid "document type"
msgstr "belge türü"
#: documents/models.py:85
#: documents/models.py:88
msgid "document types"
msgstr "belge türleri"
#: documents/models.py:90
#: documents/models.py:93
msgid "path"
msgstr ""
#: documents/models.py:96 documents/models.py:124
#: documents/models.py:99 documents/models.py:127
msgid "storage path"
msgstr ""
#: documents/models.py:97
#: documents/models.py:100
msgid "storage paths"
msgstr ""
#: documents/models.py:105
#: documents/models.py:108
msgid "Unencrypted"
msgstr "Şifresiz"
#: documents/models.py:106
#: documents/models.py:109
msgid "Encrypted with GNU Privacy Guard"
msgstr "GNU Gizlilik Koruması ile şifrelendirilmiştir"
#: documents/models.py:127
#: documents/models.py:130
msgid "title"
msgstr "başlık"
#: documents/models.py:139
#: documents/models.py:142 documents/models.py:611
msgid "content"
msgstr "içerik"
#: documents/models.py:142
#: documents/models.py:145
msgid "The raw, text-only data of the document. This field is primarily used for searching."
msgstr "Belgenin ham, yalnızca metin verileri. Bu alan öncelikle arama için kullanılır."
#: documents/models.py:147
#: documents/models.py:150
msgid "mime type"
msgstr "mime türü"
#: documents/models.py:157
#: documents/models.py:160
msgid "checksum"
msgstr "sağlama toplamı"
#: documents/models.py:161
#: documents/models.py:164
msgid "The checksum of the original document."
msgstr "Orjinal belgenin sağlama toplamı."
#: documents/models.py:165
#: documents/models.py:168
msgid "archive checksum"
msgstr "arşiv sağlama toplamı"
#: documents/models.py:170
#: documents/models.py:173
msgid "The checksum of the archived document."
msgstr "Arşivlenen belgenin sağlama toplamı."
#: documents/models.py:173 documents/models.py:335 documents/models.py:520
#: documents/models.py:176 documents/models.py:348 documents/models.py:617
msgid "created"
msgstr "oluşturuldu"
#: documents/models.py:176
#: documents/models.py:179
msgid "modified"
msgstr "değiştirilmiş"
#: documents/models.py:183
#: documents/models.py:186
msgid "storage type"
msgstr "depolama türü"
#: documents/models.py:191
#: documents/models.py:194
msgid "added"
msgstr "eklendi"
#: documents/models.py:198
#: documents/models.py:201
msgid "filename"
msgstr "dosya adı"
#: documents/models.py:204
#: documents/models.py:207
msgid "Current filename in storage"
msgstr "Depolamadaki geçerli dosya adı"
#: documents/models.py:208
#: documents/models.py:211
msgid "archive filename"
msgstr "arşiv dosya adı"
#: documents/models.py:214
#: documents/models.py:217
msgid "Current archive filename in storage"
msgstr "Depolamadaki geçerli arşiv dosya adı"
#: documents/models.py:218
#: documents/models.py:221
msgid "original filename"
msgstr ""
#: documents/models.py:227
msgid "The original name of the file when it was uploaded"
msgstr ""
#: documents/models.py:231
msgid "archive serial number"
msgstr "arşiv seri numarası"
#: documents/models.py:224
#: documents/models.py:237
msgid "The position of this document in your physical document archive."
msgstr "Bu belgenin fiziksel belge arşivinizdeki posizyonu."
#: documents/models.py:230
#: documents/models.py:243 documents/models.py:628
msgid "document"
msgstr "belge"
#: documents/models.py:231
#: documents/models.py:244
msgid "documents"
msgstr "belgeler"
#: documents/models.py:318
#: documents/models.py:331
msgid "debug"
msgstr "hata ayıklama"
#: documents/models.py:319
#: documents/models.py:332
msgid "information"
msgstr "bilgi"
#: documents/models.py:320
#: documents/models.py:333
msgid "warning"
msgstr "uyarı"
#: documents/models.py:321
#: documents/models.py:334
msgid "error"
msgstr "hata"
#: documents/models.py:322
#: documents/models.py:335
msgid "critical"
msgstr "kritik"
#: documents/models.py:325
#: documents/models.py:338
msgid "group"
msgstr "grup"
#: documents/models.py:327
#: documents/models.py:340
msgid "message"
msgstr "mesaj"
#: documents/models.py:330
#: documents/models.py:343
msgid "level"
msgstr "seviye"
#: documents/models.py:339
#: documents/models.py:352
msgid "log"
msgstr "günlük"
#: documents/models.py:340
#: documents/models.py:353
msgid "logs"
msgstr "günlükler"
#: documents/models.py:350 documents/models.py:403
#: documents/models.py:363 documents/models.py:419
msgid "saved view"
msgstr "kaydedilen görünüm"
#: documents/models.py:351
#: documents/models.py:364
msgid "saved views"
msgstr "kaydedilen görünümler"
#: documents/models.py:353
#: documents/models.py:366 documents/models.py:637
msgid "user"
msgstr "kullanıcı"
#: documents/models.py:357
#: documents/models.py:370
msgid "show on dashboard"
msgstr "kontrol paneli'nde göster"
#: documents/models.py:360
#: documents/models.py:373
msgid "show in sidebar"
msgstr "kenar çubuğunda göster"
#: documents/models.py:364
#: documents/models.py:377
msgid "sort field"
msgstr "alanı sıralama"
#: documents/models.py:369
#: documents/models.py:382
msgid "sort reverse"
msgstr "tersine sırala"
#: documents/models.py:374
#: documents/models.py:387
msgid "title contains"
msgstr "başlık içerir"
#: documents/models.py:375
#: documents/models.py:388
msgid "content contains"
msgstr "içerik içerir"
#: documents/models.py:376
#: documents/models.py:389
msgid "ASN is"
msgstr "ASN ise"
#: documents/models.py:377
#: documents/models.py:390
msgid "correspondent is"
msgstr "muhabir ise"
#: documents/models.py:378
#: documents/models.py:391
msgid "document type is"
msgstr "belge türü ise"
#: documents/models.py:379
#: documents/models.py:392
msgid "is in inbox"
msgstr "gelen kutusunun içerisindedir"
#: documents/models.py:380
#: documents/models.py:393
msgid "has tag"
msgstr "etiketine sahip"
#: documents/models.py:381
#: documents/models.py:394
msgid "has any tag"
msgstr "herhangi bir etiketine sahip"
#: documents/models.py:382
#: documents/models.py:395
msgid "created before"
msgstr "bu tarihten önce oluşturuldu"
#: documents/models.py:383
#: documents/models.py:396
msgid "created after"
msgstr "bu tarihten sonra oluşturuldu"
#: documents/models.py:384
#: documents/models.py:397
msgid "created year is"
msgstr "oluşturma yili ise"
#: documents/models.py:385
#: documents/models.py:398
msgid "created month is"
msgstr "oluşturma ayı ise"
#: documents/models.py:386
#: documents/models.py:399
msgid "created day is"
msgstr "oluşturma günü ise"
#: documents/models.py:387
#: documents/models.py:400
msgid "added before"
msgstr "bu tarihten önce eklendi"
#: documents/models.py:388
#: documents/models.py:401
msgid "added after"
msgstr "bu tarihten sonra eklendi"
#: documents/models.py:389
#: documents/models.py:402
msgid "modified before"
msgstr "bu tarihten önce değiştirldi"
#: documents/models.py:390
#: documents/models.py:403
msgid "modified after"
msgstr "bu tarihten sonra değiştirldi"
#: documents/models.py:391
#: documents/models.py:404
msgid "does not have tag"
msgstr "etikete sahip değil"
#: documents/models.py:392
#: documents/models.py:405
msgid "does not have ASN"
msgstr "ASN'e sahip değil"
#: documents/models.py:393
#: documents/models.py:406
msgid "title or content contains"
msgstr "başlik veya içerik içerir"
#: documents/models.py:394
#: documents/models.py:407
msgid "fulltext query"
msgstr "tam metin sorgulama"
#: documents/models.py:395
#: documents/models.py:408
msgid "more like this"
msgstr "buna benzer daha"
#: documents/models.py:396
#: documents/models.py:409
msgid "has tags in"
msgstr "içerisinde etiketine sahip"
#: documents/models.py:406
#: documents/models.py:410
msgid "ASN greater than"
msgstr ""
#: documents/models.py:411
msgid "ASN less than"
msgstr ""
#: documents/models.py:412
msgid "storage path is"
msgstr ""
#: documents/models.py:422
msgid "rule type"
msgstr "kural türü"
#: documents/models.py:408
#: documents/models.py:424
msgid "value"
msgstr "değer"
#: documents/models.py:411
#: documents/models.py:427
msgid "filter rule"
msgstr "filtreleme kuralı"
#: documents/models.py:412
#: documents/models.py:428
msgid "filter rules"
msgstr "filtreleme kuralları"
#: documents/models.py:521
msgid "started"
msgstr "başladı"
#: documents/models.py:536
msgid "Task ID"
msgstr ""
#: documents/serialisers.py:70
#: documents/models.py:537
msgid "Celery ID for the Task that was run"
msgstr ""
#: documents/models.py:542
msgid "Acknowledged"
msgstr ""
#: documents/models.py:543
msgid "If the task is acknowledged via the frontend or API"
msgstr ""
#: documents/models.py:549 documents/models.py:556
msgid "Task Name"
msgstr ""
#: documents/models.py:550
msgid "Name of the file which the Task was run for"
msgstr ""
#: documents/models.py:557
msgid "Name of the Task which was run"
msgstr ""
#: documents/models.py:562
msgid "Task Positional Arguments"
msgstr ""
#: documents/models.py:564
msgid "JSON representation of the positional arguments used with the task"
msgstr ""
#: documents/models.py:569
msgid "Task Named Arguments"
msgstr ""
#: documents/models.py:571
msgid "JSON representation of the named arguments used with the task"
msgstr ""
#: documents/models.py:578
msgid "Task State"
msgstr ""
#: documents/models.py:579
msgid "Current state of the task being run"
msgstr ""
#: documents/models.py:584
msgid "Created DateTime"
msgstr ""
#: documents/models.py:585
msgid "Datetime field when the task result was created in UTC"
msgstr ""
#: documents/models.py:590
msgid "Started DateTime"
msgstr ""
#: documents/models.py:591
msgid "Datetime field when the task was started in UTC"
msgstr ""
#: documents/models.py:596
msgid "Completed DateTime"
msgstr ""
#: documents/models.py:597
msgid "Datetime field when the task was completed in UTC"
msgstr ""
#: documents/models.py:602
msgid "Result Data"
msgstr ""
#: documents/models.py:604
msgid "The data returned by the task"
msgstr ""
#: documents/models.py:613
msgid "Comment for the document"
msgstr ""
#: documents/models.py:642
msgid "comment"
msgstr ""
#: documents/models.py:643
msgid "comments"
msgstr ""
#: documents/serialisers.py:72
#, python-format
msgid "Invalid regular expression: %(error)s"
msgstr "Hatalı Düzenli İfade: %(error)s"
#: documents/serialisers.py:191
#: documents/serialisers.py:193
msgid "Invalid color."
msgstr "Geçersiz renk."
#: documents/serialisers.py:515
#: documents/serialisers.py:518
#, python-format
msgid "File type %(type)s not supported"
msgstr "Dosya türü %(type)s desteklenmiyor"
#: documents/serialisers.py:596
#: documents/serialisers.py:599
msgid "Invalid variable detected."
msgstr "Geçersiz değişken algılandı."
@@ -444,87 +556,87 @@ msgstr "Parola"
msgid "Sign in"
msgstr "Oturum aç"
#: paperless/settings.py:339
#: paperless/settings.py:378
msgid "English (US)"
msgstr "İngilizce (Birleşik Devletler)"
#: paperless/settings.py:340
#: paperless/settings.py:379
msgid "Belarusian"
msgstr "Belarusça"
#: paperless/settings.py:341
#: paperless/settings.py:380
msgid "Czech"
msgstr "Çekçe"
#: paperless/settings.py:342
#: paperless/settings.py:381
msgid "Danish"
msgstr "Danca"
#: paperless/settings.py:343
#: paperless/settings.py:382
msgid "German"
msgstr "Almanca"
#: paperless/settings.py:344
#: paperless/settings.py:383
msgid "English (GB)"
msgstr "İngilizce (GB)"
#: paperless/settings.py:345
#: paperless/settings.py:384
msgid "Spanish"
msgstr "İspanyolca"
#: paperless/settings.py:346
#: paperless/settings.py:385
msgid "French"
msgstr "Fransızca"
#: paperless/settings.py:347
#: paperless/settings.py:386
msgid "Italian"
msgstr "İtalyanca"
#: paperless/settings.py:348
#: paperless/settings.py:387
msgid "Luxembourgish"
msgstr "Lüksemburgca"
#: paperless/settings.py:349
#: paperless/settings.py:388
msgid "Dutch"
msgstr "Hollandaca"
#: paperless/settings.py:350
#: paperless/settings.py:389
msgid "Polish"
msgstr "Polonyaca"
#: paperless/settings.py:351
#: paperless/settings.py:390
msgid "Portuguese (Brazil)"
msgstr "Portekizce (Brezilya)"
#: paperless/settings.py:352
#: paperless/settings.py:391
msgid "Portuguese"
msgstr "Portekizce"
#: paperless/settings.py:353
#: paperless/settings.py:392
msgid "Romanian"
msgstr "Romence"
#: paperless/settings.py:354
#: paperless/settings.py:393
msgid "Russian"
msgstr "Rusça"
#: paperless/settings.py:355
#: paperless/settings.py:394
msgid "Slovenian"
msgstr "Slovakça"
#: paperless/settings.py:356
#: paperless/settings.py:395
msgid "Serbian"
msgstr "Sırpça"
#: paperless/settings.py:357
#: paperless/settings.py:396
msgid "Swedish"
msgstr "İsveççe"
#: paperless/settings.py:358
#: paperless/settings.py:397
msgid "Turkish"
msgstr "Türkçe"
#: paperless/settings.py:359
#: paperless/settings.py:398
msgid "Chinese Simplified"
msgstr "Basitleştirilmiş Çince"

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-07-08 14:11-0700\n"
"PO-Revision-Date: 2022-07-15 04:02\n"
"POT-Creation-Date: 2022-11-09 21:50+0000\n"
"PO-Revision-Date: 2022-11-09 23:11\n"
"Last-Translator: \n"
"Language-Team: Chinese Simplified\n"
"Language: zh_CN\n"
@@ -21,378 +21,490 @@ msgstr ""
msgid "Documents"
msgstr "文档"
#: documents/models.py:29
#: documents/models.py:32
msgid "Any word"
msgstr "任意单词"
#: documents/models.py:30
#: documents/models.py:33
msgid "All words"
msgstr "所有单词"
#: documents/models.py:31
#: documents/models.py:34
msgid "Exact match"
msgstr "精确匹配"
#: documents/models.py:32
#: documents/models.py:35
msgid "Regular expression"
msgstr "正则表达式"
#: documents/models.py:33
#: documents/models.py:36
msgid "Fuzzy word"
msgstr "模糊单词"
#: documents/models.py:34
#: documents/models.py:37
msgid "Automatic"
msgstr "自动"
#: documents/models.py:37 documents/models.py:354 paperless_mail/models.py:16
#: documents/models.py:40 documents/models.py:367 paperless_mail/models.py:16
#: paperless_mail/models.py:80
msgid "name"
msgstr "名称"
#: documents/models.py:39
#: documents/models.py:42
msgid "match"
msgstr "匹配"
#: documents/models.py:42
#: documents/models.py:45
msgid "matching algorithm"
msgstr "匹配算法"
#: documents/models.py:47
#: documents/models.py:50
msgid "is insensitive"
msgstr "忽略大小写"
#: documents/models.py:60 documents/models.py:115
#: documents/models.py:63 documents/models.py:118
msgid "correspondent"
msgstr "联系人"
#: documents/models.py:61
#: documents/models.py:64
msgid "correspondents"
msgstr "联系人"
#: documents/models.py:66
#: documents/models.py:69
msgid "color"
msgstr "颜色"
#: documents/models.py:69
#: documents/models.py:72
msgid "is inbox tag"
msgstr "收件箱标签"
#: documents/models.py:72
#: documents/models.py:75
msgid "Marks this tag as an inbox tag: All newly consumed documents will be tagged with inbox tags."
msgstr "将此标签标记为收件箱标签:所有新处理的文档将被标记为收件箱标签。"
#: documents/models.py:78
#: documents/models.py:81
msgid "tag"
msgstr "标签"
#: documents/models.py:79 documents/models.py:153
#: documents/models.py:82 documents/models.py:156
msgid "tags"
msgstr "标签"
#: documents/models.py:84 documents/models.py:135
#: documents/models.py:87 documents/models.py:138
msgid "document type"
msgstr "文档类型"
#: documents/models.py:85
#: documents/models.py:88
msgid "document types"
msgstr "文档类型"
#: documents/models.py:90
#: documents/models.py:93
msgid "path"
msgstr "路径"
#: documents/models.py:96 documents/models.py:124
#: documents/models.py:99 documents/models.py:127
msgid "storage path"
msgstr "保存路径"
#: documents/models.py:97
#: documents/models.py:100
msgid "storage paths"
msgstr "保存路径"
#: documents/models.py:105
#: documents/models.py:108
msgid "Unencrypted"
msgstr "未加密"
#: documents/models.py:106
#: documents/models.py:109
msgid "Encrypted with GNU Privacy Guard"
msgstr "使用 GNU 隐私防护GPG加密"
#: documents/models.py:127
#: documents/models.py:130
msgid "title"
msgstr "标题"
#: documents/models.py:139
#: documents/models.py:142 documents/models.py:611
msgid "content"
msgstr "内容"
#: documents/models.py:142
#: documents/models.py:145
msgid "The raw, text-only data of the document. This field is primarily used for searching."
msgstr "文档的原始、纯文本的数据。这个字段主要用于搜索。"
#: documents/models.py:147
#: documents/models.py:150
msgid "mime type"
msgstr "mime 类型"
#: documents/models.py:157
#: documents/models.py:160
msgid "checksum"
msgstr "校验和"
#: documents/models.py:161
#: documents/models.py:164
msgid "The checksum of the original document."
msgstr "原始文档的校验和。"
#: documents/models.py:165
#: documents/models.py:168
msgid "archive checksum"
msgstr "存档校验和"
#: documents/models.py:170
#: documents/models.py:173
msgid "The checksum of the archived document."
msgstr "已归档文档的校验和。"
#: documents/models.py:173 documents/models.py:335 documents/models.py:520
#: documents/models.py:176 documents/models.py:348 documents/models.py:617
msgid "created"
msgstr "已创建"
#: documents/models.py:176
#: documents/models.py:179
msgid "modified"
msgstr "已修改"
#: documents/models.py:183
#: documents/models.py:186
msgid "storage type"
msgstr "存储类型"
#: documents/models.py:191
#: documents/models.py:194
msgid "added"
msgstr "已添加"
#: documents/models.py:198
#: documents/models.py:201
msgid "filename"
msgstr "文件名"
#: documents/models.py:204
#: documents/models.py:207
msgid "Current filename in storage"
msgstr "当前存储中的文件名"
#: documents/models.py:208
#: documents/models.py:211
msgid "archive filename"
msgstr "归档文件名"
#: documents/models.py:214
#: documents/models.py:217
msgid "Current archive filename in storage"
msgstr "当前存储中的归档文件名"
#: documents/models.py:218
#: documents/models.py:221
msgid "original filename"
msgstr ""
#: documents/models.py:227
msgid "The original name of the file when it was uploaded"
msgstr ""
#: documents/models.py:231
msgid "archive serial number"
msgstr "归档序列号"
#: documents/models.py:224
#: documents/models.py:237
msgid "The position of this document in your physical document archive."
msgstr "此文档在您的物理文档归档中的位置。"
#: documents/models.py:230
#: documents/models.py:243 documents/models.py:628
msgid "document"
msgstr "文档"
#: documents/models.py:231
#: documents/models.py:244
msgid "documents"
msgstr "文档"
#: documents/models.py:318
#: documents/models.py:331
msgid "debug"
msgstr "调试"
#: documents/models.py:319
#: documents/models.py:332
msgid "information"
msgstr "信息"
#: documents/models.py:320
#: documents/models.py:333
msgid "warning"
msgstr "警告"
#: documents/models.py:321
#: documents/models.py:334
msgid "error"
msgstr "错误"
#: documents/models.py:322
#: documents/models.py:335
msgid "critical"
msgstr "严重"
#: documents/models.py:325
#: documents/models.py:338
msgid "group"
msgstr "用户组"
#: documents/models.py:327
#: documents/models.py:340
msgid "message"
msgstr "消息"
#: documents/models.py:330
#: documents/models.py:343
msgid "level"
msgstr "等级"
#: documents/models.py:339
#: documents/models.py:352
msgid "log"
msgstr "日志"
#: documents/models.py:340
#: documents/models.py:353
msgid "logs"
msgstr "日志"
#: documents/models.py:350 documents/models.py:403
#: documents/models.py:363 documents/models.py:419
msgid "saved view"
msgstr "保存的视图"
#: documents/models.py:351
#: documents/models.py:364
msgid "saved views"
msgstr "保存的视图"
#: documents/models.py:353
#: documents/models.py:366 documents/models.py:637
msgid "user"
msgstr "用户"
#: documents/models.py:357
#: documents/models.py:370
msgid "show on dashboard"
msgstr "在仪表盘显示"
#: documents/models.py:360
#: documents/models.py:373
msgid "show in sidebar"
msgstr "在侧边栏显示"
#: documents/models.py:364
#: documents/models.py:377
msgid "sort field"
msgstr "排序字段"
#: documents/models.py:369
#: documents/models.py:382
msgid "sort reverse"
msgstr "反向排序"
#: documents/models.py:374
#: documents/models.py:387
msgid "title contains"
msgstr "标题包含"
#: documents/models.py:375
#: documents/models.py:388
msgid "content contains"
msgstr "内容包含"
#: documents/models.py:376
#: documents/models.py:389
msgid "ASN is"
msgstr "ASN 为"
#: documents/models.py:377
#: documents/models.py:390
msgid "correspondent is"
msgstr "联系人是"
#: documents/models.py:378
#: documents/models.py:391
msgid "document type is"
msgstr "文档类型是"
#: documents/models.py:379
#: documents/models.py:392
msgid "is in inbox"
msgstr "在收件箱中"
#: documents/models.py:380
#: documents/models.py:393
msgid "has tag"
msgstr "有标签"
#: documents/models.py:381
#: documents/models.py:394
msgid "has any tag"
msgstr "有任意标签"
#: documents/models.py:382
#: documents/models.py:395
msgid "created before"
msgstr "在此时间之前创建"
#: documents/models.py:383
#: documents/models.py:396
msgid "created after"
msgstr "在此时间之后创建"
#: documents/models.py:384
#: documents/models.py:397
msgid "created year is"
msgstr "创建年份是"
#: documents/models.py:385
#: documents/models.py:398
msgid "created month is"
msgstr "创建月份是"
#: documents/models.py:386
#: documents/models.py:399
msgid "created day is"
msgstr "创建日期是"
#: documents/models.py:387
#: documents/models.py:400
msgid "added before"
msgstr "添加早于"
#: documents/models.py:388
#: documents/models.py:401
msgid "added after"
msgstr "添加晚于"
#: documents/models.py:389
#: documents/models.py:402
msgid "modified before"
msgstr "修改早于"
#: documents/models.py:390
#: documents/models.py:403
msgid "modified after"
msgstr "修改晚于"
#: documents/models.py:391
#: documents/models.py:404
msgid "does not have tag"
msgstr "没有标签"
#: documents/models.py:392
#: documents/models.py:405
msgid "does not have ASN"
msgstr "没有 ASN"
#: documents/models.py:393
#: documents/models.py:406
msgid "title or content contains"
msgstr "标题或内容包含"
#: documents/models.py:394
#: documents/models.py:407
msgid "fulltext query"
msgstr "全文检索"
#: documents/models.py:395
#: documents/models.py:408
msgid "more like this"
msgstr "更多类似内容"
#: documents/models.py:396
#: documents/models.py:409
msgid "has tags in"
msgstr "有标签包含于"
#: documents/models.py:406
#: documents/models.py:410
msgid "ASN greater than"
msgstr ""
#: documents/models.py:411
msgid "ASN less than"
msgstr ""
#: documents/models.py:412
msgid "storage path is"
msgstr ""
#: documents/models.py:422
msgid "rule type"
msgstr "规则类型"
#: documents/models.py:408
#: documents/models.py:424
msgid "value"
msgstr "值"
#: documents/models.py:411
#: documents/models.py:427
msgid "filter rule"
msgstr "过滤规则"
#: documents/models.py:412
#: documents/models.py:428
msgid "filter rules"
msgstr "过滤规则"
#: documents/models.py:521
msgid "started"
msgstr "已开始"
#: documents/models.py:536
msgid "Task ID"
msgstr ""
#: documents/serialisers.py:70
#: documents/models.py:537
msgid "Celery ID for the Task that was run"
msgstr ""
#: documents/models.py:542
msgid "Acknowledged"
msgstr ""
#: documents/models.py:543
msgid "If the task is acknowledged via the frontend or API"
msgstr ""
#: documents/models.py:549 documents/models.py:556
msgid "Task Name"
msgstr ""
#: documents/models.py:550
msgid "Name of the file which the Task was run for"
msgstr ""
#: documents/models.py:557
msgid "Name of the Task which was run"
msgstr ""
#: documents/models.py:562
msgid "Task Positional Arguments"
msgstr ""
#: documents/models.py:564
msgid "JSON representation of the positional arguments used with the task"
msgstr ""
#: documents/models.py:569
msgid "Task Named Arguments"
msgstr ""
#: documents/models.py:571
msgid "JSON representation of the named arguments used with the task"
msgstr ""
#: documents/models.py:578
msgid "Task State"
msgstr ""
#: documents/models.py:579
msgid "Current state of the task being run"
msgstr ""
#: documents/models.py:584
msgid "Created DateTime"
msgstr ""
#: documents/models.py:585
msgid "Datetime field when the task result was created in UTC"
msgstr ""
#: documents/models.py:590
msgid "Started DateTime"
msgstr ""
#: documents/models.py:591
msgid "Datetime field when the task was started in UTC"
msgstr ""
#: documents/models.py:596
msgid "Completed DateTime"
msgstr ""
#: documents/models.py:597
msgid "Datetime field when the task was completed in UTC"
msgstr ""
#: documents/models.py:602
msgid "Result Data"
msgstr ""
#: documents/models.py:604
msgid "The data returned by the task"
msgstr ""
#: documents/models.py:613
msgid "Comment for the document"
msgstr ""
#: documents/models.py:642
msgid "comment"
msgstr ""
#: documents/models.py:643
msgid "comments"
msgstr ""
#: documents/serialisers.py:72
#, python-format
msgid "Invalid regular expression: %(error)s"
msgstr "无效的正则表达式:%(error)s"
#: documents/serialisers.py:191
#: documents/serialisers.py:193
msgid "Invalid color."
msgstr "无效的颜色"
#: documents/serialisers.py:515
#: documents/serialisers.py:518
#, python-format
msgid "File type %(type)s not supported"
msgstr "不支持文件类型 %(type)s"
#: documents/serialisers.py:596
#: documents/serialisers.py:599
msgid "Invalid variable detected."
msgstr "检测到无效变量。"
@@ -444,87 +556,87 @@ msgstr "密码"
msgid "Sign in"
msgstr "登录"
#: paperless/settings.py:339
#: paperless/settings.py:378
msgid "English (US)"
msgstr "英语(美国)"
#: paperless/settings.py:340
#: paperless/settings.py:379
msgid "Belarusian"
msgstr "白俄罗斯语"
#: paperless/settings.py:341
#: paperless/settings.py:380
msgid "Czech"
msgstr "捷克语"
#: paperless/settings.py:342
#: paperless/settings.py:381
msgid "Danish"
msgstr "丹麦语"
#: paperless/settings.py:343
#: paperless/settings.py:382
msgid "German"
msgstr "德语"
#: paperless/settings.py:344
#: paperless/settings.py:383
msgid "English (GB)"
msgstr "英语(英国)"
#: paperless/settings.py:345
#: paperless/settings.py:384
msgid "Spanish"
msgstr "西班牙语"
#: paperless/settings.py:346
#: paperless/settings.py:385
msgid "French"
msgstr "法语"
#: paperless/settings.py:347
#: paperless/settings.py:386
msgid "Italian"
msgstr "意大利语"
#: paperless/settings.py:348
#: paperless/settings.py:387
msgid "Luxembourgish"
msgstr "卢森堡语"
#: paperless/settings.py:349
#: paperless/settings.py:388
msgid "Dutch"
msgstr "荷兰语"
#: paperless/settings.py:350
#: paperless/settings.py:389
msgid "Polish"
msgstr "波兰语"
#: paperless/settings.py:351
#: paperless/settings.py:390
msgid "Portuguese (Brazil)"
msgstr "葡萄牙语 (巴西)"
#: paperless/settings.py:352
#: paperless/settings.py:391
msgid "Portuguese"
msgstr "葡萄牙语"
#: paperless/settings.py:353
#: paperless/settings.py:392
msgid "Romanian"
msgstr "罗马尼亚语"
#: paperless/settings.py:354
#: paperless/settings.py:393
msgid "Russian"
msgstr "俄语"
#: paperless/settings.py:355
#: paperless/settings.py:394
msgid "Slovenian"
msgstr "斯洛语尼亚语"
#: paperless/settings.py:356
#: paperless/settings.py:395
msgid "Serbian"
msgstr "塞尔维亚语"
#: paperless/settings.py:357
#: paperless/settings.py:396
msgid "Swedish"
msgstr "瑞典语"
#: paperless/settings.py:358
#: paperless/settings.py:397
msgid "Turkish"
msgstr "土耳其语"
#: paperless/settings.py:359
#: paperless/settings.py:398
msgid "Chinese Simplified"
msgstr "简体中文"

View File

@@ -8,6 +8,7 @@ import tempfile
from typing import Final
from typing import Optional
from typing import Set
from typing import Tuple
from urllib.parse import urlparse
from celery.schedules import crontab
@@ -65,6 +66,44 @@ def __get_path(key: str, default: str) -> str:
return os.path.abspath(os.path.normpath(os.environ.get(key, default)))
def _parse_redis_url(env_redis: Optional[str]) -> Tuple[str]:
"""
Gets the Redis information from the environment or a default and handles
converting from incompatible django_channels and celery formats.
Returns a tuple of (celery_url, channels_url)
"""
# Not set, return a compatible default
if env_redis is None:
return ("redis://localhost:6379", "redis://localhost:6379")
if "unix" in env_redis.lower():
# channels_redis socket format, looks like:
# "unix:///path/to/redis.sock"
_, path = env_redis.split(":")
# Optionally setting a db number
if "?db=" in env_redis:
path, number = path.split("?db=")
return (f"redis+socket:{path}?virtual_host={number}", env_redis)
else:
return (f"redis+socket:{path}", env_redis)
elif "+socket" in env_redis.lower():
# celery socket style, looks like:
# "redis+socket:///path/to/redis.sock"
_, path = env_redis.split(":")
if "?virtual_host=" in env_redis:
# Virtual host (aka db number)
path, number = path.split("?virtual_host=")
return (env_redis, f"unix:{path}?db={number}")
else:
return (env_redis, f"unix:{path}")
# Not a socket
return (env_redis, env_redis)
# NEVER RUN WITH DEBUG IN PRODUCTION.
DEBUG = __get_boolean("PAPERLESS_DEBUG", "NO")
@@ -182,7 +221,9 @@ ASGI_APPLICATION = "paperless.asgi.application"
STATIC_URL = os.getenv("PAPERLESS_STATIC_URL", BASE_URL + "static/")
WHITENOISE_STATIC_PREFIX = "/static/"
_REDIS_URL = os.getenv("PAPERLESS_REDIS", "redis://localhost:6379")
_CELERY_REDIS_URL, _CHANNELS_REDIS_URL = _parse_redis_url(
os.getenv("PAPERLESS_REDIS", None),
)
# TODO: what is this used for?
TEMPLATES = [
@@ -205,7 +246,7 @@ CHANNEL_LAYERS = {
"default": {
"BACKEND": "channels_redis.core.RedisChannelLayer",
"CONFIG": {
"hosts": [_REDIS_URL],
"hosts": [_CHANNELS_REDIS_URL],
"capacity": 2000, # default 100
"expiry": 15, # default 60
},
@@ -468,7 +509,7 @@ TASK_WORKERS = __get_int("PAPERLESS_TASK_WORKERS", 1)
WORKER_TIMEOUT: Final[int] = __get_int("PAPERLESS_WORKER_TIMEOUT", 1800)
CELERY_BROKER_URL = _REDIS_URL
CELERY_BROKER_URL = _CELERY_REDIS_URL
CELERY_TIMEZONE = TIME_ZONE
CELERY_WORKER_HIJACK_ROOT_LOGGER = False
@@ -513,7 +554,7 @@ CELERY_BEAT_SCHEDULE_FILENAME = os.path.join(DATA_DIR, "celerybeat-schedule.db")
CACHES = {
"default": {
"BACKEND": "django.core.cache.backends.redis.RedisCache",
"LOCATION": _REDIS_URL,
"LOCATION": _CHANNELS_REDIS_URL,
},
}

View File

@@ -3,6 +3,7 @@ from unittest import mock
from unittest import TestCase
from paperless.settings import _parse_ignore_dates
from paperless.settings import _parse_redis_url
from paperless.settings import default_threads_per_worker
@@ -82,3 +83,59 @@ class TestIgnoreDateParsing(TestCase):
self.assertGreaterEqual(default_threads, 1)
self.assertLessEqual(default_workers * default_threads, i)
def test_redis_socket_parsing(self):
"""
GIVEN:
- Various Redis connection URI formats
WHEN:
- The URI is parsed
THEN:
- Socket based URIs are translated
- Non-socket URIs are unchanged
- None provided uses default
"""
for input, expected in [
# Nothing is set
(None, ("redis://localhost:6379", "redis://localhost:6379")),
# celery style
(
"redis+socket:///run/redis/redis.sock",
(
"redis+socket:///run/redis/redis.sock",
"unix:///run/redis/redis.sock",
),
),
# redis-py / channels-redis style
(
"unix:///run/redis/redis.sock",
(
"redis+socket:///run/redis/redis.sock",
"unix:///run/redis/redis.sock",
),
),
# celery style with db
(
"redis+socket:///run/redis/redis.sock?virtual_host=5",
(
"redis+socket:///run/redis/redis.sock?virtual_host=5",
"unix:///run/redis/redis.sock?db=5",
),
),
# redis-py / channels-redis style with db
(
"unix:///run/redis/redis.sock?db=10",
(
"redis+socket:///run/redis/redis.sock?virtual_host=10",
"unix:///run/redis/redis.sock?db=10",
),
),
# Just a host with a port
(
"redis://myredishost:6379",
("redis://myredishost:6379", "redis://myredishost:6379"),
),
]:
result = _parse_redis_url(input)
self.assertTupleEqual(expected, result)

View File

@@ -29,6 +29,8 @@ from paperless.consumers import StatusConsumer
from paperless.views import FaviconView
from paperless.views import GroupViewSet
from paperless.views import UserViewSet
from paperless_mail.views import MailAccountViewSet
from paperless_mail.views import MailRuleViewSet
from rest_framework.authtoken import views
from rest_framework.routers import DefaultRouter
@@ -43,6 +45,8 @@ api_router.register(r"storage_paths", StoragePathViewSet)
api_router.register(r"tasks", TasksViewSet, basename="tasks")
api_router.register(r"users", UserViewSet, basename="users")
api_router.register(r"groups", GroupViewSet, basename="groups")
api_router.register(r"mail_accounts", MailAccountViewSet)
api_router.register(r"mail_rules", MailRuleViewSet)
urlpatterns = [

View File

@@ -1,7 +1,7 @@
from typing import Final
from typing import Tuple
__version__: Final[Tuple[int, int, int]] = (1, 9, 2)
__version__: Final[Tuple[int, int, int]] = (1, 10, 2)
# Version string like X.Y.Z
__full_version_str__: Final[str] = ".".join(map(str, __version__))
# Version string like X.Y

View File

@@ -56,6 +56,7 @@ class MailRuleAdmin(admin.ModelAdmin):
"filter_body",
"filter_attachment_filename",
"maximum_age",
"consumption_scope",
"attachment_type",
),
},
@@ -65,8 +66,8 @@ class MailRuleAdmin(admin.ModelAdmin):
{
"description": _(
"The action applied to the mail. This action is only "
"performed when documents were consumed from the mail. "
"Mails without attachments will remain entirely untouched.",
"performed when the mail body or attachments were "
"consumed from the mail.",
),
"fields": ("action", "action_parameter"),
},

View File

@@ -1,8 +1,17 @@
from django.apps import AppConfig
from django.conf import settings
from django.utils.translation import gettext_lazy as _
from paperless_mail.signals import mail_consumer_declaration
class PaperlessMailConfig(AppConfig):
name = "paperless_mail"
verbose_name = _("Paperless mail")
def ready(self):
from documents.signals import document_consumer_declaration
if settings.TIKA_ENABLED:
document_consumer_declaration.connect(mail_consumer_declaration)
AppConfig.ready(self)

View File

@@ -350,9 +350,16 @@ class MailAccountHandler(LoggingMixin):
return total_processed_files
def handle_message(self, message, rule) -> int:
if not message.attachments:
return 0
def handle_message(self, message, rule: MailRule) -> int:
processed_elements = 0
# Skip Message handling when only attachments are to be processed but
# message doesn't have any.
if (
not message.attachments
and rule.consumption_scope == MailRule.ConsumptionScope.ATTACHMENTS_ONLY
):
return processed_elements
self.log(
"debug",
@@ -365,8 +372,41 @@ class MailAccountHandler(LoggingMixin):
tag_ids = [tag.id for tag in rule.assign_tags.all()]
doc_type = rule.assign_document_type
processed_attachments = 0
if (
rule.consumption_scope == MailRule.ConsumptionScope.EML_ONLY
or rule.consumption_scope == MailRule.ConsumptionScope.EVERYTHING
):
processed_elements += self.process_eml(
message,
rule,
correspondent,
tag_ids,
doc_type,
)
if (
rule.consumption_scope == MailRule.ConsumptionScope.ATTACHMENTS_ONLY
or rule.consumption_scope == MailRule.ConsumptionScope.EVERYTHING
):
processed_elements += self.process_attachments(
message,
rule,
correspondent,
tag_ids,
doc_type,
)
return processed_elements
def process_attachments(
self,
message: MailMessage,
rule: MailRule,
correspondent,
tag_ids,
doc_type,
):
processed_attachments = 0
for att in message.attachments:
if (
@@ -436,5 +476,59 @@ class MailAccountHandler(LoggingMixin):
f"since guessed mime type {mime_type} is not supported "
f"by paperless",
)
return processed_attachments
def process_eml(
self,
message: MailMessage,
rule: MailRule,
correspondent,
tag_ids,
doc_type,
):
os.makedirs(settings.SCRATCH_DIR, exist_ok=True)
_, temp_filename = tempfile.mkstemp(
prefix="paperless-mail-",
dir=settings.SCRATCH_DIR,
suffix=".eml",
)
with open(temp_filename, "wb") as f:
# Move "From"-header to beginning of file
# TODO: This ugly workaround is needed because the parser is
# chosen only by the mime_type detected via magic
# (see documents/consumer.py "mime_type = magic.from_file")
# Unfortunately magic sometimes fails to detect the mime
# type of .eml files correctly as message/rfc822 and instead
# detects text/plain.
# This also effects direct file consumption of .eml files
# which are not treated with this workaround.
from_element = None
for i, header in enumerate(message.obj._headers):
if header[0] == "From":
from_element = i
if from_element:
new_headers = [message.obj._headers.pop(from_element)]
new_headers += message.obj._headers
message.obj._headers = new_headers
f.write(message.obj.as_bytes())
self.log(
"info",
f"Rule {rule}: "
f"Consuming eml from mail "
f"{message.subject} from {message.from_}",
)
consume_file.delay(
path=temp_filename,
override_filename=pathvalidate.sanitize_filename(
message.subject + ".eml",
),
override_title=message.subject,
override_correspondent_id=correspondent.id if correspondent else None,
override_document_type_id=doc_type.id if doc_type else None,
override_tag_ids=tag_ids,
)
processed_elements = 1
return processed_elements

View File

@@ -0,0 +1,32 @@
# Generated by Django 4.0.4 on 2022-07-11 22:02
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("paperless_mail", "0015_alter_mailrule_action"),
]
operations = [
migrations.AddField(
model_name="mailrule",
name="consumption_scope",
field=models.PositiveIntegerField(
choices=[
(1, "Only process attachments."),
(
2,
"Process full Mail (with embedded attachments in file) as .eml",
),
(
3,
"Process full Mail (with embedded attachments in file) as .eml + process attachments as separate documents",
),
],
default=1,
verbose_name="consumption scope",
),
),
]

View File

@@ -56,6 +56,14 @@ class MailRule(models.Model):
verbose_name = _("mail rule")
verbose_name_plural = _("mail rules")
class ConsumptionScope(models.IntegerChoices):
ATTACHMENTS_ONLY = 1, _("Only process attachments.")
EML_ONLY = 2, _("Process full Mail (with embedded attachments in file) as .eml")
EVERYTHING = 3, _(
"Process full Mail (with embedded attachments in file) as .eml "
"+ process attachments as separate documents",
)
class AttachmentProcessing(models.IntegerChoices):
ATTACHMENTS_ONLY = 1, _("Only process attachments.")
EVERYTHING = 2, _("Process all files, including 'inline' " "attachments.")
@@ -145,6 +153,12 @@ class MailRule(models.Model):
),
)
consumption_scope = models.PositiveIntegerField(
_("consumption scope"),
choices=ConsumptionScope.choices,
default=ConsumptionScope.ATTACHMENTS_ONLY,
)
action = models.PositiveIntegerField(
_("action"),
choices=MailAction.choices,

View File

@@ -0,0 +1,333 @@
import os
import re
from html import escape
from io import BytesIO
from io import StringIO
import requests
from bleach import clean
from bleach import linkify
from django.conf import settings
from documents.parsers import DocumentParser
from documents.parsers import make_thumbnail_from_pdf
from documents.parsers import ParseError
from humanfriendly import format_size
from imap_tools import MailMessage
from tika import parser
class MailDocumentParser(DocumentParser):
"""
This parser uses imap_tools to parse .eml files, generates pdf using
gotenbergs and sends the html part to a local tika server for text extraction.
"""
gotenberg_server = settings.TIKA_GOTENBERG_ENDPOINT
tika_server = settings.TIKA_ENDPOINT
logging_name = "paperless.parsing.mail"
_parsed = None
def get_parsed(self, document_path) -> MailMessage:
if not self._parsed:
try:
with open(document_path, "rb") as eml:
self._parsed = MailMessage.from_bytes(eml.read())
except Exception as err:
raise ParseError(
f"Could not parse {document_path}: {err}",
)
if not self._parsed.from_values:
self._parsed = None
raise ParseError(
f"Could not parse {document_path}: Missing 'from'",
)
return self._parsed
def get_thumbnail(self, document_path, mime_type, file_name=None):
if not self.archive_path:
self.archive_path = self.generate_pdf(document_path)
return make_thumbnail_from_pdf(
self.archive_path,
self.tempdir,
self.logging_group,
)
def extract_metadata(self, document_path, mime_type):
result = []
try:
mail = self.get_parsed(document_path)
except ParseError as e:
self.log(
"warning",
f"Error while fetching document metadata for " f"{document_path}: {e}",
)
return result
for key, value in mail.headers.items():
value = ", ".join(i for i in value)
result.append(
{
"namespace": "",
"prefix": "header",
"key": key,
"value": value,
},
)
result.append(
{
"namespace": "",
"prefix": "",
"key": "attachments",
"value": ", ".join(
f"{attachment.filename}"
f"({format_size(attachment.size, binary=True)})"
for attachment in mail.attachments
),
},
)
result.append(
{
"namespace": "",
"prefix": "",
"key": "date",
"value": mail.date.strftime("%Y-%m-%d %H:%M:%S %Z"),
},
)
result.sort(key=lambda item: (item["prefix"], item["key"]))
return result
def parse(self, document_path, mime_type, file_name=None):
def strip_text(text: str):
text = re.sub(r"\s+", " ", text)
text = re.sub(r"(\n *)+", "\n", text)
return text.strip()
mail = self.get_parsed(document_path)
self.text = f"Subject: {mail.subject}\n\n"
self.text += f"From: {mail.from_values.full}\n\n"
self.text += f"To: {', '.join(address.full for address in mail.to_values)}\n\n"
if len(mail.cc_values) >= 1:
self.text += (
f"CC: {', '.join(address.full for address in mail.cc_values)}\n\n"
)
if len(mail.bcc_values) >= 1:
self.text += (
f"BCC: {', '.join(address.full for address in mail.bcc_values)}\n\n"
)
if len(mail.attachments) >= 1:
att = []
for a in mail.attachments:
att.append(f"{a.filename} ({format_size(a.size, binary=True)})")
self.text += f"Attachments: {', '.join(att)}\n\n"
if mail.html != "":
self.text += "HTML content: " + strip_text(self.tika_parse(mail.html))
self.text += f"\n\n{strip_text(mail.text)}"
self.date = mail.date
self.archive_path = self.generate_pdf(document_path)
def tika_parse(self, html: str):
self.log("info", "Sending content to Tika server")
try:
parsed = parser.from_buffer(html, self.tika_server)
except Exception as err:
raise ParseError(
f"Could not parse content with tika server at "
f"{self.tika_server}: {err}",
)
if parsed["content"]:
return parsed["content"]
else:
return ""
def generate_pdf(self, document_path):
pdf_collection = []
url_merge = self.gotenberg_server + "/forms/pdfengines/merge"
pdf_path = os.path.join(self.tempdir, "merged.pdf")
mail = self.get_parsed(document_path)
pdf_collection.append(("1_mail.pdf", self.generate_pdf_from_mail(mail)))
if mail.html == "":
with open(pdf_path, "wb") as file:
file.write(pdf_collection[0][1])
file.close()
return pdf_path
else:
pdf_collection.append(
(
"2_html.pdf",
self.generate_pdf_from_html(mail.html, mail.attachments),
),
)
files = {}
for name, content in pdf_collection:
files[name] = (name, BytesIO(content))
headers = {}
try:
response = requests.post(url_merge, files=files, headers=headers)
response.raise_for_status() # ensure we notice bad responses
except Exception as err:
raise ParseError(f"Error while converting document to PDF: {err}")
with open(pdf_path, "wb") as file:
file.write(response.content)
file.close()
return pdf_path
@staticmethod
def mail_to_html(mail: MailMessage) -> StringIO:
data = {}
def clean_html(text: str):
if isinstance(text, list):
text = "\n".join([str(e) for e in text])
if type(text) != str:
text = str(text)
text = escape(text)
text = clean(text)
text = linkify(text, parse_email=True)
text = text.replace("\n", "<br>")
return text
data["subject"] = clean_html(mail.subject)
if data["subject"] != "":
data["subject_label"] = "Subject"
data["from"] = clean_html(mail.from_values.full)
if data["from"] != "":
data["from_label"] = "From"
data["to"] = clean_html(", ".join(address.full for address in mail.to_values))
if data["to"] != "":
data["to_label"] = "To"
data["cc"] = clean_html(", ".join(address.full for address in mail.cc_values))
if data["cc"] != "":
data["cc_label"] = "CC"
data["bcc"] = clean_html(", ".join(address.full for address in mail.bcc_values))
if data["bcc"] != "":
data["bcc_label"] = "BCC"
att = []
for a in mail.attachments:
att.append(f"{a.filename} ({format_size(a.size, binary=True)})")
data["attachments"] = clean_html(", ".join(att))
if data["attachments"] != "":
data["attachments_label"] = "Attachments"
data["date"] = clean_html(mail.date.astimezone().strftime("%Y-%m-%d %H:%M"))
data["content"] = clean_html(mail.text.strip())
html = StringIO()
from django.template.loader import render_to_string
rendered = render_to_string("email_msg_template.html", context=data)
html.write(rendered)
html.seek(0)
return html
def generate_pdf_from_mail(self, mail):
url = self.gotenberg_server + "/forms/chromium/convert/html"
self.log("info", "Converting mail to PDF")
css_file = os.path.join(os.path.dirname(__file__), "templates/output.css")
with open(css_file, "rb") as css_handle:
files = {
"html": ("index.html", self.mail_to_html(mail)),
"css": ("output.css", css_handle),
}
headers = {}
data = {
"marginTop": "0.1",
"marginBottom": "0.1",
"marginLeft": "0.1",
"marginRight": "0.1",
"paperWidth": "8.27",
"paperHeight": "11.7",
"scale": "1.0",
}
try:
response = requests.post(
url,
files=files,
headers=headers,
data=data,
)
response.raise_for_status() # ensure we notice bad responses
except Exception as err:
raise ParseError(f"Error while converting document to PDF: {err}")
return response.content
@staticmethod
def transform_inline_html(html, attachments):
def clean_html_script(text: str):
compiled_open = re.compile(re.escape("<script"), re.IGNORECASE)
text = compiled_open.sub("<div hidden ", text)
compiled_close = re.compile(re.escape("</script"), re.IGNORECASE)
text = compiled_close.sub("</div", text)
return text
html_clean = clean_html_script(html)
files = []
for a in attachments:
name_cid = "cid:" + a.content_id
name_clean = "".join(e for e in name_cid if e.isalnum())
files.append((name_clean, BytesIO(a.payload)))
html_clean = html_clean.replace(name_cid, name_clean)
files.append(("index.html", StringIO(html_clean)))
return files
def generate_pdf_from_html(self, orig_html, attachments):
url = self.gotenberg_server + "/forms/chromium/convert/html"
self.log("info", "Converting html to PDF")
files = {}
for name, file in self.transform_inline_html(orig_html, attachments):
files[name] = (name, file)
headers = {}
data = {
"marginTop": "0.1",
"marginBottom": "0.1",
"marginLeft": "0.1",
"marginRight": "0.1",
"paperWidth": "8.27",
"paperHeight": "11.7",
"scale": "1.0",
}
try:
response = requests.post(
url,
files=files,
headers=headers,
data=data,
)
response.raise_for_status() # ensure we notice bad responses
except Exception as err:
raise ParseError(f"Error while converting document to PDF: {err}")
return response.content

View File

@@ -0,0 +1,110 @@
from documents.serialisers import CorrespondentField
from documents.serialisers import DocumentTypeField
from documents.serialisers import TagsField
from paperless_mail.models import MailAccount
from paperless_mail.models import MailRule
from rest_framework import serializers
class ObfuscatedPasswordField(serializers.Field):
"""
Sends *** string instead of password in the clear
"""
def to_representation(self, value):
return "*" * len(value)
def to_internal_value(self, data):
return data
class MailAccountSerializer(serializers.ModelSerializer):
password = ObfuscatedPasswordField()
class Meta:
model = MailAccount
depth = 1
fields = [
"id",
"name",
"imap_server",
"imap_port",
"imap_security",
"username",
"password",
"character_set",
]
def update(self, instance, validated_data):
if "password" in validated_data:
if len(validated_data.get("password").replace("*", "")) == 0:
validated_data.pop("password")
super().update(instance, validated_data)
return instance
def create(self, validated_data):
mail_account = MailAccount.objects.create(**validated_data)
return mail_account
class AccountField(serializers.PrimaryKeyRelatedField):
def get_queryset(self):
return MailAccount.objects.all().order_by("-id")
class MailRuleSerializer(serializers.ModelSerializer):
account = AccountField(required=True)
action_parameter = serializers.CharField(
allow_null=True,
required=False,
default="",
)
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)
order = serializers.IntegerField(required=False)
class Meta:
model = MailRule
depth = 1
fields = [
"id",
"name",
"account",
"folder",
"filter_from",
"filter_subject",
"filter_body",
"filter_attachment_filename",
"maximum_age",
"action",
"action_parameter",
"assign_title_from",
"assign_tags",
"assign_correspondent_from",
"assign_correspondent",
"assign_document_type",
"order",
"attachment_type",
]
def update(self, instance, validated_data):
super().update(instance, validated_data)
return instance
def create(self, validated_data):
if "assign_tags" in validated_data:
assign_tags = validated_data.pop("assign_tags")
mail_rule = MailRule.objects.create(**validated_data)
if assign_tags:
mail_rule.assign_tags.set(assign_tags)
return mail_rule
def validate(self, attrs):
if (
attrs["action"] == MailRule.MailAction.TAG
or attrs["action"] == MailRule.MailAction.MOVE
) and attrs["action_parameter"] is None:
raise serializers.ValidationError("An action parameter is required.")
return attrs

View File

@@ -0,0 +1,14 @@
def get_parser(*args, **kwargs):
from .parsers import MailDocumentParser
return MailDocumentParser(*args, **kwargs)
def mail_consumer_declaration(sender, **kwargs):
return {
"parser": get_parser,
"weight": 20,
"mime_types": {
"message/rfc822": ".eml",
},
}

View File

@@ -0,0 +1,48 @@
{% autoescape off %}
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href="output.css" rel="stylesheet">
</head>
<body class="bg-white w-screen flex flex-col items-center">
<div class="container max-w-4xl">
<!-- Header -->
<div class="grid gap-x-2 bg-slate-200 p-4">
<div class="col-start-9 col-span-4 row-start-1 text-right">{{ date }}</div>
<div class="col-start-1 row-start-1 text-slate-400 text-right">{{ from_label }}</div>
<div class="col-start-2 col-span-7 row-start-1">{{ from }}</div>
<div class="col-start-1 row-start-2 text-slate-400 text-right">{{ subject_label }}</div>
<div class=" col-start-2 col-span-10 row-start-2 font-bold">{{ subject }}</div>
<div class="col-start-1 row-start-3 text-slate-400 text-right">{{ to_label }}</div>
<div class="col-start-2 col-span-10 row-start-3 text-sm my-0.5">{{ to }}</div>
<div class="col-start-1 row-start-4 text-slate-400 text-right">{{ cc_label }}</div>
<div class="col-start-2 col-span-10 row-start-4 text-sm my-0.5">{{ cc }}</div>
<div class="col-start-1 row-start-5 text-slate-400 text-right">{{ bcc_label }}</div>
<div class="col-start-2 col-span-10 row-start-5" text-sm my-0.5>{{ bcc }}</div>
<div class="col-start-1 row-start-6 text-slate-400 text-right">{{ attachments_label }}</div>
<div class="col-start-2 col-span-10 row-start-6">{{ attachments }}</div>
</div>
<!-- Separator-->
<div class="border-t border-solid border-b w-full h-[1px] box-content border-black mb-5 bg-slate-200"></div>
<!-- Content-->
<div class="w-full break-words">{{ content }}</div>
</div>
</body>
</html>
{% endautoescape %}

View File

@@ -0,0 +1,3 @@
@tailwind base;
@tailwind components;
@tailwind utilities;

View File

@@ -0,0 +1,706 @@
/*
! tailwindcss v3.0.24 | MIT License | https://tailwindcss.com
*/
/*
1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4)
2. Allow adding a border to an element by just adding a border-width. (https://github.com/tailwindcss/tailwindcss/pull/116)
*/
*,
::before,
::after {
box-sizing: border-box;
/* 1 */
border-width: 0;
/* 2 */
border-style: solid;
/* 2 */
border-color: #e5e7eb;
/* 2 */
}
::before,
::after {
--tw-content: '';
}
/*
1. Use a consistent sensible line-height in all browsers.
2. Prevent adjustments of font size after orientation changes in iOS.
3. Use a more readable tab size.
4. Use the user's configured `sans` font-family by default.
*/
html {
line-height: 1.5;
/* 1 */
-webkit-text-size-adjust: 100%;
/* 2 */
-moz-tab-size: 4;
/* 3 */
-o-tab-size: 4;
tab-size: 4;
/* 3 */
font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
/* 4 */
}
/*
1. Remove the margin in all browsers.
2. Inherit line-height from `html` so users can set them as a class directly on the `html` element.
*/
body {
margin: 0;
/* 1 */
line-height: inherit;
/* 2 */
}
/*
1. Add the correct height in Firefox.
2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655)
3. Ensure horizontal rules are visible by default.
*/
hr {
height: 0;
/* 1 */
color: inherit;
/* 2 */
border-top-width: 1px;
/* 3 */
}
/*
Add the correct text decoration in Chrome, Edge, and Safari.
*/
abbr:where([title]) {
-webkit-text-decoration: underline dotted;
text-decoration: underline dotted;
}
/*
Remove the default font size and weight for headings.
*/
h1,
h2,
h3,
h4,
h5,
h6 {
font-size: inherit;
font-weight: inherit;
}
/*
Reset links to optimize for opt-in styling instead of opt-out.
*/
a {
color: inherit;
text-decoration: inherit;
}
/*
Add the correct font weight in Edge and Safari.
*/
b,
strong {
font-weight: bolder;
}
/*
1. Use the user's configured `mono` font family by default.
2. Correct the odd `em` font sizing in all browsers.
*/
code,
kbd,
samp,
pre {
font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
/* 1 */
font-size: 1em;
/* 2 */
}
/*
Add the correct font size in all browsers.
*/
small {
font-size: 80%;
}
/*
Prevent `sub` and `sup` elements from affecting the line height in all browsers.
*/
sub,
sup {
font-size: 75%;
line-height: 0;
position: relative;
vertical-align: baseline;
}
sub {
bottom: -0.25em;
}
sup {
top: -0.5em;
}
/*
1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297)
2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016)
3. Remove gaps between table borders by default.
*/
table {
text-indent: 0;
/* 1 */
border-color: inherit;
/* 2 */
border-collapse: collapse;
/* 3 */
}
/*
1. Change the font styles in all browsers.
2. Remove the margin in Firefox and Safari.
3. Remove default padding in all browsers.
*/
button,
input,
optgroup,
select,
textarea {
font-family: inherit;
/* 1 */
font-size: 100%;
/* 1 */
line-height: inherit;
/* 1 */
color: inherit;
/* 1 */
margin: 0;
/* 2 */
padding: 0;
/* 3 */
}
/*
Remove the inheritance of text transform in Edge and Firefox.
*/
button,
select {
text-transform: none;
}
/*
1. Correct the inability to style clickable types in iOS and Safari.
2. Remove default button styles.
*/
button,
[type='button'],
[type='reset'],
[type='submit'] {
-webkit-appearance: button;
/* 1 */
background-color: transparent;
/* 2 */
background-image: none;
/* 2 */
}
/*
Use the modern Firefox focus style for all focusable elements.
*/
:-moz-focusring {
outline: auto;
}
/*
Remove the additional `:invalid` styles in Firefox. (https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737)
*/
:-moz-ui-invalid {
box-shadow: none;
}
/*
Add the correct vertical alignment in Chrome and Firefox.
*/
progress {
vertical-align: baseline;
}
/*
Correct the cursor style of increment and decrement buttons in Safari.
*/
::-webkit-inner-spin-button,
::-webkit-outer-spin-button {
height: auto;
}
/*
1. Correct the odd appearance in Chrome and Safari.
2. Correct the outline style in Safari.
*/
[type='search'] {
-webkit-appearance: textfield;
/* 1 */
outline-offset: -2px;
/* 2 */
}
/*
Remove the inner padding in Chrome and Safari on macOS.
*/
::-webkit-search-decoration {
-webkit-appearance: none;
}
/*
1. Correct the inability to style clickable types in iOS and Safari.
2. Change font properties to `inherit` in Safari.
*/
::-webkit-file-upload-button {
-webkit-appearance: button;
/* 1 */
font: inherit;
/* 2 */
}
/*
Add the correct display in Chrome and Safari.
*/
summary {
display: list-item;
}
/*
Removes the default spacing and border for appropriate elements.
*/
blockquote,
dl,
dd,
h1,
h2,
h3,
h4,
h5,
h6,
hr,
figure,
p,
pre {
margin: 0;
}
fieldset {
margin: 0;
padding: 0;
}
legend {
padding: 0;
}
ol,
ul,
menu {
list-style: none;
margin: 0;
padding: 0;
}
/*
Prevent resizing textareas horizontally by default.
*/
textarea {
resize: vertical;
}
/*
1. Reset the default placeholder opacity in Firefox. (https://github.com/tailwindlabs/tailwindcss/issues/3300)
2. Set the default placeholder color to the user's configured gray 400 color.
*/
input::-moz-placeholder, textarea::-moz-placeholder {
opacity: 1;
/* 1 */
color: #9ca3af;
/* 2 */
}
input:-ms-input-placeholder, textarea:-ms-input-placeholder {
opacity: 1;
/* 1 */
color: #9ca3af;
/* 2 */
}
input::placeholder,
textarea::placeholder {
opacity: 1;
/* 1 */
color: #9ca3af;
/* 2 */
}
/*
Set the default cursor for buttons.
*/
button,
[role="button"] {
cursor: pointer;
}
/*
Make sure disabled buttons don't get the pointer cursor.
*/
:disabled {
cursor: default;
}
/*
1. Make replaced elements `display: block` by default. (https://github.com/mozdevs/cssremedy/issues/14)
2. Add `vertical-align: middle` to align replaced elements more sensibly by default. (https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210)
This can trigger a poorly considered lint error in some tools but is included by design.
*/
img,
svg,
video,
canvas,
audio,
iframe,
embed,
object {
display: block;
/* 1 */
vertical-align: middle;
/* 2 */
}
/*
Constrain images and videos to the parent width and preserve their intrinsic aspect ratio. (https://github.com/mozdevs/cssremedy/issues/14)
*/
img,
video {
max-width: 100%;
height: auto;
}
/*
Ensure the default browser behavior of the `hidden` attribute.
*/
[hidden] {
display: none;
}
*, ::before, ::after {
--tw-translate-x: 0;
--tw-translate-y: 0;
--tw-rotate: 0;
--tw-skew-x: 0;
--tw-skew-y: 0;
--tw-scale-x: 1;
--tw-scale-y: 1;
--tw-pan-x: ;
--tw-pan-y: ;
--tw-pinch-zoom: ;
--tw-scroll-snap-strictness: proximity;
--tw-ordinal: ;
--tw-slashed-zero: ;
--tw-numeric-figure: ;
--tw-numeric-spacing: ;
--tw-numeric-fraction: ;
--tw-ring-inset: ;
--tw-ring-offset-width: 0px;
--tw-ring-offset-color: #fff;
--tw-ring-color: rgb(59 130 246 / 0.5);
--tw-ring-offset-shadow: 0 0 #0000;
--tw-ring-shadow: 0 0 #0000;
--tw-shadow: 0 0 #0000;
--tw-shadow-colored: 0 0 #0000;
--tw-blur: ;
--tw-brightness: ;
--tw-contrast: ;
--tw-grayscale: ;
--tw-hue-rotate: ;
--tw-invert: ;
--tw-saturate: ;
--tw-sepia: ;
--tw-drop-shadow: ;
--tw-backdrop-blur: ;
--tw-backdrop-brightness: ;
--tw-backdrop-contrast: ;
--tw-backdrop-grayscale: ;
--tw-backdrop-hue-rotate: ;
--tw-backdrop-invert: ;
--tw-backdrop-opacity: ;
--tw-backdrop-saturate: ;
--tw-backdrop-sepia: ;
}
.container {
width: 100%;
}
@media (min-width: 640px) {
.container {
max-width: 640px;
}
}
@media (min-width: 768px) {
.container {
max-width: 768px;
}
}
@media (min-width: 1024px) {
.container {
max-width: 1024px;
}
}
@media (min-width: 1280px) {
.container {
max-width: 1280px;
}
}
@media (min-width: 1536px) {
.container {
max-width: 1536px;
}
}
.col-span-2 {
grid-column: span 2 / span 2;
}
.col-span-8 {
grid-column: span 8 / span 8;
}
.col-span-10 {
grid-column: span 10 / span 10;
}
.col-span-3 {
grid-column: span 3 / span 3;
}
.col-span-4 {
grid-column: span 4 / span 4;
}
.col-span-7 {
grid-column: span 7 / span 7;
}
.col-start-11 {
grid-column-start: 11;
}
.col-start-1 {
grid-column-start: 1;
}
.col-start-2 {
grid-column-start: 2;
}
.col-start-10 {
grid-column-start: 10;
}
.col-start-9 {
grid-column-start: 9;
}
.row-start-1 {
grid-row-start: 1;
}
.row-start-2 {
grid-row-start: 2;
}
.row-start-3 {
grid-row-start: 3;
}
.row-start-4 {
grid-row-start: 4;
}
.row-start-5 {
grid-row-start: 5;
}
.row-start-6 {
grid-row-start: 6;
}
.my-1 {
margin-top: 0.25rem;
margin-bottom: 0.25rem;
}
.my-0\.5 {
margin-top: 0.125rem;
margin-bottom: 0.125rem;
}
.my-0 {
margin-top: 0px;
margin-bottom: 0px;
}
.mb-5 {
margin-bottom: 1.25rem;
}
.box-content {
box-sizing: content-box;
}
.flex {
display: flex;
}
.grid {
display: grid;
}
.h-\[1px\] {
height: 1px;
}
.w-screen {
width: 100vw;
}
.w-full {
width: 100%;
}
.max-w-4xl {
max-width: 56rem;
}
.grid-cols-12 {
grid-template-columns: repeat(12, minmax(0, 1fr));
}
.grid-rows-5 {
grid-template-rows: repeat(5, minmax(0, 1fr));
}
.flex-col {
flex-direction: column;
}
.items-center {
align-items: center;
}
.gap-x-2 {
-moz-column-gap: 0.5rem;
column-gap: 0.5rem;
}
.whitespace-pre-line {
white-space: pre-line;
}
.break-words {
overflow-wrap: break-word;
}
.border-t {
border-top-width: 1px;
}
.border-b {
border-bottom-width: 1px;
}
.border-solid {
border-style: solid;
}
.border-black {
--tw-border-opacity: 1;
border-color: rgb(0 0 0 / var(--tw-border-opacity));
}
.bg-white {
--tw-bg-opacity: 1;
background-color: rgb(255 255 255 / var(--tw-bg-opacity));
}
.bg-slate-200 {
--tw-bg-opacity: 1;
background-color: rgb(226 232 240 / var(--tw-bg-opacity));
}
.p-4 {
padding: 1rem;
}
.text-right {
text-align: right;
}
.text-sm {
font-size: 0.875rem;
line-height: 1.25rem;
}
.font-bold {
font-weight: 700;
}
.text-slate-400 {
--tw-text-opacity: 1;
color: rgb(148 163 184 / var(--tw-text-opacity));
}
.text-blue-600 {
--tw-text-opacity: 1;
color: rgb(37 99 235 / var(--tw-text-opacity));
}
.underline {
-webkit-text-decoration-line: underline;
text-decoration-line: underline;
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,5 @@
{
"devDependencies": {
"tailwindcss": "^3.0.24"
}
}

View File

@@ -0,0 +1,7 @@
module.exports = {
content: ['./*.html'],
theme: {
extend: {},
},
plugins: [],
}

View File

@@ -0,0 +1 @@
This is not a valid eml.

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,45 @@
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href="output.css" rel="stylesheet">
</head>
<body class="bg-white w-screen flex flex-col items-center">
<div class="container max-w-4xl">
<!-- Header -->
<div class="grid gap-x-2 bg-slate-200 p-4">
<div class="col-start-9 col-span-4 row-start-1 text-right">2022-10-15 09:23</div>
<div class="col-start-1 row-start-1 text-slate-400 text-right">From</div>
<div class="col-start-2 col-span-7 row-start-1">Name &lt;<a href="mailto:someone@example.de">someone@example.de</a>&gt;</div>
<div class="col-start-1 row-start-2 text-slate-400 text-right">Subject</div>
<div class=" col-start-2 col-span-10 row-start-2 font-bold">HTML Message</div>
<div class="col-start-1 row-start-3 text-slate-400 text-right">To</div>
<div class="col-start-2 col-span-10 row-start-3 text-sm my-0.5"><a href="mailto:someone@example.de">someone@example.de</a></div>
<div class="col-start-1 row-start-4 text-slate-400 text-right"></div>
<div class="col-start-2 col-span-10 row-start-4 text-sm my-0.5"></div>
<div class="col-start-1 row-start-5 text-slate-400 text-right"></div>
<div class="col-start-2 col-span-10 row-start-5" text-sm my-0.5></div>
<div class="col-start-1 row-start-6 text-slate-400 text-right">Attachments</div>
<div class="col-start-2 col-span-10 row-start-6">IntM6gnXFm00FEV5.png (6.89 KiB), 600+kbfile.txt (600.24 KiB)</div>
</div>
<!-- Separator-->
<div class="border-t border-solid border-b w-full h-[1px] box-content border-black mb-5 bg-slate-200"></div>
<!-- Content-->
<div class="w-full break-words">Some Text<br><br>and an embedded image.</div>
</div>
</body>
</html>

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

View File

@@ -0,0 +1,19 @@
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
</head>
<body>
<p>Some Text</p>
<p>
<img src="cid:part1.pNdUSz0s.D3NqVtPg@example.de" alt="Has to be rewritten to work..">
<img src="https://upload.wikimedia.org/wikipedia/en/f/f7/RickRoll.png" alt="This image should not be shown.">
</p>
<p>and an embedded image.<br>
</p>
<p id="changeme">Paragraph unchanged.</p>
<scRipt>
document.getElementById("changeme").innerHTML = "Paragraph changed via Java Script.";
</script>
</body>
</html>

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

View File

@@ -0,0 +1,25 @@
Return-Path: <mail@someserver.de>
Delivered-To: mail@someserver.de
Received: from mail.someserver.org ([::1])
by e1acdba3bd07 with LMTP
id KBKZGD2YR2NTCgQAjubtDA
(envelope-from <mail@someserver.de>)
for <mail@someserver.de>; Wed, 10 Oct 2022 11:40:46 +0200
Received: from [127.0.0.1] (localhost [127.0.0.1]) by localhost (Mailerdaemon) with ESMTPSA id 2BC9064C1616
for <some@one.de>; Wed, 12 Oct 2022 21:40:46 +0200 (CEST)
Message-ID: <6e99e34d-e20a-80c4-ea61-d8234b612be9@someserver.de>
Date: Wed, 12 Oct 2022 21:40:43 +0200
MIME-Version: 1.0
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101
Thunderbird/102.3.1
Content-Language: en-US
To: some@one.de
Cc: asdasd@æsdasd.de, asdadasdasdasda.asdasd@æsdasd.de
Bcc: fdf@fvf.de
From: Some One <mail@someserver.de>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-Last-TLS-Session-Version: TLSv1.3
Subject: Simple Text Mail
This is just a simple Text Mail.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

View File

@@ -0,0 +1,429 @@
from django.contrib.auth.models import User
from documents.models import Correspondent
from documents.models import DocumentType
from documents.models import Tag
from paperless_mail.models import MailAccount
from paperless_mail.models import MailRule
from rest_framework.test import APITestCase
class TestAPIMailAccounts(APITestCase):
ENDPOINT = "/api/mail_accounts/"
def setUp(self):
super().setUp()
self.user = User.objects.create_superuser(username="temp_admin")
self.client.force_authenticate(user=self.user)
def test_get_mail_accounts(self):
"""
GIVEN:
- Configured mail accounts
WHEN:
- API call is made to get mail accounts
THEN:
- Configured mail accounts are provided
"""
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",
)
response = self.client.get(self.ENDPOINT)
self.assertEqual(response.status_code, 200)
self.assertEqual(response.data["count"], 1)
returned_account1 = response.data["results"][0]
self.assertEqual(returned_account1["name"], account1.name)
self.assertEqual(returned_account1["username"], account1.username)
self.assertEqual(
returned_account1["password"],
"*" * len(account1.password),
)
self.assertEqual(returned_account1["imap_server"], account1.imap_server)
self.assertEqual(returned_account1["imap_port"], account1.imap_port)
self.assertEqual(returned_account1["imap_security"], account1.imap_security)
self.assertEqual(returned_account1["character_set"], account1.character_set)
def test_create_mail_account(self):
"""
WHEN:
- API request is made to add a mail account
THEN:
- A new mail account is created
"""
account1 = {
"name": "Email1",
"username": "username1",
"password": "password1",
"imap_server": "server.example.com",
"imap_port": 443,
"imap_security": MailAccount.ImapSecurity.SSL,
"character_set": "UTF-8",
}
response = self.client.post(
self.ENDPOINT,
data=account1,
)
self.assertEqual(response.status_code, 201)
returned_account1 = MailAccount.objects.get(name="Email1")
self.assertEqual(returned_account1.name, account1["name"])
self.assertEqual(returned_account1.username, account1["username"])
self.assertEqual(returned_account1.password, account1["password"])
self.assertEqual(returned_account1.imap_server, account1["imap_server"])
self.assertEqual(returned_account1.imap_port, account1["imap_port"])
self.assertEqual(returned_account1.imap_security, account1["imap_security"])
self.assertEqual(returned_account1.character_set, account1["character_set"])
def test_delete_mail_account(self):
"""
GIVEN:
- Existing mail account
WHEN:
- API request is made to delete a mail account
THEN:
- Account is deleted
"""
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",
)
response = self.client.delete(
f"{self.ENDPOINT}{account1.pk}/",
)
self.assertEqual(response.status_code, 204)
self.assertEqual(len(MailAccount.objects.all()), 0)
def test_update_mail_account(self):
"""
GIVEN:
- Existing mail accounts
WHEN:
- API request is made to update mail account
THEN:
- The mail account is updated, password only updated if not '****'
"""
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",
)
response = self.client.patch(
f"{self.ENDPOINT}{account1.pk}/",
data={
"name": "Updated Name 1",
"password": "******",
},
)
self.assertEqual(response.status_code, 200)
returned_account1 = MailAccount.objects.get(pk=account1.pk)
self.assertEqual(returned_account1.name, "Updated Name 1")
self.assertEqual(returned_account1.password, account1.password)
response = self.client.patch(
f"{self.ENDPOINT}{account1.pk}/",
data={
"name": "Updated Name 2",
"password": "123xyz",
},
)
self.assertEqual(response.status_code, 200)
returned_account2 = MailAccount.objects.get(pk=account1.pk)
self.assertEqual(returned_account2.name, "Updated Name 2")
self.assertEqual(returned_account2.password, "123xyz")
class TestAPIMailRules(APITestCase):
ENDPOINT = "/api/mail_rules/"
def setUp(self):
super().setUp()
self.user = User.objects.create_superuser(username="temp_admin")
self.client.force_authenticate(user=self.user)
def test_get_mail_rules(self):
"""
GIVEN:
- Configured mail accounts and rules
WHEN:
- API call is made to get mail rules
THEN:
- Configured mail rules are provided
"""
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_subject="subject",
filter_body="body",
filter_attachment_filename="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.get(self.ENDPOINT)
self.assertEqual(response.status_code, 200)
self.assertEqual(response.data["count"], 1)
returned_rule1 = response.data["results"][0]
self.assertEqual(returned_rule1["name"], rule1.name)
self.assertEqual(returned_rule1["account"], account1.pk)
self.assertEqual(returned_rule1["folder"], rule1.folder)
self.assertEqual(returned_rule1["filter_from"], rule1.filter_from)
self.assertEqual(returned_rule1["filter_subject"], rule1.filter_subject)
self.assertEqual(returned_rule1["filter_body"], rule1.filter_body)
self.assertEqual(
returned_rule1["filter_attachment_filename"],
rule1.filter_attachment_filename,
)
self.assertEqual(returned_rule1["maximum_age"], rule1.maximum_age)
self.assertEqual(returned_rule1["action"], rule1.action)
self.assertEqual(returned_rule1["assign_title_from"], rule1.assign_title_from)
self.assertEqual(
returned_rule1["assign_correspondent_from"],
rule1.assign_correspondent_from,
)
self.assertEqual(returned_rule1["order"], rule1.order)
self.assertEqual(returned_rule1["attachment_type"], rule1.attachment_type)
def test_create_mail_rule(self):
"""
GIVEN:
- Configured mail account exists
WHEN:
- API request is made to add a mail rule
THEN:
- A new mail rule is created
"""
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",
)
tag = Tag.objects.create(
name="t",
)
correspondent = Correspondent.objects.create(
name="c",
)
document_type = DocumentType.objects.create(
name="dt",
)
rule1 = {
"name": "Rule1",
"account": account1.pk,
"folder": "INBOX",
"filter_from": "from@example.com",
"filter_subject": "subject",
"filter_body": "body",
"filter_attachment_filename": "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,
"action_parameter": "parameter",
"assign_tags": [tag.pk],
"assign_correspondent": correspondent.pk,
"assign_document_type": document_type.pk,
}
response = self.client.post(
self.ENDPOINT,
data=rule1,
)
self.assertEqual(response.status_code, 201)
response = self.client.get(self.ENDPOINT)
self.assertEqual(response.status_code, 200)
self.assertEqual(response.data["count"], 1)
returned_rule1 = response.data["results"][0]
self.assertEqual(returned_rule1["name"], rule1["name"])
self.assertEqual(returned_rule1["account"], account1.pk)
self.assertEqual(returned_rule1["folder"], rule1["folder"])
self.assertEqual(returned_rule1["filter_from"], rule1["filter_from"])
self.assertEqual(returned_rule1["filter_subject"], rule1["filter_subject"])
self.assertEqual(returned_rule1["filter_body"], rule1["filter_body"])
self.assertEqual(
returned_rule1["filter_attachment_filename"],
rule1["filter_attachment_filename"],
)
self.assertEqual(returned_rule1["maximum_age"], rule1["maximum_age"])
self.assertEqual(returned_rule1["action"], rule1["action"])
self.assertEqual(
returned_rule1["assign_title_from"],
rule1["assign_title_from"],
)
self.assertEqual(
returned_rule1["assign_correspondent_from"],
rule1["assign_correspondent_from"],
)
self.assertEqual(returned_rule1["order"], rule1["order"])
self.assertEqual(returned_rule1["attachment_type"], rule1["attachment_type"])
self.assertEqual(returned_rule1["action_parameter"], rule1["action_parameter"])
self.assertEqual(
returned_rule1["assign_correspondent"],
rule1["assign_correspondent"],
)
self.assertEqual(
returned_rule1["assign_document_type"],
rule1["assign_document_type"],
)
self.assertEqual(returned_rule1["assign_tags"], rule1["assign_tags"])
def test_delete_mail_rule(self):
"""
GIVEN:
- Existing mail rule
WHEN:
- API request is made to delete a mail rule
THEN:
- Rule is deleted
"""
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_subject="subject",
filter_body="body",
filter_attachment_filename="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.delete(
f"{self.ENDPOINT}{rule1.pk}/",
)
self.assertEqual(response.status_code, 204)
self.assertEqual(len(MailRule.objects.all()), 0)
def test_update_mail_rule(self):
"""
GIVEN:
- Existing mail rule
WHEN:
- API request is made to update mail rule
THEN:
- The mail rule is updated
"""
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_subject="subject",
filter_body="body",
filter_attachment_filename="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.patch(
f"{self.ENDPOINT}{rule1.pk}/",
data={
"name": "Updated Name 1",
"action": MailRule.MailAction.DELETE,
},
)
self.assertEqual(response.status_code, 200)
returned_rule1 = MailRule.objects.get(pk=rule1.pk)
self.assertEqual(returned_rule1.name, "Updated Name 1")
self.assertEqual(returned_rule1.action, MailRule.MailAction.DELETE)

View File

@@ -0,0 +1,688 @@
import datetime
import os
from unittest import mock
from django.test import TestCase
from documents.parsers import ParseError
from paperless_mail.parsers import MailDocumentParser
class TestParser(TestCase):
SAMPLE_FILES = os.path.join(os.path.dirname(__file__), "samples")
def setUp(self) -> None:
self.parser = MailDocumentParser(logging_group=None)
def tearDown(self) -> None:
self.parser.cleanup()
def test_get_parsed_missing_file(self):
"""
GIVEN:
- Fresh parser
WHEN:
- A nonexistent file should be parsed
THEN:
- An Exception is thrown
"""
# Check if exception is raised when parsing fails.
self.assertRaises(
ParseError,
self.parser.get_parsed,
os.path.join(self.SAMPLE_FILES, "na"),
)
def test_get_parsed_broken_file(self):
"""
GIVEN:
- Fresh parser
WHEN:
- A faulty file should be parsed
THEN:
- An Exception is thrown
"""
# Check if exception is raised when the mail is faulty.
self.assertRaises(
ParseError,
self.parser.get_parsed,
os.path.join(self.SAMPLE_FILES, "broken.eml"),
)
def test_get_parsed_simple_text_mail(self):
"""
GIVEN:
- Fresh parser
WHEN:
- A .eml file should be parsed
THEN:
- The content of the mail should be available in the parse result.
"""
# Parse Test file and check relevant content
parsed1 = self.parser.get_parsed(
os.path.join(self.SAMPLE_FILES, "simple_text.eml"),
)
self.assertEqual(parsed1.date.year, 2022)
self.assertEqual(parsed1.date.month, 10)
self.assertEqual(parsed1.date.day, 12)
self.assertEqual(parsed1.date.hour, 21)
self.assertEqual(parsed1.date.minute, 40)
self.assertEqual(parsed1.date.second, 43)
self.assertEqual(parsed1.date.tzname(), "UTC+02:00")
self.assertEqual(parsed1.from_, "mail@someserver.de")
self.assertEqual(parsed1.subject, "Simple Text Mail")
self.assertEqual(parsed1.text, "This is just a simple Text Mail.\n")
self.assertEqual(parsed1.to, ("some@one.de",))
def test_get_parsed_reparse(self):
"""
GIVEN:
- An E-Mail was parsed
WHEN:
- Another .eml file should be parsed
THEN:
- The parser should not retry to parse and return the old results
"""
# Parse Test file and check relevant content
parsed1 = self.parser.get_parsed(
os.path.join(self.SAMPLE_FILES, "simple_text.eml"),
)
# Check if same parsed object as before is returned, even if another file is given.
parsed2 = self.parser.get_parsed(
os.path.join(os.path.join(self.SAMPLE_FILES, "html.eml")),
)
self.assertEqual(parsed1, parsed2)
@mock.patch("paperless_mail.parsers.MailDocumentParser.generate_pdf")
@mock.patch("paperless_mail.parsers.make_thumbnail_from_pdf")
def test_get_thumbnail(
self,
mock_make_thumbnail_from_pdf: mock.MagicMock,
mock_generate_pdf: mock.MagicMock,
):
"""
GIVEN:
- An E-Mail was parsed
WHEN:
- The Thumbnail is requested
THEN:
- The parser should call the functions which generate the thumbnail
"""
mocked_return = "Passing the return value through.."
mock_make_thumbnail_from_pdf.return_value = mocked_return
mock_generate_pdf.return_value = "Mocked return value.."
thumb = self.parser.get_thumbnail(
os.path.join(self.SAMPLE_FILES, "simple_text.eml"),
"message/rfc822",
)
self.assertEqual(
self.parser.archive_path,
mock_make_thumbnail_from_pdf.call_args_list[0].args[0],
)
self.assertEqual(
self.parser.tempdir,
mock_make_thumbnail_from_pdf.call_args_list[0].args[1],
)
self.assertEqual(mocked_return, thumb)
@mock.patch("documents.loggers.LoggingMixin.log")
def test_extract_metadata_fail(self, m: mock.MagicMock):
"""
GIVEN:
- Fresh start
WHEN:
- Metadata extraction is triggered for nonexistent file
THEN:
- A log warning should be generated
"""
# Validate if warning is logged when parsing fails
self.assertEqual([], self.parser.extract_metadata("na", "message/rfc822"))
self.assertEqual("warning", m.call_args[0][0])
def test_extract_metadata(self):
"""
GIVEN:
- Fresh start
WHEN:
- Metadata extraction is triggered
THEN:
- metadata is returned
"""
# Validate Metadata parsing returns the expected results
metadata = self.parser.extract_metadata(
os.path.join(self.SAMPLE_FILES, "simple_text.eml"),
"message/rfc822",
)
self.assertIn(
{"namespace": "", "prefix": "", "key": "attachments", "value": ""},
metadata,
)
self.assertIn(
{
"namespace": "",
"prefix": "",
"key": "date",
"value": "2022-10-12 21:40:43 UTC+02:00",
},
metadata,
)
self.assertIn(
{
"namespace": "",
"prefix": "header",
"key": "content-language",
"value": "en-US",
},
metadata,
)
self.assertIn(
{
"namespace": "",
"prefix": "header",
"key": "content-type",
"value": "text/plain; charset=UTF-8; format=flowed",
},
metadata,
)
self.assertIn(
{
"namespace": "",
"prefix": "header",
"key": "date",
"value": "Wed, 12 Oct 2022 21:40:43 +0200",
},
metadata,
)
self.assertIn(
{
"namespace": "",
"prefix": "header",
"key": "delivered-to",
"value": "mail@someserver.de",
},
metadata,
)
self.assertIn(
{
"namespace": "",
"prefix": "header",
"key": "from",
"value": "Some One <mail@someserver.de>",
},
metadata,
)
self.assertIn(
{
"namespace": "",
"prefix": "header",
"key": "message-id",
"value": "<6e99e34d-e20a-80c4-ea61-d8234b612be9@someserver.de>",
},
metadata,
)
self.assertIn(
{
"namespace": "",
"prefix": "header",
"key": "mime-version",
"value": "1.0",
},
metadata,
)
self.assertIn(
{
"namespace": "",
"prefix": "header",
"key": "received",
"value": "from mail.someserver.org ([::1])\n\tby e1acdba3bd07 with LMTP\n\tid KBKZGD2YR2NTCgQAjubtDA\n\t(envelope-from <mail@someserver.de>)\n\tfor <mail@someserver.de>; Wed, 10 Oct 2022 11:40:46 +0200, from [127.0.0.1] (localhost [127.0.0.1]) by localhost (Mailerdaemon) with ESMTPSA id 2BC9064C1616\n\tfor <some@one.de>; Wed, 12 Oct 2022 21:40:46 +0200 (CEST)",
},
metadata,
)
self.assertIn(
{
"namespace": "",
"prefix": "header",
"key": "return-path",
"value": "<mail@someserver.de>",
},
metadata,
)
self.assertIn(
{
"namespace": "",
"prefix": "header",
"key": "subject",
"value": "Simple Text Mail",
},
metadata,
)
self.assertIn(
{"namespace": "", "prefix": "header", "key": "to", "value": "some@one.de"},
metadata,
)
self.assertIn(
{
"namespace": "",
"prefix": "header",
"key": "user-agent",
"value": "Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101\n Thunderbird/102.3.1",
},
metadata,
)
self.assertIn(
{
"namespace": "",
"prefix": "header",
"key": "x-last-tls-session-version",
"value": "TLSv1.3",
},
metadata,
)
def test_parse_na(self):
"""
GIVEN:
- Fresh start
WHEN:
- parsing is attempted with nonexistent file
THEN:
- Exception is thrown
"""
# Check if exception is raised when parsing fails.
self.assertRaises(
ParseError,
self.parser.parse,
os.path.join(self.SAMPLE_FILES, "na"),
"message/rfc822",
)
@mock.patch("paperless_mail.parsers.MailDocumentParser.tika_parse")
@mock.patch("paperless_mail.parsers.MailDocumentParser.generate_pdf")
def test_parse_html_eml(self, n, mock_tika_parse: mock.MagicMock):
"""
GIVEN:
- Fresh start
WHEN:
- parsing is done with html mail
THEN:
- Tika is called, parsed information from non html parts is available
"""
# Validate parsing returns the expected results
text_expected = "Subject: HTML Message\n\nFrom: Name <someone@example.de>\n\nTo: someone@example.de\n\nAttachments: IntM6gnXFm00FEV5.png (6.89 KiB), 600+kbfile.txt (600.24 KiB)\n\nHTML content: tika return\n\nSome Text and an embedded image."
mock_tika_parse.return_value = "tika return"
self.parser.parse(os.path.join(self.SAMPLE_FILES, "html.eml"), "message/rfc822")
self.assertEqual(text_expected, self.parser.text)
self.assertEqual(
datetime.datetime(
2022,
10,
15,
11,
23,
19,
tzinfo=datetime.timezone(datetime.timedelta(seconds=7200)),
),
self.parser.date,
)
@mock.patch("paperless_mail.parsers.MailDocumentParser.generate_pdf")
def test_parse_simple_eml(self, n):
"""
GIVEN:
- Fresh start
WHEN:
- parsing is done with non html mail
THEN:
- parsed information is available
"""
# Validate parsing returns the expected results
self.parser.parse(
os.path.join(self.SAMPLE_FILES, "simple_text.eml"),
"message/rfc822",
)
text_expected = "Subject: Simple Text Mail\n\nFrom: Some One <mail@someserver.de>\n\nTo: some@one.de\n\nCC: asdasd@æsdasd.de, asdadasdasdasda.asdasd@æsdasd.de\n\nBCC: fdf@fvf.de\n\n\n\nThis is just a simple Text Mail."
self.assertEqual(text_expected, self.parser.text)
self.assertEqual(
datetime.datetime(
2022,
10,
12,
21,
40,
43,
tzinfo=datetime.timezone(datetime.timedelta(seconds=7200)),
),
self.parser.date,
)
# Just check if file exists, the unittest for generate_pdf() goes deeper.
self.assertTrue(os.path.isfile(self.parser.archive_path))
@mock.patch("paperless_mail.parsers.parser.from_buffer")
def test_tika_parse_unsuccessful(self, mock_from_buffer: mock.MagicMock):
"""
GIVEN:
- Fresh start
WHEN:
- tika parsing fails
THEN:
- the parser should return an empty string
"""
# Check unsuccessful parsing
mock_from_buffer.return_value = {"content": None}
parsed = self.parser.tika_parse(None)
self.assertEqual("", parsed)
@mock.patch("paperless_mail.parsers.parser.from_buffer")
def test_tika_parse(self, mock_from_buffer: mock.MagicMock):
"""
GIVEN:
- Fresh start
WHEN:
- tika parsing is called
THEN:
- a web request to tika shall be done and the reply es returned
"""
html = '<html><head><meta http-equiv="content-type" content="text/html; charset=UTF-8"></head><body><p>Some Text</p></body></html>'
expected_text = "Some Text"
# Check successful parsing
mock_from_buffer.return_value = {"content": expected_text}
parsed = self.parser.tika_parse(html)
self.assertEqual(expected_text, parsed.strip())
mock_from_buffer.assert_called_with(html, self.parser.tika_server)
@mock.patch("paperless_mail.parsers.parser.from_buffer")
def test_tika_parse_exception(self, mock_from_buffer: mock.MagicMock):
"""
GIVEN:
- Fresh start
WHEN:
- tika parsing is called and an exception is thrown on the request
THEN:
- a ParseError Exception is thrown
"""
html = '<html><head><meta http-equiv="content-type" content="text/html; charset=UTF-8"></head><body><p>Some Text</p></body></html>'
# Check ParseError
def my_side_effect():
raise Exception("Test")
mock_from_buffer.side_effect = my_side_effect
self.assertRaises(ParseError, self.parser.tika_parse, html)
def test_tika_parse_unreachable(self):
"""
GIVEN:
- Fresh start
WHEN:
- tika parsing is called but tika is not available
THEN:
- a ParseError Exception is thrown
"""
html = '<html><head><meta http-equiv="content-type" content="text/html; charset=UTF-8"></head><body><p>Some Text</p></body></html>'
# Check if exception is raised when Tika cannot be reached.
self.parser.tika_server = ""
self.assertRaises(ParseError, self.parser.tika_parse, html)
@mock.patch("paperless_mail.parsers.MailDocumentParser.generate_pdf_from_mail")
@mock.patch("paperless_mail.parsers.MailDocumentParser.generate_pdf_from_html")
def test_generate_pdf_parse_error(self, m: mock.MagicMock, n: mock.MagicMock):
"""
GIVEN:
- Fresh start
WHEN:
- pdf generation is requested but gotenberg can not be reached
THEN:
- a ParseError Exception is thrown
"""
m.return_value = b""
n.return_value = b""
# Check if exception is raised when the pdf can not be created.
self.parser.gotenberg_server = ""
self.assertRaises(
ParseError,
self.parser.generate_pdf,
os.path.join(self.SAMPLE_FILES, "html.eml"),
)
def test_generate_pdf_exception(self):
"""
GIVEN:
- Fresh start
WHEN:
- pdf generation is requested but parsing throws an exception
THEN:
- a ParseError Exception is thrown
"""
# Check if exception is raised when the mail can not be parsed.
self.assertRaises(
ParseError,
self.parser.generate_pdf,
os.path.join(self.SAMPLE_FILES, "broken.eml"),
)
@mock.patch("paperless_mail.parsers.requests.post")
@mock.patch("paperless_mail.parsers.MailDocumentParser.generate_pdf_from_mail")
@mock.patch("paperless_mail.parsers.MailDocumentParser.generate_pdf_from_html")
def test_generate_pdf(
self,
mock_generate_pdf_from_html: mock.MagicMock,
mock_generate_pdf_from_mail: mock.MagicMock,
mock_post: mock.MagicMock,
):
"""
GIVEN:
- Fresh start
WHEN:
- pdf generation is requested
THEN:
- gotenberg is called and the resulting file is returned
"""
mock_generate_pdf_from_mail.return_value = b"Mail Return"
mock_generate_pdf_from_html.return_value = b"HTML Return"
mock_response = mock.MagicMock()
mock_response.content = b"Content"
mock_post.return_value = mock_response
pdf_path = self.parser.generate_pdf(os.path.join(self.SAMPLE_FILES, "html.eml"))
self.assertTrue(os.path.isfile(pdf_path))
mock_generate_pdf_from_mail.assert_called_once_with(
self.parser.get_parsed(None),
)
mock_generate_pdf_from_html.assert_called_once_with(
self.parser.get_parsed(None).html,
self.parser.get_parsed(None).attachments,
)
self.assertEqual(
self.parser.gotenberg_server + "/forms/pdfengines/merge",
mock_post.call_args.args[0],
)
self.assertEqual({}, mock_post.call_args.kwargs["headers"])
self.assertEqual(
b"Mail Return",
mock_post.call_args.kwargs["files"]["1_mail.pdf"][1].read(),
)
self.assertEqual(
b"HTML Return",
mock_post.call_args.kwargs["files"]["2_html.pdf"][1].read(),
)
mock_response.raise_for_status.assert_called_once()
with open(pdf_path, "rb") as file:
self.assertEqual(b"Content", file.read())
def test_mail_to_html(self):
"""
GIVEN:
- Fresh start
WHEN:
- conversion from eml to html is requested
THEN:
- html should be returned
"""
mail = self.parser.get_parsed(os.path.join(self.SAMPLE_FILES, "html.eml"))
html_handle = self.parser.mail_to_html(mail)
html_received = html_handle.read()
with open(
os.path.join(self.SAMPLE_FILES, "html.eml.html"),
) as html_expected_handle:
html_expected = html_expected_handle.read()
self.assertHTMLEqual(html_expected, html_received)
@mock.patch("paperless_mail.parsers.requests.post")
@mock.patch("paperless_mail.parsers.MailDocumentParser.mail_to_html")
def test_generate_pdf_from_mail(
self,
mock_mail_to_html: mock.MagicMock,
mock_post: mock.MagicMock,
):
"""
GIVEN:
- Fresh start
WHEN:
- conversion of PDF from .eml is requested
THEN:
- gotenberg should be called with valid intermediary html files, the resulting pdf is returned
"""
mock_response = mock.MagicMock()
mock_response.content = b"Content"
mock_post.return_value = mock_response
mock_mail_to_html.return_value = "Testresponse"
mail = self.parser.get_parsed(os.path.join(self.SAMPLE_FILES, "html.eml"))
retval = self.parser.generate_pdf_from_mail(mail)
self.assertEqual(b"Content", retval)
mock_mail_to_html.assert_called_once_with(mail)
self.assertEqual(
self.parser.gotenberg_server + "/forms/chromium/convert/html",
mock_post.call_args.args[0],
)
self.assertEqual({}, mock_post.call_args.kwargs["headers"])
self.assertEqual(
{
"marginTop": "0.1",
"marginBottom": "0.1",
"marginLeft": "0.1",
"marginRight": "0.1",
"paperWidth": "8.27",
"paperHeight": "11.7",
"scale": "1.0",
},
mock_post.call_args.kwargs["data"],
)
self.assertEqual(
"Testresponse",
mock_post.call_args.kwargs["files"]["html"][1],
)
self.assertEqual(
"output.css",
mock_post.call_args.kwargs["files"]["css"][0],
)
mock_response.raise_for_status.assert_called_once()
def test_transform_inline_html(self):
"""
GIVEN:
- Fresh start
WHEN:
- transforming of html content from an email with an inline image attachment is requested
THEN:
- html is returned and sanitized
"""
class MailAttachmentMock:
def __init__(self, payload, content_id):
self.payload = payload
self.content_id = content_id
result = None
with open(os.path.join(self.SAMPLE_FILES, "sample.html")) as html_file:
with open(os.path.join(self.SAMPLE_FILES, "sample.png"), "rb") as png_file:
html = html_file.read()
png = png_file.read()
attachments = [
MailAttachmentMock(png, "part1.pNdUSz0s.D3NqVtPg@example.de"),
]
result = self.parser.transform_inline_html(html, attachments)
resulting_html = result[-1][1].read()
self.assertTrue(result[-1][0] == "index.html")
self.assertIn(result[0][0], resulting_html)
self.assertNotIn("<script", resulting_html.lower())
@mock.patch("paperless_mail.parsers.requests.post")
def test_generate_pdf_from_html(self, mock_post: mock.MagicMock):
"""
GIVEN:
- Fresh start
WHEN:
- generating pdf from html with inline attachments is attempted
THEN:
- gotenberg is called with the correct parameters and the resulting pdf is returned
"""
class MailAttachmentMock:
def __init__(self, payload, content_id):
self.payload = payload
self.content_id = content_id
mock_response = mock.MagicMock()
mock_response.content = b"Content"
mock_post.return_value = mock_response
result = None
with open(os.path.join(self.SAMPLE_FILES, "sample.html")) as html_file:
with open(os.path.join(self.SAMPLE_FILES, "sample.png"), "rb") as png_file:
html = html_file.read()
png = png_file.read()
attachments = [
MailAttachmentMock(png, "part1.pNdUSz0s.D3NqVtPg@example.de"),
]
result = self.parser.generate_pdf_from_html(html, attachments)
self.assertEqual(
self.parser.gotenberg_server + "/forms/chromium/convert/html",
mock_post.call_args.args[0],
)
self.assertEqual({}, mock_post.call_args.kwargs["headers"])
self.assertEqual(
{
"marginTop": "0.1",
"marginBottom": "0.1",
"marginLeft": "0.1",
"marginRight": "0.1",
"paperWidth": "8.27",
"paperHeight": "11.7",
"scale": "1.0",
},
mock_post.call_args.kwargs["data"],
)
# read to assert it is a file like object.
mock_post.call_args.kwargs["files"]["cidpart1pNdUSz0sD3NqVtPgexamplede"][
1
].read()
mock_post.call_args.kwargs["files"]["index.html"][1].read()
mock_response.raise_for_status.assert_called_once()
self.assertEqual(b"Content", result)

View File

@@ -0,0 +1,361 @@
import os
from unittest import mock
from urllib.error import HTTPError
from urllib.request import urlopen
import pytest
from django.test import TestCase
from documents.parsers import ParseError
from documents.parsers import run_convert
from imagehash import average_hash
from paperless_mail.parsers import MailDocumentParser
from pdfminer.high_level import extract_text
from PIL import Image
class TestParserLive(TestCase):
SAMPLE_FILES = os.path.join(os.path.dirname(__file__), "samples")
def setUp(self) -> None:
self.parser = MailDocumentParser(logging_group=None)
def tearDown(self) -> None:
self.parser.cleanup()
@staticmethod
def imagehash(file, hash_size=18):
return f"{average_hash(Image.open(file), hash_size)}"
# Only run if convert is available
@pytest.mark.skipif(
"PAPERLESS_TEST_SKIP_CONVERT" in os.environ,
reason="PAPERLESS_TEST_SKIP_CONVERT set, skipping Test",
)
@mock.patch("paperless_mail.parsers.MailDocumentParser.generate_pdf")
def test_get_thumbnail(self, mock_generate_pdf: mock.MagicMock):
"""
GIVEN:
- Fresh start
WHEN:
- The Thumbnail is requested
THEN:
- The returned thumbnail image file is as expected
"""
mock_generate_pdf.return_value = os.path.join(
self.SAMPLE_FILES,
"simple_text.eml.pdf",
)
thumb = self.parser.get_thumbnail(
os.path.join(self.SAMPLE_FILES, "simple_text.eml"),
"message/rfc822",
)
self.assertTrue(os.path.isfile(thumb))
expected = os.path.join(self.SAMPLE_FILES, "simple_text.eml.pdf.webp")
self.assertEqual(
self.imagehash(thumb),
self.imagehash(expected),
f"Created Thumbnail {thumb} differs from expected file {expected}",
)
@pytest.mark.skipif(
"TIKA_LIVE" not in os.environ,
reason="No tika server",
)
def test_tika_parse_successful(self):
"""
GIVEN:
- Fresh start
WHEN:
- tika parsing is called
THEN:
- a web request to tika shall be done and the reply es returned
"""
html = '<html><head><meta http-equiv="content-type" content="text/html; charset=UTF-8"></head><body><p>Some Text</p></body></html>'
expected_text = "Some Text"
# Check successful parsing
parsed = self.parser.tika_parse(html)
self.assertEqual(expected_text, parsed.strip())
@pytest.mark.skipif(
"TIKA_LIVE" not in os.environ,
reason="No tika server",
)
def test_tika_parse_unsuccessful(self):
"""
GIVEN:
- Fresh start
WHEN:
- tika parsing fails
THEN:
- the parser should return an empty string
"""
# Check unsuccessful parsing
parsed = self.parser.tika_parse(None)
self.assertEqual("", parsed)
@pytest.mark.skipif(
"GOTENBERG_LIVE" not in os.environ,
reason="No gotenberg server",
)
@mock.patch("paperless_mail.parsers.MailDocumentParser.generate_pdf_from_mail")
@mock.patch("paperless_mail.parsers.MailDocumentParser.generate_pdf_from_html")
def test_generate_pdf_gotenberg_merging(
self,
mock_generate_pdf_from_html: mock.MagicMock,
mock_generate_pdf_from_mail: mock.MagicMock,
):
"""
GIVEN:
- Intermediary pdfs to be merged
WHEN:
- pdf generation is requested with html file requiring merging of pdfs
THEN:
- gotenberg is called to merge files and the resulting file is returned
"""
with open(os.path.join(self.SAMPLE_FILES, "first.pdf"), "rb") as first:
mock_generate_pdf_from_mail.return_value = first.read()
with open(os.path.join(self.SAMPLE_FILES, "second.pdf"), "rb") as second:
mock_generate_pdf_from_html.return_value = second.read()
pdf_path = self.parser.generate_pdf(os.path.join(self.SAMPLE_FILES, "html.eml"))
self.assertTrue(os.path.isfile(pdf_path))
extracted = extract_text(pdf_path)
expected = (
"first\tPDF\tto\tbe\tmerged.\n\n\x0csecond\tPDF\tto\tbe\tmerged.\n\n\x0c"
)
self.assertEqual(expected, extracted)
@pytest.mark.skipif(
"GOTENBERG_LIVE" not in os.environ,
reason="No gotenberg server",
)
def test_generate_pdf_from_mail_no_convert(self):
"""
GIVEN:
- Fresh start
WHEN:
- pdf generation from simple eml file is requested
THEN:
- gotenberg is called and the resulting file is returned and contains the expected text.
"""
mail = self.parser.get_parsed(os.path.join(self.SAMPLE_FILES, "html.eml"))
pdf_path = os.path.join(self.parser.tempdir, "html.eml.pdf")
with open(pdf_path, "wb") as file:
file.write(self.parser.generate_pdf_from_mail(mail))
extracted = extract_text(pdf_path)
expected = extract_text(os.path.join(self.SAMPLE_FILES, "html.eml.pdf"))
self.assertEqual(expected, extracted)
@pytest.mark.skipif(
"GOTENBERG_LIVE" not in os.environ,
reason="No gotenberg server",
)
# Only run if convert is available
@pytest.mark.skipif(
"PAPERLESS_TEST_SKIP_CONVERT" in os.environ,
reason="PAPERLESS_TEST_SKIP_CONVERT set, skipping Test",
)
def test_generate_pdf_from_mail(self):
"""
GIVEN:
- Fresh start
WHEN:
- pdf generation from simple eml file is requested
THEN:
- gotenberg is called and the resulting file is returned and look as expected.
"""
mail = self.parser.get_parsed(os.path.join(self.SAMPLE_FILES, "html.eml"))
pdf_path = os.path.join(self.parser.tempdir, "html.eml.pdf")
with open(pdf_path, "wb") as file:
file.write(self.parser.generate_pdf_from_mail(mail))
converted = os.path.join(
self.parser.tempdir,
"html.eml.pdf.webp",
)
run_convert(
density=300,
scale="500x5000>",
alpha="remove",
strip=True,
trim=False,
auto_orient=True,
input_file=f"{pdf_path}", # Do net define an index to convert all pages.
output_file=converted,
logging_group=None,
)
self.assertTrue(os.path.isfile(converted))
thumb_hash = self.imagehash(converted)
# The created pdf is not reproducible. But the converted image should always look the same.
expected_hash = self.imagehash(
os.path.join(self.SAMPLE_FILES, "html.eml.pdf.webp"),
)
self.assertEqual(
thumb_hash,
expected_hash,
f"PDF looks different. Check if {converted} looks weird.",
)
@pytest.mark.skipif(
"GOTENBERG_LIVE" not in os.environ,
reason="No gotenberg server",
)
def test_generate_pdf_from_html_no_convert(self):
"""
GIVEN:
- Fresh start
WHEN:
- pdf generation from html eml file is requested
THEN:
- gotenberg is called and the resulting file is returned and contains the expected text.
"""
class MailAttachmentMock:
def __init__(self, payload, content_id):
self.payload = payload
self.content_id = content_id
result = None
with open(os.path.join(self.SAMPLE_FILES, "sample.html")) as html_file:
with open(os.path.join(self.SAMPLE_FILES, "sample.png"), "rb") as png_file:
html = html_file.read()
png = png_file.read()
attachments = [
MailAttachmentMock(png, "part1.pNdUSz0s.D3NqVtPg@example.de"),
]
result = self.parser.generate_pdf_from_html(html, attachments)
pdf_path = os.path.join(self.parser.tempdir, "sample.html.pdf")
with open(pdf_path, "wb") as file:
file.write(result)
extracted = extract_text(pdf_path)
expected = extract_text(os.path.join(self.SAMPLE_FILES, "sample.html.pdf"))
self.assertEqual(expected, extracted)
@pytest.mark.skipif(
"GOTENBERG_LIVE" not in os.environ,
reason="No gotenberg server",
)
# Only run if convert is available
@pytest.mark.skipif(
"PAPERLESS_TEST_SKIP_CONVERT" in os.environ,
reason="PAPERLESS_TEST_SKIP_CONVERT set, skipping Test",
)
def test_generate_pdf_from_html(self):
"""
GIVEN:
- Fresh start
WHEN:
- pdf generation from html eml file is requested
THEN:
- gotenberg is called and the resulting file is returned and look as expected.
"""
class MailAttachmentMock:
def __init__(self, payload, content_id):
self.payload = payload
self.content_id = content_id
result = None
with open(os.path.join(self.SAMPLE_FILES, "sample.html")) as html_file:
with open(os.path.join(self.SAMPLE_FILES, "sample.png"), "rb") as png_file:
html = html_file.read()
png = png_file.read()
attachments = [
MailAttachmentMock(png, "part1.pNdUSz0s.D3NqVtPg@example.de"),
]
result = self.parser.generate_pdf_from_html(html, attachments)
pdf_path = os.path.join(self.parser.tempdir, "sample.html.pdf")
with open(pdf_path, "wb") as file:
file.write(result)
converted = os.path.join(self.parser.tempdir, "sample.html.pdf.webp")
run_convert(
density=300,
scale="500x5000>",
alpha="remove",
strip=True,
trim=False,
auto_orient=True,
input_file=f"{pdf_path}", # Do net define an index to convert all pages.
output_file=converted,
logging_group=None,
)
self.assertTrue(os.path.isfile(converted))
thumb_hash = self.imagehash(converted)
# The created pdf is not reproducible. But the converted image should always look the same.
expected_hash = self.imagehash(
os.path.join(self.SAMPLE_FILES, "sample.html.pdf.webp"),
)
self.assertEqual(
thumb_hash,
expected_hash,
f"PDF looks different. Check if {converted} looks weird. "
f"If Rick Astley is shown, Gotenberg loads from web which is bad for Mail content.",
)
@pytest.mark.skipif(
"GOTENBERG_LIVE" not in os.environ,
reason="No gotenberg server",
)
def test_online_image_exception_on_not_available(self):
"""
GIVEN:
- Fresh start
WHEN:
- nonexistent image is requested
THEN:
- An exception shall be thrown
"""
"""
A public image is used in the html sample file. We have no control
whether this image stays online forever, so here we check if we can detect if is not
available anymore.
"""
# Start by Testing if nonexistent URL really throws an Exception
self.assertRaises(
HTTPError,
urlopen,
"https://upload.wikimedia.org/wikipedia/en/f/f7/nonexistent.png",
)
@pytest.mark.skipif(
"GOTENBERG_LIVE" not in os.environ,
reason="No gotenberg server",
)
def test_is_online_image_still_available(self):
"""
GIVEN:
- Fresh start
WHEN:
- A public image used in the html sample file is requested
THEN:
- No exception shall be thrown
"""
"""
A public image is used in the html sample file. We have no control
whether this image stays online forever, so here we check if it is still there
"""
# Now check the URL used in samples/sample.html
urlopen("https://upload.wikimedia.org/wikipedia/en/f/f7/RickRoll.png")

View File

@@ -0,0 +1,41 @@
from paperless.views import StandardPagination
from paperless_mail.models import MailAccount
from paperless_mail.models import MailRule
from paperless_mail.serialisers import MailAccountSerializer
from paperless_mail.serialisers import MailRuleSerializer
from rest_framework.permissions import IsAuthenticated
from rest_framework.viewsets import ModelViewSet
class MailAccountViewSet(ModelViewSet):
model = MailAccount
queryset = MailAccount.objects.all().order_by("pk")
serializer_class = MailAccountSerializer
pagination_class = StandardPagination
permission_classes = (IsAuthenticated,)
# TODO: user-scoped
# def get_queryset(self):
# user = self.request.user
# return MailAccount.objects.filter(user=user)
# def perform_create(self, serializer):
# serializer.save(user=self.request.user)
class MailRuleViewSet(ModelViewSet):
model = MailRule
queryset = MailRule.objects.all().order_by("pk")
serializer_class = MailRuleSerializer
pagination_class = StandardPagination
permission_classes = (IsAuthenticated,)
# TODO: user-scoped
# def get_queryset(self):
# user = self.request.user
# return MailRule.objects.filter(user=user)
# def perform_create(self, serializer):
# serializer.save(user=self.request.user)

View File

@@ -1,3 +1,4 @@
import shutil
import subprocess
from django.conf import settings
@@ -7,10 +8,15 @@ from django.core.checks import Warning
def get_tesseract_langs():
with subprocess.Popen(["tesseract", "--list-langs"], stdout=subprocess.PIPE) as p:
stdout, stderr = p.communicate()
proc = subprocess.run(
[shutil.which("tesseract"), "--list-langs"],
capture_output=True,
)
return stdout.decode().strip().split("\n")[1:]
# Decode bytes to string, split on newlines, trim out the header
proc_lines = proc.stdout.decode("utf8", errors="ignore").strip().split("\n")[1:]
return [x.strip() for x in proc_lines]
@register()

View File

@@ -66,6 +66,7 @@ class RasterisedDocumentParser(DocumentParser):
"image/tiff",
"image/bmp",
"image/gif",
"image/webp",
]
def has_alpha(self, image):
@@ -95,7 +96,13 @@ class RasterisedDocumentParser(DocumentParser):
return None
def extract_text(self, sidecar_file, pdf_file):
if sidecar_file and os.path.isfile(sidecar_file):
# 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"
):
with open(sidecar_file) as f:
text = f.read()
@@ -142,7 +149,7 @@ class RasterisedDocumentParser(DocumentParser):
"input_file": input_file,
"output_file": output_file,
# need to use threads, since this will be run in daemonized
# processes by django-q.
# processes via the task library.
"use_threads": True,
"jobs": settings.THREADS_PER_WORKER,
"language": settings.OCR_LANGUAGE,
@@ -165,9 +172,11 @@ class RasterisedDocumentParser(DocumentParser):
if settings.OCR_MODE == "redo":
ocrmypdf_args["clean"] = True
else:
# --clean-final is not compatible with --redo-ocr
ocrmypdf_args["clean_final"] = True
if settings.OCR_DESKEW and not settings.OCR_MODE == "redo":
if settings.OCR_DESKEW and settings.OCR_MODE != "redo":
# --deskew is not compatible with --redo-ocr
ocrmypdf_args["deskew"] = True
if settings.OCR_ROTATE_PAGES:
@@ -263,7 +272,7 @@ class RasterisedDocumentParser(DocumentParser):
# Either no text was in the original or there should be an archive
# file created, so OCR the file and create an archive with any
# test located via OCR
# text located via OCR
import ocrmypdf
from ocrmypdf import InputFileError, EncryptedPdfError

View File

@@ -15,5 +15,6 @@ def tesseract_consumer_declaration(sender, **kwargs):
"image/tiff": ".tif",
"image/gif": ".gif",
"image/bmp": ".bmp",
"image/webp": ".webp",
},
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

View File

@@ -27,3 +27,40 @@ class TestChecks(TestCase):
msgs = check_default_language_available(None)
self.assertEqual(len(msgs), 1)
self.assertEqual(msgs[0].level, ERROR)
@override_settings(OCR_LANGUAGE="chi_sim")
@mock.patch("paperless_tesseract.checks.get_tesseract_langs")
def test_multi_part_language(self, m):
"""
GIVEN:
- An OCR language which is multi part (ie chi-sim)
- The language is correctly formatted
WHEN:
- Installed packages are checked
THEN:
- No errors are reported
"""
m.return_value = ["chi_sim", "eng"]
msgs = check_default_language_available(None)
self.assertEqual(len(msgs), 0)
@override_settings(OCR_LANGUAGE="chi-sim")
@mock.patch("paperless_tesseract.checks.get_tesseract_langs")
def test_multi_part_language_bad_format(self, m):
"""
GIVEN:
- An OCR language which is multi part (ie chi-sim)
- The language is correctly NOT formatted
WHEN:
- Installed packages are checked
THEN:
- No errors are reported
"""
m.return_value = ["chi_sim", "eng"]
msgs = check_default_language_available(None)
self.assertEqual(len(msgs), 1)
self.assertEqual(msgs[0].level, ERROR)

View File

@@ -37,6 +37,9 @@ class FakeImageFile(ContextManager):
class TestParser(DirectoriesMixin, TestCase):
SAMPLE_FILES = os.path.join(os.path.dirname(__file__), "samples")
def assertContainsStrings(self, content, strings):
# Asserts that all strings appear in content, in the given order.
indices = []
@@ -47,14 +50,18 @@ class TestParser(DirectoriesMixin, TestCase):
self.fail(f"'{s}' is not in '{content}'")
self.assertListEqual(indices, sorted(indices))
text_cases = [
("simple string", "simple string"),
("simple newline\n testing string", "simple newline\ntesting string"),
("utf-8 строка с пробелами в конце ", "utf-8 строка с пробелами в конце"),
]
def test_post_process_text(self):
for source, result in self.text_cases:
text_cases = [
("simple string", "simple string"),
("simple newline\n testing string", "simple newline\ntesting string"),
(
"utf-8 строка с пробелами в конце ",
"utf-8 строка с пробелами в конце",
),
]
for source, result in text_cases:
actual_result = post_process_text(source)
self.assertEqual(
result,
@@ -66,8 +73,6 @@ class TestParser(DirectoriesMixin, TestCase):
),
)
SAMPLE_FILES = os.path.join(os.path.dirname(__file__), "samples")
def test_get_text_from_pdf(self):
parser = RasterisedDocumentParser(uuid.uuid4())
text = parser.extract_text(
@@ -461,6 +466,45 @@ class TestParser(DirectoriesMixin, TestCase):
self.assertIn("[OCR skipped on page(s) 4-6]", sidecar)
@override_settings(OCR_MODE="redo")
def test_single_page_mixed(self):
"""
GIVEN:
- File with some text contained in images and some in text layer
- Text and images are mixed on the same page
- OCR mode set to redo
WHEN:
- Document is parsed
THEN:
- Text from images is extracted
- Full content of the file is parsed (not just the image text)
- An archive file is created with the OCRd text and the original text
"""
parser = RasterisedDocumentParser(None)
parser.parse(
os.path.join(self.SAMPLE_FILES, "single-page-mixed.pdf"),
"application/pdf",
)
self.assertIsNotNone(parser.archive_path)
self.assertTrue(os.path.isfile(parser.archive_path))
self.assertContainsStrings(
parser.get_text().lower(),
[
"this is some normal text, present on page 1 of the document.",
"this is some text, but in an image, also on page 1.",
"this is further text on page 1.",
],
)
with open(os.path.join(parser.tempdir, "sidecar.txt")) as f:
sidecar = f.read().lower()
self.assertIn("this is some text, but in an image, also on page 1.", sidecar)
self.assertNotIn(
"this is some normal text, present on page 1 of the document.",
sidecar,
)
@override_settings(OCR_MODE="skip_noarchive")
def test_multi_page_mixed_no_archive(self):
"""
@@ -553,23 +597,34 @@ class TestParserFileTypes(DirectoriesMixin, TestCase):
parser = RasterisedDocumentParser(None)
parser.parse(os.path.join(self.SAMPLE_FILES, "simple.bmp"), "image/bmp")
self.assertTrue(os.path.isfile(parser.archive_path))
self.assertTrue("this is a test document" in parser.get_text().lower())
self.assertIn("this is a test document", parser.get_text().lower())
def test_jpg(self):
parser = RasterisedDocumentParser(None)
parser.parse(os.path.join(self.SAMPLE_FILES, "simple.jpg"), "image/jpeg")
self.assertTrue(os.path.isfile(parser.archive_path))
self.assertTrue("this is a test document" in parser.get_text().lower())
self.assertIn("this is a test document", parser.get_text().lower())
@override_settings(OCR_IMAGE_DPI=200)
def test_gif(self):
parser = RasterisedDocumentParser(None)
parser.parse(os.path.join(self.SAMPLE_FILES, "simple.gif"), "image/gif")
self.assertTrue(os.path.isfile(parser.archive_path))
self.assertTrue("this is a test document" in parser.get_text().lower())
self.assertIn("this is a test document", parser.get_text().lower())
def test_tiff(self):
parser = RasterisedDocumentParser(None)
parser.parse(os.path.join(self.SAMPLE_FILES, "simple.tif"), "image/tiff")
self.assertTrue(os.path.isfile(parser.archive_path))
self.assertTrue("this is a test document" in parser.get_text().lower())
self.assertIn("this is a test document", parser.get_text().lower())
@override_settings(OCR_IMAGE_DPI=72)
def test_webp(self):
parser = RasterisedDocumentParser(None)
parser.parse(os.path.join(self.SAMPLE_FILES, "document.webp"), "image/webp")
self.assertTrue(os.path.isfile(parser.archive_path))
# OCR consistent mangles this space, oh well
self.assertIn(
"this is awebp document, created 11/14/2022.",
parser.get_text().lower(),
)