Compare commits

..

80 Commits

Author SHA1 Message Date
jonaswinkler
a3c4e4c6b6 install script: configure time zone 2021-04-06 21:46:18 +02:00
jonaswinkler
645297d68c documentation 2021-04-06 21:46:16 +02:00
Jonas Winkler
6d8782f771 Merge pull request #860 from shamoon/feature/issue-858
Suppport search term PDF open parameter
2021-04-06 20:28:53 +02:00
Jonas Winkler
2728183eee New Crowdin updates (#871) 2021-04-06 20:23:18 +02:00
Michael Shamoon
3d0891c73b Updated to work with new unified search interface 2021-04-05 16:35:15 -07:00
Michael Shamoon
8226a8793e Merge remote-tracking branch 'upstream/dev' into feature/issue-858 2021-04-05 13:59:21 -07:00
jonaswinkler
d01477b337 changelog 2021-04-05 22:23:11 +02:00
jonaswinkler
6bb07c72ab API search documentation 2021-04-05 22:19:42 +02:00
jonaswinkler
a009462b80 update messages 2021-04-05 22:05:26 +02:00
jonaswinkler
9111b130e4 Merge branch 'dev' of github.com:jonaswinkler/paperless-ng into dev 2021-04-05 21:53:39 +02:00
jonaswinkler
1dbd7b9bb4 fix some issues with the search index 2021-04-05 21:53:07 +02:00
Jonas Winkler
2f95dfc0e7 New Crowdin updates (#855) 2021-04-05 21:44:14 +02:00
Jonas Winkler
acc317ddfd Merge pull request #818 from shamoon/fix/issue-817
Support passing current term from tag / document type / correspondent search field to 'create new' dialog
2021-04-05 21:43:50 +02:00
jonaswinkler
1fbd3935ea focus text filter input automatically 2021-04-05 21:43:20 +02:00
jonaswinkler
ca2bf962e9 force update of search index if out of date 2021-04-05 21:33:17 +02:00
jonaswinkler
1d27a3a14b fixed the write permission check 2021-04-05 21:33:04 +02:00
jonaswinkler
8e1a9dde05 bugfix 2021-04-05 21:05:32 +02:00
Michael Shamoon
8eabf8c77a Refactor unneeded ngIf 2021-04-04 19:57:16 -07:00
Michael Shamoon
ec4ec41552 Add back plus button which retains filter text 2021-04-04 17:05:27 -07:00
jonaswinkler
8960b0300f changelog and version bump 2021-04-05 00:36:44 +02:00
jonaswinkler
d6a2672cab Merge branch 'feature-unified-search' into dev 2021-04-05 00:25:10 +02:00
jonaswinkler
4b281ca89d logging before executing pre and post consume scripts 2021-04-05 00:22:11 +02:00
jonaswinkler
808b507b0f fix migration 2021-04-05 00:16:50 +02:00
jonaswinkler
ab47d03e1a update messages 2021-04-04 20:46:25 +02:00
jonaswinkler
aca999090b Merge branch 'dev' into feature-unified-search 2021-04-04 20:41:29 +02:00
jonaswinkler
1322aaf4da add migration to fix null characters in document contents 2021-04-04 20:41:08 +02:00
jonaswinkler
c49471fb3b bugfix 2021-04-04 01:25:54 +02:00
jonaswinkler
d13baab0a6 more testing 2021-04-04 01:19:07 +02:00
jonaswinkler
359b46c15b fixed the test cases 2021-04-04 00:29:40 +02:00
jonaswinkler
3b83e9a43d pycodestyle 2021-04-04 00:04:00 +02:00
jonaswinkler
ab7a499e8f refactor filter reset 2021-04-04 00:03:51 +02:00
jonaswinkler
fffe4f694f reset page when doing full text search 2021-04-03 22:19:12 +02:00
Michael Shamoon
18c028cafd Suppport search term PDF open parameter 2021-04-03 13:10:39 -07:00
jonaswinkler
4e289c7dab rename search 2021-04-03 21:56:33 +02:00
jonaswinkler
3dfe5c9262 fix page out of range with full text 2021-04-03 21:50:23 +02:00
jonaswinkler
be87caf7f6 fix search scores 2021-04-03 21:50:05 +02:00
jonaswinkler
b7063b199a disable sorting for now 2021-04-03 21:49:31 +02:00
jonaswinkler
1ed9c245f5 fixed more like this 2021-04-03 21:07:36 +02:00
jonaswinkler
fb1e9fe66a error messages for invalid search queries 2021-04-03 21:02:33 +02:00
jonaswinkler
38a386d5ae fix date filtering for full text search 2021-04-03 21:02:13 +02:00
jonaswinkler
726114575e Merge branch 'dev' into feature-unified-search 2021-04-03 20:31:16 +02:00
Michael Shamoon
026c213ea4 Refactor to use ng-select addTag function 2021-04-03 09:30:29 -07:00
jonaswinkler
cd85d4e86a update tooltips and messages 2021-04-02 14:59:02 +02:00
jonaswinkler
e906bf58f0 Save list view state across sessions 2021-04-02 14:46:45 +02:00
jonaswinkler
87d2209e6d update dependencies 2021-04-02 14:26:20 +02:00
jonaswinkler
704f8ea680 update dependencies 2021-04-02 14:21:05 +02:00
Jonas Winkler
1e101fb3db Merge pull request #842 from Bart1909/master
Implements #807
2021-04-02 14:08:01 +02:00
Jonas Winkler
a16643ee29 New Crowdin updates (#847) 2021-04-02 10:47:11 +02:00
Tobi
b783e0e211 refactoring 2021-03-30 20:51:49 +02:00
Tobi
1ec4570c8d renames document-asn component 2021-03-30 19:26:20 +02:00
Tobi
434194d290 Merge remote-tracking branch 'origin/master' 2021-03-30 19:07:44 +02:00
Tobi
f62e64357b implements #807 2021-03-30 19:07:29 +02:00
Jonas Winkler
b9f49c5eca Merge pull request #834 from benjaminfrank/patch-1
New android scanner app recommendation
2021-03-30 00:42:28 +02:00
Jonas Winkler
13a839de57 New Crowdin updates (#837) 2021-03-30 00:42:06 +02:00
benjaminfrank
7eb4253c00 Update scanners.rst 2021-03-27 14:40:13 +01:00
Jonas Winkler
dab210a183 Merge pull request #819 from shamoon/fix/issue-293-2
Remove all rem units on SVG elements
2021-03-26 23:13:06 +01:00
Jonas Winkler
5319d4782a New translations django.po (Italian) (#813) 2021-03-26 23:12:36 +01:00
Michael Shamoon
0463c3fe54 1.3em not 1.5em 2021-03-24 16:21:08 -07:00
Michael Shamoon
fe84430679 Remove all rem units on SVG elements
See https://bugzilla.mozilla.org/show_bug.cgi?id=1231147
2021-03-24 16:17:40 -07:00
Michael Shamoon
9514e79bfb Not needed, clearing will be done by timeout 2021-03-24 12:42:14 -07:00
Michael Shamoon
b6756595d9 Clear last search term when clear button clicked 2021-03-24 12:37:26 -07:00
Michael Shamoon
8ddb3e80b7 Add timeout for clearing last search term on select blur 2021-03-24 12:21:51 -07:00
Michael Shamoon
52bc1a62e1 Support passing current term from input-select search to create dialog e.g. for doc type / correspondent 2021-03-24 12:21:13 -07:00
Michael Shamoon
cd72ed2cec Support passing current term from tag search to create dialog 2021-03-24 12:13:37 -07:00
Jonas Winkler
ccaee4ce62 Update README.md 2021-03-24 10:31:05 +01:00
jonaswinkler
0e596bd1fc also apply \0 removal to sidecar contents 2021-03-22 23:08:34 +01:00
Jonas Winkler
21fafd3255 Update README.md 2021-03-22 23:03:01 +01:00
jonaswinkler
fda2bfbea7 better exception logging 2021-03-22 23:00:15 +01:00
jonaswinkler
d26c46e034 fixes #794 2021-03-22 22:46:35 +01:00
jonaswinkler
27cb243a2f fix dependencies 2021-03-21 13:50:48 +01:00
jonaswinkler
d3514fc5f9 update dependencies 2021-03-21 12:20:10 +01:00
jonaswinkler
4954851b68 Revert "update requirements"
This reverts commit 8f6e1360
2021-03-21 11:43:16 +01:00
Jonas Winkler
6bcb12ddc9 Merge pull request #796 from holzhannes/patch-2
Three new scanners, one iOS App and column for SMTP Support
2021-03-20 12:15:33 +01:00
HolzHannes
126a4ec21f Update scanners.rst
Some new scanners and a new Support column SMTP for Scanner which can directly send mails via SMTP. Also one iOS App to scan documents
2021-03-20 11:10:05 +01:00
Jonas Winkler
0aa084c792 New Crowdin updates (#790) 2021-03-18 23:50:54 +01:00
jonaswinkler
8f6e1360e1 update requirements 2021-03-18 23:49:49 +01:00
jonaswinkler
740237a8fa add migration 2021-03-17 22:33:00 +01:00
jonaswinkler
b6ff88645b lots of changes for the new unified search 2021-03-17 22:25:22 +01:00
jonaswinkler
630cd814e2 Merge branch 'dev' into feature-unified-search 2021-03-16 20:48:05 +01:00
jonaswinkler
f9263ddb62 some initial attempts to merge search and document list 2021-03-07 13:16:23 +01:00
94 changed files with 3509 additions and 3234 deletions

View File

@@ -11,25 +11,27 @@ RUN ./configure && make
FROM python:3.7-slim FROM python:3.7-slim
# Binary dependencies # Binary dependencies
RUN apt-get update \ RUN echo "deb http://deb.debian.org/debian bullseye main" > /etc/apt/sources.list.d/bullseye.list \
&& apt-get update \
&& apt-get -y --no-install-recommends install \ && apt-get -y --no-install-recommends install \
# Basic dependencies # Basic dependencies
curl \ curl \
file \
# fonts for text file thumbnail generation
fonts-liberation \
# for making translations further down
gettext \
gnupg \ gnupg \
imagemagick \ imagemagick \
gettext \
sudo \
tzdata \
# fonts for text file thumbnail generation
fonts-liberation \
# for Numpy # for Numpy
libatlas-base-dev \ libatlas-base-dev \
libxslt1-dev \ libxslt1-dev \
mime-support \
# thumbnail size reduction # thumbnail size reduction
optipng \ optipng \
sudo \ # Mime type detection
tzdata \ file \
libmagic-dev \
media-types \
# OCRmyPDF dependencies # OCRmyPDF dependencies
ghostscript \ ghostscript \
icc-profiles-free \ icc-profiles-free \
@@ -45,14 +47,7 @@ RUN apt-get update \
tesseract-ocr-spa \ tesseract-ocr-spa \
unpaper \ unpaper \
zlib1g \ zlib1g \
&& rm -rf /var/lib/apt/lists/*
# This pulls in updated dependencies from bullseye to fix some issues with file type detection.
# TODO: Remove this once bullseye releases.
&& echo "deb http://deb.debian.org/debian bullseye main" > /etc/apt/sources.list.d/bullseye.list \
&& apt-get update \
&& apt-get install --no-install-recommends -y file libmagic-dev \
&& rm -rf /var/lib/apt/lists/* \
&& rm /etc/apt/sources.list.d/bullseye.list
# copy jbig2enc # copy jbig2enc
COPY --from=jbig2enc /usr/src/jbig2enc/src/.libs/libjbig2enc* /usr/local/lib/ COPY --from=jbig2enc /usr/src/jbig2enc/src/.libs/libjbig2enc* /usr/local/lib/

View File

@@ -24,9 +24,8 @@ langdetect = "*"
# numpy 1.20.0 drops python 3.6 support # numpy 1.20.0 drops python 3.6 support
numpy = "~=1.19.5" numpy = "~=1.19.5"
pathvalidate = "*" pathvalidate = "*"
# pinned to 8.1.0, since aarch64 wheels might not be available beyond that https://github.com/python-pillow/Pillow/issues/5202 pillow = "~=8.1"
pillow = "==8.1.0" pikepdf = "~=2.5"
pikepdf = "~=2.5.0"
python-gnupg = "*" python-gnupg = "*"
python-dotenv = "*" python-dotenv = "*"
python-dateutil = "*" python-dateutil = "*"
@@ -52,7 +51,6 @@ uvicorn = {extras = ["standard"], version = "*"}
concurrent-log-handler = "*" concurrent-log-handler = "*"
# uvloop 0.15+ incompatible with python 3.6 # uvloop 0.15+ incompatible with python 3.6
uvloop = "~=0.14.0" uvloop = "~=0.14.0"
# TODO: keep an eye on piwheel builds and update this once available (https://www.piwheels.org/project/cryptography/)
cryptography = "~=3.4" cryptography = "~=3.4"
"pdfminer.six" = "*" "pdfminer.six" = "*"

827
Pipfile.lock generated

File diff suppressed because it is too large Load Diff

View File

@@ -12,12 +12,12 @@
Paperless-ng is a fork of the original project, adding a new interface and many other changes under the hood. These key points should help you decide whether Paperless-ng is something you would prefer over Paperless: Paperless-ng is a fork of the original project, adding a new interface and many other changes under the hood. These key points should help you decide whether Paperless-ng is something you would prefer over Paperless:
* Interface: The new front end is the main interface for paperless-ng, the old interface still exists but most customizations (such as thumbnails for the document list) have been removed. * Interface: The new front end is the main interface for Paperless-ng, the old interface still exists but most customizations (such as thumbnails for the document list) have been removed.0
* Encryption: Paperless-ng does not support GnuPG anymore, since storing your data on encrypted file systems (that you optionally mount on demand) achieves about the same result. * Encryption: Paperless-ng does not support GnuPG anymore, since storing your data on encrypted file systems (that you optionally mount on demand) achieves about the same result.
* Resource usage: Paperless-ng does use a bit more resources than Paperless. Running the web server requires about 300MB of RAM or more, depending on the configuration. While adding documents, it requires about 300MB additional RAM, depending on the document. It still runs on Pi (many users do that), but it has been generally geared to better use the resources of more powerful systems. * Resource usage: Paperless-ng does use a bit more resources than Paperless. Running the web server requires about 300MB of RAM or more, depending on the configuration. While adding documents, it requires about 300MB additional RAM, depending on the document. It still runs on Raspberry Pi (many users do that), but it has been generally geared to better use the resources of more powerful systems.
* API changes: If you rely on the REST API of paperless, some of its functionality has been changed. * API changes: If you rely on the REST API of paperless, some of its functionality has been changed.
For a detailed list of changes, have a look at the [change log](https://paperless-ng.readthedocs.io/en/latest/changelog.html) in the documentation. For a detailed list of changes, have a look at the [change log](https://paperless-ng.readthedocs.io/en/latest/changelog.html) in the documentation, especially the section about the [0.9.0 release](https://paperless-ng.readthedocs.io/en/latest/changelog.html#paperless-ng-0-9-0).
# How it Works # How it Works
@@ -25,7 +25,7 @@ Paperless does not control your scanner, it only helps you deal with what your s
1. Buy a document scanner that can write to a place on your network. If you need some inspiration, have a look at the [scanner recommendations](https://paperless-ng.readthedocs.io/en/latest/scanners.html) page. Set it up to "scan to FTP" or something similar. It should be able to push scanned images to a server without you having to do anything. Of course if your scanner doesn't know how to automatically upload the file somewhere, you can always do that manually. Paperless doesn't care how the documents get into its local consumption directory. 1. Buy a document scanner that can write to a place on your network. If you need some inspiration, have a look at the [scanner recommendations](https://paperless-ng.readthedocs.io/en/latest/scanners.html) page. Set it up to "scan to FTP" or something similar. It should be able to push scanned images to a server without you having to do anything. Of course if your scanner doesn't know how to automatically upload the file somewhere, you can always do that manually. Paperless doesn't care how the documents get into its local consumption directory.
- Alternatively, you can use any of the mobile scanning apps out there. We have an app that allows you to share documents with paperless, if you're on Android. See the section on affiliated projects. - Alternatively, you can use any of the mobile scanning apps out there. We have an app that allows you to share documents with paperless, if you're on Android. See the section on affiliated projects below.
2. Wait for paperless to process your files. OCR is expensive, and depending on the power of your machine, this might take a bit of time. 2. Wait for paperless to process your files. OCR is expensive, and depending on the power of your machine, this might take a bit of time.
3. Use the web frontend to sift through the database and find what you want. 3. Use the web frontend to sift through the database and find what you want.
@@ -35,6 +35,8 @@ Here's what you get:
![Dashboard](https://github.com/jonaswinkler/paperless-ng/raw/master/docs/_static/screenshots/dashboard.png) ![Dashboard](https://github.com/jonaswinkler/paperless-ng/raw/master/docs/_static/screenshots/dashboard.png)
If you want to see paperless-ng in action, [more screenshots are available in the documentation](https://paperless-ng.readthedocs.io/en/latest/screenshots.html).
# Features # Features
* Performs OCR on your documents, adds selectable text to image only documents and adds tags, correspondents and document types to your documents. * Performs OCR on your documents, adds selectable text to image only documents and adds tags, correspondents and document types to your documents.
@@ -58,19 +60,17 @@ Here's what you get:
* Optimized for multi core systems: Paperless-ng consumes multiple documents in parallel. * Optimized for multi core systems: Paperless-ng consumes multiple documents in parallel.
* The integrated sanity checker makes sure that your document archive is in good health. * The integrated sanity checker makes sure that your document archive is in good health.
If you want to see some screenshots of paperless-ng in action, [some are available in the documentation](https://paperless-ng.readthedocs.io/en/latest/screenshots.html).
# Getting started # Getting started
The recommended way to deploy paperless is docker-compose. The files in the /docker/hub directory are configured to pull the image from Docker Hub. The recommended way to deploy paperless is docker-compose. The files in the /docker/hub directory are configured to pull the image from Docker Hub.
Read the [documentation](https://paperless-ng.readthedocs.io/en/latest/setup.html#installation) on how to get started. Read the [documentation](https://paperless-ng.readthedocs.io/en/latest/setup.html#installation) on how to get started.
Alternatively, you can install the dependencies and setup apache and a database server yourself. The documenation has a step by step guide on how to do it. Alternatively, you can install the dependencies and setup apache and a database server yourself. The documenation has a step by step guide on how to do it. Consider giving the Ansible role a shot, this essentially automates the entire bare metal installation process.
# Migrating to paperless-ng # Migrating from Paperless to Paperless-ng
Read the section about [migration](https://paperless-ng.readthedocs.io/en/latest/setup.html#migration-to-paperless-ng) in the documentation. Its also entirely possible to go back to paperless by reverting the database migrations. Read the section about [migration](https://paperless-ng.readthedocs.io/en/latest/setup.html#migration-to-paperless-ng) in the documentation. Its also entirely possible to go back to Paperless by reverting the database migrations.
# Documentation # Documentation
@@ -78,9 +78,7 @@ The documentation for Paperless-ng is available on [ReadTheDocs](https://paperle
# Translation # Translation
Paperless is currently available in English, German, Dutch, French, Portuguese, Italian, and Romanian. Paperless is available in many different languages. Translation is coordinated at crowdin. If you want to help out by translating paperless into your language, please head over to https://github.com/jonaswinkler/paperless-ng/issues/212 for details!
There's an active translation project at crowdin! If you want to help out by translating paperless into your language, please head over to https://github.com/jonaswinkler/paperless-ng/issues/212 for details.
# Feature Requests # Feature Requests
@@ -94,7 +92,7 @@ For bugs please [open an issue](https://github.com/jonaswinkler/paperless-ng/iss
There's still lots of things to be done, just have a look at open issues & discussions. If you feel like contributing to the project, please do! Bug fixes and improvements to the front end (I just can't seem to get some of these CSS things right) are always welcome. The documentation has some basic information on how to get started. There's still lots of things to be done, just have a look at open issues & discussions. If you feel like contributing to the project, please do! Bug fixes and improvements to the front end (I just can't seem to get some of these CSS things right) are always welcome. The documentation has some basic information on how to get started.
If you want to implement something big: Please start a discussion about that in the issues! Maybe I've already had something similar in mind and we can make it happen together. However, keep in mind that the general roadmap is to make the existing features stable and get them tested. See the roadmap above. If you want to implement something big: Please start a discussion about that! Maybe I've already had something similar in mind and we can make it happen together. However, keep in mind that the general roadmap is to make the existing features stable and get them tested.
# Affiliated Projects # Affiliated Projects

View File

@@ -68,6 +68,17 @@ migrations() {
} }
search_index() {
index_version=1
index_version_file=/usr/src/paperless/data/.index_version
if [[ (! -f "$index_version_file") || $(< $index_version_file) != "$index_version" ]]; then
echo "Search index out of date. Updating..."
sudo -HEu paperless python3 manage.py document_index reindex
echo $index_version | sudo -HEu paperless tee $index_version_file >/dev/null
fi
}
initialize() { initialize() {
map_uidgid map_uidgid
@@ -87,6 +98,7 @@ initialize() {
migrations migrations
search_index
} }
install_languages() { install_languages() {

View File

@@ -193,7 +193,9 @@ This table lists the compatible versions for each database migration number.
+------------------+-----------------+ +------------------+-----------------+
| 1012 | 1.1.0 - 1.2.1 | | 1012 | 1.1.0 - 1.2.1 |
+------------------+-----------------+ +------------------+-----------------+
| 1014 | 1.3.0 - current | | 1014 | 1.3.0 - 1.3.1 |
+------------------+-----------------+
| 1016 | 1.3.2 - current |
+------------------+-----------------+ +------------------+-----------------+
Execute the following management command to migrate your database: Execute the following management command to migrate your database:

View File

@@ -147,93 +147,57 @@ The REST api provides three different forms of authentication.
Searching for documents Searching for documents
####################### #######################
Paperless-ng offers API endpoints for full text search. These are as follows: Full text searching is available on the ``/api/documents/`` endpoint. Two specific
query parameters cause the API to return full text search results:
``/api/search/`` * ``/api/documents/?query=your%20search%20query``: Search for a document using a full text query.
================ For details on the syntax, see :ref:`basic-usage_searching`.
Get search results based on a query. * ``/api/documents/?more_like=1234``: Search for documents similar to the document with id 1234.
Query parameters: Pagination works exactly the same as it does for normal requests on this endpoint.
* ``query``: The query string. See Certain limitations apply to full text queries:
`here <https://whoosh.readthedocs.io/en/latest/querylang.html>`_
for details on the syntax.
* ``page``: Specify the page you want to retrieve. Each page
contains 10 search results and the first page is ``page=1``, which
is the default if this is omitted.
Result list object returned by the endpoint: * Results are always sorted by search score. The results matching the query best will show up first.
.. code:: json * Only a small subset of filtering parameters are supported.
Furthermore, each returned document has an additional ``__search_hit__`` attribute with various information
about the search results:
.. code::
{ {
"count": 1, "count": 31,
"page": 1, "next": "http://localhost:8000/api/documents/?page=2&query=test",
"page_count": 1, "previous": null,
"corrected_query": "",
"results": [ "results": [
...
{
"id": 123,
"title": "title",
"content": "content",
...
"__search_hit__": {
"score": 0.343,
"highlights": "text <span class=\"match\">Test</span> text",
"rank": 23
}
},
...
] ]
} }
* ``count``: The approximate total number of results. * ``score`` is an indication how well this document matches the query relative to the other search results.
* ``page``: The page returned to you. This might be different from * ``highlights`` is an excerpt from the document content and highlights the search terms with ``<span>`` tags as shown above.
the page you requested, if you requested a page that is behind * ``rank`` is the index of the search results. The first result will have rank 0.
the last page. In that case, the last page is returned.
* ``page_count``: The total number of pages.
* ``corrected_query``: Corrected version of the query string. Can be null.
If not null, can be used verbatim to start a new query.
* ``results``: A list of result objects on the current page.
Result object:
.. code:: json
{
"id": 1,
"highlights": [
],
"score": 6.34234,
"rank": 23,
"document": {
}
}
* ``id``: the primary key of the found document
* ``highlights``: an object containing parsable highlights for the result.
See below.
* ``score``: The score assigned to the document. A higher score indicates a
better match with the query. Search results are sorted descending by score.
* ``rank``: the position of the document within the entire search results list.
* ``document``: The full json of the document, as returned by
``/api/documents/<id>/``.
Highlights object:
Highlights are provided as a list of fragments. A fragment is a longer section of
text from the original document.
Each fragment contains a list of strings, and some of them are marked as a highlight.
.. code:: json
[
[
{"text": "This is a sample text with a ", "highlight": false},
{"text": "highlighted", "highlight": true},
{"text": " word.", "highlight": false}
],
[
{"text": "Another", "highlight": true},
{"text": " fragment with a highlight.", "highlight": false}
]
]
A client may use this example to produce the following output:
... This is a sample text with a **highlighted** word. ... **Another** fragment with a highlight. ...
``/api/search/autocomplete/`` ``/api/search/autocomplete/``
============================= =============================

View File

@@ -5,6 +5,50 @@
Changelog Changelog
********* *********
paperless-ng 1.4.0
##################
* Docker images now use tesseract 4.1.1, which should fix a series of issues with OCR.
* The full text search now displays results using the default document list. This enables
selection, filtering and bulk edit on search results.
* Changes
* Firefox only: Highlight search query in PDF previews.
* New URL pattern for accessing documents by ASN directly (http://<paperless>/asn/123)
* Added logging when executing pre- and post-consume scripts.
* Better error logging during document consumption.
* Updated python dependencies.
* Automatically inserts typed text when opening "Create new" dialogs on the document details page.
* Fixes
* Fixed an issue with null characters in the document content.
.. note::
The changed to the full text searching require you to reindex your documents.
*The docker image does this automatically, you don't need to do anything.*
To do this, execute the ``document_index reindex`` management command
(see :ref:`administration-index`).
.. note::
Some packages that paperless depends on are slowly dropping Python 3.6
support one after another, including the web server. Supporting Python
3.6 means that I cannot update these packages anymore.
At some point, paperless will drop Python 3.6 support. If using a bare
metal installation and you're still on Python 3.6, upgrade to 3.7 or newer.
If using docker, this does not affect you.
paperless-ng 1.3.2 paperless-ng 1.3.2
################## ##################
@@ -108,17 +152,6 @@ paperless-ng 1.2.0
* Paperless no longer depends on ``libpoppler-cpp-dev``. * Paperless no longer depends on ``libpoppler-cpp-dev``.
.. note::
Some packages that paperless depends on are slowly dropping Python 3.6
support one after another, including the web server. Supporting Python
3.6 means that I cannot update these packages anymore.
At some point, paperless will drop Python 3.6 support. If using a bare
metal installation and you're still on Python 3.6, upgrade to 3.7 or newer.
If using docker, this does not affect you.
paperless-ng 1.1.4 paperless-ng 1.1.4
################## ##################

View File

@@ -13,26 +13,35 @@ that works right for you based on recommendations from other Paperless users.
Physical scanners Physical scanners
================= =================
+---------+----------------+-----+-----+-----+----------------+ +---------+----------------+-----+-----+-----+------+----------------+
| Brand | Model | Supports | Recommended By | | Brand | Model | Supports | Recommended By |
+---------+----------------+-----+-----+-----+----------------+ +---------+----------------+-----+-----+-----+------+----------------+
| | | FTP | NFS | SMB | | | | | FTP | NFS | SMB | SMTP | |
+=========+================+=====+=====+=====+================+ +=========+================+=====+=====+=====+======+================+
| Brother | `ADS-1500W`_ | yes | no | yes | `danielquinn`_ | | Brother | `ADS-1700W`_ | yes | no | yes | yes |`holzhannes`_ |
+---------+----------------+-----+-----+-----+----------------+ +---------+----------------+-----+-----+-----+------+----------------+
| Brother | `MFC-J6930DW`_ | yes | | | `ayounggun`_ | | Brother | `ADS-1600W`_ | yes | no | yes | yes |`holzhannes`_ |
+---------+----------------+-----+-----+-----+----------------+ +---------+----------------+-----+-----+-----+------+----------------+
| Brother | `MFC-J5910DW`_ | yes | | | `bmsleight`_ | | Brother | `ADS-1500W`_ | yes | no | yes | yes |`danielquinn`_ |
+---------+----------------+-----+-----+-----+----------------+ +---------+----------------+-----+-----+-----+------+----------------+
| Brother | `MFC-9142CDN`_ | yes | | yes | `REOLDEV`_ | | Brother | `MFC-J6930DW`_ | yes | | | |`ayounggun`_ |
+---------+----------------+-----+-----+-----+----------------+ +---------+----------------+-----+-----+-----+------+----------------+
| Fujitsu | `ix500`_ | yes | | yes | `eonist`_ | | Brother | `MFC-L5850DW`_ | yes | | | yes |`holzhannes`_ |
+---------+----------------+-----+-----+-----+----------------+ +---------+----------------+-----+-----+-----+------+----------------+
| Epson | `WF-7710DWF`_ | yes | | yes | `Skylinar`_ | | Brother | `MFC-J5910DW`_ | yes | | | |`bmsleight`_ |
+---------+----------------+-----+-----+-----+----------------+ +---------+----------------+-----+-----+-----+------+----------------+
| Fujitsu | `S1300i`_ | yes | | yes | `jonaswinkler`_| | Brother | `MFC-9142CDN`_ | yes | | yes | |`REOLDEV`_ |
+---------+----------------+-----+-----+-----+----------------+ +---------+----------------+-----+-----+-----+------+----------------+
| Fujitsu | `ix500`_ | yes | | yes | |`eonist`_ |
+---------+----------------+-----+-----+-----+------+----------------+
| Epson | `WF-7710DWF`_ | yes | | yes | |`Skylinar`_ |
+---------+----------------+-----+-----+-----+------+----------------+
| Fujitsu | `S1300i`_ | yes | | yes | |`jonaswinkler`_ |
+---------+----------------+-----+-----+-----+------+----------------+
.. _MFC-L5850DW: https://www.brother-usa.com/products/mfcl5850dw
.. _ADS-1700W: https://www.brother-usa.com/products/ads1700w
.. _ADS-1600W: https://www.brother-usa.com/products/ads1600w
.. _ADS-1500W: https://www.brother.ca/en/p/ads1500w .. _ADS-1500W: https://www.brother.ca/en/p/ads1500w
.. _MFC-J6930DW: https://www.brother.ca/en/p/MFCJ6930DW .. _MFC-J6930DW: https://www.brother.ca/en/p/MFCJ6930DW
.. _MFC-J5910DW: https://www.brother.co.uk/printers/inkjet-printers/mfcj5910dw .. _MFC-J5910DW: https://www.brother.co.uk/printers/inkjet-printers/mfcj5910dw
@@ -41,6 +50,7 @@ Physical scanners
.. _WF-7710DWF: https://www.epson.de/en/products/printers/inkjet-printers/for-home/workforce-wf-7710dwf .. _WF-7710DWF: https://www.epson.de/en/products/printers/inkjet-printers/for-home/workforce-wf-7710dwf
.. _S1300i: https://www.fujitsu.com/global/products/computing/peripheral/scanners/soho/s1300i/ .. _S1300i: https://www.fujitsu.com/global/products/computing/peripheral/scanners/soho/s1300i/
.. _danielquinn: https://github.com/danielquinn .. _danielquinn: https://github.com/danielquinn
.. _ayounggun: https://github.com/ayounggun .. _ayounggun: https://github.com/ayounggun
.. _bmsleight: https://github.com/bmsleight .. _bmsleight: https://github.com/bmsleight
@@ -48,25 +58,33 @@ Physical scanners
.. _REOLDEV: https://github.com/REOLDEV .. _REOLDEV: https://github.com/REOLDEV
.. _Skylinar: https://github.com/Skylinar .. _Skylinar: https://github.com/Skylinar
.. _jonaswinkler: https://github.com/jonaswinkler .. _jonaswinkler: https://github.com/jonaswinkler
.. _holzhannes: https://github.com/holzhannes
Mobile phone software Mobile phone software
===================== =====================
You can use your phone to "scan" documents. The regular camera app will work, but may have too low contrast for OCR to work well. Apps specifically for scanning are recommended. You can use your phone to "scan" documents. The regular camera app will work, but may have too low contrast for OCR to work well. Apps specifically for scanning are recommended.
+-------------------+----------------+-----+-----+-----+-------+--------+----------------+ +-------------------+----------------+-----+-----+-----+-------+--------+------------------+
| Name | OS | Supports | Recommended By | | Name | OS | Supports | Recommended By |
+-------------------+----------------+-----+-----+-----+-------+--------+----------------+ +-------------------+----------------+-----+-----+-----+-------+--------+------------------+
| | | FTP | NFS | SMB | Email | WebDav | | | | | FTP | NFS | SMB | Email | WebDav | |
+===================+================+=====+=====+=====+=======+========+================+ +===================+================+=====+=====+=====+=======+========+==================+
| `Office Lens`_ | Android | ? | ? | ? | ? | ? | `jonaswinkler`_| | `Office Lens`_ | Android | ? | ? | ? | ? | ? | `jonaswinkler`_ |
+-------------------+----------------+-----+-----+-----+-------+--------+----------------+ +-------------------+----------------+-----+-----+-----+-------+--------+------------------+
| `Genius Scan`_ | Android | yes | no | yes | yes | yes | `hannahswain`_ | | `Genius Scan`_ | Android | yes | no | yes | yes | yes | `hannahswain`_ |
+-------------------+----------------+-----+-----+-----+-------+--------+----------------+ +-------------------+----------------+-----+-----+-----+-------+--------+------------------+
| `OpenScan`_ | Android | no | no | no | no | no | `benjaminfrank`_ |
+-------------------+----------------+-----+-----+-----+-------+--------+------------------+
| `Quick Scan`_ | iOS | no | no | no | no | no | `holzhannes`_ |
+-------------------+----------------+-----+-----+-----+-------+--------+------------------+
On Android, you can use these applications in combination with one of the :ref:`Paperless-ng compatible apps <usage-mobile_upload>` to "Share" the documents produced by these scanner apps with paperless. On Android, you can use these applications in combination with one of the :ref:`Paperless-ng compatible apps <usage-mobile_upload>` to "Share" the documents produced by these scanner apps with paperless. On iOS, you can share the scanned documents via iOS-Sharing to other mail, WebDav or FTP apps.
.. _Office Lens: https://play.google.com/store/apps/details?id=com.microsoft.office.officelens .. _Office Lens: https://play.google.com/store/apps/details?id=com.microsoft.office.officelens
.. _Genius Scan: https://play.google.com/store/apps/details?id=com.thegrizzlylabs.geniusscan.free .. _Genius Scan: https://play.google.com/store/apps/details?id=com.thegrizzlylabs.geniusscan.free
.. _Quick Scan: https://apps.apple.com/us/app/quickscan-scanner-text-ocr/id1513790291
.. _OpenScan: https://github.com/Ethereal-Developers-Inc/OpenScan
.. _hannahswain: https://github.com/hannahswain .. _hannahswain: https://github.com/hannahswain
.. _benjaminfrank: https://github.com/benjaminfrank

View File

@@ -255,6 +255,8 @@ Here are a couple examples of tags and types that you could use in your collecti
* A tag ``missing_metadata`` when you still need to add some metadata to a document, but can't * A tag ``missing_metadata`` when you still need to add some metadata to a document, but can't
or don't want to do this right now. or don't want to do this right now.
.. _basic-usage_searching:
Searching Searching
######### #########

View File

@@ -62,7 +62,7 @@ if [[ -z $(which docker-compose) ]] ; then
exit 1 exit 1
fi fi
# Check if user has permissions to run Docker by trying to get the status of Docker (docker status). # Check if user has permissions to run Docker by trying to get the status of Docker (docker status).
# If this fails, the user probably does not have permissions for Docker. # If this fails, the user probably does not have permissions for Docker.
docker stats --no-stream 2>/dev/null 1>&2 docker stats --no-stream 2>/dev/null 1>&2
if [ $? -ne 0 ] ; then if [ $? -ne 0 ] ; then
@@ -73,6 +73,8 @@ if [ $? -ne 0 ] ; then
sleep 3 sleep 3
fi fi
default_time_zone=$(timedatectl show -p Timezone --value)
set -e set -e
echo "" echo ""
@@ -145,6 +147,15 @@ echo ""
ask "Port" "8000" ask "Port" "8000"
PORT=$ask_result PORT=$ask_result
echo ""
echo "Paperless requires you to configure the current time zone correctly."
echo "Otherwise, the dates of your documents may appear off by one day,"
echo "depending on where you are on earth."
echo ""
ask "Current time zone" "$default_time_zone"
TIME_ZONE=$ask_result
echo "" echo ""
echo "Database backend: PostgreSQL and SQLite are available. Use PostgreSQL" echo "Database backend: PostgreSQL and SQLite are available. Use PostgreSQL"
echo "if unsure. If you're running on a low-power device such as Raspberry" echo "if unsure. If you're running on a low-power device such as Raspberry"
@@ -280,6 +291,7 @@ DEFAULT_LANGUAGES="deu eng fra ita spa"
if [[ ! $USERMAP_GID == "1000" ]] ; then if [[ ! $USERMAP_GID == "1000" ]] ; then
echo "USERMAP_GID=$USERMAP_GID" echo "USERMAP_GID=$USERMAP_GID"
fi fi
echo "PAPERLESS_ZIME_ZONE=$TIME_ZONE"
echo "PAPERLESS_OCR_LANGUAGE=$OCR_LANGUAGE" echo "PAPERLESS_OCR_LANGUAGE=$OCR_LANGUAGE"
echo "PAPERLESS_SECRET_KEY=$SECRET_KEY" echo "PAPERLESS_SECRET_KEY=$SECRET_KEY"
if [[ ! " ${DEFAULT_LANGUAGES[@]} " =~ " ${OCR_LANGUAGE} " ]] ; then if [[ ! " ${DEFAULT_LANGUAGES[@]} " =~ " ${OCR_LANGUAGE} " ]] ; then

View File

@@ -8,11 +8,11 @@
-i https://pypi.python.org/simple -i https://pypi.python.org/simple
--extra-index-url https://www.piwheels.org/simple --extra-index-url https://www.piwheels.org/simple
aioredis==1.3.1 aioredis==1.3.1
arrow==1.0.1; python_version >= '3.6' arrow==1.0.3; python_version >= '3.6'
asgiref==3.3.1; python_version >= '3.5' asgiref==3.3.1; python_version >= '3.5'
async-timeout==3.0.1; python_full_version >= '3.5.3' async-timeout==3.0.1; python_full_version >= '3.5.3'
attrs==20.3.0; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3' attrs==20.3.0; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'
autobahn==21.2.2; python_version >= '3.7' autobahn==21.3.1; python_version >= '3.7'
automat==20.2.0 automat==20.2.0
blessed==1.18.0 blessed==1.18.0
certifi==2020.12.5 certifi==2020.12.5
@@ -24,7 +24,7 @@ click==7.1.2; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2,
coloredlogs==15.0; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' coloredlogs==15.0; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'
concurrent-log-handler==0.9.19 concurrent-log-handler==0.9.19
constantly==15.1.0 constantly==15.1.0
cryptography==3.4.6 cryptography==3.4.7
daphne==3.0.1; python_version >= '3.6' daphne==3.0.1; python_version >= '3.6'
dateparser==1.0.0 dateparser==1.0.0
django-cors-headers==3.7.0 django-cors-headers==3.7.0
@@ -33,48 +33,48 @@ django-filter==2.4.0
django-picklefield==3.0.1; python_version >= '3' django-picklefield==3.0.1; python_version >= '3'
django-q==1.3.4 django-q==1.3.4
django==3.1.7 django==3.1.7
djangorestframework==3.12.2 djangorestframework==3.12.4
filelock==3.0.12 filelock==3.0.12
fuzzywuzzy[speedup]==0.18.0 fuzzywuzzy[speedup]==0.18.0
gunicorn==20.0.4 gunicorn==20.1.0
h11==0.12.0; python_version >= '3.6' h11==0.12.0; python_version >= '3.6'
hiredis==1.1.0; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3' hiredis==2.0.0; python_version >= '3.6'
httptools==0.1.1 httptools==0.1.1
humanfriendly==9.1; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' humanfriendly==9.1; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'
hyperlink==21.0.0 hyperlink==21.0.0
idna==2.10; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3' idna==2.10; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'
imap-tools==0.38.1 imap-tools==0.39.0
img2pdf==0.4.0 img2pdf==0.4.0
incremental==17.5.0 incremental==21.3.0
inotify-simple==1.3.5; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3' inotify-simple==1.3.5; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'
inotifyrecursive==0.3.5 inotifyrecursive==0.3.5
joblib==1.0.1; python_version >= '3.6' joblib==1.0.1; python_version >= '3.6'
langdetect==1.0.8 langdetect==1.0.8
lxml==4.6.2; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' lxml==4.6.3; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'
msgpack==1.0.2 msgpack==1.0.2
numpy==1.19.5 numpy==1.19.5
ocrmypdf==11.7.0 ocrmypdf==11.7.3
pathvalidate==2.3.2 pathvalidate==2.4.0
pdfminer.six==20201018 pdfminer.six==20201018
pikepdf==2.5.2 pikepdf==2.10.0
pillow==8.1.0 pillow==8.2.0
pluggy==0.13.1; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3' pluggy==0.13.1; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'
portalocker==2.2.1; python_version >= '3' portalocker==2.3.0; python_version >= '3'
psycopg2-binary==2.8.6 psycopg2-binary==2.8.6
pyasn1-modules==0.2.8 pyasn1-modules==0.2.8
pyasn1==0.4.8 pyasn1==0.4.8
pycparser==2.20; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3' pycparser==2.20; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'
pyopenssl==20.0.1; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' pyopenssl==20.0.1; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'
python-dateutil==2.8.1 python-dateutil==2.8.1
python-dotenv==0.15.0 python-dotenv==0.16.0
python-gnupg==0.4.6 python-gnupg==0.4.7
python-levenshtein==0.12.2 python-levenshtein==0.12.2
python-magic==0.4.22 python-magic==0.4.22
pytz==2021.1 pytz==2021.1
pyyaml==5.4.1 pyyaml==5.4.1
redis==3.5.3 redis==3.5.3
regex==2020.11.13 regex==2021.3.17
reportlab==3.5.59 reportlab==3.5.66; python_version >= '2.7' and python_version < '4'
requests==2.25.1; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' requests==2.25.1; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'
scikit-learn==0.24.0 scikit-learn==0.24.0
scipy==1.5.4 scipy==1.5.4
@@ -84,11 +84,11 @@ sortedcontainers==2.3.0
sqlparse==0.4.1; python_version >= '3.5' sqlparse==0.4.1; python_version >= '3.5'
threadpoolctl==2.1.0; python_version >= '3.5' threadpoolctl==2.1.0; python_version >= '3.5'
tika==1.24 tika==1.24
tqdm==4.58.0 tqdm==4.59.0
twisted[tls]==21.2.0; python_full_version >= '3.5.4' twisted[tls]==21.2.0; python_full_version >= '3.5.4'
txaio==21.2.1; python_version >= '3.6' txaio==21.2.1; python_version >= '3.6'
tzlocal==2.1 tzlocal==2.1
urllib3==1.26.3; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' and python_version < '4' urllib3==1.26.4; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' and python_version < '4'
uvicorn[standard]==0.13.4 uvicorn[standard]==0.13.4
uvloop==0.14.0 uvloop==0.14.0
watchdog==1.0.2 watchdog==1.0.2
@@ -97,4 +97,4 @@ wcwidth==0.2.5
websockets==8.1 websockets==8.1
whitenoise==5.2.0 whitenoise==5.2.0
whoosh==2.7.4 whoosh==2.7.4
zope.interface==5.2.0; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' zope.interface==5.3.0; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'

View File

@@ -48,21 +48,21 @@
<source>Documents</source> <source>Documents</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">49</context> <context context-type="linenumber">51</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2155249406916744630" datatype="html"> <trans-unit id="2155249406916744630" datatype="html">
<source>View &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot; saved successfully.</source> <source>View &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot; saved successfully.</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">115</context> <context context-type="linenumber">116</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6837554170707123455" datatype="html"> <trans-unit id="6837554170707123455" datatype="html">
<source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully.</source> <source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully.</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">136</context> <context context-type="linenumber">138</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="9ca82952a6bc860b5391d5975322d8af8ceddfa4" datatype="html"> <trans-unit id="9ca82952a6bc860b5391d5975322d8af8ceddfa4" datatype="html">
@@ -146,77 +146,77 @@
<source>ASN</source> <source>ASN</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">105</context> <context context-type="linenumber">111</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="7b5c6286aaded63fb279d6deb8aa8c704e085ced" datatype="html"> <trans-unit id="7b5c6286aaded63fb279d6deb8aa8c704e085ced" datatype="html">
<source>Correspondent</source> <source>Correspondent</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">111</context> <context context-type="linenumber">117</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="fdf7cbdc140d0aab0f0b6c06065a0fd448ed6a2e" datatype="html"> <trans-unit id="fdf7cbdc140d0aab0f0b6c06065a0fd448ed6a2e" datatype="html">
<source>Title</source> <source>Title</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">117</context> <context context-type="linenumber">123</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2bd5919e8098513664a89d5b7b52d61e3063950f" datatype="html"> <trans-unit id="2bd5919e8098513664a89d5b7b52d61e3063950f" datatype="html">
<source>Document type</source> <source>Document type</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">123</context> <context context-type="linenumber">129</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="1b051734b0ee9021991c91b3ed4e81c244322462" datatype="html"> <trans-unit id="1b051734b0ee9021991c91b3ed4e81c244322462" datatype="html">
<source>Created</source> <source>Created</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">129</context> <context context-type="linenumber">135</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="80e3b490720757978c99a7b5af3885faf202b955" datatype="html"> <trans-unit id="80e3b490720757978c99a7b5af3885faf202b955" datatype="html">
<source>Added</source> <source>Added</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">135</context> <context context-type="linenumber">141</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="9021887951960049161" datatype="html"> <trans-unit id="9021887951960049161" datatype="html">
<source>Confirm delete</source> <source>Confirm delete</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">203</context> <context context-type="linenumber">204</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="5382975254277698192" datatype="html"> <trans-unit id="5382975254277698192" datatype="html">
<source>Do you really want to delete document &quot;<x id="PH" equiv-text="this.document.title"/>&quot;?</source> <source>Do you really want to delete document &quot;<x id="PH" equiv-text="this.document.title"/>&quot;?</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">204</context> <context context-type="linenumber">205</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6691075929777935948" datatype="html"> <trans-unit id="6691075929777935948" datatype="html">
<source>The files for this document will be deleted permanently. This operation cannot be undone.</source> <source>The files for this document will be deleted permanently. This operation cannot be undone.</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">205</context> <context context-type="linenumber">206</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="719892092227206532" datatype="html"> <trans-unit id="719892092227206532" datatype="html">
<source>Delete document</source> <source>Delete document</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">207</context> <context context-type="linenumber">208</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="1844801255494293730" datatype="html"> <trans-unit id="1844801255494293730" datatype="html">
<source>Error deleting document: <x id="PH" equiv-text="JSON.stringify(error)"/></source> <source>Error deleting document: <x id="PH" equiv-text="JSON.stringify(error)"/></source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">214</context> <context context-type="linenumber">215</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="826b25211922a1b46436589233cb6f1a163d89b7" datatype="html"> <trans-unit id="826b25211922a1b46436589233cb6f1a163d89b7" datatype="html">
@@ -912,48 +912,6 @@
<context context-type="linenumber">25</context> <context context-type="linenumber">25</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="49c9ede51100b454f7841b24cd02355c6622bf44" datatype="html">
<source>Search results</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/search/search.component.html</context>
<context context-type="linenumber">1</context>
</context-group>
</trans-unit>
<trans-unit id="31976d04f98e8a38098f66ac3a83ad33b576e5db" datatype="html">
<source>Invalid search query: <x id="INTERPOLATION" equiv-text="{{errorMessage}}"/></source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/search/search.component.html</context>
<context context-type="linenumber">4</context>
</context-group>
</trans-unit>
<trans-unit id="f7f2e30106223a69bcf0f8e586e6be9dc4e72226" datatype="html">
<source>Showing documents similar to <x id="START_LINK" equiv-text="&lt;a routerLink=&quot;/documents/{{more_like}}&quot;&gt;{{more_like_doc?.original_file_name}}"/><x id="INTERPOLATION" equiv-text="{{more_like_doc?.original_file_name}}&lt;/a&gt;"/><x id="CLOSE_LINK" equiv-text="&lt;/a&gt;"/></source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/search/search.component.html</context>
<context context-type="linenumber">6</context>
</context-group>
</trans-unit>
<trans-unit id="6e0b0a1ea16f18f2fb1586c53d99d2f22e1aee2e" datatype="html">
<source>Search query: <x id="START_ITALIC_TEXT" equiv-text="&lt;i&gt;{{query}}"/><x id="INTERPOLATION" equiv-text="{{query}}&lt;/i&gt;"/><x id="CLOSE_ITALIC_TEXT" equiv-text="&lt;/i&gt;"/></source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/search/search.component.html</context>
<context context-type="linenumber">9</context>
</context-group>
</trans-unit>
<trans-unit id="afa760e48c97d64d19c1455d18b7834a2256e23f" datatype="html">
<source>Did you mean &quot;<x id="START_LINK" equiv-text="&lt;a [routerLink]=&quot;&quot; (click)=&quot;searchCorrectedQuery()&quot;&gt;{{correctedQuery}}"/><x id="INTERPOLATION" equiv-text="{{correctedQuery}}&lt;/a&gt;"/><x id="CLOSE_LINK" equiv-text="&lt;/a&gt;"/>&quot;?</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/search/search.component.html</context>
<context context-type="linenumber">11</context>
</context-group>
</trans-unit>
<trans-unit id="fe6ced3fcc803bba5a2e6c1a067b9ce62542500e" datatype="html">
<source>{VAR_PLURAL, plural, =0 {No results} =1 {One result} other {<x id="INTERPOLATION"/> results}}</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/search/search.component.html</context>
<context context-type="linenumber">16</context>
</context-group>
</trans-unit>
<trans-unit id="41147374f427980a9f1a8cd5e3f4b1666e6f2418" datatype="html"> <trans-unit id="41147374f427980a9f1a8cd5e3f4b1666e6f2418" datatype="html">
<source>Paperless-ng</source> <source>Paperless-ng</source>
<context-group purpose="location"> <context-group purpose="location">
@@ -1039,81 +997,95 @@
<context context-type="linenumber">106</context> <context context-type="linenumber">106</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="5701618810648052610" datatype="html">
<source>Title</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">77</context>
</context-group>
</trans-unit>
<trans-unit id="3100631071441658964" datatype="html">
<source>Title &amp; content</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">78</context>
</context-group>
</trans-unit>
<trans-unit id="7517688192215738656" datatype="html">
<source>ASN</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">79</context>
</context-group>
</trans-unit>
<trans-unit id="5195932016807797291" datatype="html"> <trans-unit id="5195932016807797291" datatype="html">
<source>Correspondent: <x id="PH" equiv-text="this.correspondents.find(c =&gt; c.id == +rule.value)?.name"/></source> <source>Correspondent: <x id="PH" equiv-text="this.correspondents.find(c =&gt; c.id == +rule.value)?.name"/></source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">33</context> <context context-type="linenumber">37</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8170755470576301659" datatype="html"> <trans-unit id="8170755470576301659" datatype="html">
<source>Without correspondent</source> <source>Without correspondent</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">35</context> <context context-type="linenumber">39</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8705701325879965907" datatype="html"> <trans-unit id="8705701325879965907" datatype="html">
<source>Type: <x id="PH" equiv-text="this.documentTypes.find(dt =&gt; dt.id == +rule.value)?.name"/></source> <source>Type: <x id="PH" equiv-text="this.documentTypes.find(dt =&gt; dt.id == +rule.value)?.name"/></source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">40</context> <context context-type="linenumber">44</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="4362173610367509215" datatype="html"> <trans-unit id="4362173610367509215" datatype="html">
<source>Without document type</source> <source>Without document type</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">42</context> <context context-type="linenumber">46</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8180755793012580465" datatype="html"> <trans-unit id="8180755793012580465" datatype="html">
<source>Tag: <x id="PH" equiv-text="this.tags.find(t =&gt; t.id == +rule.value)?.name"/></source> <source>Tag: <x id="PH" equiv-text="this.tags.find(t =&gt; t.id == +rule.value)?.name"/></source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">46</context> <context context-type="linenumber">50</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6494566478302448576" datatype="html"> <trans-unit id="6494566478302448576" datatype="html">
<source>Without any tag</source> <source>Without any tag</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">50</context> <context context-type="linenumber">54</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6523384805359286307" datatype="html"> <trans-unit id="6523384805359286307" datatype="html">
<source>Title: <x id="PH" equiv-text="rule.value"/></source> <source>Title: <x id="PH" equiv-text="rule.value"/></source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">54</context> <context context-type="linenumber">58</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="1872523635812236432" datatype="html"> <trans-unit id="1872523635812236432" datatype="html">
<source>ASN: <x id="PH" equiv-text="rule.value"/></source> <source>ASN: <x id="PH" equiv-text="rule.value"/></source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">57</context> <context context-type="linenumber">61</context>
</context-group>
</trans-unit>
<trans-unit id="5701618810648052610" datatype="html">
<source>Title</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">85</context>
</context-group>
</trans-unit>
<trans-unit id="3100631071441658964" datatype="html">
<source>Title &amp; content</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">86</context>
</context-group>
</trans-unit>
<trans-unit id="7517688192215738656" datatype="html">
<source>ASN</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">87</context>
</context-group>
</trans-unit>
<trans-unit id="1010505078885609376" datatype="html">
<source>Advanced search</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">88</context>
</context-group>
</trans-unit>
<trans-unit id="2649431021108393503" datatype="html">
<source>More like</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">91</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="02d184c288f567825a1fcbf83bcd3099a10853d5" datatype="html"> <trans-unit id="02d184c288f567825a1fcbf83bcd3099a10853d5" datatype="html">
@@ -1233,7 +1205,28 @@
<source>Score:</source> <source>Score:</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-card-large/document-card-large.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-card-large/document-card-large.component.html</context>
<context context-type="linenumber">66</context> <context context-type="linenumber">86</context>
</context-group>
</trans-unit>
<trans-unit id="727d980bba2b3e0b3d8705607f1208eef046479b" datatype="html">
<source>Created: <x id="INTERPOLATION" equiv-text="{{ document.created | customDate}}"/></source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-card-small/document-card-small.component.html</context>
<context context-type="linenumber">43</context>
</context-group>
</trans-unit>
<trans-unit id="0f5d856cb63c69fde44fbfc653ec0655f9040865" datatype="html">
<source>Added: <x id="INTERPOLATION" equiv-text="{{ document.added | customDate}}"/></source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-card-small/document-card-small.component.html</context>
<context context-type="linenumber">44</context>
</context-group>
</trans-unit>
<trans-unit id="a205126adef6251fc63305f1a6228d07bc2795a8" datatype="html">
<source>Modified: <x id="INTERPOLATION" equiv-text="{{ document.modified | customDate}}"/></source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-card-small/document-card-small.component.html</context>
<context context-type="linenumber">45</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="7985804062689412812" datatype="html"> <trans-unit id="7985804062689412812" datatype="html">
@@ -1626,6 +1619,13 @@
<context context-type="linenumber">14</context> <context context-type="linenumber">14</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="bd5ca454e336126f3eeb67417d9264696b5c852c" datatype="html">
<source>Searching document with asn <x id="INTERPOLATION" equiv-text="{{asn}}"/></source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-asn/document-asn.component.html</context>
<context context-type="linenumber">1</context>
</context-group>
</trans-unit>
<trans-unit id="2807800733729323332" datatype="html"> <trans-unit id="2807800733729323332" datatype="html">
<source>Yes</source> <source>Yes</source>
<context-group purpose="location"> <context-group purpose="location">

View File

@@ -10,7 +10,7 @@ import { LogsComponent } from './components/manage/logs/logs.component';
import { SettingsComponent } from './components/manage/settings/settings.component'; import { SettingsComponent } from './components/manage/settings/settings.component';
import { TagListComponent } from './components/manage/tag-list/tag-list.component'; import { TagListComponent } from './components/manage/tag-list/tag-list.component';
import { NotFoundComponent } from './components/not-found/not-found.component'; import { NotFoundComponent } from './components/not-found/not-found.component';
import { SearchComponent } from './components/search/search.component'; import {DocumentAsnComponent} from "./components/document-asn/document-asn.component";
const routes: Routes = [ const routes: Routes = [
{path: '', redirectTo: 'dashboard', pathMatch: 'full'}, {path: '', redirectTo: 'dashboard', pathMatch: 'full'},
@@ -18,15 +18,15 @@ const routes: Routes = [
{path: 'dashboard', component: DashboardComponent }, {path: 'dashboard', component: DashboardComponent },
{path: 'documents', component: DocumentListComponent }, {path: 'documents', component: DocumentListComponent },
{path: 'view/:id', component: DocumentListComponent }, {path: 'view/:id', component: DocumentListComponent },
{path: 'search', component: SearchComponent },
{path: 'documents/:id', component: DocumentDetailComponent }, {path: 'documents/:id', component: DocumentDetailComponent },
{path: 'asn/:id', component: DocumentAsnComponent },
{path: 'tags', component: TagListComponent }, {path: 'tags', component: TagListComponent },
{path: 'documenttypes', component: DocumentTypeListComponent }, {path: 'documenttypes', component: DocumentTypeListComponent },
{path: 'correspondents', component: CorrespondentListComponent }, {path: 'correspondents', component: CorrespondentListComponent },
{path: 'logs', component: LogsComponent }, {path: 'logs', component: LogsComponent },
{path: 'settings', component: SettingsComponent }, {path: 'settings', component: SettingsComponent },
]}, ]},
{path: '404', component: NotFoundComponent}, {path: '404', component: NotFoundComponent},
{path: '**', redirectTo: '/404', pathMatch: 'full'} {path: '**', redirectTo: '/404', pathMatch: 'full'}

View File

@@ -21,8 +21,6 @@ import { CorrespondentEditDialogComponent } from './components/manage/correspond
import { TagEditDialogComponent } from './components/manage/tag-list/tag-edit-dialog/tag-edit-dialog.component'; import { TagEditDialogComponent } from './components/manage/tag-list/tag-edit-dialog/tag-edit-dialog.component';
import { DocumentTypeEditDialogComponent } from './components/manage/document-type-list/document-type-edit-dialog/document-type-edit-dialog.component'; import { DocumentTypeEditDialogComponent } from './components/manage/document-type-list/document-type-edit-dialog/document-type-edit-dialog.component';
import { TagComponent } from './components/common/tag/tag.component'; import { TagComponent } from './components/common/tag/tag.component';
import { SearchComponent } from './components/search/search.component';
import { ResultHighlightComponent } from './components/search/result-highlight/result-highlight.component';
import { PageHeaderComponent } from './components/common/page-header/page-header.component'; import { PageHeaderComponent } from './components/common/page-header/page-header.component';
import { AppFrameComponent } from './components/app-frame/app-frame.component'; import { AppFrameComponent } from './components/app-frame/app-frame.component';
import { ToastsComponent } from './components/common/toasts/toasts.component'; import { ToastsComponent } from './components/common/toasts/toasts.component';
@@ -75,6 +73,7 @@ import localeEnGb from '@angular/common/locales/en-GB';
import localeRo from '@angular/common/locales/ro'; import localeRo from '@angular/common/locales/ro';
import localeRu from '@angular/common/locales/ru'; import localeRu from '@angular/common/locales/ru';
import localeEs from '@angular/common/locales/es'; import localeEs from '@angular/common/locales/es';
import { DocumentAsnComponent } from './components/document-asn/document-asn.component';
registerLocaleData(localeFr) registerLocaleData(localeFr)
@@ -105,8 +104,6 @@ registerLocaleData(localeEs)
TagEditDialogComponent, TagEditDialogComponent,
DocumentTypeEditDialogComponent, DocumentTypeEditDialogComponent,
TagComponent, TagComponent,
SearchComponent,
ResultHighlightComponent,
PageHeaderComponent, PageHeaderComponent,
AppFrameComponent, AppFrameComponent,
ToastsComponent, ToastsComponent,
@@ -138,7 +135,8 @@ registerLocaleData(localeEs)
SafePipe, SafePipe,
CustomDatePipe, CustomDatePipe,
DateComponent, DateComponent,
ColorComponent ColorComponent,
DocumentAsnComponent
], ],
imports: [ imports: [
BrowserModule, BrowserModule,

View File

@@ -5,7 +5,7 @@
<span class="navbar-toggler-icon"></span> <span class="navbar-toggler-icon"></span>
</button> </button>
<a class="navbar-brand col-auto col-md-3 col-lg-2 mr-0 px-3 py-3 order-sm-0" routerLink="/dashboard"> <a class="navbar-brand col-auto col-md-3 col-lg-2 mr-0 px-3 py-3 order-sm-0" routerLink="/dashboard">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 198.43 238.91" width="1rem" class="mr-2" fill="currentColor"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 198.43 238.91" width="1em" class="mr-2" fill="currentColor">
<path d="M194.7,0C164.22,70.94,17.64,79.74,64.55,194.06c.58,1.47-10.85,17-18.47,29.9-1.76-6.45-3.81-13.48-3.52-14.07,38.11-45.14-27.26-70.65-30.78-107.58C-4.64,131.62-10.5,182.92,39,212.53c.3,0,2.64,11.14,3.81,16.71a58.55,58.55,0,0,0-2.93,6.45c-1.17,2.93,7.62,2.64,7.62,3.22.88-.29,21.7-36.93,22.28-37.23C187.67,174.72,208.48,68.6,194.7,0ZM134.61,74.75C79.5,124,70.12,160.64,71.88,178.53,53.41,134.85,107.64,86.77,134.61,74.75ZM28.2,145.11c10.55,9.67,28.14,39.28,13.19,56.57C44.91,193.77,46.08,175.89,28.2,145.11Z" transform="translate(0 0)"/> <path d="M194.7,0C164.22,70.94,17.64,79.74,64.55,194.06c.58,1.47-10.85,17-18.47,29.9-1.76-6.45-3.81-13.48-3.52-14.07,38.11-45.14-27.26-70.65-30.78-107.58C-4.64,131.62-10.5,182.92,39,212.53c.3,0,2.64,11.14,3.81,16.71a58.55,58.55,0,0,0-2.93,6.45c-1.17,2.93,7.62,2.64,7.62,3.22.88-.29,21.7-36.93,22.28-37.23C187.67,174.72,208.48,68.6,194.7,0ZM134.61,74.75C79.5,124,70.12,160.64,71.88,178.53,53.41,134.85,107.64,86.77,134.61,74.75ZM28.2,145.11c10.55,9.67,28.14,39.28,13.19,56.57C44.91,193.77,46.08,175.89,28.2,145.11Z" transform="translate(0 0)"/>
</svg> </svg>
<ng-container i18n="app title">Paperless-ng</ng-container> <ng-container i18n="app title">Paperless-ng</ng-container>
@@ -175,7 +175,7 @@
</svg>&nbsp;<ng-container i18n>GitHub</ng-container> </svg>&nbsp;<ng-container i18n>GitHub</ng-container>
</a> </a>
<a class="nav-link-additional small text-muted ml-3" target="_blank" rel="noopener noreferrer" href="https://github.com/jonaswinkler/paperless-ng/discussions/categories/feature-requests" title="Suggest an idea"> <a class="nav-link-additional small text-muted ml-3" target="_blank" rel="noopener noreferrer" href="https://github.com/jonaswinkler/paperless-ng/discussions/categories/feature-requests" title="Suggest an idea">
<svg xmlns="http://www.w3.org/2000/svg" width=".9rem" height=".9rem" fill="currentColor" class="bi bi-lightbulb pr-1" viewBox="0 0 16 16"> <svg xmlns="http://www.w3.org/2000/svg" width="1.3em" height="1.3em" fill="currentColor" class="bi bi-lightbulb pr-1" viewBox="0 0 16 16">
<path d="M2 6a6 6 0 1 1 10.174 4.31c-.203.196-.359.4-.453.619l-.762 1.769A.5.5 0 0 1 10.5 13a.5.5 0 0 1 0 1 .5.5 0 0 1 0 1l-.224.447a1 1 0 0 1-.894.553H6.618a1 1 0 0 1-.894-.553L5.5 15a.5.5 0 0 1 0-1 .5.5 0 0 1 0-1 .5.5 0 0 1-.46-.302l-.761-1.77a1.964 1.964 0 0 0-.453-.618A5.984 5.984 0 0 1 2 6zm6-5a5 5 0 0 0-3.479 8.592c.263.254.514.564.676.941L5.83 12h4.342l.632-1.467c.162-.377.413-.687.676-.941A5 5 0 0 0 8 1z"/> <path d="M2 6a6 6 0 1 1 10.174 4.31c-.203.196-.359.4-.453.619l-.762 1.769A.5.5 0 0 1 10.5 13a.5.5 0 0 1 0 1 .5.5 0 0 1 0 1l-.224.447a1 1 0 0 1-.894.553H6.618a1 1 0 0 1-.894-.553L5.5 15a.5.5 0 0 1 0-1 .5.5 0 0 1 0-1 .5.5 0 0 1-.46-.302l-.761-1.77a1.964 1.964 0 0 0-.453-.618A5.984 5.984 0 0 1 2 6zm6-5a5 5 0 0 0-3.479 8.592c.263.254.514.564.676.941L5.83 12h4.342l.632-1.467c.162-.377.413-.687.676-.941A5 5 0 0 0 8 1z"/>
</svg> </svg>
<ng-container i18n>Suggest an idea</ng-container> <ng-container i18n>Suggest an idea</ng-container>

View File

@@ -10,6 +10,8 @@ import { SearchService } from 'src/app/services/rest/search.service';
import { environment } from 'src/environments/environment'; import { environment } from 'src/environments/environment';
import { DocumentDetailComponent } from '../document-detail/document-detail.component'; import { DocumentDetailComponent } from '../document-detail/document-detail.component';
import { Meta } from '@angular/platform-browser'; import { Meta } from '@angular/platform-browser';
import { DocumentListViewService } from 'src/app/services/document-list-view.service';
import { FILTER_FULLTEXT_QUERY } from 'src/app/data/filter-rule-type';
@Component({ @Component({
selector: 'app-app-frame', selector: 'app-app-frame',
@@ -24,6 +26,7 @@ export class AppFrameComponent implements OnInit {
private openDocumentsService: OpenDocumentsService, private openDocumentsService: OpenDocumentsService,
private searchService: SearchService, private searchService: SearchService,
public savedViewService: SavedViewService, public savedViewService: SavedViewService,
private list: DocumentListViewService,
private meta: Meta private meta: Meta
) { ) {
@@ -74,7 +77,7 @@ export class AppFrameComponent implements OnInit {
search() { search() {
this.closeMenu() this.closeMenu()
this.router.navigate(['search'], {queryParams: {query: this.searchField.value}}) this.list.quickFilter([{rule_type: FILTER_FULLTEXT_QUERY, value: this.searchField.value}])
} }
closeDocument(d: PaperlessDocument) { closeDocument(d: PaperlessDocument) {

View File

@@ -1,33 +1,36 @@
<div class="form-group paperless-input-select"> <div class="form-group paperless-input-select">
<label [for]="inputId">{{title}}</label> <label [for]="inputId">{{title}}</label>
<div [class.input-group]="showPlusButton()"> <div [class.input-group]="allowCreateNew">
<ng-select name="inputId" [(ngModel)]="value" <ng-select name="inputId" [(ngModel)]="value"
[disabled]="disabled" [disabled]="disabled"
[style.color]="textColor" [style.color]="textColor"
[style.background]="backgroundColor" [style.background]="backgroundColor"
[clearable]="allowNull" [clearable]="allowNull"
[items]="items" [items]="items"
bindLabel="name" [addTag]="allowCreateNew && addItemRef"
bindValue="id" bindLabel="name"
(change)="onChange(value)" bindValue="id"
(blur)="onTouched()"> (change)="onChange(value)"
</ng-select> (search)="onSearch($event)"
(focus)="clearLastSearchTerm()"
<div *ngIf="showPlusButton()" class="input-group-append"> (clear)="clearLastSearchTerm()"
<button class="btn btn-outline-secondary" type="button" (click)="createNew.emit()"> (blur)="onBlur()">
<svg class="buttonicon" fill="currentColor"> </ng-select>
<use xlink:href="assets/bootstrap-icons.svg#plus" /> <div *ngIf="allowCreateNew" class="input-group-append">
</svg> <button class="btn btn-outline-secondary" type="button" (click)="addItem()">
</button> <svg class="buttonicon" fill="currentColor">
<use xlink:href="assets/bootstrap-icons.svg#plus" />
</svg>
</button>
</div>
</div> </div>
</div>
<small *ngIf="hint" class="form-text text-muted">{{hint}}</small> <small *ngIf="hint" class="form-text text-muted">{{hint}}</small>
<small *ngIf="getSuggestions().length > 0"> <small *ngIf="getSuggestions().length > 0">
<span i18n>Suggestions:</span>&nbsp; <span i18n>Suggestions:</span>&nbsp;
<ng-container *ngFor="let s of getSuggestions()"> <ng-container *ngFor="let s of getSuggestions()">
<a (click)="value = s.id; onChange(value)" [routerLink]="">{{s.name}}</a>&nbsp; <a (click)="value = s.id; onChange(value)" [routerLink]="">{{s.name}}</a>&nbsp;
</ng-container> </ng-container>
</small> </small>
</div> </div>

View File

@@ -16,6 +16,7 @@ export class SelectComponent extends AbstractInputComponent<number> {
constructor() { constructor() {
super() super()
this.addItemRef = this.addItem.bind(this)
} }
@Input() @Input()
@@ -34,9 +35,13 @@ export class SelectComponent extends AbstractInputComponent<number> {
suggestions: number[] suggestions: number[]
@Output() @Output()
createNew = new EventEmitter() createNew = new EventEmitter<string>()
showPlusButton(): boolean { public addItemRef: (name) => void
private _lastSearchTerm: string
get allowCreateNew(): boolean {
return this.createNew.observers.length > 0 return this.createNew.observers.length > 0
} }
@@ -48,4 +53,29 @@ export class SelectComponent extends AbstractInputComponent<number> {
} }
} }
addItem(name: string) {
if (name) this.createNew.next(name)
else this.createNew.next(this._lastSearchTerm)
this.clearLastSearchTerm()
}
clickNew() {
this.createNew.next(this._lastSearchTerm)
this.clearLastSearchTerm()
}
clearLastSearchTerm() {
this._lastSearchTerm = null
}
onSearch($event) {
this._lastSearchTerm = $event.term
}
onBlur() {
setTimeout(() => {
this.clearLastSearchTerm()
}, 3000);
}
} }

View File

@@ -7,8 +7,13 @@
[closeOnSelect]="false" [closeOnSelect]="false"
[clearSearchOnAdd]="true" [clearSearchOnAdd]="true"
[hideSelected]="true" [hideSelected]="true"
[addTag]="createTagRef"
addTagText="Add tag"
(change)="onChange(value)" (change)="onChange(value)"
(blur)="onTouched()"> (search)="onSearch($event)"
(focus)="clearLastSearchTerm()"
(clear)="clearLastSearchTerm()"
(blur)="onBlur()">
<ng-template ng-label-tmp let-item="item"> <ng-template ng-label-tmp let-item="item">
<span class="tag-wrap tag-wrap-delete" (click)="removeTag(item.id)"> <span class="tag-wrap tag-wrap-delete" (click)="removeTag(item.id)">
@@ -39,8 +44,8 @@
<ng-container *ngFor="let tag of getSuggestions()"> <ng-container *ngFor="let tag of getSuggestions()">
<a (click)="addTag(tag.id)" [routerLink]="">{{tag.name}}</a>&nbsp; <a (click)="addTag(tag.id)" [routerLink]="">{{tag.name}}</a>&nbsp;
</ng-container> </ng-container>
</small> </small>
</div> </div>

View File

@@ -17,8 +17,9 @@ import { TagService } from 'src/app/services/rest/tag.service';
}) })
export class TagsComponent implements OnInit, ControlValueAccessor { export class TagsComponent implements OnInit, ControlValueAccessor {
constructor(private tagService: TagService, private modalService: NgbModal) { } constructor(private tagService: TagService, private modalService: NgbModal) {
this.createTagRef = this.createTag.bind(this)
}
onChange = (newValue: number[]) => {}; onChange = (newValue: number[]) => {};
@@ -56,6 +57,10 @@ export class TagsComponent implements OnInit, ControlValueAccessor {
tags: PaperlessTag[] tags: PaperlessTag[]
public createTagRef: (name) => void
private _lastSearchTerm: string
getTag(id) { getTag(id) {
if (this.tags) { if (this.tags) {
return this.tags.find(tag => tag.id == id) return this.tags.find(tag => tag.id == id)
@@ -74,9 +79,11 @@ export class TagsComponent implements OnInit, ControlValueAccessor {
} }
} }
createTag() { createTag(name: string = null) {
var modal = this.modalService.open(TagEditDialogComponent, {backdrop: 'static'}) var modal = this.modalService.open(TagEditDialogComponent, {backdrop: 'static'})
modal.componentInstance.dialogMode = 'create' modal.componentInstance.dialogMode = 'create'
if (name) modal.componentInstance.object = { name: name }
else if (this._lastSearchTerm) modal.componentInstance.object = { name: this._lastSearchTerm }
modal.componentInstance.success.subscribe(newTag => { modal.componentInstance.success.subscribe(newTag => {
this.tagService.listAll().subscribe(tags => { this.tagService.listAll().subscribe(tags => {
this.tags = tags.results this.tags = tags.results
@@ -99,4 +106,18 @@ export class TagsComponent implements OnInit, ControlValueAccessor {
this.onChange(this.value) this.onChange(this.value)
} }
clearLastSearchTerm() {
this._lastSearchTerm = null
}
onSearch($event) {
this._lastSearchTerm = $event.term
}
onBlur() {
setTimeout(() => {
this.clearLastSearchTerm()
}, 3000);
}
} }

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
<p i18n>Searching document with asn {{asn}}</p>

View File

@@ -1,20 +1,20 @@
import { ComponentFixture, TestBed } from '@angular/core/testing'; import { ComponentFixture, TestBed } from '@angular/core/testing';
import { SearchComponent } from './search.component'; import { DocumentAsnComponent } from './document-asn.component';
describe('SearchComponent', () => { describe('DocumentASNComponentComponent', () => {
let component: SearchComponent; let component: DocumentAsnComponent;
let fixture: ComponentFixture<SearchComponent>; let fixture: ComponentFixture<DocumentAsnComponent>;
beforeEach(async () => { beforeEach(async () => {
await TestBed.configureTestingModule({ await TestBed.configureTestingModule({
declarations: [ SearchComponent ] declarations: [ DocumentAsnComponent ]
}) })
.compileComponents(); .compileComponents();
}); });
beforeEach(() => { beforeEach(() => {
fixture = TestBed.createComponent(SearchComponent); fixture = TestBed.createComponent(DocumentAsnComponent);
component = fixture.componentInstance; component = fixture.componentInstance;
fixture.detectChanges(); fixture.detectChanges();
}); });

View File

@@ -0,0 +1,34 @@
import { Component, OnInit } from '@angular/core';
import {DocumentService} from "../../services/rest/document.service";
import {ActivatedRoute, Router} from "@angular/router";
import {FILTER_ASN} from "../../data/filter-rule-type";
@Component({
selector: 'app-document-asncomponent',
templateUrl: './document-asn.component.html',
styleUrls: ['./document-asn.component.scss']
})
export class DocumentAsnComponent implements OnInit {
asn: string
constructor(
private documentsService: DocumentService,
private route: ActivatedRoute,
private router: Router) { }
ngOnInit(): void {
this.route.paramMap.subscribe(paramMap => {
this.asn = paramMap.get('id');
this.documentsService.listAllFilteredIds([{rule_type: FILTER_ASN, value: this.asn}]).subscribe(documentId => {
if (documentId.length == 1) {
this.router.navigate(['documents', documentId[0]])
} else {
this.router.navigate(['404'])
}
})
})
}
}

View File

@@ -60,9 +60,9 @@
<app-input-number i18n-title title="Archive serial number" [error]="error?.archive_serial_number" formControlName='archive_serial_number'></app-input-number> <app-input-number i18n-title title="Archive serial number" [error]="error?.archive_serial_number" formControlName='archive_serial_number'></app-input-number>
<app-input-date i18n-title title="Date created" formControlName="created" [error]="error?.created"></app-input-date> <app-input-date i18n-title title="Date created" formControlName="created" [error]="error?.created"></app-input-date>
<app-input-select [items]="correspondents" i18n-title title="Correspondent" formControlName="correspondent" [allowNull]="true" <app-input-select [items]="correspondents" i18n-title title="Correspondent" formControlName="correspondent" [allowNull]="true"
(createNew)="createCorrespondent()" [suggestions]="suggestions?.correspondents"></app-input-select> (createNew)="createCorrespondent($event)" [suggestions]="suggestions?.correspondents"></app-input-select>
<app-input-select [items]="documentTypes" i18n-title title="Document type" formControlName="document_type" [allowNull]="true" <app-input-select [items]="documentTypes" i18n-title title="Document type" formControlName="document_type" [allowNull]="true"
(createNew)="createDocumentType()" [suggestions]="suggestions?.document_types"></app-input-select> (createNew)="createDocumentType($event)" [suggestions]="suggestions?.document_types"></app-input-select>
<app-input-tags formControlName="tags" [suggestions]="suggestions?.tags"></app-input-tags> <app-input-tags formControlName="tags" [suggestions]="suggestions?.tags"></app-input-tags>
</ng-template> </ng-template>

View File

@@ -20,6 +20,7 @@ import { ToastService } from 'src/app/services/toast.service';
import { TextComponent } from '../common/input/text/text.component'; import { TextComponent } from '../common/input/text/text.component';
import { SettingsService, SETTINGS_KEYS } from 'src/app/services/settings.service'; import { SettingsService, SETTINGS_KEYS } from 'src/app/services/settings.service';
import { PaperlessDocumentSuggestions } from 'src/app/data/paperless-document-suggestions'; import { PaperlessDocumentSuggestions } from 'src/app/data/paperless-document-suggestions';
import { FILTER_FULLTEXT_MORELIKE } from 'src/app/data/filter-rule-type';
@Component({ @Component({
selector: 'app-document-detail', selector: 'app-document-detail',
@@ -127,9 +128,10 @@ export class DocumentDetailComponent implements OnInit {
this.documentForm.patchValue(doc) this.documentForm.patchValue(doc)
} }
createDocumentType() { createDocumentType(newName: string) {
var modal = this.modalService.open(DocumentTypeEditDialogComponent, {backdrop: 'static'}) var modal = this.modalService.open(DocumentTypeEditDialogComponent, {backdrop: 'static'})
modal.componentInstance.dialogMode = 'create' modal.componentInstance.dialogMode = 'create'
if (newName) modal.componentInstance.object = { name: newName }
modal.componentInstance.success.subscribe(newDocumentType => { modal.componentInstance.success.subscribe(newDocumentType => {
this.documentTypeService.listAll().subscribe(documentTypes => { this.documentTypeService.listAll().subscribe(documentTypes => {
this.documentTypes = documentTypes.results this.documentTypes = documentTypes.results
@@ -138,9 +140,10 @@ export class DocumentDetailComponent implements OnInit {
}) })
} }
createCorrespondent() { createCorrespondent(newName: string) {
var modal = this.modalService.open(CorrespondentEditDialogComponent, {backdrop: 'static'}) var modal = this.modalService.open(CorrespondentEditDialogComponent, {backdrop: 'static'})
modal.componentInstance.dialogMode = 'create' modal.componentInstance.dialogMode = 'create'
if (newName) modal.componentInstance.object = { name: newName }
modal.componentInstance.success.subscribe(newCorrespondent => { modal.componentInstance.success.subscribe(newCorrespondent => {
this.correspondentService.listAll().subscribe(correspondents => { this.correspondentService.listAll().subscribe(correspondents => {
this.correspondents = correspondents.results this.correspondents = correspondents.results
@@ -219,7 +222,7 @@ export class DocumentDetailComponent implements OnInit {
} }
moreLike() { moreLike() {
this.router.navigate(["search"], {queryParams: {more_like:this.document.id}}) this.documentListViewService.quickFilter([{rule_type: FILTER_FULLTEXT_MORELIKE, value: this.documentId.toString()}])
} }
hasNext() { hasNext() {

View File

@@ -25,14 +25,14 @@
</h5> </h5>
</div> </div>
<p class="card-text"> <p class="card-text">
<app-result-highlight *ngIf="getDetailsAsHighlight()" class="result-content" [highlights]="getDetailsAsHighlight()"></app-result-highlight> <span *ngIf="document.__search_hit__" [innerHtml]="document.__search_hit__.highlights"></span>
<span *ngIf="getDetailsAsString()" class="result-content">{{getDetailsAsString()}}</span> <span *ngIf="!document.__search_hit__" class="result-content">{{contentTrimmed}}</span>
</p> </p>
<div class="d-flex flex-column flex-md-row align-items-md-center"> <div class="d-flex flex-column flex-md-row align-items-md-center">
<div class="btn-group"> <div class="btn-group">
<a routerLink="/search" [queryParams]="{'more_like': document.id}" class="btn btn-sm btn-outline-secondary" *ngIf="moreLikeThis"> <a class="btn btn-sm btn-outline-secondary" (click)="clickMoreLike.emit()">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-three-dots" viewBox="0 0 16 16"> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-three-dots" viewBox="0 0 16 16">
<path fill-rule="evenodd" d="M3 9.5a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3zm5 0a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3zm5 0a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3z"/> <path fill-rule="evenodd" d="M3 9.5a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3zm5 0a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3zm5 0a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3z"/>
</svg>&nbsp;<span class="d-block d-md-inline" i18n>More like this</span> </svg>&nbsp;<span class="d-block d-md-inline" i18n>More like this</span>
@@ -62,10 +62,6 @@
</div> </div>
<div class="list-group list-group-horizontal border-0 card-info ml-md-auto mt-2 mt-md-0"> <div class="list-group list-group-horizontal border-0 card-info ml-md-auto mt-2 mt-md-0">
<div *ngIf="searchScore" class="list-group-item bg-light text-dark p-1 mr-5 border-0 d-flex search-score">
<small class="text-muted" i18n>Score:</small>
<ngb-progressbar [type]="searchScoreClass" [value]="searchScore" class="search-score-bar mx-2 mt-1" [max]="1"></ngb-progressbar>
</div>
<button *ngIf="document.document_type" type="button" class="list-group-item btn btn-sm bg-light text-dark p-1 border-0 mr-2" title="Filter by document type" <button *ngIf="document.document_type" type="button" class="list-group-item btn btn-sm bg-light text-dark p-1 border-0 mr-2" title="Filter by document type"
(click)="clickDocumentType.emit(document.document_type);$event.stopPropagation()"> (click)="clickDocumentType.emit(document.document_type);$event.stopPropagation()">
<svg class="metadata-icon mr-2 text-muted bi bi-file-earmark" viewBox="0 0 16 16" fill="currentColor"> <svg class="metadata-icon mr-2 text-muted bi bi-file-earmark" viewBox="0 0 16 16" fill="currentColor">
@@ -86,6 +82,10 @@
</svg> </svg>
<small>{{document.created | customDate:'mediumDate'}}</small> <small>{{document.created | customDate:'mediumDate'}}</small>
</div> </div>
<div *ngIf="document.__search_hit__" class="list-group-item bg-light text-dark border-0 d-flex search-score">
<small class="text-muted" i18n>Score:</small>
<ngb-progressbar [type]="searchScoreClass" [value]="document.__search_hit__.score" class="search-score-bar mx-2 mt-1" [max]="1"></ngb-progressbar>
</div>
</div> </div>
</div> </div>

View File

@@ -60,3 +60,8 @@
padding-top: 0.35rem !important; padding-top: 0.35rem !important;
} }
} }
span ::ng-deep .match {
color: black;
background-color: rgb(255, 211, 66);
}

View File

@@ -4,6 +4,8 @@ import { PaperlessDocument } from 'src/app/data/paperless-document';
import { DocumentService } from 'src/app/services/rest/document.service'; import { DocumentService } from 'src/app/services/rest/document.service';
import { SettingsService, SETTINGS_KEYS } from 'src/app/services/settings.service'; import { SettingsService, SETTINGS_KEYS } from 'src/app/services/settings.service';
import { NgbPopover } from '@ng-bootstrap/ng-bootstrap'; import { NgbPopover } from '@ng-bootstrap/ng-bootstrap';
import { DocumentListViewService } from 'src/app/services/document-list-view.service';
import { FILTER_FULLTEXT_MORELIKE } from 'src/app/data/filter-rule-type';
@Component({ @Component({
selector: 'app-document-card-large', selector: 'app-document-card-large',
@@ -24,15 +26,9 @@ export class DocumentCardLargeComponent implements OnInit {
return this.toggleSelected.observers.length > 0 return this.toggleSelected.observers.length > 0
} }
@Input()
moreLikeThis: boolean = false
@Input() @Input()
document: PaperlessDocument document: PaperlessDocument
@Input()
details: any
@Output() @Output()
clickTag = new EventEmitter<number>() clickTag = new EventEmitter<number>()
@@ -42,8 +38,8 @@ export class DocumentCardLargeComponent implements OnInit {
@Output() @Output()
clickDocumentType = new EventEmitter<number>() clickDocumentType = new EventEmitter<number>()
@Input() @Output()
searchScore: number clickMoreLike= new EventEmitter()
@ViewChild('popover') popover: NgbPopover @ViewChild('popover') popover: NgbPopover
@@ -51,12 +47,14 @@ export class DocumentCardLargeComponent implements OnInit {
popoverHidden = true popoverHidden = true
get searchScoreClass() { get searchScoreClass() {
if (this.searchScore > 0.7) { if (this.document.__search_hit__) {
return "success" if (this.document.__search_hit__.score > 0.7) {
} else if (this.searchScore > 0.3) { return "success"
return "warning" } else if (this.document.__search_hit__.score > 0.3) {
} else { return "warning"
return "danger" } else {
return "danger"
}
} }
} }
@@ -67,19 +65,6 @@ export class DocumentCardLargeComponent implements OnInit {
return this.settingsService.get(SETTINGS_KEYS.DARK_MODE_THUMB_INVERTED) return this.settingsService.get(SETTINGS_KEYS.DARK_MODE_THUMB_INVERTED)
} }
getDetailsAsString() {
if (typeof this.details === 'string') {
return this.details.substring(0, 500)
}
}
getDetailsAsHighlight() {
//TODO: this is not an exact typecheck, can we do better
if (this.details instanceof Array) {
return this.details
}
}
getThumbUrl() { getThumbUrl() {
return this.documentService.getThumbUrl(this.document.id) return this.documentService.getThumbUrl(this.document.id)
} }
@@ -116,4 +101,8 @@ export class DocumentCardLargeComponent implements OnInit {
mouseLeaveCard() { mouseLeaveCard() {
this.popover.close() this.popover.close()
} }
get contentTrimmed() {
return this.document.content.substr(0, 500)
}
} }

View File

@@ -38,7 +38,15 @@
<small>{{(document.document_type$ | async)?.name}}</small> <small>{{(document.document_type$ | async)?.name}}</small>
</button> </button>
<div class="list-group-item bg-transparent p-0 border-0 d-flex flex-wrap-reverse justify-content-between"> <div class="list-group-item bg-transparent p-0 border-0 d-flex flex-wrap-reverse justify-content-between">
<div class="pl-0 p-1" placement="top" ngbTooltip="Added:&nbsp;{{document.added | customDate:'mediumDate'}} Created:&nbsp;{{document.created | customDate:'mediumDate'}}"> <ng-template #dateTooltip>
<div class="d-flex flex-column">
<span i18n>Created: {{ document.created | customDate}}</span>
<span i18n>Added: {{ document.added | customDate}}</span>
<span i18n>Modified: {{ document.modified | customDate}}</span>
</div>
</ng-template>
<div class="pl-0 p-1" placement="top" [ngbTooltip]="dateTooltip">
<svg class="metadata-icon mr-2 text-muted bi bi-calendar-event" viewBox="0 0 16 16" fill="currentColor"> <svg class="metadata-icon mr-2 text-muted bi bi-calendar-event" viewBox="0 0 16 16" fill="currentColor">
<path d="M11 6.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5v-1z"/> <path d="M11 6.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5v-1z"/>
<path d="M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5zM1 4v10a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V4H1z"/> <path d="M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5zM1 4v10a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V4H1z"/>

View File

@@ -76,7 +76,7 @@
</app-page-header> </app-page-header>
<div class="w-100 mb-2 mb-sm-4"> <div class="w-100 mb-2 mb-sm-4">
<app-filter-editor [hidden]="isBulkEditing" [(filterRules)]="list.filterRules" [rulesModified]="filterRulesModified" (filterRulesChange)="rulesChanged()" (reset)="resetFilters()" #filterEditor></app-filter-editor> <app-filter-editor [hidden]="isBulkEditing" [(filterRules)]="list.filterRules" [unmodifiedFilterRules]="unmodifiedFilterRules" #filterEditor></app-filter-editor>
<app-bulk-editor [hidden]="!isBulkEditing"></app-bulk-editor> <app-bulk-editor [hidden]="!isBulkEditing"></app-bulk-editor>
</div> </div>
@@ -89,86 +89,95 @@
[rotate]="true" aria-label="Default pagination"></ngb-pagination> [rotate]="true" aria-label="Default pagination"></ngb-pagination>
</div> </div>
<div *ngIf="displayMode == 'largeCards'"> <ng-container *ngIf="list.error ; else documentListNoError">
<app-document-card-large [selected]="list.isSelected(d)" (toggleSelected)="toggleSelected(d, $event)" *ngFor="let d of list.documents; trackBy: trackByDocumentId" [document]="d" [details]="d.content" (clickTag)="clickTag($event)" (clickCorrespondent)="clickCorrespondent($event)" (clickDocumentType)="clickDocumentType($event)"> <div class="alert alert-danger" role="alert">Error while loading documents: {{list.error}}</div>
</app-document-card-large> </ng-container>
</div>
<table class="table table-sm border shadow-sm" *ngIf="displayMode == 'details'"> <ng-template #documentListNoError>
<thead>
<th></th>
<th class="d-none d-lg-table-cell"
sortable="archive_serial_number"
[currentSortField]="list.sortField"
[currentSortReverse]="list.sortReverse"
(sort)="onSort($event)"
i18n>ASN</th>
<th class="d-none d-md-table-cell"
sortable="correspondent__name"
[currentSortField]="list.sortField"
[currentSortReverse]="list.sortReverse"
(sort)="onSort($event)"
i18n>Correspondent</th>
<th
sortable="title"
[currentSortField]="list.sortField"
[currentSortReverse]="list.sortReverse"
(sort)="onSort($event)"
i18n>Title</th>
<th class="d-none d-xl-table-cell"
sortable="document_type__name"
[currentSortField]="list.sortField"
[currentSortReverse]="list.sortReverse"
(sort)="onSort($event)"
i18n>Document type</th>
<th
sortable="created"
[currentSortField]="list.sortField"
[currentSortReverse]="list.sortReverse"
(sort)="onSort($event)"
i18n>Created</th>
<th class="d-none d-xl-table-cell"
sortable="added"
[currentSortField]="list.sortField"
[currentSortReverse]="list.sortReverse"
(sort)="onSort($event)"
i18n>Added</th>
</thead>
<tbody>
<tr *ngFor="let d of list.documents; trackBy: trackByDocumentId" (click)="toggleSelected(d, $event)" [ngClass]="list.isSelected(d) ? 'table-row-selected' : ''">
<td>
<div class="custom-control custom-checkbox">
<input type="checkbox" class="custom-control-input" id="docCheck{{d.id}}" [checked]="list.isSelected(d)" (click)="toggleSelected(d, $event)">
<label class="custom-control-label" for="docCheck{{d.id}}"></label>
</div>
</td>
<td class="d-none d-lg-table-cell">
{{d.archive_serial_number}}
</td>
<td class="d-none d-md-table-cell">
<ng-container *ngIf="d.correspondent">
<a [routerLink]="" (click)="clickCorrespondent(d.correspondent);$event.stopPropagation()" title="Filter by correspondent">{{(d.correspondent$ | async)?.name}}</a>
</ng-container>
</td>
<td>
<a routerLink="/documents/{{d.id}}" title="Edit document" style="overflow-wrap: anywhere;">{{d.title | documentTitle}}</a>
<app-tag [tag]="t" *ngFor="let t of d.tags$ | async" class="ml-1" clickable="true" linkTitle="Filter by tag" (click)="clickTag(t.id);$event.stopPropagation()"></app-tag>
</td>
<td class="d-none d-xl-table-cell">
<ng-container *ngIf="d.document_type">
<a [routerLink]="" (click)="clickDocumentType(d.document_type);$event.stopPropagation()" title="Filter by document type">{{(d.document_type$ | async)?.name}}</a>
</ng-container>
</td>
<td>
{{d.created | customDate}}
</td>
<td class="d-none d-xl-table-cell">
{{d.added | customDate}}
</td>
</tr>
</tbody>
</table>
<div class="m-n2 row row-cols-paperless-cards" *ngIf="displayMode == 'smallCards'"> <div *ngIf="displayMode == 'largeCards'">
<app-document-card-small [selected]="list.isSelected(d)" (toggleSelected)="toggleSelected(d, $event)" [document]="d" *ngFor="let d of list.documents; trackBy: trackByDocumentId" (clickTag)="clickTag($event)" (clickCorrespondent)="clickCorrespondent($event)" (clickDocumentType)="clickDocumentType($event)"></app-document-card-small> <app-document-card-large [selected]="list.isSelected(d)" (toggleSelected)="toggleSelected(d, $event)" *ngFor="let d of list.documents; trackBy: trackByDocumentId" [document]="d" (clickTag)="clickTag($event)" (clickCorrespondent)="clickCorrespondent($event)" (clickDocumentType)="clickDocumentType($event)" (clickMoreLike)="clickMoreLike(d.id)">
</div> </app-document-card-large>
</div>
<table class="table table-sm border shadow-sm" *ngIf="displayMode == 'details'">
<thead>
<th></th>
<th class="d-none d-lg-table-cell"
sortable="archive_serial_number"
[currentSortField]="list.sortField"
[currentSortReverse]="list.sortReverse"
(sort)="onSort($event)"
i18n>ASN</th>
<th class="d-none d-md-table-cell"
sortable="correspondent__name"
[currentSortField]="list.sortField"
[currentSortReverse]="list.sortReverse"
(sort)="onSort($event)"
i18n>Correspondent</th>
<th
sortable="title"
[currentSortField]="list.sortField"
[currentSortReverse]="list.sortReverse"
(sort)="onSort($event)"
i18n>Title</th>
<th class="d-none d-xl-table-cell"
sortable="document_type__name"
[currentSortField]="list.sortField"
[currentSortReverse]="list.sortReverse"
(sort)="onSort($event)"
i18n>Document type</th>
<th
sortable="created"
[currentSortField]="list.sortField"
[currentSortReverse]="list.sortReverse"
(sort)="onSort($event)"
i18n>Created</th>
<th class="d-none d-xl-table-cell"
sortable="added"
[currentSortField]="list.sortField"
[currentSortReverse]="list.sortReverse"
(sort)="onSort($event)"
i18n>Added</th>
</thead>
<tbody>
<tr *ngFor="let d of list.documents; trackBy: trackByDocumentId" (click)="toggleSelected(d, $event)" [ngClass]="list.isSelected(d) ? 'table-row-selected' : ''">
<td>
<div class="custom-control custom-checkbox">
<input type="checkbox" class="custom-control-input" id="docCheck{{d.id}}" [checked]="list.isSelected(d)" (click)="toggleSelected(d, $event)">
<label class="custom-control-label" for="docCheck{{d.id}}"></label>
</div>
</td>
<td class="d-none d-lg-table-cell">
{{d.archive_serial_number}}
</td>
<td class="d-none d-md-table-cell">
<ng-container *ngIf="d.correspondent">
<a [routerLink]="" (click)="clickCorrespondent(d.correspondent);$event.stopPropagation()" title="Filter by correspondent">{{(d.correspondent$ | async)?.name}}</a>
</ng-container>
</td>
<td>
<a routerLink="/documents/{{d.id}}" title="Edit document" style="overflow-wrap: anywhere;">{{d.title | documentTitle}}</a>
<app-tag [tag]="t" *ngFor="let t of d.tags$ | async" class="ml-1" clickable="true" linkTitle="Filter by tag" (click)="clickTag(t.id);$event.stopPropagation()"></app-tag>
</td>
<td class="d-none d-xl-table-cell">
<ng-container *ngIf="d.document_type">
<a [routerLink]="" (click)="clickDocumentType(d.document_type);$event.stopPropagation()" title="Filter by document type">{{(d.document_type$ | async)?.name}}</a>
</ng-container>
</td>
<td>
{{d.created | customDate}}
</td>
<td class="d-none d-xl-table-cell">
{{d.added | customDate}}
</td>
</tr>
</tbody>
</table>
<div class="m-n2 row row-cols-paperless-cards" *ngIf="displayMode == 'smallCards'">
<app-document-card-small [selected]="list.isSelected(d)" (toggleSelected)="toggleSelected(d, $event)" [document]="d" *ngFor="let d of list.documents; trackBy: trackByDocumentId" (clickTag)="clickTag($event)" (clickCorrespondent)="clickCorrespondent($event)" (clickDocumentType)="clickDocumentType($event)"></app-document-card-small>
</div>
</ng-template>

View File

@@ -2,6 +2,8 @@ import { Component, OnDestroy, OnInit, QueryList, ViewChild, ViewChildren } from
import { ActivatedRoute, Router } from '@angular/router'; import { ActivatedRoute, Router } from '@angular/router';
import { NgbModal } from '@ng-bootstrap/ng-bootstrap'; import { NgbModal } from '@ng-bootstrap/ng-bootstrap';
import { Subscription } from 'rxjs'; import { Subscription } from 'rxjs';
import { FilterRule } from 'src/app/data/filter-rule';
import { FILTER_FULLTEXT_MORELIKE } from 'src/app/data/filter-rule-type';
import { PaperlessDocument } from 'src/app/data/paperless-document'; import { PaperlessDocument } from 'src/app/data/paperless-document';
import { PaperlessSavedView } from 'src/app/data/paperless-saved-view'; import { PaperlessSavedView } from 'src/app/data/paperless-saved-view';
import { SortableDirective, SortEvent } from 'src/app/directives/sortable.directive'; import { SortableDirective, SortEvent } from 'src/app/directives/sortable.directive';
@@ -37,7 +39,7 @@ export class DocumentListComponent implements OnInit, OnDestroy {
displayMode = 'smallCards' // largeCards, smallCards, details displayMode = 'smallCards' // largeCards, smallCards, details
filterRulesModified: boolean = false unmodifiedFilterRules: FilterRule[] = []
private consumptionFinishedSubscription: Subscription private consumptionFinishedSubscription: Subscription
@@ -81,12 +83,12 @@ export class DocumentListComponent implements OnInit, OnDestroy {
} }
this.list.activateSavedView(view) this.list.activateSavedView(view)
this.list.reload() this.list.reload()
this.rulesChanged() this.unmodifiedFilterRules = view.filter_rules
}) })
} else { } else {
this.list.activateSavedView(null) this.list.activateSavedView(null)
this.list.reload() this.list.reload()
this.rulesChanged() this.unmodifiedFilterRules = []
} }
}) })
} }
@@ -100,7 +102,6 @@ export class DocumentListComponent implements OnInit, OnDestroy {
loadViewConfig(view: PaperlessSavedView) { loadViewConfig(view: PaperlessSavedView) {
this.list.loadSavedView(view) this.list.loadSavedView(view)
this.list.reload() this.list.reload()
this.rulesChanged()
} }
saveViewConfig() { saveViewConfig() {
@@ -113,6 +114,7 @@ export class DocumentListComponent implements OnInit, OnDestroy {
} }
this.savedViewService.patch(savedView).subscribe(result => { this.savedViewService.patch(savedView).subscribe(result => {
this.toastService.showInfo($localize`View "${this.list.activeSavedViewTitle}" saved successfully.`) this.toastService.showInfo($localize`View "${this.list.activeSavedViewTitle}" saved successfully.`)
this.unmodifiedFilterRules = this.list.filterRules
}) })
} }
} }
@@ -141,46 +143,6 @@ export class DocumentListComponent implements OnInit, OnDestroy {
}) })
} }
resetFilters(): void {
this.filterRulesModified = false
if (this.list.activeSavedViewId) {
this.savedViewService.getCached(this.list.activeSavedViewId).subscribe(viewUntouched => {
this.list.filterRules = viewUntouched.filter_rules
this.list.reload()
})
} else {
this.list.filterRules = []
this.list.reload()
}
}
rulesChanged() {
let modified = false
if (this.list.activeSavedViewId == null) {
modified = this.list.filterRules.length > 0 // documents list is modified if it has any filters
} else {
// compare savedView current filters vs original
this.savedViewService.getCached(this.list.activeSavedViewId).subscribe(view => {
let filterRulesInitial = view.filter_rules
if (this.list.filterRules.length !== filterRulesInitial.length) modified = true
else {
modified = this.list.filterRules.some(rule => {
return (filterRulesInitial.find(fri => fri.rule_type == rule.rule_type && fri.value == rule.value) == undefined)
})
if (!modified) {
// only check other direction if we havent already determined is modified
modified = filterRulesInitial.some(rule => {
this.list.filterRules.find(fr => fr.rule_type == rule.rule_type && fr.value == rule.value) == undefined
})
}
}
})
}
this.filterRulesModified = modified
}
toggleSelected(document: PaperlessDocument, event: MouseEvent): void { toggleSelected(document: PaperlessDocument, event: MouseEvent): void {
if (!event.shiftKey) this.list.toggleSelected(document) if (!event.shiftKey) this.list.toggleSelected(document)
else this.list.selectRangeTo(document) else this.list.selectRangeTo(document)
@@ -207,6 +169,10 @@ export class DocumentListComponent implements OnInit, OnDestroy {
}) })
} }
clickMoreLike(documentID: number) {
this.list.quickFilter([{rule_type: FILTER_FULLTEXT_MORELIKE, value: documentID.toString()}])
}
trackByDocumentId(index, item: PaperlessDocument) { trackByDocumentId(index, item: PaperlessDocument) {
return item.id return item.id
} }

View File

@@ -1,7 +1,6 @@
<div class="row"> <div class="row">
<div class="col mb-2 mb-xl-0"> <div class="col mb-2 mb-xl-0">
<div class="form-inline d-flex align-items-center"> <div class="form-inline d-flex align-items-center">
<label class="text-muted mr-2 mb-0" i18n>Filter by:</label>
<div class="input-group input-group-sm flex-fill w-auto"> <div class="input-group input-group-sm flex-fill w-auto">
<div class="input-group-prepend" ngbDropdown> <div class="input-group-prepend" ngbDropdown>
<button class="btn btn-outline-primary" ngbDropdownToggle>{{textFilterTargetName}}</button> <button class="btn btn-outline-primary" ngbDropdownToggle>{{textFilterTargetName}}</button>
@@ -9,7 +8,7 @@
<button *ngFor="let t of textFilterTargets" ngbDropdownItem [class.active]="textFilterTarget == t.id" (click)="changeTextFilterTarget(t.id)">{{t.name}}</button> <button *ngFor="let t of textFilterTargets" ngbDropdownItem [class.active]="textFilterTarget == t.id" (click)="changeTextFilterTarget(t.id)">{{t.name}}</button>
</div> </div>
</div> </div>
<input class="form-control form-control-sm" type="text" [(ngModel)]="textFilter"> <input #textFilterInput class="form-control form-control-sm" type="text" [(ngModel)]="textFilter" [readonly]="textFilterTarget == 'fulltext-morelike'">
</div> </div>
</div> </div>
</div> </div>

View File

@@ -1,4 +1,4 @@
import { Component, EventEmitter, Input, Output, OnInit, OnDestroy } from '@angular/core'; import { Component, EventEmitter, Input, Output, OnInit, OnDestroy, ViewChild, ElementRef } from '@angular/core';
import { PaperlessTag } from 'src/app/data/paperless-tag'; import { PaperlessTag } from 'src/app/data/paperless-tag';
import { PaperlessCorrespondent } from 'src/app/data/paperless-correspondent'; import { PaperlessCorrespondent } from 'src/app/data/paperless-correspondent';
import { PaperlessDocumentType } from 'src/app/data/paperless-document-type'; import { PaperlessDocumentType } from 'src/app/data/paperless-document-type';
@@ -8,13 +8,17 @@ import { DocumentTypeService } from 'src/app/services/rest/document-type.service
import { TagService } from 'src/app/services/rest/tag.service'; import { TagService } from 'src/app/services/rest/tag.service';
import { CorrespondentService } from 'src/app/services/rest/correspondent.service'; import { CorrespondentService } from 'src/app/services/rest/correspondent.service';
import { FilterRule } from 'src/app/data/filter-rule'; import { FilterRule } from 'src/app/data/filter-rule';
import { FILTER_ADDED_AFTER, FILTER_ADDED_BEFORE, FILTER_ASN, FILTER_CORRESPONDENT, FILTER_CREATED_AFTER, FILTER_CREATED_BEFORE, FILTER_DOCUMENT_TYPE, FILTER_HAS_ANY_TAG, FILTER_HAS_TAG, FILTER_TITLE, FILTER_TITLE_CONTENT } from 'src/app/data/filter-rule-type'; import { FILTER_ADDED_AFTER, FILTER_ADDED_BEFORE, FILTER_ASN, FILTER_CORRESPONDENT, FILTER_CREATED_AFTER, FILTER_CREATED_BEFORE, FILTER_DOCUMENT_TYPE, FILTER_FULLTEXT_MORELIKE, FILTER_FULLTEXT_QUERY, FILTER_HAS_ANY_TAG, FILTER_HAS_TAG, FILTER_TITLE, FILTER_TITLE_CONTENT } from 'src/app/data/filter-rule-type';
import { FilterableDropdownSelectionModel } from '../../common/filterable-dropdown/filterable-dropdown.component'; import { FilterableDropdownSelectionModel } from '../../common/filterable-dropdown/filterable-dropdown.component';
import { ToggleableItemState } from '../../common/filterable-dropdown/toggleable-dropdown-button/toggleable-dropdown-button.component'; import { ToggleableItemState } from '../../common/filterable-dropdown/toggleable-dropdown-button/toggleable-dropdown-button.component';
import { DocumentService } from 'src/app/services/rest/document.service';
import { PaperlessDocument } from 'src/app/data/paperless-document';
const TEXT_FILTER_TARGET_TITLE = "title" const TEXT_FILTER_TARGET_TITLE = "title"
const TEXT_FILTER_TARGET_TITLE_CONTENT = "title-content" const TEXT_FILTER_TARGET_TITLE_CONTENT = "title-content"
const TEXT_FILTER_TARGET_ASN = "asn" const TEXT_FILTER_TARGET_ASN = "asn"
const TEXT_FILTER_TARGET_FULLTEXT_QUERY = "fulltext-query"
const TEXT_FILTER_TARGET_FULLTEXT_MORELIKE = "fulltext-morelike"
@Component({ @Component({
selector: 'app-filter-editor', selector: 'app-filter-editor',
@@ -64,20 +68,33 @@ export class FilterEditorComponent implements OnInit, OnDestroy {
constructor( constructor(
private documentTypeService: DocumentTypeService, private documentTypeService: DocumentTypeService,
private tagService: TagService, private tagService: TagService,
private correspondentService: CorrespondentService private correspondentService: CorrespondentService,
private documentService: DocumentService
) { } ) { }
@ViewChild("textFilterInput")
textFilterInput: ElementRef
tags: PaperlessTag[] = [] tags: PaperlessTag[] = []
correspondents: PaperlessCorrespondent[] = [] correspondents: PaperlessCorrespondent[] = []
documentTypes: PaperlessDocumentType[] = [] documentTypes: PaperlessDocumentType[] = []
_textFilter = "" _textFilter = ""
_moreLikeId: number
_moreLikeDoc: PaperlessDocument
textFilterTargets = [ get textFilterTargets() {
{id: TEXT_FILTER_TARGET_TITLE, name: $localize`Title`}, let targets = [
{id: TEXT_FILTER_TARGET_TITLE_CONTENT, name: $localize`Title & content`}, {id: TEXT_FILTER_TARGET_TITLE, name: $localize`Title`},
{id: TEXT_FILTER_TARGET_ASN, name: $localize`ASN`} {id: TEXT_FILTER_TARGET_TITLE_CONTENT, name: $localize`Title & content`},
] {id: TEXT_FILTER_TARGET_ASN, name: $localize`ASN`},
{id: TEXT_FILTER_TARGET_FULLTEXT_QUERY, name: $localize`Advanced search`}
]
if (this.textFilterTarget == TEXT_FILTER_TARGET_FULLTEXT_MORELIKE) {
targets.push({id: TEXT_FILTER_TARGET_FULLTEXT_MORELIKE, name: $localize`More like`})
}
return targets
}
textFilterTarget = TEXT_FILTER_TARGET_TITLE_CONTENT textFilterTarget = TEXT_FILTER_TARGET_TITLE_CONTENT
@@ -95,12 +112,28 @@ export class FilterEditorComponent implements OnInit, OnDestroy {
dateAddedBefore: string dateAddedBefore: string
dateAddedAfter: string dateAddedAfter: string
_unmodifiedFilterRules: FilterRule[] = []
_filterRules: FilterRule[] = []
@Input()
set unmodifiedFilterRules(value: FilterRule[]) {
this._unmodifiedFilterRules = value
this.checkIfRulesHaveChanged()
}
get unmodifiedFilterRules(): FilterRule[] {
return this._unmodifiedFilterRules
}
@Input() @Input()
set filterRules (value: FilterRule[]) { set filterRules (value: FilterRule[]) {
this._filterRules = value
this.documentTypeSelectionModel.clear(false) this.documentTypeSelectionModel.clear(false)
this.tagSelectionModel.clear(false) this.tagSelectionModel.clear(false)
this.correspondentSelectionModel.clear(false) this.correspondentSelectionModel.clear(false)
this._textFilter = null this._textFilter = null
this._moreLikeId = null
this.dateAddedBefore = null this.dateAddedBefore = null
this.dateAddedAfter = null this.dateAddedAfter = null
this.dateCreatedBefore = null this.dateCreatedBefore = null
@@ -120,6 +153,18 @@ export class FilterEditorComponent implements OnInit, OnDestroy {
this._textFilter = rule.value this._textFilter = rule.value
this.textFilterTarget = TEXT_FILTER_TARGET_ASN this.textFilterTarget = TEXT_FILTER_TARGET_ASN
break break
case FILTER_FULLTEXT_QUERY:
this._textFilter = rule.value
this.textFilterTarget = TEXT_FILTER_TARGET_FULLTEXT_QUERY
break
case FILTER_FULLTEXT_MORELIKE:
this._moreLikeId = +rule.value
this.textFilterTarget = TEXT_FILTER_TARGET_FULLTEXT_MORELIKE
this.documentService.get(this._moreLikeId).subscribe(result => {
this._moreLikeDoc = result
this._textFilter = result.title
})
break
case FILTER_CREATED_AFTER: case FILTER_CREATED_AFTER:
this.dateCreatedAfter = rule.value this.dateCreatedAfter = rule.value
break break
@@ -146,6 +191,7 @@ export class FilterEditorComponent implements OnInit, OnDestroy {
break break
} }
}) })
this.checkIfRulesHaveChanged()
} }
get filterRules(): FilterRule[] { get filterRules(): FilterRule[] {
@@ -159,6 +205,12 @@ export class FilterEditorComponent implements OnInit, OnDestroy {
if (this._textFilter && this.textFilterTarget == TEXT_FILTER_TARGET_ASN) { if (this._textFilter && this.textFilterTarget == TEXT_FILTER_TARGET_ASN) {
filterRules.push({rule_type: FILTER_ASN, value: this._textFilter}) filterRules.push({rule_type: FILTER_ASN, value: this._textFilter})
} }
if (this._textFilter && this.textFilterTarget == TEXT_FILTER_TARGET_FULLTEXT_QUERY) {
filterRules.push({rule_type: FILTER_FULLTEXT_QUERY, value: this._textFilter})
}
if (this._moreLikeId && this.textFilterTarget == TEXT_FILTER_TARGET_FULLTEXT_MORELIKE) {
filterRules.push({rule_type: FILTER_FULLTEXT_MORELIKE, value: this._moreLikeId?.toString()})
}
if (this.tagSelectionModel.isNoneSelected()) { if (this.tagSelectionModel.isNoneSelected()) {
filterRules.push({rule_type: FILTER_HAS_ANY_TAG, value: "false"}) filterRules.push({rule_type: FILTER_HAS_ANY_TAG, value: "false"})
} else { } else {
@@ -190,12 +242,27 @@ export class FilterEditorComponent implements OnInit, OnDestroy {
@Output() @Output()
filterRulesChange = new EventEmitter<FilterRule[]>() filterRulesChange = new EventEmitter<FilterRule[]>()
@Output()
reset = new EventEmitter()
@Input()
rulesModified: boolean = false rulesModified: boolean = false
private checkIfRulesHaveChanged() {
let modified = false
if (this._unmodifiedFilterRules.length != this._filterRules.length) {
modified = true
} else {
modified = this._unmodifiedFilterRules.some(rule => {
return (this._filterRules.find(fri => fri.rule_type == rule.rule_type && fri.value == rule.value) == undefined)
})
if (!modified) {
// only check other direction if we havent already determined is modified
modified = this._filterRules.some(rule => {
this._unmodifiedFilterRules.find(fr => fr.rule_type == rule.rule_type && fr.value == rule.value) == undefined
})
}
}
this.rulesModified = modified
}
updateRules() { updateRules() {
this.filterRulesChange.next(this.filterRules) this.filterRulesChange.next(this.filterRules)
} }
@@ -223,8 +290,12 @@ export class FilterEditorComponent implements OnInit, OnDestroy {
distinctUntilChanged() distinctUntilChanged()
).subscribe(text => { ).subscribe(text => {
this._textFilter = text this._textFilter = text
this.documentService.searchQuery = text
this.updateRules() this.updateRules()
}) })
if (this._textFilter) this.documentService.searchQuery = this._textFilter
} }
ngOnDestroy() { ngOnDestroy() {
@@ -232,7 +303,9 @@ export class FilterEditorComponent implements OnInit, OnDestroy {
} }
resetSelected() { resetSelected() {
this.reset.next() this.textFilterTarget = TEXT_FILTER_TARGET_TITLE_CONTENT
this.filterRules = this._unmodifiedFilterRules
this.updateRules()
} }
toggleTag(tagId: number) { toggleTag(tagId: number) {
@@ -260,7 +333,11 @@ export class FilterEditorComponent implements OnInit, OnDestroy {
} }
changeTextFilterTarget(target) { changeTextFilterTarget(target) {
if (this.textFilterTarget == TEXT_FILTER_TARGET_FULLTEXT_MORELIKE && target != TEXT_FILTER_TARGET_FULLTEXT_MORELIKE) {
this._textFilter = ""
}
this.textFilterTarget = target this.textFilterTarget = target
this.textFilterInput.nativeElement.focus()
this.updateRules() this.updateRules()
} }
} }

View File

@@ -1,3 +0,0 @@
... <span *ngFor="let fragment of highlights">
<span *ngFor="let token of fragment" [class.match]="token.highlight">{{token.text}}</span> ...
</span>

View File

@@ -1,4 +0,0 @@
.match {
color: black;
background-color: rgb(255, 211, 66);
}

View File

@@ -1,25 +0,0 @@
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { ResultHighlightComponent } from './result-highlight.component';
describe('ResultHighlightComponent', () => {
let component: ResultHighlightComponent;
let fixture: ComponentFixture<ResultHighlightComponent>;
beforeEach(async () => {
await TestBed.configureTestingModule({
declarations: [ ResultHighlightComponent ]
})
.compileComponents();
});
beforeEach(() => {
fixture = TestBed.createComponent(ResultHighlightComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});

View File

@@ -1,19 +0,0 @@
import { Component, Input, OnInit } from '@angular/core';
import { SearchHitHighlight } from 'src/app/data/search-result';
@Component({
selector: 'app-result-highlight',
templateUrl: './result-highlight.component.html',
styleUrls: ['./result-highlight.component.scss']
})
export class ResultHighlightComponent implements OnInit {
constructor() { }
@Input()
highlights: SearchHitHighlight[][]
ngOnInit(): void {
}
}

View File

@@ -1,26 +0,0 @@
<app-page-header i18n-title title="Search results">
</app-page-header>
<div *ngIf="errorMessage" class="alert alert-danger" i18n>Invalid search query: {{errorMessage}}</div>
<p *ngIf="more_like" i18n>Showing documents similar to <a routerLink="/documents/{{more_like}}">{{more_like_doc?.original_file_name}}</a></p>
<p *ngIf="query">
<ng-container i18n>Search query: <i>{{query}}</i></ng-container>
<ng-container *ngIf="correctedQuery">
- <ng-container i18n>Did you mean "<a [routerLink]="" (click)="searchCorrectedQuery()">{{correctedQuery}}</a>"?</ng-container>
</ng-container>
</p>
<div *ngIf="!errorMessage" [class.result-content-searching]="searching" infiniteScroll (scrolled)="onScroll()">
<p i18n>{resultCount, plural, =0 {No results} =1 {One result} other {{{resultCount}} results}}</p>
<ng-container *ngFor="let result of results">
<app-document-card-large *ngIf="result.document"
[document]="result.document"
[details]="result.highlights"
[searchScore]="result.score / maxScore"
[moreLikeThis]="true">
</app-document-card-large>
</ng-container>
</div>

View File

@@ -1,15 +0,0 @@
.result-content {
color: darkgray;
}
.doc-img {
object-fit: cover;
object-position: top;
height: 100%;
position: absolute;
}
.result-content-searching {
opacity: 0.3;
}

View File

@@ -1,95 +0,0 @@
import { Component, OnInit } from '@angular/core';
import { ActivatedRoute, Router } from '@angular/router';
import { PaperlessDocument } from 'src/app/data/paperless-document';
import { PaperlessDocumentType } from 'src/app/data/paperless-document-type';
import { SearchHit } from 'src/app/data/search-result';
import { DocumentService } from 'src/app/services/rest/document.service';
import { SearchService } from 'src/app/services/rest/search.service';
@Component({
selector: 'app-search',
templateUrl: './search.component.html',
styleUrls: ['./search.component.scss']
})
export class SearchComponent implements OnInit {
results: SearchHit[] = []
query: string = ""
more_like: number
more_like_doc: PaperlessDocument
searching = false
currentPage = 1
pageCount = 1
resultCount
correctedQuery: string = null
errorMessage: string
get maxScore() {
return this.results?.length > 0 ? this.results[0].score : 100
}
constructor(private searchService: SearchService, private route: ActivatedRoute, private router: Router, private documentService: DocumentService) { }
ngOnInit(): void {
this.route.queryParamMap.subscribe(paramMap => {
window.scrollTo(0, 0)
this.query = paramMap.get('query')
this.more_like = paramMap.has('more_like') ? +paramMap.get('more_like') : null
if (this.more_like) {
this.documentService.get(this.more_like).subscribe(r => {
this.more_like_doc = r
})
} else {
this.more_like_doc = null
}
this.searching = true
this.currentPage = 1
this.loadPage()
})
}
searchCorrectedQuery() {
this.router.navigate(["search"], {queryParams: {query: this.correctedQuery, more_like: this.more_like}})
}
loadPage(append: boolean = false) {
this.errorMessage = null
this.correctedQuery = null
this.searchService.search(this.query, this.currentPage, this.more_like).subscribe(result => {
if (append) {
this.results.push(...result.results)
} else {
this.results = result.results
}
this.pageCount = result.page_count
this.searching = false
this.resultCount = result.count
this.correctedQuery = result.corrected_query
}, error => {
this.searching = false
this.resultCount = 1
this.pageCount = 1
this.results = []
this.errorMessage = error.error
})
}
onScroll() {
if (this.currentPage < this.pageCount) {
this.currentPage += 1
this.loadPage(true)
}
}
}

View File

@@ -22,6 +22,9 @@ export const FILTER_ASN_ISNULL = 18
export const FILTER_TITLE_CONTENT = 19 export const FILTER_TITLE_CONTENT = 19
export const FILTER_FULLTEXT_QUERY = 20
export const FILTER_FULLTEXT_MORELIKE = 21
export const FILTER_RULE_TYPES: FilterRuleType[] = [ export const FILTER_RULE_TYPES: FilterRuleType[] = [
{id: FILTER_TITLE, filtervar: "title__icontains", datatype: "string", multi: false, default: ""}, {id: FILTER_TITLE, filtervar: "title__icontains", datatype: "string", multi: false, default: ""},
@@ -51,7 +54,11 @@ export const FILTER_RULE_TYPES: FilterRuleType[] = [
{id: FILTER_MODIFIED_AFTER, filtervar: "modified__date__gt", datatype: "date", multi: false}, {id: FILTER_MODIFIED_AFTER, filtervar: "modified__date__gt", datatype: "date", multi: false},
{id: FILTER_ASN_ISNULL, filtervar: "archive_serial_number__isnull", datatype: "boolean", multi: false}, {id: FILTER_ASN_ISNULL, filtervar: "archive_serial_number__isnull", datatype: "boolean", multi: false},
{id: FILTER_TITLE_CONTENT, filtervar: "title_content", datatype: "string", multi: false} {id: FILTER_TITLE_CONTENT, filtervar: "title_content", datatype: "string", multi: false},
{id: FILTER_FULLTEXT_QUERY, filtervar: "query", datatype: "string", multi: false},
{id: FILTER_FULLTEXT_MORELIKE, filtervar: "more_like_id", datatype: "number", multi: false},
] ]
export interface FilterRuleType { export interface FilterRuleType {

View File

@@ -4,6 +4,15 @@ import { PaperlessTag } from './paperless-tag'
import { PaperlessDocumentType } from './paperless-document-type' import { PaperlessDocumentType } from './paperless-document-type'
import { Observable } from 'rxjs' import { Observable } from 'rxjs'
export interface SearchHit {
score?: number
rank?: number
highlights?: string
}
export interface PaperlessDocument extends ObjectWithId { export interface PaperlessDocument extends ObjectWithId {
correspondent$?: Observable<PaperlessCorrespondent> correspondent$?: Observable<PaperlessCorrespondent>
@@ -40,4 +49,6 @@ export interface PaperlessDocument extends ObjectWithId {
archive_serial_number?: number archive_serial_number?: number
__search_hit__?: SearchHit
} }

View File

@@ -1,29 +0,0 @@
import { PaperlessDocument } from './paperless-document'
export class SearchHitHighlight {
text?: string
term?: number
}
export interface SearchHit {
id?: number
title?: string
score?: number
rank?: number
highlights?: SearchHitHighlight[][]
document?: PaperlessDocument
}
export interface SearchResult {
count?: number
page?: number
page_count?: number
corrected_query?: string
results?: SearchHit[]
}

View File

@@ -1,7 +1,8 @@
import { Injectable } from '@angular/core'; import { Injectable } from '@angular/core';
import { Router } from '@angular/router'; import { ActivatedRoute, Router } from '@angular/router';
import { Observable } from 'rxjs'; import { Observable } from 'rxjs';
import { cloneFilterRules, FilterRule } from '../data/filter-rule'; import { cloneFilterRules, FilterRule } from '../data/filter-rule';
import { FILTER_FULLTEXT_MORELIKE, FILTER_FULLTEXT_QUERY } from '../data/filter-rule-type';
import { PaperlessDocument } from '../data/paperless-document'; import { PaperlessDocument } from '../data/paperless-document';
import { PaperlessSavedView } from '../data/paperless-saved-view'; import { PaperlessSavedView } from '../data/paperless-saved-view';
import { DOCUMENT_LIST_SERVICE } from '../data/storage-keys'; import { DOCUMENT_LIST_SERVICE } from '../data/storage-keys';
@@ -38,6 +39,7 @@ interface ListViewState {
export class DocumentListViewService { export class DocumentListViewService {
isReloading: boolean = false isReloading: boolean = false
error: string = null
rangeSelectionAnchorIndex: number rangeSelectionAnchorIndex: number
lastRangeSelectionToIndex: number lastRangeSelectionToIndex: number
@@ -101,6 +103,7 @@ export class DocumentListViewService {
reload(onFinish?) { reload(onFinish?) {
this.isReloading = true this.isReloading = true
this.error = null
let activeListViewState = this.activeListViewState let activeListViewState = this.activeListViewState
this.documentService.listFiltered( this.documentService.listFiltered(
@@ -124,12 +127,17 @@ export class DocumentListViewService {
// this happens when applying a filter: the current page might not be available anymore due to the reduced result set. // this happens when applying a filter: the current page might not be available anymore due to the reduced result set.
activeListViewState.currentPage = 1 activeListViewState.currentPage = 1
this.reload() this.reload()
} else {
this.error = error.error
} }
}) })
} }
set filterRules(filterRules: FilterRule[]) { set filterRules(filterRules: FilterRule[]) {
this.activeListViewState.filterRules = filterRules this.activeListViewState.filterRules = filterRules
if (filterRules.find(r => (r.rule_type == FILTER_FULLTEXT_QUERY || r.rule_type == FILTER_FULLTEXT_MORELIKE))) {
this.activeListViewState.currentPage = 1
}
this.reload() this.reload()
this.reduceSelectionToFilter() this.reduceSelectionToFilter()
this.saveDocumentListView() this.saveDocumentListView()
@@ -197,7 +205,7 @@ export class DocumentListViewService {
sortField: this.activeListViewState.sortField, sortField: this.activeListViewState.sortField,
sortReverse: this.activeListViewState.sortReverse sortReverse: this.activeListViewState.sortReverse
} }
sessionStorage.setItem(DOCUMENT_LIST_SERVICE.CURRENT_VIEW_CONFIG, JSON.stringify(savedState)) localStorage.setItem(DOCUMENT_LIST_SERVICE.CURRENT_VIEW_CONFIG, JSON.stringify(savedState))
} }
} }
@@ -207,7 +215,11 @@ export class DocumentListViewService {
this.activeListViewState.currentPage = 1 this.activeListViewState.currentPage = 1
this.reduceSelectionToFilter() this.reduceSelectionToFilter()
this.saveDocumentListView() this.saveDocumentListView()
this.router.navigate(["documents"]) if (this.router.url == "/documents") {
this.reload()
} else {
this.router.navigate(["documents"])
}
} }
getLastPage(): number { getLastPage(): number {
@@ -317,8 +329,8 @@ export class DocumentListViewService {
return this.documents.map(d => d.id).indexOf(documentID) return this.documents.map(d => d.id).indexOf(documentID)
} }
constructor(private documentService: DocumentService, private settings: SettingsService, private router: Router) { constructor(private documentService: DocumentService, private settings: SettingsService, private router: Router, private route: ActivatedRoute) {
let documentListViewConfigJson = sessionStorage.getItem(DOCUMENT_LIST_SERVICE.CURRENT_VIEW_CONFIG) let documentListViewConfigJson = localStorage.getItem(DOCUMENT_LIST_SERVICE.CURRENT_VIEW_CONFIG)
if (documentListViewConfigJson) { if (documentListViewConfigJson) {
try { try {
let savedState: ListViewState = JSON.parse(documentListViewConfigJson) let savedState: ListViewState = JSON.parse(documentListViewConfigJson)
@@ -332,7 +344,7 @@ export class DocumentListViewService {
let newState = Object.assign(this.defaultListViewState(), savedState) let newState = Object.assign(this.defaultListViewState(), savedState)
this.listViewStates.set(null, newState) this.listViewStates.set(null, newState)
} catch (e) { } catch (e) {
sessionStorage.removeItem(DOCUMENT_LIST_SERVICE.CURRENT_VIEW_CONFIG) localStorage.removeItem(DOCUMENT_LIST_SERVICE.CURRENT_VIEW_CONFIG)
} }
} }
} }

View File

@@ -39,6 +39,8 @@ export interface SelectionData {
}) })
export class DocumentService extends AbstractPaperlessService<PaperlessDocument> { export class DocumentService extends AbstractPaperlessService<PaperlessDocument> {
private _searchQuery: string
constructor(http: HttpClient, private correspondentService: CorrespondentService, private documentTypeService: DocumentTypeService, private tagService: TagService) { constructor(http: HttpClient, private correspondentService: CorrespondentService, private documentTypeService: DocumentTypeService, private tagService: TagService) {
super(http, 'documents') super(http, 'documents')
} }
@@ -92,6 +94,7 @@ export class DocumentService extends AbstractPaperlessService<PaperlessDocument>
getPreviewUrl(id: number, original: boolean = false): string { getPreviewUrl(id: number, original: boolean = false): string {
let url = this.getResourceUrl(id, 'preview') let url = this.getResourceUrl(id, 'preview')
if (this._searchQuery) url += `#search="${this._searchQuery}"`
if (original) { if (original) {
url += "?original=true" url += "?original=true"
} }
@@ -138,4 +141,8 @@ export class DocumentService extends AbstractPaperlessService<PaperlessDocument>
return this.http.post(this.getResourceUrl(null, 'bulk_download'), {"documents": ids, "content": content}, { responseType: 'blob' }) return this.http.post(this.getResourceUrl(null, 'bulk_download'), {"documents": ids, "content": content}, { responseType: 'blob' })
} }
public set searchQuery(query: string) {
this._searchQuery = query
}
} }

View File

@@ -2,8 +2,6 @@ import { HttpClient, HttpParams } from '@angular/common/http';
import { Injectable } from '@angular/core'; import { Injectable } from '@angular/core';
import { Observable } from 'rxjs'; import { Observable } from 'rxjs';
import { map } from 'rxjs/operators'; import { map } from 'rxjs/operators';
import { PaperlessDocument } from 'src/app/data/paperless-document';
import { SearchResult } from 'src/app/data/search-result';
import { environment } from 'src/environments/environment'; import { environment } from 'src/environments/environment';
import { DocumentService } from './document.service'; import { DocumentService } from './document.service';
@@ -13,30 +11,7 @@ import { DocumentService } from './document.service';
}) })
export class SearchService { export class SearchService {
constructor(private http: HttpClient, private documentService: DocumentService) { } constructor(private http: HttpClient) { }
search(query: string, page?: number, more_like?: number): Observable<SearchResult> {
let httpParams = new HttpParams()
if (query) {
httpParams = httpParams.set('query', query)
}
if (page) {
httpParams = httpParams.set('page', page.toString())
}
if (more_like) {
httpParams = httpParams.set('more_like', more_like.toString())
}
return this.http.get<SearchResult>(`${environment.apiBaseUrl}search/`, {params: httpParams}).pipe(
map(result => {
result.results.forEach(hit => {
if (hit.document) {
this.documentService.addObservablesToDocument(hit.document)
}
})
return result
})
)
}
autocomplete(term: string): Observable<string[]> { autocomplete(term: string): Observable<string[]> {
return this.http.get<string[]>(`${environment.apiBaseUrl}search/autocomplete/`, {params: new HttpParams().set('term', term)}) return this.http.get<string[]>(`${environment.apiBaseUrl}search/autocomplete/`, {params: new HttpParams().set('term', term)})

View File

@@ -3,7 +3,7 @@ export const environment = {
apiBaseUrl: "/api/", apiBaseUrl: "/api/",
apiVersion: "2", apiVersion: "2",
appTitle: "Paperless-ng", appTitle: "Paperless-ng",
version: "1.3.2", version: "1.4.0",
webSocketHost: window.location.host, webSocketHost: window.location.host,
webSocketProtocol: (window.location.protocol == "https:" ? "wss:" : "ws:") webSocketProtocol: (window.location.protocol == "https:" ? "wss:" : "ws:")
}; };

View File

@@ -54,7 +54,7 @@
<source>Documents</source> <source>Documents</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">49</context> <context context-type="linenumber">51</context>
</context-group> </context-group>
<target state="translated">Dokumenty</target> <target state="translated">Dokumenty</target>
</trans-unit> </trans-unit>
@@ -62,7 +62,7 @@
<source>View &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot; saved successfully.</source> <source>View &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot; saved successfully.</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">115</context> <context context-type="linenumber">116</context>
</context-group> </context-group>
<target state="needs-translation">View "<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>" saved successfully.</target> <target state="needs-translation">View "<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>" saved successfully.</target>
</trans-unit> </trans-unit>
@@ -70,7 +70,7 @@
<source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully.</source> <source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully.</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">136</context> <context context-type="linenumber">138</context>
</context-group> </context-group>
<target state="needs-translation">View "<x id="PH" equiv-text="savedView.name"/>" created successfully.</target> <target state="needs-translation">View "<x id="PH" equiv-text="savedView.name"/>" created successfully.</target>
</trans-unit> </trans-unit>
@@ -166,7 +166,7 @@
<source>ASN</source> <source>ASN</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">105</context> <context context-type="linenumber">111</context>
</context-group> </context-group>
<target state="needs-translation">ASN</target> <target state="needs-translation">ASN</target>
</trans-unit> </trans-unit>
@@ -174,7 +174,7 @@
<source>Correspondent</source> <source>Correspondent</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">111</context> <context context-type="linenumber">117</context>
</context-group> </context-group>
<target state="needs-translation">Correspondent</target> <target state="needs-translation">Correspondent</target>
</trans-unit> </trans-unit>
@@ -182,7 +182,7 @@
<source>Title</source> <source>Title</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">117</context> <context context-type="linenumber">123</context>
</context-group> </context-group>
<target state="needs-translation">Title</target> <target state="needs-translation">Title</target>
</trans-unit> </trans-unit>
@@ -190,7 +190,7 @@
<source>Document type</source> <source>Document type</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">123</context> <context context-type="linenumber">129</context>
</context-group> </context-group>
<target state="needs-translation">Document type</target> <target state="needs-translation">Document type</target>
</trans-unit> </trans-unit>
@@ -198,7 +198,7 @@
<source>Created</source> <source>Created</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">129</context> <context context-type="linenumber">135</context>
</context-group> </context-group>
<target state="needs-translation">Created</target> <target state="needs-translation">Created</target>
</trans-unit> </trans-unit>
@@ -206,7 +206,7 @@
<source>Added</source> <source>Added</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">135</context> <context context-type="linenumber">141</context>
</context-group> </context-group>
<target state="needs-translation">Added</target> <target state="needs-translation">Added</target>
</trans-unit> </trans-unit>
@@ -214,7 +214,7 @@
<source>Confirm delete</source> <source>Confirm delete</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">203</context> <context context-type="linenumber">204</context>
</context-group> </context-group>
<target state="needs-translation">Confirm delete</target> <target state="needs-translation">Confirm delete</target>
</trans-unit> </trans-unit>
@@ -222,7 +222,7 @@
<source>Do you really want to delete document &quot;<x id="PH" equiv-text="this.document.title"/>&quot;?</source> <source>Do you really want to delete document &quot;<x id="PH" equiv-text="this.document.title"/>&quot;?</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">204</context> <context context-type="linenumber">205</context>
</context-group> </context-group>
<target state="needs-translation">Do you really want to delete document "<x id="PH" equiv-text="this.document.title"/>"?</target> <target state="needs-translation">Do you really want to delete document "<x id="PH" equiv-text="this.document.title"/>"?</target>
</trans-unit> </trans-unit>
@@ -230,7 +230,7 @@
<source>The files for this document will be deleted permanently. This operation cannot be undone.</source> <source>The files for this document will be deleted permanently. This operation cannot be undone.</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">205</context> <context context-type="linenumber">206</context>
</context-group> </context-group>
<target state="needs-translation">The files for this document will be deleted permanently. This operation cannot be undone.</target> <target state="needs-translation">The files for this document will be deleted permanently. This operation cannot be undone.</target>
</trans-unit> </trans-unit>
@@ -238,7 +238,7 @@
<source>Delete document</source> <source>Delete document</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">207</context> <context context-type="linenumber">208</context>
</context-group> </context-group>
<target state="needs-translation">Delete document</target> <target state="needs-translation">Delete document</target>
</trans-unit> </trans-unit>
@@ -246,7 +246,7 @@
<source>Error deleting document: <x id="PH" equiv-text="JSON.stringify(error)"/></source> <source>Error deleting document: <x id="PH" equiv-text="JSON.stringify(error)"/></source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">214</context> <context context-type="linenumber">215</context>
</context-group> </context-group>
<target state="needs-translation">Error deleting document: <x id="PH" equiv-text="JSON.stringify(error)"/></target> <target state="needs-translation">Error deleting document: <x id="PH" equiv-text="JSON.stringify(error)"/></target>
</trans-unit> </trans-unit>
@@ -1042,54 +1042,6 @@
</context-group> </context-group>
<target state="needs-translation">Edit document type</target> <target state="needs-translation">Edit document type</target>
</trans-unit> </trans-unit>
<trans-unit id="49c9ede51100b454f7841b24cd02355c6622bf44" datatype="html">
<source>Search results</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/search/search.component.html</context>
<context context-type="linenumber">1</context>
</context-group>
<target state="needs-translation">Search results</target>
</trans-unit>
<trans-unit id="31976d04f98e8a38098f66ac3a83ad33b576e5db" datatype="html">
<source>Invalid search query: <x id="INTERPOLATION" equiv-text="{{errorMessage}}"/></source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/search/search.component.html</context>
<context context-type="linenumber">4</context>
</context-group>
<target state="needs-translation">Invalid search query: <x id="INTERPOLATION" equiv-text="{{errorMessage}}"/></target>
</trans-unit>
<trans-unit id="f7f2e30106223a69bcf0f8e586e6be9dc4e72226" datatype="html">
<source>Showing documents similar to <x id="START_LINK" equiv-text="&lt;a routerLink=&quot;/documents/{{more_like}}&quot;&gt;{{more_like_doc?.original_file_name}}"/><x id="INTERPOLATION" equiv-text="{{more_like_doc?.original_file_name}}&lt;/a&gt;"/><x id="CLOSE_LINK" equiv-text="&lt;/a&gt;"/></source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/search/search.component.html</context>
<context context-type="linenumber">6</context>
</context-group>
<target state="needs-translation">Showing documents similar to <x id="START_LINK" equiv-text="&lt;a routerLink=&quot;/documents/{{more_like}}&quot;&gt;{{more_like_doc?.original_file_name}}"/><x id="INTERPOLATION" equiv-text="{{more_like_doc?.original_file_name}}&lt;/a&gt;"/><x id="CLOSE_LINK" equiv-text="&lt;/a&gt;"/></target>
</trans-unit>
<trans-unit id="6e0b0a1ea16f18f2fb1586c53d99d2f22e1aee2e" datatype="html">
<source>Search query: <x id="START_ITALIC_TEXT" equiv-text="&lt;i&gt;{{query}}"/><x id="INTERPOLATION" equiv-text="{{query}}&lt;/i&gt;"/><x id="CLOSE_ITALIC_TEXT" equiv-text="&lt;/i&gt;"/></source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/search/search.component.html</context>
<context context-type="linenumber">9</context>
</context-group>
<target state="needs-translation">Search query: <x id="START_ITALIC_TEXT" equiv-text="&lt;i&gt;{{query}}"/><x id="INTERPOLATION" equiv-text="{{query}}&lt;/i&gt;"/><x id="CLOSE_ITALIC_TEXT" equiv-text="&lt;/i&gt;"/></target>
</trans-unit>
<trans-unit id="afa760e48c97d64d19c1455d18b7834a2256e23f" datatype="html">
<source>Did you mean &quot;<x id="START_LINK" equiv-text="&lt;a [routerLink]=&quot;&quot; (click)=&quot;searchCorrectedQuery()&quot;&gt;{{correctedQuery}}"/><x id="INTERPOLATION" equiv-text="{{correctedQuery}}&lt;/a&gt;"/><x id="CLOSE_LINK" equiv-text="&lt;/a&gt;"/>&quot;?</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/search/search.component.html</context>
<context context-type="linenumber">11</context>
</context-group>
<target state="needs-translation">Did you mean "<x id="START_LINK" equiv-text="&lt;a [routerLink]=&quot;&quot; (click)=&quot;searchCorrectedQuery()&quot;&gt;{{correctedQuery}}"/><x id="INTERPOLATION" equiv-text="{{correctedQuery}}&lt;/a&gt;"/><x id="CLOSE_LINK" equiv-text="&lt;/a&gt;"/>"?</target>
</trans-unit>
<trans-unit id="fe6ced3fcc803bba5a2e6c1a067b9ce62542500e" datatype="html">
<source>{VAR_PLURAL, plural, =0 {No results} =1 {One result} other {<x id="INTERPOLATION"/> results}}</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/search/search.component.html</context>
<context context-type="linenumber">16</context>
</context-group>
<target state="needs-translation">{VAR_PLURAL, plural, =0 {No results} =1 {One result} other {<x id="INTERPOLATION"/> results}}</target>
</trans-unit>
<trans-unit id="41147374f427980a9f1a8cd5e3f4b1666e6f2418" datatype="html"> <trans-unit id="41147374f427980a9f1a8cd5e3f4b1666e6f2418" datatype="html">
<source>Paperless-ng</source> <source>Paperless-ng</source>
<context-group purpose="location"> <context-group purpose="location">
@@ -1187,35 +1139,11 @@
</context-group> </context-group>
<target state="needs-translation">Close all</target> <target state="needs-translation">Close all</target>
</trans-unit> </trans-unit>
<trans-unit id="5701618810648052610" datatype="html">
<source>Title</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">77</context>
</context-group>
<target state="needs-translation">Title</target>
</trans-unit>
<trans-unit id="3100631071441658964" datatype="html">
<source>Title &amp; content</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">78</context>
</context-group>
<target state="needs-translation">Title &amp; content</target>
</trans-unit>
<trans-unit id="7517688192215738656" datatype="html">
<source>ASN</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">79</context>
</context-group>
<target state="needs-translation">ASN</target>
</trans-unit>
<trans-unit id="5195932016807797291" datatype="html"> <trans-unit id="5195932016807797291" datatype="html">
<source>Correspondent: <x id="PH" equiv-text="this.correspondents.find(c =&gt; c.id == +rule.value)?.name"/></source> <source>Correspondent: <x id="PH" equiv-text="this.correspondents.find(c =&gt; c.id == +rule.value)?.name"/></source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">33</context> <context context-type="linenumber">37</context>
</context-group> </context-group>
<target state="needs-translation">Correspondent: <x id="PH" equiv-text="this.correspondents.find(c =&gt; c.id == +rule.value)?.name"/></target> <target state="needs-translation">Correspondent: <x id="PH" equiv-text="this.correspondents.find(c =&gt; c.id == +rule.value)?.name"/></target>
</trans-unit> </trans-unit>
@@ -1223,7 +1151,7 @@
<source>Without correspondent</source> <source>Without correspondent</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">35</context> <context context-type="linenumber">39</context>
</context-group> </context-group>
<target state="needs-translation">Without correspondent</target> <target state="needs-translation">Without correspondent</target>
</trans-unit> </trans-unit>
@@ -1231,7 +1159,7 @@
<source>Type: <x id="PH" equiv-text="this.documentTypes.find(dt =&gt; dt.id == +rule.value)?.name"/></source> <source>Type: <x id="PH" equiv-text="this.documentTypes.find(dt =&gt; dt.id == +rule.value)?.name"/></source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">40</context> <context context-type="linenumber">44</context>
</context-group> </context-group>
<target state="needs-translation">Type: <x id="PH" equiv-text="this.documentTypes.find(dt =&gt; dt.id == +rule.value)?.name"/></target> <target state="needs-translation">Type: <x id="PH" equiv-text="this.documentTypes.find(dt =&gt; dt.id == +rule.value)?.name"/></target>
</trans-unit> </trans-unit>
@@ -1239,7 +1167,7 @@
<source>Without document type</source> <source>Without document type</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">42</context> <context context-type="linenumber">46</context>
</context-group> </context-group>
<target state="needs-translation">Without document type</target> <target state="needs-translation">Without document type</target>
</trans-unit> </trans-unit>
@@ -1247,7 +1175,7 @@
<source>Tag: <x id="PH" equiv-text="this.tags.find(t =&gt; t.id == +rule.value)?.name"/></source> <source>Tag: <x id="PH" equiv-text="this.tags.find(t =&gt; t.id == +rule.value)?.name"/></source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">46</context> <context context-type="linenumber">50</context>
</context-group> </context-group>
<target state="needs-translation">Tag: <x id="PH" equiv-text="this.tags.find(t =&gt; t.id == +rule.value)?.name"/></target> <target state="needs-translation">Tag: <x id="PH" equiv-text="this.tags.find(t =&gt; t.id == +rule.value)?.name"/></target>
</trans-unit> </trans-unit>
@@ -1255,7 +1183,7 @@
<source>Without any tag</source> <source>Without any tag</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">50</context> <context context-type="linenumber">54</context>
</context-group> </context-group>
<target state="needs-translation">Without any tag</target> <target state="needs-translation">Without any tag</target>
</trans-unit> </trans-unit>
@@ -1263,7 +1191,7 @@
<source>Title: <x id="PH" equiv-text="rule.value"/></source> <source>Title: <x id="PH" equiv-text="rule.value"/></source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">54</context> <context context-type="linenumber">58</context>
</context-group> </context-group>
<target state="needs-translation">Title: <x id="PH" equiv-text="rule.value"/></target> <target state="needs-translation">Title: <x id="PH" equiv-text="rule.value"/></target>
</trans-unit> </trans-unit>
@@ -1271,10 +1199,50 @@
<source>ASN: <x id="PH" equiv-text="rule.value"/></source> <source>ASN: <x id="PH" equiv-text="rule.value"/></source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">57</context> <context context-type="linenumber">61</context>
</context-group> </context-group>
<target state="needs-translation">ASN: <x id="PH" equiv-text="rule.value"/></target> <target state="needs-translation">ASN: <x id="PH" equiv-text="rule.value"/></target>
</trans-unit> </trans-unit>
<trans-unit id="5701618810648052610" datatype="html">
<source>Title</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">85</context>
</context-group>
<target state="needs-translation">Title</target>
</trans-unit>
<trans-unit id="3100631071441658964" datatype="html">
<source>Title &amp; content</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">86</context>
</context-group>
<target state="needs-translation">Title &amp; content</target>
</trans-unit>
<trans-unit id="7517688192215738656" datatype="html">
<source>ASN</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">87</context>
</context-group>
<target state="needs-translation">ASN</target>
</trans-unit>
<trans-unit id="1010505078885609376" datatype="html">
<source>Advanced search</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">88</context>
</context-group>
<target state="needs-translation">Advanced search</target>
</trans-unit>
<trans-unit id="2649431021108393503" datatype="html">
<source>More like</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">91</context>
</context-group>
<target state="needs-translation">More like</target>
</trans-unit>
<trans-unit id="02d184c288f567825a1fcbf83bcd3099a10853d5" datatype="html"> <trans-unit id="02d184c288f567825a1fcbf83bcd3099a10853d5" datatype="html">
<source>Filter tags</source> <source>Filter tags</source>
<context-group purpose="location"> <context-group purpose="location">
@@ -1408,10 +1376,34 @@
<source>Score:</source> <source>Score:</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-card-large/document-card-large.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-card-large/document-card-large.component.html</context>
<context context-type="linenumber">66</context> <context context-type="linenumber">86</context>
</context-group> </context-group>
<target state="needs-translation">Score:</target> <target state="needs-translation">Score:</target>
</trans-unit> </trans-unit>
<trans-unit id="727d980bba2b3e0b3d8705607f1208eef046479b" datatype="html">
<source>Created: <x id="INTERPOLATION" equiv-text="{{ document.created | customDate}}"/></source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-card-small/document-card-small.component.html</context>
<context context-type="linenumber">43</context>
</context-group>
<target state="needs-translation">Created: <x id="INTERPOLATION" equiv-text="{{ document.created | customDate}}"/></target>
</trans-unit>
<trans-unit id="0f5d856cb63c69fde44fbfc653ec0655f9040865" datatype="html">
<source>Added: <x id="INTERPOLATION" equiv-text="{{ document.added | customDate}}"/></source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-card-small/document-card-small.component.html</context>
<context context-type="linenumber">44</context>
</context-group>
<target state="needs-translation">Added: <x id="INTERPOLATION" equiv-text="{{ document.added | customDate}}"/></target>
</trans-unit>
<trans-unit id="a205126adef6251fc63305f1a6228d07bc2795a8" datatype="html">
<source>Modified: <x id="INTERPOLATION" equiv-text="{{ document.modified | customDate}}"/></source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-card-small/document-card-small.component.html</context>
<context context-type="linenumber">45</context>
</context-group>
<target state="needs-translation">Modified: <x id="INTERPOLATION" equiv-text="{{ document.modified | customDate}}"/></target>
</trans-unit>
<trans-unit id="7985804062689412812" datatype="html"> <trans-unit id="7985804062689412812" datatype="html">
<source>Error executing bulk operation: <x id="PH" equiv-text="JSON.stringify(error.error)"/></source> <source>Error executing bulk operation: <x id="PH" equiv-text="JSON.stringify(error.error)"/></source>
<context-group purpose="location"> <context-group purpose="location">
@@ -1857,6 +1849,14 @@
</context-group> </context-group>
<target state="needs-translation">Invalid date.</target> <target state="needs-translation">Invalid date.</target>
</trans-unit> </trans-unit>
<trans-unit id="bd5ca454e336126f3eeb67417d9264696b5c852c" datatype="html">
<source>Searching document with asn <x id="INTERPOLATION" equiv-text="{{asn}}"/></source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-asn/document-asn.component.html</context>
<context context-type="linenumber">1</context>
</context-group>
<target state="needs-translation">Searching document with asn <x id="INTERPOLATION" equiv-text="{{asn}}"/></target>
</trans-unit>
<trans-unit id="2807800733729323332" datatype="html"> <trans-unit id="2807800733729323332" datatype="html">
<source>Yes</source> <source>Yes</source>
<context-group purpose="location"> <context-group purpose="location">

View File

@@ -54,7 +54,7 @@
<source>Documents</source> <source>Documents</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">49</context> <context context-type="linenumber">51</context>
</context-group> </context-group>
<target state="translated">Dokumente</target> <target state="translated">Dokumente</target>
</trans-unit> </trans-unit>
@@ -62,7 +62,7 @@
<source>View &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot; saved successfully.</source> <source>View &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot; saved successfully.</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">115</context> <context context-type="linenumber">116</context>
</context-group> </context-group>
<target state="translated">Ansicht "<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>" erfolgreich gespeichert.</target> <target state="translated">Ansicht "<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>" erfolgreich gespeichert.</target>
</trans-unit> </trans-unit>
@@ -70,7 +70,7 @@
<source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully.</source> <source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully.</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">136</context> <context context-type="linenumber">138</context>
</context-group> </context-group>
<target state="translated">Ansicht "<x id="PH" equiv-text="savedView.name"/>" erfolgreich erstellt.</target> <target state="translated">Ansicht "<x id="PH" equiv-text="savedView.name"/>" erfolgreich erstellt.</target>
</trans-unit> </trans-unit>
@@ -166,7 +166,7 @@
<source>ASN</source> <source>ASN</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">105</context> <context context-type="linenumber">111</context>
</context-group> </context-group>
<target state="translated">ASN</target> <target state="translated">ASN</target>
</trans-unit> </trans-unit>
@@ -174,7 +174,7 @@
<source>Correspondent</source> <source>Correspondent</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">111</context> <context context-type="linenumber">117</context>
</context-group> </context-group>
<target state="translated">Korrespondent</target> <target state="translated">Korrespondent</target>
</trans-unit> </trans-unit>
@@ -182,7 +182,7 @@
<source>Title</source> <source>Title</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">117</context> <context context-type="linenumber">123</context>
</context-group> </context-group>
<target state="translated">Titel</target> <target state="translated">Titel</target>
</trans-unit> </trans-unit>
@@ -190,7 +190,7 @@
<source>Document type</source> <source>Document type</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">123</context> <context context-type="linenumber">129</context>
</context-group> </context-group>
<target state="translated">Dokumenttyp</target> <target state="translated">Dokumenttyp</target>
</trans-unit> </trans-unit>
@@ -198,7 +198,7 @@
<source>Created</source> <source>Created</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">129</context> <context context-type="linenumber">135</context>
</context-group> </context-group>
<target state="translated">Ausgestellt</target> <target state="translated">Ausgestellt</target>
</trans-unit> </trans-unit>
@@ -206,7 +206,7 @@
<source>Added</source> <source>Added</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">135</context> <context context-type="linenumber">141</context>
</context-group> </context-group>
<target state="translated">Hinzugefügt</target> <target state="translated">Hinzugefügt</target>
</trans-unit> </trans-unit>
@@ -214,7 +214,7 @@
<source>Confirm delete</source> <source>Confirm delete</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">203</context> <context context-type="linenumber">204</context>
</context-group> </context-group>
<target state="translated">Löschen bestätigen</target> <target state="translated">Löschen bestätigen</target>
</trans-unit> </trans-unit>
@@ -222,7 +222,7 @@
<source>Do you really want to delete document &quot;<x id="PH" equiv-text="this.document.title"/>&quot;?</source> <source>Do you really want to delete document &quot;<x id="PH" equiv-text="this.document.title"/>&quot;?</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">204</context> <context context-type="linenumber">205</context>
</context-group> </context-group>
<target state="translated">Möchten Sie das Dokument "<x id="PH" equiv-text="this.document.title"/>" wirklich löschen?</target> <target state="translated">Möchten Sie das Dokument "<x id="PH" equiv-text="this.document.title"/>" wirklich löschen?</target>
</trans-unit> </trans-unit>
@@ -230,7 +230,7 @@
<source>The files for this document will be deleted permanently. This operation cannot be undone.</source> <source>The files for this document will be deleted permanently. This operation cannot be undone.</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">205</context> <context context-type="linenumber">206</context>
</context-group> </context-group>
<target state="translated">Die Dateien dieses Dokuments werden permanent gelöscht. Diese Aktion kann nicht rückgängig gemacht werden.</target> <target state="translated">Die Dateien dieses Dokuments werden permanent gelöscht. Diese Aktion kann nicht rückgängig gemacht werden.</target>
</trans-unit> </trans-unit>
@@ -238,7 +238,7 @@
<source>Delete document</source> <source>Delete document</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">207</context> <context context-type="linenumber">208</context>
</context-group> </context-group>
<target state="translated">Dokument löschen</target> <target state="translated">Dokument löschen</target>
</trans-unit> </trans-unit>
@@ -246,7 +246,7 @@
<source>Error deleting document: <x id="PH" equiv-text="JSON.stringify(error)"/></source> <source>Error deleting document: <x id="PH" equiv-text="JSON.stringify(error)"/></source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">214</context> <context context-type="linenumber">215</context>
</context-group> </context-group>
<target state="translated">Fehler beim Löschen des Dokuments: <x id="PH" equiv-text="JSON.stringify(error)"/></target> <target state="translated">Fehler beim Löschen des Dokuments: <x id="PH" equiv-text="JSON.stringify(error)"/></target>
</trans-unit> </trans-unit>
@@ -1042,54 +1042,6 @@
</context-group> </context-group>
<target state="translated">Dokumenttyp bearbeiten</target> <target state="translated">Dokumenttyp bearbeiten</target>
</trans-unit> </trans-unit>
<trans-unit id="49c9ede51100b454f7841b24cd02355c6622bf44" datatype="html">
<source>Search results</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/search/search.component.html</context>
<context context-type="linenumber">1</context>
</context-group>
<target state="translated">Suchergebnisse</target>
</trans-unit>
<trans-unit id="31976d04f98e8a38098f66ac3a83ad33b576e5db" datatype="html">
<source>Invalid search query: <x id="INTERPOLATION" equiv-text="{{errorMessage}}"/></source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/search/search.component.html</context>
<context context-type="linenumber">4</context>
</context-group>
<target state="translated">Ungültige Suchanfrage: <x id="INTERPOLATION" equiv-text="{{errorMessage}}"/></target>
</trans-unit>
<trans-unit id="f7f2e30106223a69bcf0f8e586e6be9dc4e72226" datatype="html">
<source>Showing documents similar to <x id="START_LINK" equiv-text="&lt;a routerLink=&quot;/documents/{{more_like}}&quot;&gt;{{more_like_doc?.original_file_name}}"/><x id="INTERPOLATION" equiv-text="{{more_like_doc?.original_file_name}}&lt;/a&gt;"/><x id="CLOSE_LINK" equiv-text="&lt;/a&gt;"/></source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/search/search.component.html</context>
<context context-type="linenumber">6</context>
</context-group>
<target state="translated">Zeige ähnliche Dokumente zu <x id="START_LINK" equiv-text="&lt;a routerLink=&quot;/documents/{{more_like}}&quot;&gt;{{more_like_doc?.original_file_name}}"/><x id="INTERPOLATION" equiv-text="{{more_like_doc?.original_file_name}}&lt;/a&gt;"/><x id="CLOSE_LINK" equiv-text="&lt;/a&gt;"/></target>
</trans-unit>
<trans-unit id="6e0b0a1ea16f18f2fb1586c53d99d2f22e1aee2e" datatype="html">
<source>Search query: <x id="START_ITALIC_TEXT" equiv-text="&lt;i&gt;{{query}}"/><x id="INTERPOLATION" equiv-text="{{query}}&lt;/i&gt;"/><x id="CLOSE_ITALIC_TEXT" equiv-text="&lt;/i&gt;"/></source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/search/search.component.html</context>
<context context-type="linenumber">9</context>
</context-group>
<target state="translated">Suchanfrage: <x id="START_ITALIC_TEXT" equiv-text="&lt;i&gt;{{query}}"/><x id="INTERPOLATION" equiv-text="{{query}}&lt;/i&gt;"/><x id="CLOSE_ITALIC_TEXT" equiv-text="&lt;/i&gt;"/></target>
</trans-unit>
<trans-unit id="afa760e48c97d64d19c1455d18b7834a2256e23f" datatype="html">
<source>Did you mean &quot;<x id="START_LINK" equiv-text="&lt;a [routerLink]=&quot;&quot; (click)=&quot;searchCorrectedQuery()&quot;&gt;{{correctedQuery}}"/><x id="INTERPOLATION" equiv-text="{{correctedQuery}}&lt;/a&gt;"/><x id="CLOSE_LINK" equiv-text="&lt;/a&gt;"/>&quot;?</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/search/search.component.html</context>
<context context-type="linenumber">11</context>
</context-group>
<target state="translated">Meinten Sie "<x id="START_LINK" equiv-text="&lt;a [routerLink]=&quot;&quot; (click)=&quot;searchCorrectedQuery()&quot;&gt;{{correctedQuery}}"/><x id="INTERPOLATION" equiv-text="{{correctedQuery}}&lt;/a&gt;"/><x id="CLOSE_LINK" equiv-text="&lt;/a&gt;"/>"?</target>
</trans-unit>
<trans-unit id="fe6ced3fcc803bba5a2e6c1a067b9ce62542500e" datatype="html">
<source>{VAR_PLURAL, plural, =0 {No results} =1 {One result} other {<x id="INTERPOLATION"/> results}}</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/search/search.component.html</context>
<context context-type="linenumber">16</context>
</context-group>
<target state="translated">{VAR_PLURAL, plural, =0 {Keine Ergebnisse} =1 {Ein Ergebnis} other {<x id="INTERPOLATION"/> Ergebnisse}}</target>
</trans-unit>
<trans-unit id="41147374f427980a9f1a8cd5e3f4b1666e6f2418" datatype="html"> <trans-unit id="41147374f427980a9f1a8cd5e3f4b1666e6f2418" datatype="html">
<source>Paperless-ng</source> <source>Paperless-ng</source>
<context-group purpose="location"> <context-group purpose="location">
@@ -1187,35 +1139,11 @@
</context-group> </context-group>
<target state="translated">Alle schließen</target> <target state="translated">Alle schließen</target>
</trans-unit> </trans-unit>
<trans-unit id="5701618810648052610" datatype="html">
<source>Title</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">77</context>
</context-group>
<target state="translated">Titel</target>
</trans-unit>
<trans-unit id="3100631071441658964" datatype="html">
<source>Title &amp; content</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">78</context>
</context-group>
<target state="translated">Titel &amp; Inhalt</target>
</trans-unit>
<trans-unit id="7517688192215738656" datatype="html">
<source>ASN</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">79</context>
</context-group>
<target state="translated">ASN</target>
</trans-unit>
<trans-unit id="5195932016807797291" datatype="html"> <trans-unit id="5195932016807797291" datatype="html">
<source>Correspondent: <x id="PH" equiv-text="this.correspondents.find(c =&gt; c.id == +rule.value)?.name"/></source> <source>Correspondent: <x id="PH" equiv-text="this.correspondents.find(c =&gt; c.id == +rule.value)?.name"/></source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">33</context> <context context-type="linenumber">37</context>
</context-group> </context-group>
<target state="translated">Korrespondent: <x id="PH" equiv-text="this.correspondents.find(c =&gt; c.id == +rule.value)?.name"/></target> <target state="translated">Korrespondent: <x id="PH" equiv-text="this.correspondents.find(c =&gt; c.id == +rule.value)?.name"/></target>
</trans-unit> </trans-unit>
@@ -1223,7 +1151,7 @@
<source>Without correspondent</source> <source>Without correspondent</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">35</context> <context context-type="linenumber">39</context>
</context-group> </context-group>
<target state="translated">Ohne Korrespondent</target> <target state="translated">Ohne Korrespondent</target>
</trans-unit> </trans-unit>
@@ -1231,7 +1159,7 @@
<source>Type: <x id="PH" equiv-text="this.documentTypes.find(dt =&gt; dt.id == +rule.value)?.name"/></source> <source>Type: <x id="PH" equiv-text="this.documentTypes.find(dt =&gt; dt.id == +rule.value)?.name"/></source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">40</context> <context context-type="linenumber">44</context>
</context-group> </context-group>
<target state="translated">Typ: <x id="PH" equiv-text="this.documentTypes.find(dt =&gt; dt.id == +rule.value)?.name"/></target> <target state="translated">Typ: <x id="PH" equiv-text="this.documentTypes.find(dt =&gt; dt.id == +rule.value)?.name"/></target>
</trans-unit> </trans-unit>
@@ -1239,7 +1167,7 @@
<source>Without document type</source> <source>Without document type</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">42</context> <context context-type="linenumber">46</context>
</context-group> </context-group>
<target state="translated">Ohne Dokumenttyp</target> <target state="translated">Ohne Dokumenttyp</target>
</trans-unit> </trans-unit>
@@ -1247,7 +1175,7 @@
<source>Tag: <x id="PH" equiv-text="this.tags.find(t =&gt; t.id == +rule.value)?.name"/></source> <source>Tag: <x id="PH" equiv-text="this.tags.find(t =&gt; t.id == +rule.value)?.name"/></source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">46</context> <context context-type="linenumber">50</context>
</context-group> </context-group>
<target state="translated">Tag: <x id="PH" equiv-text="this.tags.find(t =&gt; t.id == +rule.value)?.name"/></target> <target state="translated">Tag: <x id="PH" equiv-text="this.tags.find(t =&gt; t.id == +rule.value)?.name"/></target>
</trans-unit> </trans-unit>
@@ -1255,7 +1183,7 @@
<source>Without any tag</source> <source>Without any tag</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">50</context> <context context-type="linenumber">54</context>
</context-group> </context-group>
<target state="translated">Ohne Tag</target> <target state="translated">Ohne Tag</target>
</trans-unit> </trans-unit>
@@ -1263,7 +1191,7 @@
<source>Title: <x id="PH" equiv-text="rule.value"/></source> <source>Title: <x id="PH" equiv-text="rule.value"/></source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">54</context> <context context-type="linenumber">58</context>
</context-group> </context-group>
<target state="translated">Titel: <x id="PH" equiv-text="rule.value"/></target> <target state="translated">Titel: <x id="PH" equiv-text="rule.value"/></target>
</trans-unit> </trans-unit>
@@ -1271,10 +1199,50 @@
<source>ASN: <x id="PH" equiv-text="rule.value"/></source> <source>ASN: <x id="PH" equiv-text="rule.value"/></source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">57</context> <context context-type="linenumber">61</context>
</context-group> </context-group>
<target state="translated">ASN: <x id="PH" equiv-text="rule.value"/></target> <target state="translated">ASN: <x id="PH" equiv-text="rule.value"/></target>
</trans-unit> </trans-unit>
<trans-unit id="5701618810648052610" datatype="html">
<source>Title</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">85</context>
</context-group>
<target state="translated">Titel</target>
</trans-unit>
<trans-unit id="3100631071441658964" datatype="html">
<source>Title &amp; content</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">86</context>
</context-group>
<target state="translated">Titel &amp; Inhalt</target>
</trans-unit>
<trans-unit id="7517688192215738656" datatype="html">
<source>ASN</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">87</context>
</context-group>
<target state="translated">ASN</target>
</trans-unit>
<trans-unit id="1010505078885609376" datatype="html">
<source>Advanced search</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">88</context>
</context-group>
<target state="translated">Erweiterte Suche</target>
</trans-unit>
<trans-unit id="2649431021108393503" datatype="html">
<source>More like</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">91</context>
</context-group>
<target state="translated">Ähnlich zu</target>
</trans-unit>
<trans-unit id="02d184c288f567825a1fcbf83bcd3099a10853d5" datatype="html"> <trans-unit id="02d184c288f567825a1fcbf83bcd3099a10853d5" datatype="html">
<source>Filter tags</source> <source>Filter tags</source>
<context-group purpose="location"> <context-group purpose="location">
@@ -1408,10 +1376,34 @@
<source>Score:</source> <source>Score:</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-card-large/document-card-large.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-card-large/document-card-large.component.html</context>
<context context-type="linenumber">66</context> <context context-type="linenumber">86</context>
</context-group> </context-group>
<target state="translated">Relevanz:</target> <target state="translated">Relevanz:</target>
</trans-unit> </trans-unit>
<trans-unit id="727d980bba2b3e0b3d8705607f1208eef046479b" datatype="html">
<source>Created: <x id="INTERPOLATION" equiv-text="{{ document.created | customDate}}"/></source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-card-small/document-card-small.component.html</context>
<context context-type="linenumber">43</context>
</context-group>
<target state="translated">Ausgestellt: <x id="INTERPOLATION" equiv-text="{{ document.created | customDate}}"/></target>
</trans-unit>
<trans-unit id="0f5d856cb63c69fde44fbfc653ec0655f9040865" datatype="html">
<source>Added: <x id="INTERPOLATION" equiv-text="{{ document.added | customDate}}"/></source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-card-small/document-card-small.component.html</context>
<context context-type="linenumber">44</context>
</context-group>
<target state="translated">Hinzugefügt: <x id="INTERPOLATION" equiv-text="{{ document.added | customDate}}"/></target>
</trans-unit>
<trans-unit id="a205126adef6251fc63305f1a6228d07bc2795a8" datatype="html">
<source>Modified: <x id="INTERPOLATION" equiv-text="{{ document.modified | customDate}}"/></source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-card-small/document-card-small.component.html</context>
<context context-type="linenumber">45</context>
</context-group>
<target state="translated">Geändert: <x id="INTERPOLATION" equiv-text="{{ document.modified | customDate}}"/></target>
</trans-unit>
<trans-unit id="7985804062689412812" datatype="html"> <trans-unit id="7985804062689412812" datatype="html">
<source>Error executing bulk operation: <x id="PH" equiv-text="JSON.stringify(error.error)"/></source> <source>Error executing bulk operation: <x id="PH" equiv-text="JSON.stringify(error.error)"/></source>
<context-group purpose="location"> <context-group purpose="location">
@@ -1857,6 +1849,14 @@
</context-group> </context-group>
<target state="translated">Ungültiges Datum.</target> <target state="translated">Ungültiges Datum.</target>
</trans-unit> </trans-unit>
<trans-unit id="bd5ca454e336126f3eeb67417d9264696b5c852c" datatype="html">
<source>Searching document with asn <x id="INTERPOLATION" equiv-text="{{asn}}"/></source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-asn/document-asn.component.html</context>
<context context-type="linenumber">1</context>
</context-group>
<target state="translated">Dokument mit ASN <x id="INTERPOLATION" equiv-text="{{asn}}"/> wird gesucht</target>
</trans-unit>
<trans-unit id="2807800733729323332" datatype="html"> <trans-unit id="2807800733729323332" datatype="html">
<source>Yes</source> <source>Yes</source>
<context-group purpose="location"> <context-group purpose="location">

View File

@@ -54,7 +54,7 @@
<source>Documents</source> <source>Documents</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">49</context> <context context-type="linenumber">51</context>
</context-group> </context-group>
<target state="translated">Documents</target> <target state="translated">Documents</target>
</trans-unit> </trans-unit>
@@ -62,7 +62,7 @@
<source>View &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot; saved successfully.</source> <source>View &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot; saved successfully.</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">115</context> <context context-type="linenumber">116</context>
</context-group> </context-group>
<target state="translated">View "<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>" saved successfully.</target> <target state="translated">View "<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>" saved successfully.</target>
</trans-unit> </trans-unit>
@@ -70,7 +70,7 @@
<source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully.</source> <source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully.</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">136</context> <context context-type="linenumber">138</context>
</context-group> </context-group>
<target state="translated">View "<x id="PH" equiv-text="savedView.name"/>" created successfully.</target> <target state="translated">View "<x id="PH" equiv-text="savedView.name"/>" created successfully.</target>
</trans-unit> </trans-unit>
@@ -166,7 +166,7 @@
<source>ASN</source> <source>ASN</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">105</context> <context context-type="linenumber">111</context>
</context-group> </context-group>
<target state="translated">ASN</target> <target state="translated">ASN</target>
</trans-unit> </trans-unit>
@@ -174,7 +174,7 @@
<source>Correspondent</source> <source>Correspondent</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">111</context> <context context-type="linenumber">117</context>
</context-group> </context-group>
<target state="translated">Correspondent</target> <target state="translated">Correspondent</target>
</trans-unit> </trans-unit>
@@ -182,7 +182,7 @@
<source>Title</source> <source>Title</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">117</context> <context context-type="linenumber">123</context>
</context-group> </context-group>
<target state="translated">Title</target> <target state="translated">Title</target>
</trans-unit> </trans-unit>
@@ -190,7 +190,7 @@
<source>Document type</source> <source>Document type</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">123</context> <context context-type="linenumber">129</context>
</context-group> </context-group>
<target state="translated">Document type</target> <target state="translated">Document type</target>
</trans-unit> </trans-unit>
@@ -198,7 +198,7 @@
<source>Created</source> <source>Created</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">129</context> <context context-type="linenumber">135</context>
</context-group> </context-group>
<target state="translated">Created</target> <target state="translated">Created</target>
</trans-unit> </trans-unit>
@@ -206,7 +206,7 @@
<source>Added</source> <source>Added</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">135</context> <context context-type="linenumber">141</context>
</context-group> </context-group>
<target state="translated">Added</target> <target state="translated">Added</target>
</trans-unit> </trans-unit>
@@ -214,7 +214,7 @@
<source>Confirm delete</source> <source>Confirm delete</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">203</context> <context context-type="linenumber">204</context>
</context-group> </context-group>
<target state="translated">Confirm delete</target> <target state="translated">Confirm delete</target>
</trans-unit> </trans-unit>
@@ -222,7 +222,7 @@
<source>Do you really want to delete document &quot;<x id="PH" equiv-text="this.document.title"/>&quot;?</source> <source>Do you really want to delete document &quot;<x id="PH" equiv-text="this.document.title"/>&quot;?</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">204</context> <context context-type="linenumber">205</context>
</context-group> </context-group>
<target state="translated">Do you really want to delete document "<x id="PH" equiv-text="this.document.title"/>"?</target> <target state="translated">Do you really want to delete document "<x id="PH" equiv-text="this.document.title"/>"?</target>
</trans-unit> </trans-unit>
@@ -230,7 +230,7 @@
<source>The files for this document will be deleted permanently. This operation cannot be undone.</source> <source>The files for this document will be deleted permanently. This operation cannot be undone.</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">205</context> <context context-type="linenumber">206</context>
</context-group> </context-group>
<target state="translated">The files for this document will be deleted permanently. This operation cannot be undone.</target> <target state="translated">The files for this document will be deleted permanently. This operation cannot be undone.</target>
</trans-unit> </trans-unit>
@@ -238,7 +238,7 @@
<source>Delete document</source> <source>Delete document</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">207</context> <context context-type="linenumber">208</context>
</context-group> </context-group>
<target state="translated">Delete document</target> <target state="translated">Delete document</target>
</trans-unit> </trans-unit>
@@ -246,7 +246,7 @@
<source>Error deleting document: <x id="PH" equiv-text="JSON.stringify(error)"/></source> <source>Error deleting document: <x id="PH" equiv-text="JSON.stringify(error)"/></source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">214</context> <context context-type="linenumber">215</context>
</context-group> </context-group>
<target state="translated">Error deleting document: <x id="PH" equiv-text="JSON.stringify(error)"/></target> <target state="translated">Error deleting document: <x id="PH" equiv-text="JSON.stringify(error)"/></target>
</trans-unit> </trans-unit>
@@ -1042,54 +1042,6 @@
</context-group> </context-group>
<target state="translated">Edit document type</target> <target state="translated">Edit document type</target>
</trans-unit> </trans-unit>
<trans-unit id="49c9ede51100b454f7841b24cd02355c6622bf44" datatype="html">
<source>Search results</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/search/search.component.html</context>
<context context-type="linenumber">1</context>
</context-group>
<target state="translated">Search results</target>
</trans-unit>
<trans-unit id="31976d04f98e8a38098f66ac3a83ad33b576e5db" datatype="html">
<source>Invalid search query: <x id="INTERPOLATION" equiv-text="{{errorMessage}}"/></source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/search/search.component.html</context>
<context context-type="linenumber">4</context>
</context-group>
<target state="translated">Invalid search query: <x id="INTERPOLATION" equiv-text="{{errorMessage}}"/></target>
</trans-unit>
<trans-unit id="f7f2e30106223a69bcf0f8e586e6be9dc4e72226" datatype="html">
<source>Showing documents similar to <x id="START_LINK" equiv-text="&lt;a routerLink=&quot;/documents/{{more_like}}&quot;&gt;{{more_like_doc?.original_file_name}}"/><x id="INTERPOLATION" equiv-text="{{more_like_doc?.original_file_name}}&lt;/a&gt;"/><x id="CLOSE_LINK" equiv-text="&lt;/a&gt;"/></source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/search/search.component.html</context>
<context context-type="linenumber">6</context>
</context-group>
<target state="translated">Showing documents similar to <x id="START_LINK" equiv-text="&lt;a routerLink=&quot;/documents/{{more_like}}&quot;&gt;{{more_like_doc?.original_file_name}}"/><x id="INTERPOLATION" equiv-text="{{more_like_doc?.original_file_name}}&lt;/a&gt;"/><x id="CLOSE_LINK" equiv-text="&lt;/a&gt;"/></target>
</trans-unit>
<trans-unit id="6e0b0a1ea16f18f2fb1586c53d99d2f22e1aee2e" datatype="html">
<source>Search query: <x id="START_ITALIC_TEXT" equiv-text="&lt;i&gt;{{query}}"/><x id="INTERPOLATION" equiv-text="{{query}}&lt;/i&gt;"/><x id="CLOSE_ITALIC_TEXT" equiv-text="&lt;/i&gt;"/></source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/search/search.component.html</context>
<context context-type="linenumber">9</context>
</context-group>
<target state="translated">Search query: <x id="START_ITALIC_TEXT" equiv-text="&lt;i&gt;{{query}}"/><x id="INTERPOLATION" equiv-text="{{query}}&lt;/i&gt;"/><x id="CLOSE_ITALIC_TEXT" equiv-text="&lt;/i&gt;"/></target>
</trans-unit>
<trans-unit id="afa760e48c97d64d19c1455d18b7834a2256e23f" datatype="html">
<source>Did you mean &quot;<x id="START_LINK" equiv-text="&lt;a [routerLink]=&quot;&quot; (click)=&quot;searchCorrectedQuery()&quot;&gt;{{correctedQuery}}"/><x id="INTERPOLATION" equiv-text="{{correctedQuery}}&lt;/a&gt;"/><x id="CLOSE_LINK" equiv-text="&lt;/a&gt;"/>&quot;?</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/search/search.component.html</context>
<context context-type="linenumber">11</context>
</context-group>
<target state="translated">Did you mean "<x id="START_LINK" equiv-text="&lt;a [routerLink]=&quot;&quot; (click)=&quot;searchCorrectedQuery()&quot;&gt;{{correctedQuery}}"/><x id="INTERPOLATION" equiv-text="{{correctedQuery}}&lt;/a&gt;"/><x id="CLOSE_LINK" equiv-text="&lt;/a&gt;"/>"?</target>
</trans-unit>
<trans-unit id="fe6ced3fcc803bba5a2e6c1a067b9ce62542500e" datatype="html">
<source>{VAR_PLURAL, plural, =0 {No results} =1 {One result} other {<x id="INTERPOLATION"/> results}}</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/search/search.component.html</context>
<context context-type="linenumber">16</context>
</context-group>
<target state="translated">{VAR_PLURAL, plural, =0 {No results} =1 {One result} other {<x id="INTERPOLATION"/> results}}</target>
</trans-unit>
<trans-unit id="41147374f427980a9f1a8cd5e3f4b1666e6f2418" datatype="html"> <trans-unit id="41147374f427980a9f1a8cd5e3f4b1666e6f2418" datatype="html">
<source>Paperless-ng</source> <source>Paperless-ng</source>
<context-group purpose="location"> <context-group purpose="location">
@@ -1187,35 +1139,11 @@
</context-group> </context-group>
<target state="translated">Close all</target> <target state="translated">Close all</target>
</trans-unit> </trans-unit>
<trans-unit id="5701618810648052610" datatype="html">
<source>Title</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">77</context>
</context-group>
<target state="translated">Title</target>
</trans-unit>
<trans-unit id="3100631071441658964" datatype="html">
<source>Title &amp; content</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">78</context>
</context-group>
<target state="translated">Title &amp; content</target>
</trans-unit>
<trans-unit id="7517688192215738656" datatype="html">
<source>ASN</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">79</context>
</context-group>
<target state="translated">ASN</target>
</trans-unit>
<trans-unit id="5195932016807797291" datatype="html"> <trans-unit id="5195932016807797291" datatype="html">
<source>Correspondent: <x id="PH" equiv-text="this.correspondents.find(c =&gt; c.id == +rule.value)?.name"/></source> <source>Correspondent: <x id="PH" equiv-text="this.correspondents.find(c =&gt; c.id == +rule.value)?.name"/></source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">33</context> <context context-type="linenumber">37</context>
</context-group> </context-group>
<target state="translated">Correspondent: <x id="PH" equiv-text="this.correspondents.find(c =&gt; c.id == +rule.value)?.name"/></target> <target state="translated">Correspondent: <x id="PH" equiv-text="this.correspondents.find(c =&gt; c.id == +rule.value)?.name"/></target>
</trans-unit> </trans-unit>
@@ -1223,7 +1151,7 @@
<source>Without correspondent</source> <source>Without correspondent</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">35</context> <context context-type="linenumber">39</context>
</context-group> </context-group>
<target state="translated">Without correspondent</target> <target state="translated">Without correspondent</target>
</trans-unit> </trans-unit>
@@ -1231,7 +1159,7 @@
<source>Type: <x id="PH" equiv-text="this.documentTypes.find(dt =&gt; dt.id == +rule.value)?.name"/></source> <source>Type: <x id="PH" equiv-text="this.documentTypes.find(dt =&gt; dt.id == +rule.value)?.name"/></source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">40</context> <context context-type="linenumber">44</context>
</context-group> </context-group>
<target state="translated">Type: <x id="PH" equiv-text="this.documentTypes.find(dt =&gt; dt.id == +rule.value)?.name"/></target> <target state="translated">Type: <x id="PH" equiv-text="this.documentTypes.find(dt =&gt; dt.id == +rule.value)?.name"/></target>
</trans-unit> </trans-unit>
@@ -1239,7 +1167,7 @@
<source>Without document type</source> <source>Without document type</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">42</context> <context context-type="linenumber">46</context>
</context-group> </context-group>
<target state="translated">Without document type</target> <target state="translated">Without document type</target>
</trans-unit> </trans-unit>
@@ -1247,7 +1175,7 @@
<source>Tag: <x id="PH" equiv-text="this.tags.find(t =&gt; t.id == +rule.value)?.name"/></source> <source>Tag: <x id="PH" equiv-text="this.tags.find(t =&gt; t.id == +rule.value)?.name"/></source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">46</context> <context context-type="linenumber">50</context>
</context-group> </context-group>
<target state="translated">Tag: <x id="PH" equiv-text="this.tags.find(t =&gt; t.id == +rule.value)?.name"/></target> <target state="translated">Tag: <x id="PH" equiv-text="this.tags.find(t =&gt; t.id == +rule.value)?.name"/></target>
</trans-unit> </trans-unit>
@@ -1255,7 +1183,7 @@
<source>Without any tag</source> <source>Without any tag</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">50</context> <context context-type="linenumber">54</context>
</context-group> </context-group>
<target state="translated">Without any tag</target> <target state="translated">Without any tag</target>
</trans-unit> </trans-unit>
@@ -1263,7 +1191,7 @@
<source>Title: <x id="PH" equiv-text="rule.value"/></source> <source>Title: <x id="PH" equiv-text="rule.value"/></source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">54</context> <context context-type="linenumber">58</context>
</context-group> </context-group>
<target state="translated">Title: <x id="PH" equiv-text="rule.value"/></target> <target state="translated">Title: <x id="PH" equiv-text="rule.value"/></target>
</trans-unit> </trans-unit>
@@ -1271,10 +1199,50 @@
<source>ASN: <x id="PH" equiv-text="rule.value"/></source> <source>ASN: <x id="PH" equiv-text="rule.value"/></source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">57</context> <context context-type="linenumber">61</context>
</context-group> </context-group>
<target state="translated">ASN: <x id="PH" equiv-text="rule.value"/></target> <target state="translated">ASN: <x id="PH" equiv-text="rule.value"/></target>
</trans-unit> </trans-unit>
<trans-unit id="5701618810648052610" datatype="html">
<source>Title</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">85</context>
</context-group>
<target state="translated">Title</target>
</trans-unit>
<trans-unit id="3100631071441658964" datatype="html">
<source>Title &amp; content</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">86</context>
</context-group>
<target state="translated">Title &amp; content</target>
</trans-unit>
<trans-unit id="7517688192215738656" datatype="html">
<source>ASN</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">87</context>
</context-group>
<target state="translated">ASN</target>
</trans-unit>
<trans-unit id="1010505078885609376" datatype="html">
<source>Advanced search</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">88</context>
</context-group>
<target state="needs-translation">Advanced search</target>
</trans-unit>
<trans-unit id="2649431021108393503" datatype="html">
<source>More like</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">91</context>
</context-group>
<target state="needs-translation">More like</target>
</trans-unit>
<trans-unit id="02d184c288f567825a1fcbf83bcd3099a10853d5" datatype="html"> <trans-unit id="02d184c288f567825a1fcbf83bcd3099a10853d5" datatype="html">
<source>Filter tags</source> <source>Filter tags</source>
<context-group purpose="location"> <context-group purpose="location">
@@ -1408,10 +1376,34 @@
<source>Score:</source> <source>Score:</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-card-large/document-card-large.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-card-large/document-card-large.component.html</context>
<context context-type="linenumber">66</context> <context context-type="linenumber">86</context>
</context-group> </context-group>
<target state="translated">Score:</target> <target state="translated">Score:</target>
</trans-unit> </trans-unit>
<trans-unit id="727d980bba2b3e0b3d8705607f1208eef046479b" datatype="html">
<source>Created: <x id="INTERPOLATION" equiv-text="{{ document.created | customDate}}"/></source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-card-small/document-card-small.component.html</context>
<context context-type="linenumber">43</context>
</context-group>
<target state="needs-translation">Created: <x id="INTERPOLATION" equiv-text="{{ document.created | customDate}}"/></target>
</trans-unit>
<trans-unit id="0f5d856cb63c69fde44fbfc653ec0655f9040865" datatype="html">
<source>Added: <x id="INTERPOLATION" equiv-text="{{ document.added | customDate}}"/></source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-card-small/document-card-small.component.html</context>
<context context-type="linenumber">44</context>
</context-group>
<target state="needs-translation">Added: <x id="INTERPOLATION" equiv-text="{{ document.added | customDate}}"/></target>
</trans-unit>
<trans-unit id="a205126adef6251fc63305f1a6228d07bc2795a8" datatype="html">
<source>Modified: <x id="INTERPOLATION" equiv-text="{{ document.modified | customDate}}"/></source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-card-small/document-card-small.component.html</context>
<context context-type="linenumber">45</context>
</context-group>
<target state="needs-translation">Modified: <x id="INTERPOLATION" equiv-text="{{ document.modified | customDate}}"/></target>
</trans-unit>
<trans-unit id="7985804062689412812" datatype="html"> <trans-unit id="7985804062689412812" datatype="html">
<source>Error executing bulk operation: <x id="PH" equiv-text="JSON.stringify(error.error)"/></source> <source>Error executing bulk operation: <x id="PH" equiv-text="JSON.stringify(error.error)"/></source>
<context-group purpose="location"> <context-group purpose="location">
@@ -1857,6 +1849,14 @@
</context-group> </context-group>
<target state="translated">Invalid date.</target> <target state="translated">Invalid date.</target>
</trans-unit> </trans-unit>
<trans-unit id="bd5ca454e336126f3eeb67417d9264696b5c852c" datatype="html">
<source>Searching document with asn <x id="INTERPOLATION" equiv-text="{{asn}}"/></source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-asn/document-asn.component.html</context>
<context context-type="linenumber">1</context>
</context-group>
<target state="needs-translation">Searching document with asn <x id="INTERPOLATION" equiv-text="{{asn}}"/></target>
</trans-unit>
<trans-unit id="2807800733729323332" datatype="html"> <trans-unit id="2807800733729323332" datatype="html">
<source>Yes</source> <source>Yes</source>
<context-group purpose="location"> <context-group purpose="location">

View File

@@ -54,7 +54,7 @@
<source>Documents</source> <source>Documents</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">49</context> <context context-type="linenumber">51</context>
</context-group> </context-group>
<target state="translated">Documentos</target> <target state="translated">Documentos</target>
</trans-unit> </trans-unit>
@@ -62,7 +62,7 @@
<source>View &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot; saved successfully.</source> <source>View &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot; saved successfully.</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">115</context> <context context-type="linenumber">116</context>
</context-group> </context-group>
<target state="translated">Ver "<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>" guardado satisfactoriamente.</target> <target state="translated">Ver "<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>" guardado satisfactoriamente.</target>
</trans-unit> </trans-unit>
@@ -70,7 +70,7 @@
<source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully.</source> <source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully.</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">136</context> <context context-type="linenumber">138</context>
</context-group> </context-group>
<target state="translated">Ver "<x id="PH" equiv-text="savedView.name"/>" creado satisfactoriamente.</target> <target state="translated">Ver "<x id="PH" equiv-text="savedView.name"/>" creado satisfactoriamente.</target>
</trans-unit> </trans-unit>
@@ -166,7 +166,7 @@
<source>ASN</source> <source>ASN</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">105</context> <context context-type="linenumber">111</context>
</context-group> </context-group>
<target state="translated">NSA</target> <target state="translated">NSA</target>
</trans-unit> </trans-unit>
@@ -174,7 +174,7 @@
<source>Correspondent</source> <source>Correspondent</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">111</context> <context context-type="linenumber">117</context>
</context-group> </context-group>
<target state="translated">Tipo de documento</target> <target state="translated">Tipo de documento</target>
</trans-unit> </trans-unit>
@@ -182,7 +182,7 @@
<source>Title</source> <source>Title</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">117</context> <context context-type="linenumber">123</context>
</context-group> </context-group>
<target state="translated">Título</target> <target state="translated">Título</target>
</trans-unit> </trans-unit>
@@ -190,7 +190,7 @@
<source>Document type</source> <source>Document type</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">123</context> <context context-type="linenumber">129</context>
</context-group> </context-group>
<target state="translated">Tipo de documento</target> <target state="translated">Tipo de documento</target>
</trans-unit> </trans-unit>
@@ -198,7 +198,7 @@
<source>Created</source> <source>Created</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">129</context> <context context-type="linenumber">135</context>
</context-group> </context-group>
<target state="translated">Creado</target> <target state="translated">Creado</target>
</trans-unit> </trans-unit>
@@ -206,7 +206,7 @@
<source>Added</source> <source>Added</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">135</context> <context context-type="linenumber">141</context>
</context-group> </context-group>
<target state="translated">Aggregado</target> <target state="translated">Aggregado</target>
</trans-unit> </trans-unit>
@@ -214,7 +214,7 @@
<source>Confirm delete</source> <source>Confirm delete</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">203</context> <context context-type="linenumber">204</context>
</context-group> </context-group>
<target state="translated">Confirmar borrado</target> <target state="translated">Confirmar borrado</target>
</trans-unit> </trans-unit>
@@ -222,7 +222,7 @@
<source>Do you really want to delete document &quot;<x id="PH" equiv-text="this.document.title"/>&quot;?</source> <source>Do you really want to delete document &quot;<x id="PH" equiv-text="this.document.title"/>&quot;?</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">204</context> <context context-type="linenumber">205</context>
</context-group> </context-group>
<target state="translated">¿Estás seguro de querer borrar el documento "<x id="PH" equiv-text="this.document.title"/>"?</target> <target state="translated">¿Estás seguro de querer borrar el documento "<x id="PH" equiv-text="this.document.title"/>"?</target>
</trans-unit> </trans-unit>
@@ -230,7 +230,7 @@
<source>The files for this document will be deleted permanently. This operation cannot be undone.</source> <source>The files for this document will be deleted permanently. This operation cannot be undone.</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">205</context> <context context-type="linenumber">206</context>
</context-group> </context-group>
<target state="translated">Los archivos para este documento serán borrados permanentemente. Esta operación no se puede deshacer.</target> <target state="translated">Los archivos para este documento serán borrados permanentemente. Esta operación no se puede deshacer.</target>
</trans-unit> </trans-unit>
@@ -238,7 +238,7 @@
<source>Delete document</source> <source>Delete document</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">207</context> <context context-type="linenumber">208</context>
</context-group> </context-group>
<target state="translated">Borrar documento</target> <target state="translated">Borrar documento</target>
</trans-unit> </trans-unit>
@@ -246,7 +246,7 @@
<source>Error deleting document: <x id="PH" equiv-text="JSON.stringify(error)"/></source> <source>Error deleting document: <x id="PH" equiv-text="JSON.stringify(error)"/></source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">214</context> <context context-type="linenumber">215</context>
</context-group> </context-group>
<target state="translated">Error borrando el documento: <x id="PH" equiv-text="JSON.stringify(error)"/></target> <target state="translated">Error borrando el documento: <x id="PH" equiv-text="JSON.stringify(error)"/></target>
</trans-unit> </trans-unit>
@@ -1042,54 +1042,6 @@
</context-group> </context-group>
<target state="translated">Editar tipo de documento</target> <target state="translated">Editar tipo de documento</target>
</trans-unit> </trans-unit>
<trans-unit id="49c9ede51100b454f7841b24cd02355c6622bf44" datatype="html">
<source>Search results</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/search/search.component.html</context>
<context context-type="linenumber">1</context>
</context-group>
<target state="translated">Resultados de la busqueda</target>
</trans-unit>
<trans-unit id="31976d04f98e8a38098f66ac3a83ad33b576e5db" datatype="html">
<source>Invalid search query: <x id="INTERPOLATION" equiv-text="{{errorMessage}}"/></source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/search/search.component.html</context>
<context context-type="linenumber">4</context>
</context-group>
<target state="translated">Cadena de búsqueda no valida: <x id="INTERPOLATION" equiv-text="{{errorMessage}}"/></target>
</trans-unit>
<trans-unit id="f7f2e30106223a69bcf0f8e586e6be9dc4e72226" datatype="html">
<source>Showing documents similar to <x id="START_LINK" equiv-text="&lt;a routerLink=&quot;/documents/{{more_like}}&quot;&gt;{{more_like_doc?.original_file_name}}"/><x id="INTERPOLATION" equiv-text="{{more_like_doc?.original_file_name}}&lt;/a&gt;"/><x id="CLOSE_LINK" equiv-text="&lt;/a&gt;"/></source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/search/search.component.html</context>
<context context-type="linenumber">6</context>
</context-group>
<target state="translated">Mostrando documentos similares a <x id="START_LINK" equiv-text="&lt;a routerLink=&quot;/documents/{{more_like}}&quot;&gt;{{more_like_doc?.original_file_name}}"/><x id="INTERPOLATION" equiv-text="{{more_like_doc?.original_file_name}}&lt;/a&gt;"/><x id="CLOSE_LINK" equiv-text="&lt;/a&gt;"/></target>
</trans-unit>
<trans-unit id="6e0b0a1ea16f18f2fb1586c53d99d2f22e1aee2e" datatype="html">
<source>Search query: <x id="START_ITALIC_TEXT" equiv-text="&lt;i&gt;{{query}}"/><x id="INTERPOLATION" equiv-text="{{query}}&lt;/i&gt;"/><x id="CLOSE_ITALIC_TEXT" equiv-text="&lt;/i&gt;"/></source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/search/search.component.html</context>
<context context-type="linenumber">9</context>
</context-group>
<target state="translated">Cadena de búsqueda: <x id="START_ITALIC_TEXT" equiv-text="&lt;i&gt;{{query}}"/><x id="INTERPOLATION" equiv-text="{{query}}&lt;/i&gt;"/><x id="CLOSE_ITALIC_TEXT" equiv-text="&lt;/i&gt;"/></target>
</trans-unit>
<trans-unit id="afa760e48c97d64d19c1455d18b7834a2256e23f" datatype="html">
<source>Did you mean &quot;<x id="START_LINK" equiv-text="&lt;a [routerLink]=&quot;&quot; (click)=&quot;searchCorrectedQuery()&quot;&gt;{{correctedQuery}}"/><x id="INTERPOLATION" equiv-text="{{correctedQuery}}&lt;/a&gt;"/><x id="CLOSE_LINK" equiv-text="&lt;/a&gt;"/>&quot;?</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/search/search.component.html</context>
<context context-type="linenumber">11</context>
</context-group>
<target state="translated">¿Quizás quisiste decir "<x id="START_LINK" equiv-text="&lt;a [routerLink]=&quot;&quot; (click)=&quot;searchCorrectedQuery()&quot;&gt;{{correctedQuery}}"/><x id="INTERPOLATION" equiv-text="{{correctedQuery}}&lt;/a&gt;"/><x id="CLOSE_LINK" equiv-text="&lt;/a&gt;"/>"?</target>
</trans-unit>
<trans-unit id="fe6ced3fcc803bba5a2e6c1a067b9ce62542500e" datatype="html">
<source>{VAR_PLURAL, plural, =0 {No results} =1 {One result} other {<x id="INTERPOLATION"/> results}}</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/search/search.component.html</context>
<context context-type="linenumber">16</context>
</context-group>
<target state="translated">{VAR_PLURAL, plural, =0 {Sin resultados} =1 {Un resultado} other {<x id="INTERPOLATION"/> resultados}}</target>
</trans-unit>
<trans-unit id="41147374f427980a9f1a8cd5e3f4b1666e6f2418" datatype="html"> <trans-unit id="41147374f427980a9f1a8cd5e3f4b1666e6f2418" datatype="html">
<source>Paperless-ng</source> <source>Paperless-ng</source>
<context-group purpose="location"> <context-group purpose="location">
@@ -1187,35 +1139,11 @@
</context-group> </context-group>
<target state="translated">Cerrar todos</target> <target state="translated">Cerrar todos</target>
</trans-unit> </trans-unit>
<trans-unit id="5701618810648052610" datatype="html">
<source>Title</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">77</context>
</context-group>
<target state="translated">Título</target>
</trans-unit>
<trans-unit id="3100631071441658964" datatype="html">
<source>Title &amp; content</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">78</context>
</context-group>
<target state="translated">Titulo y contenido</target>
</trans-unit>
<trans-unit id="7517688192215738656" datatype="html">
<source>ASN</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">79</context>
</context-group>
<target state="translated">NSF</target>
</trans-unit>
<trans-unit id="5195932016807797291" datatype="html"> <trans-unit id="5195932016807797291" datatype="html">
<source>Correspondent: <x id="PH" equiv-text="this.correspondents.find(c =&gt; c.id == +rule.value)?.name"/></source> <source>Correspondent: <x id="PH" equiv-text="this.correspondents.find(c =&gt; c.id == +rule.value)?.name"/></source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">33</context> <context context-type="linenumber">37</context>
</context-group> </context-group>
<target state="translated">Tipo: <x id="PH" equiv-text="this.correspondents.find(c =&gt; c.id == +rule.value)?.name"/></target> <target state="translated">Tipo: <x id="PH" equiv-text="this.correspondents.find(c =&gt; c.id == +rule.value)?.name"/></target>
</trans-unit> </trans-unit>
@@ -1223,7 +1151,7 @@
<source>Without correspondent</source> <source>Without correspondent</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">35</context> <context context-type="linenumber">39</context>
</context-group> </context-group>
<target state="translated">Sin tipo de documento</target> <target state="translated">Sin tipo de documento</target>
</trans-unit> </trans-unit>
@@ -1231,7 +1159,7 @@
<source>Type: <x id="PH" equiv-text="this.documentTypes.find(dt =&gt; dt.id == +rule.value)?.name"/></source> <source>Type: <x id="PH" equiv-text="this.documentTypes.find(dt =&gt; dt.id == +rule.value)?.name"/></source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">40</context> <context context-type="linenumber">44</context>
</context-group> </context-group>
<target state="translated">Tipo: <x id="PH" equiv-text="this.documentTypes.find(dt =&gt; dt.id == +rule.value)?.name"/></target> <target state="translated">Tipo: <x id="PH" equiv-text="this.documentTypes.find(dt =&gt; dt.id == +rule.value)?.name"/></target>
</trans-unit> </trans-unit>
@@ -1239,7 +1167,7 @@
<source>Without document type</source> <source>Without document type</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">42</context> <context context-type="linenumber">46</context>
</context-group> </context-group>
<target state="translated">Sin tipo de documento</target> <target state="translated">Sin tipo de documento</target>
</trans-unit> </trans-unit>
@@ -1247,7 +1175,7 @@
<source>Tag: <x id="PH" equiv-text="this.tags.find(t =&gt; t.id == +rule.value)?.name"/></source> <source>Tag: <x id="PH" equiv-text="this.tags.find(t =&gt; t.id == +rule.value)?.name"/></source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">46</context> <context context-type="linenumber">50</context>
</context-group> </context-group>
<target state="translated">Etiqueta: <x id="PH" equiv-text="this.tags.find(t =&gt; t.id == +rule.value)?.name"/></target> <target state="translated">Etiqueta: <x id="PH" equiv-text="this.tags.find(t =&gt; t.id == +rule.value)?.name"/></target>
</trans-unit> </trans-unit>
@@ -1255,7 +1183,7 @@
<source>Without any tag</source> <source>Without any tag</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">50</context> <context context-type="linenumber">54</context>
</context-group> </context-group>
<target state="translated">Sin ninguna etiqueta</target> <target state="translated">Sin ninguna etiqueta</target>
</trans-unit> </trans-unit>
@@ -1263,7 +1191,7 @@
<source>Title: <x id="PH" equiv-text="rule.value"/></source> <source>Title: <x id="PH" equiv-text="rule.value"/></source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">54</context> <context context-type="linenumber">58</context>
</context-group> </context-group>
<target state="translated">Título: <x id="PH" equiv-text="rule.value"/></target> <target state="translated">Título: <x id="PH" equiv-text="rule.value"/></target>
</trans-unit> </trans-unit>
@@ -1271,10 +1199,50 @@
<source>ASN: <x id="PH" equiv-text="rule.value"/></source> <source>ASN: <x id="PH" equiv-text="rule.value"/></source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">57</context> <context context-type="linenumber">61</context>
</context-group> </context-group>
<target state="translated">ASN: <x id="PH" equiv-text="rule.value"/></target> <target state="translated">ASN: <x id="PH" equiv-text="rule.value"/></target>
</trans-unit> </trans-unit>
<trans-unit id="5701618810648052610" datatype="html">
<source>Title</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">85</context>
</context-group>
<target state="translated">Título</target>
</trans-unit>
<trans-unit id="3100631071441658964" datatype="html">
<source>Title &amp; content</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">86</context>
</context-group>
<target state="translated">Titulo y contenido</target>
</trans-unit>
<trans-unit id="7517688192215738656" datatype="html">
<source>ASN</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">87</context>
</context-group>
<target state="translated">NSF</target>
</trans-unit>
<trans-unit id="1010505078885609376" datatype="html">
<source>Advanced search</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">88</context>
</context-group>
<target state="needs-translation">Advanced search</target>
</trans-unit>
<trans-unit id="2649431021108393503" datatype="html">
<source>More like</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">91</context>
</context-group>
<target state="needs-translation">More like</target>
</trans-unit>
<trans-unit id="02d184c288f567825a1fcbf83bcd3099a10853d5" datatype="html"> <trans-unit id="02d184c288f567825a1fcbf83bcd3099a10853d5" datatype="html">
<source>Filter tags</source> <source>Filter tags</source>
<context-group purpose="location"> <context-group purpose="location">
@@ -1408,10 +1376,34 @@
<source>Score:</source> <source>Score:</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-card-large/document-card-large.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-card-large/document-card-large.component.html</context>
<context context-type="linenumber">66</context> <context context-type="linenumber">86</context>
</context-group> </context-group>
<target state="translated">Puntuación:</target> <target state="translated">Puntuación:</target>
</trans-unit> </trans-unit>
<trans-unit id="727d980bba2b3e0b3d8705607f1208eef046479b" datatype="html">
<source>Created: <x id="INTERPOLATION" equiv-text="{{ document.created | customDate}}"/></source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-card-small/document-card-small.component.html</context>
<context context-type="linenumber">43</context>
</context-group>
<target state="needs-translation">Created: <x id="INTERPOLATION" equiv-text="{{ document.created | customDate}}"/></target>
</trans-unit>
<trans-unit id="0f5d856cb63c69fde44fbfc653ec0655f9040865" datatype="html">
<source>Added: <x id="INTERPOLATION" equiv-text="{{ document.added | customDate}}"/></source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-card-small/document-card-small.component.html</context>
<context context-type="linenumber">44</context>
</context-group>
<target state="needs-translation">Added: <x id="INTERPOLATION" equiv-text="{{ document.added | customDate}}"/></target>
</trans-unit>
<trans-unit id="a205126adef6251fc63305f1a6228d07bc2795a8" datatype="html">
<source>Modified: <x id="INTERPOLATION" equiv-text="{{ document.modified | customDate}}"/></source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-card-small/document-card-small.component.html</context>
<context context-type="linenumber">45</context>
</context-group>
<target state="needs-translation">Modified: <x id="INTERPOLATION" equiv-text="{{ document.modified | customDate}}"/></target>
</trans-unit>
<trans-unit id="7985804062689412812" datatype="html"> <trans-unit id="7985804062689412812" datatype="html">
<source>Error executing bulk operation: <x id="PH" equiv-text="JSON.stringify(error.error)"/></source> <source>Error executing bulk operation: <x id="PH" equiv-text="JSON.stringify(error.error)"/></source>
<context-group purpose="location"> <context-group purpose="location">
@@ -1857,6 +1849,14 @@
</context-group> </context-group>
<target state="translated">Fecha no válida.</target> <target state="translated">Fecha no válida.</target>
</trans-unit> </trans-unit>
<trans-unit id="bd5ca454e336126f3eeb67417d9264696b5c852c" datatype="html">
<source>Searching document with asn <x id="INTERPOLATION" equiv-text="{{asn}}"/></source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-asn/document-asn.component.html</context>
<context context-type="linenumber">1</context>
</context-group>
<target state="needs-translation">Searching document with asn <x id="INTERPOLATION" equiv-text="{{asn}}"/></target>
</trans-unit>
<trans-unit id="2807800733729323332" datatype="html"> <trans-unit id="2807800733729323332" datatype="html">
<source>Yes</source> <source>Yes</source>
<context-group purpose="location"> <context-group purpose="location">

View File

@@ -54,7 +54,7 @@
<source>Documents</source> <source>Documents</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">49</context> <context context-type="linenumber">51</context>
</context-group> </context-group>
<target state="translated">Documents</target> <target state="translated">Documents</target>
</trans-unit> </trans-unit>
@@ -62,7 +62,7 @@
<source>View &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot; saved successfully.</source> <source>View &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot; saved successfully.</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">115</context> <context context-type="linenumber">116</context>
</context-group> </context-group>
<target state="translated">Vue "<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>" enregistrée avec succès.</target> <target state="translated">Vue "<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>" enregistrée avec succès.</target>
</trans-unit> </trans-unit>
@@ -70,7 +70,7 @@
<source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully.</source> <source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully.</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">136</context> <context context-type="linenumber">138</context>
</context-group> </context-group>
<target state="translated">Vue "<x id="PH" equiv-text="savedView.name"/>" créée avec succès.</target> <target state="translated">Vue "<x id="PH" equiv-text="savedView.name"/>" créée avec succès.</target>
</trans-unit> </trans-unit>
@@ -166,7 +166,7 @@
<source>ASN</source> <source>ASN</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">105</context> <context context-type="linenumber">111</context>
</context-group> </context-group>
<target state="translated">NSA</target> <target state="translated">NSA</target>
</trans-unit> </trans-unit>
@@ -174,7 +174,7 @@
<source>Correspondent</source> <source>Correspondent</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">111</context> <context context-type="linenumber">117</context>
</context-group> </context-group>
<target state="translated">Correspondant</target> <target state="translated">Correspondant</target>
</trans-unit> </trans-unit>
@@ -182,7 +182,7 @@
<source>Title</source> <source>Title</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">117</context> <context context-type="linenumber">123</context>
</context-group> </context-group>
<target state="translated">Titre</target> <target state="translated">Titre</target>
</trans-unit> </trans-unit>
@@ -190,7 +190,7 @@
<source>Document type</source> <source>Document type</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">123</context> <context context-type="linenumber">129</context>
</context-group> </context-group>
<target state="translated">Type de document</target> <target state="translated">Type de document</target>
</trans-unit> </trans-unit>
@@ -198,7 +198,7 @@
<source>Created</source> <source>Created</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">129</context> <context context-type="linenumber">135</context>
</context-group> </context-group>
<target state="translated">Date de création</target> <target state="translated">Date de création</target>
</trans-unit> </trans-unit>
@@ -206,7 +206,7 @@
<source>Added</source> <source>Added</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">135</context> <context context-type="linenumber">141</context>
</context-group> </context-group>
<target state="translated">Date d'ajout</target> <target state="translated">Date d'ajout</target>
</trans-unit> </trans-unit>
@@ -214,7 +214,7 @@
<source>Confirm delete</source> <source>Confirm delete</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">203</context> <context context-type="linenumber">204</context>
</context-group> </context-group>
<target state="translated">Confirmer la suppression</target> <target state="translated">Confirmer la suppression</target>
</trans-unit> </trans-unit>
@@ -222,7 +222,7 @@
<source>Do you really want to delete document &quot;<x id="PH" equiv-text="this.document.title"/>&quot;?</source> <source>Do you really want to delete document &quot;<x id="PH" equiv-text="this.document.title"/>&quot;?</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">204</context> <context context-type="linenumber">205</context>
</context-group> </context-group>
<target state="translated">Voulez-vous vraiment supprimer le document "<x id="PH" equiv-text="this.document.title"/>" ?</target> <target state="translated">Voulez-vous vraiment supprimer le document "<x id="PH" equiv-text="this.document.title"/>" ?</target>
</trans-unit> </trans-unit>
@@ -230,7 +230,7 @@
<source>The files for this document will be deleted permanently. This operation cannot be undone.</source> <source>The files for this document will be deleted permanently. This operation cannot be undone.</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">205</context> <context context-type="linenumber">206</context>
</context-group> </context-group>
<target state="translated">Les fichiers liés à ce document seront supprimés définitivement. Cette action est irréversible.</target> <target state="translated">Les fichiers liés à ce document seront supprimés définitivement. Cette action est irréversible.</target>
</trans-unit> </trans-unit>
@@ -238,7 +238,7 @@
<source>Delete document</source> <source>Delete document</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">207</context> <context context-type="linenumber">208</context>
</context-group> </context-group>
<target state="translated">Supprimer le document</target> <target state="translated">Supprimer le document</target>
</trans-unit> </trans-unit>
@@ -246,7 +246,7 @@
<source>Error deleting document: <x id="PH" equiv-text="JSON.stringify(error)"/></source> <source>Error deleting document: <x id="PH" equiv-text="JSON.stringify(error)"/></source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">214</context> <context context-type="linenumber">215</context>
</context-group> </context-group>
<target state="translated">Une erreur s'est produite lors de la suppression du document : <x id="PH" equiv-text="JSON.stringify(error)"/></target> <target state="translated">Une erreur s'est produite lors de la suppression du document : <x id="PH" equiv-text="JSON.stringify(error)"/></target>
</trans-unit> </trans-unit>
@@ -1042,54 +1042,6 @@
</context-group> </context-group>
<target state="translated">Éditer le type de document</target> <target state="translated">Éditer le type de document</target>
</trans-unit> </trans-unit>
<trans-unit id="49c9ede51100b454f7841b24cd02355c6622bf44" datatype="html">
<source>Search results</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/search/search.component.html</context>
<context context-type="linenumber">1</context>
</context-group>
<target state="translated">Résultats de la recherche</target>
</trans-unit>
<trans-unit id="31976d04f98e8a38098f66ac3a83ad33b576e5db" datatype="html">
<source>Invalid search query: <x id="INTERPOLATION" equiv-text="{{errorMessage}}"/></source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/search/search.component.html</context>
<context context-type="linenumber">4</context>
</context-group>
<target state="translated">Requête de recherche invalide : <x id="INTERPOLATION" equiv-text="{{errorMessage}}"/></target>
</trans-unit>
<trans-unit id="f7f2e30106223a69bcf0f8e586e6be9dc4e72226" datatype="html">
<source>Showing documents similar to <x id="START_LINK" equiv-text="&lt;a routerLink=&quot;/documents/{{more_like}}&quot;&gt;{{more_like_doc?.original_file_name}}"/><x id="INTERPOLATION" equiv-text="{{more_like_doc?.original_file_name}}&lt;/a&gt;"/><x id="CLOSE_LINK" equiv-text="&lt;/a&gt;"/></source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/search/search.component.html</context>
<context context-type="linenumber">6</context>
</context-group>
<target state="translated">Présentation des documents similaires à <x id="START_LINK" equiv-text="&lt;a routerLink=&quot;/documents/{{more_like}}&quot;&gt;{{more_like_doc?.original_file_name}}"/><x id="INTERPOLATION" equiv-text="{{more_like_doc?.original_file_name}}&lt;/a&gt;"/><x id="CLOSE_LINK" equiv-text="&lt;/a&gt;"/></target>
</trans-unit>
<trans-unit id="6e0b0a1ea16f18f2fb1586c53d99d2f22e1aee2e" datatype="html">
<source>Search query: <x id="START_ITALIC_TEXT" equiv-text="&lt;i&gt;{{query}}"/><x id="INTERPOLATION" equiv-text="{{query}}&lt;/i&gt;"/><x id="CLOSE_ITALIC_TEXT" equiv-text="&lt;/i&gt;"/></source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/search/search.component.html</context>
<context context-type="linenumber">9</context>
</context-group>
<target state="translated">Requête de recherche : <x id="START_ITALIC_TEXT" equiv-text="&lt;i&gt;{{query}}"/><x id="INTERPOLATION" equiv-text="{{query}}&lt;/i&gt;"/><x id="CLOSE_ITALIC_TEXT" equiv-text="&lt;/i&gt;"/></target>
</trans-unit>
<trans-unit id="afa760e48c97d64d19c1455d18b7834a2256e23f" datatype="html">
<source>Did you mean &quot;<x id="START_LINK" equiv-text="&lt;a [routerLink]=&quot;&quot; (click)=&quot;searchCorrectedQuery()&quot;&gt;{{correctedQuery}}"/><x id="INTERPOLATION" equiv-text="{{correctedQuery}}&lt;/a&gt;"/><x id="CLOSE_LINK" equiv-text="&lt;/a&gt;"/>&quot;?</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/search/search.component.html</context>
<context context-type="linenumber">11</context>
</context-group>
<target state="translated">Vouliez-vous dire "<x id="START_LINK" equiv-text="&lt;a [routerLink]=&quot;&quot; (click)=&quot;searchCorrectedQuery()&quot;&gt;{{correctedQuery}}"/><x id="INTERPOLATION" equiv-text="{{correctedQuery}}&lt;/a&gt;"/><x id="CLOSE_LINK" equiv-text="&lt;/a&gt;"/>" ?</target>
</trans-unit>
<trans-unit id="fe6ced3fcc803bba5a2e6c1a067b9ce62542500e" datatype="html">
<source>{VAR_PLURAL, plural, =0 {No results} =1 {One result} other {<x id="INTERPOLATION"/> results}}</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/search/search.component.html</context>
<context context-type="linenumber">16</context>
</context-group>
<target state="translated">{VAR_PLURAL, plural, =0 {Aucun résultat} =1 {Un résultat} other {<x id="INTERPOLATION"/> résultats}}</target>
</trans-unit>
<trans-unit id="41147374f427980a9f1a8cd5e3f4b1666e6f2418" datatype="html"> <trans-unit id="41147374f427980a9f1a8cd5e3f4b1666e6f2418" datatype="html">
<source>Paperless-ng</source> <source>Paperless-ng</source>
<context-group purpose="location"> <context-group purpose="location">
@@ -1187,35 +1139,11 @@
</context-group> </context-group>
<target state="translated">Fermer tout</target> <target state="translated">Fermer tout</target>
</trans-unit> </trans-unit>
<trans-unit id="5701618810648052610" datatype="html">
<source>Title</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">77</context>
</context-group>
<target state="translated">Titre</target>
</trans-unit>
<trans-unit id="3100631071441658964" datatype="html">
<source>Title &amp; content</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">78</context>
</context-group>
<target state="translated">Titre &amp; contenu</target>
</trans-unit>
<trans-unit id="7517688192215738656" datatype="html">
<source>ASN</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">79</context>
</context-group>
<target state="translated">NSA</target>
</trans-unit>
<trans-unit id="5195932016807797291" datatype="html"> <trans-unit id="5195932016807797291" datatype="html">
<source>Correspondent: <x id="PH" equiv-text="this.correspondents.find(c =&gt; c.id == +rule.value)?.name"/></source> <source>Correspondent: <x id="PH" equiv-text="this.correspondents.find(c =&gt; c.id == +rule.value)?.name"/></source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">33</context> <context context-type="linenumber">37</context>
</context-group> </context-group>
<target state="translated">Correspondant : <x id="PH" equiv-text="this.correspondents.find(c =&gt; c.id == +rule.value)?.name"/></target> <target state="translated">Correspondant : <x id="PH" equiv-text="this.correspondents.find(c =&gt; c.id == +rule.value)?.name"/></target>
</trans-unit> </trans-unit>
@@ -1223,7 +1151,7 @@
<source>Without correspondent</source> <source>Without correspondent</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">35</context> <context context-type="linenumber">39</context>
</context-group> </context-group>
<target state="translated">Sans correspondant</target> <target state="translated">Sans correspondant</target>
</trans-unit> </trans-unit>
@@ -1231,7 +1159,7 @@
<source>Type: <x id="PH" equiv-text="this.documentTypes.find(dt =&gt; dt.id == +rule.value)?.name"/></source> <source>Type: <x id="PH" equiv-text="this.documentTypes.find(dt =&gt; dt.id == +rule.value)?.name"/></source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">40</context> <context context-type="linenumber">44</context>
</context-group> </context-group>
<target state="translated">Type : <x id="PH" equiv-text="this.documentTypes.find(dt =&gt; dt.id == +rule.value)?.name"/></target> <target state="translated">Type : <x id="PH" equiv-text="this.documentTypes.find(dt =&gt; dt.id == +rule.value)?.name"/></target>
</trans-unit> </trans-unit>
@@ -1239,7 +1167,7 @@
<source>Without document type</source> <source>Without document type</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">42</context> <context context-type="linenumber">46</context>
</context-group> </context-group>
<target state="translated">Sans type de document</target> <target state="translated">Sans type de document</target>
</trans-unit> </trans-unit>
@@ -1247,7 +1175,7 @@
<source>Tag: <x id="PH" equiv-text="this.tags.find(t =&gt; t.id == +rule.value)?.name"/></source> <source>Tag: <x id="PH" equiv-text="this.tags.find(t =&gt; t.id == +rule.value)?.name"/></source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">46</context> <context context-type="linenumber">50</context>
</context-group> </context-group>
<target state="translated">Étiquette : <x id="PH" equiv-text="this.tags.find(t =&gt; t.id == +rule.value)?.name"/></target> <target state="translated">Étiquette : <x id="PH" equiv-text="this.tags.find(t =&gt; t.id == +rule.value)?.name"/></target>
</trans-unit> </trans-unit>
@@ -1255,7 +1183,7 @@
<source>Without any tag</source> <source>Without any tag</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">50</context> <context context-type="linenumber">54</context>
</context-group> </context-group>
<target state="translated">Sans étiquette</target> <target state="translated">Sans étiquette</target>
</trans-unit> </trans-unit>
@@ -1263,7 +1191,7 @@
<source>Title: <x id="PH" equiv-text="rule.value"/></source> <source>Title: <x id="PH" equiv-text="rule.value"/></source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">54</context> <context context-type="linenumber">58</context>
</context-group> </context-group>
<target state="translated">Titre : <x id="PH" equiv-text="rule.value"/></target> <target state="translated">Titre : <x id="PH" equiv-text="rule.value"/></target>
</trans-unit> </trans-unit>
@@ -1271,10 +1199,50 @@
<source>ASN: <x id="PH" equiv-text="rule.value"/></source> <source>ASN: <x id="PH" equiv-text="rule.value"/></source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">57</context> <context context-type="linenumber">61</context>
</context-group> </context-group>
<target state="translated">NSA : <x id="PH" equiv-text="rule.value"/></target> <target state="translated">NSA : <x id="PH" equiv-text="rule.value"/></target>
</trans-unit> </trans-unit>
<trans-unit id="5701618810648052610" datatype="html">
<source>Title</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">85</context>
</context-group>
<target state="translated">Titre</target>
</trans-unit>
<trans-unit id="3100631071441658964" datatype="html">
<source>Title &amp; content</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">86</context>
</context-group>
<target state="translated">Titre &amp; contenu</target>
</trans-unit>
<trans-unit id="7517688192215738656" datatype="html">
<source>ASN</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">87</context>
</context-group>
<target state="translated">NSA</target>
</trans-unit>
<trans-unit id="1010505078885609376" datatype="html">
<source>Advanced search</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">88</context>
</context-group>
<target state="translated">Recherche avancée</target>
</trans-unit>
<trans-unit id="2649431021108393503" datatype="html">
<source>More like</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">91</context>
</context-group>
<target state="translated">Plus comme</target>
</trans-unit>
<trans-unit id="02d184c288f567825a1fcbf83bcd3099a10853d5" datatype="html"> <trans-unit id="02d184c288f567825a1fcbf83bcd3099a10853d5" datatype="html">
<source>Filter tags</source> <source>Filter tags</source>
<context-group purpose="location"> <context-group purpose="location">
@@ -1408,10 +1376,34 @@
<source>Score:</source> <source>Score:</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-card-large/document-card-large.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-card-large/document-card-large.component.html</context>
<context context-type="linenumber">66</context> <context context-type="linenumber">86</context>
</context-group> </context-group>
<target state="translated">Score :</target> <target state="translated">Score :</target>
</trans-unit> </trans-unit>
<trans-unit id="727d980bba2b3e0b3d8705607f1208eef046479b" datatype="html">
<source>Created: <x id="INTERPOLATION" equiv-text="{{ document.created | customDate}}"/></source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-card-small/document-card-small.component.html</context>
<context context-type="linenumber">43</context>
</context-group>
<target state="translated">Date de création : <x id="INTERPOLATION" equiv-text="{{ document.created | customDate}}"/></target>
</trans-unit>
<trans-unit id="0f5d856cb63c69fde44fbfc653ec0655f9040865" datatype="html">
<source>Added: <x id="INTERPOLATION" equiv-text="{{ document.added | customDate}}"/></source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-card-small/document-card-small.component.html</context>
<context context-type="linenumber">44</context>
</context-group>
<target state="translated">Date d'ajout : <x id="INTERPOLATION" equiv-text="{{ document.added | customDate}}"/></target>
</trans-unit>
<trans-unit id="a205126adef6251fc63305f1a6228d07bc2795a8" datatype="html">
<source>Modified: <x id="INTERPOLATION" equiv-text="{{ document.modified | customDate}}"/></source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-card-small/document-card-small.component.html</context>
<context context-type="linenumber">45</context>
</context-group>
<target state="translated">Date de modification : <x id="INTERPOLATION" equiv-text="{{ document.modified | customDate}}"/></target>
</trans-unit>
<trans-unit id="7985804062689412812" datatype="html"> <trans-unit id="7985804062689412812" datatype="html">
<source>Error executing bulk operation: <x id="PH" equiv-text="JSON.stringify(error.error)"/></source> <source>Error executing bulk operation: <x id="PH" equiv-text="JSON.stringify(error.error)"/></source>
<context-group purpose="location"> <context-group purpose="location">
@@ -1857,6 +1849,14 @@
</context-group> </context-group>
<target state="translated">Date incorrecte.</target> <target state="translated">Date incorrecte.</target>
</trans-unit> </trans-unit>
<trans-unit id="bd5ca454e336126f3eeb67417d9264696b5c852c" datatype="html">
<source>Searching document with asn <x id="INTERPOLATION" equiv-text="{{asn}}"/></source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-asn/document-asn.component.html</context>
<context context-type="linenumber">1</context>
</context-group>
<target state="translated">Recherche de document avec NSA <x id="INTERPOLATION" equiv-text="{{asn}}"/></target>
</trans-unit>
<trans-unit id="2807800733729323332" datatype="html"> <trans-unit id="2807800733729323332" datatype="html">
<source>Yes</source> <source>Yes</source>
<context-group purpose="location"> <context-group purpose="location">

View File

@@ -54,7 +54,7 @@
<source>Documents</source> <source>Documents</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">49</context> <context context-type="linenumber">51</context>
</context-group> </context-group>
<target state="translated">Dokumentumok</target> <target state="translated">Dokumentumok</target>
</trans-unit> </trans-unit>
@@ -62,7 +62,7 @@
<source>View &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot; saved successfully.</source> <source>View &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot; saved successfully.</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">115</context> <context context-type="linenumber">116</context>
</context-group> </context-group>
<target state="needs-translation">View "<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>" saved successfully.</target> <target state="needs-translation">View "<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>" saved successfully.</target>
</trans-unit> </trans-unit>
@@ -70,7 +70,7 @@
<source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully.</source> <source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully.</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">136</context> <context context-type="linenumber">138</context>
</context-group> </context-group>
<target state="translated">Nézet "<x id="PH" equiv-text="savedView.name"/>" sikeresen létrehozva.</target> <target state="translated">Nézet "<x id="PH" equiv-text="savedView.name"/>" sikeresen létrehozva.</target>
</trans-unit> </trans-unit>
@@ -166,7 +166,7 @@
<source>ASN</source> <source>ASN</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">105</context> <context context-type="linenumber">111</context>
</context-group> </context-group>
<target state="translated">ASN</target> <target state="translated">ASN</target>
</trans-unit> </trans-unit>
@@ -174,7 +174,7 @@
<source>Correspondent</source> <source>Correspondent</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">111</context> <context context-type="linenumber">117</context>
</context-group> </context-group>
<target state="translated">Partner</target> <target state="translated">Partner</target>
</trans-unit> </trans-unit>
@@ -182,7 +182,7 @@
<source>Title</source> <source>Title</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">117</context> <context context-type="linenumber">123</context>
</context-group> </context-group>
<target state="translated">Cím</target> <target state="translated">Cím</target>
</trans-unit> </trans-unit>
@@ -190,7 +190,7 @@
<source>Document type</source> <source>Document type</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">123</context> <context context-type="linenumber">129</context>
</context-group> </context-group>
<target state="translated">Dokumentum típus</target> <target state="translated">Dokumentum típus</target>
</trans-unit> </trans-unit>
@@ -198,7 +198,7 @@
<source>Created</source> <source>Created</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">129</context> <context context-type="linenumber">135</context>
</context-group> </context-group>
<target state="translated">Létrehozva</target> <target state="translated">Létrehozva</target>
</trans-unit> </trans-unit>
@@ -206,7 +206,7 @@
<source>Added</source> <source>Added</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">135</context> <context context-type="linenumber">141</context>
</context-group> </context-group>
<target state="translated">Hozzáadva</target> <target state="translated">Hozzáadva</target>
</trans-unit> </trans-unit>
@@ -214,7 +214,7 @@
<source>Confirm delete</source> <source>Confirm delete</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">203</context> <context context-type="linenumber">204</context>
</context-group> </context-group>
<target state="translated">Törlés megerősítése</target> <target state="translated">Törlés megerősítése</target>
</trans-unit> </trans-unit>
@@ -222,7 +222,7 @@
<source>Do you really want to delete document &quot;<x id="PH" equiv-text="this.document.title"/>&quot;?</source> <source>Do you really want to delete document &quot;<x id="PH" equiv-text="this.document.title"/>&quot;?</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">204</context> <context context-type="linenumber">205</context>
</context-group> </context-group>
<target state="needs-translation">Do you really want to delete document "<x id="PH" equiv-text="this.document.title"/>"?</target> <target state="needs-translation">Do you really want to delete document "<x id="PH" equiv-text="this.document.title"/>"?</target>
</trans-unit> </trans-unit>
@@ -230,7 +230,7 @@
<source>The files for this document will be deleted permanently. This operation cannot be undone.</source> <source>The files for this document will be deleted permanently. This operation cannot be undone.</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">205</context> <context context-type="linenumber">206</context>
</context-group> </context-group>
<target state="translated">A dokumentumhoz tartozó fájlok véglegesen törlésre kerülnek. Ez a művelet nem visszafordítható.</target> <target state="translated">A dokumentumhoz tartozó fájlok véglegesen törlésre kerülnek. Ez a művelet nem visszafordítható.</target>
</trans-unit> </trans-unit>
@@ -238,7 +238,7 @@
<source>Delete document</source> <source>Delete document</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">207</context> <context context-type="linenumber">208</context>
</context-group> </context-group>
<target state="translated">Dokumentum törlése</target> <target state="translated">Dokumentum törlése</target>
</trans-unit> </trans-unit>
@@ -246,7 +246,7 @@
<source>Error deleting document: <x id="PH" equiv-text="JSON.stringify(error)"/></source> <source>Error deleting document: <x id="PH" equiv-text="JSON.stringify(error)"/></source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">214</context> <context context-type="linenumber">215</context>
</context-group> </context-group>
<target state="needs-translation">Error deleting document: <x id="PH" equiv-text="JSON.stringify(error)"/></target> <target state="needs-translation">Error deleting document: <x id="PH" equiv-text="JSON.stringify(error)"/></target>
</trans-unit> </trans-unit>
@@ -1042,54 +1042,6 @@
</context-group> </context-group>
<target state="translated">Dokumentum típus szerkesztése</target> <target state="translated">Dokumentum típus szerkesztése</target>
</trans-unit> </trans-unit>
<trans-unit id="49c9ede51100b454f7841b24cd02355c6622bf44" datatype="html">
<source>Search results</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/search/search.component.html</context>
<context context-type="linenumber">1</context>
</context-group>
<target state="translated">Találatok</target>
</trans-unit>
<trans-unit id="31976d04f98e8a38098f66ac3a83ad33b576e5db" datatype="html">
<source>Invalid search query: <x id="INTERPOLATION" equiv-text="{{errorMessage}}"/></source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/search/search.component.html</context>
<context context-type="linenumber">4</context>
</context-group>
<target state="translated">Érvénytelen keresési kifejezés: <x id="INTERPOLATION" equiv-text="{{errorMessage}}"/></target>
</trans-unit>
<trans-unit id="f7f2e30106223a69bcf0f8e586e6be9dc4e72226" datatype="html">
<source>Showing documents similar to <x id="START_LINK" equiv-text="&lt;a routerLink=&quot;/documents/{{more_like}}&quot;&gt;{{more_like_doc?.original_file_name}}"/><x id="INTERPOLATION" equiv-text="{{more_like_doc?.original_file_name}}&lt;/a&gt;"/><x id="CLOSE_LINK" equiv-text="&lt;/a&gt;"/></source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/search/search.component.html</context>
<context context-type="linenumber">6</context>
</context-group>
<target state="needs-translation">Showing documents similar to <x id="START_LINK" equiv-text="&lt;a routerLink=&quot;/documents/{{more_like}}&quot;&gt;{{more_like_doc?.original_file_name}}"/><x id="INTERPOLATION" equiv-text="{{more_like_doc?.original_file_name}}&lt;/a&gt;"/><x id="CLOSE_LINK" equiv-text="&lt;/a&gt;"/></target>
</trans-unit>
<trans-unit id="6e0b0a1ea16f18f2fb1586c53d99d2f22e1aee2e" datatype="html">
<source>Search query: <x id="START_ITALIC_TEXT" equiv-text="&lt;i&gt;{{query}}"/><x id="INTERPOLATION" equiv-text="{{query}}&lt;/i&gt;"/><x id="CLOSE_ITALIC_TEXT" equiv-text="&lt;/i&gt;"/></source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/search/search.component.html</context>
<context context-type="linenumber">9</context>
</context-group>
<target state="translated">Keresés: <x id="START_ITALIC_TEXT" equiv-text="&lt;i&gt;{{query}}"/><x id="INTERPOLATION" equiv-text="{{query}}&lt;/i&gt;"/><x id="CLOSE_ITALIC_TEXT" equiv-text="&lt;/i&gt;"/></target>
</trans-unit>
<trans-unit id="afa760e48c97d64d19c1455d18b7834a2256e23f" datatype="html">
<source>Did you mean &quot;<x id="START_LINK" equiv-text="&lt;a [routerLink]=&quot;&quot; (click)=&quot;searchCorrectedQuery()&quot;&gt;{{correctedQuery}}"/><x id="INTERPOLATION" equiv-text="{{correctedQuery}}&lt;/a&gt;"/><x id="CLOSE_LINK" equiv-text="&lt;/a&gt;"/>&quot;?</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/search/search.component.html</context>
<context context-type="linenumber">11</context>
</context-group>
<target state="translated">Úgy értetted, hogy "<x id="START_LINK" equiv-text="&lt;a [routerLink]=&quot;&quot; (click)=&quot;searchCorrectedQuery()&quot;&gt;{{correctedQuery}}"/><x id="INTERPOLATION" equiv-text="{{correctedQuery}}&lt;/a&gt;"/><x id="CLOSE_LINK" equiv-text="&lt;/a&gt;"/>"?</target>
</trans-unit>
<trans-unit id="fe6ced3fcc803bba5a2e6c1a067b9ce62542500e" datatype="html">
<source>{VAR_PLURAL, plural, =0 {No results} =1 {One result} other {<x id="INTERPOLATION"/> results}}</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/search/search.component.html</context>
<context context-type="linenumber">16</context>
</context-group>
<target state="needs-translation">{VAR_PLURAL, plural, =0 {No results} =1 {One result} other {<x id="INTERPOLATION"/> results}}</target>
</trans-unit>
<trans-unit id="41147374f427980a9f1a8cd5e3f4b1666e6f2418" datatype="html"> <trans-unit id="41147374f427980a9f1a8cd5e3f4b1666e6f2418" datatype="html">
<source>Paperless-ng</source> <source>Paperless-ng</source>
<context-group purpose="location"> <context-group purpose="location">
@@ -1187,35 +1139,11 @@
</context-group> </context-group>
<target state="translated">Összes bezárása</target> <target state="translated">Összes bezárása</target>
</trans-unit> </trans-unit>
<trans-unit id="5701618810648052610" datatype="html">
<source>Title</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">77</context>
</context-group>
<target state="translated">Cím</target>
</trans-unit>
<trans-unit id="3100631071441658964" datatype="html">
<source>Title &amp; content</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">78</context>
</context-group>
<target state="needs-translation">Title &amp; content</target>
</trans-unit>
<trans-unit id="7517688192215738656" datatype="html">
<source>ASN</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">79</context>
</context-group>
<target state="translated">ASN</target>
</trans-unit>
<trans-unit id="5195932016807797291" datatype="html"> <trans-unit id="5195932016807797291" datatype="html">
<source>Correspondent: <x id="PH" equiv-text="this.correspondents.find(c =&gt; c.id == +rule.value)?.name"/></source> <source>Correspondent: <x id="PH" equiv-text="this.correspondents.find(c =&gt; c.id == +rule.value)?.name"/></source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">33</context> <context context-type="linenumber">37</context>
</context-group> </context-group>
<target state="translated">Partner: <x id="PH" equiv-text="this.correspondents.find(c =&gt; c.id == +rule.value)?.name"/></target> <target state="translated">Partner: <x id="PH" equiv-text="this.correspondents.find(c =&gt; c.id == +rule.value)?.name"/></target>
</trans-unit> </trans-unit>
@@ -1223,7 +1151,7 @@
<source>Without correspondent</source> <source>Without correspondent</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">35</context> <context context-type="linenumber">39</context>
</context-group> </context-group>
<target state="needs-translation">Without correspondent</target> <target state="needs-translation">Without correspondent</target>
</trans-unit> </trans-unit>
@@ -1231,7 +1159,7 @@
<source>Type: <x id="PH" equiv-text="this.documentTypes.find(dt =&gt; dt.id == +rule.value)?.name"/></source> <source>Type: <x id="PH" equiv-text="this.documentTypes.find(dt =&gt; dt.id == +rule.value)?.name"/></source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">40</context> <context context-type="linenumber">44</context>
</context-group> </context-group>
<target state="translated">Típus: <x id="PH" equiv-text="this.documentTypes.find(dt =&gt; dt.id == +rule.value)?.name"/></target> <target state="translated">Típus: <x id="PH" equiv-text="this.documentTypes.find(dt =&gt; dt.id == +rule.value)?.name"/></target>
</trans-unit> </trans-unit>
@@ -1239,7 +1167,7 @@
<source>Without document type</source> <source>Without document type</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">42</context> <context context-type="linenumber">46</context>
</context-group> </context-group>
<target state="needs-translation">Without document type</target> <target state="needs-translation">Without document type</target>
</trans-unit> </trans-unit>
@@ -1247,7 +1175,7 @@
<source>Tag: <x id="PH" equiv-text="this.tags.find(t =&gt; t.id == +rule.value)?.name"/></source> <source>Tag: <x id="PH" equiv-text="this.tags.find(t =&gt; t.id == +rule.value)?.name"/></source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">46</context> <context context-type="linenumber">50</context>
</context-group> </context-group>
<target state="translated">Cimke: <x id="PH" equiv-text="this.tags.find(t =&gt; t.id == +rule.value)?.name"/></target> <target state="translated">Cimke: <x id="PH" equiv-text="this.tags.find(t =&gt; t.id == +rule.value)?.name"/></target>
</trans-unit> </trans-unit>
@@ -1255,7 +1183,7 @@
<source>Without any tag</source> <source>Without any tag</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">50</context> <context context-type="linenumber">54</context>
</context-group> </context-group>
<target state="needs-translation">Without any tag</target> <target state="needs-translation">Without any tag</target>
</trans-unit> </trans-unit>
@@ -1263,7 +1191,7 @@
<source>Title: <x id="PH" equiv-text="rule.value"/></source> <source>Title: <x id="PH" equiv-text="rule.value"/></source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">54</context> <context context-type="linenumber">58</context>
</context-group> </context-group>
<target state="needs-translation">Title: <x id="PH" equiv-text="rule.value"/></target> <target state="needs-translation">Title: <x id="PH" equiv-text="rule.value"/></target>
</trans-unit> </trans-unit>
@@ -1271,10 +1199,50 @@
<source>ASN: <x id="PH" equiv-text="rule.value"/></source> <source>ASN: <x id="PH" equiv-text="rule.value"/></source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">57</context> <context context-type="linenumber">61</context>
</context-group> </context-group>
<target state="needs-translation">ASN: <x id="PH" equiv-text="rule.value"/></target> <target state="needs-translation">ASN: <x id="PH" equiv-text="rule.value"/></target>
</trans-unit> </trans-unit>
<trans-unit id="5701618810648052610" datatype="html">
<source>Title</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">85</context>
</context-group>
<target state="translated">Cím</target>
</trans-unit>
<trans-unit id="3100631071441658964" datatype="html">
<source>Title &amp; content</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">86</context>
</context-group>
<target state="needs-translation">Title &amp; content</target>
</trans-unit>
<trans-unit id="7517688192215738656" datatype="html">
<source>ASN</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">87</context>
</context-group>
<target state="translated">ASN</target>
</trans-unit>
<trans-unit id="1010505078885609376" datatype="html">
<source>Advanced search</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">88</context>
</context-group>
<target state="needs-translation">Advanced search</target>
</trans-unit>
<trans-unit id="2649431021108393503" datatype="html">
<source>More like</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">91</context>
</context-group>
<target state="needs-translation">More like</target>
</trans-unit>
<trans-unit id="02d184c288f567825a1fcbf83bcd3099a10853d5" datatype="html"> <trans-unit id="02d184c288f567825a1fcbf83bcd3099a10853d5" datatype="html">
<source>Filter tags</source> <source>Filter tags</source>
<context-group purpose="location"> <context-group purpose="location">
@@ -1408,10 +1376,34 @@
<source>Score:</source> <source>Score:</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-card-large/document-card-large.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-card-large/document-card-large.component.html</context>
<context context-type="linenumber">66</context> <context context-type="linenumber">86</context>
</context-group> </context-group>
<target state="translated">Pont:</target> <target state="translated">Pont:</target>
</trans-unit> </trans-unit>
<trans-unit id="727d980bba2b3e0b3d8705607f1208eef046479b" datatype="html">
<source>Created: <x id="INTERPOLATION" equiv-text="{{ document.created | customDate}}"/></source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-card-small/document-card-small.component.html</context>
<context context-type="linenumber">43</context>
</context-group>
<target state="needs-translation">Created: <x id="INTERPOLATION" equiv-text="{{ document.created | customDate}}"/></target>
</trans-unit>
<trans-unit id="0f5d856cb63c69fde44fbfc653ec0655f9040865" datatype="html">
<source>Added: <x id="INTERPOLATION" equiv-text="{{ document.added | customDate}}"/></source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-card-small/document-card-small.component.html</context>
<context context-type="linenumber">44</context>
</context-group>
<target state="needs-translation">Added: <x id="INTERPOLATION" equiv-text="{{ document.added | customDate}}"/></target>
</trans-unit>
<trans-unit id="a205126adef6251fc63305f1a6228d07bc2795a8" datatype="html">
<source>Modified: <x id="INTERPOLATION" equiv-text="{{ document.modified | customDate}}"/></source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-card-small/document-card-small.component.html</context>
<context context-type="linenumber">45</context>
</context-group>
<target state="needs-translation">Modified: <x id="INTERPOLATION" equiv-text="{{ document.modified | customDate}}"/></target>
</trans-unit>
<trans-unit id="7985804062689412812" datatype="html"> <trans-unit id="7985804062689412812" datatype="html">
<source>Error executing bulk operation: <x id="PH" equiv-text="JSON.stringify(error.error)"/></source> <source>Error executing bulk operation: <x id="PH" equiv-text="JSON.stringify(error.error)"/></source>
<context-group purpose="location"> <context-group purpose="location">
@@ -1857,6 +1849,14 @@
</context-group> </context-group>
<target state="needs-translation">Invalid date.</target> <target state="needs-translation">Invalid date.</target>
</trans-unit> </trans-unit>
<trans-unit id="bd5ca454e336126f3eeb67417d9264696b5c852c" datatype="html">
<source>Searching document with asn <x id="INTERPOLATION" equiv-text="{{asn}}"/></source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-asn/document-asn.component.html</context>
<context context-type="linenumber">1</context>
</context-group>
<target state="needs-translation">Searching document with asn <x id="INTERPOLATION" equiv-text="{{asn}}"/></target>
</trans-unit>
<trans-unit id="2807800733729323332" datatype="html"> <trans-unit id="2807800733729323332" datatype="html">
<source>Yes</source> <source>Yes</source>
<context-group purpose="location"> <context-group purpose="location">

View File

@@ -54,7 +54,7 @@
<source>Documents</source> <source>Documents</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">49</context> <context context-type="linenumber">51</context>
</context-group> </context-group>
<target state="translated">Documenti</target> <target state="translated">Documenti</target>
</trans-unit> </trans-unit>
@@ -62,7 +62,7 @@
<source>View &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot; saved successfully.</source> <source>View &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot; saved successfully.</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">115</context> <context context-type="linenumber">116</context>
</context-group> </context-group>
<target state="translated">La vista "<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>" è stata salvata.</target> <target state="translated">La vista "<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>" è stata salvata.</target>
</trans-unit> </trans-unit>
@@ -70,7 +70,7 @@
<source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully.</source> <source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully.</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">136</context> <context context-type="linenumber">138</context>
</context-group> </context-group>
<target state="translated">La vista "<x id="PH" equiv-text="savedView.name"/>" è stata creata.</target> <target state="translated">La vista "<x id="PH" equiv-text="savedView.name"/>" è stata creata.</target>
</trans-unit> </trans-unit>
@@ -166,7 +166,7 @@
<source>ASN</source> <source>ASN</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">105</context> <context context-type="linenumber">111</context>
</context-group> </context-group>
<target state="translated">ASN</target> <target state="translated">ASN</target>
</trans-unit> </trans-unit>
@@ -174,7 +174,7 @@
<source>Correspondent</source> <source>Correspondent</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">111</context> <context context-type="linenumber">117</context>
</context-group> </context-group>
<target state="translated">Corrispondente</target> <target state="translated">Corrispondente</target>
</trans-unit> </trans-unit>
@@ -182,7 +182,7 @@
<source>Title</source> <source>Title</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">117</context> <context context-type="linenumber">123</context>
</context-group> </context-group>
<target state="translated">Titolo</target> <target state="translated">Titolo</target>
</trans-unit> </trans-unit>
@@ -190,7 +190,7 @@
<source>Document type</source> <source>Document type</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">123</context> <context context-type="linenumber">129</context>
</context-group> </context-group>
<target state="translated">Tipo di documento</target> <target state="translated">Tipo di documento</target>
</trans-unit> </trans-unit>
@@ -198,7 +198,7 @@
<source>Created</source> <source>Created</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">129</context> <context context-type="linenumber">135</context>
</context-group> </context-group>
<target state="translated">Creato</target> <target state="translated">Creato</target>
</trans-unit> </trans-unit>
@@ -206,7 +206,7 @@
<source>Added</source> <source>Added</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">135</context> <context context-type="linenumber">141</context>
</context-group> </context-group>
<target state="translated">Aggiunto</target> <target state="translated">Aggiunto</target>
</trans-unit> </trans-unit>
@@ -214,7 +214,7 @@
<source>Confirm delete</source> <source>Confirm delete</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">203</context> <context context-type="linenumber">204</context>
</context-group> </context-group>
<target state="translated">Conferma eliminazione</target> <target state="translated">Conferma eliminazione</target>
</trans-unit> </trans-unit>
@@ -222,7 +222,7 @@
<source>Do you really want to delete document &quot;<x id="PH" equiv-text="this.document.title"/>&quot;?</source> <source>Do you really want to delete document &quot;<x id="PH" equiv-text="this.document.title"/>&quot;?</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">204</context> <context context-type="linenumber">205</context>
</context-group> </context-group>
<target state="translated">Vuoi eliminare il documento "<x id="PH" equiv-text="this.document.title"/>"?</target> <target state="translated">Vuoi eliminare il documento "<x id="PH" equiv-text="this.document.title"/>"?</target>
</trans-unit> </trans-unit>
@@ -230,7 +230,7 @@
<source>The files for this document will be deleted permanently. This operation cannot be undone.</source> <source>The files for this document will be deleted permanently. This operation cannot be undone.</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">205</context> <context context-type="linenumber">206</context>
</context-group> </context-group>
<target state="translated">I file di questo documento saranno eliminati permanentemente. Questa operazione è irreversibile.</target> <target state="translated">I file di questo documento saranno eliminati permanentemente. Questa operazione è irreversibile.</target>
</trans-unit> </trans-unit>
@@ -238,7 +238,7 @@
<source>Delete document</source> <source>Delete document</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">207</context> <context context-type="linenumber">208</context>
</context-group> </context-group>
<target state="translated">Elimina documento</target> <target state="translated">Elimina documento</target>
</trans-unit> </trans-unit>
@@ -246,7 +246,7 @@
<source>Error deleting document: <x id="PH" equiv-text="JSON.stringify(error)"/></source> <source>Error deleting document: <x id="PH" equiv-text="JSON.stringify(error)"/></source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">214</context> <context context-type="linenumber">215</context>
</context-group> </context-group>
<target state="translated">Errore nell'eliminazione del documento: <x id="PH" equiv-text="JSON.stringify(error)"/></target> <target state="translated">Errore nell'eliminazione del documento: <x id="PH" equiv-text="JSON.stringify(error)"/></target>
</trans-unit> </trans-unit>
@@ -1042,54 +1042,6 @@
</context-group> </context-group>
<target state="translated">Modifica tipo di documento</target> <target state="translated">Modifica tipo di documento</target>
</trans-unit> </trans-unit>
<trans-unit id="49c9ede51100b454f7841b24cd02355c6622bf44" datatype="html">
<source>Search results</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/search/search.component.html</context>
<context context-type="linenumber">1</context>
</context-group>
<target state="translated">Risultati della ricerca</target>
</trans-unit>
<trans-unit id="31976d04f98e8a38098f66ac3a83ad33b576e5db" datatype="html">
<source>Invalid search query: <x id="INTERPOLATION" equiv-text="{{errorMessage}}"/></source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/search/search.component.html</context>
<context context-type="linenumber">4</context>
</context-group>
<target state="translated">Query di ricerca non valida: <x id="INTERPOLATION" equiv-text="{{errorMessage}}"/></target>
</trans-unit>
<trans-unit id="f7f2e30106223a69bcf0f8e586e6be9dc4e72226" datatype="html">
<source>Showing documents similar to <x id="START_LINK" equiv-text="&lt;a routerLink=&quot;/documents/{{more_like}}&quot;&gt;{{more_like_doc?.original_file_name}}"/><x id="INTERPOLATION" equiv-text="{{more_like_doc?.original_file_name}}&lt;/a&gt;"/><x id="CLOSE_LINK" equiv-text="&lt;/a&gt;"/></source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/search/search.component.html</context>
<context context-type="linenumber">6</context>
</context-group>
<target state="translated">Documenti simili a <x id="START_LINK" equiv-text="&lt;a routerLink=&quot;/documents/{{more_like}}&quot;&gt;{{more_like_doc?.original_file_name}}"/><x id="INTERPOLATION" equiv-text="{{more_like_doc?.original_file_name}}&lt;/a&gt;"/><x id="CLOSE_LINK" equiv-text="&lt;/a&gt;"/></target>
</trans-unit>
<trans-unit id="6e0b0a1ea16f18f2fb1586c53d99d2f22e1aee2e" datatype="html">
<source>Search query: <x id="START_ITALIC_TEXT" equiv-text="&lt;i&gt;{{query}}"/><x id="INTERPOLATION" equiv-text="{{query}}&lt;/i&gt;"/><x id="CLOSE_ITALIC_TEXT" equiv-text="&lt;/i&gt;"/></source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/search/search.component.html</context>
<context context-type="linenumber">9</context>
</context-group>
<target state="translated">Query di ricerca: <x id="START_ITALIC_TEXT" equiv-text="&lt;i&gt;{{query}}"/><x id="INTERPOLATION" equiv-text="{{query}}&lt;/i&gt;"/><x id="CLOSE_ITALIC_TEXT" equiv-text="&lt;/i&gt;"/></target>
</trans-unit>
<trans-unit id="afa760e48c97d64d19c1455d18b7834a2256e23f" datatype="html">
<source>Did you mean &quot;<x id="START_LINK" equiv-text="&lt;a [routerLink]=&quot;&quot; (click)=&quot;searchCorrectedQuery()&quot;&gt;{{correctedQuery}}"/><x id="INTERPOLATION" equiv-text="{{correctedQuery}}&lt;/a&gt;"/><x id="CLOSE_LINK" equiv-text="&lt;/a&gt;"/>&quot;?</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/search/search.component.html</context>
<context context-type="linenumber">11</context>
</context-group>
<target state="translated">Forse intendevi "<x id="START_LINK" equiv-text="&lt;a [routerLink]=&quot;&quot; (click)=&quot;searchCorrectedQuery()&quot;&gt;{{correctedQuery}}"/><x id="INTERPOLATION" equiv-text="{{correctedQuery}}&lt;/a&gt;"/><x id="CLOSE_LINK" equiv-text="&lt;/a&gt;"/>"?</target>
</trans-unit>
<trans-unit id="fe6ced3fcc803bba5a2e6c1a067b9ce62542500e" datatype="html">
<source>{VAR_PLURAL, plural, =0 {No results} =1 {One result} other {<x id="INTERPOLATION"/> results}}</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/search/search.component.html</context>
<context context-type="linenumber">16</context>
</context-group>
<target state="translated">{VAR_PLURAL, plural, =0 {Nessun risultato} =1 {Un risultato} other {<x id="INTERPOLATION"/> risultati}}</target>
</trans-unit>
<trans-unit id="41147374f427980a9f1a8cd5e3f4b1666e6f2418" datatype="html"> <trans-unit id="41147374f427980a9f1a8cd5e3f4b1666e6f2418" datatype="html">
<source>Paperless-ng</source> <source>Paperless-ng</source>
<context-group purpose="location"> <context-group purpose="location">
@@ -1187,35 +1139,11 @@
</context-group> </context-group>
<target state="translated">Chiudi tutti</target> <target state="translated">Chiudi tutti</target>
</trans-unit> </trans-unit>
<trans-unit id="5701618810648052610" datatype="html">
<source>Title</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">77</context>
</context-group>
<target state="translated">Titolo</target>
</trans-unit>
<trans-unit id="3100631071441658964" datatype="html">
<source>Title &amp; content</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">78</context>
</context-group>
<target state="translated">Titolo &amp; contenuto</target>
</trans-unit>
<trans-unit id="7517688192215738656" datatype="html">
<source>ASN</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">79</context>
</context-group>
<target state="translated">ASN</target>
</trans-unit>
<trans-unit id="5195932016807797291" datatype="html"> <trans-unit id="5195932016807797291" datatype="html">
<source>Correspondent: <x id="PH" equiv-text="this.correspondents.find(c =&gt; c.id == +rule.value)?.name"/></source> <source>Correspondent: <x id="PH" equiv-text="this.correspondents.find(c =&gt; c.id == +rule.value)?.name"/></source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">33</context> <context context-type="linenumber">37</context>
</context-group> </context-group>
<target state="translated">Corrispondente: <x id="PH" equiv-text="this.correspondents.find(c =&gt; c.id == +rule.value)?.name"/></target> <target state="translated">Corrispondente: <x id="PH" equiv-text="this.correspondents.find(c =&gt; c.id == +rule.value)?.name"/></target>
</trans-unit> </trans-unit>
@@ -1223,7 +1151,7 @@
<source>Without correspondent</source> <source>Without correspondent</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">35</context> <context context-type="linenumber">39</context>
</context-group> </context-group>
<target state="translated">Senza corrispondente</target> <target state="translated">Senza corrispondente</target>
</trans-unit> </trans-unit>
@@ -1231,7 +1159,7 @@
<source>Type: <x id="PH" equiv-text="this.documentTypes.find(dt =&gt; dt.id == +rule.value)?.name"/></source> <source>Type: <x id="PH" equiv-text="this.documentTypes.find(dt =&gt; dt.id == +rule.value)?.name"/></source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">40</context> <context context-type="linenumber">44</context>
</context-group> </context-group>
<target state="translated">Tipo: <x id="PH" equiv-text="this.documentTypes.find(dt =&gt; dt.id == +rule.value)?.name"/></target> <target state="translated">Tipo: <x id="PH" equiv-text="this.documentTypes.find(dt =&gt; dt.id == +rule.value)?.name"/></target>
</trans-unit> </trans-unit>
@@ -1239,7 +1167,7 @@
<source>Without document type</source> <source>Without document type</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">42</context> <context context-type="linenumber">46</context>
</context-group> </context-group>
<target state="translated">Senza tipo di documento</target> <target state="translated">Senza tipo di documento</target>
</trans-unit> </trans-unit>
@@ -1247,7 +1175,7 @@
<source>Tag: <x id="PH" equiv-text="this.tags.find(t =&gt; t.id == +rule.value)?.name"/></source> <source>Tag: <x id="PH" equiv-text="this.tags.find(t =&gt; t.id == +rule.value)?.name"/></source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">46</context> <context context-type="linenumber">50</context>
</context-group> </context-group>
<target state="translated">Tag: <x id="PH" equiv-text="this.tags.find(t =&gt; t.id == +rule.value)?.name"/></target> <target state="translated">Tag: <x id="PH" equiv-text="this.tags.find(t =&gt; t.id == +rule.value)?.name"/></target>
</trans-unit> </trans-unit>
@@ -1255,7 +1183,7 @@
<source>Without any tag</source> <source>Without any tag</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">50</context> <context context-type="linenumber">54</context>
</context-group> </context-group>
<target state="translated">Senza alcun tag</target> <target state="translated">Senza alcun tag</target>
</trans-unit> </trans-unit>
@@ -1263,7 +1191,7 @@
<source>Title: <x id="PH" equiv-text="rule.value"/></source> <source>Title: <x id="PH" equiv-text="rule.value"/></source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">54</context> <context context-type="linenumber">58</context>
</context-group> </context-group>
<target state="translated">Titolo: <x id="PH" equiv-text="rule.value"/></target> <target state="translated">Titolo: <x id="PH" equiv-text="rule.value"/></target>
</trans-unit> </trans-unit>
@@ -1271,10 +1199,50 @@
<source>ASN: <x id="PH" equiv-text="rule.value"/></source> <source>ASN: <x id="PH" equiv-text="rule.value"/></source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">57</context> <context context-type="linenumber">61</context>
</context-group> </context-group>
<target state="translated">ASN: <x id="PH" equiv-text="rule.value"/></target> <target state="translated">ASN: <x id="PH" equiv-text="rule.value"/></target>
</trans-unit> </trans-unit>
<trans-unit id="5701618810648052610" datatype="html">
<source>Title</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">85</context>
</context-group>
<target state="translated">Titolo</target>
</trans-unit>
<trans-unit id="3100631071441658964" datatype="html">
<source>Title &amp; content</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">86</context>
</context-group>
<target state="translated">Titolo &amp; contenuto</target>
</trans-unit>
<trans-unit id="7517688192215738656" datatype="html">
<source>ASN</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">87</context>
</context-group>
<target state="translated">ASN</target>
</trans-unit>
<trans-unit id="1010505078885609376" datatype="html">
<source>Advanced search</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">88</context>
</context-group>
<target state="translated">Ricerca avanzata</target>
</trans-unit>
<trans-unit id="2649431021108393503" datatype="html">
<source>More like</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">91</context>
</context-group>
<target state="translated">Più come</target>
</trans-unit>
<trans-unit id="02d184c288f567825a1fcbf83bcd3099a10853d5" datatype="html"> <trans-unit id="02d184c288f567825a1fcbf83bcd3099a10853d5" datatype="html">
<source>Filter tags</source> <source>Filter tags</source>
<context-group purpose="location"> <context-group purpose="location">
@@ -1408,10 +1376,34 @@
<source>Score:</source> <source>Score:</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-card-large/document-card-large.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-card-large/document-card-large.component.html</context>
<context context-type="linenumber">66</context> <context context-type="linenumber">86</context>
</context-group> </context-group>
<target state="translated">Punteggio:</target> <target state="translated">Punteggio:</target>
</trans-unit> </trans-unit>
<trans-unit id="727d980bba2b3e0b3d8705607f1208eef046479b" datatype="html">
<source>Created: <x id="INTERPOLATION" equiv-text="{{ document.created | customDate}}"/></source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-card-small/document-card-small.component.html</context>
<context context-type="linenumber">43</context>
</context-group>
<target state="translated">Creato il: <x id="INTERPOLATION" equiv-text="{{ document.created | customDate}}"/></target>
</trans-unit>
<trans-unit id="0f5d856cb63c69fde44fbfc653ec0655f9040865" datatype="html">
<source>Added: <x id="INTERPOLATION" equiv-text="{{ document.added | customDate}}"/></source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-card-small/document-card-small.component.html</context>
<context context-type="linenumber">44</context>
</context-group>
<target state="translated">Aggiunto il: <x id="INTERPOLATION" equiv-text="{{ document.added | customDate}}"/></target>
</trans-unit>
<trans-unit id="a205126adef6251fc63305f1a6228d07bc2795a8" datatype="html">
<source>Modified: <x id="INTERPOLATION" equiv-text="{{ document.modified | customDate}}"/></source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-card-small/document-card-small.component.html</context>
<context context-type="linenumber">45</context>
</context-group>
<target state="translated">Modificato il: <x id="INTERPOLATION" equiv-text="{{ document.modified | customDate}}"/></target>
</trans-unit>
<trans-unit id="7985804062689412812" datatype="html"> <trans-unit id="7985804062689412812" datatype="html">
<source>Error executing bulk operation: <x id="PH" equiv-text="JSON.stringify(error.error)"/></source> <source>Error executing bulk operation: <x id="PH" equiv-text="JSON.stringify(error.error)"/></source>
<context-group purpose="location"> <context-group purpose="location">
@@ -1857,6 +1849,14 @@
</context-group> </context-group>
<target state="translated">Data non valida.</target> <target state="translated">Data non valida.</target>
</trans-unit> </trans-unit>
<trans-unit id="bd5ca454e336126f3eeb67417d9264696b5c852c" datatype="html">
<source>Searching document with asn <x id="INTERPOLATION" equiv-text="{{asn}}"/></source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-asn/document-asn.component.html</context>
<context context-type="linenumber">1</context>
</context-group>
<target state="translated">Cercando documento con asn <x id="INTERPOLATION" equiv-text="{{asn}}"/></target>
</trans-unit>
<trans-unit id="2807800733729323332" datatype="html"> <trans-unit id="2807800733729323332" datatype="html">
<source>Yes</source> <source>Yes</source>
<context-group purpose="location"> <context-group purpose="location">

View File

@@ -54,7 +54,7 @@
<source>Documents</source> <source>Documents</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">49</context> <context context-type="linenumber">51</context>
</context-group> </context-group>
<target state="translated">Documenten</target> <target state="translated">Documenten</target>
</trans-unit> </trans-unit>
@@ -62,7 +62,7 @@
<source>View &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot; saved successfully.</source> <source>View &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot; saved successfully.</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">115</context> <context context-type="linenumber">116</context>
</context-group> </context-group>
<target state="translated">View "<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>" met succes opgeslagen.</target> <target state="translated">View "<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>" met succes opgeslagen.</target>
</trans-unit> </trans-unit>
@@ -70,7 +70,7 @@
<source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully.</source> <source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully.</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">136</context> <context context-type="linenumber">138</context>
</context-group> </context-group>
<target state="translated">View "<x id="PH" equiv-text="savedView.name"/>" met succes gemaakt.</target> <target state="translated">View "<x id="PH" equiv-text="savedView.name"/>" met succes gemaakt.</target>
</trans-unit> </trans-unit>
@@ -166,7 +166,7 @@
<source>ASN</source> <source>ASN</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">105</context> <context context-type="linenumber">111</context>
</context-group> </context-group>
<target state="translated">ASN</target> <target state="translated">ASN</target>
</trans-unit> </trans-unit>
@@ -174,7 +174,7 @@
<source>Correspondent</source> <source>Correspondent</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">111</context> <context context-type="linenumber">117</context>
</context-group> </context-group>
<target state="translated">Correspondent</target> <target state="translated">Correspondent</target>
</trans-unit> </trans-unit>
@@ -182,7 +182,7 @@
<source>Title</source> <source>Title</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">117</context> <context context-type="linenumber">123</context>
</context-group> </context-group>
<target state="translated">Titel</target> <target state="translated">Titel</target>
</trans-unit> </trans-unit>
@@ -190,7 +190,7 @@
<source>Document type</source> <source>Document type</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">123</context> <context context-type="linenumber">129</context>
</context-group> </context-group>
<target state="translated">Documenttype</target> <target state="translated">Documenttype</target>
</trans-unit> </trans-unit>
@@ -198,7 +198,7 @@
<source>Created</source> <source>Created</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">129</context> <context context-type="linenumber">135</context>
</context-group> </context-group>
<target state="translated">Aangemaakt</target> <target state="translated">Aangemaakt</target>
</trans-unit> </trans-unit>
@@ -206,7 +206,7 @@
<source>Added</source> <source>Added</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">135</context> <context context-type="linenumber">141</context>
</context-group> </context-group>
<target state="translated">Toegevoegd</target> <target state="translated">Toegevoegd</target>
</trans-unit> </trans-unit>
@@ -214,7 +214,7 @@
<source>Confirm delete</source> <source>Confirm delete</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">203</context> <context context-type="linenumber">204</context>
</context-group> </context-group>
<target state="translated">Bevestig het verwijderen</target> <target state="translated">Bevestig het verwijderen</target>
</trans-unit> </trans-unit>
@@ -222,7 +222,7 @@
<source>Do you really want to delete document &quot;<x id="PH" equiv-text="this.document.title"/>&quot;?</source> <source>Do you really want to delete document &quot;<x id="PH" equiv-text="this.document.title"/>&quot;?</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">204</context> <context context-type="linenumber">205</context>
</context-group> </context-group>
<target state="translated">Wilt u het document echt verwijderen "<x id="PH" equiv-text="this.document.title"/>"?</target> <target state="translated">Wilt u het document echt verwijderen "<x id="PH" equiv-text="this.document.title"/>"?</target>
</trans-unit> </trans-unit>
@@ -230,7 +230,7 @@
<source>The files for this document will be deleted permanently. This operation cannot be undone.</source> <source>The files for this document will be deleted permanently. This operation cannot be undone.</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">205</context> <context context-type="linenumber">206</context>
</context-group> </context-group>
<target state="translated">De bestanden voor dit document worden definitief verwijderd. Deze bewerking kan niet ongedaan worden gemaakt.</target> <target state="translated">De bestanden voor dit document worden definitief verwijderd. Deze bewerking kan niet ongedaan worden gemaakt.</target>
</trans-unit> </trans-unit>
@@ -238,7 +238,7 @@
<source>Delete document</source> <source>Delete document</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">207</context> <context context-type="linenumber">208</context>
</context-group> </context-group>
<target state="translated">Verwijder document</target> <target state="translated">Verwijder document</target>
</trans-unit> </trans-unit>
@@ -246,7 +246,7 @@
<source>Error deleting document: <x id="PH" equiv-text="JSON.stringify(error)"/></source> <source>Error deleting document: <x id="PH" equiv-text="JSON.stringify(error)"/></source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">214</context> <context context-type="linenumber">215</context>
</context-group> </context-group>
<target state="translated">Fout bij het verwijderen van het document: <x id="PH" equiv-text="JSON.stringify(error)"/></target> <target state="translated">Fout bij het verwijderen van het document: <x id="PH" equiv-text="JSON.stringify(error)"/></target>
</trans-unit> </trans-unit>
@@ -1042,54 +1042,6 @@
</context-group> </context-group>
<target state="translated">Documenttype bewerken</target> <target state="translated">Documenttype bewerken</target>
</trans-unit> </trans-unit>
<trans-unit id="49c9ede51100b454f7841b24cd02355c6622bf44" datatype="html">
<source>Search results</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/search/search.component.html</context>
<context context-type="linenumber">1</context>
</context-group>
<target state="translated">Zoekresultaten</target>
</trans-unit>
<trans-unit id="31976d04f98e8a38098f66ac3a83ad33b576e5db" datatype="html">
<source>Invalid search query: <x id="INTERPOLATION" equiv-text="{{errorMessage}}"/></source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/search/search.component.html</context>
<context context-type="linenumber">4</context>
</context-group>
<target state="translated">Ongeldige zoekopdracht: <x id="INTERPOLATION" equiv-text="{{errorMessage}}"/></target>
</trans-unit>
<trans-unit id="f7f2e30106223a69bcf0f8e586e6be9dc4e72226" datatype="html">
<source>Showing documents similar to <x id="START_LINK" equiv-text="&lt;a routerLink=&quot;/documents/{{more_like}}&quot;&gt;{{more_like_doc?.original_file_name}}"/><x id="INTERPOLATION" equiv-text="{{more_like_doc?.original_file_name}}&lt;/a&gt;"/><x id="CLOSE_LINK" equiv-text="&lt;/a&gt;"/></source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/search/search.component.html</context>
<context context-type="linenumber">6</context>
</context-group>
<target state="translated">Toon documenten die lijken op <x id="START_LINK" equiv-text="&lt;a routerLink=&quot;/documents/{{more_like}}&quot;&gt;{{more_like_doc?.original_file_name}}"/><x id="INTERPOLATION" equiv-text="{{more_like_doc?.original_file_name}}&lt;/a&gt;"/><x id="CLOSE_LINK" equiv-text="&lt;/a&gt;"/></target>
</trans-unit>
<trans-unit id="6e0b0a1ea16f18f2fb1586c53d99d2f22e1aee2e" datatype="html">
<source>Search query: <x id="START_ITALIC_TEXT" equiv-text="&lt;i&gt;{{query}}"/><x id="INTERPOLATION" equiv-text="{{query}}&lt;/i&gt;"/><x id="CLOSE_ITALIC_TEXT" equiv-text="&lt;/i&gt;"/></source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/search/search.component.html</context>
<context context-type="linenumber">9</context>
</context-group>
<target state="translated">Zoekopdracht: <x id="START_ITALIC_TEXT" equiv-text="&lt;i&gt;{{query}}"/><x id="INTERPOLATION" equiv-text="{{query}}&lt;/i&gt;"/><x id="CLOSE_ITALIC_TEXT" equiv-text="&lt;/i&gt;"/></target>
</trans-unit>
<trans-unit id="afa760e48c97d64d19c1455d18b7834a2256e23f" datatype="html">
<source>Did you mean &quot;<x id="START_LINK" equiv-text="&lt;a [routerLink]=&quot;&quot; (click)=&quot;searchCorrectedQuery()&quot;&gt;{{correctedQuery}}"/><x id="INTERPOLATION" equiv-text="{{correctedQuery}}&lt;/a&gt;"/><x id="CLOSE_LINK" equiv-text="&lt;/a&gt;"/>&quot;?</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/search/search.component.html</context>
<context context-type="linenumber">11</context>
</context-group>
<target state="translated">Bedoelde u "<x id="START_LINK" equiv-text="&lt;a [routerLink]=&quot;&quot; (click)=&quot;searchCorrectedQuery()&quot;&gt;{{correctedQuery}}"/><x id="INTERPOLATION" equiv-text="{{correctedQuery}}&lt;/a&gt;"/><x id="CLOSE_LINK" equiv-text="&lt;/a&gt;"/>"?</target>
</trans-unit>
<trans-unit id="fe6ced3fcc803bba5a2e6c1a067b9ce62542500e" datatype="html">
<source>{VAR_PLURAL, plural, =0 {No results} =1 {One result} other {<x id="INTERPOLATION"/> results}}</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/search/search.component.html</context>
<context context-type="linenumber">16</context>
</context-group>
<target state="translated">{VAR_PLURAL, plural, =0 {Geen resultaten} =1 {Eén resultaat} other {<x id="INTERPOLATION"/> resultaten}}</target>
</trans-unit>
<trans-unit id="41147374f427980a9f1a8cd5e3f4b1666e6f2418" datatype="html"> <trans-unit id="41147374f427980a9f1a8cd5e3f4b1666e6f2418" datatype="html">
<source>Paperless-ng</source> <source>Paperless-ng</source>
<context-group purpose="location"> <context-group purpose="location">
@@ -1187,35 +1139,11 @@
</context-group> </context-group>
<target state="translated">Alles sluiten</target> <target state="translated">Alles sluiten</target>
</trans-unit> </trans-unit>
<trans-unit id="5701618810648052610" datatype="html">
<source>Title</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">77</context>
</context-group>
<target state="translated">Titel</target>
</trans-unit>
<trans-unit id="3100631071441658964" datatype="html">
<source>Title &amp; content</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">78</context>
</context-group>
<target state="translated">Titel en inhoud</target>
</trans-unit>
<trans-unit id="7517688192215738656" datatype="html">
<source>ASN</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">79</context>
</context-group>
<target state="translated">ASN</target>
</trans-unit>
<trans-unit id="5195932016807797291" datatype="html"> <trans-unit id="5195932016807797291" datatype="html">
<source>Correspondent: <x id="PH" equiv-text="this.correspondents.find(c =&gt; c.id == +rule.value)?.name"/></source> <source>Correspondent: <x id="PH" equiv-text="this.correspondents.find(c =&gt; c.id == +rule.value)?.name"/></source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">33</context> <context context-type="linenumber">37</context>
</context-group> </context-group>
<target state="translated">Correspondent: <x id="PH" equiv-text="this.correspondents.find(c =&gt; c.id == +rule.value)?.name"/></target> <target state="translated">Correspondent: <x id="PH" equiv-text="this.correspondents.find(c =&gt; c.id == +rule.value)?.name"/></target>
</trans-unit> </trans-unit>
@@ -1223,7 +1151,7 @@
<source>Without correspondent</source> <source>Without correspondent</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">35</context> <context context-type="linenumber">39</context>
</context-group> </context-group>
<target state="translated">Zonder correspondent</target> <target state="translated">Zonder correspondent</target>
</trans-unit> </trans-unit>
@@ -1231,7 +1159,7 @@
<source>Type: <x id="PH" equiv-text="this.documentTypes.find(dt =&gt; dt.id == +rule.value)?.name"/></source> <source>Type: <x id="PH" equiv-text="this.documentTypes.find(dt =&gt; dt.id == +rule.value)?.name"/></source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">40</context> <context context-type="linenumber">44</context>
</context-group> </context-group>
<target state="translated">Type: <x id="PH" equiv-text="this.documentTypes.find(dt =&gt; dt.id == +rule.value)?.name"/></target> <target state="translated">Type: <x id="PH" equiv-text="this.documentTypes.find(dt =&gt; dt.id == +rule.value)?.name"/></target>
</trans-unit> </trans-unit>
@@ -1239,7 +1167,7 @@
<source>Without document type</source> <source>Without document type</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">42</context> <context context-type="linenumber">46</context>
</context-group> </context-group>
<target state="translated">Zonder documenttype</target> <target state="translated">Zonder documenttype</target>
</trans-unit> </trans-unit>
@@ -1247,7 +1175,7 @@
<source>Tag: <x id="PH" equiv-text="this.tags.find(t =&gt; t.id == +rule.value)?.name"/></source> <source>Tag: <x id="PH" equiv-text="this.tags.find(t =&gt; t.id == +rule.value)?.name"/></source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">46</context> <context context-type="linenumber">50</context>
</context-group> </context-group>
<target state="translated">Etiket: <x id="PH" equiv-text="this.tags.find(t =&gt; t.id == +rule.value)?.name"/></target> <target state="translated">Etiket: <x id="PH" equiv-text="this.tags.find(t =&gt; t.id == +rule.value)?.name"/></target>
</trans-unit> </trans-unit>
@@ -1255,7 +1183,7 @@
<source>Without any tag</source> <source>Without any tag</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">50</context> <context context-type="linenumber">54</context>
</context-group> </context-group>
<target state="translated">Zonder enig etiket</target> <target state="translated">Zonder enig etiket</target>
</trans-unit> </trans-unit>
@@ -1263,7 +1191,7 @@
<source>Title: <x id="PH" equiv-text="rule.value"/></source> <source>Title: <x id="PH" equiv-text="rule.value"/></source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">54</context> <context context-type="linenumber">58</context>
</context-group> </context-group>
<target state="translated">Titel: <x id="PH" equiv-text="rule.value"/></target> <target state="translated">Titel: <x id="PH" equiv-text="rule.value"/></target>
</trans-unit> </trans-unit>
@@ -1271,10 +1199,50 @@
<source>ASN: <x id="PH" equiv-text="rule.value"/></source> <source>ASN: <x id="PH" equiv-text="rule.value"/></source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">57</context> <context context-type="linenumber">61</context>
</context-group> </context-group>
<target state="translated">ASN: <x id="PH" equiv-text="rule.value"/></target> <target state="translated">ASN: <x id="PH" equiv-text="rule.value"/></target>
</trans-unit> </trans-unit>
<trans-unit id="5701618810648052610" datatype="html">
<source>Title</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">85</context>
</context-group>
<target state="translated">Titel</target>
</trans-unit>
<trans-unit id="3100631071441658964" datatype="html">
<source>Title &amp; content</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">86</context>
</context-group>
<target state="translated">Titel en inhoud</target>
</trans-unit>
<trans-unit id="7517688192215738656" datatype="html">
<source>ASN</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">87</context>
</context-group>
<target state="translated">ASN</target>
</trans-unit>
<trans-unit id="1010505078885609376" datatype="html">
<source>Advanced search</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">88</context>
</context-group>
<target state="translated">Geavanceerd zoeken</target>
</trans-unit>
<trans-unit id="2649431021108393503" datatype="html">
<source>More like</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">91</context>
</context-group>
<target state="translated">Meer zoals</target>
</trans-unit>
<trans-unit id="02d184c288f567825a1fcbf83bcd3099a10853d5" datatype="html"> <trans-unit id="02d184c288f567825a1fcbf83bcd3099a10853d5" datatype="html">
<source>Filter tags</source> <source>Filter tags</source>
<context-group purpose="location"> <context-group purpose="location">
@@ -1408,10 +1376,34 @@
<source>Score:</source> <source>Score:</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-card-large/document-card-large.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-card-large/document-card-large.component.html</context>
<context context-type="linenumber">66</context> <context context-type="linenumber">86</context>
</context-group> </context-group>
<target state="translated">Score:</target> <target state="translated">Score:</target>
</trans-unit> </trans-unit>
<trans-unit id="727d980bba2b3e0b3d8705607f1208eef046479b" datatype="html">
<source>Created: <x id="INTERPOLATION" equiv-text="{{ document.created | customDate}}"/></source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-card-small/document-card-small.component.html</context>
<context context-type="linenumber">43</context>
</context-group>
<target state="translated">Aangemaakt op: <x id="INTERPOLATION" equiv-text="{{ document.created | customDate}}"/></target>
</trans-unit>
<trans-unit id="0f5d856cb63c69fde44fbfc653ec0655f9040865" datatype="html">
<source>Added: <x id="INTERPOLATION" equiv-text="{{ document.added | customDate}}"/></source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-card-small/document-card-small.component.html</context>
<context context-type="linenumber">44</context>
</context-group>
<target state="translated">Toegevoegd op: <x id="INTERPOLATION" equiv-text="{{ document.added | customDate}}"/></target>
</trans-unit>
<trans-unit id="a205126adef6251fc63305f1a6228d07bc2795a8" datatype="html">
<source>Modified: <x id="INTERPOLATION" equiv-text="{{ document.modified | customDate}}"/></source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-card-small/document-card-small.component.html</context>
<context context-type="linenumber">45</context>
</context-group>
<target state="translated">Gewijzigd op: <x id="INTERPOLATION" equiv-text="{{ document.modified | customDate}}"/></target>
</trans-unit>
<trans-unit id="7985804062689412812" datatype="html"> <trans-unit id="7985804062689412812" datatype="html">
<source>Error executing bulk operation: <x id="PH" equiv-text="JSON.stringify(error.error)"/></source> <source>Error executing bulk operation: <x id="PH" equiv-text="JSON.stringify(error.error)"/></source>
<context-group purpose="location"> <context-group purpose="location">
@@ -1709,7 +1701,7 @@
<context context-type="sourcefile">src/app/components/dashboard/widgets/upload-file-widget/upload-file-widget.component.ts</context> <context context-type="sourcefile">src/app/components/dashboard/widgets/upload-file-widget/upload-file-widget.component.ts</context>
<context context-type="linenumber">126</context> <context context-type="linenumber">126</context>
</context-group> </context-group>
<target state="translated">Upload voltooid, klaar voor meer...</target> <target state="translated">Upload voltooid, wachten om te verwerken...</target>
</trans-unit> </trans-unit>
<trans-unit id="1405142710727603568" datatype="html"> <trans-unit id="1405142710727603568" datatype="html">
<source>HTTP error: <x id="PH" equiv-text="error.status"/> <x id="PH_1" equiv-text="error.statusText"/></source> <source>HTTP error: <x id="PH" equiv-text="error.status"/> <x id="PH_1" equiv-text="error.statusText"/></source>
@@ -1857,6 +1849,14 @@
</context-group> </context-group>
<target state="translated">Ongeldige datum.</target> <target state="translated">Ongeldige datum.</target>
</trans-unit> </trans-unit>
<trans-unit id="bd5ca454e336126f3eeb67417d9264696b5c852c" datatype="html">
<source>Searching document with asn <x id="INTERPOLATION" equiv-text="{{asn}}"/></source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-asn/document-asn.component.html</context>
<context context-type="linenumber">1</context>
</context-group>
<target state="translated">Document zoeken met asn <x id="INTERPOLATION" equiv-text="{{asn}}"/></target>
</trans-unit>
<trans-unit id="2807800733729323332" datatype="html"> <trans-unit id="2807800733729323332" datatype="html">
<source>Yes</source> <source>Yes</source>
<context-group purpose="location"> <context-group purpose="location">
@@ -1927,7 +1927,7 @@
<context context-type="sourcefile">src/app/services/settings.service.ts</context> <context context-type="sourcefile">src/app/services/settings.service.ts</context>
<context context-type="linenumber">95</context> <context context-type="linenumber">95</context>
</context-group> </context-group>
<target state="needs-translation">Portuguese</target> <target state="translated">Portugees</target>
</trans-unit> </trans-unit>
<trans-unit id="9184513005098760425" datatype="html"> <trans-unit id="9184513005098760425" datatype="html">
<source>Portuguese (Brazil)</source> <source>Portuguese (Brazil)</source>

View File

@@ -54,7 +54,7 @@
<source>Documents</source> <source>Documents</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">49</context> <context context-type="linenumber">51</context>
</context-group> </context-group>
<target state="translated">Documentos</target> <target state="translated">Documentos</target>
</trans-unit> </trans-unit>
@@ -62,7 +62,7 @@
<source>View &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot; saved successfully.</source> <source>View &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot; saved successfully.</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">115</context> <context context-type="linenumber">116</context>
</context-group> </context-group>
<target state="translated">Visualização "<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>" salva com sucesso.</target> <target state="translated">Visualização "<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>" salva com sucesso.</target>
</trans-unit> </trans-unit>
@@ -70,7 +70,7 @@
<source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully.</source> <source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully.</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">136</context> <context context-type="linenumber">138</context>
</context-group> </context-group>
<target state="translated">Visualização "<x id="PH" equiv-text="savedView.name"/>" criada com sucesso.</target> <target state="translated">Visualização "<x id="PH" equiv-text="savedView.name"/>" criada com sucesso.</target>
</trans-unit> </trans-unit>
@@ -166,7 +166,7 @@
<source>ASN</source> <source>ASN</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">105</context> <context context-type="linenumber">111</context>
</context-group> </context-group>
<target state="translated">NSA</target> <target state="translated">NSA</target>
</trans-unit> </trans-unit>
@@ -174,7 +174,7 @@
<source>Correspondent</source> <source>Correspondent</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">111</context> <context context-type="linenumber">117</context>
</context-group> </context-group>
<target state="translated">Correspondente</target> <target state="translated">Correspondente</target>
</trans-unit> </trans-unit>
@@ -182,7 +182,7 @@
<source>Title</source> <source>Title</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">117</context> <context context-type="linenumber">123</context>
</context-group> </context-group>
<target state="translated">Título</target> <target state="translated">Título</target>
</trans-unit> </trans-unit>
@@ -190,7 +190,7 @@
<source>Document type</source> <source>Document type</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">123</context> <context context-type="linenumber">129</context>
</context-group> </context-group>
<target state="translated">Tipo de Documento</target> <target state="translated">Tipo de Documento</target>
</trans-unit> </trans-unit>
@@ -198,7 +198,7 @@
<source>Created</source> <source>Created</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">129</context> <context context-type="linenumber">135</context>
</context-group> </context-group>
<target state="translated">Criado</target> <target state="translated">Criado</target>
</trans-unit> </trans-unit>
@@ -206,7 +206,7 @@
<source>Added</source> <source>Added</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">135</context> <context context-type="linenumber">141</context>
</context-group> </context-group>
<target state="translated">Adicionado</target> <target state="translated">Adicionado</target>
</trans-unit> </trans-unit>
@@ -214,7 +214,7 @@
<source>Confirm delete</source> <source>Confirm delete</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">203</context> <context context-type="linenumber">204</context>
</context-group> </context-group>
<target state="translated">Confirmar exclusão</target> <target state="translated">Confirmar exclusão</target>
</trans-unit> </trans-unit>
@@ -222,7 +222,7 @@
<source>Do you really want to delete document &quot;<x id="PH" equiv-text="this.document.title"/>&quot;?</source> <source>Do you really want to delete document &quot;<x id="PH" equiv-text="this.document.title"/>&quot;?</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">204</context> <context context-type="linenumber">205</context>
</context-group> </context-group>
<target state="translated">Você realmente deseja excluir o documento "<x id="PH" equiv-text="this.document.title"/>"?</target> <target state="translated">Você realmente deseja excluir o documento "<x id="PH" equiv-text="this.document.title"/>"?</target>
</trans-unit> </trans-unit>
@@ -230,7 +230,7 @@
<source>The files for this document will be deleted permanently. This operation cannot be undone.</source> <source>The files for this document will be deleted permanently. This operation cannot be undone.</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">205</context> <context context-type="linenumber">206</context>
</context-group> </context-group>
<target state="translated">Os arquivos desse documento serão excluídos permanentemente. Essa operação não pode ser revertida.</target> <target state="translated">Os arquivos desse documento serão excluídos permanentemente. Essa operação não pode ser revertida.</target>
</trans-unit> </trans-unit>
@@ -238,7 +238,7 @@
<source>Delete document</source> <source>Delete document</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">207</context> <context context-type="linenumber">208</context>
</context-group> </context-group>
<target state="translated">Excluir documento</target> <target state="translated">Excluir documento</target>
</trans-unit> </trans-unit>
@@ -246,7 +246,7 @@
<source>Error deleting document: <x id="PH" equiv-text="JSON.stringify(error)"/></source> <source>Error deleting document: <x id="PH" equiv-text="JSON.stringify(error)"/></source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">214</context> <context context-type="linenumber">215</context>
</context-group> </context-group>
<target state="translated">Erro ao excluir documento: <x id="PH" equiv-text="JSON.stringify(error)"/></target> <target state="translated">Erro ao excluir documento: <x id="PH" equiv-text="JSON.stringify(error)"/></target>
</trans-unit> </trans-unit>
@@ -1042,54 +1042,6 @@
</context-group> </context-group>
<target state="translated">Editar tipo de documento</target> <target state="translated">Editar tipo de documento</target>
</trans-unit> </trans-unit>
<trans-unit id="49c9ede51100b454f7841b24cd02355c6622bf44" datatype="html">
<source>Search results</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/search/search.component.html</context>
<context context-type="linenumber">1</context>
</context-group>
<target state="translated">Resultados da busca</target>
</trans-unit>
<trans-unit id="31976d04f98e8a38098f66ac3a83ad33b576e5db" datatype="html">
<source>Invalid search query: <x id="INTERPOLATION" equiv-text="{{errorMessage}}"/></source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/search/search.component.html</context>
<context context-type="linenumber">4</context>
</context-group>
<target state="translated">Termo de pesquisa inválido: <x id="INTERPOLATION" equiv-text="{{errorMessage}}"/></target>
</trans-unit>
<trans-unit id="f7f2e30106223a69bcf0f8e586e6be9dc4e72226" datatype="html">
<source>Showing documents similar to <x id="START_LINK" equiv-text="&lt;a routerLink=&quot;/documents/{{more_like}}&quot;&gt;{{more_like_doc?.original_file_name}}"/><x id="INTERPOLATION" equiv-text="{{more_like_doc?.original_file_name}}&lt;/a&gt;"/><x id="CLOSE_LINK" equiv-text="&lt;/a&gt;"/></source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/search/search.component.html</context>
<context context-type="linenumber">6</context>
</context-group>
<target state="translated">Exibindo documentos similares a <x id="START_LINK" equiv-text="&lt;a routerLink=&quot;/documents/{{more_like}}&quot;&gt;{{more_like_doc?.original_file_name}}"/><x id="INTERPOLATION" equiv-text="{{more_like_doc?.original_file_name}}&lt;/a&gt;"/><x id="CLOSE_LINK" equiv-text="&lt;/a&gt;"/></target>
</trans-unit>
<trans-unit id="6e0b0a1ea16f18f2fb1586c53d99d2f22e1aee2e" datatype="html">
<source>Search query: <x id="START_ITALIC_TEXT" equiv-text="&lt;i&gt;{{query}}"/><x id="INTERPOLATION" equiv-text="{{query}}&lt;/i&gt;"/><x id="CLOSE_ITALIC_TEXT" equiv-text="&lt;/i&gt;"/></source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/search/search.component.html</context>
<context context-type="linenumber">9</context>
</context-group>
<target state="translated">Termo de pesquisa: <x id="START_ITALIC_TEXT" equiv-text="&lt;i&gt;{{query}}"/><x id="INTERPOLATION" equiv-text="{{query}}&lt;/i&gt;"/><x id="CLOSE_ITALIC_TEXT" equiv-text="&lt;/i&gt;"/></target>
</trans-unit>
<trans-unit id="afa760e48c97d64d19c1455d18b7834a2256e23f" datatype="html">
<source>Did you mean &quot;<x id="START_LINK" equiv-text="&lt;a [routerLink]=&quot;&quot; (click)=&quot;searchCorrectedQuery()&quot;&gt;{{correctedQuery}}"/><x id="INTERPOLATION" equiv-text="{{correctedQuery}}&lt;/a&gt;"/><x id="CLOSE_LINK" equiv-text="&lt;/a&gt;"/>&quot;?</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/search/search.component.html</context>
<context context-type="linenumber">11</context>
</context-group>
<target state="translated">Você quis dizer "<x id="START_LINK" equiv-text="&lt;a [routerLink]=&quot;&quot; (click)=&quot;searchCorrectedQuery()&quot;&gt;{{correctedQuery}}"/><x id="INTERPOLATION" equiv-text="{{correctedQuery}}&lt;/a&gt;"/><x id="CLOSE_LINK" equiv-text="&lt;/a&gt;"/>"?</target>
</trans-unit>
<trans-unit id="fe6ced3fcc803bba5a2e6c1a067b9ce62542500e" datatype="html">
<source>{VAR_PLURAL, plural, =0 {No results} =1 {One result} other {<x id="INTERPOLATION"/> results}}</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/search/search.component.html</context>
<context context-type="linenumber">16</context>
</context-group>
<target state="translated">{VAR_PLURAL, plural, =0 {Sem resultados} =1 {Um resultado} other {<x id="INTERPOLATION"/> resultados}}</target>
</trans-unit>
<trans-unit id="41147374f427980a9f1a8cd5e3f4b1666e6f2418" datatype="html"> <trans-unit id="41147374f427980a9f1a8cd5e3f4b1666e6f2418" datatype="html">
<source>Paperless-ng</source> <source>Paperless-ng</source>
<context-group purpose="location"> <context-group purpose="location">
@@ -1187,35 +1139,11 @@
</context-group> </context-group>
<target state="translated">Fechar todos</target> <target state="translated">Fechar todos</target>
</trans-unit> </trans-unit>
<trans-unit id="5701618810648052610" datatype="html">
<source>Title</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">77</context>
</context-group>
<target state="translated">Título</target>
</trans-unit>
<trans-unit id="3100631071441658964" datatype="html">
<source>Title &amp; content</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">78</context>
</context-group>
<target state="translated">Título &amp; conteúdo</target>
</trans-unit>
<trans-unit id="7517688192215738656" datatype="html">
<source>ASN</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">79</context>
</context-group>
<target state="translated">NSA</target>
</trans-unit>
<trans-unit id="5195932016807797291" datatype="html"> <trans-unit id="5195932016807797291" datatype="html">
<source>Correspondent: <x id="PH" equiv-text="this.correspondents.find(c =&gt; c.id == +rule.value)?.name"/></source> <source>Correspondent: <x id="PH" equiv-text="this.correspondents.find(c =&gt; c.id == +rule.value)?.name"/></source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">33</context> <context context-type="linenumber">37</context>
</context-group> </context-group>
<target state="translated">Correspondente: <x id="PH" equiv-text="this.correspondents.find(c =&gt; c.id == +rule.value)?.name"/></target> <target state="translated">Correspondente: <x id="PH" equiv-text="this.correspondents.find(c =&gt; c.id == +rule.value)?.name"/></target>
</trans-unit> </trans-unit>
@@ -1223,7 +1151,7 @@
<source>Without correspondent</source> <source>Without correspondent</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">35</context> <context context-type="linenumber">39</context>
</context-group> </context-group>
<target state="translated">Sem correspondente</target> <target state="translated">Sem correspondente</target>
</trans-unit> </trans-unit>
@@ -1231,7 +1159,7 @@
<source>Type: <x id="PH" equiv-text="this.documentTypes.find(dt =&gt; dt.id == +rule.value)?.name"/></source> <source>Type: <x id="PH" equiv-text="this.documentTypes.find(dt =&gt; dt.id == +rule.value)?.name"/></source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">40</context> <context context-type="linenumber">44</context>
</context-group> </context-group>
<target state="translated">Tipo: <x id="PH" equiv-text="this.documentTypes.find(dt =&gt; dt.id == +rule.value)?.name"/></target> <target state="translated">Tipo: <x id="PH" equiv-text="this.documentTypes.find(dt =&gt; dt.id == +rule.value)?.name"/></target>
</trans-unit> </trans-unit>
@@ -1239,7 +1167,7 @@
<source>Without document type</source> <source>Without document type</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">42</context> <context context-type="linenumber">46</context>
</context-group> </context-group>
<target state="translated">Sem tipo de documento</target> <target state="translated">Sem tipo de documento</target>
</trans-unit> </trans-unit>
@@ -1247,7 +1175,7 @@
<source>Tag: <x id="PH" equiv-text="this.tags.find(t =&gt; t.id == +rule.value)?.name"/></source> <source>Tag: <x id="PH" equiv-text="this.tags.find(t =&gt; t.id == +rule.value)?.name"/></source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">46</context> <context context-type="linenumber">50</context>
</context-group> </context-group>
<target state="translated">Etiqueta: <x id="PH" equiv-text="this.tags.find(t =&gt; t.id == +rule.value)?.name"/></target> <target state="translated">Etiqueta: <x id="PH" equiv-text="this.tags.find(t =&gt; t.id == +rule.value)?.name"/></target>
</trans-unit> </trans-unit>
@@ -1255,7 +1183,7 @@
<source>Without any tag</source> <source>Without any tag</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">50</context> <context context-type="linenumber">54</context>
</context-group> </context-group>
<target state="translated">Sem etiquetas</target> <target state="translated">Sem etiquetas</target>
</trans-unit> </trans-unit>
@@ -1263,7 +1191,7 @@
<source>Title: <x id="PH" equiv-text="rule.value"/></source> <source>Title: <x id="PH" equiv-text="rule.value"/></source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">54</context> <context context-type="linenumber">58</context>
</context-group> </context-group>
<target state="translated">Título: <x id="PH" equiv-text="rule.value"/></target> <target state="translated">Título: <x id="PH" equiv-text="rule.value"/></target>
</trans-unit> </trans-unit>
@@ -1271,10 +1199,50 @@
<source>ASN: <x id="PH" equiv-text="rule.value"/></source> <source>ASN: <x id="PH" equiv-text="rule.value"/></source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">57</context> <context context-type="linenumber">61</context>
</context-group> </context-group>
<target state="needs-translation">ASN: <x id="PH" equiv-text="rule.value"/></target> <target state="needs-translation">ASN: <x id="PH" equiv-text="rule.value"/></target>
</trans-unit> </trans-unit>
<trans-unit id="5701618810648052610" datatype="html">
<source>Title</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">85</context>
</context-group>
<target state="translated">Título</target>
</trans-unit>
<trans-unit id="3100631071441658964" datatype="html">
<source>Title &amp; content</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">86</context>
</context-group>
<target state="translated">Título &amp; conteúdo</target>
</trans-unit>
<trans-unit id="7517688192215738656" datatype="html">
<source>ASN</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">87</context>
</context-group>
<target state="translated">NSA</target>
</trans-unit>
<trans-unit id="1010505078885609376" datatype="html">
<source>Advanced search</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">88</context>
</context-group>
<target state="needs-translation">Advanced search</target>
</trans-unit>
<trans-unit id="2649431021108393503" datatype="html">
<source>More like</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">91</context>
</context-group>
<target state="needs-translation">More like</target>
</trans-unit>
<trans-unit id="02d184c288f567825a1fcbf83bcd3099a10853d5" datatype="html"> <trans-unit id="02d184c288f567825a1fcbf83bcd3099a10853d5" datatype="html">
<source>Filter tags</source> <source>Filter tags</source>
<context-group purpose="location"> <context-group purpose="location">
@@ -1408,10 +1376,34 @@
<source>Score:</source> <source>Score:</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-card-large/document-card-large.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-card-large/document-card-large.component.html</context>
<context context-type="linenumber">66</context> <context context-type="linenumber">86</context>
</context-group> </context-group>
<target state="translated">Nota:</target> <target state="translated">Nota:</target>
</trans-unit> </trans-unit>
<trans-unit id="727d980bba2b3e0b3d8705607f1208eef046479b" datatype="html">
<source>Created: <x id="INTERPOLATION" equiv-text="{{ document.created | customDate}}"/></source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-card-small/document-card-small.component.html</context>
<context context-type="linenumber">43</context>
</context-group>
<target state="needs-translation">Created: <x id="INTERPOLATION" equiv-text="{{ document.created | customDate}}"/></target>
</trans-unit>
<trans-unit id="0f5d856cb63c69fde44fbfc653ec0655f9040865" datatype="html">
<source>Added: <x id="INTERPOLATION" equiv-text="{{ document.added | customDate}}"/></source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-card-small/document-card-small.component.html</context>
<context context-type="linenumber">44</context>
</context-group>
<target state="needs-translation">Added: <x id="INTERPOLATION" equiv-text="{{ document.added | customDate}}"/></target>
</trans-unit>
<trans-unit id="a205126adef6251fc63305f1a6228d07bc2795a8" datatype="html">
<source>Modified: <x id="INTERPOLATION" equiv-text="{{ document.modified | customDate}}"/></source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-card-small/document-card-small.component.html</context>
<context context-type="linenumber">45</context>
</context-group>
<target state="needs-translation">Modified: <x id="INTERPOLATION" equiv-text="{{ document.modified | customDate}}"/></target>
</trans-unit>
<trans-unit id="7985804062689412812" datatype="html"> <trans-unit id="7985804062689412812" datatype="html">
<source>Error executing bulk operation: <x id="PH" equiv-text="JSON.stringify(error.error)"/></source> <source>Error executing bulk operation: <x id="PH" equiv-text="JSON.stringify(error.error)"/></source>
<context-group purpose="location"> <context-group purpose="location">
@@ -1857,6 +1849,14 @@
</context-group> </context-group>
<target state="translated">Data inválida.</target> <target state="translated">Data inválida.</target>
</trans-unit> </trans-unit>
<trans-unit id="bd5ca454e336126f3eeb67417d9264696b5c852c" datatype="html">
<source>Searching document with asn <x id="INTERPOLATION" equiv-text="{{asn}}"/></source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-asn/document-asn.component.html</context>
<context context-type="linenumber">1</context>
</context-group>
<target state="needs-translation">Searching document with asn <x id="INTERPOLATION" equiv-text="{{asn}}"/></target>
</trans-unit>
<trans-unit id="2807800733729323332" datatype="html"> <trans-unit id="2807800733729323332" datatype="html">
<source>Yes</source> <source>Yes</source>
<context-group purpose="location"> <context-group purpose="location">

View File

@@ -54,7 +54,7 @@
<source>Documents</source> <source>Documents</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">49</context> <context context-type="linenumber">51</context>
</context-group> </context-group>
<target state="translated">Documentos</target> <target state="translated">Documentos</target>
</trans-unit> </trans-unit>
@@ -62,7 +62,7 @@
<source>View &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot; saved successfully.</source> <source>View &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot; saved successfully.</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">115</context> <context context-type="linenumber">116</context>
</context-group> </context-group>
<target state="translated">Visualização "<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>" salva com sucesso.</target> <target state="translated">Visualização "<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>" salva com sucesso.</target>
</trans-unit> </trans-unit>
@@ -70,7 +70,7 @@
<source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully.</source> <source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully.</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">136</context> <context context-type="linenumber">138</context>
</context-group> </context-group>
<target state="translated">Visualização "<x id="PH" equiv-text="savedView.name"/>" criada com sucesso.</target> <target state="translated">Visualização "<x id="PH" equiv-text="savedView.name"/>" criada com sucesso.</target>
</trans-unit> </trans-unit>
@@ -166,7 +166,7 @@
<source>ASN</source> <source>ASN</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">105</context> <context context-type="linenumber">111</context>
</context-group> </context-group>
<target state="translated">NSA</target> <target state="translated">NSA</target>
</trans-unit> </trans-unit>
@@ -174,7 +174,7 @@
<source>Correspondent</source> <source>Correspondent</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">111</context> <context context-type="linenumber">117</context>
</context-group> </context-group>
<target state="translated">Correspondente</target> <target state="translated">Correspondente</target>
</trans-unit> </trans-unit>
@@ -182,7 +182,7 @@
<source>Title</source> <source>Title</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">117</context> <context context-type="linenumber">123</context>
</context-group> </context-group>
<target state="translated">Título</target> <target state="translated">Título</target>
</trans-unit> </trans-unit>
@@ -190,7 +190,7 @@
<source>Document type</source> <source>Document type</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">123</context> <context context-type="linenumber">129</context>
</context-group> </context-group>
<target state="translated">Tipo de Documento</target> <target state="translated">Tipo de Documento</target>
</trans-unit> </trans-unit>
@@ -198,7 +198,7 @@
<source>Created</source> <source>Created</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">129</context> <context context-type="linenumber">135</context>
</context-group> </context-group>
<target state="translated">Criado</target> <target state="translated">Criado</target>
</trans-unit> </trans-unit>
@@ -206,7 +206,7 @@
<source>Added</source> <source>Added</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">135</context> <context context-type="linenumber">141</context>
</context-group> </context-group>
<target state="translated">Adicionado</target> <target state="translated">Adicionado</target>
</trans-unit> </trans-unit>
@@ -214,7 +214,7 @@
<source>Confirm delete</source> <source>Confirm delete</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">203</context> <context context-type="linenumber">204</context>
</context-group> </context-group>
<target state="translated">Confirmar exclusão</target> <target state="translated">Confirmar exclusão</target>
</trans-unit> </trans-unit>
@@ -222,7 +222,7 @@
<source>Do you really want to delete document &quot;<x id="PH" equiv-text="this.document.title"/>&quot;?</source> <source>Do you really want to delete document &quot;<x id="PH" equiv-text="this.document.title"/>&quot;?</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">204</context> <context context-type="linenumber">205</context>
</context-group> </context-group>
<target state="translated">Você realmente deseja excluir o documento "<x id="PH" equiv-text="this.document.title"/>"?</target> <target state="translated">Você realmente deseja excluir o documento "<x id="PH" equiv-text="this.document.title"/>"?</target>
</trans-unit> </trans-unit>
@@ -230,7 +230,7 @@
<source>The files for this document will be deleted permanently. This operation cannot be undone.</source> <source>The files for this document will be deleted permanently. This operation cannot be undone.</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">205</context> <context context-type="linenumber">206</context>
</context-group> </context-group>
<target state="translated">Os arquivos desse documento serão excluídos permanentemente. Essa operação não pode ser revertida.</target> <target state="translated">Os arquivos desse documento serão excluídos permanentemente. Essa operação não pode ser revertida.</target>
</trans-unit> </trans-unit>
@@ -238,7 +238,7 @@
<source>Delete document</source> <source>Delete document</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">207</context> <context context-type="linenumber">208</context>
</context-group> </context-group>
<target state="translated">Excluir documento</target> <target state="translated">Excluir documento</target>
</trans-unit> </trans-unit>
@@ -246,7 +246,7 @@
<source>Error deleting document: <x id="PH" equiv-text="JSON.stringify(error)"/></source> <source>Error deleting document: <x id="PH" equiv-text="JSON.stringify(error)"/></source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">214</context> <context context-type="linenumber">215</context>
</context-group> </context-group>
<target state="translated">Erro ao excluir documento: <x id="PH" equiv-text="JSON.stringify(error)"/></target> <target state="translated">Erro ao excluir documento: <x id="PH" equiv-text="JSON.stringify(error)"/></target>
</trans-unit> </trans-unit>
@@ -1042,54 +1042,6 @@
</context-group> </context-group>
<target state="translated">Editar tipo de documento</target> <target state="translated">Editar tipo de documento</target>
</trans-unit> </trans-unit>
<trans-unit id="49c9ede51100b454f7841b24cd02355c6622bf44" datatype="html">
<source>Search results</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/search/search.component.html</context>
<context context-type="linenumber">1</context>
</context-group>
<target state="translated">Resultados da pesquisa</target>
</trans-unit>
<trans-unit id="31976d04f98e8a38098f66ac3a83ad33b576e5db" datatype="html">
<source>Invalid search query: <x id="INTERPOLATION" equiv-text="{{errorMessage}}"/></source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/search/search.component.html</context>
<context context-type="linenumber">4</context>
</context-group>
<target state="translated">Termo de pesquisa inválido: <x id="INTERPOLATION" equiv-text="{{errorMessage}}"/></target>
</trans-unit>
<trans-unit id="f7f2e30106223a69bcf0f8e586e6be9dc4e72226" datatype="html">
<source>Showing documents similar to <x id="START_LINK" equiv-text="&lt;a routerLink=&quot;/documents/{{more_like}}&quot;&gt;{{more_like_doc?.original_file_name}}"/><x id="INTERPOLATION" equiv-text="{{more_like_doc?.original_file_name}}&lt;/a&gt;"/><x id="CLOSE_LINK" equiv-text="&lt;/a&gt;"/></source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/search/search.component.html</context>
<context context-type="linenumber">6</context>
</context-group>
<target state="translated">Mostrar documentos similares a <x id="START_LINK" equiv-text="&lt;a routerLink=&quot;/documents/{{more_like}}&quot;&gt;{{more_like_doc?.original_file_name}}"/><x id="INTERPOLATION" equiv-text="{{more_like_doc?.original_file_name}}&lt;/a&gt;"/><x id="CLOSE_LINK" equiv-text="&lt;/a&gt;"/></target>
</trans-unit>
<trans-unit id="6e0b0a1ea16f18f2fb1586c53d99d2f22e1aee2e" datatype="html">
<source>Search query: <x id="START_ITALIC_TEXT" equiv-text="&lt;i&gt;{{query}}"/><x id="INTERPOLATION" equiv-text="{{query}}&lt;/i&gt;"/><x id="CLOSE_ITALIC_TEXT" equiv-text="&lt;/i&gt;"/></source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/search/search.component.html</context>
<context context-type="linenumber">9</context>
</context-group>
<target state="translated">Termo de pesquisa: <x id="START_ITALIC_TEXT" equiv-text="&lt;i&gt;{{query}}"/><x id="INTERPOLATION" equiv-text="{{query}}&lt;/i&gt;"/><x id="CLOSE_ITALIC_TEXT" equiv-text="&lt;/i&gt;"/></target>
</trans-unit>
<trans-unit id="afa760e48c97d64d19c1455d18b7834a2256e23f" datatype="html">
<source>Did you mean &quot;<x id="START_LINK" equiv-text="&lt;a [routerLink]=&quot;&quot; (click)=&quot;searchCorrectedQuery()&quot;&gt;{{correctedQuery}}"/><x id="INTERPOLATION" equiv-text="{{correctedQuery}}&lt;/a&gt;"/><x id="CLOSE_LINK" equiv-text="&lt;/a&gt;"/>&quot;?</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/search/search.component.html</context>
<context context-type="linenumber">11</context>
</context-group>
<target state="translated">Será que quer dizer "<x id="START_LINK" equiv-text="&lt;a [routerLink]=&quot;&quot; (click)=&quot;searchCorrectedQuery()&quot;&gt;{{correctedQuery}}"/><x id="INTERPOLATION" equiv-text="{{correctedQuery}}&lt;/a&gt;"/><x id="CLOSE_LINK" equiv-text="&lt;/a&gt;"/>"?</target>
</trans-unit>
<trans-unit id="fe6ced3fcc803bba5a2e6c1a067b9ce62542500e" datatype="html">
<source>{VAR_PLURAL, plural, =0 {No results} =1 {One result} other {<x id="INTERPOLATION"/> results}}</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/search/search.component.html</context>
<context context-type="linenumber">16</context>
</context-group>
<target state="translated">{VAR_PLURAL, plural, one {} =0 {Sem resultados} =1 {Um resultado} other {<x id="INTERPOLATION"/> resultados}}</target>
</trans-unit>
<trans-unit id="41147374f427980a9f1a8cd5e3f4b1666e6f2418" datatype="html"> <trans-unit id="41147374f427980a9f1a8cd5e3f4b1666e6f2418" datatype="html">
<source>Paperless-ng</source> <source>Paperless-ng</source>
<context-group purpose="location"> <context-group purpose="location">
@@ -1187,35 +1139,11 @@
</context-group> </context-group>
<target state="translated">Fechar todos</target> <target state="translated">Fechar todos</target>
</trans-unit> </trans-unit>
<trans-unit id="5701618810648052610" datatype="html">
<source>Title</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">77</context>
</context-group>
<target state="translated">Título</target>
</trans-unit>
<trans-unit id="3100631071441658964" datatype="html">
<source>Title &amp; content</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">78</context>
</context-group>
<target state="translated">Título &amp; conteúdo</target>
</trans-unit>
<trans-unit id="7517688192215738656" datatype="html">
<source>ASN</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">79</context>
</context-group>
<target state="translated">NSA</target>
</trans-unit>
<trans-unit id="5195932016807797291" datatype="html"> <trans-unit id="5195932016807797291" datatype="html">
<source>Correspondent: <x id="PH" equiv-text="this.correspondents.find(c =&gt; c.id == +rule.value)?.name"/></source> <source>Correspondent: <x id="PH" equiv-text="this.correspondents.find(c =&gt; c.id == +rule.value)?.name"/></source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">33</context> <context context-type="linenumber">37</context>
</context-group> </context-group>
<target state="translated">Correspondente: <x id="PH" equiv-text="this.correspondents.find(c =&gt; c.id == +rule.value)?.name"/></target> <target state="translated">Correspondente: <x id="PH" equiv-text="this.correspondents.find(c =&gt; c.id == +rule.value)?.name"/></target>
</trans-unit> </trans-unit>
@@ -1223,7 +1151,7 @@
<source>Without correspondent</source> <source>Without correspondent</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">35</context> <context context-type="linenumber">39</context>
</context-group> </context-group>
<target state="translated">Sem correspondente</target> <target state="translated">Sem correspondente</target>
</trans-unit> </trans-unit>
@@ -1231,7 +1159,7 @@
<source>Type: <x id="PH" equiv-text="this.documentTypes.find(dt =&gt; dt.id == +rule.value)?.name"/></source> <source>Type: <x id="PH" equiv-text="this.documentTypes.find(dt =&gt; dt.id == +rule.value)?.name"/></source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">40</context> <context context-type="linenumber">44</context>
</context-group> </context-group>
<target state="translated">Tipo: <x id="PH" equiv-text="this.documentTypes.find(dt =&gt; dt.id == +rule.value)?.name"/></target> <target state="translated">Tipo: <x id="PH" equiv-text="this.documentTypes.find(dt =&gt; dt.id == +rule.value)?.name"/></target>
</trans-unit> </trans-unit>
@@ -1239,7 +1167,7 @@
<source>Without document type</source> <source>Without document type</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">42</context> <context context-type="linenumber">46</context>
</context-group> </context-group>
<target state="translated">Sem tipo de documento</target> <target state="translated">Sem tipo de documento</target>
</trans-unit> </trans-unit>
@@ -1247,7 +1175,7 @@
<source>Tag: <x id="PH" equiv-text="this.tags.find(t =&gt; t.id == +rule.value)?.name"/></source> <source>Tag: <x id="PH" equiv-text="this.tags.find(t =&gt; t.id == +rule.value)?.name"/></source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">46</context> <context context-type="linenumber">50</context>
</context-group> </context-group>
<target state="translated">Etiqueta: <x id="PH" equiv-text="this.tags.find(t =&gt; t.id == +rule.value)?.name"/></target> <target state="translated">Etiqueta: <x id="PH" equiv-text="this.tags.find(t =&gt; t.id == +rule.value)?.name"/></target>
</trans-unit> </trans-unit>
@@ -1255,7 +1183,7 @@
<source>Without any tag</source> <source>Without any tag</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">50</context> <context context-type="linenumber">54</context>
</context-group> </context-group>
<target state="translated">Sem etiquetas</target> <target state="translated">Sem etiquetas</target>
</trans-unit> </trans-unit>
@@ -1263,7 +1191,7 @@
<source>Title: <x id="PH" equiv-text="rule.value"/></source> <source>Title: <x id="PH" equiv-text="rule.value"/></source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">54</context> <context context-type="linenumber">58</context>
</context-group> </context-group>
<target state="translated">Título: <x id="PH" equiv-text="rule.value"/></target> <target state="translated">Título: <x id="PH" equiv-text="rule.value"/></target>
</trans-unit> </trans-unit>
@@ -1271,10 +1199,50 @@
<source>ASN: <x id="PH" equiv-text="rule.value"/></source> <source>ASN: <x id="PH" equiv-text="rule.value"/></source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">57</context> <context context-type="linenumber">61</context>
</context-group> </context-group>
<target state="translated">NSA: <x id="PH" equiv-text="rule.value"/></target> <target state="translated">NSA: <x id="PH" equiv-text="rule.value"/></target>
</trans-unit> </trans-unit>
<trans-unit id="5701618810648052610" datatype="html">
<source>Title</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">85</context>
</context-group>
<target state="translated">Título</target>
</trans-unit>
<trans-unit id="3100631071441658964" datatype="html">
<source>Title &amp; content</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">86</context>
</context-group>
<target state="translated">Título &amp; conteúdo</target>
</trans-unit>
<trans-unit id="7517688192215738656" datatype="html">
<source>ASN</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">87</context>
</context-group>
<target state="translated">NSA</target>
</trans-unit>
<trans-unit id="1010505078885609376" datatype="html">
<source>Advanced search</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">88</context>
</context-group>
<target state="translated">Pesquisa avançada</target>
</trans-unit>
<trans-unit id="2649431021108393503" datatype="html">
<source>More like</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">91</context>
</context-group>
<target state="translated">Mais semelhante</target>
</trans-unit>
<trans-unit id="02d184c288f567825a1fcbf83bcd3099a10853d5" datatype="html"> <trans-unit id="02d184c288f567825a1fcbf83bcd3099a10853d5" datatype="html">
<source>Filter tags</source> <source>Filter tags</source>
<context-group purpose="location"> <context-group purpose="location">
@@ -1408,10 +1376,34 @@
<source>Score:</source> <source>Score:</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-card-large/document-card-large.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-card-large/document-card-large.component.html</context>
<context context-type="linenumber">66</context> <context context-type="linenumber">86</context>
</context-group> </context-group>
<target state="translated">Pontuação:</target> <target state="translated">Pontuação:</target>
</trans-unit> </trans-unit>
<trans-unit id="727d980bba2b3e0b3d8705607f1208eef046479b" datatype="html">
<source>Created: <x id="INTERPOLATION" equiv-text="{{ document.created | customDate}}"/></source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-card-small/document-card-small.component.html</context>
<context context-type="linenumber">43</context>
</context-group>
<target state="translated">Criado em: <x id="INTERPOLATION" equiv-text="{{ document.created | customDate}}"/></target>
</trans-unit>
<trans-unit id="0f5d856cb63c69fde44fbfc653ec0655f9040865" datatype="html">
<source>Added: <x id="INTERPOLATION" equiv-text="{{ document.added | customDate}}"/></source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-card-small/document-card-small.component.html</context>
<context context-type="linenumber">44</context>
</context-group>
<target state="translated">Adicionado a: <x id="INTERPOLATION" equiv-text="{{ document.added | customDate}}"/></target>
</trans-unit>
<trans-unit id="a205126adef6251fc63305f1a6228d07bc2795a8" datatype="html">
<source>Modified: <x id="INTERPOLATION" equiv-text="{{ document.modified | customDate}}"/></source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-card-small/document-card-small.component.html</context>
<context context-type="linenumber">45</context>
</context-group>
<target state="translated">Modificado a: <x id="INTERPOLATION" equiv-text="{{ document.modified | customDate}}"/></target>
</trans-unit>
<trans-unit id="7985804062689412812" datatype="html"> <trans-unit id="7985804062689412812" datatype="html">
<source>Error executing bulk operation: <x id="PH" equiv-text="JSON.stringify(error.error)"/></source> <source>Error executing bulk operation: <x id="PH" equiv-text="JSON.stringify(error.error)"/></source>
<context-group purpose="location"> <context-group purpose="location">
@@ -1857,6 +1849,14 @@
</context-group> </context-group>
<target state="translated">Data inválida.</target> <target state="translated">Data inválida.</target>
</trans-unit> </trans-unit>
<trans-unit id="bd5ca454e336126f3eeb67417d9264696b5c852c" datatype="html">
<source>Searching document with asn <x id="INTERPOLATION" equiv-text="{{asn}}"/></source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-asn/document-asn.component.html</context>
<context context-type="linenumber">1</context>
</context-group>
<target state="translated">À procura do documento com nsa <x id="INTERPOLATION" equiv-text="{{asn}}"/></target>
</trans-unit>
<trans-unit id="2807800733729323332" datatype="html"> <trans-unit id="2807800733729323332" datatype="html">
<source>Yes</source> <source>Yes</source>
<context-group purpose="location"> <context-group purpose="location">
@@ -1927,7 +1927,7 @@
<context context-type="sourcefile">src/app/services/settings.service.ts</context> <context context-type="sourcefile">src/app/services/settings.service.ts</context>
<context context-type="linenumber">95</context> <context context-type="linenumber">95</context>
</context-group> </context-group>
<target state="needs-translation">Portuguese</target> <target state="translated">Português</target>
</trans-unit> </trans-unit>
<trans-unit id="9184513005098760425" datatype="html"> <trans-unit id="9184513005098760425" datatype="html">
<source>Portuguese (Brazil)</source> <source>Portuguese (Brazil)</source>

View File

@@ -54,7 +54,7 @@
<source>Documents</source> <source>Documents</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">49</context> <context context-type="linenumber">51</context>
</context-group> </context-group>
<target state="translated">Documente</target> <target state="translated">Documente</target>
</trans-unit> </trans-unit>
@@ -62,7 +62,7 @@
<source>View &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot; saved successfully.</source> <source>View &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot; saved successfully.</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">115</context> <context context-type="linenumber">116</context>
</context-group> </context-group>
<target state="translated">Vizualizarea "<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>" a fost salvată.</target> <target state="translated">Vizualizarea "<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>" a fost salvată.</target>
</trans-unit> </trans-unit>
@@ -70,7 +70,7 @@
<source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully.</source> <source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully.</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">136</context> <context context-type="linenumber">138</context>
</context-group> </context-group>
<target state="translated">Vizualizarea "<x id="PH" equiv-text="savedView.name"/>" a fost creată.</target> <target state="translated">Vizualizarea "<x id="PH" equiv-text="savedView.name"/>" a fost creată.</target>
</trans-unit> </trans-unit>
@@ -166,7 +166,7 @@
<source>ASN</source> <source>ASN</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">105</context> <context context-type="linenumber">111</context>
</context-group> </context-group>
<target state="translated">Aviz prealabil de expediție</target> <target state="translated">Aviz prealabil de expediție</target>
</trans-unit> </trans-unit>
@@ -174,7 +174,7 @@
<source>Correspondent</source> <source>Correspondent</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">111</context> <context context-type="linenumber">117</context>
</context-group> </context-group>
<target state="translated">Corespondent</target> <target state="translated">Corespondent</target>
</trans-unit> </trans-unit>
@@ -182,7 +182,7 @@
<source>Title</source> <source>Title</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">117</context> <context context-type="linenumber">123</context>
</context-group> </context-group>
<target state="translated">Titlu</target> <target state="translated">Titlu</target>
</trans-unit> </trans-unit>
@@ -190,7 +190,7 @@
<source>Document type</source> <source>Document type</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">123</context> <context context-type="linenumber">129</context>
</context-group> </context-group>
<target state="translated">Tipul documentului</target> <target state="translated">Tipul documentului</target>
</trans-unit> </trans-unit>
@@ -198,7 +198,7 @@
<source>Created</source> <source>Created</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">129</context> <context context-type="linenumber">135</context>
</context-group> </context-group>
<target state="translated">Creat</target> <target state="translated">Creat</target>
</trans-unit> </trans-unit>
@@ -206,7 +206,7 @@
<source>Added</source> <source>Added</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">135</context> <context context-type="linenumber">141</context>
</context-group> </context-group>
<target state="translated">Adăugat</target> <target state="translated">Adăugat</target>
</trans-unit> </trans-unit>
@@ -214,7 +214,7 @@
<source>Confirm delete</source> <source>Confirm delete</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">203</context> <context context-type="linenumber">204</context>
</context-group> </context-group>
<target state="translated">Confirmă ștergerea</target> <target state="translated">Confirmă ștergerea</target>
</trans-unit> </trans-unit>
@@ -222,7 +222,7 @@
<source>Do you really want to delete document &quot;<x id="PH" equiv-text="this.document.title"/>&quot;?</source> <source>Do you really want to delete document &quot;<x id="PH" equiv-text="this.document.title"/>&quot;?</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">204</context> <context context-type="linenumber">205</context>
</context-group> </context-group>
<target state="translated">Sunteţi sigur că doriţi să ştergeţi documentul "<x id="PH" equiv-text="this.document.title"/>"?</target> <target state="translated">Sunteţi sigur că doriţi să ştergeţi documentul "<x id="PH" equiv-text="this.document.title"/>"?</target>
</trans-unit> </trans-unit>
@@ -230,7 +230,7 @@
<source>The files for this document will be deleted permanently. This operation cannot be undone.</source> <source>The files for this document will be deleted permanently. This operation cannot be undone.</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">205</context> <context context-type="linenumber">206</context>
</context-group> </context-group>
<target state="translated">Fișierele pentru acest document vor fi șterse permanent. Operațiunea este ireversibila.</target> <target state="translated">Fișierele pentru acest document vor fi șterse permanent. Operațiunea este ireversibila.</target>
</trans-unit> </trans-unit>
@@ -238,7 +238,7 @@
<source>Delete document</source> <source>Delete document</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">207</context> <context context-type="linenumber">208</context>
</context-group> </context-group>
<target state="translated">Șterge document</target> <target state="translated">Șterge document</target>
</trans-unit> </trans-unit>
@@ -246,7 +246,7 @@
<source>Error deleting document: <x id="PH" equiv-text="JSON.stringify(error)"/></source> <source>Error deleting document: <x id="PH" equiv-text="JSON.stringify(error)"/></source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">214</context> <context context-type="linenumber">215</context>
</context-group> </context-group>
<target state="translated">Eroare la ștergerea documentului: <x id="PH" equiv-text="JSON.stringify(error)"/></target> <target state="translated">Eroare la ștergerea documentului: <x id="PH" equiv-text="JSON.stringify(error)"/></target>
</trans-unit> </trans-unit>
@@ -1042,54 +1042,6 @@
</context-group> </context-group>
<target state="translated">Modifică un tip de document</target> <target state="translated">Modifică un tip de document</target>
</trans-unit> </trans-unit>
<trans-unit id="49c9ede51100b454f7841b24cd02355c6622bf44" datatype="html">
<source>Search results</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/search/search.component.html</context>
<context context-type="linenumber">1</context>
</context-group>
<target state="translated">Rezultatele căutarii</target>
</trans-unit>
<trans-unit id="31976d04f98e8a38098f66ac3a83ad33b576e5db" datatype="html">
<source>Invalid search query: <x id="INTERPOLATION" equiv-text="{{errorMessage}}"/></source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/search/search.component.html</context>
<context context-type="linenumber">4</context>
</context-group>
<target state="translated">Interogare invalidă: <x id="INTERPOLATION" equiv-text="{{errorMessage}}"/></target>
</trans-unit>
<trans-unit id="f7f2e30106223a69bcf0f8e586e6be9dc4e72226" datatype="html">
<source>Showing documents similar to <x id="START_LINK" equiv-text="&lt;a routerLink=&quot;/documents/{{more_like}}&quot;&gt;{{more_like_doc?.original_file_name}}"/><x id="INTERPOLATION" equiv-text="{{more_like_doc?.original_file_name}}&lt;/a&gt;"/><x id="CLOSE_LINK" equiv-text="&lt;/a&gt;"/></source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/search/search.component.html</context>
<context context-type="linenumber">6</context>
</context-group>
<target state="translated">Documente similare cu <x id="START_LINK" equiv-text="&lt;a routerLink=&quot;/documents/{{more_like}}&quot;&gt;{{more_like_doc?.original_file_name}}"/><x id="INTERPOLATION" equiv-text="{{more_like_doc?.original_file_name}}&lt;/a&gt;"/><x id="CLOSE_LINK" equiv-text="&lt;/a&gt;"/></target>
</trans-unit>
<trans-unit id="6e0b0a1ea16f18f2fb1586c53d99d2f22e1aee2e" datatype="html">
<source>Search query: <x id="START_ITALIC_TEXT" equiv-text="&lt;i&gt;{{query}}"/><x id="INTERPOLATION" equiv-text="{{query}}&lt;/i&gt;"/><x id="CLOSE_ITALIC_TEXT" equiv-text="&lt;/i&gt;"/></source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/search/search.component.html</context>
<context context-type="linenumber">9</context>
</context-group>
<target state="translated">Interogare: <x id="START_ITALIC_TEXT" equiv-text="&lt;i&gt;{{query}}"/><x id="INTERPOLATION" equiv-text="{{query}}&lt;/i&gt;"/><x id="CLOSE_ITALIC_TEXT" equiv-text="&lt;/i&gt;"/></target>
</trans-unit>
<trans-unit id="afa760e48c97d64d19c1455d18b7834a2256e23f" datatype="html">
<source>Did you mean &quot;<x id="START_LINK" equiv-text="&lt;a [routerLink]=&quot;&quot; (click)=&quot;searchCorrectedQuery()&quot;&gt;{{correctedQuery}}"/><x id="INTERPOLATION" equiv-text="{{correctedQuery}}&lt;/a&gt;"/><x id="CLOSE_LINK" equiv-text="&lt;/a&gt;"/>&quot;?</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/search/search.component.html</context>
<context context-type="linenumber">11</context>
</context-group>
<target state="translated">Ați vrut să scrieți "<x id="START_LINK" equiv-text="&lt;a [routerLink]=&quot;&quot; (click)=&quot;searchCorrectedQuery()&quot;&gt;{{correctedQuery}}"/><x id="INTERPOLATION" equiv-text="{{correctedQuery}}&lt;/a&gt;"/><x id="CLOSE_LINK" equiv-text="&lt;/a&gt;"/>"?</target>
</trans-unit>
<trans-unit id="fe6ced3fcc803bba5a2e6c1a067b9ce62542500e" datatype="html">
<source>{VAR_PLURAL, plural, =0 {No results} =1 {One result} other {<x id="INTERPOLATION"/> results}}</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/search/search.component.html</context>
<context context-type="linenumber">16</context>
</context-group>
<target state="translated">{VAR_PLURAL, plural, =0 {Niciun rezultat} =1 {Un rezultat} other {<x id="INTERPOLATION"/> rezultate}}</target>
</trans-unit>
<trans-unit id="41147374f427980a9f1a8cd5e3f4b1666e6f2418" datatype="html"> <trans-unit id="41147374f427980a9f1a8cd5e3f4b1666e6f2418" datatype="html">
<source>Paperless-ng</source> <source>Paperless-ng</source>
<context-group purpose="location"> <context-group purpose="location">
@@ -1187,35 +1139,11 @@
</context-group> </context-group>
<target state="translated">Închide tot</target> <target state="translated">Închide tot</target>
</trans-unit> </trans-unit>
<trans-unit id="5701618810648052610" datatype="html">
<source>Title</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">77</context>
</context-group>
<target state="translated">Titlu</target>
</trans-unit>
<trans-unit id="3100631071441658964" datatype="html">
<source>Title &amp; content</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">78</context>
</context-group>
<target state="translated">Titlu si conținut</target>
</trans-unit>
<trans-unit id="7517688192215738656" datatype="html">
<source>ASN</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">79</context>
</context-group>
<target state="translated">Aviz prealabil de expediție</target>
</trans-unit>
<trans-unit id="5195932016807797291" datatype="html"> <trans-unit id="5195932016807797291" datatype="html">
<source>Correspondent: <x id="PH" equiv-text="this.correspondents.find(c =&gt; c.id == +rule.value)?.name"/></source> <source>Correspondent: <x id="PH" equiv-text="this.correspondents.find(c =&gt; c.id == +rule.value)?.name"/></source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">33</context> <context context-type="linenumber">37</context>
</context-group> </context-group>
<target state="translated">Corespondent: <x id="PH" equiv-text="this.correspondents.find(c =&gt; c.id == +rule.value)?.name"/></target> <target state="translated">Corespondent: <x id="PH" equiv-text="this.correspondents.find(c =&gt; c.id == +rule.value)?.name"/></target>
</trans-unit> </trans-unit>
@@ -1223,7 +1151,7 @@
<source>Without correspondent</source> <source>Without correspondent</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">35</context> <context context-type="linenumber">39</context>
</context-group> </context-group>
<target state="translated">Fără corespondent</target> <target state="translated">Fără corespondent</target>
</trans-unit> </trans-unit>
@@ -1231,7 +1159,7 @@
<source>Type: <x id="PH" equiv-text="this.documentTypes.find(dt =&gt; dt.id == +rule.value)?.name"/></source> <source>Type: <x id="PH" equiv-text="this.documentTypes.find(dt =&gt; dt.id == +rule.value)?.name"/></source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">40</context> <context context-type="linenumber">44</context>
</context-group> </context-group>
<target state="translated">Tip: <x id="PH" equiv-text="this.documentTypes.find(dt =&gt; dt.id == +rule.value)?.name"/></target> <target state="translated">Tip: <x id="PH" equiv-text="this.documentTypes.find(dt =&gt; dt.id == +rule.value)?.name"/></target>
</trans-unit> </trans-unit>
@@ -1239,7 +1167,7 @@
<source>Without document type</source> <source>Without document type</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">42</context> <context context-type="linenumber">46</context>
</context-group> </context-group>
<target state="translated">Fară tip</target> <target state="translated">Fară tip</target>
</trans-unit> </trans-unit>
@@ -1247,7 +1175,7 @@
<source>Tag: <x id="PH" equiv-text="this.tags.find(t =&gt; t.id == +rule.value)?.name"/></source> <source>Tag: <x id="PH" equiv-text="this.tags.find(t =&gt; t.id == +rule.value)?.name"/></source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">46</context> <context context-type="linenumber">50</context>
</context-group> </context-group>
<target state="translated">Eticheta: <x id="PH" equiv-text="this.tags.find(t =&gt; t.id == +rule.value)?.name"/></target> <target state="translated">Eticheta: <x id="PH" equiv-text="this.tags.find(t =&gt; t.id == +rule.value)?.name"/></target>
</trans-unit> </trans-unit>
@@ -1255,7 +1183,7 @@
<source>Without any tag</source> <source>Without any tag</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">50</context> <context context-type="linenumber">54</context>
</context-group> </context-group>
<target state="translated">Fară etichete</target> <target state="translated">Fară etichete</target>
</trans-unit> </trans-unit>
@@ -1263,7 +1191,7 @@
<source>Title: <x id="PH" equiv-text="rule.value"/></source> <source>Title: <x id="PH" equiv-text="rule.value"/></source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">54</context> <context context-type="linenumber">58</context>
</context-group> </context-group>
<target state="translated">Titlu: <x id="PH" equiv-text="rule.value"/></target> <target state="translated">Titlu: <x id="PH" equiv-text="rule.value"/></target>
</trans-unit> </trans-unit>
@@ -1271,10 +1199,50 @@
<source>ASN: <x id="PH" equiv-text="rule.value"/></source> <source>ASN: <x id="PH" equiv-text="rule.value"/></source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">57</context> <context context-type="linenumber">61</context>
</context-group> </context-group>
<target state="translated">Aviz prealabil de expediție: <x id="PH" equiv-text="rule.value"/></target> <target state="translated">Aviz prealabil de expediție: <x id="PH" equiv-text="rule.value"/></target>
</trans-unit> </trans-unit>
<trans-unit id="5701618810648052610" datatype="html">
<source>Title</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">85</context>
</context-group>
<target state="translated">Titlu</target>
</trans-unit>
<trans-unit id="3100631071441658964" datatype="html">
<source>Title &amp; content</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">86</context>
</context-group>
<target state="translated">Titlu si conținut</target>
</trans-unit>
<trans-unit id="7517688192215738656" datatype="html">
<source>ASN</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">87</context>
</context-group>
<target state="translated">Aviz prealabil de expediție</target>
</trans-unit>
<trans-unit id="1010505078885609376" datatype="html">
<source>Advanced search</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">88</context>
</context-group>
<target state="needs-translation">Advanced search</target>
</trans-unit>
<trans-unit id="2649431021108393503" datatype="html">
<source>More like</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">91</context>
</context-group>
<target state="needs-translation">More like</target>
</trans-unit>
<trans-unit id="02d184c288f567825a1fcbf83bcd3099a10853d5" datatype="html"> <trans-unit id="02d184c288f567825a1fcbf83bcd3099a10853d5" datatype="html">
<source>Filter tags</source> <source>Filter tags</source>
<context-group purpose="location"> <context-group purpose="location">
@@ -1408,10 +1376,34 @@
<source>Score:</source> <source>Score:</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-card-large/document-card-large.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-card-large/document-card-large.component.html</context>
<context context-type="linenumber">66</context> <context context-type="linenumber">86</context>
</context-group> </context-group>
<target state="translated">Scor:</target> <target state="translated">Scor:</target>
</trans-unit> </trans-unit>
<trans-unit id="727d980bba2b3e0b3d8705607f1208eef046479b" datatype="html">
<source>Created: <x id="INTERPOLATION" equiv-text="{{ document.created | customDate}}"/></source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-card-small/document-card-small.component.html</context>
<context context-type="linenumber">43</context>
</context-group>
<target state="needs-translation">Created: <x id="INTERPOLATION" equiv-text="{{ document.created | customDate}}"/></target>
</trans-unit>
<trans-unit id="0f5d856cb63c69fde44fbfc653ec0655f9040865" datatype="html">
<source>Added: <x id="INTERPOLATION" equiv-text="{{ document.added | customDate}}"/></source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-card-small/document-card-small.component.html</context>
<context context-type="linenumber">44</context>
</context-group>
<target state="needs-translation">Added: <x id="INTERPOLATION" equiv-text="{{ document.added | customDate}}"/></target>
</trans-unit>
<trans-unit id="a205126adef6251fc63305f1a6228d07bc2795a8" datatype="html">
<source>Modified: <x id="INTERPOLATION" equiv-text="{{ document.modified | customDate}}"/></source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-card-small/document-card-small.component.html</context>
<context context-type="linenumber">45</context>
</context-group>
<target state="needs-translation">Modified: <x id="INTERPOLATION" equiv-text="{{ document.modified | customDate}}"/></target>
</trans-unit>
<trans-unit id="7985804062689412812" datatype="html"> <trans-unit id="7985804062689412812" datatype="html">
<source>Error executing bulk operation: <x id="PH" equiv-text="JSON.stringify(error.error)"/></source> <source>Error executing bulk operation: <x id="PH" equiv-text="JSON.stringify(error.error)"/></source>
<context-group purpose="location"> <context-group purpose="location">
@@ -1857,6 +1849,14 @@
</context-group> </context-group>
<target state="translated">Data invalidă.</target> <target state="translated">Data invalidă.</target>
</trans-unit> </trans-unit>
<trans-unit id="bd5ca454e336126f3eeb67417d9264696b5c852c" datatype="html">
<source>Searching document with asn <x id="INTERPOLATION" equiv-text="{{asn}}"/></source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-asn/document-asn.component.html</context>
<context context-type="linenumber">1</context>
</context-group>
<target state="needs-translation">Searching document with asn <x id="INTERPOLATION" equiv-text="{{asn}}"/></target>
</trans-unit>
<trans-unit id="2807800733729323332" datatype="html"> <trans-unit id="2807800733729323332" datatype="html">
<source>Yes</source> <source>Yes</source>
<context-group purpose="location"> <context-group purpose="location">
@@ -1967,7 +1967,7 @@
<context context-type="sourcefile">src/app/services/settings.service.ts</context> <context context-type="sourcefile">src/app/services/settings.service.ts</context>
<context context-type="linenumber">100</context> <context context-type="linenumber">100</context>
</context-group> </context-group>
<target state="needs-translation">Spanish</target> <target state="translated">Spaniolă</target>
</trans-unit> </trans-unit>
<trans-unit id="4912706592792948707" datatype="html"> <trans-unit id="4912706592792948707" datatype="html">
<source>ISO 8601</source> <source>ISO 8601</source>

View File

@@ -54,7 +54,7 @@
<source>Documents</source> <source>Documents</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">49</context> <context context-type="linenumber">51</context>
</context-group> </context-group>
<target state="translated">Документы</target> <target state="translated">Документы</target>
</trans-unit> </trans-unit>
@@ -62,7 +62,7 @@
<source>View &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot; saved successfully.</source> <source>View &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot; saved successfully.</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">115</context> <context context-type="linenumber">116</context>
</context-group> </context-group>
<target state="translated">Представление "<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>" успешно сохранено.</target> <target state="translated">Представление "<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>" успешно сохранено.</target>
</trans-unit> </trans-unit>
@@ -70,7 +70,7 @@
<source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully.</source> <source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully.</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">136</context> <context context-type="linenumber">138</context>
</context-group> </context-group>
<target state="translated">Представление "<x id="PH" equiv-text="savedView.name"/>" успешно создано.</target> <target state="translated">Представление "<x id="PH" equiv-text="savedView.name"/>" успешно создано.</target>
</trans-unit> </trans-unit>
@@ -166,7 +166,7 @@
<source>ASN</source> <source>ASN</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">105</context> <context context-type="linenumber">111</context>
</context-group> </context-group>
<target state="translated">Архивный номер</target> <target state="translated">Архивный номер</target>
</trans-unit> </trans-unit>
@@ -174,7 +174,7 @@
<source>Correspondent</source> <source>Correspondent</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">111</context> <context context-type="linenumber">117</context>
</context-group> </context-group>
<target state="translated">Корреспондент</target> <target state="translated">Корреспондент</target>
</trans-unit> </trans-unit>
@@ -182,7 +182,7 @@
<source>Title</source> <source>Title</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">117</context> <context context-type="linenumber">123</context>
</context-group> </context-group>
<target state="translated">Название</target> <target state="translated">Название</target>
</trans-unit> </trans-unit>
@@ -190,7 +190,7 @@
<source>Document type</source> <source>Document type</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">123</context> <context context-type="linenumber">129</context>
</context-group> </context-group>
<target state="translated">Тип документа</target> <target state="translated">Тип документа</target>
</trans-unit> </trans-unit>
@@ -198,7 +198,7 @@
<source>Created</source> <source>Created</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">129</context> <context context-type="linenumber">135</context>
</context-group> </context-group>
<target state="translated">Создано</target> <target state="translated">Создано</target>
</trans-unit> </trans-unit>
@@ -206,7 +206,7 @@
<source>Added</source> <source>Added</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">135</context> <context context-type="linenumber">141</context>
</context-group> </context-group>
<target state="translated">Добавлено</target> <target state="translated">Добавлено</target>
</trans-unit> </trans-unit>
@@ -214,7 +214,7 @@
<source>Confirm delete</source> <source>Confirm delete</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">203</context> <context context-type="linenumber">204</context>
</context-group> </context-group>
<target state="translated">Подтвердите удаление</target> <target state="translated">Подтвердите удаление</target>
</trans-unit> </trans-unit>
@@ -222,7 +222,7 @@
<source>Do you really want to delete document &quot;<x id="PH" equiv-text="this.document.title"/>&quot;?</source> <source>Do you really want to delete document &quot;<x id="PH" equiv-text="this.document.title"/>&quot;?</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">204</context> <context context-type="linenumber">205</context>
</context-group> </context-group>
<target state="translated">Вы действительно хотите удалить документ "<x id="PH" equiv-text="this.document.title"/>"?</target> <target state="translated">Вы действительно хотите удалить документ "<x id="PH" equiv-text="this.document.title"/>"?</target>
</trans-unit> </trans-unit>
@@ -230,7 +230,7 @@
<source>The files for this document will be deleted permanently. This operation cannot be undone.</source> <source>The files for this document will be deleted permanently. This operation cannot be undone.</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">205</context> <context context-type="linenumber">206</context>
</context-group> </context-group>
<target state="translated">Файлы из этого документа будут удалены незамедлительно. Это операцию нельзя отменить.</target> <target state="translated">Файлы из этого документа будут удалены незамедлительно. Это операцию нельзя отменить.</target>
</trans-unit> </trans-unit>
@@ -238,7 +238,7 @@
<source>Delete document</source> <source>Delete document</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">207</context> <context context-type="linenumber">208</context>
</context-group> </context-group>
<target state="translated">Удалить документ</target> <target state="translated">Удалить документ</target>
</trans-unit> </trans-unit>
@@ -246,7 +246,7 @@
<source>Error deleting document: <x id="PH" equiv-text="JSON.stringify(error)"/></source> <source>Error deleting document: <x id="PH" equiv-text="JSON.stringify(error)"/></source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">214</context> <context context-type="linenumber">215</context>
</context-group> </context-group>
<target state="translated">Ошибка удаления документа: <x id="PH" equiv-text="JSON.stringify(error)"/></target> <target state="translated">Ошибка удаления документа: <x id="PH" equiv-text="JSON.stringify(error)"/></target>
</trans-unit> </trans-unit>
@@ -1042,54 +1042,6 @@
</context-group> </context-group>
<target state="translated">Редактировать тип документа</target> <target state="translated">Редактировать тип документа</target>
</trans-unit> </trans-unit>
<trans-unit id="49c9ede51100b454f7841b24cd02355c6622bf44" datatype="html">
<source>Search results</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/search/search.component.html</context>
<context context-type="linenumber">1</context>
</context-group>
<target state="translated">Результаты поиска</target>
</trans-unit>
<trans-unit id="31976d04f98e8a38098f66ac3a83ad33b576e5db" datatype="html">
<source>Invalid search query: <x id="INTERPOLATION" equiv-text="{{errorMessage}}"/></source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/search/search.component.html</context>
<context context-type="linenumber">4</context>
</context-group>
<target state="translated">Неверный поисковой запрос: <x id="INTERPOLATION" equiv-text="{{errorMessage}}"/></target>
</trans-unit>
<trans-unit id="f7f2e30106223a69bcf0f8e586e6be9dc4e72226" datatype="html">
<source>Showing documents similar to <x id="START_LINK" equiv-text="&lt;a routerLink=&quot;/documents/{{more_like}}&quot;&gt;{{more_like_doc?.original_file_name}}"/><x id="INTERPOLATION" equiv-text="{{more_like_doc?.original_file_name}}&lt;/a&gt;"/><x id="CLOSE_LINK" equiv-text="&lt;/a&gt;"/></source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/search/search.component.html</context>
<context context-type="linenumber">6</context>
</context-group>
<target state="translated">Показываю документы похожие на <x id="START_LINK" equiv-text="&lt;a routerLink=&quot;/documents/{{more_like}}&quot;&gt;{{more_like_doc?.original_file_name}}"/><x id="INTERPOLATION" equiv-text="{{more_like_doc?.original_file_name}}&lt;/a&gt;"/><x id="CLOSE_LINK" equiv-text="&lt;/a&gt;"/></target>
</trans-unit>
<trans-unit id="6e0b0a1ea16f18f2fb1586c53d99d2f22e1aee2e" datatype="html">
<source>Search query: <x id="START_ITALIC_TEXT" equiv-text="&lt;i&gt;{{query}}"/><x id="INTERPOLATION" equiv-text="{{query}}&lt;/i&gt;"/><x id="CLOSE_ITALIC_TEXT" equiv-text="&lt;/i&gt;"/></source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/search/search.component.html</context>
<context context-type="linenumber">9</context>
</context-group>
<target state="translated">Поисковый запрос: <x id="START_ITALIC_TEXT" equiv-text="&lt;i&gt;{{query}}"/><x id="INTERPOLATION" equiv-text="{{query}}&lt;/i&gt;"/><x id="CLOSE_ITALIC_TEXT" equiv-text="&lt;/i&gt;"/></target>
</trans-unit>
<trans-unit id="afa760e48c97d64d19c1455d18b7834a2256e23f" datatype="html">
<source>Did you mean &quot;<x id="START_LINK" equiv-text="&lt;a [routerLink]=&quot;&quot; (click)=&quot;searchCorrectedQuery()&quot;&gt;{{correctedQuery}}"/><x id="INTERPOLATION" equiv-text="{{correctedQuery}}&lt;/a&gt;"/><x id="CLOSE_LINK" equiv-text="&lt;/a&gt;"/>&quot;?</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/search/search.component.html</context>
<context context-type="linenumber">11</context>
</context-group>
<target state="translated">Может вы имели ввиду "<x id="START_LINK" equiv-text="&lt;a [routerLink]=&quot;&quot; (click)=&quot;searchCorrectedQuery()&quot;&gt;{{correctedQuery}}"/><x id="INTERPOLATION" equiv-text="{{correctedQuery}}&lt;/a&gt;"/><x id="CLOSE_LINK" equiv-text="&lt;/a&gt;"/>"?</target>
</trans-unit>
<trans-unit id="fe6ced3fcc803bba5a2e6c1a067b9ce62542500e" datatype="html">
<source>{VAR_PLURAL, plural, =0 {No results} =1 {One result} other {<x id="INTERPOLATION"/> results}}</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/search/search.component.html</context>
<context context-type="linenumber">16</context>
</context-group>
<target state="translated">{VAR_PLURAL, plural, =0 {Нет результатов} =1 {Один результат} other {Результаты: <x id="INTERPOLATION"/>}}</target>
</trans-unit>
<trans-unit id="41147374f427980a9f1a8cd5e3f4b1666e6f2418" datatype="html"> <trans-unit id="41147374f427980a9f1a8cd5e3f4b1666e6f2418" datatype="html">
<source>Paperless-ng</source> <source>Paperless-ng</source>
<context-group purpose="location"> <context-group purpose="location">
@@ -1187,35 +1139,11 @@
</context-group> </context-group>
<target state="translated">Закрыть всё</target> <target state="translated">Закрыть всё</target>
</trans-unit> </trans-unit>
<trans-unit id="5701618810648052610" datatype="html">
<source>Title</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">77</context>
</context-group>
<target state="translated">Заголовок</target>
</trans-unit>
<trans-unit id="3100631071441658964" datatype="html">
<source>Title &amp; content</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">78</context>
</context-group>
<target state="translated">Название и содержимое</target>
</trans-unit>
<trans-unit id="7517688192215738656" datatype="html">
<source>ASN</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">79</context>
</context-group>
<target state="translated">АН</target>
</trans-unit>
<trans-unit id="5195932016807797291" datatype="html"> <trans-unit id="5195932016807797291" datatype="html">
<source>Correspondent: <x id="PH" equiv-text="this.correspondents.find(c =&gt; c.id == +rule.value)?.name"/></source> <source>Correspondent: <x id="PH" equiv-text="this.correspondents.find(c =&gt; c.id == +rule.value)?.name"/></source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">33</context> <context context-type="linenumber">37</context>
</context-group> </context-group>
<target state="translated">Корреспондент: <x id="PH" equiv-text="this.correspondents.find(c =&gt; c.id == +rule.value)?.name"/></target> <target state="translated">Корреспондент: <x id="PH" equiv-text="this.correspondents.find(c =&gt; c.id == +rule.value)?.name"/></target>
</trans-unit> </trans-unit>
@@ -1223,7 +1151,7 @@
<source>Without correspondent</source> <source>Without correspondent</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">35</context> <context context-type="linenumber">39</context>
</context-group> </context-group>
<target state="translated">Без корреспондента</target> <target state="translated">Без корреспондента</target>
</trans-unit> </trans-unit>
@@ -1231,7 +1159,7 @@
<source>Type: <x id="PH" equiv-text="this.documentTypes.find(dt =&gt; dt.id == +rule.value)?.name"/></source> <source>Type: <x id="PH" equiv-text="this.documentTypes.find(dt =&gt; dt.id == +rule.value)?.name"/></source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">40</context> <context context-type="linenumber">44</context>
</context-group> </context-group>
<target state="translated">Тип: <x id="PH" equiv-text="this.documentTypes.find(dt =&gt; dt.id == +rule.value)?.name"/></target> <target state="translated">Тип: <x id="PH" equiv-text="this.documentTypes.find(dt =&gt; dt.id == +rule.value)?.name"/></target>
</trans-unit> </trans-unit>
@@ -1239,7 +1167,7 @@
<source>Without document type</source> <source>Without document type</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">42</context> <context context-type="linenumber">46</context>
</context-group> </context-group>
<target state="translated">Без типа документа</target> <target state="translated">Без типа документа</target>
</trans-unit> </trans-unit>
@@ -1247,7 +1175,7 @@
<source>Tag: <x id="PH" equiv-text="this.tags.find(t =&gt; t.id == +rule.value)?.name"/></source> <source>Tag: <x id="PH" equiv-text="this.tags.find(t =&gt; t.id == +rule.value)?.name"/></source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">46</context> <context context-type="linenumber">50</context>
</context-group> </context-group>
<target state="translated">Тег: <x id="PH" equiv-text="this.tags.find(t =&gt; t.id == +rule.value)?.name"/></target> <target state="translated">Тег: <x id="PH" equiv-text="this.tags.find(t =&gt; t.id == +rule.value)?.name"/></target>
</trans-unit> </trans-unit>
@@ -1255,7 +1183,7 @@
<source>Without any tag</source> <source>Without any tag</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">50</context> <context context-type="linenumber">54</context>
</context-group> </context-group>
<target state="translated">Без тегов</target> <target state="translated">Без тегов</target>
</trans-unit> </trans-unit>
@@ -1263,7 +1191,7 @@
<source>Title: <x id="PH" equiv-text="rule.value"/></source> <source>Title: <x id="PH" equiv-text="rule.value"/></source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">54</context> <context context-type="linenumber">58</context>
</context-group> </context-group>
<target state="translated">Название: <x id="PH" equiv-text="rule.value"/></target> <target state="translated">Название: <x id="PH" equiv-text="rule.value"/></target>
</trans-unit> </trans-unit>
@@ -1271,10 +1199,50 @@
<source>ASN: <x id="PH" equiv-text="rule.value"/></source> <source>ASN: <x id="PH" equiv-text="rule.value"/></source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">57</context> <context context-type="linenumber">61</context>
</context-group> </context-group>
<target state="translated">Архивный номер: <x id="PH" equiv-text="rule.value"/></target> <target state="translated">Архивный номер: <x id="PH" equiv-text="rule.value"/></target>
</trans-unit> </trans-unit>
<trans-unit id="5701618810648052610" datatype="html">
<source>Title</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">85</context>
</context-group>
<target state="translated">Заголовок</target>
</trans-unit>
<trans-unit id="3100631071441658964" datatype="html">
<source>Title &amp; content</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">86</context>
</context-group>
<target state="translated">Название и содержимое</target>
</trans-unit>
<trans-unit id="7517688192215738656" datatype="html">
<source>ASN</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">87</context>
</context-group>
<target state="translated">АН</target>
</trans-unit>
<trans-unit id="1010505078885609376" datatype="html">
<source>Advanced search</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">88</context>
</context-group>
<target state="translated">Расширенный поиск</target>
</trans-unit>
<trans-unit id="2649431021108393503" datatype="html">
<source>More like</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">91</context>
</context-group>
<target state="translated">Больше похожих</target>
</trans-unit>
<trans-unit id="02d184c288f567825a1fcbf83bcd3099a10853d5" datatype="html"> <trans-unit id="02d184c288f567825a1fcbf83bcd3099a10853d5" datatype="html">
<source>Filter tags</source> <source>Filter tags</source>
<context-group purpose="location"> <context-group purpose="location">
@@ -1408,10 +1376,34 @@
<source>Score:</source> <source>Score:</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-card-large/document-card-large.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-card-large/document-card-large.component.html</context>
<context context-type="linenumber">66</context> <context context-type="linenumber">86</context>
</context-group> </context-group>
<target state="translated">Оценка:</target> <target state="translated">Оценка:</target>
</trans-unit> </trans-unit>
<trans-unit id="727d980bba2b3e0b3d8705607f1208eef046479b" datatype="html">
<source>Created: <x id="INTERPOLATION" equiv-text="{{ document.created | customDate}}"/></source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-card-small/document-card-small.component.html</context>
<context context-type="linenumber">43</context>
</context-group>
<target state="translated">Создано: <x id="INTERPOLATION" equiv-text="{{ document.created | customDate}}"/></target>
</trans-unit>
<trans-unit id="0f5d856cb63c69fde44fbfc653ec0655f9040865" datatype="html">
<source>Added: <x id="INTERPOLATION" equiv-text="{{ document.added | customDate}}"/></source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-card-small/document-card-small.component.html</context>
<context context-type="linenumber">44</context>
</context-group>
<target state="translated">Добавлено: <x id="INTERPOLATION" equiv-text="{{ document.added | customDate}}"/></target>
</trans-unit>
<trans-unit id="a205126adef6251fc63305f1a6228d07bc2795a8" datatype="html">
<source>Modified: <x id="INTERPOLATION" equiv-text="{{ document.modified | customDate}}"/></source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-card-small/document-card-small.component.html</context>
<context context-type="linenumber">45</context>
</context-group>
<target state="translated">Изменено: <x id="INTERPOLATION" equiv-text="{{ document.modified | customDate}}"/></target>
</trans-unit>
<trans-unit id="7985804062689412812" datatype="html"> <trans-unit id="7985804062689412812" datatype="html">
<source>Error executing bulk operation: <x id="PH" equiv-text="JSON.stringify(error.error)"/></source> <source>Error executing bulk operation: <x id="PH" equiv-text="JSON.stringify(error.error)"/></source>
<context-group purpose="location"> <context-group purpose="location">
@@ -1857,6 +1849,14 @@
</context-group> </context-group>
<target state="translated">Неверная дата.</target> <target state="translated">Неверная дата.</target>
</trans-unit> </trans-unit>
<trans-unit id="bd5ca454e336126f3eeb67417d9264696b5c852c" datatype="html">
<source>Searching document with asn <x id="INTERPOLATION" equiv-text="{{asn}}"/></source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-asn/document-asn.component.html</context>
<context context-type="linenumber">1</context>
</context-group>
<target state="translated">Поиск документа с asn <x id="INTERPOLATION" equiv-text="{{asn}}"/></target>
</trans-unit>
<trans-unit id="2807800733729323332" datatype="html"> <trans-unit id="2807800733729323332" datatype="html">
<source>Yes</source> <source>Yes</source>
<context-group purpose="location"> <context-group purpose="location">

View File

@@ -54,7 +54,7 @@
<source>Documents</source> <source>Documents</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">49</context> <context context-type="linenumber">51</context>
</context-group> </context-group>
<target>crwdns2850:0crwdne2850:0</target> <target>crwdns2850:0crwdne2850:0</target>
</trans-unit> </trans-unit>
@@ -62,7 +62,7 @@
<source>View &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot; saved successfully.</source> <source>View &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot; saved successfully.</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">115</context> <context context-type="linenumber">116</context>
</context-group> </context-group>
<target>crwdns2852:0crwdne2852:0</target> <target>crwdns2852:0crwdne2852:0</target>
</trans-unit> </trans-unit>
@@ -70,7 +70,7 @@
<source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully.</source> <source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully.</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">136</context> <context context-type="linenumber">138</context>
</context-group> </context-group>
<target>crwdns2854:0crwdne2854:0</target> <target>crwdns2854:0crwdne2854:0</target>
</trans-unit> </trans-unit>
@@ -166,7 +166,7 @@
<source>ASN</source> <source>ASN</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">105</context> <context context-type="linenumber">111</context>
</context-group> </context-group>
<target>crwdns2878:0crwdne2878:0</target> <target>crwdns2878:0crwdne2878:0</target>
</trans-unit> </trans-unit>
@@ -174,7 +174,7 @@
<source>Correspondent</source> <source>Correspondent</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">111</context> <context context-type="linenumber">117</context>
</context-group> </context-group>
<target>crwdns2880:0crwdne2880:0</target> <target>crwdns2880:0crwdne2880:0</target>
</trans-unit> </trans-unit>
@@ -182,7 +182,7 @@
<source>Title</source> <source>Title</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">117</context> <context context-type="linenumber">123</context>
</context-group> </context-group>
<target>crwdns2882:0crwdne2882:0</target> <target>crwdns2882:0crwdne2882:0</target>
</trans-unit> </trans-unit>
@@ -190,7 +190,7 @@
<source>Document type</source> <source>Document type</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">123</context> <context context-type="linenumber">129</context>
</context-group> </context-group>
<target>crwdns2884:0crwdne2884:0</target> <target>crwdns2884:0crwdne2884:0</target>
</trans-unit> </trans-unit>
@@ -198,7 +198,7 @@
<source>Created</source> <source>Created</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">129</context> <context context-type="linenumber">135</context>
</context-group> </context-group>
<target>crwdns2886:0crwdne2886:0</target> <target>crwdns2886:0crwdne2886:0</target>
</trans-unit> </trans-unit>
@@ -206,7 +206,7 @@
<source>Added</source> <source>Added</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">135</context> <context context-type="linenumber">141</context>
</context-group> </context-group>
<target>crwdns2888:0crwdne2888:0</target> <target>crwdns2888:0crwdne2888:0</target>
</trans-unit> </trans-unit>
@@ -214,7 +214,7 @@
<source>Confirm delete</source> <source>Confirm delete</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">203</context> <context context-type="linenumber">204</context>
</context-group> </context-group>
<target>crwdns2890:0crwdne2890:0</target> <target>crwdns2890:0crwdne2890:0</target>
</trans-unit> </trans-unit>
@@ -222,7 +222,7 @@
<source>Do you really want to delete document &quot;<x id="PH" equiv-text="this.document.title"/>&quot;?</source> <source>Do you really want to delete document &quot;<x id="PH" equiv-text="this.document.title"/>&quot;?</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">204</context> <context context-type="linenumber">205</context>
</context-group> </context-group>
<target>crwdns2892:0crwdne2892:0</target> <target>crwdns2892:0crwdne2892:0</target>
</trans-unit> </trans-unit>
@@ -230,7 +230,7 @@
<source>The files for this document will be deleted permanently. This operation cannot be undone.</source> <source>The files for this document will be deleted permanently. This operation cannot be undone.</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">205</context> <context context-type="linenumber">206</context>
</context-group> </context-group>
<target>crwdns2894:0crwdne2894:0</target> <target>crwdns2894:0crwdne2894:0</target>
</trans-unit> </trans-unit>
@@ -238,7 +238,7 @@
<source>Delete document</source> <source>Delete document</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">207</context> <context context-type="linenumber">208</context>
</context-group> </context-group>
<target>crwdns2896:0crwdne2896:0</target> <target>crwdns2896:0crwdne2896:0</target>
</trans-unit> </trans-unit>
@@ -246,7 +246,7 @@
<source>Error deleting document: <x id="PH" equiv-text="JSON.stringify(error)"/></source> <source>Error deleting document: <x id="PH" equiv-text="JSON.stringify(error)"/></source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">214</context> <context context-type="linenumber">215</context>
</context-group> </context-group>
<target>crwdns2898:0crwdne2898:0</target> <target>crwdns2898:0crwdne2898:0</target>
</trans-unit> </trans-unit>
@@ -1042,54 +1042,6 @@
</context-group> </context-group>
<target>crwdns3096:0crwdne3096:0</target> <target>crwdns3096:0crwdne3096:0</target>
</trans-unit> </trans-unit>
<trans-unit id="49c9ede51100b454f7841b24cd02355c6622bf44" datatype="html">
<source>Search results</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/search/search.component.html</context>
<context context-type="linenumber">1</context>
</context-group>
<target>crwdns3098:0crwdne3098:0</target>
</trans-unit>
<trans-unit id="31976d04f98e8a38098f66ac3a83ad33b576e5db" datatype="html">
<source>Invalid search query: <x id="INTERPOLATION" equiv-text="{{errorMessage}}"/></source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/search/search.component.html</context>
<context context-type="linenumber">4</context>
</context-group>
<target>crwdns3100:0{{errorMessage}}crwdne3100:0</target>
</trans-unit>
<trans-unit id="f7f2e30106223a69bcf0f8e586e6be9dc4e72226" datatype="html">
<source>Showing documents similar to <x id="START_LINK" equiv-text="&lt;a routerLink=&quot;/documents/{{more_like}}&quot;&gt;{{more_like_doc?.original_file_name}}"/><x id="INTERPOLATION" equiv-text="{{more_like_doc?.original_file_name}}&lt;/a&gt;"/><x id="CLOSE_LINK" equiv-text="&lt;/a&gt;"/></source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/search/search.component.html</context>
<context context-type="linenumber">6</context>
</context-group>
<target>crwdns3406:0{{more_like}}crwdnd3406:0{{more_like_doc?.original_file_name}}crwdnd3406:0{{more_like_doc?.original_file_name}}crwdne3406:0</target>
</trans-unit>
<trans-unit id="6e0b0a1ea16f18f2fb1586c53d99d2f22e1aee2e" datatype="html">
<source>Search query: <x id="START_ITALIC_TEXT" equiv-text="&lt;i&gt;{{query}}"/><x id="INTERPOLATION" equiv-text="{{query}}&lt;/i&gt;"/><x id="CLOSE_ITALIC_TEXT" equiv-text="&lt;/i&gt;"/></source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/search/search.component.html</context>
<context context-type="linenumber">9</context>
</context-group>
<target>crwdns3104:0{{query}}crwdnd3104:0{{query}}crwdne3104:0</target>
</trans-unit>
<trans-unit id="afa760e48c97d64d19c1455d18b7834a2256e23f" datatype="html">
<source>Did you mean &quot;<x id="START_LINK" equiv-text="&lt;a [routerLink]=&quot;&quot; (click)=&quot;searchCorrectedQuery()&quot;&gt;{{correctedQuery}}"/><x id="INTERPOLATION" equiv-text="{{correctedQuery}}&lt;/a&gt;"/><x id="CLOSE_LINK" equiv-text="&lt;/a&gt;"/>&quot;?</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/search/search.component.html</context>
<context context-type="linenumber">11</context>
</context-group>
<target>crwdns3106:0[routerLink]crwdnd3106:0{{correctedQuery}}crwdnd3106:0{{correctedQuery}}crwdne3106:0</target>
</trans-unit>
<trans-unit id="fe6ced3fcc803bba5a2e6c1a067b9ce62542500e" datatype="html">
<source>{VAR_PLURAL, plural, =0 {No results} =1 {One result} other {<x id="INTERPOLATION"/> results}}</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/search/search.component.html</context>
<context context-type="linenumber">16</context>
</context-group>
<target>crwdns3108:0VAR_PLURAL={VAR_PLURAL}crwdne3108:0</target>
</trans-unit>
<trans-unit id="41147374f427980a9f1a8cd5e3f4b1666e6f2418" datatype="html"> <trans-unit id="41147374f427980a9f1a8cd5e3f4b1666e6f2418" datatype="html">
<source>Paperless-ng</source> <source>Paperless-ng</source>
<context-group purpose="location"> <context-group purpose="location">
@@ -1187,35 +1139,11 @@
</context-group> </context-group>
<target>crwdns3132:0crwdne3132:0</target> <target>crwdns3132:0crwdne3132:0</target>
</trans-unit> </trans-unit>
<trans-unit id="5701618810648052610" datatype="html">
<source>Title</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">77</context>
</context-group>
<target>crwdns3134:0crwdne3134:0</target>
</trans-unit>
<trans-unit id="3100631071441658964" datatype="html">
<source>Title &amp; content</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">78</context>
</context-group>
<target>crwdns3136:0crwdne3136:0</target>
</trans-unit>
<trans-unit id="7517688192215738656" datatype="html">
<source>ASN</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">79</context>
</context-group>
<target>crwdns3354:0crwdne3354:0</target>
</trans-unit>
<trans-unit id="5195932016807797291" datatype="html"> <trans-unit id="5195932016807797291" datatype="html">
<source>Correspondent: <x id="PH" equiv-text="this.correspondents.find(c =&gt; c.id == +rule.value)?.name"/></source> <source>Correspondent: <x id="PH" equiv-text="this.correspondents.find(c =&gt; c.id == +rule.value)?.name"/></source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">33</context> <context context-type="linenumber">37</context>
</context-group> </context-group>
<target>crwdns3138:0crwdne3138:0</target> <target>crwdns3138:0crwdne3138:0</target>
</trans-unit> </trans-unit>
@@ -1223,7 +1151,7 @@
<source>Without correspondent</source> <source>Without correspondent</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">35</context> <context context-type="linenumber">39</context>
</context-group> </context-group>
<target>crwdns3140:0crwdne3140:0</target> <target>crwdns3140:0crwdne3140:0</target>
</trans-unit> </trans-unit>
@@ -1231,7 +1159,7 @@
<source>Type: <x id="PH" equiv-text="this.documentTypes.find(dt =&gt; dt.id == +rule.value)?.name"/></source> <source>Type: <x id="PH" equiv-text="this.documentTypes.find(dt =&gt; dt.id == +rule.value)?.name"/></source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">40</context> <context context-type="linenumber">44</context>
</context-group> </context-group>
<target>crwdns3142:0crwdne3142:0</target> <target>crwdns3142:0crwdne3142:0</target>
</trans-unit> </trans-unit>
@@ -1239,7 +1167,7 @@
<source>Without document type</source> <source>Without document type</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">42</context> <context context-type="linenumber">46</context>
</context-group> </context-group>
<target>crwdns3144:0crwdne3144:0</target> <target>crwdns3144:0crwdne3144:0</target>
</trans-unit> </trans-unit>
@@ -1247,7 +1175,7 @@
<source>Tag: <x id="PH" equiv-text="this.tags.find(t =&gt; t.id == +rule.value)?.name"/></source> <source>Tag: <x id="PH" equiv-text="this.tags.find(t =&gt; t.id == +rule.value)?.name"/></source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">46</context> <context context-type="linenumber">50</context>
</context-group> </context-group>
<target>crwdns3146:0crwdne3146:0</target> <target>crwdns3146:0crwdne3146:0</target>
</trans-unit> </trans-unit>
@@ -1255,7 +1183,7 @@
<source>Without any tag</source> <source>Without any tag</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">50</context> <context context-type="linenumber">54</context>
</context-group> </context-group>
<target>crwdns3148:0crwdne3148:0</target> <target>crwdns3148:0crwdne3148:0</target>
</trans-unit> </trans-unit>
@@ -1263,7 +1191,7 @@
<source>Title: <x id="PH" equiv-text="rule.value"/></source> <source>Title: <x id="PH" equiv-text="rule.value"/></source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">54</context> <context context-type="linenumber">58</context>
</context-group> </context-group>
<target>crwdns3150:0crwdne3150:0</target> <target>crwdns3150:0crwdne3150:0</target>
</trans-unit> </trans-unit>
@@ -1271,10 +1199,50 @@
<source>ASN: <x id="PH" equiv-text="rule.value"/></source> <source>ASN: <x id="PH" equiv-text="rule.value"/></source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">57</context> <context context-type="linenumber">61</context>
</context-group> </context-group>
<target>crwdns3416:0crwdne3416:0</target> <target>crwdns3416:0crwdne3416:0</target>
</trans-unit> </trans-unit>
<trans-unit id="5701618810648052610" datatype="html">
<source>Title</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">85</context>
</context-group>
<target>crwdns3134:0crwdne3134:0</target>
</trans-unit>
<trans-unit id="3100631071441658964" datatype="html">
<source>Title &amp; content</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">86</context>
</context-group>
<target>crwdns3136:0crwdne3136:0</target>
</trans-unit>
<trans-unit id="7517688192215738656" datatype="html">
<source>ASN</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">87</context>
</context-group>
<target>crwdns3354:0crwdne3354:0</target>
</trans-unit>
<trans-unit id="1010505078885609376" datatype="html">
<source>Advanced search</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">88</context>
</context-group>
<target>crwdns3434:0crwdne3434:0</target>
</trans-unit>
<trans-unit id="2649431021108393503" datatype="html">
<source>More like</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">91</context>
</context-group>
<target>crwdns3436:0crwdne3436:0</target>
</trans-unit>
<trans-unit id="02d184c288f567825a1fcbf83bcd3099a10853d5" datatype="html"> <trans-unit id="02d184c288f567825a1fcbf83bcd3099a10853d5" datatype="html">
<source>Filter tags</source> <source>Filter tags</source>
<context-group purpose="location"> <context-group purpose="location">
@@ -1408,10 +1376,34 @@
<source>Score:</source> <source>Score:</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-card-large/document-card-large.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-card-large/document-card-large.component.html</context>
<context context-type="linenumber">66</context> <context context-type="linenumber">86</context>
</context-group> </context-group>
<target>crwdns3186:0crwdne3186:0</target> <target>crwdns3186:0crwdne3186:0</target>
</trans-unit> </trans-unit>
<trans-unit id="727d980bba2b3e0b3d8705607f1208eef046479b" datatype="html">
<source>Created: <x id="INTERPOLATION" equiv-text="{{ document.created | customDate}}"/></source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-card-small/document-card-small.component.html</context>
<context context-type="linenumber">43</context>
</context-group>
<target>crwdns3426:0{{ document.created | customDate}}crwdne3426:0</target>
</trans-unit>
<trans-unit id="0f5d856cb63c69fde44fbfc653ec0655f9040865" datatype="html">
<source>Added: <x id="INTERPOLATION" equiv-text="{{ document.added | customDate}}"/></source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-card-small/document-card-small.component.html</context>
<context context-type="linenumber">44</context>
</context-group>
<target>crwdns3428:0{{ document.added | customDate}}crwdne3428:0</target>
</trans-unit>
<trans-unit id="a205126adef6251fc63305f1a6228d07bc2795a8" datatype="html">
<source>Modified: <x id="INTERPOLATION" equiv-text="{{ document.modified | customDate}}"/></source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-card-small/document-card-small.component.html</context>
<context context-type="linenumber">45</context>
</context-group>
<target>crwdns3430:0{{ document.modified | customDate}}crwdne3430:0</target>
</trans-unit>
<trans-unit id="7985804062689412812" datatype="html"> <trans-unit id="7985804062689412812" datatype="html">
<source>Error executing bulk operation: <x id="PH" equiv-text="JSON.stringify(error.error)"/></source> <source>Error executing bulk operation: <x id="PH" equiv-text="JSON.stringify(error.error)"/></source>
<context-group purpose="location"> <context-group purpose="location">
@@ -1857,6 +1849,14 @@
</context-group> </context-group>
<target>crwdns3298:0crwdne3298:0</target> <target>crwdns3298:0crwdne3298:0</target>
</trans-unit> </trans-unit>
<trans-unit id="bd5ca454e336126f3eeb67417d9264696b5c852c" datatype="html">
<source>Searching document with asn <x id="INTERPOLATION" equiv-text="{{asn}}"/></source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-asn/document-asn.component.html</context>
<context context-type="linenumber">1</context>
</context-group>
<target>crwdns3432:0{{asn}}crwdne3432:0</target>
</trans-unit>
<trans-unit id="2807800733729323332" datatype="html"> <trans-unit id="2807800733729323332" datatype="html">
<source>Yes</source> <source>Yes</source>
<context-group purpose="location"> <context-group purpose="location">

View File

@@ -54,7 +54,7 @@
<source>Documents</source> <source>Documents</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">49</context> <context context-type="linenumber">51</context>
</context-group> </context-group>
<target state="translated">文件</target> <target state="translated">文件</target>
</trans-unit> </trans-unit>
@@ -62,7 +62,7 @@
<source>View &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot; saved successfully.</source> <source>View &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot; saved successfully.</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">115</context> <context context-type="linenumber">116</context>
</context-group> </context-group>
<target state="needs-translation">View "<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>" saved successfully.</target> <target state="needs-translation">View "<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>" saved successfully.</target>
</trans-unit> </trans-unit>
@@ -70,7 +70,7 @@
<source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully.</source> <source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully.</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">136</context> <context context-type="linenumber">138</context>
</context-group> </context-group>
<target state="needs-translation">View "<x id="PH" equiv-text="savedView.name"/>" created successfully.</target> <target state="needs-translation">View "<x id="PH" equiv-text="savedView.name"/>" created successfully.</target>
</trans-unit> </trans-unit>
@@ -166,7 +166,7 @@
<source>ASN</source> <source>ASN</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">105</context> <context context-type="linenumber">111</context>
</context-group> </context-group>
<target state="needs-translation">ASN</target> <target state="needs-translation">ASN</target>
</trans-unit> </trans-unit>
@@ -174,7 +174,7 @@
<source>Correspondent</source> <source>Correspondent</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">111</context> <context context-type="linenumber">117</context>
</context-group> </context-group>
<target state="needs-translation">Correspondent</target> <target state="needs-translation">Correspondent</target>
</trans-unit> </trans-unit>
@@ -182,7 +182,7 @@
<source>Title</source> <source>Title</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">117</context> <context context-type="linenumber">123</context>
</context-group> </context-group>
<target state="needs-translation">Title</target> <target state="needs-translation">Title</target>
</trans-unit> </trans-unit>
@@ -190,7 +190,7 @@
<source>Document type</source> <source>Document type</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">123</context> <context context-type="linenumber">129</context>
</context-group> </context-group>
<target state="needs-translation">Document type</target> <target state="needs-translation">Document type</target>
</trans-unit> </trans-unit>
@@ -198,7 +198,7 @@
<source>Created</source> <source>Created</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">129</context> <context context-type="linenumber">135</context>
</context-group> </context-group>
<target state="needs-translation">Created</target> <target state="needs-translation">Created</target>
</trans-unit> </trans-unit>
@@ -206,7 +206,7 @@
<source>Added</source> <source>Added</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">135</context> <context context-type="linenumber">141</context>
</context-group> </context-group>
<target state="needs-translation">Added</target> <target state="needs-translation">Added</target>
</trans-unit> </trans-unit>
@@ -214,7 +214,7 @@
<source>Confirm delete</source> <source>Confirm delete</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">203</context> <context context-type="linenumber">204</context>
</context-group> </context-group>
<target state="needs-translation">Confirm delete</target> <target state="needs-translation">Confirm delete</target>
</trans-unit> </trans-unit>
@@ -222,7 +222,7 @@
<source>Do you really want to delete document &quot;<x id="PH" equiv-text="this.document.title"/>&quot;?</source> <source>Do you really want to delete document &quot;<x id="PH" equiv-text="this.document.title"/>&quot;?</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">204</context> <context context-type="linenumber">205</context>
</context-group> </context-group>
<target state="needs-translation">Do you really want to delete document "<x id="PH" equiv-text="this.document.title"/>"?</target> <target state="needs-translation">Do you really want to delete document "<x id="PH" equiv-text="this.document.title"/>"?</target>
</trans-unit> </trans-unit>
@@ -230,7 +230,7 @@
<source>The files for this document will be deleted permanently. This operation cannot be undone.</source> <source>The files for this document will be deleted permanently. This operation cannot be undone.</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">205</context> <context context-type="linenumber">206</context>
</context-group> </context-group>
<target state="needs-translation">The files for this document will be deleted permanently. This operation cannot be undone.</target> <target state="needs-translation">The files for this document will be deleted permanently. This operation cannot be undone.</target>
</trans-unit> </trans-unit>
@@ -238,7 +238,7 @@
<source>Delete document</source> <source>Delete document</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">207</context> <context context-type="linenumber">208</context>
</context-group> </context-group>
<target state="needs-translation">Delete document</target> <target state="needs-translation">Delete document</target>
</trans-unit> </trans-unit>
@@ -246,7 +246,7 @@
<source>Error deleting document: <x id="PH" equiv-text="JSON.stringify(error)"/></source> <source>Error deleting document: <x id="PH" equiv-text="JSON.stringify(error)"/></source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">214</context> <context context-type="linenumber">215</context>
</context-group> </context-group>
<target state="needs-translation">Error deleting document: <x id="PH" equiv-text="JSON.stringify(error)"/></target> <target state="needs-translation">Error deleting document: <x id="PH" equiv-text="JSON.stringify(error)"/></target>
</trans-unit> </trans-unit>
@@ -1042,54 +1042,6 @@
</context-group> </context-group>
<target state="needs-translation">Edit document type</target> <target state="needs-translation">Edit document type</target>
</trans-unit> </trans-unit>
<trans-unit id="49c9ede51100b454f7841b24cd02355c6622bf44" datatype="html">
<source>Search results</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/search/search.component.html</context>
<context context-type="linenumber">1</context>
</context-group>
<target state="needs-translation">Search results</target>
</trans-unit>
<trans-unit id="31976d04f98e8a38098f66ac3a83ad33b576e5db" datatype="html">
<source>Invalid search query: <x id="INTERPOLATION" equiv-text="{{errorMessage}}"/></source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/search/search.component.html</context>
<context context-type="linenumber">4</context>
</context-group>
<target state="needs-translation">Invalid search query: <x id="INTERPOLATION" equiv-text="{{errorMessage}}"/></target>
</trans-unit>
<trans-unit id="f7f2e30106223a69bcf0f8e586e6be9dc4e72226" datatype="html">
<source>Showing documents similar to <x id="START_LINK" equiv-text="&lt;a routerLink=&quot;/documents/{{more_like}}&quot;&gt;{{more_like_doc?.original_file_name}}"/><x id="INTERPOLATION" equiv-text="{{more_like_doc?.original_file_name}}&lt;/a&gt;"/><x id="CLOSE_LINK" equiv-text="&lt;/a&gt;"/></source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/search/search.component.html</context>
<context context-type="linenumber">6</context>
</context-group>
<target state="needs-translation">Showing documents similar to <x id="START_LINK" equiv-text="&lt;a routerLink=&quot;/documents/{{more_like}}&quot;&gt;{{more_like_doc?.original_file_name}}"/><x id="INTERPOLATION" equiv-text="{{more_like_doc?.original_file_name}}&lt;/a&gt;"/><x id="CLOSE_LINK" equiv-text="&lt;/a&gt;"/></target>
</trans-unit>
<trans-unit id="6e0b0a1ea16f18f2fb1586c53d99d2f22e1aee2e" datatype="html">
<source>Search query: <x id="START_ITALIC_TEXT" equiv-text="&lt;i&gt;{{query}}"/><x id="INTERPOLATION" equiv-text="{{query}}&lt;/i&gt;"/><x id="CLOSE_ITALIC_TEXT" equiv-text="&lt;/i&gt;"/></source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/search/search.component.html</context>
<context context-type="linenumber">9</context>
</context-group>
<target state="needs-translation">Search query: <x id="START_ITALIC_TEXT" equiv-text="&lt;i&gt;{{query}}"/><x id="INTERPOLATION" equiv-text="{{query}}&lt;/i&gt;"/><x id="CLOSE_ITALIC_TEXT" equiv-text="&lt;/i&gt;"/></target>
</trans-unit>
<trans-unit id="afa760e48c97d64d19c1455d18b7834a2256e23f" datatype="html">
<source>Did you mean &quot;<x id="START_LINK" equiv-text="&lt;a [routerLink]=&quot;&quot; (click)=&quot;searchCorrectedQuery()&quot;&gt;{{correctedQuery}}"/><x id="INTERPOLATION" equiv-text="{{correctedQuery}}&lt;/a&gt;"/><x id="CLOSE_LINK" equiv-text="&lt;/a&gt;"/>&quot;?</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/search/search.component.html</context>
<context context-type="linenumber">11</context>
</context-group>
<target state="needs-translation">Did you mean "<x id="START_LINK" equiv-text="&lt;a [routerLink]=&quot;&quot; (click)=&quot;searchCorrectedQuery()&quot;&gt;{{correctedQuery}}"/><x id="INTERPOLATION" equiv-text="{{correctedQuery}}&lt;/a&gt;"/><x id="CLOSE_LINK" equiv-text="&lt;/a&gt;"/>"?</target>
</trans-unit>
<trans-unit id="fe6ced3fcc803bba5a2e6c1a067b9ce62542500e" datatype="html">
<source>{VAR_PLURAL, plural, =0 {No results} =1 {One result} other {<x id="INTERPOLATION"/> results}}</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/search/search.component.html</context>
<context context-type="linenumber">16</context>
</context-group>
<target state="needs-translation">{VAR_PLURAL, plural, =0 {No results} =1 {One result} other {<x id="INTERPOLATION"/> results}}</target>
</trans-unit>
<trans-unit id="41147374f427980a9f1a8cd5e3f4b1666e6f2418" datatype="html"> <trans-unit id="41147374f427980a9f1a8cd5e3f4b1666e6f2418" datatype="html">
<source>Paperless-ng</source> <source>Paperless-ng</source>
<context-group purpose="location"> <context-group purpose="location">
@@ -1187,35 +1139,11 @@
</context-group> </context-group>
<target state="needs-translation">Close all</target> <target state="needs-translation">Close all</target>
</trans-unit> </trans-unit>
<trans-unit id="5701618810648052610" datatype="html">
<source>Title</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">77</context>
</context-group>
<target state="needs-translation">Title</target>
</trans-unit>
<trans-unit id="3100631071441658964" datatype="html">
<source>Title &amp; content</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">78</context>
</context-group>
<target state="needs-translation">Title &amp; content</target>
</trans-unit>
<trans-unit id="7517688192215738656" datatype="html">
<source>ASN</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">79</context>
</context-group>
<target state="needs-translation">ASN</target>
</trans-unit>
<trans-unit id="5195932016807797291" datatype="html"> <trans-unit id="5195932016807797291" datatype="html">
<source>Correspondent: <x id="PH" equiv-text="this.correspondents.find(c =&gt; c.id == +rule.value)?.name"/></source> <source>Correspondent: <x id="PH" equiv-text="this.correspondents.find(c =&gt; c.id == +rule.value)?.name"/></source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">33</context> <context context-type="linenumber">37</context>
</context-group> </context-group>
<target state="needs-translation">Correspondent: <x id="PH" equiv-text="this.correspondents.find(c =&gt; c.id == +rule.value)?.name"/></target> <target state="needs-translation">Correspondent: <x id="PH" equiv-text="this.correspondents.find(c =&gt; c.id == +rule.value)?.name"/></target>
</trans-unit> </trans-unit>
@@ -1223,7 +1151,7 @@
<source>Without correspondent</source> <source>Without correspondent</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">35</context> <context context-type="linenumber">39</context>
</context-group> </context-group>
<target state="needs-translation">Without correspondent</target> <target state="needs-translation">Without correspondent</target>
</trans-unit> </trans-unit>
@@ -1231,7 +1159,7 @@
<source>Type: <x id="PH" equiv-text="this.documentTypes.find(dt =&gt; dt.id == +rule.value)?.name"/></source> <source>Type: <x id="PH" equiv-text="this.documentTypes.find(dt =&gt; dt.id == +rule.value)?.name"/></source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">40</context> <context context-type="linenumber">44</context>
</context-group> </context-group>
<target state="needs-translation">Type: <x id="PH" equiv-text="this.documentTypes.find(dt =&gt; dt.id == +rule.value)?.name"/></target> <target state="needs-translation">Type: <x id="PH" equiv-text="this.documentTypes.find(dt =&gt; dt.id == +rule.value)?.name"/></target>
</trans-unit> </trans-unit>
@@ -1239,7 +1167,7 @@
<source>Without document type</source> <source>Without document type</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">42</context> <context context-type="linenumber">46</context>
</context-group> </context-group>
<target state="needs-translation">Without document type</target> <target state="needs-translation">Without document type</target>
</trans-unit> </trans-unit>
@@ -1247,7 +1175,7 @@
<source>Tag: <x id="PH" equiv-text="this.tags.find(t =&gt; t.id == +rule.value)?.name"/></source> <source>Tag: <x id="PH" equiv-text="this.tags.find(t =&gt; t.id == +rule.value)?.name"/></source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">46</context> <context context-type="linenumber">50</context>
</context-group> </context-group>
<target state="needs-translation">Tag: <x id="PH" equiv-text="this.tags.find(t =&gt; t.id == +rule.value)?.name"/></target> <target state="needs-translation">Tag: <x id="PH" equiv-text="this.tags.find(t =&gt; t.id == +rule.value)?.name"/></target>
</trans-unit> </trans-unit>
@@ -1255,7 +1183,7 @@
<source>Without any tag</source> <source>Without any tag</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">50</context> <context context-type="linenumber">54</context>
</context-group> </context-group>
<target state="needs-translation">Without any tag</target> <target state="needs-translation">Without any tag</target>
</trans-unit> </trans-unit>
@@ -1263,7 +1191,7 @@
<source>Title: <x id="PH" equiv-text="rule.value"/></source> <source>Title: <x id="PH" equiv-text="rule.value"/></source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">54</context> <context context-type="linenumber">58</context>
</context-group> </context-group>
<target state="needs-translation">Title: <x id="PH" equiv-text="rule.value"/></target> <target state="needs-translation">Title: <x id="PH" equiv-text="rule.value"/></target>
</trans-unit> </trans-unit>
@@ -1271,10 +1199,50 @@
<source>ASN: <x id="PH" equiv-text="rule.value"/></source> <source>ASN: <x id="PH" equiv-text="rule.value"/></source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context> <context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">57</context> <context context-type="linenumber">61</context>
</context-group> </context-group>
<target state="needs-translation">ASN: <x id="PH" equiv-text="rule.value"/></target> <target state="needs-translation">ASN: <x id="PH" equiv-text="rule.value"/></target>
</trans-unit> </trans-unit>
<trans-unit id="5701618810648052610" datatype="html">
<source>Title</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">85</context>
</context-group>
<target state="needs-translation">Title</target>
</trans-unit>
<trans-unit id="3100631071441658964" datatype="html">
<source>Title &amp; content</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">86</context>
</context-group>
<target state="needs-translation">Title &amp; content</target>
</trans-unit>
<trans-unit id="7517688192215738656" datatype="html">
<source>ASN</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">87</context>
</context-group>
<target state="needs-translation">ASN</target>
</trans-unit>
<trans-unit id="1010505078885609376" datatype="html">
<source>Advanced search</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">88</context>
</context-group>
<target state="needs-translation">Advanced search</target>
</trans-unit>
<trans-unit id="2649431021108393503" datatype="html">
<source>More like</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.ts</context>
<context context-type="linenumber">91</context>
</context-group>
<target state="needs-translation">More like</target>
</trans-unit>
<trans-unit id="02d184c288f567825a1fcbf83bcd3099a10853d5" datatype="html"> <trans-unit id="02d184c288f567825a1fcbf83bcd3099a10853d5" datatype="html">
<source>Filter tags</source> <source>Filter tags</source>
<context-group purpose="location"> <context-group purpose="location">
@@ -1408,10 +1376,34 @@
<source>Score:</source> <source>Score:</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-card-large/document-card-large.component.html</context> <context context-type="sourcefile">src/app/components/document-list/document-card-large/document-card-large.component.html</context>
<context context-type="linenumber">66</context> <context context-type="linenumber">86</context>
</context-group> </context-group>
<target state="needs-translation">Score:</target> <target state="needs-translation">Score:</target>
</trans-unit> </trans-unit>
<trans-unit id="727d980bba2b3e0b3d8705607f1208eef046479b" datatype="html">
<source>Created: <x id="INTERPOLATION" equiv-text="{{ document.created | customDate}}"/></source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-card-small/document-card-small.component.html</context>
<context context-type="linenumber">43</context>
</context-group>
<target state="needs-translation">Created: <x id="INTERPOLATION" equiv-text="{{ document.created | customDate}}"/></target>
</trans-unit>
<trans-unit id="0f5d856cb63c69fde44fbfc653ec0655f9040865" datatype="html">
<source>Added: <x id="INTERPOLATION" equiv-text="{{ document.added | customDate}}"/></source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-card-small/document-card-small.component.html</context>
<context context-type="linenumber">44</context>
</context-group>
<target state="needs-translation">Added: <x id="INTERPOLATION" equiv-text="{{ document.added | customDate}}"/></target>
</trans-unit>
<trans-unit id="a205126adef6251fc63305f1a6228d07bc2795a8" datatype="html">
<source>Modified: <x id="INTERPOLATION" equiv-text="{{ document.modified | customDate}}"/></source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-card-small/document-card-small.component.html</context>
<context context-type="linenumber">45</context>
</context-group>
<target state="needs-translation">Modified: <x id="INTERPOLATION" equiv-text="{{ document.modified | customDate}}"/></target>
</trans-unit>
<trans-unit id="7985804062689412812" datatype="html"> <trans-unit id="7985804062689412812" datatype="html">
<source>Error executing bulk operation: <x id="PH" equiv-text="JSON.stringify(error.error)"/></source> <source>Error executing bulk operation: <x id="PH" equiv-text="JSON.stringify(error.error)"/></source>
<context-group purpose="location"> <context-group purpose="location">
@@ -1857,6 +1849,14 @@
</context-group> </context-group>
<target state="needs-translation">Invalid date.</target> <target state="needs-translation">Invalid date.</target>
</trans-unit> </trans-unit>
<trans-unit id="bd5ca454e336126f3eeb67417d9264696b5c852c" datatype="html">
<source>Searching document with asn <x id="INTERPOLATION" equiv-text="{{asn}}"/></source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-asn/document-asn.component.html</context>
<context context-type="linenumber">1</context>
</context-group>
<target state="needs-translation">Searching document with asn <x id="INTERPOLATION" equiv-text="{{asn}}"/></target>
</trans-unit>
<trans-unit id="2807800733729323332" datatype="html"> <trans-unit id="2807800733729323332" datatype="html">
<source>Yes</source> <source>Yes</source>
<context-group purpose="location"> <context-group purpose="location">

View File

@@ -64,9 +64,9 @@ class Consumer(LoggingMixin):
{'type': 'status_update', {'type': 'status_update',
'data': payload}) 'data': payload})
def _fail(self, message, log_message=None): def _fail(self, message, log_message=None, exc_info=None):
self._send_progress(100, 100, 'FAILED', message) self._send_progress(100, 100, 'FAILED', message)
self.log("error", log_message or message) self.log("error", log_message or message, exc_info=exc_info)
raise ConsumerError(f"{self.filename}: {log_message or message}") raise ConsumerError(f"{self.filename}: {log_message or message}")
def __init__(self): def __init__(self):
@@ -115,12 +115,16 @@ class Consumer(LoggingMixin):
f"Configured pre-consume script " f"Configured pre-consume script "
f"{settings.PRE_CONSUME_SCRIPT} does not exist.") f"{settings.PRE_CONSUME_SCRIPT} does not exist.")
self.log("info",
f"Executing pre-consume script {settings.PRE_CONSUME_SCRIPT}")
try: try:
Popen((settings.PRE_CONSUME_SCRIPT, self.path)).wait() Popen((settings.PRE_CONSUME_SCRIPT, self.path)).wait()
except Exception as e: except Exception as e:
self._fail( self._fail(
MESSAGE_PRE_CONSUME_SCRIPT_ERROR, MESSAGE_PRE_CONSUME_SCRIPT_ERROR,
f"Error while executing pre-consume script: {e}" f"Error while executing pre-consume script: {e}",
exc_info=True
) )
def run_post_consume_script(self, document): def run_post_consume_script(self, document):
@@ -134,6 +138,11 @@ class Consumer(LoggingMixin):
f"{settings.POST_CONSUME_SCRIPT} does not exist." f"{settings.POST_CONSUME_SCRIPT} does not exist."
) )
self.log(
"info",
f"Executing post-consume script {settings.POST_CONSUME_SCRIPT}"
)
try: try:
Popen(( Popen((
settings.POST_CONSUME_SCRIPT, settings.POST_CONSUME_SCRIPT,
@@ -150,7 +159,8 @@ class Consumer(LoggingMixin):
except Exception as e: except Exception as e:
self._fail( self._fail(
MESSAGE_POST_CONSUME_SCRIPT_ERROR, MESSAGE_POST_CONSUME_SCRIPT_ERROR,
f"Error while executing post-consume script: {e}" f"Error while executing post-consume script: {e}",
exc_info=True
) )
def try_consume_file(self, def try_consume_file(self,
@@ -255,7 +265,8 @@ class Consumer(LoggingMixin):
document_parser.cleanup() document_parser.cleanup()
self._fail( self._fail(
str(e), str(e),
f"Error while consuming document {self.filename}: {e}" f"Error while consuming document {self.filename}: {e}",
exc_info=True
) )
# Prepare the document classifier. # Prepare the document classifier.
@@ -326,7 +337,8 @@ class Consumer(LoggingMixin):
self._fail( self._fail(
str(e), str(e),
f"The following error occured while consuming " f"The following error occured while consuming "
f"{self.filename}: {e}" f"{self.filename}: {e}",
exc_info=True
) )
finally: finally:
document_parser.cleanup() document_parser.cleanup()

View File

@@ -2,75 +2,70 @@ import logging
import os import os
from contextlib import contextmanager from contextlib import contextmanager
import math
from dateutil.parser import isoparse
from django.conf import settings from django.conf import settings
from whoosh import highlight, classify, query from whoosh import highlight, classify, query
from whoosh.fields import Schema, TEXT, NUMERIC, KEYWORD, DATETIME from whoosh.fields import Schema, TEXT, NUMERIC, KEYWORD, DATETIME, BOOLEAN
from whoosh.highlight import Formatter, get_text from whoosh.highlight import Formatter, get_text, HtmlFormatter
from whoosh.index import create_in, exists_in, open_dir from whoosh.index import create_in, exists_in, open_dir
from whoosh.qparser import MultifieldParser from whoosh.qparser import MultifieldParser
from whoosh.qparser.dateparse import DateParserPlugin from whoosh.qparser.dateparse import DateParserPlugin
from whoosh.searching import ResultsPage, Searcher
from whoosh.writing import AsyncWriter from whoosh.writing import AsyncWriter
from documents.models import Document
logger = logging.getLogger("paperless.index") logger = logging.getLogger("paperless.index")
class JsonFormatter(Formatter):
def __init__(self):
self.seen = {}
def format_token(self, text, token, replace=False):
ttext = self._text(get_text(text, token, replace))
return {'text': ttext, 'highlight': 'true'}
def format_fragment(self, fragment, replace=False):
output = []
index = fragment.startchar
text = fragment.text
amend_token = None
for t in fragment.matches:
if t.startchar is None:
continue
if t.startchar < index:
continue
if t.startchar > index:
text_inbetween = text[index:t.startchar]
if amend_token and t.startchar - index < 10:
amend_token['text'] += text_inbetween
else:
output.append({'text': text_inbetween,
'highlight': False})
amend_token = None
token = self.format_token(text, t, replace)
if amend_token:
amend_token['text'] += token['text']
else:
output.append(token)
amend_token = token
index = t.endchar
if index < fragment.endchar:
output.append({'text': text[index:fragment.endchar],
'highlight': False})
return output
def format(self, fragments, replace=False):
output = []
for fragment in fragments:
output.append(self.format_fragment(fragment, replace=replace))
return output
def get_schema(): def get_schema():
return Schema( return Schema(
id=NUMERIC(stored=True, unique=True, numtype=int), id=NUMERIC(
title=TEXT(stored=True), stored=True,
unique=True
),
title=TEXT(
sortable=True
),
content=TEXT(), content=TEXT(),
correspondent=TEXT(stored=True), asn=NUMERIC(
tag=KEYWORD(stored=True, commas=True, scorable=True, lowercase=True), sortable=True
type=TEXT(stored=True), ),
created=DATETIME(stored=True, sortable=True),
modified=DATETIME(stored=True, sortable=True), correspondent=TEXT(
added=DATETIME(stored=True, sortable=True), sortable=True
),
correspondent_id=NUMERIC(),
has_correspondent=BOOLEAN(),
tag=KEYWORD(
commas=True,
scorable=True,
lowercase=True
),
tag_id=KEYWORD(
commas=True,
scorable=True
),
has_tag=BOOLEAN(),
type=TEXT(
sortable=True
),
type_id=NUMERIC(),
has_type=BOOLEAN(),
created=DATETIME(
sortable=True
),
modified=DATETIME(
sortable=True
),
added=DATETIME(
sortable=True
),
) )
@@ -87,11 +82,8 @@ def open_index(recreate=False):
@contextmanager @contextmanager
def open_index_writer(ix=None, optimize=False): def open_index_writer(optimize=False):
if ix: writer = AsyncWriter(open_index())
writer = AsyncWriter(ix)
else:
writer = AsyncWriter(open_index())
try: try:
yield writer yield writer
@@ -102,17 +94,35 @@ def open_index_writer(ix=None, optimize=False):
writer.commit(optimize=optimize) writer.commit(optimize=optimize)
@contextmanager
def open_index_searcher():
searcher = open_index().searcher()
try:
yield searcher
finally:
searcher.close()
def update_document(writer, doc): def update_document(writer, doc):
tags = ",".join([t.name for t in doc.tags.all()]) tags = ",".join([t.name for t in doc.tags.all()])
tags_ids = ",".join([str(t.id) for t in doc.tags.all()])
writer.update_document( writer.update_document(
id=doc.pk, id=doc.pk,
title=doc.title, title=doc.title,
content=doc.content, content=doc.content,
correspondent=doc.correspondent.name if doc.correspondent else None, correspondent=doc.correspondent.name if doc.correspondent else None,
correspondent_id=doc.correspondent.id if doc.correspondent else None,
has_correspondent=doc.correspondent is not None,
tag=tags if tags else None, tag=tags if tags else None,
tag_id=tags_ids if tags_ids else None,
has_tag=len(tags) > 0,
type=doc.document_type.name if doc.document_type else None, type=doc.document_type.name if doc.document_type else None,
type_id=doc.document_type.id if doc.document_type else None,
has_type=doc.document_type is not None,
created=doc.created, created=doc.created,
added=doc.added, added=doc.added,
asn=doc.archive_serial_number,
modified=doc.modified, modified=doc.modified,
) )
@@ -135,50 +145,137 @@ def remove_document_from_index(document):
remove_document(writer, document) remove_document(writer, document)
@contextmanager class DelayedQuery:
def query_page(ix, page, querystring, more_like_doc_id, more_like_doc_content):
searcher = ix.searcher()
try:
if querystring:
qp = MultifieldParser(
["content", "title", "correspondent", "tag", "type"],
ix.schema)
qp.add_plugin(DateParserPlugin())
str_q = qp.parse(querystring)
corrected = searcher.correct_query(str_q, querystring)
else:
str_q = None
corrected = None
if more_like_doc_id: @property
docnum = searcher.document_number(id=more_like_doc_id) def _query(self):
kts = searcher.key_terms_from_text( raise NotImplementedError()
'content', more_like_doc_content, numterms=20,
model=classify.Bo1Model, normalize=False)
more_like_q = query.Or(
[query.Term('content', word, boost=weight)
for word, weight in kts])
result_page = searcher.search_page(
more_like_q, page, filter=str_q, mask={docnum})
elif str_q:
result_page = searcher.search_page(str_q, page)
else:
raise ValueError(
"Either querystring or more_like_doc_id is required."
)
result_page.results.fragmenter = highlight.ContextFragmenter( @property
def _query_filter(self):
criterias = []
for k, v in self.query_params.items():
if k == 'correspondent__id':
criterias.append(query.Term('correspondent_id', v))
elif k == 'tags__id__all':
for tag_id in v.split(","):
criterias.append(query.Term('tag_id', tag_id))
elif k == 'document_type__id':
criterias.append(query.Term('type_id', v))
elif k == 'correspondent__isnull':
criterias.append(query.Term("has_correspondent", v == "false"))
elif k == 'is_tagged':
criterias.append(query.Term("has_tag", v == "true"))
elif k == 'document_type__isnull':
criterias.append(query.Term("has_type", v == "false"))
elif k == 'created__date__lt':
criterias.append(
query.DateRange("created", start=None, end=isoparse(v)))
elif k == 'created__date__gt':
criterias.append(
query.DateRange("created", start=isoparse(v), end=None))
elif k == 'added__date__gt':
criterias.append(
query.DateRange("added", start=isoparse(v), end=None))
elif k == 'added__date__lt':
criterias.append(
query.DateRange("added", start=None, end=isoparse(v)))
if len(criterias) > 0:
return query.And(criterias)
else:
return None
@property
def _query_sortedby(self):
# if not 'ordering' in self.query_params:
return None, False
# o: str = self.query_params['ordering']
# if o.startswith('-'):
# return o[1:], True
# else:
# return o, False
def __init__(self, searcher: Searcher, query_params, page_size):
self.searcher = searcher
self.query_params = query_params
self.page_size = page_size
self.saved_results = dict()
self.first_score = None
def __len__(self):
page = self[0:1]
return len(page)
def __getitem__(self, item):
if item.start in self.saved_results:
return self.saved_results[item.start]
q, mask = self._query
sortedby, reverse = self._query_sortedby
page: ResultsPage = self.searcher.search_page(
q,
mask=mask,
filter=self._query_filter,
pagenum=math.floor(item.start / self.page_size) + 1,
pagelen=self.page_size,
sortedby=sortedby,
reverse=reverse
)
page.results.fragmenter = highlight.ContextFragmenter(
surround=50) surround=50)
result_page.results.formatter = JsonFormatter() page.results.formatter = HtmlFormatter(tagname="span", between=" ... ")
if corrected and corrected.query != str_q: if not self.first_score and len(page.results) > 0:
self.first_score = page.results[0].score
if self.first_score:
page.results.top_n = list(map(
lambda hit: (hit[0] / self.first_score, hit[1]),
page.results.top_n
))
self.saved_results[item.start] = page
return page
class DelayedFullTextQuery(DelayedQuery):
@property
def _query(self):
q_str = self.query_params['query']
qp = MultifieldParser(
["content", "title", "correspondent", "tag", "type"],
self.searcher.ixreader.schema)
qp.add_plugin(DateParserPlugin())
q = qp.parse(q_str)
corrected = self.searcher.correct_query(q, q_str)
if corrected.query != q:
corrected_query = corrected.string corrected_query = corrected.string
else:
corrected_query = None
yield result_page, corrected_query return q, None
finally:
searcher.close()
class DelayedMoreLikeThisQuery(DelayedQuery):
@property
def _query(self):
more_like_doc_id = int(self.query_params['more_like_id'])
content = Document.objects.get(id=more_like_doc_id).content
docnum = self.searcher.document_number(id=more_like_doc_id)
kts = self.searcher.key_terms_from_text(
'content', content, numterms=20,
model=classify.Bo1Model, normalize=False)
q = query.Or(
[query.Term('content', word, boost=weight)
for word, weight in kts])
mask = {docnum}
return q, mask
def autocomplete(ix, term, limit=10): def autocomplete(ix, term, limit=10):

View File

@@ -0,0 +1,29 @@
# Generated by Django 3.1.7 on 2021-04-04 18:28
import logging
from django.db import migrations
logger = logging.getLogger("paperless.migrations")
def remove_null_characters(apps, schema_editor):
Document = apps.get_model('documents', 'Document')
for doc in Document.objects.all():
content: str = doc.content
if '\0' in content:
logger.info(f"Removing null characters from document {doc}...")
doc.content = content.replace('\0', ' ')
doc.save()
class Migration(migrations.Migration):
dependencies = [
('documents', '1014_auto_20210228_1614'),
]
operations = [
migrations.RunPython(remove_null_characters, migrations.RunPython.noop)
]

View File

@@ -0,0 +1,23 @@
# Generated by Django 3.1.7 on 2021-03-17 12:51
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('documents', '1015_remove_null_characters'),
]
operations = [
migrations.AlterField(
model_name='savedview',
name='sort_field',
field=models.CharField(blank=True, max_length=128, null=True, verbose_name='sort field'),
),
migrations.AlterField(
model_name='savedviewfilterrule',
name='rule_type',
field=models.PositiveIntegerField(choices=[(0, 'title contains'), (1, 'content contains'), (2, 'ASN is'), (3, 'correspondent is'), (4, 'document type is'), (5, 'is in inbox'), (6, 'has tag'), (7, 'has any tag'), (8, 'created before'), (9, 'created after'), (10, 'created year is'), (11, 'created month is'), (12, 'created day is'), (13, 'added before'), (14, 'added after'), (15, 'modified before'), (16, 'modified after'), (17, 'does not have tag'), (18, 'does not have ASN'), (19, 'title or content contains'), (20, 'fulltext query'), (21, 'more like this')], verbose_name='rule type'),
),
]

View File

@@ -359,7 +359,10 @@ class SavedView(models.Model):
sort_field = models.CharField( sort_field = models.CharField(
_("sort field"), _("sort field"),
max_length=128) max_length=128,
null=True,
blank=True
)
sort_reverse = models.BooleanField( sort_reverse = models.BooleanField(
_("sort reverse"), _("sort reverse"),
default=False) default=False)
@@ -387,6 +390,8 @@ class SavedViewFilterRule(models.Model):
(17, _("does not have tag")), (17, _("does not have tag")),
(18, _("does not have ASN")), (18, _("does not have ASN")),
(19, _("title or content contains")), (19, _("title or content contains")),
(20, _("fulltext query")),
(21, _("more like this"))
] ]
saved_view = models.ForeignKey( saved_view = models.ForeignKey(

View File

@@ -27,7 +27,7 @@ class TestDocumentAdmin(DirectoriesMixin, TestCase):
doc.title = "new title" doc.title = "new title"
self.doc_admin.save_model(None, doc, None, None) self.doc_admin.save_model(None, doc, None, None)
self.assertEqual(Document.objects.get(id=doc.id).title, "new title") self.assertEqual(Document.objects.get(id=doc.id).title, "new title")
self.assertEqual(self.get_document_from_index(doc)['title'], "new title") self.assertEqual(self.get_document_from_index(doc)['id'], doc.id)
def test_delete_model(self): def test_delete_model(self):
doc = Document.objects.create(title="test") doc = Document.objects.create(title="test")

View File

@@ -7,6 +7,7 @@ import tempfile
import zipfile import zipfile
from unittest import mock from unittest import mock
import pytest
from django.conf import settings from django.conf import settings
from django.contrib.auth.models import User from django.contrib.auth.models import User
from django.test import override_settings from django.test import override_settings
@@ -294,12 +295,6 @@ class TestDocumentApi(DirectoriesMixin, APITestCase):
results = response.data['results'] results = response.data['results']
self.assertEqual(len(results), 0) self.assertEqual(len(results), 0)
def test_search_no_query(self):
response = self.client.get("/api/search/")
results = response.data['results']
self.assertEqual(len(results), 0)
def test_search(self): def test_search(self):
d1=Document.objects.create(title="invoice", content="the thing i bought at a shop and paid with bank account", checksum="A", pk=1) d1=Document.objects.create(title="invoice", content="the thing i bought at a shop and paid with bank account", checksum="A", pk=1)
d2=Document.objects.create(title="bank statement 1", content="things i paid for in august", pk=2, checksum="B") d2=Document.objects.create(title="bank statement 1", content="things i paid for in august", pk=2, checksum="B")
@@ -311,32 +306,24 @@ class TestDocumentApi(DirectoriesMixin, APITestCase):
index.update_document(writer, d1) index.update_document(writer, d1)
index.update_document(writer, d2) index.update_document(writer, d2)
index.update_document(writer, d3) index.update_document(writer, d3)
response = self.client.get("/api/search/?query=bank") response = self.client.get("/api/documents/?query=bank")
results = response.data['results'] results = response.data['results']
self.assertEqual(response.data['count'], 3) self.assertEqual(response.data['count'], 3)
self.assertEqual(response.data['page'], 1)
self.assertEqual(response.data['page_count'], 1)
self.assertEqual(len(results), 3) self.assertEqual(len(results), 3)
response = self.client.get("/api/search/?query=september") response = self.client.get("/api/documents/?query=september")
results = response.data['results'] results = response.data['results']
self.assertEqual(response.data['count'], 1) self.assertEqual(response.data['count'], 1)
self.assertEqual(response.data['page'], 1)
self.assertEqual(response.data['page_count'], 1)
self.assertEqual(len(results), 1) self.assertEqual(len(results), 1)
response = self.client.get("/api/search/?query=statement") response = self.client.get("/api/documents/?query=statement")
results = response.data['results'] results = response.data['results']
self.assertEqual(response.data['count'], 2) self.assertEqual(response.data['count'], 2)
self.assertEqual(response.data['page'], 1)
self.assertEqual(response.data['page_count'], 1)
self.assertEqual(len(results), 2) self.assertEqual(len(results), 2)
response = self.client.get("/api/search/?query=sfegdfg") response = self.client.get("/api/documents/?query=sfegdfg")
results = response.data['results'] results = response.data['results']
self.assertEqual(response.data['count'], 0) self.assertEqual(response.data['count'], 0)
self.assertEqual(response.data['page'], 0)
self.assertEqual(response.data['page_count'], 0)
self.assertEqual(len(results), 0) self.assertEqual(len(results), 0)
def test_search_multi_page(self): def test_search_multi_page(self):
@@ -349,53 +336,34 @@ class TestDocumentApi(DirectoriesMixin, APITestCase):
seen_ids = [] seen_ids = []
for i in range(1, 6): for i in range(1, 6):
response = self.client.get(f"/api/search/?query=content&page={i}") response = self.client.get(f"/api/documents/?query=content&page={i}&page_size=10")
results = response.data['results'] results = response.data['results']
self.assertEqual(response.data['count'], 55) self.assertEqual(response.data['count'], 55)
self.assertEqual(response.data['page'], i)
self.assertEqual(response.data['page_count'], 6)
self.assertEqual(len(results), 10) self.assertEqual(len(results), 10)
for result in results: for result in results:
self.assertNotIn(result['id'], seen_ids) self.assertNotIn(result['id'], seen_ids)
seen_ids.append(result['id']) seen_ids.append(result['id'])
response = self.client.get(f"/api/search/?query=content&page=6") response = self.client.get(f"/api/documents/?query=content&page=6&page_size=10")
results = response.data['results'] results = response.data['results']
self.assertEqual(response.data['count'], 55) self.assertEqual(response.data['count'], 55)
self.assertEqual(response.data['page'], 6)
self.assertEqual(response.data['page_count'], 6)
self.assertEqual(len(results), 5) self.assertEqual(len(results), 5)
for result in results: for result in results:
self.assertNotIn(result['id'], seen_ids) self.assertNotIn(result['id'], seen_ids)
seen_ids.append(result['id']) seen_ids.append(result['id'])
response = self.client.get(f"/api/search/?query=content&page=7")
results = response.data['results']
self.assertEqual(response.data['count'], 55)
self.assertEqual(response.data['page'], 6)
self.assertEqual(response.data['page_count'], 6)
self.assertEqual(len(results), 5)
def test_search_invalid_page(self): def test_search_invalid_page(self):
with AsyncWriter(index.open_index()) as writer: with AsyncWriter(index.open_index()) as writer:
for i in range(15): for i in range(15):
doc = Document.objects.create(checksum=str(i), pk=i+1, title=f"Document {i+1}", content="content") doc = Document.objects.create(checksum=str(i), pk=i+1, title=f"Document {i+1}", content="content")
index.update_document(writer, doc) index.update_document(writer, doc)
first_page = self.client.get(f"/api/search/?query=content&page=1").data response = self.client.get(f"/api/documents/?query=content&page=0&page_size=10")
second_page = self.client.get(f"/api/search/?query=content&page=2").data self.assertEqual(response.status_code, 404)
should_be_first_page_1 = self.client.get(f"/api/search/?query=content&page=0").data response = self.client.get(f"/api/documents/?query=content&page=3&page_size=10")
should_be_first_page_2 = self.client.get(f"/api/search/?query=content&page=dgfd").data self.assertEqual(response.status_code, 404)
should_be_first_page_3 = self.client.get(f"/api/search/?query=content&page=").data
should_be_first_page_4 = self.client.get(f"/api/search/?query=content&page=-7868").data
self.assertDictEqual(first_page, should_be_first_page_1)
self.assertDictEqual(first_page, should_be_first_page_2)
self.assertDictEqual(first_page, should_be_first_page_3)
self.assertDictEqual(first_page, should_be_first_page_4)
self.assertNotEqual(len(first_page['results']), len(second_page['results']))
@mock.patch("documents.index.autocomplete") @mock.patch("documents.index.autocomplete")
def test_search_autocomplete(self, m): def test_search_autocomplete(self, m):
@@ -419,6 +387,7 @@ class TestDocumentApi(DirectoriesMixin, APITestCase):
self.assertEqual(response.status_code, 200) self.assertEqual(response.status_code, 200)
self.assertEqual(len(response.data), 10) self.assertEqual(len(response.data), 10)
@pytest.mark.skip(reason="Not implemented yet")
def test_search_spelling_correction(self): def test_search_spelling_correction(self):
with AsyncWriter(index.open_index()) as writer: with AsyncWriter(index.open_index()) as writer:
for i in range(55): for i in range(55):
@@ -444,7 +413,7 @@ class TestDocumentApi(DirectoriesMixin, APITestCase):
index.update_document(writer, d2) index.update_document(writer, d2)
index.update_document(writer, d3) index.update_document(writer, d3)
response = self.client.get(f"/api/search/?more_like={d2.id}") response = self.client.get(f"/api/documents/?more_like_id={d2.id}")
self.assertEqual(response.status_code, 200) self.assertEqual(response.status_code, 200)
@@ -454,6 +423,54 @@ class TestDocumentApi(DirectoriesMixin, APITestCase):
self.assertEqual(results[0]['id'], d3.id) self.assertEqual(results[0]['id'], d3.id)
self.assertEqual(results[1]['id'], d1.id) self.assertEqual(results[1]['id'], d1.id)
def test_search_filtering(self):
t = Tag.objects.create(name="tag")
t2 = Tag.objects.create(name="tag2")
c = Correspondent.objects.create(name="correspondent")
dt = DocumentType.objects.create(name="type")
d1 = Document.objects.create(checksum="1", correspondent=c, content="test")
d2 = Document.objects.create(checksum="2", document_type=dt, content="test")
d3 = Document.objects.create(checksum="3", content="test")
d3.tags.add(t)
d3.tags.add(t2)
d4 = Document.objects.create(checksum="4", created=datetime.datetime(2020, 7, 13), content="test")
d4.tags.add(t2)
d5 = Document.objects.create(checksum="5", added=datetime.datetime(2020, 7, 13), content="test")
d6 = Document.objects.create(checksum="6", content="test2")
with AsyncWriter(index.open_index()) as writer:
for doc in Document.objects.all():
index.update_document(writer, doc)
def search_query(q):
r = self.client.get("/api/documents/?query=test" + q)
self.assertEqual(r.status_code, 200)
return [hit['id'] for hit in r.data['results']]
self.assertCountEqual(search_query(""), [d1.id, d2.id, d3.id, d4.id, d5.id])
self.assertCountEqual(search_query("&is_tagged=true"), [d3.id, d4.id])
self.assertCountEqual(search_query("&is_tagged=false"), [d1.id, d2.id, d5.id])
self.assertCountEqual(search_query("&correspondent__id=" + str(c.id)), [d1.id])
self.assertCountEqual(search_query("&document_type__id=" + str(dt.id)), [d2.id])
self.assertCountEqual(search_query("&correspondent__isnull"), [d2.id, d3.id, d4.id, d5.id])
self.assertCountEqual(search_query("&document_type__isnull"), [d1.id, d3.id, d4.id, d5.id])
self.assertCountEqual(search_query("&tags__id__all=" + str(t.id) + "," + str(t2.id)), [d3.id])
self.assertCountEqual(search_query("&tags__id__all=" + str(t.id)), [d3.id])
self.assertCountEqual(search_query("&tags__id__all=" + str(t2.id)), [d3.id, d4.id])
self.assertIn(d4.id, search_query("&created__date__lt=" + datetime.datetime(2020, 9, 2).strftime("%Y-%m-%d")))
self.assertNotIn(d4.id, search_query("&created__date__gt=" + datetime.datetime(2020, 9, 2).strftime("%Y-%m-%d")))
self.assertNotIn(d4.id, search_query("&created__date__lt=" + datetime.datetime(2020, 1, 2).strftime("%Y-%m-%d")))
self.assertIn(d4.id, search_query("&created__date__gt=" + datetime.datetime(2020, 1, 2).strftime("%Y-%m-%d")))
self.assertIn(d5.id, search_query("&added__date__lt=" + datetime.datetime(2020, 9, 2).strftime("%Y-%m-%d")))
self.assertNotIn(d5.id, search_query("&added__date__gt=" + datetime.datetime(2020, 9, 2).strftime("%Y-%m-%d")))
self.assertNotIn(d5.id, search_query("&added__date__lt=" + datetime.datetime(2020, 1, 2).strftime("%Y-%m-%d")))
self.assertIn(d5.id, search_query("&added__date__gt=" + datetime.datetime(2020, 1, 2).strftime("%Y-%m-%d")))
def test_statistics(self): def test_statistics(self):
doc1 = Document.objects.create(title="none1", checksum="A") doc1 = Document.objects.create(title="none1", checksum="A")
@@ -1375,8 +1392,7 @@ class TestApiAuth(APITestCase):
self.assertEqual(self.client.get("/api/logs/").status_code, 401) self.assertEqual(self.client.get("/api/logs/").status_code, 401)
self.assertEqual(self.client.get("/api/saved_views/").status_code, 401) self.assertEqual(self.client.get("/api/saved_views/").status_code, 401)
self.assertEqual(self.client.get("/api/search/").status_code, 401) self.assertEqual(self.client.get("/api/search/autocomplete/").status_code, 401)
self.assertEqual(self.client.get("/api/search/auto_complete/").status_code, 401)
self.assertEqual(self.client.get("/api/documents/bulk_edit/").status_code, 401) self.assertEqual(self.client.get("/api/documents/bulk_edit/").status_code, 401)
self.assertEqual(self.client.get("/api/documents/bulk_download/").status_code, 401) self.assertEqual(self.client.get("/api/documents/bulk_download/").status_code, 401)
self.assertEqual(self.client.get("/api/documents/selection_data/").status_code, 401) self.assertEqual(self.client.get("/api/documents/selection_data/").status_code, 401)

View File

@@ -1,20 +1,10 @@
from django.test import TestCase from django.test import TestCase
from documents import index from documents import index
from documents.index import JsonFormatter
from documents.models import Document from documents.models import Document
from documents.tests.utils import DirectoriesMixin from documents.tests.utils import DirectoriesMixin
class JsonFormatterTest(TestCase):
def setUp(self) -> None:
self.formatter = JsonFormatter()
def test_empty_fragments(self):
self.assertListEqual(self.formatter.format([]), [])
class TestAutoComplete(DirectoriesMixin, TestCase): class TestAutoComplete(DirectoriesMixin, TestCase):
def test_auto_complete(self): def test_auto_complete(self):

View File

@@ -0,0 +1,15 @@
from documents.tests.utils import DirectoriesMixin, TestMigrations
class TestMigrateNullCharacters(DirectoriesMixin, TestMigrations):
migrate_from = '1014_auto_20210228_1614'
migrate_to = '1015_remove_null_characters'
def setUpBeforeMigration(self, apps):
Document = apps.get_model("documents", "Document")
self.doc = Document.objects.create(content="aaa\0bbb")
def testMimeTypesMigrated(self):
Document = self.apps.get_model('documents', 'Document')
self.assertNotIn("\0", Document.objects.get(id=self.doc.id).content)

View File

@@ -17,6 +17,7 @@ from django_filters.rest_framework import DjangoFilterBackend
from django_q.tasks import async_task from django_q.tasks import async_task
from rest_framework import parsers from rest_framework import parsers
from rest_framework.decorators import action from rest_framework.decorators import action
from rest_framework.exceptions import NotFound
from rest_framework.filters import OrderingFilter, SearchFilter from rest_framework.filters import OrderingFilter, SearchFilter
from rest_framework.generics import GenericAPIView from rest_framework.generics import GenericAPIView
from rest_framework.mixins import ( from rest_framework.mixins import (
@@ -327,6 +328,70 @@ class DocumentViewSet(RetrieveModelMixin,
raise Http404() raise Http404()
class SearchResultSerializer(DocumentSerializer):
def to_representation(self, instance):
doc = Document.objects.get(id=instance['id'])
r = super(SearchResultSerializer, self).to_representation(doc)
r['__search_hit__'] = {
"score": instance.score,
"highlights": instance.highlights("content",
text=doc.content) if doc else None, # NOQA: E501
"rank": instance.rank
}
return r
class UnifiedSearchViewSet(DocumentViewSet):
def __init__(self, *args, **kwargs):
super(UnifiedSearchViewSet, self).__init__(*args, **kwargs)
self.searcher = None
def get_serializer_class(self):
if self._is_search_request():
return SearchResultSerializer
else:
return DocumentSerializer
def _is_search_request(self):
return ("query" in self.request.query_params or
"more_like_id" in self.request.query_params)
def filter_queryset(self, queryset):
if self._is_search_request():
from documents import index
if "query" in self.request.query_params:
query_class = index.DelayedFullTextQuery
elif "more_like_id" in self.request.query_params:
query_class = index.DelayedMoreLikeThisQuery
else:
raise ValueError()
return query_class(
self.searcher,
self.request.query_params,
self.paginator.get_page_size(self.request))
else:
return super(UnifiedSearchViewSet, self).filter_queryset(queryset)
def list(self, request, *args, **kwargs):
if self._is_search_request():
from documents import index
try:
with index.open_index_searcher() as s:
self.searcher = s
return super(UnifiedSearchViewSet, self).list(request)
except NotFound:
raise
except Exception as e:
return HttpResponseBadRequest(str(e))
else:
return super(UnifiedSearchViewSet, self).list(request)
class LogViewSet(ViewSet): class LogViewSet(ViewSet):
permission_classes = (IsAuthenticated,) permission_classes = (IsAuthenticated,)
@@ -478,74 +543,6 @@ class SelectionDataView(GenericAPIView):
return r return r
class SearchView(APIView):
permission_classes = (IsAuthenticated,)
def add_infos_to_hit(self, r):
try:
doc = Document.objects.get(id=r['id'])
except Document.DoesNotExist:
logger.warning(
f"Search index returned a non-existing document: "
f"id: {r['id']}, title: {r['title']}. "
f"Search index needs reindex."
)
doc = None
return {'id': r['id'],
'highlights': r.highlights("content", text=doc.content) if doc else None, # NOQA: E501
'score': r.score,
'rank': r.rank,
'document': DocumentSerializer(doc).data if doc else None,
'title': r['title']
}
def get(self, request, format=None):
from documents import index
if 'query' in request.query_params:
query = request.query_params['query']
else:
query = None
if 'more_like' in request.query_params:
more_like_id = request.query_params['more_like']
more_like_content = Document.objects.get(id=more_like_id).content
else:
more_like_id = None
more_like_content = None
if not query and not more_like_id:
return Response({
'count': 0,
'page': 0,
'page_count': 0,
'corrected_query': None,
'results': []})
try:
page = int(request.query_params.get('page', 1))
except (ValueError, TypeError):
page = 1
if page < 1:
page = 1
ix = index.open_index()
try:
with index.query_page(ix, page, query, more_like_id, more_like_content) as (result_page, corrected_query): # NOQA: E501
return Response(
{'count': len(result_page),
'page': result_page.pagenum,
'page_count': result_page.pagecount,
'corrected_query': corrected_query,
'results': list(map(self.add_infos_to_hit, result_page))})
except Exception as e:
return HttpResponseBadRequest(str(e))
class SearchAutoCompleteView(APIView): class SearchAutoCompleteView(APIView):
permission_classes = (IsAuthenticated,) permission_classes = (IsAuthenticated,)

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: paperless-ng\n" "Project-Id-Version: paperless-ng\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-03-17 22:31+0100\n" "POT-Creation-Date: 2021-04-05 22:05+0200\n"
"PO-Revision-Date: 2021-03-17 21:47\n" "PO-Revision-Date: 2021-04-05 20:20\n"
"Last-Translator: \n" "Last-Translator: \n"
"Language-Team: Czech\n" "Language-Team: Czech\n"
"Language: cs_CZ\n" "Language: cs_CZ\n"
@@ -226,7 +226,7 @@ msgstr "záznam"
msgid "logs" msgid "logs"
msgstr "záznamy" msgstr "záznamy"
#: documents/models.py:344 documents/models.py:396 #: documents/models.py:344 documents/models.py:401
msgid "saved view" msgid "saved view"
msgstr "uložený pohled" msgstr "uložený pohled"
@@ -250,103 +250,111 @@ msgstr "zobrazit v postranním menu"
msgid "sort field" msgid "sort field"
msgstr "pole na řazení" msgstr "pole na řazení"
#: documents/models.py:364 #: documents/models.py:367
msgid "sort reverse" msgid "sort reverse"
msgstr "třídit opačně" msgstr "třídit opačně"
#: documents/models.py:370 #: documents/models.py:373
msgid "title contains" msgid "title contains"
msgstr "titulek obsahuje" msgstr "titulek obsahuje"
#: documents/models.py:371 #: documents/models.py:374
msgid "content contains" msgid "content contains"
msgstr "obsah obsahuje" msgstr "obsah obsahuje"
#: documents/models.py:372 #: documents/models.py:375
msgid "ASN is" msgid "ASN is"
msgstr "ASN je" msgstr "ASN je"
#: documents/models.py:373 #: documents/models.py:376
msgid "correspondent is" msgid "correspondent is"
msgstr "korespondent je" msgstr "korespondent je"
#: documents/models.py:374 #: documents/models.py:377
msgid "document type is" msgid "document type is"
msgstr "typ dokumentu je" msgstr "typ dokumentu je"
#: documents/models.py:375 #: documents/models.py:378
msgid "is in inbox" msgid "is in inbox"
msgstr "je v příchozích" msgstr "je v příchozích"
#: documents/models.py:376 #: documents/models.py:379
msgid "has tag" msgid "has tag"
msgstr "má tag" msgstr "má tag"
#: documents/models.py:377 #: documents/models.py:380
msgid "has any tag" msgid "has any tag"
msgstr "má jakýkoliv tag" msgstr "má jakýkoliv tag"
#: documents/models.py:378 #: documents/models.py:381
msgid "created before" msgid "created before"
msgstr "vytvořeno před" msgstr "vytvořeno před"
#: documents/models.py:379 #: documents/models.py:382
msgid "created after" msgid "created after"
msgstr "vytvořeno po" msgstr "vytvořeno po"
#: documents/models.py:380 #: documents/models.py:383
msgid "created year is" msgid "created year is"
msgstr "rok vytvoření je" msgstr "rok vytvoření je"
#: documents/models.py:381 #: documents/models.py:384
msgid "created month is" msgid "created month is"
msgstr "měsíc vytvoření je" msgstr "měsíc vytvoření je"
#: documents/models.py:382 #: documents/models.py:385
msgid "created day is" msgid "created day is"
msgstr "den vytvoření je" msgstr "den vytvoření je"
#: documents/models.py:383 #: documents/models.py:386
msgid "added before" msgid "added before"
msgstr "přidáno před" msgstr "přidáno před"
#: documents/models.py:384 #: documents/models.py:387
msgid "added after" msgid "added after"
msgstr "přidáno po" msgstr "přidáno po"
#: documents/models.py:385 #: documents/models.py:388
msgid "modified before" msgid "modified before"
msgstr "upraveno před" msgstr "upraveno před"
#: documents/models.py:386 #: documents/models.py:389
msgid "modified after" msgid "modified after"
msgstr "upraveno po" msgstr "upraveno po"
#: documents/models.py:387 #: documents/models.py:390
msgid "does not have tag" msgid "does not have tag"
msgstr "nemá tag" msgstr "nemá tag"
#: documents/models.py:388 #: documents/models.py:391
msgid "does not have ASN" msgid "does not have ASN"
msgstr "" msgstr ""
#: documents/models.py:389 #: documents/models.py:392
msgid "title or content contains" msgid "title or content contains"
msgstr "" msgstr ""
#: documents/models.py:400 #: documents/models.py:393
msgid "fulltext query"
msgstr ""
#: documents/models.py:394
msgid "more like this"
msgstr ""
#: documents/models.py:405
msgid "rule type" msgid "rule type"
msgstr "typ pravidla" msgstr "typ pravidla"
#: documents/models.py:404 #: documents/models.py:409
msgid "value" msgid "value"
msgstr "hodnota" msgstr "hodnota"
#: documents/models.py:410 #: documents/models.py:415
msgid "filter rule" msgid "filter rule"
msgstr "filtrovací pravidlo" msgstr "filtrovací pravidlo"
#: documents/models.py:411 #: documents/models.py:416
msgid "filter rules" msgid "filter rules"
msgstr "filtrovací pravidla" msgstr "filtrovací pravidla"
@@ -448,7 +456,7 @@ msgstr ""
msgid "Spanish" msgid "Spanish"
msgstr "" msgstr ""
#: paperless/urls.py:118 #: paperless/urls.py:113
msgid "Paperless-ng administration" msgid "Paperless-ng administration"
msgstr "Správa Paperless-ng" msgstr "Správa Paperless-ng"

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: paperless-ng\n" "Project-Id-Version: paperless-ng\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-03-17 22:31+0100\n" "POT-Creation-Date: 2021-04-05 22:05+0200\n"
"PO-Revision-Date: 2021-03-18 13:43\n" "PO-Revision-Date: 2021-04-05 20:20\n"
"Last-Translator: \n" "Last-Translator: \n"
"Language-Team: German\n" "Language-Team: German\n"
"Language: de_DE\n" "Language: de_DE\n"
@@ -226,7 +226,7 @@ msgstr "Protokoll"
msgid "logs" msgid "logs"
msgstr "Protokoll" msgstr "Protokoll"
#: documents/models.py:344 documents/models.py:396 #: documents/models.py:344 documents/models.py:401
msgid "saved view" msgid "saved view"
msgstr "Gespeicherte Ansicht" msgstr "Gespeicherte Ansicht"
@@ -250,103 +250,111 @@ msgstr "In Seitenleiste zeigen"
msgid "sort field" msgid "sort field"
msgstr "Sortierfeld" msgstr "Sortierfeld"
#: documents/models.py:364 #: documents/models.py:367
msgid "sort reverse" msgid "sort reverse"
msgstr "Umgekehrte Sortierung" msgstr "Umgekehrte Sortierung"
#: documents/models.py:370 #: documents/models.py:373
msgid "title contains" msgid "title contains"
msgstr "Titel enthält" msgstr "Titel enthält"
#: documents/models.py:371 #: documents/models.py:374
msgid "content contains" msgid "content contains"
msgstr "Inhalt enthält" msgstr "Inhalt enthält"
#: documents/models.py:372 #: documents/models.py:375
msgid "ASN is" msgid "ASN is"
msgstr "ASN ist" msgstr "ASN ist"
#: documents/models.py:373 #: documents/models.py:376
msgid "correspondent is" msgid "correspondent is"
msgstr "Korrespondent ist" msgstr "Korrespondent ist"
#: documents/models.py:374 #: documents/models.py:377
msgid "document type is" msgid "document type is"
msgstr "Dokumenttyp ist" msgstr "Dokumenttyp ist"
#: documents/models.py:375 #: documents/models.py:378
msgid "is in inbox" msgid "is in inbox"
msgstr "Ist im Posteingang" msgstr "Ist im Posteingang"
#: documents/models.py:376 #: documents/models.py:379
msgid "has tag" msgid "has tag"
msgstr "Hat Tag" msgstr "Hat Tag"
#: documents/models.py:377 #: documents/models.py:380
msgid "has any tag" msgid "has any tag"
msgstr "Hat irgendein Tag" msgstr "Hat irgendein Tag"
#: documents/models.py:378 #: documents/models.py:381
msgid "created before" msgid "created before"
msgstr "Ausgestellt vor" msgstr "Ausgestellt vor"
#: documents/models.py:379 #: documents/models.py:382
msgid "created after" msgid "created after"
msgstr "Ausgestellt nach" msgstr "Ausgestellt nach"
#: documents/models.py:380 #: documents/models.py:383
msgid "created year is" msgid "created year is"
msgstr "Ausgestellt im Jahr" msgstr "Ausgestellt im Jahr"
#: documents/models.py:381 #: documents/models.py:384
msgid "created month is" msgid "created month is"
msgstr "Ausgestellt im Monat" msgstr "Ausgestellt im Monat"
#: documents/models.py:382 #: documents/models.py:385
msgid "created day is" msgid "created day is"
msgstr "Ausgestellt am Tag" msgstr "Ausgestellt am Tag"
#: documents/models.py:383 #: documents/models.py:386
msgid "added before" msgid "added before"
msgstr "Hinzugefügt vor" msgstr "Hinzugefügt vor"
#: documents/models.py:384 #: documents/models.py:387
msgid "added after" msgid "added after"
msgstr "Hinzugefügt nach" msgstr "Hinzugefügt nach"
#: documents/models.py:385 #: documents/models.py:388
msgid "modified before" msgid "modified before"
msgstr "Geändert vor" msgstr "Geändert vor"
#: documents/models.py:386 #: documents/models.py:389
msgid "modified after" msgid "modified after"
msgstr "Geändert nach" msgstr "Geändert nach"
#: documents/models.py:387 #: documents/models.py:390
msgid "does not have tag" msgid "does not have tag"
msgstr "Hat nicht folgendes Tag" msgstr "Hat nicht folgendes Tag"
#: documents/models.py:388 #: documents/models.py:391
msgid "does not have ASN" msgid "does not have ASN"
msgstr "Dokument hat keine ASN" msgstr "Dokument hat keine ASN"
#: documents/models.py:389 #: documents/models.py:392
msgid "title or content contains" msgid "title or content contains"
msgstr "Titel oder Inhalt enthält" msgstr "Titel oder Inhalt enthält"
#: documents/models.py:400 #: documents/models.py:393
msgid "fulltext query"
msgstr ""
#: documents/models.py:394
msgid "more like this"
msgstr ""
#: documents/models.py:405
msgid "rule type" msgid "rule type"
msgstr "Regeltyp" msgstr "Regeltyp"
#: documents/models.py:404 #: documents/models.py:409
msgid "value" msgid "value"
msgstr "Wert" msgstr "Wert"
#: documents/models.py:410 #: documents/models.py:415
msgid "filter rule" msgid "filter rule"
msgstr "Filterregel" msgstr "Filterregel"
#: documents/models.py:411 #: documents/models.py:416
msgid "filter rules" msgid "filter rules"
msgstr "Filterregeln" msgstr "Filterregeln"
@@ -448,7 +456,7 @@ msgstr "Russisch"
msgid "Spanish" msgid "Spanish"
msgstr "Spanisch" msgstr "Spanisch"
#: paperless/urls.py:118 #: paperless/urls.py:113
msgid "Paperless-ng administration" msgid "Paperless-ng administration"
msgstr "Paperless-ng Administration" msgstr "Paperless-ng Administration"

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: paperless-ng\n" "Project-Id-Version: paperless-ng\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-03-17 22:31+0100\n" "POT-Creation-Date: 2021-04-05 22:05+0200\n"
"PO-Revision-Date: 2021-03-17 22:42\n" "PO-Revision-Date: 2021-04-05 20:20\n"
"Last-Translator: \n" "Last-Translator: \n"
"Language-Team: English, United Kingdom\n" "Language-Team: English, United Kingdom\n"
"Language: en_GB\n" "Language: en_GB\n"
@@ -226,7 +226,7 @@ msgstr "log"
msgid "logs" msgid "logs"
msgstr "logs" msgstr "logs"
#: documents/models.py:344 documents/models.py:396 #: documents/models.py:344 documents/models.py:401
msgid "saved view" msgid "saved view"
msgstr "saved view" msgstr "saved view"
@@ -250,103 +250,111 @@ msgstr "show in sidebar"
msgid "sort field" msgid "sort field"
msgstr "sort field" msgstr "sort field"
#: documents/models.py:364 #: documents/models.py:367
msgid "sort reverse" msgid "sort reverse"
msgstr "sort reverse" msgstr "sort reverse"
#: documents/models.py:370 #: documents/models.py:373
msgid "title contains" msgid "title contains"
msgstr "title contains" msgstr "title contains"
#: documents/models.py:371 #: documents/models.py:374
msgid "content contains" msgid "content contains"
msgstr "content contains" msgstr "content contains"
#: documents/models.py:372 #: documents/models.py:375
msgid "ASN is" msgid "ASN is"
msgstr "ASN is" msgstr "ASN is"
#: documents/models.py:373 #: documents/models.py:376
msgid "correspondent is" msgid "correspondent is"
msgstr "correspondent is" msgstr "correspondent is"
#: documents/models.py:374 #: documents/models.py:377
msgid "document type is" msgid "document type is"
msgstr "document type is" msgstr "document type is"
#: documents/models.py:375 #: documents/models.py:378
msgid "is in inbox" msgid "is in inbox"
msgstr "is in inbox" msgstr "is in inbox"
#: documents/models.py:376 #: documents/models.py:379
msgid "has tag" msgid "has tag"
msgstr "has tag" msgstr "has tag"
#: documents/models.py:377 #: documents/models.py:380
msgid "has any tag" msgid "has any tag"
msgstr "has any tag" msgstr "has any tag"
#: documents/models.py:378 #: documents/models.py:381
msgid "created before" msgid "created before"
msgstr "created before" msgstr "created before"
#: documents/models.py:379 #: documents/models.py:382
msgid "created after" msgid "created after"
msgstr "created after" msgstr "created after"
#: documents/models.py:380 #: documents/models.py:383
msgid "created year is" msgid "created year is"
msgstr "created year is" msgstr "created year is"
#: documents/models.py:381 #: documents/models.py:384
msgid "created month is" msgid "created month is"
msgstr "created month is" msgstr "created month is"
#: documents/models.py:382 #: documents/models.py:385
msgid "created day is" msgid "created day is"
msgstr "created day is" msgstr "created day is"
#: documents/models.py:383 #: documents/models.py:386
msgid "added before" msgid "added before"
msgstr "added before" msgstr "added before"
#: documents/models.py:384 #: documents/models.py:387
msgid "added after" msgid "added after"
msgstr "added after" msgstr "added after"
#: documents/models.py:385 #: documents/models.py:388
msgid "modified before" msgid "modified before"
msgstr "modified before" msgstr "modified before"
#: documents/models.py:386 #: documents/models.py:389
msgid "modified after" msgid "modified after"
msgstr "modified after" msgstr "modified after"
#: documents/models.py:387 #: documents/models.py:390
msgid "does not have tag" msgid "does not have tag"
msgstr "does not have tag" msgstr "does not have tag"
#: documents/models.py:388 #: documents/models.py:391
msgid "does not have ASN" msgid "does not have ASN"
msgstr "does not have ASN" msgstr "does not have ASN"
#: documents/models.py:389 #: documents/models.py:392
msgid "title or content contains" msgid "title or content contains"
msgstr "title or content contains" msgstr "title or content contains"
#: documents/models.py:400 #: documents/models.py:393
msgid "fulltext query"
msgstr ""
#: documents/models.py:394
msgid "more like this"
msgstr ""
#: documents/models.py:405
msgid "rule type" msgid "rule type"
msgstr "rule type" msgstr "rule type"
#: documents/models.py:404 #: documents/models.py:409
msgid "value" msgid "value"
msgstr "value" msgstr "value"
#: documents/models.py:410 #: documents/models.py:415
msgid "filter rule" msgid "filter rule"
msgstr "filter rule" msgstr "filter rule"
#: documents/models.py:411 #: documents/models.py:416
msgid "filter rules" msgid "filter rules"
msgstr "filter rules" msgstr "filter rules"
@@ -448,7 +456,7 @@ msgstr "Russian"
msgid "Spanish" msgid "Spanish"
msgstr "Spanish" msgstr "Spanish"
#: paperless/urls.py:118 #: paperless/urls.py:113
msgid "Paperless-ng administration" msgid "Paperless-ng administration"
msgstr "Paperless-ng administration" msgstr "Paperless-ng administration"

View File

@@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-03-17 22:31+0100\n" "POT-Creation-Date: 2021-04-05 22:05+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -230,7 +230,7 @@ msgstr ""
msgid "logs" msgid "logs"
msgstr "" msgstr ""
#: documents/models.py:344 documents/models.py:396 #: documents/models.py:344 documents/models.py:401
msgid "saved view" msgid "saved view"
msgstr "" msgstr ""
@@ -254,103 +254,111 @@ msgstr ""
msgid "sort field" msgid "sort field"
msgstr "" msgstr ""
#: documents/models.py:364 #: documents/models.py:367
msgid "sort reverse" msgid "sort reverse"
msgstr "" msgstr ""
#: documents/models.py:370 #: documents/models.py:373
msgid "title contains" msgid "title contains"
msgstr "" msgstr ""
#: documents/models.py:371 #: documents/models.py:374
msgid "content contains" msgid "content contains"
msgstr "" msgstr ""
#: documents/models.py:372 #: documents/models.py:375
msgid "ASN is" msgid "ASN is"
msgstr "" msgstr ""
#: documents/models.py:373 #: documents/models.py:376
msgid "correspondent is" msgid "correspondent is"
msgstr "" msgstr ""
#: documents/models.py:374 #: documents/models.py:377
msgid "document type is" msgid "document type is"
msgstr "" msgstr ""
#: documents/models.py:375 #: documents/models.py:378
msgid "is in inbox" msgid "is in inbox"
msgstr "" msgstr ""
#: documents/models.py:376 #: documents/models.py:379
msgid "has tag" msgid "has tag"
msgstr "" msgstr ""
#: documents/models.py:377 #: documents/models.py:380
msgid "has any tag" msgid "has any tag"
msgstr "" msgstr ""
#: documents/models.py:378 #: documents/models.py:381
msgid "created before" msgid "created before"
msgstr "" msgstr ""
#: documents/models.py:379 #: documents/models.py:382
msgid "created after" msgid "created after"
msgstr "" msgstr ""
#: documents/models.py:380 #: documents/models.py:383
msgid "created year is" msgid "created year is"
msgstr "" msgstr ""
#: documents/models.py:381 #: documents/models.py:384
msgid "created month is" msgid "created month is"
msgstr "" msgstr ""
#: documents/models.py:382 #: documents/models.py:385
msgid "created day is" msgid "created day is"
msgstr "" msgstr ""
#: documents/models.py:383 #: documents/models.py:386
msgid "added before" msgid "added before"
msgstr "" msgstr ""
#: documents/models.py:384 #: documents/models.py:387
msgid "added after" msgid "added after"
msgstr "" msgstr ""
#: documents/models.py:385 #: documents/models.py:388
msgid "modified before" msgid "modified before"
msgstr "" msgstr ""
#: documents/models.py:386 #: documents/models.py:389
msgid "modified after" msgid "modified after"
msgstr "" msgstr ""
#: documents/models.py:387 #: documents/models.py:390
msgid "does not have tag" msgid "does not have tag"
msgstr "" msgstr ""
#: documents/models.py:388 #: documents/models.py:391
msgid "does not have ASN" msgid "does not have ASN"
msgstr "" msgstr ""
#: documents/models.py:389 #: documents/models.py:392
msgid "title or content contains" msgid "title or content contains"
msgstr "" msgstr ""
#: documents/models.py:400 #: documents/models.py:393
msgid "fulltext query"
msgstr ""
#: documents/models.py:394
msgid "more like this"
msgstr ""
#: documents/models.py:405
msgid "rule type" msgid "rule type"
msgstr "" msgstr ""
#: documents/models.py:404 #: documents/models.py:409
msgid "value" msgid "value"
msgstr "" msgstr ""
#: documents/models.py:410 #: documents/models.py:415
msgid "filter rule" msgid "filter rule"
msgstr "" msgstr ""
#: documents/models.py:411 #: documents/models.py:416
msgid "filter rules" msgid "filter rules"
msgstr "" msgstr ""
@@ -452,7 +460,7 @@ msgstr ""
msgid "Spanish" msgid "Spanish"
msgstr "" msgstr ""
#: paperless/urls.py:118 #: paperless/urls.py:113
msgid "Paperless-ng administration" msgid "Paperless-ng administration"
msgstr "" msgstr ""

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: paperless-ng\n" "Project-Id-Version: paperless-ng\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-03-17 22:31+0100\n" "POT-Creation-Date: 2021-04-05 22:05+0200\n"
"PO-Revision-Date: 2021-03-17 21:47\n" "PO-Revision-Date: 2021-04-05 20:20\n"
"Last-Translator: \n" "Last-Translator: \n"
"Language-Team: Spanish\n" "Language-Team: Spanish\n"
"Language: es_ES\n" "Language: es_ES\n"
@@ -226,7 +226,7 @@ msgstr "log"
msgid "logs" msgid "logs"
msgstr "logs" msgstr "logs"
#: documents/models.py:344 documents/models.py:396 #: documents/models.py:344 documents/models.py:401
msgid "saved view" msgid "saved view"
msgstr "vista guardada" msgstr "vista guardada"
@@ -250,103 +250,111 @@ msgstr "mostrar en barra lateral"
msgid "sort field" msgid "sort field"
msgstr "campo de ordenación" msgstr "campo de ordenación"
#: documents/models.py:364 #: documents/models.py:367
msgid "sort reverse" msgid "sort reverse"
msgstr "ordenar al revés" msgstr "ordenar al revés"
#: documents/models.py:370 #: documents/models.py:373
msgid "title contains" msgid "title contains"
msgstr "el titulo contiene" msgstr "el titulo contiene"
#: documents/models.py:371 #: documents/models.py:374
msgid "content contains" msgid "content contains"
msgstr "el contenido contiene" msgstr "el contenido contiene"
#: documents/models.py:372 #: documents/models.py:375
msgid "ASN is" msgid "ASN is"
msgstr "ASN es" msgstr "ASN es"
#: documents/models.py:373 #: documents/models.py:376
msgid "correspondent is" msgid "correspondent is"
msgstr "tipo de documento es" msgstr "tipo de documento es"
#: documents/models.py:374 #: documents/models.py:377
msgid "document type is" msgid "document type is"
msgstr "el tipo de documento es" msgstr "el tipo de documento es"
#: documents/models.py:375 #: documents/models.py:378
msgid "is in inbox" msgid "is in inbox"
msgstr "está en la bandeja de entrada" msgstr "está en la bandeja de entrada"
#: documents/models.py:376 #: documents/models.py:379
msgid "has tag" msgid "has tag"
msgstr "tiene la etiqueta" msgstr "tiene la etiqueta"
#: documents/models.py:377 #: documents/models.py:380
msgid "has any tag" msgid "has any tag"
msgstr "tiene cualquier etiqueta" msgstr "tiene cualquier etiqueta"
#: documents/models.py:378 #: documents/models.py:381
msgid "created before" msgid "created before"
msgstr "creado antes" msgstr "creado antes"
#: documents/models.py:379 #: documents/models.py:382
msgid "created after" msgid "created after"
msgstr "creado después" msgstr "creado después"
#: documents/models.py:380 #: documents/models.py:383
msgid "created year is" msgid "created year is"
msgstr "el año de creación es" msgstr "el año de creación es"
#: documents/models.py:381 #: documents/models.py:384
msgid "created month is" msgid "created month is"
msgstr "el mes de creación es" msgstr "el mes de creación es"
#: documents/models.py:382 #: documents/models.py:385
msgid "created day is" msgid "created day is"
msgstr "creado el día" msgstr "creado el día"
#: documents/models.py:383 #: documents/models.py:386
msgid "added before" msgid "added before"
msgstr "agregado antes de" msgstr "agregado antes de"
#: documents/models.py:384 #: documents/models.py:387
msgid "added after" msgid "added after"
msgstr "agregado después de" msgstr "agregado después de"
#: documents/models.py:385 #: documents/models.py:388
msgid "modified before" msgid "modified before"
msgstr "modificado después de" msgstr "modificado después de"
#: documents/models.py:386 #: documents/models.py:389
msgid "modified after" msgid "modified after"
msgstr "modificado antes de" msgstr "modificado antes de"
#: documents/models.py:387 #: documents/models.py:390
msgid "does not have tag" msgid "does not have tag"
msgstr "no tiene la etiqueta" msgstr "no tiene la etiqueta"
#: documents/models.py:388 #: documents/models.py:391
msgid "does not have ASN" msgid "does not have ASN"
msgstr "no tiene ASN" msgstr "no tiene ASN"
#: documents/models.py:389 #: documents/models.py:392
msgid "title or content contains" msgid "title or content contains"
msgstr "el título o cuerpo contiene" msgstr "el título o cuerpo contiene"
#: documents/models.py:400 #: documents/models.py:393
msgid "fulltext query"
msgstr ""
#: documents/models.py:394
msgid "more like this"
msgstr ""
#: documents/models.py:405
msgid "rule type" msgid "rule type"
msgstr "tipo de regla" msgstr "tipo de regla"
#: documents/models.py:404 #: documents/models.py:409
msgid "value" msgid "value"
msgstr "valor" msgstr "valor"
#: documents/models.py:410 #: documents/models.py:415
msgid "filter rule" msgid "filter rule"
msgstr "regla de filtrado" msgstr "regla de filtrado"
#: documents/models.py:411 #: documents/models.py:416
msgid "filter rules" msgid "filter rules"
msgstr "reglas de filtrado" msgstr "reglas de filtrado"
@@ -448,7 +456,7 @@ msgstr "Ruso"
msgid "Spanish" msgid "Spanish"
msgstr "Español" msgstr "Español"
#: paperless/urls.py:118 #: paperless/urls.py:113
msgid "Paperless-ng administration" msgid "Paperless-ng administration"
msgstr "Paperless-ng Administración" msgstr "Paperless-ng Administración"

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: paperless-ng\n" "Project-Id-Version: paperless-ng\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-03-17 22:31+0100\n" "POT-Creation-Date: 2021-04-05 22:05+0200\n"
"PO-Revision-Date: 2021-03-18 07:48\n" "PO-Revision-Date: 2021-04-06 12:03\n"
"Last-Translator: \n" "Last-Translator: \n"
"Language-Team: French\n" "Language-Team: French\n"
"Language: fr_FR\n" "Language: fr_FR\n"
@@ -226,7 +226,7 @@ msgstr "journal"
msgid "logs" msgid "logs"
msgstr "journaux" msgstr "journaux"
#: documents/models.py:344 documents/models.py:396 #: documents/models.py:344 documents/models.py:401
msgid "saved view" msgid "saved view"
msgstr "vue enregistrée" msgstr "vue enregistrée"
@@ -250,103 +250,111 @@ msgstr "montrer dans la barre latérale"
msgid "sort field" msgid "sort field"
msgstr "champ de tri" msgstr "champ de tri"
#: documents/models.py:364 #: documents/models.py:367
msgid "sort reverse" msgid "sort reverse"
msgstr "tri inverse" msgstr "tri inverse"
#: documents/models.py:370 #: documents/models.py:373
msgid "title contains" msgid "title contains"
msgstr "le titre contient" msgstr "le titre contient"
#: documents/models.py:371 #: documents/models.py:374
msgid "content contains" msgid "content contains"
msgstr "le contenu contient" msgstr "le contenu contient"
#: documents/models.py:372 #: documents/models.py:375
msgid "ASN is" msgid "ASN is"
msgstr "le NSA est" msgstr "le NSA est"
#: documents/models.py:373 #: documents/models.py:376
msgid "correspondent is" msgid "correspondent is"
msgstr "le correspondant est" msgstr "le correspondant est"
#: documents/models.py:374 #: documents/models.py:377
msgid "document type is" msgid "document type is"
msgstr "le type de document est" msgstr "le type de document est"
#: documents/models.py:375 #: documents/models.py:378
msgid "is in inbox" msgid "is in inbox"
msgstr "est dans la boîte de réception" msgstr "est dans la boîte de réception"
#: documents/models.py:376 #: documents/models.py:379
msgid "has tag" msgid "has tag"
msgstr "porte l'étiquette" msgstr "porte l'étiquette"
#: documents/models.py:377 #: documents/models.py:380
msgid "has any tag" msgid "has any tag"
msgstr "porte l'une des étiquettes" msgstr "porte l'une des étiquettes"
#: documents/models.py:378 #: documents/models.py:381
msgid "created before" msgid "created before"
msgstr "créé avant" msgstr "créé avant"
#: documents/models.py:379 #: documents/models.py:382
msgid "created after" msgid "created after"
msgstr "créé après" msgstr "créé après"
#: documents/models.py:380 #: documents/models.py:383
msgid "created year is" msgid "created year is"
msgstr "l'année de création est" msgstr "l'année de création est"
#: documents/models.py:381 #: documents/models.py:384
msgid "created month is" msgid "created month is"
msgstr "le mois de création est" msgstr "le mois de création est"
#: documents/models.py:382 #: documents/models.py:385
msgid "created day is" msgid "created day is"
msgstr "le jour de création est" msgstr "le jour de création est"
#: documents/models.py:383 #: documents/models.py:386
msgid "added before" msgid "added before"
msgstr "ajouté avant" msgstr "ajouté avant"
#: documents/models.py:384 #: documents/models.py:387
msgid "added after" msgid "added after"
msgstr "ajouté après" msgstr "ajouté après"
#: documents/models.py:385 #: documents/models.py:388
msgid "modified before" msgid "modified before"
msgstr "modifié avant" msgstr "modifié avant"
#: documents/models.py:386 #: documents/models.py:389
msgid "modified after" msgid "modified after"
msgstr "modifié après" msgstr "modifié après"
#: documents/models.py:387 #: documents/models.py:390
msgid "does not have tag" msgid "does not have tag"
msgstr "ne porte pas d'étiquette" msgstr "ne porte pas d'étiquette"
#: documents/models.py:388 #: documents/models.py:391
msgid "does not have ASN" msgid "does not have ASN"
msgstr "ne porte pas de NSA" msgstr "ne porte pas de NSA"
#: documents/models.py:389 #: documents/models.py:392
msgid "title or content contains" msgid "title or content contains"
msgstr "le titre ou le contenu contient" msgstr "le titre ou le contenu contient"
#: documents/models.py:400 #: documents/models.py:393
msgid "fulltext query"
msgstr "recherche en texte intégral"
#: documents/models.py:394
msgid "more like this"
msgstr "documents relatifs"
#: documents/models.py:405
msgid "rule type" msgid "rule type"
msgstr "type de règle" msgstr "type de règle"
#: documents/models.py:404 #: documents/models.py:409
msgid "value" msgid "value"
msgstr "valeur" msgstr "valeur"
#: documents/models.py:410 #: documents/models.py:415
msgid "filter rule" msgid "filter rule"
msgstr "règle de filtrage" msgstr "règle de filtrage"
#: documents/models.py:411 #: documents/models.py:416
msgid "filter rules" msgid "filter rules"
msgstr "règles de filtrage" msgstr "règles de filtrage"
@@ -448,7 +456,7 @@ msgstr "Russe"
msgid "Spanish" msgid "Spanish"
msgstr "Espagnol" msgstr "Espagnol"
#: paperless/urls.py:118 #: paperless/urls.py:113
msgid "Paperless-ng administration" msgid "Paperless-ng administration"
msgstr "Administration de Paperless-ng" msgstr "Administration de Paperless-ng"

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: paperless-ng\n" "Project-Id-Version: paperless-ng\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-03-17 22:31+0100\n" "POT-Creation-Date: 2021-04-05 22:05+0200\n"
"PO-Revision-Date: 2021-03-17 21:47\n" "PO-Revision-Date: 2021-04-05 20:20\n"
"Last-Translator: \n" "Last-Translator: \n"
"Language-Team: Hungarian\n" "Language-Team: Hungarian\n"
"Language: hu_HU\n" "Language: hu_HU\n"
@@ -226,7 +226,7 @@ msgstr ""
msgid "logs" msgid "logs"
msgstr "" msgstr ""
#: documents/models.py:344 documents/models.py:396 #: documents/models.py:344 documents/models.py:401
msgid "saved view" msgid "saved view"
msgstr "" msgstr ""
@@ -250,103 +250,111 @@ msgstr ""
msgid "sort field" msgid "sort field"
msgstr "" msgstr ""
#: documents/models.py:364 #: documents/models.py:367
msgid "sort reverse" msgid "sort reverse"
msgstr "" msgstr ""
#: documents/models.py:370 #: documents/models.py:373
msgid "title contains" msgid "title contains"
msgstr "" msgstr ""
#: documents/models.py:371 #: documents/models.py:374
msgid "content contains" msgid "content contains"
msgstr "" msgstr ""
#: documents/models.py:372 #: documents/models.py:375
msgid "ASN is" msgid "ASN is"
msgstr "" msgstr ""
#: documents/models.py:373 #: documents/models.py:376
msgid "correspondent is" msgid "correspondent is"
msgstr "" msgstr ""
#: documents/models.py:374 #: documents/models.py:377
msgid "document type is" msgid "document type is"
msgstr "" msgstr ""
#: documents/models.py:375 #: documents/models.py:378
msgid "is in inbox" msgid "is in inbox"
msgstr "" msgstr ""
#: documents/models.py:376 #: documents/models.py:379
msgid "has tag" msgid "has tag"
msgstr "" msgstr ""
#: documents/models.py:377 #: documents/models.py:380
msgid "has any tag" msgid "has any tag"
msgstr "" msgstr ""
#: documents/models.py:378 #: documents/models.py:381
msgid "created before" msgid "created before"
msgstr "" msgstr ""
#: documents/models.py:379 #: documents/models.py:382
msgid "created after" msgid "created after"
msgstr "" msgstr ""
#: documents/models.py:380 #: documents/models.py:383
msgid "created year is" msgid "created year is"
msgstr "" msgstr ""
#: documents/models.py:381 #: documents/models.py:384
msgid "created month is" msgid "created month is"
msgstr "" msgstr ""
#: documents/models.py:382 #: documents/models.py:385
msgid "created day is" msgid "created day is"
msgstr "" msgstr ""
#: documents/models.py:383 #: documents/models.py:386
msgid "added before" msgid "added before"
msgstr "" msgstr ""
#: documents/models.py:384 #: documents/models.py:387
msgid "added after" msgid "added after"
msgstr "" msgstr ""
#: documents/models.py:385 #: documents/models.py:388
msgid "modified before" msgid "modified before"
msgstr "" msgstr ""
#: documents/models.py:386 #: documents/models.py:389
msgid "modified after" msgid "modified after"
msgstr "" msgstr ""
#: documents/models.py:387 #: documents/models.py:390
msgid "does not have tag" msgid "does not have tag"
msgstr "" msgstr ""
#: documents/models.py:388 #: documents/models.py:391
msgid "does not have ASN" msgid "does not have ASN"
msgstr "" msgstr ""
#: documents/models.py:389 #: documents/models.py:392
msgid "title or content contains" msgid "title or content contains"
msgstr "" msgstr ""
#: documents/models.py:400 #: documents/models.py:393
msgid "fulltext query"
msgstr ""
#: documents/models.py:394
msgid "more like this"
msgstr ""
#: documents/models.py:405
msgid "rule type" msgid "rule type"
msgstr "" msgstr ""
#: documents/models.py:404 #: documents/models.py:409
msgid "value" msgid "value"
msgstr "" msgstr ""
#: documents/models.py:410 #: documents/models.py:415
msgid "filter rule" msgid "filter rule"
msgstr "" msgstr ""
#: documents/models.py:411 #: documents/models.py:416
msgid "filter rules" msgid "filter rules"
msgstr "" msgstr ""
@@ -448,7 +456,7 @@ msgstr ""
msgid "Spanish" msgid "Spanish"
msgstr "" msgstr ""
#: paperless/urls.py:118 #: paperless/urls.py:113
msgid "Paperless-ng administration" msgid "Paperless-ng administration"
msgstr "" msgstr ""

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: paperless-ng\n" "Project-Id-Version: paperless-ng\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-03-17 22:31+0100\n" "POT-Creation-Date: 2021-04-05 22:05+0200\n"
"PO-Revision-Date: 2021-03-18 00:34\n" "PO-Revision-Date: 2021-04-05 21:31\n"
"Last-Translator: \n" "Last-Translator: \n"
"Language-Team: Italian\n" "Language-Team: Italian\n"
"Language: it_IT\n" "Language: it_IT\n"
@@ -226,7 +226,7 @@ msgstr "log"
msgid "logs" msgid "logs"
msgstr "log" msgstr "log"
#: documents/models.py:344 documents/models.py:396 #: documents/models.py:344 documents/models.py:401
msgid "saved view" msgid "saved view"
msgstr "vista salvata" msgstr "vista salvata"
@@ -250,103 +250,111 @@ msgstr "mostra nella barra laterale"
msgid "sort field" msgid "sort field"
msgstr "campo di ordinamento" msgstr "campo di ordinamento"
#: documents/models.py:364 #: documents/models.py:367
msgid "sort reverse" msgid "sort reverse"
msgstr "ordine invertito" msgstr "ordine invertito"
#: documents/models.py:370 #: documents/models.py:373
msgid "title contains" msgid "title contains"
msgstr "il titolo contiene" msgstr "il titolo contiene"
#: documents/models.py:371 #: documents/models.py:374
msgid "content contains" msgid "content contains"
msgstr "il contenuto contiene" msgstr "il contenuto contiene"
#: documents/models.py:372 #: documents/models.py:375
msgid "ASN is" msgid "ASN is"
msgstr "ASN è" msgstr "ASN è"
#: documents/models.py:373 #: documents/models.py:376
msgid "correspondent is" msgid "correspondent is"
msgstr "la corrispondenza è" msgstr "la corrispondenza è"
#: documents/models.py:374 #: documents/models.py:377
msgid "document type is" msgid "document type is"
msgstr "il tipo di documento è" msgstr "il tipo di documento è"
#: documents/models.py:375 #: documents/models.py:378
msgid "is in inbox" msgid "is in inbox"
msgstr "è in arrivo" msgstr "è in arrivo"
#: documents/models.py:376 #: documents/models.py:379
msgid "has tag" msgid "has tag"
msgstr "ha etichetta" msgstr "ha etichetta"
#: documents/models.py:377 #: documents/models.py:380
msgid "has any tag" msgid "has any tag"
msgstr "ha qualsiasi etichetta" msgstr "ha qualsiasi etichetta"
#: documents/models.py:378 #: documents/models.py:381
msgid "created before" msgid "created before"
msgstr "creato prima del" msgstr "creato prima del"
#: documents/models.py:379 #: documents/models.py:382
msgid "created after" msgid "created after"
msgstr "creato dopo il" msgstr "creato dopo il"
#: documents/models.py:380 #: documents/models.py:383
msgid "created year is" msgid "created year is"
msgstr "l'anno di creazione è" msgstr "l'anno di creazione è"
#: documents/models.py:381 #: documents/models.py:384
msgid "created month is" msgid "created month is"
msgstr "il mese di creazione è" msgstr "il mese di creazione è"
#: documents/models.py:382 #: documents/models.py:385
msgid "created day is" msgid "created day is"
msgstr "il giorno di creazione è" msgstr "il giorno di creazione è"
#: documents/models.py:383 #: documents/models.py:386
msgid "added before" msgid "added before"
msgstr "aggiunto prima del" msgstr "aggiunto prima del"
#: documents/models.py:384 #: documents/models.py:387
msgid "added after" msgid "added after"
msgstr "aggiunto dopo il" msgstr "aggiunto dopo il"
#: documents/models.py:385 #: documents/models.py:388
msgid "modified before" msgid "modified before"
msgstr "modificato prima del" msgstr "modificato prima del"
#: documents/models.py:386 #: documents/models.py:389
msgid "modified after" msgid "modified after"
msgstr "modificato dopo" msgstr "modificato dopo"
#: documents/models.py:387 #: documents/models.py:390
msgid "does not have tag" msgid "does not have tag"
msgstr "non ha tag" msgstr "non ha tag"
#: documents/models.py:388 #: documents/models.py:391
msgid "does not have ASN" msgid "does not have ASN"
msgstr "non ha ASN" msgstr "non ha ASN"
#: documents/models.py:389 #: documents/models.py:392
msgid "title or content contains" msgid "title or content contains"
msgstr "il titolo o il contenuto contiene" msgstr "il titolo o il contenuto contiene"
#: documents/models.py:400 #: documents/models.py:393
msgid "fulltext query"
msgstr "query fulltext"
#: documents/models.py:394
msgid "more like this"
msgstr "altro come questo"
#: documents/models.py:405
msgid "rule type" msgid "rule type"
msgstr "tipo di regola" msgstr "tipo di regola"
#: documents/models.py:404 #: documents/models.py:409
msgid "value" msgid "value"
msgstr "valore" msgstr "valore"
#: documents/models.py:410 #: documents/models.py:415
msgid "filter rule" msgid "filter rule"
msgstr "regola filtro" msgstr "regola filtro"
#: documents/models.py:411 #: documents/models.py:416
msgid "filter rules" msgid "filter rules"
msgstr "regole filtro" msgstr "regole filtro"
@@ -366,7 +374,7 @@ msgstr "Il tipo di file %(type)s non è supportato"
#: documents/templates/index.html:21 #: documents/templates/index.html:21
msgid "Paperless-ng is loading..." msgid "Paperless-ng is loading..."
msgstr "Paperless-ng si sta caricando..." msgstr "Paperless-ng è in caricamento..."
#: documents/templates/registration/logged_out.html:13 #: documents/templates/registration/logged_out.html:13
msgid "Paperless-ng signed out" msgid "Paperless-ng signed out"
@@ -374,11 +382,11 @@ msgstr "Paperless-ng è uscito"
#: documents/templates/registration/logged_out.html:41 #: documents/templates/registration/logged_out.html:41
msgid "You have been successfully logged out. Bye!" msgid "You have been successfully logged out. Bye!"
msgstr "Vi siete disconnessi. Ciao!" msgstr "Ti sei disconnesso. A presto!"
#: documents/templates/registration/logged_out.html:42 #: documents/templates/registration/logged_out.html:42
msgid "Sign in again" msgid "Sign in again"
msgstr "Rientra nuovamente" msgstr "Accedi nuovamente"
#: documents/templates/registration/login.html:13 #: documents/templates/registration/login.html:13
msgid "Paperless-ng sign in" msgid "Paperless-ng sign in"
@@ -448,7 +456,7 @@ msgstr "Russo"
msgid "Spanish" msgid "Spanish"
msgstr "Spagnolo" msgstr "Spagnolo"
#: paperless/urls.py:118 #: paperless/urls.py:113
msgid "Paperless-ng administration" msgid "Paperless-ng administration"
msgstr "Amministrazione di Paperless-ng" msgstr "Amministrazione di Paperless-ng"

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: paperless-ng\n" "Project-Id-Version: paperless-ng\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-03-17 22:31+0100\n" "POT-Creation-Date: 2021-04-05 22:05+0200\n"
"PO-Revision-Date: 2021-03-17 21:47\n" "PO-Revision-Date: 2021-04-06 12:03\n"
"Last-Translator: \n" "Last-Translator: \n"
"Language-Team: Dutch\n" "Language-Team: Dutch\n"
"Language: nl_NL\n" "Language: nl_NL\n"
@@ -226,7 +226,7 @@ msgstr "bericht"
msgid "logs" msgid "logs"
msgstr "berichten" msgstr "berichten"
#: documents/models.py:344 documents/models.py:396 #: documents/models.py:344 documents/models.py:401
msgid "saved view" msgid "saved view"
msgstr "opgeslagen view" msgstr "opgeslagen view"
@@ -250,103 +250,111 @@ msgstr "weergeven in zijbalk"
msgid "sort field" msgid "sort field"
msgstr "sorteerveld" msgstr "sorteerveld"
#: documents/models.py:364 #: documents/models.py:367
msgid "sort reverse" msgid "sort reverse"
msgstr "omgekeerd sorteren" msgstr "omgekeerd sorteren"
#: documents/models.py:370 #: documents/models.py:373
msgid "title contains" msgid "title contains"
msgstr "titel bevat" msgstr "titel bevat"
#: documents/models.py:371 #: documents/models.py:374
msgid "content contains" msgid "content contains"
msgstr "inhoud bevat" msgstr "inhoud bevat"
#: documents/models.py:372 #: documents/models.py:375
msgid "ASN is" msgid "ASN is"
msgstr "ASN is" msgstr "ASN is"
#: documents/models.py:373 #: documents/models.py:376
msgid "correspondent is" msgid "correspondent is"
msgstr "correspondent is" msgstr "correspondent is"
#: documents/models.py:374 #: documents/models.py:377
msgid "document type is" msgid "document type is"
msgstr "documenttype is" msgstr "documenttype is"
#: documents/models.py:375 #: documents/models.py:378
msgid "is in inbox" msgid "is in inbox"
msgstr "zit in \"Postvak in\"" msgstr "zit in \"Postvak in\""
#: documents/models.py:376 #: documents/models.py:379
msgid "has tag" msgid "has tag"
msgstr "heeft etiket" msgstr "heeft etiket"
#: documents/models.py:377 #: documents/models.py:380
msgid "has any tag" msgid "has any tag"
msgstr "heeft één van de etiketten" msgstr "heeft één van de etiketten"
#: documents/models.py:378 #: documents/models.py:381
msgid "created before" msgid "created before"
msgstr "aangemaakt voor" msgstr "aangemaakt voor"
#: documents/models.py:379 #: documents/models.py:382
msgid "created after" msgid "created after"
msgstr "aangemaakt na" msgstr "aangemaakt na"
#: documents/models.py:380 #: documents/models.py:383
msgid "created year is" msgid "created year is"
msgstr "aangemaakt jaar is" msgstr "aangemaakt jaar is"
#: documents/models.py:381 #: documents/models.py:384
msgid "created month is" msgid "created month is"
msgstr "aangemaakte maand is" msgstr "aangemaakte maand is"
#: documents/models.py:382 #: documents/models.py:385
msgid "created day is" msgid "created day is"
msgstr "aangemaakte dag is" msgstr "aangemaakte dag is"
#: documents/models.py:383 #: documents/models.py:386
msgid "added before" msgid "added before"
msgstr "toegevoegd voor" msgstr "toegevoegd voor"
#: documents/models.py:384 #: documents/models.py:387
msgid "added after" msgid "added after"
msgstr "toegevoegd na" msgstr "toegevoegd na"
#: documents/models.py:385 #: documents/models.py:388
msgid "modified before" msgid "modified before"
msgstr "gewijzigd voor" msgstr "gewijzigd voor"
#: documents/models.py:386 #: documents/models.py:389
msgid "modified after" msgid "modified after"
msgstr "gewijzigd na" msgstr "gewijzigd na"
#: documents/models.py:387 #: documents/models.py:390
msgid "does not have tag" msgid "does not have tag"
msgstr "heeft geen etiket" msgstr "heeft geen etiket"
#: documents/models.py:388 #: documents/models.py:391
msgid "does not have ASN" msgid "does not have ASN"
msgstr "heeft geen ASN" msgstr "heeft geen ASN"
#: documents/models.py:389 #: documents/models.py:392
msgid "title or content contains" msgid "title or content contains"
msgstr "titel of inhoud bevat" msgstr "titel of inhoud bevat"
#: documents/models.py:400 #: documents/models.py:393
msgid "fulltext query"
msgstr "inhoud doorzoeken"
#: documents/models.py:394
msgid "more like this"
msgstr "meer zoals dit"
#: documents/models.py:405
msgid "rule type" msgid "rule type"
msgstr "type regel" msgstr "type regel"
#: documents/models.py:404 #: documents/models.py:409
msgid "value" msgid "value"
msgstr "waarde" msgstr "waarde"
#: documents/models.py:410 #: documents/models.py:415
msgid "filter rule" msgid "filter rule"
msgstr "filterregel" msgstr "filterregel"
#: documents/models.py:411 #: documents/models.py:416
msgid "filter rules" msgid "filter rules"
msgstr "filterregels" msgstr "filterregels"
@@ -430,7 +438,7 @@ msgstr "Portugees (Brazilië)"
#: paperless/settings.py:304 #: paperless/settings.py:304
msgid "Portuguese" msgid "Portuguese"
msgstr "" msgstr "Portugees"
#: paperless/settings.py:305 #: paperless/settings.py:305
msgid "Italian" msgid "Italian"
@@ -448,7 +456,7 @@ msgstr "Russisch"
msgid "Spanish" msgid "Spanish"
msgstr "Spaans" msgstr "Spaans"
#: paperless/urls.py:118 #: paperless/urls.py:113
msgid "Paperless-ng administration" msgid "Paperless-ng administration"
msgstr "Paperless-ng administratie" msgstr "Paperless-ng administratie"

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: paperless-ng\n" "Project-Id-Version: paperless-ng\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-03-17 22:31+0100\n" "POT-Creation-Date: 2021-04-05 22:05+0200\n"
"PO-Revision-Date: 2021-03-17 21:47\n" "PO-Revision-Date: 2021-04-05 20:20\n"
"Last-Translator: \n" "Last-Translator: \n"
"Language-Team: Portuguese, Brazilian\n" "Language-Team: Portuguese, Brazilian\n"
"Language: pt_BR\n" "Language: pt_BR\n"
@@ -226,7 +226,7 @@ msgstr "log"
msgid "logs" msgid "logs"
msgstr "logs" msgstr "logs"
#: documents/models.py:344 documents/models.py:396 #: documents/models.py:344 documents/models.py:401
msgid "saved view" msgid "saved view"
msgstr "visualização" msgstr "visualização"
@@ -250,103 +250,111 @@ msgstr "exibir no painel lateral"
msgid "sort field" msgid "sort field"
msgstr "ordenar campo" msgstr "ordenar campo"
#: documents/models.py:364 #: documents/models.py:367
msgid "sort reverse" msgid "sort reverse"
msgstr "odernar reverso" msgstr "odernar reverso"
#: documents/models.py:370 #: documents/models.py:373
msgid "title contains" msgid "title contains"
msgstr "título contém" msgstr "título contém"
#: documents/models.py:371 #: documents/models.py:374
msgid "content contains" msgid "content contains"
msgstr "conteúdo contém" msgstr "conteúdo contém"
#: documents/models.py:372 #: documents/models.py:375
msgid "ASN is" msgid "ASN is"
msgstr "NSA é" msgstr "NSA é"
#: documents/models.py:373 #: documents/models.py:376
msgid "correspondent is" msgid "correspondent is"
msgstr "correspondente é" msgstr "correspondente é"
#: documents/models.py:374 #: documents/models.py:377
msgid "document type is" msgid "document type is"
msgstr "tipo de documento é" msgstr "tipo de documento é"
#: documents/models.py:375 #: documents/models.py:378
msgid "is in inbox" msgid "is in inbox"
msgstr "é caixa de entrada" msgstr "é caixa de entrada"
#: documents/models.py:376 #: documents/models.py:379
msgid "has tag" msgid "has tag"
msgstr "contém etiqueta" msgstr "contém etiqueta"
#: documents/models.py:377 #: documents/models.py:380
msgid "has any tag" msgid "has any tag"
msgstr "contém qualquer etiqueta" msgstr "contém qualquer etiqueta"
#: documents/models.py:378 #: documents/models.py:381
msgid "created before" msgid "created before"
msgstr "criado antes de" msgstr "criado antes de"
#: documents/models.py:379 #: documents/models.py:382
msgid "created after" msgid "created after"
msgstr "criado depois de" msgstr "criado depois de"
#: documents/models.py:380 #: documents/models.py:383
msgid "created year is" msgid "created year is"
msgstr "ano de criação é" msgstr "ano de criação é"
#: documents/models.py:381 #: documents/models.py:384
msgid "created month is" msgid "created month is"
msgstr "mês de criação é" msgstr "mês de criação é"
#: documents/models.py:382 #: documents/models.py:385
msgid "created day is" msgid "created day is"
msgstr "dia de criação é" msgstr "dia de criação é"
#: documents/models.py:383 #: documents/models.py:386
msgid "added before" msgid "added before"
msgstr "adicionado antes de" msgstr "adicionado antes de"
#: documents/models.py:384 #: documents/models.py:387
msgid "added after" msgid "added after"
msgstr "adicionado depois de" msgstr "adicionado depois de"
#: documents/models.py:385 #: documents/models.py:388
msgid "modified before" msgid "modified before"
msgstr "modificado antes de" msgstr "modificado antes de"
#: documents/models.py:386 #: documents/models.py:389
msgid "modified after" msgid "modified after"
msgstr "modificado depois de" msgstr "modificado depois de"
#: documents/models.py:387 #: documents/models.py:390
msgid "does not have tag" msgid "does not have tag"
msgstr "não tem etiqueta" msgstr "não tem etiqueta"
#: documents/models.py:388 #: documents/models.py:391
msgid "does not have ASN" msgid "does not have ASN"
msgstr "" msgstr ""
#: documents/models.py:389 #: documents/models.py:392
msgid "title or content contains" msgid "title or content contains"
msgstr "título ou conteúdo contém" msgstr "título ou conteúdo contém"
#: documents/models.py:400 #: documents/models.py:393
msgid "fulltext query"
msgstr ""
#: documents/models.py:394
msgid "more like this"
msgstr ""
#: documents/models.py:405
msgid "rule type" msgid "rule type"
msgstr "tipo de regra" msgstr "tipo de regra"
#: documents/models.py:404 #: documents/models.py:409
msgid "value" msgid "value"
msgstr "valor" msgstr "valor"
#: documents/models.py:410 #: documents/models.py:415
msgid "filter rule" msgid "filter rule"
msgstr "regra de filtragem" msgstr "regra de filtragem"
#: documents/models.py:411 #: documents/models.py:416
msgid "filter rules" msgid "filter rules"
msgstr "regras de filtragem" msgstr "regras de filtragem"
@@ -448,7 +456,7 @@ msgstr ""
msgid "Spanish" msgid "Spanish"
msgstr "" msgstr ""
#: paperless/urls.py:118 #: paperless/urls.py:113
msgid "Paperless-ng administration" msgid "Paperless-ng administration"
msgstr "Administração do Paperless-ng" msgstr "Administração do Paperless-ng"

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: paperless-ng\n" "Project-Id-Version: paperless-ng\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-03-17 22:31+0100\n" "POT-Creation-Date: 2021-04-05 22:05+0200\n"
"PO-Revision-Date: 2021-03-17 21:48\n" "PO-Revision-Date: 2021-04-05 21:31\n"
"Last-Translator: \n" "Last-Translator: \n"
"Language-Team: Portuguese\n" "Language-Team: Portuguese\n"
"Language: pt_PT\n" "Language: pt_PT\n"
@@ -80,7 +80,7 @@ msgstr "é etiqueta de novo"
#: documents/models.py:89 #: documents/models.py:89
msgid "Marks this tag as an inbox tag: All newly consumed documents will be tagged with inbox tags." msgid "Marks this tag as an inbox tag: All newly consumed documents will be tagged with inbox tags."
msgstr "" 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:94 #: documents/models.py:94
msgid "tag" msgid "tag"
@@ -116,11 +116,11 @@ msgstr "conteúdo"
#: documents/models.py:139 #: documents/models.py:139
msgid "The raw, text-only data of the document. This field is primarily used for searching." msgid "The raw, text-only data of the document. This field is primarily used for searching."
msgstr "" msgstr "Os dados de texto, em cru, do documento. Este campo é utilizado principalmente para pesquisar."
#: documents/models.py:144 #: documents/models.py:144
msgid "mime type" msgid "mime type"
msgstr "" msgstr "tipo mime"
#: documents/models.py:155 #: documents/models.py:155
msgid "checksum" msgid "checksum"
@@ -176,7 +176,7 @@ msgstr "numero de série de arquivo"
#: documents/models.py:217 #: documents/models.py:217
msgid "The position of this document in your physical document archive." msgid "The position of this document in your physical document archive."
msgstr "" msgstr "A posição do documento no seu arquivo físico de documentos."
#: documents/models.py:223 #: documents/models.py:223
msgid "document" msgid "document"
@@ -226,7 +226,7 @@ msgstr "registo"
msgid "logs" msgid "logs"
msgstr "registos" msgstr "registos"
#: documents/models.py:344 documents/models.py:396 #: documents/models.py:344 documents/models.py:401
msgid "saved view" msgid "saved view"
msgstr "vista guardada" msgstr "vista guardada"
@@ -250,103 +250,111 @@ msgstr "mostrar na navegação lateral"
msgid "sort field" msgid "sort field"
msgstr "ordenar campo" msgstr "ordenar campo"
#: documents/models.py:364 #: documents/models.py:367
msgid "sort reverse" msgid "sort reverse"
msgstr "ordenar inversamente" msgstr "ordenar inversamente"
#: documents/models.py:370 #: documents/models.py:373
msgid "title contains" msgid "title contains"
msgstr "o título contém" msgstr "o título contém"
#: documents/models.py:371 #: documents/models.py:374
msgid "content contains" msgid "content contains"
msgstr "o conteúdo contém" msgstr "o conteúdo contém"
#: documents/models.py:372 #: documents/models.py:375
msgid "ASN is" msgid "ASN is"
msgstr "" msgstr "O NSA é"
#: documents/models.py:373 #: documents/models.py:376
msgid "correspondent is" msgid "correspondent is"
msgstr "o correspondente é" msgstr "o correspondente é"
#: documents/models.py:374 #: documents/models.py:377
msgid "document type is" msgid "document type is"
msgstr "o tipo de documento é" msgstr "o tipo de documento é"
#: documents/models.py:375 #: documents/models.py:378
msgid "is in inbox" msgid "is in inbox"
msgstr "" msgstr "está na entrada"
#: documents/models.py:376 #: documents/models.py:379
msgid "has tag" msgid "has tag"
msgstr "tem etiqueta" msgstr "tem etiqueta"
#: documents/models.py:377 #: documents/models.py:380
msgid "has any tag" msgid "has any tag"
msgstr "tem qualquer etiqueta" msgstr "tem qualquer etiqueta"
#: documents/models.py:378 #: documents/models.py:381
msgid "created before" msgid "created before"
msgstr "criado antes" msgstr "criado antes"
#: documents/models.py:379 #: documents/models.py:382
msgid "created after" msgid "created after"
msgstr "criado depois" msgstr "criado depois"
#: documents/models.py:380 #: documents/models.py:383
msgid "created year is" msgid "created year is"
msgstr "ano criada é" msgstr "ano criada é"
#: documents/models.py:381 #: documents/models.py:384
msgid "created month is" msgid "created month is"
msgstr "mês criado é" msgstr "mês criado é"
#: documents/models.py:382 #: documents/models.py:385
msgid "created day is" msgid "created day is"
msgstr "dia criado é" msgstr "dia criado é"
#: documents/models.py:383 #: documents/models.py:386
msgid "added before" msgid "added before"
msgstr "adicionada antes" msgstr "adicionada antes"
#: documents/models.py:384 #: documents/models.py:387
msgid "added after" msgid "added after"
msgstr "adicionado depois de" msgstr "adicionado depois de"
#: documents/models.py:385 #: documents/models.py:388
msgid "modified before" msgid "modified before"
msgstr "modificado antes de" msgstr "modificado antes de"
#: documents/models.py:386 #: documents/models.py:389
msgid "modified after" msgid "modified after"
msgstr "modificado depois de" msgstr "modificado depois de"
#: documents/models.py:387 #: documents/models.py:390
msgid "does not have tag" msgid "does not have tag"
msgstr "não tem etiqueta" msgstr "não tem etiqueta"
#: documents/models.py:388 #: documents/models.py:391
msgid "does not have ASN" msgid "does not have ASN"
msgstr "" msgstr "não possui um NSA"
#: documents/models.py:389 #: documents/models.py:392
msgid "title or content contains" msgid "title or content contains"
msgstr "título ou conteúdo contém" msgstr "título ou conteúdo contém"
#: documents/models.py:400 #: documents/models.py:393
msgid "fulltext query"
msgstr "consulta de texto completo"
#: documents/models.py:394
msgid "more like this"
msgstr "mais como este"
#: documents/models.py:405
msgid "rule type" msgid "rule type"
msgstr "tipo de regra" msgstr "tipo de regra"
#: documents/models.py:404 #: documents/models.py:409
msgid "value" msgid "value"
msgstr "valor" msgstr "valor"
#: documents/models.py:410 #: documents/models.py:415
msgid "filter rule" msgid "filter rule"
msgstr "regra de filtragem" msgstr "regra de filtragem"
#: documents/models.py:411 #: documents/models.py:416
msgid "filter rules" msgid "filter rules"
msgstr "regras de filtragem" msgstr "regras de filtragem"
@@ -390,7 +398,7 @@ msgstr "Por favor inicie sessão."
#: documents/templates/registration/login.html:45 #: documents/templates/registration/login.html:45
msgid "Your username and password didn't match. Please try again." msgid "Your username and password didn't match. Please try again."
msgstr "" msgstr "O utilizador e a senha não correspondem. Tente novamente."
#: documents/templates/registration/login.html:48 #: documents/templates/registration/login.html:48
msgid "Username" msgid "Username"
@@ -430,7 +438,7 @@ msgstr "Português (Brasil)"
#: paperless/settings.py:304 #: paperless/settings.py:304
msgid "Portuguese" msgid "Portuguese"
msgstr "" msgstr "Português"
#: paperless/settings.py:305 #: paperless/settings.py:305
msgid "Italian" msgid "Italian"
@@ -448,7 +456,7 @@ msgstr "Russo"
msgid "Spanish" msgid "Spanish"
msgstr "Espanhol" msgstr "Espanhol"
#: paperless/urls.py:118 #: paperless/urls.py:113
msgid "Paperless-ng administration" msgid "Paperless-ng administration"
msgstr "Administração do Paperless-ng" msgstr "Administração do Paperless-ng"
@@ -458,7 +466,7 @@ msgstr "Filtro"
#: paperless_mail/admin.py:27 #: paperless_mail/admin.py:27
msgid "Paperless will only process mails that match ALL of the filters given below." msgid "Paperless will only process mails that match ALL of the filters given below."
msgstr "" msgstr "O Paperless apenas irá processar emails que coincidem com TODOS os filtros dados abaixo."
#: paperless_mail/admin.py:37 #: paperless_mail/admin.py:37
msgid "Actions" msgid "Actions"
@@ -466,7 +474,7 @@ msgstr "Ações"
#: paperless_mail/admin.py:39 #: paperless_mail/admin.py:39
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." 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 "" msgstr "A ação aplicada a correio. Esta ação apenas será efetuada com documentos que tenham sido consumidos através do correio. E-mails sem anexos permanecerão intactos."
#: paperless_mail/admin.py:46 #: paperless_mail/admin.py:46
msgid "Metadata" msgid "Metadata"
@@ -474,83 +482,83 @@ msgstr "Metadados"
#: paperless_mail/admin.py:48 #: paperless_mail/admin.py:48
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." 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 "" msgstr "Atribuir meta-dados aos documentos consumidos automaticamente através desta regra. Se você não atribuir etiquetas, tipos ou correspondentes aqui, o paperless ainda assim processará todas as regras correspondentes que tenha definido."
#: paperless_mail/apps.py:9 #: paperless_mail/apps.py:9
msgid "Paperless mail" msgid "Paperless mail"
msgstr "" msgstr "Correio Paperless"
#: paperless_mail/models.py:11 #: paperless_mail/models.py:11
msgid "mail account" msgid "mail account"
msgstr "" msgstr "conta de email"
#: paperless_mail/models.py:12 #: paperless_mail/models.py:12
msgid "mail accounts" msgid "mail accounts"
msgstr "" msgstr "contas de email"
#: paperless_mail/models.py:19 #: paperless_mail/models.py:19
msgid "No encryption" msgid "No encryption"
msgstr "" msgstr "Sem encriptação"
#: paperless_mail/models.py:20 #: paperless_mail/models.py:20
msgid "Use SSL" msgid "Use SSL"
msgstr "" msgstr "Utilizar SSL"
#: paperless_mail/models.py:21 #: paperless_mail/models.py:21
msgid "Use STARTTLS" msgid "Use STARTTLS"
msgstr "" msgstr "Utilizar STARTTLS"
#: paperless_mail/models.py:29 #: paperless_mail/models.py:29
msgid "IMAP server" msgid "IMAP server"
msgstr "" msgstr "Servidor IMAP"
#: paperless_mail/models.py:33 #: paperless_mail/models.py:33
msgid "IMAP port" msgid "IMAP port"
msgstr "" msgstr "Porto IMAP"
#: paperless_mail/models.py:36 #: paperless_mail/models.py:36
msgid "This is usually 143 for unencrypted and STARTTLS connections, and 993 for SSL connections." msgid "This is usually 143 for unencrypted and STARTTLS connections, and 993 for SSL connections."
msgstr "" msgstr "Por norma é o 143 sem encriptação e conexões STARTTLS, e o 993 para conexões com SSL."
#: paperless_mail/models.py:40 #: paperless_mail/models.py:40
msgid "IMAP security" msgid "IMAP security"
msgstr "" msgstr "Segurança IMAP"
#: paperless_mail/models.py:46 #: paperless_mail/models.py:46
msgid "username" msgid "username"
msgstr "" msgstr "nome de utilizador"
#: paperless_mail/models.py:50 #: paperless_mail/models.py:50
msgid "password" msgid "password"
msgstr "" msgstr "palavra-passe"
#: paperless_mail/models.py:60 #: paperless_mail/models.py:60
msgid "mail rule" msgid "mail rule"
msgstr "" msgstr "regra de correio"
#: paperless_mail/models.py:61 #: paperless_mail/models.py:61
msgid "mail rules" msgid "mail rules"
msgstr "" msgstr "regras de correio"
#: paperless_mail/models.py:67 #: paperless_mail/models.py:67
msgid "Only process attachments." msgid "Only process attachments."
msgstr "" msgstr "Processar anexos apenas."
#: paperless_mail/models.py:68 #: paperless_mail/models.py:68
msgid "Process all files, including 'inline' attachments." msgid "Process all files, including 'inline' attachments."
msgstr "" msgstr "Processar todos os ficheiros, incluindo ficheiros 'embutidos (inline)'."
#: paperless_mail/models.py:78 #: paperless_mail/models.py:78
msgid "Mark as read, don't process read mails" msgid "Mark as read, don't process read mails"
msgstr "" msgstr "Marcar como lido, não processar emails lidos"
#: paperless_mail/models.py:79 #: paperless_mail/models.py:79
msgid "Flag the mail, don't process flagged mails" msgid "Flag the mail, don't process flagged mails"
msgstr "" msgstr "Marcar o email, não processar emails marcados"
#: paperless_mail/models.py:80 #: paperless_mail/models.py:80
msgid "Move to specified folder" msgid "Move to specified folder"
msgstr "" msgstr "Mover para uma diretoria específica"
#: paperless_mail/models.py:81 #: paperless_mail/models.py:81
msgid "Delete" msgid "Delete"
@@ -558,51 +566,51 @@ msgstr "Excluir"
#: paperless_mail/models.py:88 #: paperless_mail/models.py:88
msgid "Use subject as title" msgid "Use subject as title"
msgstr "" msgstr "Utilizar o assunto como título"
#: paperless_mail/models.py:89 #: paperless_mail/models.py:89
msgid "Use attachment filename as title" msgid "Use attachment filename as title"
msgstr "" msgstr "Utilizar o nome do anexo como título"
#: paperless_mail/models.py:99 #: paperless_mail/models.py:99
msgid "Do not assign a correspondent" msgid "Do not assign a correspondent"
msgstr "" msgstr "Não atribuir um correspondente"
#: paperless_mail/models.py:101 #: paperless_mail/models.py:101
msgid "Use mail address" msgid "Use mail address"
msgstr "" msgstr "Utilizar o endereço de email"
#: paperless_mail/models.py:103 #: paperless_mail/models.py:103
msgid "Use name (or mail address if not available)" msgid "Use name (or mail address if not available)"
msgstr "" msgstr "Utilizar nome (ou endereço de email se não disponível)"
#: paperless_mail/models.py:105 #: paperless_mail/models.py:105
msgid "Use correspondent selected below" msgid "Use correspondent selected below"
msgstr "" msgstr "Utilizar o correspondente selecionado abaixo"
#: paperless_mail/models.py:113 #: paperless_mail/models.py:113
msgid "order" msgid "order"
msgstr "" msgstr "ordem"
#: paperless_mail/models.py:120 #: paperless_mail/models.py:120
msgid "account" msgid "account"
msgstr "" msgstr "conta"
#: paperless_mail/models.py:124 #: paperless_mail/models.py:124
msgid "folder" msgid "folder"
msgstr "" msgstr "directoria"
#: paperless_mail/models.py:128 #: paperless_mail/models.py:128
msgid "filter from" msgid "filter from"
msgstr "" msgstr "filtrar de"
#: paperless_mail/models.py:131 #: paperless_mail/models.py:131
msgid "filter subject" msgid "filter subject"
msgstr "" msgstr "filtrar assunto"
#: paperless_mail/models.py:134 #: paperless_mail/models.py:134
msgid "filter body" msgid "filter body"
msgstr "" msgstr "filtrar corpo"
#: paperless_mail/models.py:138 #: paperless_mail/models.py:138
msgid "filter attachment filename" msgid "filter attachment filename"
@@ -638,25 +646,25 @@ msgstr "parâmetro de ação"
#: paperless_mail/models.py:167 #: paperless_mail/models.py:167
msgid "Additional parameter for the action selected above, i.e., the target folder of the move to folder action." msgid "Additional parameter for the action selected above, i.e., the target folder of the move to folder action."
msgstr "" msgstr "Parâmetro adicional para a ação selecionada acima, isto é, a diretoria de destino do movimento da ação para a pasta."
#: paperless_mail/models.py:173 #: paperless_mail/models.py:173
msgid "assign title from" msgid "assign title from"
msgstr "" msgstr "atribuir titulo de"
#: paperless_mail/models.py:183 #: paperless_mail/models.py:183
msgid "assign this tag" msgid "assign this tag"
msgstr "" msgstr "atribuir esta etiqueta"
#: paperless_mail/models.py:191 #: paperless_mail/models.py:191
msgid "assign this document type" msgid "assign this document type"
msgstr "" msgstr "atribuir este tipo de documento"
#: paperless_mail/models.py:195 #: paperless_mail/models.py:195
msgid "assign correspondent from" msgid "assign correspondent from"
msgstr "" msgstr "atribuir correspondente de"
#: paperless_mail/models.py:205 #: paperless_mail/models.py:205
msgid "assign this correspondent" msgid "assign this correspondent"
msgstr "" msgstr "atribuir este correspondente"

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: paperless-ng\n" "Project-Id-Version: paperless-ng\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-03-17 22:31+0100\n" "POT-Creation-Date: 2021-04-05 22:05+0200\n"
"PO-Revision-Date: 2021-03-17 22:42\n" "PO-Revision-Date: 2021-04-05 20:19\n"
"Last-Translator: \n" "Last-Translator: \n"
"Language-Team: Romanian\n" "Language-Team: Romanian\n"
"Language: ro_RO\n" "Language: ro_RO\n"
@@ -226,7 +226,7 @@ msgstr "jurnal"
msgid "logs" msgid "logs"
msgstr "jurnale" msgstr "jurnale"
#: documents/models.py:344 documents/models.py:396 #: documents/models.py:344 documents/models.py:401
msgid "saved view" msgid "saved view"
msgstr "vizualizare" msgstr "vizualizare"
@@ -250,103 +250,111 @@ msgstr "afișează in bara laterala"
msgid "sort field" msgid "sort field"
msgstr "sortează camp" msgstr "sortează camp"
#: documents/models.py:364 #: documents/models.py:367
msgid "sort reverse" msgid "sort reverse"
msgstr "sortează invers" msgstr "sortează invers"
#: documents/models.py:370 #: documents/models.py:373
msgid "title contains" msgid "title contains"
msgstr "titlul conține" msgstr "titlul conține"
#: documents/models.py:371 #: documents/models.py:374
msgid "content contains" msgid "content contains"
msgstr "conținutul conține" msgstr "conținutul conține"
#: documents/models.py:372 #: documents/models.py:375
msgid "ASN is" msgid "ASN is"
msgstr "Avizul prealabil de expediție este" msgstr "Avizul prealabil de expediție este"
#: documents/models.py:373 #: documents/models.py:376
msgid "correspondent is" msgid "correspondent is"
msgstr "corespondentul este" msgstr "corespondentul este"
#: documents/models.py:374 #: documents/models.py:377
msgid "document type is" msgid "document type is"
msgstr "tipul documentului este" msgstr "tipul documentului este"
#: documents/models.py:375 #: documents/models.py:378
msgid "is in inbox" msgid "is in inbox"
msgstr "este în inbox" msgstr "este în inbox"
#: documents/models.py:376 #: documents/models.py:379
msgid "has tag" msgid "has tag"
msgstr "are eticheta" msgstr "are eticheta"
#: documents/models.py:377 #: documents/models.py:380
msgid "has any tag" msgid "has any tag"
msgstr "are orice eticheta" msgstr "are orice eticheta"
#: documents/models.py:378 #: documents/models.py:381
msgid "created before" msgid "created before"
msgstr "creat înainte de" msgstr "creat înainte de"
#: documents/models.py:379 #: documents/models.py:382
msgid "created after" msgid "created after"
msgstr "creat după" msgstr "creat după"
#: documents/models.py:380 #: documents/models.py:383
msgid "created year is" msgid "created year is"
msgstr "anul creării este" msgstr "anul creării este"
#: documents/models.py:381 #: documents/models.py:384
msgid "created month is" msgid "created month is"
msgstr "luna creării este" msgstr "luna creării este"
#: documents/models.py:382 #: documents/models.py:385
msgid "created day is" msgid "created day is"
msgstr "ziua creării este" msgstr "ziua creării este"
#: documents/models.py:383 #: documents/models.py:386
msgid "added before" msgid "added before"
msgstr "adăugat înainte de" msgstr "adăugat înainte de"
#: documents/models.py:384 #: documents/models.py:387
msgid "added after" msgid "added after"
msgstr "adăugat după" msgstr "adăugat după"
#: documents/models.py:385 #: documents/models.py:388
msgid "modified before" msgid "modified before"
msgstr "modificat înainte de" msgstr "modificat înainte de"
#: documents/models.py:386 #: documents/models.py:389
msgid "modified after" msgid "modified after"
msgstr "modificat după" msgstr "modificat după"
#: documents/models.py:387 #: documents/models.py:390
msgid "does not have tag" msgid "does not have tag"
msgstr "nu are etichetă" msgstr "nu are etichetă"
#: documents/models.py:388 #: documents/models.py:391
msgid "does not have ASN" msgid "does not have ASN"
msgstr "nu are aviz prealabil de expediție" msgstr "nu are aviz prealabil de expediție"
#: documents/models.py:389 #: documents/models.py:392
msgid "title or content contains" msgid "title or content contains"
msgstr "titlul sau conținutul conține" msgstr "titlul sau conținutul conține"
#: documents/models.py:400 #: documents/models.py:393
msgid "fulltext query"
msgstr ""
#: documents/models.py:394
msgid "more like this"
msgstr ""
#: documents/models.py:405
msgid "rule type" msgid "rule type"
msgstr "tip de regula" msgstr "tip de regula"
#: documents/models.py:404 #: documents/models.py:409
msgid "value" msgid "value"
msgstr "valoare" msgstr "valoare"
#: documents/models.py:410 #: documents/models.py:415
msgid "filter rule" msgid "filter rule"
msgstr "regulă de filtrare" msgstr "regulă de filtrare"
#: documents/models.py:411 #: documents/models.py:416
msgid "filter rules" msgid "filter rules"
msgstr "reguli de filtrare" msgstr "reguli de filtrare"
@@ -446,9 +454,9 @@ msgstr "Rusă"
#: paperless/settings.py:308 #: paperless/settings.py:308
msgid "Spanish" msgid "Spanish"
msgstr "" msgstr "Spaniolă"
#: paperless/urls.py:118 #: paperless/urls.py:113
msgid "Paperless-ng administration" msgid "Paperless-ng administration"
msgstr "Administrare Paperless-ng" msgstr "Administrare Paperless-ng"

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: paperless-ng\n" "Project-Id-Version: paperless-ng\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-03-17 22:31+0100\n" "POT-Creation-Date: 2021-04-05 22:05+0200\n"
"PO-Revision-Date: 2021-03-17 22:42\n" "PO-Revision-Date: 2021-04-05 21:31\n"
"Last-Translator: \n" "Last-Translator: \n"
"Language-Team: Russian\n" "Language-Team: Russian\n"
"Language: ru_RU\n" "Language: ru_RU\n"
@@ -226,7 +226,7 @@ msgstr "журнал"
msgid "logs" msgid "logs"
msgstr "логи" msgstr "логи"
#: documents/models.py:344 documents/models.py:396 #: documents/models.py:344 documents/models.py:401
msgid "saved view" msgid "saved view"
msgstr "сохранённое представление" msgstr "сохранённое представление"
@@ -250,103 +250,111 @@ msgstr "показать в боковой панели"
msgid "sort field" msgid "sort field"
msgstr "Поле сортировки" msgstr "Поле сортировки"
#: documents/models.py:364 #: documents/models.py:367
msgid "sort reverse" msgid "sort reverse"
msgstr "обратная сортировка" msgstr "обратная сортировка"
#: documents/models.py:370 #: documents/models.py:373
msgid "title contains" msgid "title contains"
msgstr "заголовок содержит" msgstr "заголовок содержит"
#: documents/models.py:371 #: documents/models.py:374
msgid "content contains" msgid "content contains"
msgstr "содержимое содержит" msgstr "содержимое содержит"
#: documents/models.py:372 #: documents/models.py:375
msgid "ASN is" msgid "ASN is"
msgstr "АН" msgstr "АН"
#: documents/models.py:373 #: documents/models.py:376
msgid "correspondent is" msgid "correspondent is"
msgstr "корреспондент" msgstr "корреспондент"
#: documents/models.py:374 #: documents/models.py:377
msgid "document type is" msgid "document type is"
msgstr "тип документа" msgstr "тип документа"
#: documents/models.py:375 #: documents/models.py:378
msgid "is in inbox" msgid "is in inbox"
msgstr "во входящих" msgstr "во входящих"
#: documents/models.py:376 #: documents/models.py:379
msgid "has tag" msgid "has tag"
msgstr "есть тег" msgstr "есть тег"
#: documents/models.py:377 #: documents/models.py:380
msgid "has any tag" msgid "has any tag"
msgstr "есть любой тег" msgstr "есть любой тег"
#: documents/models.py:378 #: documents/models.py:381
msgid "created before" msgid "created before"
msgstr "создан до" msgstr "создан до"
#: documents/models.py:379 #: documents/models.py:382
msgid "created after" msgid "created after"
msgstr "создан после" msgstr "создан после"
#: documents/models.py:380 #: documents/models.py:383
msgid "created year is" msgid "created year is"
msgstr "год создания" msgstr "год создания"
#: documents/models.py:381 #: documents/models.py:384
msgid "created month is" msgid "created month is"
msgstr "месяц создания" msgstr "месяц создания"
#: documents/models.py:382 #: documents/models.py:385
msgid "created day is" msgid "created day is"
msgstr "день создания" msgstr "день создания"
#: documents/models.py:383 #: documents/models.py:386
msgid "added before" msgid "added before"
msgstr "добавлен до" msgstr "добавлен до"
#: documents/models.py:384 #: documents/models.py:387
msgid "added after" msgid "added after"
msgstr "добавлен после" msgstr "добавлен после"
#: documents/models.py:385 #: documents/models.py:388
msgid "modified before" msgid "modified before"
msgstr "изменен до" msgstr "изменен до"
#: documents/models.py:386 #: documents/models.py:389
msgid "modified after" msgid "modified after"
msgstr "изменен после" msgstr "изменен после"
#: documents/models.py:387 #: documents/models.py:390
msgid "does not have tag" msgid "does not have tag"
msgstr "не имеет тега" msgstr "не имеет тега"
#: documents/models.py:388 #: documents/models.py:391
msgid "does not have ASN" msgid "does not have ASN"
msgstr "не имеет архивного номера" msgstr "не имеет архивного номера"
#: documents/models.py:389 #: documents/models.py:392
msgid "title or content contains" msgid "title or content contains"
msgstr "Название или содержимое включает" msgstr "Название или содержимое включает"
#: documents/models.py:400 #: documents/models.py:393
msgid "fulltext query"
msgstr "полнотекстовый запрос"
#: documents/models.py:394
msgid "more like this"
msgstr "больше похожих"
#: documents/models.py:405
msgid "rule type" msgid "rule type"
msgstr "Тип правила" msgstr "Тип правила"
#: documents/models.py:404 #: documents/models.py:409
msgid "value" msgid "value"
msgstr "значение" msgstr "значение"
#: documents/models.py:410 #: documents/models.py:415
msgid "filter rule" msgid "filter rule"
msgstr "Правило фильтрации" msgstr "Правило фильтрации"
#: documents/models.py:411 #: documents/models.py:416
msgid "filter rules" msgid "filter rules"
msgstr "правила фильтрации" msgstr "правила фильтрации"
@@ -448,7 +456,7 @@ msgstr "Русский"
msgid "Spanish" msgid "Spanish"
msgstr "Испанский" msgstr "Испанский"
#: paperless/urls.py:118 #: paperless/urls.py:113
msgid "Paperless-ng administration" msgid "Paperless-ng administration"
msgstr "Администрирование Paperless-ng" msgstr "Администрирование Paperless-ng"

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: paperless-ng\n" "Project-Id-Version: paperless-ng\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-03-17 22:31+0100\n" "POT-Creation-Date: 2021-04-05 22:05+0200\n"
"PO-Revision-Date: 2021-03-17 21:47\n" "PO-Revision-Date: 2021-04-05 20:20\n"
"Last-Translator: \n" "Last-Translator: \n"
"Language-Team: Xhosa\n" "Language-Team: Xhosa\n"
"Language: xh_ZA\n" "Language: xh_ZA\n"
@@ -226,7 +226,7 @@ msgstr "crwdns2628:0crwdne2628:0"
msgid "logs" msgid "logs"
msgstr "crwdns2630:0crwdne2630:0" msgstr "crwdns2630:0crwdne2630:0"
#: documents/models.py:344 documents/models.py:396 #: documents/models.py:344 documents/models.py:401
msgid "saved view" msgid "saved view"
msgstr "crwdns2632:0crwdne2632:0" msgstr "crwdns2632:0crwdne2632:0"
@@ -250,103 +250,111 @@ msgstr "crwdns2640:0crwdne2640:0"
msgid "sort field" msgid "sort field"
msgstr "crwdns2642:0crwdne2642:0" msgstr "crwdns2642:0crwdne2642:0"
#: documents/models.py:364 #: documents/models.py:367
msgid "sort reverse" msgid "sort reverse"
msgstr "crwdns2644:0crwdne2644:0" msgstr "crwdns2644:0crwdne2644:0"
#: documents/models.py:370 #: documents/models.py:373
msgid "title contains" msgid "title contains"
msgstr "crwdns2646:0crwdne2646:0" msgstr "crwdns2646:0crwdne2646:0"
#: documents/models.py:371 #: documents/models.py:374
msgid "content contains" msgid "content contains"
msgstr "crwdns2648:0crwdne2648:0" msgstr "crwdns2648:0crwdne2648:0"
#: documents/models.py:372 #: documents/models.py:375
msgid "ASN is" msgid "ASN is"
msgstr "crwdns2650:0crwdne2650:0" msgstr "crwdns2650:0crwdne2650:0"
#: documents/models.py:373 #: documents/models.py:376
msgid "correspondent is" msgid "correspondent is"
msgstr "crwdns2652:0crwdne2652:0" msgstr "crwdns2652:0crwdne2652:0"
#: documents/models.py:374 #: documents/models.py:377
msgid "document type is" msgid "document type is"
msgstr "crwdns2654:0crwdne2654:0" msgstr "crwdns2654:0crwdne2654:0"
#: documents/models.py:375 #: documents/models.py:378
msgid "is in inbox" msgid "is in inbox"
msgstr "crwdns2656:0crwdne2656:0" msgstr "crwdns2656:0crwdne2656:0"
#: documents/models.py:376 #: documents/models.py:379
msgid "has tag" msgid "has tag"
msgstr "crwdns2658:0crwdne2658:0" msgstr "crwdns2658:0crwdne2658:0"
#: documents/models.py:377 #: documents/models.py:380
msgid "has any tag" msgid "has any tag"
msgstr "crwdns2660:0crwdne2660:0" msgstr "crwdns2660:0crwdne2660:0"
#: documents/models.py:378 #: documents/models.py:381
msgid "created before" msgid "created before"
msgstr "crwdns2662:0crwdne2662:0" msgstr "crwdns2662:0crwdne2662:0"
#: documents/models.py:379 #: documents/models.py:382
msgid "created after" msgid "created after"
msgstr "crwdns2664:0crwdne2664:0" msgstr "crwdns2664:0crwdne2664:0"
#: documents/models.py:380 #: documents/models.py:383
msgid "created year is" msgid "created year is"
msgstr "crwdns2666:0crwdne2666:0" msgstr "crwdns2666:0crwdne2666:0"
#: documents/models.py:381 #: documents/models.py:384
msgid "created month is" msgid "created month is"
msgstr "crwdns2668:0crwdne2668:0" msgstr "crwdns2668:0crwdne2668:0"
#: documents/models.py:382 #: documents/models.py:385
msgid "created day is" msgid "created day is"
msgstr "crwdns2670:0crwdne2670:0" msgstr "crwdns2670:0crwdne2670:0"
#: documents/models.py:383 #: documents/models.py:386
msgid "added before" msgid "added before"
msgstr "crwdns2672:0crwdne2672:0" msgstr "crwdns2672:0crwdne2672:0"
#: documents/models.py:384 #: documents/models.py:387
msgid "added after" msgid "added after"
msgstr "crwdns2674:0crwdne2674:0" msgstr "crwdns2674:0crwdne2674:0"
#: documents/models.py:385 #: documents/models.py:388
msgid "modified before" msgid "modified before"
msgstr "crwdns2676:0crwdne2676:0" msgstr "crwdns2676:0crwdne2676:0"
#: documents/models.py:386 #: documents/models.py:389
msgid "modified after" msgid "modified after"
msgstr "crwdns2678:0crwdne2678:0" msgstr "crwdns2678:0crwdne2678:0"
#: documents/models.py:387 #: documents/models.py:390
msgid "does not have tag" msgid "does not have tag"
msgstr "crwdns2680:0crwdne2680:0" msgstr "crwdns2680:0crwdne2680:0"
#: documents/models.py:388 #: documents/models.py:391
msgid "does not have ASN" msgid "does not have ASN"
msgstr "crwdns3408:0crwdne3408:0" msgstr "crwdns3408:0crwdne3408:0"
#: documents/models.py:389 #: documents/models.py:392
msgid "title or content contains" msgid "title or content contains"
msgstr "crwdns3410:0crwdne3410:0" msgstr "crwdns3410:0crwdne3410:0"
#: documents/models.py:400 #: documents/models.py:393
msgid "fulltext query"
msgstr "crwdns3438:0crwdne3438:0"
#: documents/models.py:394
msgid "more like this"
msgstr "crwdns3440:0crwdne3440:0"
#: documents/models.py:405
msgid "rule type" msgid "rule type"
msgstr "crwdns2682:0crwdne2682:0" msgstr "crwdns2682:0crwdne2682:0"
#: documents/models.py:404 #: documents/models.py:409
msgid "value" msgid "value"
msgstr "crwdns2684:0crwdne2684:0" msgstr "crwdns2684:0crwdne2684:0"
#: documents/models.py:410 #: documents/models.py:415
msgid "filter rule" msgid "filter rule"
msgstr "crwdns2686:0crwdne2686:0" msgstr "crwdns2686:0crwdne2686:0"
#: documents/models.py:411 #: documents/models.py:416
msgid "filter rules" msgid "filter rules"
msgstr "crwdns2688:0crwdne2688:0" msgstr "crwdns2688:0crwdne2688:0"
@@ -448,7 +456,7 @@ msgstr "crwdns3414:0crwdne3414:0"
msgid "Spanish" msgid "Spanish"
msgstr "crwdns3420:0crwdne3420:0" msgstr "crwdns3420:0crwdne3420:0"
#: paperless/urls.py:118 #: paperless/urls.py:113
msgid "Paperless-ng administration" msgid "Paperless-ng administration"
msgstr "crwdns2732:0crwdne2732:0" msgstr "crwdns2732:0crwdne2732:0"

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: paperless-ng\n" "Project-Id-Version: paperless-ng\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-03-17 22:31+0100\n" "POT-Creation-Date: 2021-04-05 22:05+0200\n"
"PO-Revision-Date: 2021-03-17 21:48\n" "PO-Revision-Date: 2021-04-05 20:20\n"
"Last-Translator: \n" "Last-Translator: \n"
"Language-Team: Chinese Simplified\n" "Language-Team: Chinese Simplified\n"
"Language: zh_CN\n" "Language: zh_CN\n"
@@ -226,7 +226,7 @@ msgstr ""
msgid "logs" msgid "logs"
msgstr "" msgstr ""
#: documents/models.py:344 documents/models.py:396 #: documents/models.py:344 documents/models.py:401
msgid "saved view" msgid "saved view"
msgstr "" msgstr ""
@@ -250,103 +250,111 @@ msgstr ""
msgid "sort field" msgid "sort field"
msgstr "" msgstr ""
#: documents/models.py:364 #: documents/models.py:367
msgid "sort reverse" msgid "sort reverse"
msgstr "" msgstr ""
#: documents/models.py:370 #: documents/models.py:373
msgid "title contains" msgid "title contains"
msgstr "" msgstr ""
#: documents/models.py:371 #: documents/models.py:374
msgid "content contains" msgid "content contains"
msgstr "" msgstr ""
#: documents/models.py:372 #: documents/models.py:375
msgid "ASN is" msgid "ASN is"
msgstr "" msgstr ""
#: documents/models.py:373 #: documents/models.py:376
msgid "correspondent is" msgid "correspondent is"
msgstr "" msgstr ""
#: documents/models.py:374 #: documents/models.py:377
msgid "document type is" msgid "document type is"
msgstr "" msgstr ""
#: documents/models.py:375 #: documents/models.py:378
msgid "is in inbox" msgid "is in inbox"
msgstr "" msgstr ""
#: documents/models.py:376 #: documents/models.py:379
msgid "has tag" msgid "has tag"
msgstr "" msgstr ""
#: documents/models.py:377 #: documents/models.py:380
msgid "has any tag" msgid "has any tag"
msgstr "" msgstr ""
#: documents/models.py:378 #: documents/models.py:381
msgid "created before" msgid "created before"
msgstr "" msgstr ""
#: documents/models.py:379 #: documents/models.py:382
msgid "created after" msgid "created after"
msgstr "" msgstr ""
#: documents/models.py:380 #: documents/models.py:383
msgid "created year is" msgid "created year is"
msgstr "" msgstr ""
#: documents/models.py:381 #: documents/models.py:384
msgid "created month is" msgid "created month is"
msgstr "" msgstr ""
#: documents/models.py:382 #: documents/models.py:385
msgid "created day is" msgid "created day is"
msgstr "" msgstr ""
#: documents/models.py:383 #: documents/models.py:386
msgid "added before" msgid "added before"
msgstr "" msgstr ""
#: documents/models.py:384 #: documents/models.py:387
msgid "added after" msgid "added after"
msgstr "" msgstr ""
#: documents/models.py:385 #: documents/models.py:388
msgid "modified before" msgid "modified before"
msgstr "" msgstr ""
#: documents/models.py:386 #: documents/models.py:389
msgid "modified after" msgid "modified after"
msgstr "" msgstr ""
#: documents/models.py:387 #: documents/models.py:390
msgid "does not have tag" msgid "does not have tag"
msgstr "" msgstr ""
#: documents/models.py:388 #: documents/models.py:391
msgid "does not have ASN" msgid "does not have ASN"
msgstr "" msgstr ""
#: documents/models.py:389 #: documents/models.py:392
msgid "title or content contains" msgid "title or content contains"
msgstr "" msgstr ""
#: documents/models.py:400 #: documents/models.py:393
msgid "fulltext query"
msgstr ""
#: documents/models.py:394
msgid "more like this"
msgstr ""
#: documents/models.py:405
msgid "rule type" msgid "rule type"
msgstr "" msgstr ""
#: documents/models.py:404 #: documents/models.py:409
msgid "value" msgid "value"
msgstr "" msgstr ""
#: documents/models.py:410 #: documents/models.py:415
msgid "filter rule" msgid "filter rule"
msgstr "" msgstr ""
#: documents/models.py:411 #: documents/models.py:416
msgid "filter rules" msgid "filter rules"
msgstr "" msgstr ""
@@ -448,7 +456,7 @@ msgstr ""
msgid "Spanish" msgid "Spanish"
msgstr "" msgstr ""
#: paperless/urls.py:118 #: paperless/urls.py:113
msgid "Paperless-ng administration" msgid "Paperless-ng administration"
msgstr "" msgstr ""

View File

@@ -23,9 +23,12 @@ def path_check(var, directory):
exists_hint.format(directory) exists_hint.format(directory)
)) ))
else: else:
test_file = os.path.join(directory, '__paperless_write_test__') test_file = os.path.join(
directory, f'__paperless_write_test_{os.getpid()}__'
)
try: try:
open(test_file, 'w') with open(test_file, 'w'):
pass
except PermissionError: except PermissionError:
messages.append(Error( messages.append(Error(
writeable_message.format(var), writeable_message.format(var),
@@ -33,8 +36,9 @@ def path_check(var, directory):
f'\n{stat.filemode(os.stat(directory).st_mode)} ' f'\n{stat.filemode(os.stat(directory).st_mode)} '
f'{directory}\n') f'{directory}\n')
)) ))
else: finally:
os.remove(test_file) if os.path.isfile(test_file):
os.remove(test_file)
return messages return messages

View File

@@ -12,11 +12,10 @@ from django.utils.translation import gettext_lazy as _
from paperless.consumers import StatusConsumer from paperless.consumers import StatusConsumer
from documents.views import ( from documents.views import (
CorrespondentViewSet, CorrespondentViewSet,
DocumentViewSet, UnifiedSearchViewSet,
LogViewSet, LogViewSet,
TagViewSet, TagViewSet,
DocumentTypeViewSet, DocumentTypeViewSet,
SearchView,
IndexView, IndexView,
SearchAutoCompleteView, SearchAutoCompleteView,
StatisticsView, StatisticsView,
@@ -31,7 +30,7 @@ from paperless.views import FaviconView
api_router = DefaultRouter() api_router = DefaultRouter()
api_router.register(r"correspondents", CorrespondentViewSet) api_router.register(r"correspondents", CorrespondentViewSet)
api_router.register(r"document_types", DocumentTypeViewSet) api_router.register(r"document_types", DocumentTypeViewSet)
api_router.register(r"documents", DocumentViewSet) api_router.register(r"documents", UnifiedSearchViewSet)
api_router.register(r"logs", LogViewSet, basename="logs") api_router.register(r"logs", LogViewSet, basename="logs")
api_router.register(r"tags", TagViewSet) api_router.register(r"tags", TagViewSet)
api_router.register(r"saved_views", SavedViewViewSet) api_router.register(r"saved_views", SavedViewViewSet)
@@ -47,10 +46,6 @@ urlpatterns = [
SearchAutoCompleteView.as_view(), SearchAutoCompleteView.as_view(),
name="autocomplete"), name="autocomplete"),
re_path(r"^search/",
SearchView.as_view(),
name="search"),
re_path(r"^statistics/", re_path(r"^statistics/",
StatisticsView.as_view(), StatisticsView.as_view(),
name="statistics"), name="statistics"),

View File

@@ -1 +1 @@
__version__ = (1, 3, 2) __version__ = (1, 4, 0)

View File

@@ -104,7 +104,7 @@ class RasterisedDocumentParser(DocumentParser):
# This happens when there's already text in the input file. # This happens when there's already text in the input file.
# The sidecar file will only contain text for OCR'ed pages. # The sidecar file will only contain text for OCR'ed pages.
self.log("debug", "Using text from sidecar file") self.log("debug", "Using text from sidecar file")
return text return post_process_text(text)
else: else:
self.log("debug", "Incomplete sidecar file: discarding.") self.log("debug", "Incomplete sidecar file: discarding.")
@@ -113,12 +113,12 @@ class RasterisedDocumentParser(DocumentParser):
if not os.path.isfile(pdf_file): if not os.path.isfile(pdf_file):
return None return None
from pdfminer.high_level import extract_text from pdfminer.high_level import extract_text as pdfminer_extract_text
from pdfminer.pdftypes import PDFException from pdfminer.pdftypes import PDFException
try: try:
text = extract_text(pdf_file) stripped = post_process_text(pdfminer_extract_text(pdf_file))
stripped = strip_excess_whitespace(text)
self.log("debug", f"Extracted text from PDF file {pdf_file}") self.log("debug", f"Extracted text from PDF file {pdf_file}")
return stripped return stripped
except PDFException: except PDFException:
@@ -244,9 +244,9 @@ class RasterisedDocumentParser(DocumentParser):
if original_has_text: if original_has_text:
self.text = text_original self.text = text_original
except (NoTextFoundException, InputFileError) as e: except (NoTextFoundException, InputFileError) as e:
self.log("exception", self.log("warning",
f"Encountered the following error while running OCR, " f"Encountered an error while running OCR: {str(e)}. "
f"attempting force OCR to get the text.") f"Attempting force OCR to get the text.")
archive_path_fallback = os.path.join( archive_path_fallback = os.path.join(
self.tempdir, "archive-fallback.pdf") self.tempdir, "archive-fallback.pdf")
@@ -294,7 +294,7 @@ class RasterisedDocumentParser(DocumentParser):
self.text = "" self.text = ""
def strip_excess_whitespace(text): def post_process_text(text):
if not text: if not text:
return None return None
@@ -305,4 +305,6 @@ def strip_excess_whitespace(text):
r"([^\S\n\r]+)$", '', no_leading_whitespace) r"([^\S\n\r]+)$", '', no_leading_whitespace)
# TODO: this needs a rework # TODO: this needs a rework
return no_trailing_whitespace.strip() # replace \0 prevents issues with saving to postgres.
# text may contain \0 when this character is present in PDF files.
return no_trailing_whitespace.strip().replace("\0", " ")

View File

@@ -7,7 +7,7 @@ from django.test import TestCase, override_settings
from documents.parsers import ParseError, run_convert from documents.parsers import ParseError, run_convert
from documents.tests.utils import DirectoriesMixin from documents.tests.utils import DirectoriesMixin
from paperless_tesseract.parsers import RasterisedDocumentParser, strip_excess_whitespace from paperless_tesseract.parsers import RasterisedDocumentParser, post_process_text
image_to_string_calls = [] image_to_string_calls = []
@@ -32,8 +32,6 @@ class FakeImageFile(ContextManager):
return os.path.basename(self.fname) return os.path.basename(self.fname)
class TestParser(DirectoriesMixin, TestCase): class TestParser(DirectoriesMixin, TestCase):
def assertContainsStrings(self, content, strings): def assertContainsStrings(self, content, strings):
@@ -58,9 +56,9 @@ class TestParser(DirectoriesMixin, TestCase):
) )
] ]
def test_strip_excess_whitespace(self): def test_post_process_text(self):
for source, result in self.text_cases: for source, result in self.text_cases:
actual_result = strip_excess_whitespace(source) actual_result = post_process_text(source)
self.assertEqual( self.assertEqual(
result, result,
actual_result, actual_result,