mirror of
https://github.com/paperless-ngx/paperless-ngx.git
synced 2026-10-27 06:45:14 +00:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
aeb49898e5 | ||
|
|
a2c8fcd46b | ||
|
|
357ae92d88 | ||
|
|
74330623b3 | ||
|
|
3813dc2e18 | ||
|
|
3df8be0bc7 | ||
|
|
cc25cbc026 | ||
|
|
e98d52830f | ||
|
|
4903e4290d | ||
|
|
e1ba1a1898 | ||
|
|
b29c1e91d1 | ||
|
|
a03c7701a5 | ||
|
|
b8c9d1316c | ||
|
|
a63ef26d38 | ||
|
|
96b2884458 | ||
|
|
8543202723 | ||
|
|
a63904b7af | ||
|
|
eb27bc9e7d | ||
|
|
489b24ad65 | ||
|
|
5349eb2302 | ||
|
|
a8fd023398 | ||
|
|
e34d48d913 | ||
|
|
ee529c2276 | ||
|
|
3d5e45c20a | ||
|
|
b8283047ae | ||
|
|
dad3a1ff28 | ||
|
|
ce663398e6 | ||
|
|
f5ec6de047 | ||
|
|
807f788f92 | ||
|
|
eaaaa575b8 | ||
|
|
e21552e053 | ||
|
|
6a7274c414 | ||
|
|
35de04a2ce | ||
|
|
a0c227fe55 | ||
|
|
057ce29676 | ||
|
|
982eeb0d24 | ||
|
|
dfa25343a3 | ||
|
|
dcfb4494c9 | ||
|
|
5a1ef27224 | ||
|
|
6f79ee9877 | ||
|
|
bc0e420d67 | ||
|
|
8e34756e6b | ||
|
|
76951ea482 | ||
|
|
b5e4aaa778 | ||
|
|
39998cb34f | ||
|
|
a771d2afd9 | ||
|
|
dac3def6b9 | ||
|
|
674b4a839c | ||
|
|
037dcb6a11 | ||
|
|
ad8c60d153 | ||
|
|
3ea312e136 | ||
|
|
d2a04743eb | ||
|
|
b34f9c3b20 | ||
|
|
fea7b0ec8c | ||
|
|
0042e3eca4 | ||
|
|
36db6f3d4b | ||
|
|
3c633c2015 | ||
|
|
dd8b51de67 | ||
|
|
5fe846de1d | ||
|
|
4711468598 |
No files matched your search
@@ -110,6 +110,8 @@ body:
|
||||
options:
|
||||
- label: I believe this issue is a bug that affects all users of Paperless-ngx, not something specific to my installation.
|
||||
required: true
|
||||
- label: This issue is not about the OCR or archive creation of a specific file(s). Otherwise, please see above regarding OCR tools.
|
||||
required: true
|
||||
- label: I have already searched for relevant existing issues and discussions before opening this report.
|
||||
required: true
|
||||
- label: I have updated the title field above with a concise description.
|
||||
|
||||
@@ -36,8 +36,9 @@ repos:
|
||||
exclude_types:
|
||||
- pofile
|
||||
- json
|
||||
- repo: https://github.com/pre-commit/mirrors-prettier
|
||||
rev: 'v3.1.0'
|
||||
# See https://github.com/prettier/prettier/issues/15742 for the fork reason
|
||||
- repo: https://github.com/rbubley/mirrors-prettier
|
||||
rev: 'v3.3.3'
|
||||
hooks:
|
||||
- id: prettier
|
||||
types_or:
|
||||
@@ -47,7 +48,7 @@ repos:
|
||||
exclude: "(^Pipfile\\.lock$)"
|
||||
# Python hooks
|
||||
- repo: https://github.com/astral-sh/ruff-pre-commit
|
||||
rev: 'v0.5.6'
|
||||
rev: 'v0.6.4'
|
||||
hooks:
|
||||
- id: ruff
|
||||
- id: ruff-format
|
||||
|
||||
+3
-1
@@ -246,7 +246,7 @@ RUN --mount=type=cache,target=/root/.cache/pip/,id=pip-cache \
|
||||
&& echo "Installing NLTK data" \
|
||||
&& python3 -W ignore::RuntimeWarning -m nltk.downloader -d "/usr/share/nltk_data" snowball_data \
|
||||
&& python3 -W ignore::RuntimeWarning -m nltk.downloader -d "/usr/share/nltk_data" stopwords \
|
||||
&& python3 -W ignore::RuntimeWarning -m nltk.downloader -d "/usr/share/nltk_data" punkt \
|
||||
&& python3 -W ignore::RuntimeWarning -m nltk.downloader -d "/usr/share/nltk_data" punkt_tab \
|
||||
&& echo "Cleaning up image" \
|
||||
&& apt-get --yes purge ${BUILD_PACKAGES} \
|
||||
&& apt-get --yes autoremove --purge \
|
||||
@@ -275,6 +275,8 @@ RUN set -eux \
|
||||
&& mkdir --parents --verbose /usr/src/paperless/media \
|
||||
&& mkdir --parents --verbose /usr/src/paperless/consume \
|
||||
&& mkdir --parents --verbose /usr/src/paperless/export \
|
||||
&& echo "Creating gnupg directory" \
|
||||
&& mkdir -m700 --verbose /usr/src/paperless/.gnupg \
|
||||
&& echo "Adjusting all permissions" \
|
||||
&& chown --from root:root --changes --recursive paperless:paperless /usr/src/paperless \
|
||||
&& echo "Collecting static files" \
|
||||
|
||||
@@ -14,7 +14,7 @@ django-celery-results = "*"
|
||||
django-compression-middleware = "*"
|
||||
django-cors-headers = "*"
|
||||
django-extensions = "*"
|
||||
django-filter = "~=24.2"
|
||||
django-filter = "~=24.3"
|
||||
django-guardian = "*"
|
||||
django-multiselectfield = "*"
|
||||
django-soft-delete = "*"
|
||||
|
||||
Generated
+1772
-1543
File diff suppressed because it is too large.
Load diff
+11
-5
@@ -248,6 +248,7 @@ optional arguments:
|
||||
-z, --zip
|
||||
-zn, --zip-name
|
||||
--data-only
|
||||
--no-progress-bar
|
||||
--passphrase
|
||||
```
|
||||
|
||||
@@ -310,6 +311,10 @@ value set in `-zn` or `--zip-name`.
|
||||
If `--data-only` is provided, only the database will be exported. This option is intended
|
||||
to facilitate database upgrades without needing to clean documents and thumbnails from the media directory.
|
||||
|
||||
If `--no-progress-bar` is provided, the progress bar will be hidden, rendering the
|
||||
exporter quiet. This option is useful for scripting scenarios, such as when using the
|
||||
exporter with `crontab`.
|
||||
|
||||
If `--passphrase` is provided, it will be used to encrypt certain fields in the export. This value
|
||||
must be provided to import. If this value is lost, the export cannot be imported.
|
||||
|
||||
@@ -331,11 +336,12 @@ and the script does the rest of the work:
|
||||
document_importer source
|
||||
```
|
||||
|
||||
| Option | Required | Default | Description |
|
||||
| -------------- | -------- | ------- | ------------------------------------------------------------------------- |
|
||||
| source | Yes | N/A | The directory containing an export |
|
||||
| `--data-only` | No | False | If provided, only import data, do not import document files or thumbnails |
|
||||
| `--passphrase` | No | N/A | If your export was encrypted with a passphrase, must be provided |
|
||||
| Option | Required | Default | Description |
|
||||
| ------------------- | -------- | ------- | ------------------------------------------------------------------------- |
|
||||
| source | Yes | N/A | The directory containing an export |
|
||||
| `--no-progress-bar` | No | False | If provided, the progress bar will be hidden |
|
||||
| `--data-only` | No | False | If provided, only import data, do not import document files or thumbnails |
|
||||
| `--passphrase` | No | N/A | If your export was encrypted with a passphrase, must be provided |
|
||||
|
||||
When you use the provided docker compose script, put the export inside
|
||||
the `export` folder in your paperless source directory. Specify
|
||||
|
||||
@@ -690,3 +690,57 @@ More details about configuration option for various providers can be found in th
|
||||
|
||||
Once external auth is set up, 'regular' login can be disabled with the [PAPERLESS_DISABLE_REGULAR_LOGIN](configuration.md#PAPERLESS_DISABLE_REGULAR_LOGIN) setting and / or users can be automatically
|
||||
redirected with the [PAPERLESS_REDIRECT_LOGIN_TO_SSO](configuration.md#PAPERLESS_REDIRECT_LOGIN_TO_SSO) setting.
|
||||
|
||||
## Decryption of encrypted emails before consumption {#gpg-decryptor}
|
||||
|
||||
Paperless-ngx can be configured to decrypt gpg encrypted emails before consumption.
|
||||
|
||||
### Requirements
|
||||
|
||||
You need a recent version of `gpg-agent >= 2.1.1` installed on your host.
|
||||
Your host needs to be setup for decrypting your emails via `gpg-agent`, see this [tutorial](https://www.digitalocean.com/community/tutorials/how-to-use-gpg-to-encrypt-and-sign-messages#encrypt-and-decrypt-messages-with-gpg) for instance.
|
||||
Test your setup and make sure that you can encrypt and decrypt files using your key
|
||||
|
||||
```
|
||||
gpg --encrypt --armor -r person@email.com name_of_file
|
||||
gpg --decrypt name_of_file.asc
|
||||
```
|
||||
|
||||
### Setup
|
||||
|
||||
First, enable the [PAPERLESS_GPG_DECRYPTOR environment variable](configuration.md#PAPERLESS_GPG_DECRYPTOR).
|
||||
|
||||
Then determine your local `gpg-agent.extra` socket by invoking
|
||||
|
||||
```
|
||||
gpgconf --list-dir agent-extra-socket
|
||||
```
|
||||
|
||||
on your host. A possible output is `~/.gnupg/S.gpg-agent.extra`.
|
||||
Also find the location of your public keyring.
|
||||
|
||||
If using docker, you'll need to add the following volume mounts to your `docker-compose.yml` file:
|
||||
|
||||
```yaml
|
||||
webserver:
|
||||
volumes:
|
||||
- /home/user/.gnupg/pubring.gpg:/usr/src/paperless/.gnupg/pubring.gpg
|
||||
- <path to gpg-agent.extra socket>:/usr/src/paperless/.gnupg/S.gpg-agent
|
||||
```
|
||||
|
||||
For a 'bare-metal' installation no further configuration is necessary. If you
|
||||
want to use a separate `GNUPG_HOME`, you can do so by configuring the [PAPERLESS_EMAIL_GNUPG_HOME environment variable](configuration.md#PAPERLESS_EMAIL_GNUPG_HOME).
|
||||
|
||||
### Troubleshooting
|
||||
|
||||
- Make sure, that `gpg-agent` is running on your host machine
|
||||
- Make sure, that encryption and decryption works from inside the container using the `gpg` commands from above.
|
||||
- Check that all files in `/usr/src/paperless/.gnupg` have correct permissions
|
||||
|
||||
```shell
|
||||
paperless@9da1865df327:~/.gnupg$ ls -al
|
||||
drwx------ 1 paperless paperless 4096 Aug 18 17:52 .
|
||||
drwxr-xr-x 1 paperless paperless 4096 Aug 18 17:52 ..
|
||||
srw------- 1 paperless paperless 0 Aug 18 17:22 S.gpg-agent
|
||||
-rw------- 1 paperless paperless 147940 Jul 24 10:23 pubring.gpg
|
||||
```
|
||||
@@ -1,5 +1,120 @@
|
||||
# Changelog
|
||||
|
||||
## paperless-ngx 2.11.6
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- Fix: fix nltk tokenizer breaking change [@shamoon](https://github.com/shamoon) ([#7522](https://github.com/paperless-ngx/paperless-ngx/pull/7522))
|
||||
|
||||
### All App Changes
|
||||
|
||||
<details>
|
||||
<summary>1 change</summary>
|
||||
|
||||
- Fix: fix nltk tokenizer breaking change [@shamoon](https://github.com/shamoon) ([#7522](https://github.com/paperless-ngx/paperless-ngx/pull/7522))
|
||||
</details>
|
||||
|
||||
## paperless-ngx 2.11.5
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- Fix: use JSON for update archive file auditlog entries [@shamoon](https://github.com/shamoon) ([#7503](https://github.com/paperless-ngx/paperless-ngx/pull/7503))
|
||||
- Fix: respect deskew / rotate pages from AppConfig if set [@shamoon](https://github.com/shamoon) ([#7501](https://github.com/paperless-ngx/paperless-ngx/pull/7501))
|
||||
|
||||
### Dependencies
|
||||
|
||||
<details>
|
||||
<summary>5 changes</summary>
|
||||
|
||||
- Chore(deps): Bump the small-changes group across 1 directory with 6 updates [@dependabot](https://github.com/dependabot) ([#7502](https://github.com/paperless-ngx/paperless-ngx/pull/7502))
|
||||
- Chore(deps-dev): Bump the development group with 2 updates [@dependabot](https://github.com/dependabot) ([#7497](https://github.com/paperless-ngx/paperless-ngx/pull/7497))
|
||||
- Chore(deps-dev): Bump axios from 1.6.7 to 1.7.4 in /src-ui [@dependabot](https://github.com/dependabot) ([#7472](https://github.com/paperless-ngx/paperless-ngx/pull/7472))
|
||||
- Chore(deps-dev): Bump ruff from 0.5.6 to 0.5.7 in the development group [@dependabot](https://github.com/dependabot) ([#7457](https://github.com/paperless-ngx/paperless-ngx/pull/7457))
|
||||
- Chore(deps): Bump the small-changes group with 3 updates [@dependabot](https://github.com/dependabot) ([#7460](https://github.com/paperless-ngx/paperless-ngx/pull/7460))
|
||||
</details>
|
||||
|
||||
### All App Changes
|
||||
|
||||
<details>
|
||||
<summary>7 changes</summary>
|
||||
|
||||
- Fix: use JSON for update archive file auditlog entries [@shamoon](https://github.com/shamoon) ([#7503](https://github.com/paperless-ngx/paperless-ngx/pull/7503))
|
||||
- Chore(deps): Bump the small-changes group across 1 directory with 6 updates [@dependabot](https://github.com/dependabot) ([#7502](https://github.com/paperless-ngx/paperless-ngx/pull/7502))
|
||||
- Fix: respect deskew / rotate pages from AppConfig if set [@shamoon](https://github.com/shamoon) ([#7501](https://github.com/paperless-ngx/paperless-ngx/pull/7501))
|
||||
- Chore(deps-dev): Bump the development group with 2 updates [@dependabot](https://github.com/dependabot) ([#7497](https://github.com/paperless-ngx/paperless-ngx/pull/7497))
|
||||
- Chore(deps-dev): Bump axios from 1.6.7 to 1.7.4 in /src-ui [@dependabot](https://github.com/dependabot) ([#7472](https://github.com/paperless-ngx/paperless-ngx/pull/7472))
|
||||
- Chore(deps-dev): Bump ruff from 0.5.6 to 0.5.7 in the development group [@dependabot](https://github.com/dependabot) ([#7457](https://github.com/paperless-ngx/paperless-ngx/pull/7457))
|
||||
- Chore(deps): Bump the small-changes group with 3 updates [@dependabot](https://github.com/dependabot) ([#7460](https://github.com/paperless-ngx/paperless-ngx/pull/7460))
|
||||
</details>
|
||||
|
||||
## paperless-ngx 2.11.4
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- Fix: initial upload message not being dismissed [@shamoon](https://github.com/shamoon) ([#7438](https://github.com/paperless-ngx/paperless-ngx/pull/7438))
|
||||
|
||||
### All App Changes
|
||||
|
||||
- Fix: initial upload message not being dismissed [@shamoon](https://github.com/shamoon) ([#7438](https://github.com/paperless-ngx/paperless-ngx/pull/7438))
|
||||
|
||||
## paperless-ngx 2.11.3
|
||||
|
||||
### Features
|
||||
|
||||
- Enhancement: optimize tasks / stats reload [@shamoon](https://github.com/shamoon) ([#7402](https://github.com/paperless-ngx/paperless-ngx/pull/7402))
|
||||
- Enhancement: allow specifying default currency for Monetary custom field [@shamoon](https://github.com/shamoon) ([#7381](https://github.com/paperless-ngx/paperless-ngx/pull/7381))
|
||||
- Enhancement: specify when pre-check fails for documents in trash [@shamoon](https://github.com/shamoon) ([#7355](https://github.com/paperless-ngx/paperless-ngx/pull/7355))
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- Fix: clear selection after reload for management lists [@shamoon](https://github.com/shamoon) ([#7421](https://github.com/paperless-ngx/paperless-ngx/pull/7421))
|
||||
- Fix: disable inline create buttons if insufficient permissions [@shamoon](https://github.com/shamoon) ([#7401](https://github.com/paperless-ngx/paperless-ngx/pull/7401))
|
||||
- Fix: use entire document for dropzone [@shamoon](https://github.com/shamoon) ([#7342](https://github.com/paperless-ngx/paperless-ngx/pull/7342))
|
||||
|
||||
### Maintenance
|
||||
|
||||
- Chore(deps): Bump stumpylog/image-cleaner-action from 0.7.0 to 0.8.0 in the actions group [@dependabot](https://github.com/dependabot) ([#7371](https://github.com/paperless-ngx/paperless-ngx/pull/7371))
|
||||
|
||||
### Dependencies
|
||||
|
||||
<details>
|
||||
<summary>11 changes</summary>
|
||||
|
||||
- Chore(deps): Bump django from 4.2.14 to 4.2.15 [@dependabot](https://github.com/dependabot) ([#7412](https://github.com/paperless-ngx/paperless-ngx/pull/7412))
|
||||
- Chore(deps-dev): Bump the development group with 3 updates [@dependabot](https://github.com/dependabot) ([#7394](https://github.com/paperless-ngx/paperless-ngx/pull/7394))
|
||||
- Chore(deps): Bump the small-changes group with 5 updates [@dependabot](https://github.com/dependabot) ([#7397](https://github.com/paperless-ngx/paperless-ngx/pull/7397))
|
||||
- Chore(deps-dev): Bump [@<!---->playwright/test from 1.42.1 to 1.45.3 in /src-ui @dependabot](https://github.com/<!---->playwright/test from 1.42.1 to 1.45.3 in /src-ui @dependabot) ([#7367](https://github.com/paperless-ngx/paperless-ngx/pull/7367))
|
||||
- Chore(deps-dev): Bump [@<!---->types/node from 20.12.2 to 22.0.2 in /src-ui @dependabot](https://github.com/<!---->types/node from 20.12.2 to 22.0.2 in /src-ui @dependabot) ([#7366](https://github.com/paperless-ngx/paperless-ngx/pull/7366))
|
||||
- Chore(deps-dev): Bump the frontend-eslint-dependencies group in /src-ui with 4 updates [@dependabot](https://github.com/dependabot) ([#7365](https://github.com/paperless-ngx/paperless-ngx/pull/7365))
|
||||
- Chore(deps): Bump uuid from 9.0.1 to 10.0.0 in /src-ui [@dependabot](https://github.com/dependabot) ([#7370](https://github.com/paperless-ngx/paperless-ngx/pull/7370))
|
||||
- Chore(deps): Bump stumpylog/image-cleaner-action from 0.7.0 to 0.8.0 in the actions group [@dependabot](https://github.com/dependabot) ([#7371](https://github.com/paperless-ngx/paperless-ngx/pull/7371))
|
||||
- Chore(deps): Bump zone.js from 0.14.4 to 0.14.8 in /src-ui [@dependabot](https://github.com/dependabot) ([#7368](https://github.com/paperless-ngx/paperless-ngx/pull/7368))
|
||||
- Chore(deps-dev): Bump jest-preset-angular from 14.1.1 to 14.2.2 in /src-ui in the frontend-jest-dependencies group [@dependabot](https://github.com/dependabot) ([#7364](https://github.com/paperless-ngx/paperless-ngx/pull/7364))
|
||||
- Chore(deps): Bump the frontend-angular-dependencies group in /src-ui with 20 updates [@dependabot](https://github.com/dependabot) ([#7363](https://github.com/paperless-ngx/paperless-ngx/pull/7363))
|
||||
</details>
|
||||
|
||||
### All App Changes
|
||||
|
||||
<details>
|
||||
<summary>15 changes</summary>
|
||||
|
||||
- Fix: clear selection after reload for management lists [@shamoon](https://github.com/shamoon) ([#7421](https://github.com/paperless-ngx/paperless-ngx/pull/7421))
|
||||
- Enhancement: optimize tasks / stats reload [@shamoon](https://github.com/shamoon) ([#7402](https://github.com/paperless-ngx/paperless-ngx/pull/7402))
|
||||
- Enhancement: allow specifying default currency for Monetary custom field [@shamoon](https://github.com/shamoon) ([#7381](https://github.com/paperless-ngx/paperless-ngx/pull/7381))
|
||||
- Enhancement: specify when pre-check fails for documents in trash [@shamoon](https://github.com/shamoon) ([#7355](https://github.com/paperless-ngx/paperless-ngx/pull/7355))
|
||||
- Chore(deps-dev): Bump the development group with 3 updates [@dependabot](https://github.com/dependabot) ([#7394](https://github.com/paperless-ngx/paperless-ngx/pull/7394))
|
||||
- Fix: disable inline create buttons if insufficient permissions [@shamoon](https://github.com/shamoon) ([#7401](https://github.com/paperless-ngx/paperless-ngx/pull/7401))
|
||||
- Chore(deps): Bump the small-changes group with 5 updates [@dependabot](https://github.com/dependabot) ([#7397](https://github.com/paperless-ngx/paperless-ngx/pull/7397))
|
||||
- Chore(deps-dev): Bump [@<!---->playwright/test from 1.42.1 to 1.45.3 in /src-ui @dependabot](https://github.com/<!---->playwright/test from 1.42.1 to 1.45.3 in /src-ui @dependabot) ([#7367](https://github.com/paperless-ngx/paperless-ngx/pull/7367))
|
||||
- Chore(deps-dev): Bump [@<!---->types/node from 20.12.2 to 22.0.2 in /src-ui @dependabot](https://github.com/<!---->types/node from 20.12.2 to 22.0.2 in /src-ui @dependabot) ([#7366](https://github.com/paperless-ngx/paperless-ngx/pull/7366))
|
||||
- Chore(deps-dev): Bump the frontend-eslint-dependencies group in /src-ui with 4 updates [@dependabot](https://github.com/dependabot) ([#7365](https://github.com/paperless-ngx/paperless-ngx/pull/7365))
|
||||
- Chore(deps): Bump uuid from 9.0.1 to 10.0.0 in /src-ui [@dependabot](https://github.com/dependabot) ([#7370](https://github.com/paperless-ngx/paperless-ngx/pull/7370))
|
||||
- Chore(deps): Bump zone.js from 0.14.4 to 0.14.8 in /src-ui [@dependabot](https://github.com/dependabot) ([#7368](https://github.com/paperless-ngx/paperless-ngx/pull/7368))
|
||||
- Chore(deps-dev): Bump jest-preset-angular from 14.1.1 to 14.2.2 in /src-ui in the frontend-jest-dependencies group [@dependabot](https://github.com/dependabot) ([#7364](https://github.com/paperless-ngx/paperless-ngx/pull/7364))
|
||||
- Chore(deps): Bump the frontend-angular-dependencies group in /src-ui with 20 updates [@dependabot](https://github.com/dependabot) ([#7363](https://github.com/paperless-ngx/paperless-ngx/pull/7363))
|
||||
- Fix: use entire document for dropzone [@shamoon](https://github.com/shamoon) ([#7342](https://github.com/paperless-ngx/paperless-ngx/pull/7342))
|
||||
</details>
|
||||
|
||||
## paperless-ngx 2.11.2
|
||||
|
||||
### Changes
|
||||
|
||||
@@ -1149,6 +1149,18 @@ within your documents.
|
||||
second, and year last order. Characters D, M, or Y can be shuffled
|
||||
to meet the required order.
|
||||
|
||||
#### [`PAPERLESS_GPG_DECRYPTOR=<bool>`](#PAPERLESS_GPG_DECRYPTOR) {#PAPERLESS_GPG_DECRYPTOR}
|
||||
|
||||
: Enable or disable the GPG decryptor for encrypted emails. See [GPG Decryptor](advanced_usage.md#gpg-decryptor) for more information.
|
||||
|
||||
Defaults to false.
|
||||
|
||||
#### [`PAPERLESS_EMAIL_GNUPG_HOME=<str>`](#PAPERLESS_EMAIL_GNUPG_HOME) {#PAPERLESS_EMAIL_GNUPG_HOME}
|
||||
|
||||
: Optional, sets the `GNUPG_HOME` path to use with GPG decryptor for encrypted emails. See [GPG Decryptor](advanced_usage.md#gpg-decryptor) for more information. If not set, defaults to the default `GNUPG_HOME` path.
|
||||
|
||||
Defaults to <not set>.
|
||||
|
||||
### Polling {#polling}
|
||||
|
||||
#### [`PAPERLESS_CONSUMER_POLLING=<num>`](#PAPERLESS_CONSUMER_POLLING) {#PAPERLESS_CONSUMER_POLLING}
|
||||
@@ -1277,6 +1289,15 @@ combination with PAPERLESS_CONSUMER_BARCODE_UPSCALE bigger than 1.0.
|
||||
|
||||
Defaults to "300"
|
||||
|
||||
#### [`PAPERLESS_CONSUMER_BARCODE_MAX_PAGES=<int>`](#PAPERLESS_CONSUMER_BARCODE_MAX_PAGES) {#PAPERLESS_CONSUMER_BARCODE_MAX_PAGES}
|
||||
|
||||
: Because barcode detection is a computationally-intensive operation, this setting
|
||||
limits the detection of barcodes to a number of first pages. If your scanner has
|
||||
a limit for the number of pages that can be scanned it would be sensible to set this
|
||||
as the limit here.
|
||||
|
||||
Defaults to "0", allowing all pages to be checked for barcodes.
|
||||
|
||||
#### [`PAPERLESS_CONSUMER_ENABLE_TAG_BARCODE=<bool>`](#PAPERLESS_CONSUMER_ENABLE_TAG_BARCODE) {#PAPERLESS_CONSUMER_ENABLE_TAG_BARCODE}
|
||||
|
||||
: Enables the detection of barcodes in the scanned document and
|
||||
|
||||
+2
-1
@@ -136,7 +136,8 @@ These rules perform the following:
|
||||
|
||||
Paperless will check all emails only once and completely ignore messages
|
||||
that do not match your filters. It will also only perform the rule action
|
||||
on e-mails that it has consumed documents from.
|
||||
on e-mails that it has consumed documents from. The filename attachment
|
||||
patterns can include wildcards and multiple patterns separated by a comma.
|
||||
|
||||
The actions all ensure that the same mail is not consumed twice by
|
||||
different means. These are as follows:
|
||||
|
||||
+7
-1
@@ -6,6 +6,12 @@ theme:
|
||||
text: Roboto
|
||||
code: Roboto Mono
|
||||
palette:
|
||||
# Palette toggle for automatic mode
|
||||
- media: "(prefers-color-scheme)"
|
||||
toggle:
|
||||
icon: material/brightness-auto
|
||||
name: Switch to light mode
|
||||
|
||||
# Palette toggle for light mode
|
||||
- media: "(prefers-color-scheme: light)"
|
||||
scheme: default
|
||||
@@ -18,7 +24,7 @@ theme:
|
||||
scheme: slate
|
||||
toggle:
|
||||
icon: material/brightness-4
|
||||
name: Switch to light mode
|
||||
name: Switch to system preference
|
||||
features:
|
||||
- navigation.tabs
|
||||
- navigation.top
|
||||
|
||||
+3
-2
@@ -33,6 +33,7 @@
|
||||
"it-IT": "src/locale/messages.it_IT.xlf",
|
||||
"ja-JP": "src/locale/messages.ja_JP.xlf",
|
||||
"lb-LU": "src/locale/messages.lb_LU.xlf",
|
||||
"ko-KR": "src/locale/messages.ko_KR.xlf",
|
||||
"nl-NL": "src/locale/messages.nl_NL.xlf",
|
||||
"no-NO": "src/locale/messages.no_NO.xlf",
|
||||
"pl-PL": "src/locale/messages.pl_PL.xlf",
|
||||
@@ -66,8 +67,8 @@
|
||||
"src/assets",
|
||||
"src/manifest.webmanifest",
|
||||
{
|
||||
"glob": "{pdf.worker.min.js,pdf.min.js}",
|
||||
"input": "node_modules/pdfjs-dist/build/",
|
||||
"glob": "{pdf.worker.min.mjs,pdf.min.mjs}",
|
||||
"input": "node_modules/pdfjs-dist/legacy/build/",
|
||||
"output": "/assets/js/"
|
||||
}
|
||||
],
|
||||
|
||||
+144
-136
@@ -358,11 +358,11 @@
|
||||
</context-group>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/components/app-frame/app-frame.component.html</context>
|
||||
<context context-type="linenumber">235</context>
|
||||
<context context-type="linenumber">237</context>
|
||||
</context-group>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/components/app-frame/app-frame.component.html</context>
|
||||
<context context-type="linenumber">237</context>
|
||||
<context context-type="linenumber">239</context>
|
||||
</context-group>
|
||||
</trans-unit>
|
||||
<trans-unit id="2501522447884928778" datatype="html">
|
||||
@@ -560,7 +560,7 @@
|
||||
</context-group>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html</context>
|
||||
<context context-type="linenumber">51</context>
|
||||
<context context-type="linenumber">72</context>
|
||||
</context-group>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/components/common/edit-dialog/storage-path-edit-dialog/storage-path-edit-dialog.component.html</context>
|
||||
@@ -641,11 +641,11 @@
|
||||
</context-group>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/components/app-frame/app-frame.component.html</context>
|
||||
<context context-type="linenumber">270</context>
|
||||
<context context-type="linenumber">272</context>
|
||||
</context-group>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/components/app-frame/app-frame.component.html</context>
|
||||
<context context-type="linenumber">273</context>
|
||||
<context context-type="linenumber">275</context>
|
||||
</context-group>
|
||||
</trans-unit>
|
||||
<trans-unit id="2272120016352772836" datatype="html">
|
||||
@@ -1309,6 +1309,10 @@
|
||||
<context context-type="sourcefile">src/app/components/app-frame/app-frame.component.html</context>
|
||||
<context context-type="linenumber">98</context>
|
||||
</context-group>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/components/app-frame/app-frame.component.html</context>
|
||||
<context context-type="linenumber">103</context>
|
||||
</context-group>
|
||||
</trans-unit>
|
||||
<trans-unit id="1595668988802980095" datatype="html">
|
||||
<source>Show warning when closing saved views with unsaved changes</source>
|
||||
@@ -1644,7 +1648,7 @@
|
||||
</context-group>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html</context>
|
||||
<context context-type="linenumber">50</context>
|
||||
<context context-type="linenumber">71</context>
|
||||
</context-group>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/components/common/edit-dialog/storage-path-edit-dialog/storage-path-edit-dialog.component.html</context>
|
||||
@@ -1755,7 +1759,7 @@
|
||||
</context-group>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/components/app-frame/app-frame.component.ts</context>
|
||||
<context context-type="linenumber">126</context>
|
||||
<context context-type="linenumber">125</context>
|
||||
</context-group>
|
||||
</trans-unit>
|
||||
<trans-unit id="5260584511980773458" datatype="html">
|
||||
@@ -1773,11 +1777,11 @@
|
||||
</context-group>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/components/app-frame/app-frame.component.html</context>
|
||||
<context context-type="linenumber">258</context>
|
||||
<context context-type="linenumber">260</context>
|
||||
</context-group>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/components/app-frame/app-frame.component.html</context>
|
||||
<context context-type="linenumber">260</context>
|
||||
<context context-type="linenumber">262</context>
|
||||
</context-group>
|
||||
</trans-unit>
|
||||
<trans-unit id="103921551219467537" datatype="html">
|
||||
@@ -2082,11 +2086,11 @@
|
||||
</context-group>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/components/app-frame/app-frame.component.html</context>
|
||||
<context context-type="linenumber">218</context>
|
||||
<context context-type="linenumber">220</context>
|
||||
</context-group>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/components/app-frame/app-frame.component.html</context>
|
||||
<context context-type="linenumber">221</context>
|
||||
<context context-type="linenumber">223</context>
|
||||
</context-group>
|
||||
</trans-unit>
|
||||
<trans-unit id="3818027200170621545" datatype="html">
|
||||
@@ -2296,11 +2300,11 @@
|
||||
</context-group>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/components/app-frame/app-frame.component.html</context>
|
||||
<context context-type="linenumber">249</context>
|
||||
<context context-type="linenumber">251</context>
|
||||
</context-group>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/components/app-frame/app-frame.component.html</context>
|
||||
<context context-type="linenumber">251</context>
|
||||
<context context-type="linenumber">253</context>
|
||||
</context-group>
|
||||
</trans-unit>
|
||||
<trans-unit id="4569276013106377105" datatype="html">
|
||||
@@ -2645,47 +2649,47 @@
|
||||
</context-group>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/components/app-frame/app-frame.component.html</context>
|
||||
<context context-type="linenumber">279</context>
|
||||
<context context-type="linenumber">281</context>
|
||||
</context-group>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/components/app-frame/app-frame.component.html</context>
|
||||
<context context-type="linenumber">282</context>
|
||||
<context context-type="linenumber">284</context>
|
||||
</context-group>
|
||||
</trans-unit>
|
||||
<trans-unit id="6988090220128974198" datatype="html">
|
||||
<source>Open documents</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/components/app-frame/app-frame.component.html</context>
|
||||
<context context-type="linenumber">128</context>
|
||||
<context context-type="linenumber">130</context>
|
||||
</context-group>
|
||||
</trans-unit>
|
||||
<trans-unit id="5687256342387781369" datatype="html">
|
||||
<source>Close all</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/components/app-frame/app-frame.component.html</context>
|
||||
<context context-type="linenumber">148</context>
|
||||
<context context-type="linenumber">150</context>
|
||||
</context-group>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/components/app-frame/app-frame.component.html</context>
|
||||
<context context-type="linenumber">150</context>
|
||||
<context context-type="linenumber">152</context>
|
||||
</context-group>
|
||||
</trans-unit>
|
||||
<trans-unit id="3897348120591552265" datatype="html">
|
||||
<source>Manage</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/components/app-frame/app-frame.component.html</context>
|
||||
<context context-type="linenumber">159</context>
|
||||
<context context-type="linenumber">161</context>
|
||||
</context-group>
|
||||
</trans-unit>
|
||||
<trans-unit id="7437910965833684826" datatype="html">
|
||||
<source>Correspondents</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/components/app-frame/app-frame.component.html</context>
|
||||
<context context-type="linenumber">165</context>
|
||||
<context context-type="linenumber">167</context>
|
||||
</context-group>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/components/app-frame/app-frame.component.html</context>
|
||||
<context context-type="linenumber">167</context>
|
||||
<context context-type="linenumber">169</context>
|
||||
</context-group>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html</context>
|
||||
@@ -2696,11 +2700,11 @@
|
||||
<source>Tags</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/components/app-frame/app-frame.component.html</context>
|
||||
<context context-type="linenumber">172</context>
|
||||
<context context-type="linenumber">174</context>
|
||||
</context-group>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/components/app-frame/app-frame.component.html</context>
|
||||
<context context-type="linenumber">175</context>
|
||||
<context context-type="linenumber">177</context>
|
||||
</context-group>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/components/common/input/tags/tags.component.ts</context>
|
||||
@@ -2731,11 +2735,11 @@
|
||||
<source>Document Types</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/components/app-frame/app-frame.component.html</context>
|
||||
<context context-type="linenumber">181</context>
|
||||
<context context-type="linenumber">183</context>
|
||||
</context-group>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/components/app-frame/app-frame.component.html</context>
|
||||
<context context-type="linenumber">183</context>
|
||||
<context context-type="linenumber">185</context>
|
||||
</context-group>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html</context>
|
||||
@@ -2746,11 +2750,11 @@
|
||||
<source>Storage Paths</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/components/app-frame/app-frame.component.html</context>
|
||||
<context context-type="linenumber">188</context>
|
||||
<context context-type="linenumber">190</context>
|
||||
</context-group>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/components/app-frame/app-frame.component.html</context>
|
||||
<context context-type="linenumber">190</context>
|
||||
<context context-type="linenumber">192</context>
|
||||
</context-group>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html</context>
|
||||
@@ -2761,11 +2765,11 @@
|
||||
<source>Custom Fields</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/components/app-frame/app-frame.component.html</context>
|
||||
<context context-type="linenumber">195</context>
|
||||
<context context-type="linenumber">197</context>
|
||||
</context-group>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/components/app-frame/app-frame.component.html</context>
|
||||
<context context-type="linenumber">197</context>
|
||||
<context context-type="linenumber">199</context>
|
||||
</context-group>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.html</context>
|
||||
@@ -2780,11 +2784,11 @@
|
||||
<source>Workflows</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/components/app-frame/app-frame.component.html</context>
|
||||
<context context-type="linenumber">204</context>
|
||||
<context context-type="linenumber">206</context>
|
||||
</context-group>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/components/app-frame/app-frame.component.html</context>
|
||||
<context context-type="linenumber">206</context>
|
||||
<context context-type="linenumber">208</context>
|
||||
</context-group>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/components/manage/workflows/workflows.component.html</context>
|
||||
@@ -2795,92 +2799,92 @@
|
||||
<source>Mail</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/components/app-frame/app-frame.component.html</context>
|
||||
<context context-type="linenumber">211</context>
|
||||
<context context-type="linenumber">213</context>
|
||||
</context-group>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/components/app-frame/app-frame.component.html</context>
|
||||
<context context-type="linenumber">214</context>
|
||||
<context context-type="linenumber">216</context>
|
||||
</context-group>
|
||||
</trans-unit>
|
||||
<trans-unit id="7844706011418789951" datatype="html">
|
||||
<source>Administration</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/components/app-frame/app-frame.component.html</context>
|
||||
<context context-type="linenumber">229</context>
|
||||
<context context-type="linenumber">231</context>
|
||||
</context-group>
|
||||
</trans-unit>
|
||||
<trans-unit id="3008420115644088420" datatype="html">
|
||||
<source>Configuration</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/components/app-frame/app-frame.component.html</context>
|
||||
<context context-type="linenumber">242</context>
|
||||
<context context-type="linenumber">244</context>
|
||||
</context-group>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/components/app-frame/app-frame.component.html</context>
|
||||
<context context-type="linenumber">244</context>
|
||||
<context context-type="linenumber">246</context>
|
||||
</context-group>
|
||||
</trans-unit>
|
||||
<trans-unit id="1534029177398918729" datatype="html">
|
||||
<source>GitHub</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/components/app-frame/app-frame.component.html</context>
|
||||
<context context-type="linenumber">289</context>
|
||||
<context context-type="linenumber">291</context>
|
||||
</context-group>
|
||||
</trans-unit>
|
||||
<trans-unit id="4112664765954374539" datatype="html">
|
||||
<source>is available.</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/components/app-frame/app-frame.component.html</context>
|
||||
<context context-type="linenumber">298,299</context>
|
||||
<context context-type="linenumber">300,301</context>
|
||||
</context-group>
|
||||
</trans-unit>
|
||||
<trans-unit id="1175891574282637937" datatype="html">
|
||||
<source>Click to view.</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/components/app-frame/app-frame.component.html</context>
|
||||
<context context-type="linenumber">299</context>
|
||||
<context context-type="linenumber">301</context>
|
||||
</context-group>
|
||||
</trans-unit>
|
||||
<trans-unit id="9811291095862612" datatype="html">
|
||||
<source>Paperless-ngx can automatically check for updates</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/components/app-frame/app-frame.component.html</context>
|
||||
<context context-type="linenumber">303</context>
|
||||
<context context-type="linenumber">305</context>
|
||||
</context-group>
|
||||
</trans-unit>
|
||||
<trans-unit id="894819944961861800" datatype="html">
|
||||
<source> How does this work? </source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/components/app-frame/app-frame.component.html</context>
|
||||
<context context-type="linenumber">310,312</context>
|
||||
<context context-type="linenumber">312,314</context>
|
||||
</context-group>
|
||||
</trans-unit>
|
||||
<trans-unit id="509090351011426949" datatype="html">
|
||||
<source>Update available</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/components/app-frame/app-frame.component.html</context>
|
||||
<context context-type="linenumber">323</context>
|
||||
<context context-type="linenumber">325</context>
|
||||
</context-group>
|
||||
</trans-unit>
|
||||
<trans-unit id="1542489069631984294" datatype="html">
|
||||
<source>Sidebar views updated</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/components/app-frame/app-frame.component.ts</context>
|
||||
<context context-type="linenumber">209</context>
|
||||
<context context-type="linenumber">208</context>
|
||||
</context-group>
|
||||
</trans-unit>
|
||||
<trans-unit id="3547923076537026828" datatype="html">
|
||||
<source>Error updating sidebar views</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/components/app-frame/app-frame.component.ts</context>
|
||||
<context context-type="linenumber">212</context>
|
||||
<context context-type="linenumber">211</context>
|
||||
</context-group>
|
||||
</trans-unit>
|
||||
<trans-unit id="2526035785704676448" datatype="html">
|
||||
<source>An error occurred while saving update checking settings.</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/components/app-frame/app-frame.component.ts</context>
|
||||
<context context-type="linenumber">233</context>
|
||||
<context context-type="linenumber">232</context>
|
||||
</context-group>
|
||||
</trans-unit>
|
||||
<trans-unit id="4580988005648117665" datatype="html">
|
||||
@@ -3646,162 +3650,166 @@
|
||||
<context context-type="linenumber">88</context>
|
||||
</context-group>
|
||||
</trans-unit>
|
||||
<trans-unit id="5163375362523428079" datatype="html">
|
||||
<source>Rule order</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html</context>
|
||||
<context context-type="linenumber">16</context>
|
||||
</context-group>
|
||||
</trans-unit>
|
||||
<trans-unit id="4086606389696938932" datatype="html">
|
||||
<source>Account</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html</context>
|
||||
<context context-type="linenumber">14</context>
|
||||
<context context-type="linenumber">19</context>
|
||||
</context-group>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/components/manage/mail/mail.component.html</context>
|
||||
<context context-type="linenumber">68</context>
|
||||
</context-group>
|
||||
</trans-unit>
|
||||
<trans-unit id="4348351765075925931" datatype="html">
|
||||
<source>Paperless will only process mails that match <x id="START_EMPHASISED_TEXT" ctype="x-em" equiv-text="<em>"/>all<x id="CLOSE_EMPHASISED_TEXT" ctype="x-em" equiv-text="</em>"/> of the criteria specified below.</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html</context>
|
||||
<context context-type="linenumber">24</context>
|
||||
</context-group>
|
||||
</trans-unit>
|
||||
<trans-unit id="7046259383943324039" datatype="html">
|
||||
<source>Folder</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html</context>
|
||||
<context context-type="linenumber">15</context>
|
||||
<context context-type="linenumber">26</context>
|
||||
</context-group>
|
||||
</trans-unit>
|
||||
<trans-unit id="1391527525114848695" datatype="html">
|
||||
<source>Subfolders must be separated by a delimiter, often a dot ('.') or slash ('/'), but it varies by mail server.</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html</context>
|
||||
<context context-type="linenumber">15</context>
|
||||
<context context-type="linenumber">26</context>
|
||||
</context-group>
|
||||
</trans-unit>
|
||||
<trans-unit id="101686279614365671" datatype="html">
|
||||
<source>Maximum age (days)</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html</context>
|
||||
<context context-type="linenumber">16</context>
|
||||
</context-group>
|
||||
</trans-unit>
|
||||
<trans-unit id="7093509971705471817" datatype="html">
|
||||
<source>Attachment type</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html</context>
|
||||
<context context-type="linenumber">17</context>
|
||||
</context-group>
|
||||
</trans-unit>
|
||||
<trans-unit id="559099472394646919" datatype="html">
|
||||
<source>Consumption scope</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html</context>
|
||||
<context context-type="linenumber">18</context>
|
||||
</context-group>
|
||||
</trans-unit>
|
||||
<trans-unit id="56643687972548912" datatype="html">
|
||||
<source>See docs for .eml processing requirements</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html</context>
|
||||
<context context-type="linenumber">18</context>
|
||||
</context-group>
|
||||
</trans-unit>
|
||||
<trans-unit id="5163375362523428079" datatype="html">
|
||||
<source>Rule order</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html</context>
|
||||
<context context-type="linenumber">19</context>
|
||||
</context-group>
|
||||
</trans-unit>
|
||||
<trans-unit id="5488632521862493221" datatype="html">
|
||||
<source>Paperless will only process mails that match <x id="START_EMPHASISED_TEXT" ctype="x-em" equiv-text="<em>"/>all<x id="CLOSE_EMPHASISED_TEXT" ctype="x-em" equiv-text="</em>"/> of the filters specified below.</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html</context>
|
||||
<context context-type="linenumber">22</context>
|
||||
<context context-type="linenumber">27</context>
|
||||
</context-group>
|
||||
</trans-unit>
|
||||
<trans-unit id="6925928412364847639" datatype="html">
|
||||
<source>Filter from</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html</context>
|
||||
<context context-type="linenumber">23</context>
|
||||
<context context-type="linenumber">30</context>
|
||||
</context-group>
|
||||
</trans-unit>
|
||||
<trans-unit id="8977094263269822022" datatype="html">
|
||||
<source>Filter to</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html</context>
|
||||
<context context-type="linenumber">24</context>
|
||||
<context context-type="linenumber">31</context>
|
||||
</context-group>
|
||||
</trans-unit>
|
||||
<trans-unit id="8497813481090627874" datatype="html">
|
||||
<source>Filter subject</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html</context>
|
||||
<context context-type="linenumber">25</context>
|
||||
<context context-type="linenumber">32</context>
|
||||
</context-group>
|
||||
</trans-unit>
|
||||
<trans-unit id="7314357616097563149" datatype="html">
|
||||
<source>Filter body</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html</context>
|
||||
<context context-type="linenumber">26</context>
|
||||
<context context-type="linenumber">33</context>
|
||||
</context-group>
|
||||
</trans-unit>
|
||||
<trans-unit id="4603548543464136402" datatype="html">
|
||||
<source>Filter attachment filename includes</source>
|
||||
<trans-unit id="559099472394646919" datatype="html">
|
||||
<source>Consumption scope</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html</context>
|
||||
<context context-type="linenumber">27</context>
|
||||
<context context-type="linenumber">39</context>
|
||||
</context-group>
|
||||
</trans-unit>
|
||||
<trans-unit id="4245210767172267486" datatype="html">
|
||||
<source>Only consume documents which entirely match this filename if specified. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive.</source>
|
||||
<trans-unit id="56643687972548912" datatype="html">
|
||||
<source>See docs for .eml processing requirements</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html</context>
|
||||
<context context-type="linenumber">27</context>
|
||||
<context context-type="linenumber">39</context>
|
||||
</context-group>
|
||||
</trans-unit>
|
||||
<trans-unit id="6869675473865305593" datatype="html">
|
||||
<source>Filter attachment filename excluding</source>
|
||||
<trans-unit id="7093509971705471817" datatype="html">
|
||||
<source>Attachment type</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html</context>
|
||||
<context context-type="linenumber">28</context>
|
||||
<context context-type="linenumber">40</context>
|
||||
</context-group>
|
||||
</trans-unit>
|
||||
<trans-unit id="6774472763442688477" datatype="html">
|
||||
<source>Do not consume documents which entirely match this filename if specified. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive.</source>
|
||||
<trans-unit id="2873939123535615966" datatype="html">
|
||||
<source>Include only files matching</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html</context>
|
||||
<context context-type="linenumber">28</context>
|
||||
<context context-type="linenumber">43</context>
|
||||
</context-group>
|
||||
</trans-unit>
|
||||
<trans-unit id="7233407036155150477" datatype="html">
|
||||
<source>Optional. Wildcards e.g. *.pdf or *invoice* allowed. Can be comma-separated list. Case insensitive.</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html</context>
|
||||
<context context-type="linenumber">43</context>
|
||||
</context-group>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html</context>
|
||||
<context context-type="linenumber">44</context>
|
||||
</context-group>
|
||||
</trans-unit>
|
||||
<trans-unit id="1546332577833742677" datatype="html">
|
||||
<source>Exclude files matching</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html</context>
|
||||
<context context-type="linenumber">44</context>
|
||||
</context-group>
|
||||
</trans-unit>
|
||||
<trans-unit id="9216117865911519658" datatype="html">
|
||||
<source>Action</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html</context>
|
||||
<context context-type="linenumber">31</context>
|
||||
<context context-type="linenumber">50</context>
|
||||
</context-group>
|
||||
</trans-unit>
|
||||
<trans-unit id="4274038999388817994" datatype="html">
|
||||
<source>Action is only performed when documents are consumed from the mail. Mails without attachments remain entirely untouched.</source>
|
||||
<trans-unit id="7841986067387421166" datatype="html">
|
||||
<source>Only performed if the mail is processed.</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html</context>
|
||||
<context context-type="linenumber">31</context>
|
||||
<context context-type="linenumber">50</context>
|
||||
</context-group>
|
||||
</trans-unit>
|
||||
<trans-unit id="1261794314435932203" datatype="html">
|
||||
<source>Action parameter</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html</context>
|
||||
<context context-type="linenumber">33</context>
|
||||
<context context-type="linenumber">52</context>
|
||||
</context-group>
|
||||
</trans-unit>
|
||||
<trans-unit id="6093797930511670257" datatype="html">
|
||||
<source>Assign title from</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html</context>
|
||||
<context context-type="linenumber">35</context>
|
||||
<context context-type="linenumber">54</context>
|
||||
</context-group>
|
||||
</trans-unit>
|
||||
<trans-unit id="5232720756589450549" datatype="html">
|
||||
<source>Assign owner from rule</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html</context>
|
||||
<context context-type="linenumber">55</context>
|
||||
</context-group>
|
||||
</trans-unit>
|
||||
<trans-unit id="6695990587380209737" datatype="html">
|
||||
<source>Assign document type</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html</context>
|
||||
<context context-type="linenumber">37</context>
|
||||
<context context-type="linenumber">59</context>
|
||||
</context-group>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html</context>
|
||||
@@ -3812,32 +3820,25 @@
|
||||
<source>Assign correspondent from</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html</context>
|
||||
<context context-type="linenumber">38</context>
|
||||
<context context-type="linenumber">60</context>
|
||||
</context-group>
|
||||
</trans-unit>
|
||||
<trans-unit id="4875491778188965469" datatype="html">
|
||||
<source>Assign correspondent</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html</context>
|
||||
<context context-type="linenumber">40</context>
|
||||
<context context-type="linenumber">62</context>
|
||||
</context-group>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html</context>
|
||||
<context context-type="linenumber">163</context>
|
||||
</context-group>
|
||||
</trans-unit>
|
||||
<trans-unit id="5232720756589450549" datatype="html">
|
||||
<source>Assign owner from rule</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html</context>
|
||||
<context context-type="linenumber">42</context>
|
||||
</context-group>
|
||||
</trans-unit>
|
||||
<trans-unit id="1519954996184640001" datatype="html">
|
||||
<source>Error</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html</context>
|
||||
<context context-type="linenumber">48</context>
|
||||
<context context-type="linenumber">69</context>
|
||||
</context-group>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.html</context>
|
||||
@@ -8602,137 +8603,144 @@
|
||||
<context context-type="linenumber">142</context>
|
||||
</context-group>
|
||||
</trans-unit>
|
||||
<trans-unit id="6145439649200570157" datatype="html">
|
||||
<source>Korean</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/services/settings.service.ts</context>
|
||||
<context context-type="linenumber">148</context>
|
||||
</context-group>
|
||||
</trans-unit>
|
||||
<trans-unit id="1334425850005897370" datatype="html">
|
||||
<source>Luxembourgish</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/services/settings.service.ts</context>
|
||||
<context context-type="linenumber">148</context>
|
||||
<context context-type="linenumber">154</context>
|
||||
</context-group>
|
||||
</trans-unit>
|
||||
<trans-unit id="3071065188816255493" datatype="html">
|
||||
<source>Dutch</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/services/settings.service.ts</context>
|
||||
<context context-type="linenumber">154</context>
|
||||
<context context-type="linenumber">160</context>
|
||||
</context-group>
|
||||
</trans-unit>
|
||||
<trans-unit id="8069284467804715623" datatype="html">
|
||||
<source>Norwegian</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/services/settings.service.ts</context>
|
||||
<context context-type="linenumber">160</context>
|
||||
<context context-type="linenumber">166</context>
|
||||
</context-group>
|
||||
</trans-unit>
|
||||
<trans-unit id="792060551707690640" datatype="html">
|
||||
<source>Polish</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/services/settings.service.ts</context>
|
||||
<context context-type="linenumber">166</context>
|
||||
<context context-type="linenumber">172</context>
|
||||
</context-group>
|
||||
</trans-unit>
|
||||
<trans-unit id="9184513005098760425" datatype="html">
|
||||
<source>Portuguese (Brazil)</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/services/settings.service.ts</context>
|
||||
<context context-type="linenumber">172</context>
|
||||
<context context-type="linenumber">178</context>
|
||||
</context-group>
|
||||
</trans-unit>
|
||||
<trans-unit id="153799456510623899" datatype="html">
|
||||
<source>Portuguese</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/services/settings.service.ts</context>
|
||||
<context context-type="linenumber">178</context>
|
||||
<context context-type="linenumber">184</context>
|
||||
</context-group>
|
||||
</trans-unit>
|
||||
<trans-unit id="8118856427047826368" datatype="html">
|
||||
<source>Romanian</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/services/settings.service.ts</context>
|
||||
<context context-type="linenumber">184</context>
|
||||
<context context-type="linenumber">190</context>
|
||||
</context-group>
|
||||
</trans-unit>
|
||||
<trans-unit id="7137419789978325708" datatype="html">
|
||||
<source>Russian</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/services/settings.service.ts</context>
|
||||
<context context-type="linenumber">190</context>
|
||||
<context context-type="linenumber">196</context>
|
||||
</context-group>
|
||||
</trans-unit>
|
||||
<trans-unit id="9102963095355753902" datatype="html">
|
||||
<source>Slovak</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/services/settings.service.ts</context>
|
||||
<context context-type="linenumber">196</context>
|
||||
<context context-type="linenumber">202</context>
|
||||
</context-group>
|
||||
</trans-unit>
|
||||
<trans-unit id="4287008301409320881" datatype="html">
|
||||
<source>Slovenian</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/services/settings.service.ts</context>
|
||||
<context context-type="linenumber">202</context>
|
||||
<context context-type="linenumber">208</context>
|
||||
</context-group>
|
||||
</trans-unit>
|
||||
<trans-unit id="8608389829607915090" datatype="html">
|
||||
<source>Serbian</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/services/settings.service.ts</context>
|
||||
<context context-type="linenumber">208</context>
|
||||
<context context-type="linenumber">214</context>
|
||||
</context-group>
|
||||
</trans-unit>
|
||||
<trans-unit id="499386805970351976" datatype="html">
|
||||
<source>Swedish</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/services/settings.service.ts</context>
|
||||
<context context-type="linenumber">214</context>
|
||||
<context context-type="linenumber">220</context>
|
||||
</context-group>
|
||||
</trans-unit>
|
||||
<trans-unit id="5682359291233237791" datatype="html">
|
||||
<source>Turkish</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/services/settings.service.ts</context>
|
||||
<context context-type="linenumber">220</context>
|
||||
<context context-type="linenumber">226</context>
|
||||
</context-group>
|
||||
</trans-unit>
|
||||
<trans-unit id="3578644052206125685" datatype="html">
|
||||
<source>Ukrainian</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/services/settings.service.ts</context>
|
||||
<context context-type="linenumber">226</context>
|
||||
<context context-type="linenumber">232</context>
|
||||
</context-group>
|
||||
</trans-unit>
|
||||
<trans-unit id="4689443708886954687" datatype="html">
|
||||
<source>Chinese Simplified</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/services/settings.service.ts</context>
|
||||
<context context-type="linenumber">232</context>
|
||||
<context context-type="linenumber">238</context>
|
||||
</context-group>
|
||||
</trans-unit>
|
||||
<trans-unit id="4912706592792948707" datatype="html">
|
||||
<source>ISO 8601</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/services/settings.service.ts</context>
|
||||
<context context-type="linenumber">240</context>
|
||||
<context context-type="linenumber">246</context>
|
||||
</context-group>
|
||||
</trans-unit>
|
||||
<trans-unit id="313643372755303297" datatype="html">
|
||||
<source>Successfully completed one-time migratration of settings to the database!</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/services/settings.service.ts</context>
|
||||
<context context-type="linenumber">567</context>
|
||||
<context context-type="linenumber">573</context>
|
||||
</context-group>
|
||||
</trans-unit>
|
||||
<trans-unit id="5558341108007064934" datatype="html">
|
||||
<source>Unable to migrate settings to the database, please try saving manually.</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/services/settings.service.ts</context>
|
||||
<context context-type="linenumber">568</context>
|
||||
<context context-type="linenumber">574</context>
|
||||
</context-group>
|
||||
</trans-unit>
|
||||
<trans-unit id="1168781785897678748" datatype="html">
|
||||
<source>You can restart the tour from the settings page.</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">src/app/services/settings.service.ts</context>
|
||||
<context context-type="linenumber">638</context>
|
||||
<context context-type="linenumber">644</context>
|
||||
</context-group>
|
||||
</trans-unit>
|
||||
<trans-unit id="3852289441366561594" datatype="html">
|
||||
|
||||
Generated
+1586
-2267
File diff suppressed because it is too large.
Load diff
+28
-30
@@ -11,60 +11,58 @@
|
||||
},
|
||||
"private": true,
|
||||
"dependencies": {
|
||||
"@angular/cdk": "^18.1.3",
|
||||
"@angular/common": "~18.1.3",
|
||||
"@angular/compiler": "~18.1.3",
|
||||
"@angular/core": "~18.1.3",
|
||||
"@angular/forms": "~18.1.3",
|
||||
"@angular/localize": "~18.1.3",
|
||||
"@angular/platform-browser": "~18.1.3",
|
||||
"@angular/platform-browser-dynamic": "~18.1.3",
|
||||
"@angular/router": "~18.1.3",
|
||||
"@ng-bootstrap/ng-bootstrap": "^17.0.0",
|
||||
"@ng-select/ng-select": "^13.5.0",
|
||||
"@angular/cdk": "^18.2.2",
|
||||
"@angular/common": "~18.2.2",
|
||||
"@angular/compiler": "~18.2.2",
|
||||
"@angular/core": "~18.2.2",
|
||||
"@angular/forms": "~18.2.2",
|
||||
"@angular/localize": "~18.2.2",
|
||||
"@angular/platform-browser": "~18.2.2",
|
||||
"@angular/platform-browser-dynamic": "~18.2.2",
|
||||
"@angular/router": "~18.2.2",
|
||||
"@ng-bootstrap/ng-bootstrap": "^17.0.1",
|
||||
"@ng-select/ng-select": "^13.7.0",
|
||||
"@ngneat/dirty-check-forms": "^3.0.3",
|
||||
"@popperjs/core": "^2.11.8",
|
||||
"bootstrap": "^5.3.3",
|
||||
"file-saver": "^2.0.5",
|
||||
"mime-names": "^1.0.0",
|
||||
"ng2-pdf-viewer": "^10.2.2",
|
||||
"ng2-pdf-viewer": "^10.3.0",
|
||||
"ngx-bootstrap-icons": "^1.9.3",
|
||||
"ngx-color": "^9.0.0",
|
||||
"ngx-cookie-service": "^18.0.0",
|
||||
"ngx-file-drop": "^16.0.0",
|
||||
"ngx-ui-tour-ng-bootstrap": "^15.0.0",
|
||||
"rxjs": "^7.8.1",
|
||||
"tslib": "^2.6.2",
|
||||
"tslib": "^2.7.0",
|
||||
"uuid": "^10.0.0",
|
||||
"zone.js": "^0.14.8"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@angular-builders/jest": "^18.0.0",
|
||||
"@angular-devkit/build-angular": "^18.1.3",
|
||||
"@angular-devkit/core": "^18.1.3",
|
||||
"@angular-devkit/schematics": "^18.1.3",
|
||||
"@angular-eslint/builder": "18.2.0",
|
||||
"@angular-eslint/eslint-plugin": "18.2.0",
|
||||
"@angular-eslint/eslint-plugin-template": "18.2.0",
|
||||
"@angular-eslint/schematics": "18.2.0",
|
||||
"@angular-eslint/template-parser": "18.2.0",
|
||||
"@angular/cli": "~18.1.3",
|
||||
"@angular/compiler-cli": "~18.1.3",
|
||||
"@playwright/test": "^1.45.3",
|
||||
"@angular-devkit/build-angular": "^18.2.2",
|
||||
"@angular-devkit/core": "^18.2.2",
|
||||
"@angular-devkit/schematics": "^18.2.2",
|
||||
"@angular-eslint/builder": "18.3.0",
|
||||
"@angular-eslint/eslint-plugin": "18.3.0",
|
||||
"@angular-eslint/eslint-plugin-template": "18.3.0",
|
||||
"@angular-eslint/schematics": "18.3.0",
|
||||
"@angular-eslint/template-parser": "18.3.0",
|
||||
"@angular/cli": "~18.2.2",
|
||||
"@angular/compiler-cli": "~18.2.2",
|
||||
"@playwright/test": "^1.46.1",
|
||||
"@types/jest": "^29.5.12",
|
||||
"@types/node": "^22.0.2",
|
||||
"@typescript-eslint/eslint-plugin": "^8.0.0",
|
||||
"@typescript-eslint/parser": "^8.0.0",
|
||||
"@typescript-eslint/eslint-plugin": "^8.3.0",
|
||||
"@typescript-eslint/parser": "^8.3.0",
|
||||
"@typescript-eslint/utils": "^8.0.0",
|
||||
"concurrently": "^8.2.2",
|
||||
"eslint": "^9.8.0",
|
||||
"eslint": "^9.9.1",
|
||||
"jest": "29.7.0",
|
||||
"jest-environment-jsdom": "^29.7.0",
|
||||
"jest-preset-angular": "^14.2.2",
|
||||
"jest-websocket-mock": "^2.5.0",
|
||||
"patch-package": "^8.0.0",
|
||||
"ts-node": "~10.9.1",
|
||||
"typescript": "^5.3.3",
|
||||
"wait-on": "^7.2.0"
|
||||
"typescript": "^5.5.4"
|
||||
}
|
||||
}
|
||||
@@ -24,6 +24,7 @@ import localeFr from '@angular/common/locales/fr'
|
||||
import localeHu from '@angular/common/locales/hu'
|
||||
import localeIt from '@angular/common/locales/it'
|
||||
import localeJa from '@angular/common/locales/ja'
|
||||
import localeKo from '@angular/common/locales/ko'
|
||||
import localeLb from '@angular/common/locales/lb'
|
||||
import localeNl from '@angular/common/locales/nl'
|
||||
import localeNo from '@angular/common/locales/no'
|
||||
@@ -55,6 +56,7 @@ registerLocaleData(localeFr)
|
||||
registerLocaleData(localeHu)
|
||||
registerLocaleData(localeIt)
|
||||
registerLocaleData(localeJa)
|
||||
registerLocaleData(localeKo)
|
||||
registerLocaleData(localeLb)
|
||||
registerLocaleData(localeNl)
|
||||
registerLocaleData(localeNo)
|
||||
|
||||
@@ -36,7 +36,7 @@ export class AppComponent implements OnInit, OnDestroy {
|
||||
private hotKeyService: HotKeyService
|
||||
) {
|
||||
let anyWindow = window as any
|
||||
anyWindow.pdfWorkerSrc = 'assets/js/pdf.worker.min.js'
|
||||
anyWindow.pdfWorkerSrc = 'assets/js/pdf.worker.min.mjs'
|
||||
this.settings.updateAppearanceSettings()
|
||||
}
|
||||
|
||||
|
||||
@@ -347,6 +347,7 @@ import localeFr from '@angular/common/locales/fr'
|
||||
import localeHu from '@angular/common/locales/hu'
|
||||
import localeIt from '@angular/common/locales/it'
|
||||
import localeJa from '@angular/common/locales/ja'
|
||||
import localeKo from '@angular/common/locales/ko'
|
||||
import localeLb from '@angular/common/locales/lb'
|
||||
import localeNl from '@angular/common/locales/nl'
|
||||
import localeNo from '@angular/common/locales/no'
|
||||
@@ -378,6 +379,7 @@ registerLocaleData(localeFr)
|
||||
registerLocaleData(localeHu)
|
||||
registerLocaleData(localeIt)
|
||||
registerLocaleData(localeJa)
|
||||
registerLocaleData(localeKo)
|
||||
registerLocaleData(localeLb)
|
||||
registerLocaleData(localeNl)
|
||||
registerLocaleData(localeNo)
|
||||
|
||||
@@ -70,11 +70,11 @@ export class TasksComponent
|
||||
modal.componentInstance.buttonsEnabled = false
|
||||
modal.close()
|
||||
this.tasksService.dismissTasks(tasks)
|
||||
this.selectedTasks.clear()
|
||||
this.clearSelection()
|
||||
})
|
||||
} else {
|
||||
this.tasksService.dismissTasks(tasks)
|
||||
this.selectedTasks.clear()
|
||||
this.clearSelection()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -93,33 +93,35 @@
|
||||
</ul>
|
||||
|
||||
<div class="nav-group mt-3 mb-1" *pngxIfPermissions="{ action: PermissionAction.View, type: PermissionType.SavedView }">
|
||||
@if (savedViewService.loading || savedViewService.sidebarViews?.length > 0) {
|
||||
@if (savedViewService.loading) {
|
||||
<h6 class="sidebar-heading px-3 text-muted">
|
||||
<span i18n>Saved views</span>
|
||||
@if (savedViewService.loading) {
|
||||
<div class="spinner-border spinner-border-sm fw-normal ms-2" role="status"></div>
|
||||
}
|
||||
<div class="spinner-border spinner-border-sm fw-normal ms-2" role="status"></div>
|
||||
</h6>
|
||||
} @else if (savedViewService.sidebarViews?.length > 0) {
|
||||
<h6 class="sidebar-heading px-3 text-muted">
|
||||
<span i18n>Saved views</span>
|
||||
</h6>
|
||||
<ul class="nav flex-column mb-2" cdkDropList (cdkDropListDropped)="onDrop($event)">
|
||||
@for (view of savedViewService.sidebarViews; track view.id) {
|
||||
<li class="nav-item w-100 app-link" cdkDrag [cdkDragDisabled]="!settingsService.organizingSidebarSavedViews"
|
||||
cdkDragPreviewContainer="parent" cdkDragPreviewClass="navItemDrag" (cdkDragStarted)="onDragStart($event)"
|
||||
(cdkDragEnded)="onDragEnd($event)">
|
||||
<a class="nav-link" [class.text-truncate]="!slimSidebarEnabled" routerLink="view/{{view.id}}"
|
||||
routerLinkActive="active" (click)="closeMenu()" [ngbPopover]="view.name"
|
||||
[disablePopover]="!slimSidebarEnabled" placement="end" container="body" triggers="mouseenter:mouseleave"
|
||||
popoverClass="popover-slim">
|
||||
<i-bs class="me-1" name="funnel"></i-bs><span> {{view.name}}</span>
|
||||
</a>
|
||||
@if (settingsService.organizingSidebarSavedViews) {
|
||||
<div class="position-absolute end-0 top-0 px-3 py-2" [class.me-n3]="slimSidebarEnabled" cdkDragHandle>
|
||||
<i-bs name="grip-vertical"></i-bs>
|
||||
</div>
|
||||
}
|
||||
</li>
|
||||
}
|
||||
</ul>
|
||||
}
|
||||
<ul class="nav flex-column mb-2" cdkDropList (cdkDropListDropped)="onDrop($event)">
|
||||
@for (view of savedViewService.sidebarViews; track view.id) {
|
||||
<li class="nav-item w-100 app-link" cdkDrag [cdkDragDisabled]="!settingsService.organizingSidebarSavedViews"
|
||||
cdkDragPreviewContainer="parent" cdkDragPreviewClass="navItemDrag" (cdkDragStarted)="onDragStart($event)"
|
||||
(cdkDragEnded)="onDragEnd($event)">
|
||||
<a class="nav-link" [class.text-truncate]="!slimSidebarEnabled" routerLink="view/{{view.id}}"
|
||||
routerLinkActive="active" (click)="closeMenu()" [ngbPopover]="view.name"
|
||||
[disablePopover]="!slimSidebarEnabled" placement="end" container="body" triggers="mouseenter:mouseleave"
|
||||
popoverClass="popover-slim">
|
||||
<i-bs class="me-1" name="funnel"></i-bs><span> {{view.name}}</span>
|
||||
</a>
|
||||
@if (settingsService.organizingSidebarSavedViews) {
|
||||
<div class="position-absolute end-0 top-0 px-3 py-2" [class.me-n3]="slimSidebarEnabled" cdkDragHandle>
|
||||
<i-bs name="grip-vertical"></i-bs>
|
||||
</div>
|
||||
}
|
||||
</li>
|
||||
}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="nav-group mt-3 mb-1" *pngxIfPermissions="{ action: PermissionAction.View, type: PermissionType.Document }">
|
||||
|
||||
@@ -35,7 +35,6 @@ import {
|
||||
} from '@angular/cdk/drag-drop'
|
||||
import { NgbModal } from '@ng-bootstrap/ng-bootstrap'
|
||||
import { ProfileEditDialogComponent } from '../common/profile-edit-dialog/profile-edit-dialog.component'
|
||||
import { ObjectWithId } from 'src/app/data/object-with-id'
|
||||
|
||||
@Component({
|
||||
selector: 'pngx-app-frame',
|
||||
|
||||
+43
-22
@@ -10,36 +10,57 @@
|
||||
<div class="modal-body">
|
||||
<div class="row">
|
||||
<div class="col-md-4">
|
||||
<pngx-input-text i18n-title title="Name" formControlName="name" [error]="error?.name" autocomplete="off"></pngx-input-text>
|
||||
<pngx-input-select i18n-title title="Account" [items]="accounts" formControlName="account"></pngx-input-select>
|
||||
<pngx-input-text i18n-title title="Folder" formControlName="folder" i18n-hint hint="Subfolders must be separated by a delimiter, often a dot ('.') or slash ('/'), but it varies by mail server." [error]="error?.folder"></pngx-input-text>
|
||||
<pngx-input-number i18n-title title="Maximum age (days)" formControlName="maximum_age" [showAdd]="false" [error]="error?.maximum_age"></pngx-input-number>
|
||||
<pngx-input-select i18n-title title="Attachment type" [items]="attachmentTypeOptions" formControlName="attachment_type"></pngx-input-select>
|
||||
<pngx-input-select i18n-title title="Consumption scope" [items]="consumptionScopeOptions" formControlName="consumption_scope" i18n-hint hint="See docs for .eml processing requirements"></pngx-input-select>
|
||||
<pngx-input-number i18n-title title="Rule order" formControlName="order" [showAdd]="false" [error]="error?.order"></pngx-input-number>
|
||||
<pngx-input-text [horizontal]="true" i18n-title title="Name" formControlName="name" [error]="error?.name" autocomplete="off"></pngx-input-text>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<p class="small" i18n>Paperless will only process mails that match <em>all</em> of the filters specified below.</p>
|
||||
<pngx-input-text i18n-title title="Filter from" formControlName="filter_from" [error]="error?.filter_from"></pngx-input-text>
|
||||
<pngx-input-text i18n-title title="Filter to" formControlName="filter_to" [error]="error?.filter_to"></pngx-input-text>
|
||||
<pngx-input-text i18n-title title="Filter subject" formControlName="filter_subject" [error]="error?.filter_subject"></pngx-input-text>
|
||||
<pngx-input-text i18n-title title="Filter body" formControlName="filter_body" [error]="error?.filter_body"></pngx-input-text>
|
||||
<pngx-input-text i18n-title title="Filter attachment filename includes" formControlName="filter_attachment_filename_include" i18n-hint hint="Only consume documents which entirely match this filename if specified. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive." [error]="error?.filter_attachment_filename_include"></pngx-input-text>
|
||||
<pngx-input-text i18n-title title="Filter attachment filename excluding" formControlName="filter_attachment_filename_exclude" i18n-hint hint="Do not consume documents which entirely match this filename if specified. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive." [error]="error?.filter_attachment_filename_exclude"></pngx-input-text>
|
||||
<pngx-input-number [horizontal]="true" i18n-title title="Rule order" formControlName="order" [showAdd]="false" [error]="error?.order"></pngx-input-number>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<pngx-input-select i18n-title title="Action" [items]="actionOptions" formControlName="action" i18n-hint hint="Action is only performed when documents are consumed from the mail. Mails without attachments remain entirely untouched."></pngx-input-select>
|
||||
<pngx-input-select [horizontal]="true" i18n-title title="Account" [items]="accounts" formControlName="account"></pngx-input-select>
|
||||
</div>
|
||||
</div>
|
||||
<hr class="mt-0"/>
|
||||
<div class="row">
|
||||
<p class="small" i18n>Paperless will only process mails that match <em>all</em> of the criteria specified below.</p>
|
||||
<div class="col-md-6">
|
||||
<pngx-input-text [horizontal]="true" i18n-title title="Folder" formControlName="folder" i18n-hint hint="Subfolders must be separated by a delimiter, often a dot ('.') or slash ('/'), but it varies by mail server." [error]="error?.folder"></pngx-input-text>
|
||||
<pngx-input-number [horizontal]="true" i18n-title title="Maximum age (days)" formControlName="maximum_age" [showAdd]="false" [error]="error?.maximum_age"></pngx-input-number>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<pngx-input-text [horizontal]="true" i18n-title title="Filter from" formControlName="filter_from" [error]="error?.filter_from"></pngx-input-text>
|
||||
<pngx-input-text [horizontal]="true" i18n-title title="Filter to" formControlName="filter_to" [error]="error?.filter_to"></pngx-input-text>
|
||||
<pngx-input-text [horizontal]="true" i18n-title title="Filter subject" formControlName="filter_subject" [error]="error?.filter_subject"></pngx-input-text>
|
||||
<pngx-input-text [horizontal]="true" i18n-title title="Filter body" formControlName="filter_body" [error]="error?.filter_body"></pngx-input-text>
|
||||
</div>
|
||||
</div>
|
||||
<hr class="mt-0"/>
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<pngx-input-select [horizontal]="true" i18n-title title="Consumption scope" [items]="consumptionScopeOptions" formControlName="consumption_scope" i18n-hint hint="See docs for .eml processing requirements"></pngx-input-select>
|
||||
<pngx-input-select [horizontal]="true" i18n-title title="Attachment type" [items]="attachmentTypeOptions" formControlName="attachment_type"></pngx-input-select>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<pngx-input-text [horizontal]="true" i18n-title title="Include only files matching" formControlName="filter_attachment_filename_include" i18n-hint hint="Optional. Wildcards e.g. *.pdf or *invoice* allowed. Can be comma-separated list. Case insensitive." [error]="error?.filter_attachment_filename_include"></pngx-input-text>
|
||||
<pngx-input-text [horizontal]="true" i18n-title title="Exclude files matching" formControlName="filter_attachment_filename_exclude" i18n-hint hint="Optional. Wildcards e.g. *.pdf or *invoice* allowed. Can be comma-separated list. Case insensitive." [error]="error?.filter_attachment_filename_exclude"></pngx-input-text>
|
||||
</div>
|
||||
</div>
|
||||
<hr class="mt-0"/>
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<pngx-input-select [horizontal]="true" i18n-title title="Action" [items]="actionOptions" formControlName="action" i18n-hint hint="Only performed if the mail is processed."></pngx-input-select>
|
||||
@if (showActionParamField) {
|
||||
<pngx-input-text i18n-title title="Action parameter" formControlName="action_parameter" [error]="error?.action_parameter"></pngx-input-text>
|
||||
<pngx-input-text [horizontal]="true" i18n-title title="Action parameter" formControlName="action_parameter" [error]="error?.action_parameter"></pngx-input-text>
|
||||
}
|
||||
<pngx-input-select i18n-title title="Assign title from" [items]="metadataTitleOptions" formControlName="assign_title_from"></pngx-input-select>
|
||||
<pngx-input-tags [allowCreate]="false" formControlName="assign_tags"></pngx-input-tags>
|
||||
<pngx-input-select i18n-title title="Assign document type" [items]="documentTypes" [allowNull]="true" formControlName="assign_document_type"></pngx-input-select>
|
||||
<pngx-input-select i18n-title title="Assign correspondent from" [items]="metadataCorrespondentOptions" formControlName="assign_correspondent_from"></pngx-input-select>
|
||||
<pngx-input-select [horizontal]="true" i18n-title title="Assign title from" [items]="metadataTitleOptions" formControlName="assign_title_from"></pngx-input-select>
|
||||
<pngx-input-check [horizontal]="true" i18n-title title="Assign owner from rule" formControlName="assign_owner_from_rule"></pngx-input-check>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<pngx-input-tags [horizontal]="true" [allowCreate]="false" formControlName="assign_tags"></pngx-input-tags>
|
||||
<pngx-input-select [horizontal]="true" i18n-title title="Assign document type" [items]="documentTypes" [allowNull]="true" formControlName="assign_document_type"></pngx-input-select>
|
||||
<pngx-input-select [horizontal]="true" i18n-title title="Assign correspondent from" [items]="metadataCorrespondentOptions" formControlName="assign_correspondent_from"></pngx-input-select>
|
||||
@if (showCorrespondentField) {
|
||||
<pngx-input-select i18n-title title="Assign correspondent" [items]="correspondents" [allowNull]="true" formControlName="assign_correspondent"></pngx-input-select>
|
||||
<pngx-input-select [horizontal]="true" i18n-title title="Assign correspondent" [items]="correspondents" [allowNull]="true" formControlName="assign_correspondent"></pngx-input-select>
|
||||
}
|
||||
<pngx-input-check i18n-title title="Assign owner from rule" formControlName="assign_owner_from_rule"></pngx-input-check>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -27,3 +27,11 @@
|
||||
background-position: right calc(0.375em + 0.1875rem) center !important;
|
||||
background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem) !important;
|
||||
}
|
||||
|
||||
.input-group .ng-select-taggable:first-child:nth-last-child(2) {
|
||||
max-width: calc(100% - 45px); // fudge factor for (1x) ng-select button width
|
||||
}
|
||||
|
||||
.input-group .ng-select-taggable:first-child:nth-last-child(3) {
|
||||
max-width: calc(100% - 90px); // fudge factor for (2x) ng-select button width
|
||||
}
|
||||
+2
-2
@@ -6,8 +6,8 @@
|
||||
<input type="file" class="visually-hidden" (change)="onFileSelected($event)" multiple #fileUpload>
|
||||
</form>
|
||||
@if (getStatus().length > 0) {
|
||||
<div class="fixed-bottom p-2 p-md-4 d-flex justify-content-end pe-none max-vh100-40 overflow-y-scroll" [ngClass]="slimSidebarEnabled ? 'col-slim' : 'offset-md-3 offset-lg-2'">
|
||||
<div class="col col-lg-4 col-xl-3 ps-0 pe-0 ps-lg-3 pe-lg-0 pe-auto">
|
||||
<div class="fixed-bottom p-2 p-md-4 d-flex justify-content-end pe-none max-vh100-40" [ngClass]="slimSidebarEnabled ? 'col-slim' : 'offset-md-3 offset-lg-2'">
|
||||
<div class="col col-lg-4 col-xl-3 ps-0 pe-0 ps-lg-3 pe-lg-0 pe-auto overflow-y-scroll">
|
||||
<div class="card shadow-sm consumer-status-card">
|
||||
<div class="card-body">
|
||||
<div class="row">
|
||||
|
||||
+1
-1
@@ -12,7 +12,7 @@ import { DragDropModule } from '@angular/cdk/drag-drop'
|
||||
<button
|
||||
*pngxIfObjectPermissions="{
|
||||
object: { id: 2, owner: user1 },
|
||||
action: 'view'
|
||||
action: 'view',
|
||||
}"
|
||||
>
|
||||
Some Text
|
||||
|
||||
@@ -188,9 +188,9 @@ export class FilterEditorComponent
|
||||
case FILTER_CORRESPONDENT:
|
||||
case FILTER_HAS_CORRESPONDENT_ANY:
|
||||
if (rule.value) {
|
||||
return $localize`Correspondent: ${this.correspondents.find(
|
||||
(c) => c.id == +rule.value
|
||||
)?.name}`
|
||||
return $localize`Correspondent: ${
|
||||
this.correspondents.find((c) => c.id == +rule.value)?.name
|
||||
}`
|
||||
} else {
|
||||
return $localize`Without correspondent`
|
||||
}
|
||||
@@ -198,9 +198,9 @@ export class FilterEditorComponent
|
||||
case FILTER_DOCUMENT_TYPE:
|
||||
case FILTER_HAS_DOCUMENT_TYPE_ANY:
|
||||
if (rule.value) {
|
||||
return $localize`Document type: ${this.documentTypes.find(
|
||||
(dt) => dt.id == +rule.value
|
||||
)?.name}`
|
||||
return $localize`Document type: ${
|
||||
this.documentTypes.find((dt) => dt.id == +rule.value)?.name
|
||||
}`
|
||||
} else {
|
||||
return $localize`Without document type`
|
||||
}
|
||||
@@ -208,16 +208,17 @@ export class FilterEditorComponent
|
||||
case FILTER_STORAGE_PATH:
|
||||
case FILTER_HAS_STORAGE_PATH_ANY:
|
||||
if (rule.value) {
|
||||
return $localize`Storage path: ${this.storagePaths.find(
|
||||
(sp) => sp.id == +rule.value
|
||||
)?.name}`
|
||||
return $localize`Storage path: ${
|
||||
this.storagePaths.find((sp) => sp.id == +rule.value)?.name
|
||||
}`
|
||||
} else {
|
||||
return $localize`Without storage path`
|
||||
}
|
||||
|
||||
case FILTER_HAS_TAGS_ALL:
|
||||
return $localize`Tag: ${this.tags.find((t) => t.id == +rule.value)
|
||||
?.name}`
|
||||
return $localize`Tag: ${
|
||||
this.tags.find((t) => t.id == +rule.value)?.name
|
||||
}`
|
||||
|
||||
case FILTER_HAS_ANY_TAG:
|
||||
if (rule.value == 'false') {
|
||||
@@ -225,9 +226,9 @@ export class FilterEditorComponent
|
||||
}
|
||||
|
||||
case FILTER_HAS_CUSTOM_FIELDS_ALL:
|
||||
return $localize`Custom fields: ${this.customFields.find(
|
||||
(f) => f.id == +rule.value
|
||||
)?.name}`
|
||||
return $localize`Custom fields: ${
|
||||
this.customFields.find((f) => f.id == +rule.value)?.name
|
||||
}`
|
||||
|
||||
case FILTER_HAS_ANY_CUSTOM_FIELDS:
|
||||
if (rule.value == 'false') {
|
||||
|
||||
@@ -9,7 +9,7 @@ import { PermissionsService } from '../services/permissions.service'
|
||||
<button
|
||||
*pngxIfObjectPermissions="{
|
||||
object: { id: 2, owner: user1 },
|
||||
action: 'view'
|
||||
action: 'view',
|
||||
}"
|
||||
>
|
||||
Some Text
|
||||
|
||||
@@ -29,7 +29,7 @@ export class UsernamePipe implements PipeTransform {
|
||||
|
||||
transform(userID: number): string {
|
||||
return this.users
|
||||
? this.getName(this.users.find((u) => u.id === userID)) ?? ''
|
||||
? (this.getName(this.users.find((u) => u.id === userID)) ?? '')
|
||||
: $localize`Shared`
|
||||
}
|
||||
|
||||
|
||||
@@ -298,8 +298,9 @@ export class DocumentListViewService {
|
||||
errorMessage = Object.keys(error.error)
|
||||
.map((fieldName) => {
|
||||
const fieldError: Array<string> = error.error[fieldName]
|
||||
return `${this.sortFields.find((f) => f.field == fieldName)
|
||||
?.name}: ${fieldError[0]}`
|
||||
return `${
|
||||
this.sortFields.find((f) => f.field == fieldName)?.name
|
||||
}: ${fieldError[0]}`
|
||||
})
|
||||
.join(', ')
|
||||
} else {
|
||||
|
||||
@@ -69,6 +69,16 @@ describe(`Additional service tests for SavedViewService`, () => {
|
||||
expect(service.sidebarViews).toHaveLength(3)
|
||||
})
|
||||
|
||||
it('should gracefully handle errors', () => {
|
||||
service.initialize()
|
||||
const req = httpTestingController.expectOne(
|
||||
`${environment.apiBaseUrl}${endpoint}/?page=1&page_size=100000`
|
||||
)
|
||||
req.error(new ErrorEvent('error'))
|
||||
expect(service.loading).toBeFalsy()
|
||||
expect(service.allViews).toHaveLength(0)
|
||||
})
|
||||
|
||||
it('should support patchMany', () => {
|
||||
subscription = service.patchMany(saved_views).subscribe()
|
||||
saved_views.forEach((saved_view) => {
|
||||
|
||||
@@ -3,7 +3,6 @@ import { Injectable } from '@angular/core'
|
||||
import { combineLatest, Observable } from 'rxjs'
|
||||
import { tap } from 'rxjs/operators'
|
||||
import { SavedView } from 'src/app/data/saved-view'
|
||||
import { PermissionsService } from '../permissions.service'
|
||||
import { AbstractPaperlessService } from './abstract-paperless-service'
|
||||
import { SettingsService } from '../settings.service'
|
||||
import { SETTINGS_KEYS } from 'src/app/data/ui-settings'
|
||||
@@ -12,11 +11,11 @@ import { SETTINGS_KEYS } from 'src/app/data/ui-settings'
|
||||
providedIn: 'root',
|
||||
})
|
||||
export class SavedViewService extends AbstractPaperlessService<SavedView> {
|
||||
loading: boolean
|
||||
public loading: boolean = true
|
||||
private savedViews: SavedView[] = []
|
||||
|
||||
constructor(
|
||||
http: HttpClient,
|
||||
permissionService: PermissionsService,
|
||||
protected http: HttpClient,
|
||||
private settingsService: SettingsService
|
||||
) {
|
||||
super(http, 'saved_views')
|
||||
@@ -27,16 +26,19 @@ export class SavedViewService extends AbstractPaperlessService<SavedView> {
|
||||
}
|
||||
|
||||
private reload() {
|
||||
this.loading = true
|
||||
this.listAll().subscribe((r) => {
|
||||
this.savedViews = r.results
|
||||
this.loading = false
|
||||
this.settingsService.dashboardIsEmpty = this.dashboardViews.length === 0
|
||||
this.listAll().subscribe({
|
||||
next: (r) => {
|
||||
this.savedViews = r.results
|
||||
this.loading = false
|
||||
this.settingsService.dashboardIsEmpty = this.dashboardViews.length === 0
|
||||
},
|
||||
error: () => {
|
||||
this.loading = false
|
||||
this.settingsService.dashboardIsEmpty = true
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
private savedViews: SavedView[] = []
|
||||
|
||||
get allViews() {
|
||||
return this.savedViews
|
||||
}
|
||||
|
||||
@@ -143,6 +143,12 @@ const LANGUAGE_OPTIONS = [
|
||||
englishName: 'Japanese',
|
||||
dateInputFormat: 'yyyy/mm/dd',
|
||||
},
|
||||
{
|
||||
code: 'ko-kr',
|
||||
name: $localize`Korean`,
|
||||
englishName: 'Korean',
|
||||
dateInputFormat: 'yyyy-mm-dd',
|
||||
},
|
||||
{
|
||||
code: 'lb-lu',
|
||||
name: $localize`Luxembourgish`,
|
||||
|
||||
@@ -53,7 +53,7 @@ export class UploadDocumentsService {
|
||||
)
|
||||
status.message = $localize`Uploading...`
|
||||
} else if (event.type == HttpEventType.Response) {
|
||||
status.taskId = event.body['task_id']
|
||||
status.taskId = event.body['task_id'] ?? event.body.toString()
|
||||
status.message = $localize`Upload complete, waiting...`
|
||||
this.uploadSubscriptions[file.name]?.complete()
|
||||
}
|
||||
|
||||
@@ -5,7 +5,7 @@ export const environment = {
|
||||
apiBaseUrl: document.baseURI + 'api/',
|
||||
apiVersion: '5',
|
||||
appTitle: 'Paperless-ngx',
|
||||
version: '2.11.3',
|
||||
version: '2.12.0',
|
||||
webSocketHost: window.location.host,
|
||||
webSocketProtocol: window.location.protocol == 'https:' ? 'wss:' : 'ws:',
|
||||
webSocketBaseUrl: base_url.pathname + 'ws/',
|
||||
|
||||
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
@@ -7,8 +7,8 @@ from typing import Optional
|
||||
|
||||
from django.conf import settings
|
||||
from pdf2image import convert_from_path
|
||||
from pdf2image.exceptions import PDFPageCountError
|
||||
from pikepdf import Page
|
||||
from pikepdf import PasswordError
|
||||
from pikepdf import Pdf
|
||||
from PIL import Image
|
||||
|
||||
@@ -231,13 +231,41 @@ class BarcodePlugin(ConsumeTaskPlugin):
|
||||
logger.debug("Scanning for barcodes using ZXING")
|
||||
|
||||
try:
|
||||
pages_from_path = convert_from_path(
|
||||
self.pdf_file,
|
||||
dpi=settings.CONSUMER_BARCODE_DPI,
|
||||
output_folder=self.temp_dir.name,
|
||||
# Read number of pages from pdf
|
||||
with Pdf.open(self.pdf_file) as pdf:
|
||||
num_of_pages = len(pdf.pages)
|
||||
logger.debug(f"PDF has {num_of_pages} pages")
|
||||
|
||||
# Get limit from configuration
|
||||
barcode_max_pages = (
|
||||
num_of_pages
|
||||
if settings.CONSUMER_BARCODE_MAX_PAGES == 0
|
||||
else settings.CONSUMER_BARCODE_MAX_PAGES
|
||||
)
|
||||
|
||||
for current_page_number, page in enumerate(pages_from_path):
|
||||
if barcode_max_pages < num_of_pages: # pragma: no cover
|
||||
logger.debug(
|
||||
f"Barcodes detection will be limited to the first {barcode_max_pages} pages",
|
||||
)
|
||||
|
||||
# Loop al page
|
||||
for current_page_number in range(min(num_of_pages, barcode_max_pages)):
|
||||
logger.debug(f"Processing page {current_page_number}")
|
||||
|
||||
# Convert page to image
|
||||
page = convert_from_path(
|
||||
self.pdf_file,
|
||||
dpi=settings.CONSUMER_BARCODE_DPI,
|
||||
output_folder=self.temp_dir.name,
|
||||
first_page=current_page_number + 1,
|
||||
last_page=current_page_number + 1,
|
||||
)[0]
|
||||
|
||||
# Remember filename, since it is lost by upscaling
|
||||
page_filepath = Path(page.filename)
|
||||
logger.debug(f"Image is at {page_filepath}")
|
||||
|
||||
# Upscale image if configured
|
||||
factor = settings.CONSUMER_BARCODE_UPSCALE
|
||||
if factor > 1.0:
|
||||
logger.debug(
|
||||
@@ -248,14 +276,18 @@ class BarcodePlugin(ConsumeTaskPlugin):
|
||||
(int(round(x * factor)), (int(round(y * factor)))),
|
||||
)
|
||||
|
||||
# Detect barcodes
|
||||
for barcode_value in reader(page):
|
||||
self.barcodes.append(
|
||||
Barcode(current_page_number, barcode_value),
|
||||
)
|
||||
|
||||
# Delete temporary image file
|
||||
page_filepath.unlink()
|
||||
|
||||
# Password protected files can't be checked
|
||||
# This is the exception raised for those
|
||||
except PDFPageCountError as e:
|
||||
except PasswordError as e:
|
||||
logger.warning(
|
||||
f"File is likely password protected, not checking for barcodes: {e}",
|
||||
)
|
||||
|
||||
+37
-110
@@ -8,8 +8,8 @@ from datetime import timezone
|
||||
from shutil import rmtree
|
||||
from typing import Optional
|
||||
|
||||
from dateutil.parser import isoparse
|
||||
from django.conf import settings
|
||||
from django.db.models import QuerySet
|
||||
from django.utils import timezone as django_timezone
|
||||
from guardian.shortcuts import get_users_with_perms
|
||||
from whoosh import classify
|
||||
@@ -22,6 +22,8 @@ from whoosh.fields import NUMERIC
|
||||
from whoosh.fields import TEXT
|
||||
from whoosh.fields import Schema
|
||||
from whoosh.highlight import HtmlFormatter
|
||||
from whoosh.idsets import BitSet
|
||||
from whoosh.idsets import DocIdSet
|
||||
from whoosh.index import FileIndex
|
||||
from whoosh.index import create_in
|
||||
from whoosh.index import exists_in
|
||||
@@ -31,6 +33,7 @@ from whoosh.qparser import QueryParser
|
||||
from whoosh.qparser.dateparse import DateParserPlugin
|
||||
from whoosh.qparser.dateparse import English
|
||||
from whoosh.qparser.plugins import FieldsPlugin
|
||||
from whoosh.reading import IndexReader
|
||||
from whoosh.scoring import TF_IDF
|
||||
from whoosh.searching import ResultsPage
|
||||
from whoosh.searching import Searcher
|
||||
@@ -201,114 +204,32 @@ def remove_document_from_index(document: Document):
|
||||
remove_document(writer, document)
|
||||
|
||||
|
||||
class MappedDocIdSet(DocIdSet):
|
||||
"""
|
||||
A DocIdSet backed by a set of `Document` IDs.
|
||||
Supports efficiently looking up if a whoosh docnum is in the provided `filter_queryset`.
|
||||
"""
|
||||
|
||||
def __init__(self, filter_queryset: QuerySet, ixreader: IndexReader) -> None:
|
||||
super().__init__()
|
||||
document_ids = filter_queryset.order_by("id").values_list("id", flat=True)
|
||||
max_id = document_ids.last() or 0
|
||||
self.document_ids = BitSet(document_ids, size=max_id)
|
||||
self.ixreader = ixreader
|
||||
|
||||
def __contains__(self, docnum):
|
||||
document_id = self.ixreader.stored_fields(docnum)["id"]
|
||||
return document_id in self.document_ids
|
||||
|
||||
def __bool__(self):
|
||||
# searcher.search ignores a filter if it's "falsy".
|
||||
# We use this hack so this DocIdSet, when used as a filter, is never ignored.
|
||||
return True
|
||||
|
||||
|
||||
class DelayedQuery:
|
||||
param_map = {
|
||||
"correspondent": ("correspondent", ["id", "id__in", "id__none", "isnull"]),
|
||||
"document_type": ("type", ["id", "id__in", "id__none", "isnull"]),
|
||||
"storage_path": ("path", ["id", "id__in", "id__none", "isnull"]),
|
||||
"owner": ("owner", ["id", "id__in", "id__none", "isnull"]),
|
||||
"shared_by": ("shared_by", ["id"]),
|
||||
"tags": ("tag", ["id__all", "id__in", "id__none"]),
|
||||
"added": ("added", ["date__lt", "date__gt"]),
|
||||
"created": ("created", ["date__lt", "date__gt"]),
|
||||
"checksum": ("checksum", ["icontains", "istartswith"]),
|
||||
"original_filename": ("original_filename", ["icontains", "istartswith"]),
|
||||
"custom_fields": (
|
||||
"custom_fields",
|
||||
["icontains", "istartswith", "id__all", "id__in", "id__none"],
|
||||
),
|
||||
}
|
||||
|
||||
def _get_query(self):
|
||||
raise NotImplementedError
|
||||
|
||||
def _get_query_filter(self):
|
||||
criterias = []
|
||||
for key, value in self.query_params.items():
|
||||
# is_tagged is a special case
|
||||
if key == "is_tagged":
|
||||
criterias.append(query.Term("has_tag", self.evalBoolean(value)))
|
||||
continue
|
||||
|
||||
if key == "has_custom_fields":
|
||||
criterias.append(
|
||||
query.Term("has_custom_fields", self.evalBoolean(value)),
|
||||
)
|
||||
continue
|
||||
|
||||
# Don't process query params without a filter
|
||||
if "__" not in key:
|
||||
continue
|
||||
|
||||
# All other query params consist of a parameter and a query filter
|
||||
param, query_filter = key.split("__", 1)
|
||||
try:
|
||||
field, supported_query_filters = self.param_map[param]
|
||||
except KeyError:
|
||||
logger.error(f"Unable to build a query filter for parameter {key}")
|
||||
continue
|
||||
|
||||
# We only support certain filters per parameter
|
||||
if query_filter not in supported_query_filters:
|
||||
logger.info(
|
||||
f"Query filter {query_filter} not supported for parameter {param}",
|
||||
)
|
||||
continue
|
||||
|
||||
if query_filter == "id":
|
||||
if param == "shared_by":
|
||||
criterias.append(query.Term("is_shared", True))
|
||||
criterias.append(query.Term("owner_id", value))
|
||||
else:
|
||||
criterias.append(query.Term(f"{field}_id", value))
|
||||
elif query_filter == "id__in":
|
||||
in_filter = []
|
||||
for object_id in value.split(","):
|
||||
in_filter.append(
|
||||
query.Term(f"{field}_id", object_id),
|
||||
)
|
||||
criterias.append(query.Or(in_filter))
|
||||
elif query_filter == "id__none":
|
||||
for object_id in value.split(","):
|
||||
criterias.append(
|
||||
query.Not(query.Term(f"{field}_id", object_id)),
|
||||
)
|
||||
elif query_filter == "isnull":
|
||||
criterias.append(
|
||||
query.Term(f"has_{field}", self.evalBoolean(value) is False),
|
||||
)
|
||||
elif query_filter == "id__all":
|
||||
for object_id in value.split(","):
|
||||
criterias.append(query.Term(f"{field}_id", object_id))
|
||||
elif query_filter == "date__lt":
|
||||
criterias.append(
|
||||
query.DateRange(field, start=None, end=isoparse(value)),
|
||||
)
|
||||
elif query_filter == "date__gt":
|
||||
criterias.append(
|
||||
query.DateRange(field, start=isoparse(value), end=None),
|
||||
)
|
||||
elif query_filter == "icontains":
|
||||
criterias.append(
|
||||
query.Term(field, value),
|
||||
)
|
||||
elif query_filter == "istartswith":
|
||||
criterias.append(
|
||||
query.Prefix(field, value),
|
||||
)
|
||||
|
||||
user_criterias = get_permissions_criterias(
|
||||
user=self.user,
|
||||
)
|
||||
if len(criterias) > 0:
|
||||
if len(user_criterias) > 0:
|
||||
criterias.append(query.Or(user_criterias))
|
||||
return query.And(criterias)
|
||||
else:
|
||||
return query.Or(user_criterias) if len(user_criterias) > 0 else None
|
||||
|
||||
def evalBoolean(self, val):
|
||||
return val.lower() in {"true", "1"}
|
||||
raise NotImplementedError # pragma: no cover
|
||||
|
||||
def _get_query_sortedby(self):
|
||||
if "ordering" not in self.query_params:
|
||||
@@ -339,13 +260,19 @@ class DelayedQuery:
|
||||
else:
|
||||
return sort_fields_map[field], reverse
|
||||
|
||||
def __init__(self, searcher: Searcher, query_params, page_size, user):
|
||||
def __init__(
|
||||
self,
|
||||
searcher: Searcher,
|
||||
query_params,
|
||||
page_size,
|
||||
filter_queryset: QuerySet,
|
||||
):
|
||||
self.searcher = searcher
|
||||
self.query_params = query_params
|
||||
self.page_size = page_size
|
||||
self.saved_results = dict()
|
||||
self.first_score = None
|
||||
self.user = user
|
||||
self.filter_queryset = filter_queryset
|
||||
|
||||
def __len__(self):
|
||||
page = self[0:1]
|
||||
@@ -361,7 +288,7 @@ class DelayedQuery:
|
||||
page: ResultsPage = self.searcher.search_page(
|
||||
q,
|
||||
mask=mask,
|
||||
filter=self._get_query_filter(),
|
||||
filter=MappedDocIdSet(self.filter_queryset, self.searcher.ixreader),
|
||||
pagenum=math.floor(item.start / self.page_size) + 1,
|
||||
pagelen=self.page_size,
|
||||
sortedby=sortedby,
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
# Generated by Django 4.2.15 on 2024-08-20 02:41
|
||||
|
||||
from django.db import migrations
|
||||
from django.db import models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
("documents", "1051_alter_correspondent_owner_alter_document_owner_and_more"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name="document",
|
||||
name="transaction_id",
|
||||
field=models.UUIDField(blank=True, null=True),
|
||||
),
|
||||
]
|
||||
@@ -2,6 +2,7 @@ import datetime
|
||||
import math
|
||||
import re
|
||||
import zoneinfo
|
||||
from collections.abc import Iterable
|
||||
from decimal import Decimal
|
||||
|
||||
import magic
|
||||
@@ -232,22 +233,45 @@ class OwnedObjectSerializer(
|
||||
)
|
||||
)
|
||||
|
||||
def get_is_shared_by_requester(self, obj: Document):
|
||||
ctype = ContentType.objects.get_for_model(obj)
|
||||
@staticmethod
|
||||
def get_shared_object_pks(objects: Iterable):
|
||||
"""
|
||||
Return the primary keys of the subset of objects that are shared.
|
||||
"""
|
||||
try:
|
||||
first_obj = next(iter(objects))
|
||||
except StopIteration:
|
||||
return set()
|
||||
|
||||
ctype = ContentType.objects.get_for_model(first_obj)
|
||||
object_pks = list(obj.pk for obj in objects)
|
||||
pk_type = type(first_obj.pk)
|
||||
|
||||
def get_pks_for_permission_type(model):
|
||||
return map(
|
||||
pk_type, # coerce the pk to be the same type of the provided objects
|
||||
model.objects.filter(
|
||||
content_type=ctype,
|
||||
object_pk__in=object_pks,
|
||||
)
|
||||
.values_list("object_pk", flat=True)
|
||||
.distinct(),
|
||||
)
|
||||
|
||||
UserObjectPermission = get_user_obj_perms_model()
|
||||
GroupObjectPermission = get_group_obj_perms_model()
|
||||
return obj.owner == self.user and (
|
||||
UserObjectPermission.objects.filter(
|
||||
content_type=ctype,
|
||||
object_pk=obj.pk,
|
||||
).count()
|
||||
> 0
|
||||
or GroupObjectPermission.objects.filter(
|
||||
content_type=ctype,
|
||||
object_pk=obj.pk,
|
||||
).count()
|
||||
> 0
|
||||
)
|
||||
user_permission_pks = get_pks_for_permission_type(UserObjectPermission)
|
||||
group_permission_pks = get_pks_for_permission_type(GroupObjectPermission)
|
||||
|
||||
return set(user_permission_pks) | set(group_permission_pks)
|
||||
|
||||
def get_is_shared_by_requester(self, obj: Document):
|
||||
# First check the context to see if `shared_object_pks` is set by the parent.
|
||||
shared_object_pks = self.context.get("shared_object_pks")
|
||||
# If not just check if the current object is shared.
|
||||
if shared_object_pks is None:
|
||||
shared_object_pks = self.get_shared_object_pks([obj])
|
||||
return obj.owner == self.user and obj.id in shared_object_pks
|
||||
|
||||
permissions = SerializerMethodField(read_only=True)
|
||||
user_can_change = SerializerMethodField(read_only=True)
|
||||
@@ -303,6 +327,14 @@ class OwnedObjectSerializer(
|
||||
return super().update(instance, validated_data)
|
||||
|
||||
|
||||
class OwnedObjectListSerializer(serializers.ListSerializer):
|
||||
def to_representation(self, documents):
|
||||
self.child.context["shared_object_pks"] = self.child.get_shared_object_pks(
|
||||
documents,
|
||||
)
|
||||
return super().to_representation(documents)
|
||||
|
||||
|
||||
class CorrespondentSerializer(MatchingModelSerializer, OwnedObjectSerializer):
|
||||
last_correspondence = serializers.DateTimeField(read_only=True, required=False)
|
||||
|
||||
@@ -863,35 +895,69 @@ class DocumentSerializer(
|
||||
"custom_fields",
|
||||
"remove_inbox_tags",
|
||||
)
|
||||
list_serializer_class = OwnedObjectListSerializer
|
||||
|
||||
|
||||
class SearchResultListSerializer(serializers.ListSerializer):
|
||||
def to_representation(self, hits):
|
||||
document_ids = [hit["id"] for hit in hits]
|
||||
# Fetch all Document objects in the list in one SQL query.
|
||||
documents = self.child.fetch_documents(document_ids)
|
||||
self.child.context["documents"] = documents
|
||||
# Also check if they are shared with other users / groups.
|
||||
self.child.context["shared_object_pks"] = self.child.get_shared_object_pks(
|
||||
documents.values(),
|
||||
)
|
||||
|
||||
return super().to_representation(hits)
|
||||
|
||||
|
||||
class SearchResultSerializer(DocumentSerializer):
|
||||
def to_representation(self, instance):
|
||||
doc = (
|
||||
Document.objects.select_related(
|
||||
@staticmethod
|
||||
def fetch_documents(ids):
|
||||
"""
|
||||
Return a dict that maps given document IDs to Document objects.
|
||||
"""
|
||||
return {
|
||||
document.id: document
|
||||
for document in Document.objects.select_related(
|
||||
"correspondent",
|
||||
"storage_path",
|
||||
"document_type",
|
||||
"owner",
|
||||
)
|
||||
.prefetch_related("tags", "custom_fields", "notes")
|
||||
.get(id=instance["id"])
|
||||
)
|
||||
.filter(id__in=ids)
|
||||
}
|
||||
|
||||
def to_representation(self, hit):
|
||||
# Again we first check if the parent has already fetched the documents.
|
||||
documents = self.context.get("documents")
|
||||
# Otherwise we fetch this document.
|
||||
if documents is None: # pragma: no cover
|
||||
# In practice we only serialize **lists** of whoosh.searching.Hit.
|
||||
# I'm keeping this check for completeness but marking it no cover for now.
|
||||
documents = self.fetch_documents([hit["id"]])
|
||||
document = documents[hit["id"]]
|
||||
|
||||
notes = ",".join(
|
||||
[str(c.note) for c in doc.notes.all()],
|
||||
[str(c.note) for c in document.notes.all()],
|
||||
)
|
||||
r = super().to_representation(doc)
|
||||
r = super().to_representation(document)
|
||||
r["__search_hit__"] = {
|
||||
"score": instance.score,
|
||||
"highlights": instance.highlights("content", text=doc.content),
|
||||
"score": hit.score,
|
||||
"highlights": hit.highlights("content", text=document.content),
|
||||
"note_highlights": (
|
||||
instance.highlights("notes", text=notes) if doc else None
|
||||
hit.highlights("notes", text=notes) if document else None
|
||||
),
|
||||
"rank": instance.rank,
|
||||
"rank": hit.rank,
|
||||
}
|
||||
|
||||
return r
|
||||
|
||||
class Meta(DocumentSerializer.Meta):
|
||||
list_serializer_class = SearchResultListSerializer
|
||||
|
||||
|
||||
class SavedViewFilterRuleSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
|
||||
+14
-20
@@ -47,8 +47,6 @@ from documents.signals import document_updated
|
||||
from documents.signals.handlers import cleanup_document_deletion
|
||||
|
||||
if settings.AUDIT_LOG_ENABLED:
|
||||
import json
|
||||
|
||||
from auditlog.models import LogEntry
|
||||
logger = logging.getLogger("paperless.tasks")
|
||||
|
||||
@@ -259,24 +257,20 @@ def update_document_archive_file(document_id):
|
||||
if settings.AUDIT_LOG_ENABLED:
|
||||
LogEntry.objects.log_create(
|
||||
instance=oldDocument,
|
||||
changes=json.dumps(
|
||||
{
|
||||
"content": [oldDocument.content, newDocument.content],
|
||||
"archive_checksum": [
|
||||
oldDocument.archive_checksum,
|
||||
newDocument.archive_checksum,
|
||||
],
|
||||
"archive_filename": [
|
||||
oldDocument.archive_filename,
|
||||
newDocument.archive_filename,
|
||||
],
|
||||
},
|
||||
),
|
||||
additional_data=json.dumps(
|
||||
{
|
||||
"reason": "Redo OCR called",
|
||||
},
|
||||
),
|
||||
changes={
|
||||
"content": [oldDocument.content, newDocument.content],
|
||||
"archive_checksum": [
|
||||
oldDocument.archive_checksum,
|
||||
newDocument.archive_checksum,
|
||||
],
|
||||
"archive_filename": [
|
||||
oldDocument.archive_filename,
|
||||
newDocument.archive_filename,
|
||||
],
|
||||
},
|
||||
additional_data={
|
||||
"reason": "Update document archive file",
|
||||
},
|
||||
action=LogEntry.Action.UPDATE,
|
||||
)
|
||||
|
||||
|
||||
@@ -15,6 +15,7 @@ from rest_framework.test import APITestCase
|
||||
from whoosh.writing import AsyncWriter
|
||||
|
||||
from documents import index
|
||||
from documents.bulk_edit import set_permissions
|
||||
from documents.models import Correspondent
|
||||
from documents.models import CustomField
|
||||
from documents.models import CustomFieldInstance
|
||||
@@ -1159,7 +1160,8 @@ class TestDocumentSearchApi(DirectoriesMixin, APITestCase):
|
||||
[d3.id, d2.id, d1.id],
|
||||
)
|
||||
|
||||
def test_global_search(self):
|
||||
@mock.patch("documents.bulk_edit.bulk_update_documents")
|
||||
def test_global_search(self, m):
|
||||
"""
|
||||
GIVEN:
|
||||
- Multiple documents and objects
|
||||
@@ -1186,11 +1188,38 @@ class TestDocumentSearchApi(DirectoriesMixin, APITestCase):
|
||||
checksum="C",
|
||||
pk=3,
|
||||
)
|
||||
# The below two documents are owned by user2 and shouldn't show up in results!
|
||||
d4 = Document.objects.create(
|
||||
title="doc 4 owned by user2",
|
||||
content="bank bank bank bank 4",
|
||||
checksum="D",
|
||||
pk=4,
|
||||
)
|
||||
d5 = Document.objects.create(
|
||||
title="doc 5 owned by user2",
|
||||
content="bank bank bank bank 5",
|
||||
checksum="E",
|
||||
pk=5,
|
||||
)
|
||||
|
||||
user1 = User.objects.create_user("bank user1")
|
||||
user2 = User.objects.create_superuser("user2")
|
||||
group1 = Group.objects.create(name="bank group1")
|
||||
Group.objects.create(name="group2")
|
||||
|
||||
user1.user_permissions.add(
|
||||
*Permission.objects.filter(codename__startswith="view_").exclude(
|
||||
content_type__app_label="admin",
|
||||
),
|
||||
)
|
||||
set_permissions([4, 5], set_permissions=[], owner=user2, merge=False)
|
||||
|
||||
with index.open_index_writer() as writer:
|
||||
index.update_document(writer, d1)
|
||||
index.update_document(writer, d2)
|
||||
index.update_document(writer, d3)
|
||||
index.update_document(writer, d4)
|
||||
index.update_document(writer, d5)
|
||||
|
||||
correspondent1 = Correspondent.objects.create(name="bank correspondent 1")
|
||||
Correspondent.objects.create(name="correspondent 2")
|
||||
@@ -1200,10 +1229,7 @@ class TestDocumentSearchApi(DirectoriesMixin, APITestCase):
|
||||
StoragePath.objects.create(name="path 2", path="path2")
|
||||
tag1 = Tag.objects.create(name="bank tag1")
|
||||
Tag.objects.create(name="tag2")
|
||||
user1 = User.objects.create_superuser("bank user1")
|
||||
User.objects.create_user("user2")
|
||||
group1 = Group.objects.create(name="bank group1")
|
||||
Group.objects.create(name="group2")
|
||||
|
||||
SavedView.objects.create(
|
||||
name="bank view",
|
||||
show_on_dashboard=True,
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
from dateutil.parser import isoparse
|
||||
from django.test import TestCase
|
||||
from whoosh import query
|
||||
|
||||
from documents.index import DelayedQuery
|
||||
from documents.index import get_permissions_criterias
|
||||
from documents.models import User
|
||||
|
||||
@@ -58,162 +56,3 @@ class TestDelayedQuery(TestCase):
|
||||
)
|
||||
for user, expected in tests:
|
||||
self.assertEqual(get_permissions_criterias(user), expected)
|
||||
|
||||
def test_no_query_filters(self):
|
||||
dq = DelayedQuery(None, {}, None, None)
|
||||
self.assertEqual(dq._get_query_filter(), self.has_no_owner)
|
||||
|
||||
def test_date_query_filters(self):
|
||||
def _get_testset(param: str):
|
||||
date_str = "1970-01-01T02:44"
|
||||
date_obj = isoparse(date_str)
|
||||
return (
|
||||
(
|
||||
{f"{param}__date__lt": date_str},
|
||||
query.And(
|
||||
[
|
||||
query.DateRange(param, start=None, end=date_obj),
|
||||
self.has_no_owner,
|
||||
],
|
||||
),
|
||||
),
|
||||
(
|
||||
{f"{param}__date__gt": date_str},
|
||||
query.And(
|
||||
[
|
||||
query.DateRange(param, start=date_obj, end=None),
|
||||
self.has_no_owner,
|
||||
],
|
||||
),
|
||||
),
|
||||
)
|
||||
|
||||
query_params = ["created", "added"]
|
||||
for param in query_params:
|
||||
for params, expected in _get_testset(param):
|
||||
dq = DelayedQuery(None, params, None, None)
|
||||
got = dq._get_query_filter()
|
||||
self.assertCountEqual(got, expected)
|
||||
|
||||
def test_is_tagged_query_filter(self):
|
||||
tests = (
|
||||
("True", True),
|
||||
("true", True),
|
||||
("1", True),
|
||||
("False", False),
|
||||
("false", False),
|
||||
("0", False),
|
||||
("foo", False),
|
||||
)
|
||||
for param, expected in tests:
|
||||
dq = DelayedQuery(None, {"is_tagged": param}, None, None)
|
||||
self.assertEqual(
|
||||
dq._get_query_filter(),
|
||||
query.And([query.Term("has_tag", expected), self.has_no_owner]),
|
||||
)
|
||||
|
||||
def test_tags_query_filters(self):
|
||||
# tests contains tuples of query_parameter dics and the expected whoosh query
|
||||
param = "tags"
|
||||
field, _ = DelayedQuery.param_map[param]
|
||||
tests = (
|
||||
(
|
||||
{f"{param}__id__all": "42,43"},
|
||||
query.And(
|
||||
[
|
||||
query.Term(f"{field}_id", "42"),
|
||||
query.Term(f"{field}_id", "43"),
|
||||
self.has_no_owner,
|
||||
],
|
||||
),
|
||||
),
|
||||
# tags does not allow __id
|
||||
(
|
||||
{f"{param}__id": "42"},
|
||||
self.has_no_owner,
|
||||
),
|
||||
# tags does not allow __isnull
|
||||
(
|
||||
{f"{param}__isnull": "true"},
|
||||
self.has_no_owner,
|
||||
),
|
||||
self._get_testset__id__in(param, field),
|
||||
self._get_testset__id__none(param, field),
|
||||
)
|
||||
|
||||
for params, expected in tests:
|
||||
dq = DelayedQuery(None, params, None, None)
|
||||
got = dq._get_query_filter()
|
||||
self.assertCountEqual(got, expected)
|
||||
|
||||
def test_generic_query_filters(self):
|
||||
def _get_testset(param: str):
|
||||
field, _ = DelayedQuery.param_map[param]
|
||||
return (
|
||||
(
|
||||
{f"{param}__id": "42"},
|
||||
query.And(
|
||||
[
|
||||
query.Term(f"{field}_id", "42"),
|
||||
self.has_no_owner,
|
||||
],
|
||||
),
|
||||
),
|
||||
self._get_testset__id__in(param, field),
|
||||
self._get_testset__id__none(param, field),
|
||||
(
|
||||
{f"{param}__isnull": "true"},
|
||||
query.And(
|
||||
[
|
||||
query.Term(f"has_{field}", False),
|
||||
self.has_no_owner,
|
||||
],
|
||||
),
|
||||
),
|
||||
(
|
||||
{f"{param}__isnull": "false"},
|
||||
query.And(
|
||||
[
|
||||
query.Term(f"has_{field}", True),
|
||||
self.has_no_owner,
|
||||
],
|
||||
),
|
||||
),
|
||||
)
|
||||
|
||||
query_params = ["correspondent", "document_type", "storage_path", "owner"]
|
||||
for param in query_params:
|
||||
for params, expected in _get_testset(param):
|
||||
dq = DelayedQuery(None, params, None, None)
|
||||
got = dq._get_query_filter()
|
||||
self.assertCountEqual(got, expected)
|
||||
|
||||
def test_char_query_filter(self):
|
||||
def _get_testset(param: str):
|
||||
return (
|
||||
(
|
||||
{f"{param}__icontains": "foo"},
|
||||
query.And(
|
||||
[
|
||||
query.Term(f"{param}", "foo"),
|
||||
self.has_no_owner,
|
||||
],
|
||||
),
|
||||
),
|
||||
(
|
||||
{f"{param}__istartswith": "foo"},
|
||||
query.And(
|
||||
[
|
||||
query.Prefix(f"{param}", "foo"),
|
||||
self.has_no_owner,
|
||||
],
|
||||
),
|
||||
),
|
||||
)
|
||||
|
||||
query_params = ["checksum", "original_filename"]
|
||||
for param in query_params:
|
||||
for params, expected in _get_testset(param):
|
||||
dq = DelayedQuery(None, params, None, None)
|
||||
got = dq._get_query_filter()
|
||||
self.assertCountEqual(got, expected)
|
||||
+24
-24
@@ -678,11 +678,9 @@ class DocumentViewSet(
|
||||
if settings.AUDIT_LOG_ENABLED:
|
||||
LogEntry.objects.log_create(
|
||||
instance=doc,
|
||||
changes=json.dumps(
|
||||
{
|
||||
"Note Added": ["None", c.id],
|
||||
},
|
||||
),
|
||||
changes={
|
||||
"Note Added": ["None", c.id],
|
||||
},
|
||||
action=LogEntry.Action.UPDATE,
|
||||
)
|
||||
|
||||
@@ -715,11 +713,9 @@ class DocumentViewSet(
|
||||
if settings.AUDIT_LOG_ENABLED:
|
||||
LogEntry.objects.log_create(
|
||||
instance=doc,
|
||||
changes=json.dumps(
|
||||
{
|
||||
"Note Deleted": [note.id, "None"],
|
||||
},
|
||||
),
|
||||
changes={
|
||||
"Note Deleted": [note.id, "None"],
|
||||
},
|
||||
action=LogEntry.Action.UPDATE,
|
||||
)
|
||||
|
||||
@@ -852,6 +848,8 @@ class UnifiedSearchViewSet(DocumentViewSet):
|
||||
)
|
||||
|
||||
def filter_queryset(self, queryset):
|
||||
filtered_queryset = super().filter_queryset(queryset)
|
||||
|
||||
if self._is_search_request():
|
||||
from documents import index
|
||||
|
||||
@@ -866,10 +864,10 @@ class UnifiedSearchViewSet(DocumentViewSet):
|
||||
self.searcher,
|
||||
self.request.query_params,
|
||||
self.paginator.get_page_size(self.request),
|
||||
self.request.user,
|
||||
filter_queryset=filtered_queryset,
|
||||
)
|
||||
else:
|
||||
return super().filter_queryset(queryset)
|
||||
return filtered_queryset
|
||||
|
||||
def list(self, request, *args, **kwargs):
|
||||
if self._is_search_request():
|
||||
@@ -1199,14 +1197,16 @@ class GlobalSearchView(PassUserMixin):
|
||||
from documents import index
|
||||
|
||||
with index.open_index_searcher() as s:
|
||||
q, _ = index.DelayedFullTextQuery(
|
||||
fts_query = index.DelayedFullTextQuery(
|
||||
s,
|
||||
request.query_params,
|
||||
10,
|
||||
request.user,
|
||||
)._get_query()
|
||||
results = s.search(q, limit=OBJECT_LIMIT)
|
||||
docs = docs | all_docs.filter(id__in=[r["id"] for r in results])
|
||||
OBJECT_LIMIT,
|
||||
filter_queryset=all_docs,
|
||||
)
|
||||
results = fts_query[0:1]
|
||||
docs = docs | Document.objects.filter(
|
||||
id__in=[r["id"] for r in results],
|
||||
)
|
||||
docs = docs[:OBJECT_LIMIT]
|
||||
saved_views = (
|
||||
SavedView.objects.filter(owner=request.user, name__icontains=query)
|
||||
@@ -1452,12 +1452,12 @@ class StatisticsView(APIView):
|
||||
{
|
||||
"documents_total": documents_total,
|
||||
"documents_inbox": documents_inbox,
|
||||
"inbox_tag": inbox_tags.first().pk
|
||||
if inbox_tags.exists()
|
||||
else None, # backwards compatibility
|
||||
"inbox_tags": [tag.pk for tag in inbox_tags]
|
||||
if inbox_tags.exists()
|
||||
else None,
|
||||
"inbox_tag": (
|
||||
inbox_tags.first().pk if inbox_tags.exists() else None
|
||||
), # backwards compatibility
|
||||
"inbox_tags": (
|
||||
[tag.pk for tag in inbox_tags] if inbox_tags.exists() else None
|
||||
),
|
||||
"document_file_type_counts": document_file_type_counts,
|
||||
"character_count": character_count,
|
||||
"tag_count": len(tags),
|
||||
|
||||
@@ -2,8 +2,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: paperless-ngx\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2024-07-09 11:27-0700\n"
|
||||
"PO-Revision-Date: 2024-07-09 18:28\n"
|
||||
"POT-Creation-Date: 2024-08-28 17:12-0700\n"
|
||||
"PO-Revision-Date: 2024-08-29 03:10\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Afrikaans\n"
|
||||
"Language: af_ZA\n"
|
||||
@@ -927,21 +927,21 @@ msgstr ""
|
||||
msgid "enabled"
|
||||
msgstr ""
|
||||
|
||||
#: documents/serialisers.py:119
|
||||
#: documents/serialisers.py:120
|
||||
#, python-format
|
||||
msgid "Invalid regular expression: %(error)s"
|
||||
msgstr "Ongeldige reguliere uitdrukking: %(error)s"
|
||||
|
||||
#: documents/serialisers.py:435
|
||||
#: documents/serialisers.py:467
|
||||
msgid "Invalid color."
|
||||
msgstr "Ongeldige kleur."
|
||||
|
||||
#: documents/serialisers.py:1314
|
||||
#: documents/serialisers.py:1397
|
||||
#, python-format
|
||||
msgid "File type %(type)s not supported"
|
||||
msgstr "Lêertipe %(type)s word nie ondersteun nie"
|
||||
|
||||
#: documents/serialisers.py:1423
|
||||
#: documents/serialisers.py:1506
|
||||
msgid "Invalid variable detected."
|
||||
msgstr "Ongeldige veranderlike bespeur."
|
||||
|
||||
@@ -1369,62 +1369,66 @@ msgid "Japanese"
|
||||
msgstr ""
|
||||
|
||||
#: paperless/settings.py:699
|
||||
msgid "Korean"
|
||||
msgstr ""
|
||||
|
||||
#: paperless/settings.py:700
|
||||
msgid "Luxembourgish"
|
||||
msgstr "Luxemburgs"
|
||||
|
||||
#: paperless/settings.py:700
|
||||
#: paperless/settings.py:701
|
||||
msgid "Norwegian"
|
||||
msgstr ""
|
||||
|
||||
#: paperless/settings.py:701
|
||||
#: paperless/settings.py:702
|
||||
msgid "Dutch"
|
||||
msgstr "Nederlands"
|
||||
|
||||
#: paperless/settings.py:702
|
||||
#: paperless/settings.py:703
|
||||
msgid "Polish"
|
||||
msgstr "Pools"
|
||||
|
||||
#: paperless/settings.py:703
|
||||
#: paperless/settings.py:704
|
||||
msgid "Portuguese (Brazil)"
|
||||
msgstr "Portugees (Brasilië)"
|
||||
|
||||
#: paperless/settings.py:704
|
||||
#: paperless/settings.py:705
|
||||
msgid "Portuguese"
|
||||
msgstr "Portugees"
|
||||
|
||||
#: paperless/settings.py:705
|
||||
#: paperless/settings.py:706
|
||||
msgid "Romanian"
|
||||
msgstr "Roemeens"
|
||||
|
||||
#: paperless/settings.py:706
|
||||
#: paperless/settings.py:707
|
||||
msgid "Russian"
|
||||
msgstr "Russies"
|
||||
|
||||
#: paperless/settings.py:707
|
||||
#: paperless/settings.py:708
|
||||
msgid "Slovak"
|
||||
msgstr ""
|
||||
|
||||
#: paperless/settings.py:708
|
||||
#: paperless/settings.py:709
|
||||
msgid "Slovenian"
|
||||
msgstr "Sloweens"
|
||||
|
||||
#: paperless/settings.py:709
|
||||
#: paperless/settings.py:710
|
||||
msgid "Serbian"
|
||||
msgstr "Serwies"
|
||||
|
||||
#: paperless/settings.py:710
|
||||
#: paperless/settings.py:711
|
||||
msgid "Swedish"
|
||||
msgstr "Sweeds"
|
||||
|
||||
#: paperless/settings.py:711
|
||||
#: paperless/settings.py:712
|
||||
msgid "Turkish"
|
||||
msgstr "Turks"
|
||||
|
||||
#: paperless/settings.py:712
|
||||
#: paperless/settings.py:713
|
||||
msgid "Ukrainian"
|
||||
msgstr ""
|
||||
|
||||
#: paperless/settings.py:713
|
||||
#: paperless/settings.py:714
|
||||
msgid "Chinese Simplified"
|
||||
msgstr "Vereenvoudigde Sjinees"
|
||||
|
||||
|
||||
@@ -2,8 +2,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: paperless-ngx\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2024-07-09 11:27-0700\n"
|
||||
"PO-Revision-Date: 2024-07-09 18:28\n"
|
||||
"POT-Creation-Date: 2024-08-28 17:12-0700\n"
|
||||
"PO-Revision-Date: 2024-08-29 03:10\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Arabic\n"
|
||||
"Language: ar_SA\n"
|
||||
@@ -677,7 +677,7 @@ msgstr "رابط المستند"
|
||||
|
||||
#: documents/models.py:812
|
||||
msgid "Select"
|
||||
msgstr ""
|
||||
msgstr "تحديد"
|
||||
|
||||
#: documents/models.py:824
|
||||
msgid "data type"
|
||||
@@ -685,11 +685,11 @@ msgstr "نوع البيانات"
|
||||
|
||||
#: documents/models.py:831
|
||||
msgid "extra data"
|
||||
msgstr ""
|
||||
msgstr "بيانات إضافية"
|
||||
|
||||
#: documents/models.py:835
|
||||
msgid "Extra data for the custom field, such as select options"
|
||||
msgstr ""
|
||||
msgstr "بيانات إضافية للحقل المخصص، مثل تحديد خيارات"
|
||||
|
||||
#: documents/models.py:841
|
||||
msgid "custom field"
|
||||
@@ -927,21 +927,21 @@ msgstr "إجراءات"
|
||||
msgid "enabled"
|
||||
msgstr "مفعل"
|
||||
|
||||
#: documents/serialisers.py:119
|
||||
#: documents/serialisers.py:120
|
||||
#, python-format
|
||||
msgid "Invalid regular expression: %(error)s"
|
||||
msgstr "التعبير النظامي خاطىء: %(error)s"
|
||||
|
||||
#: documents/serialisers.py:435
|
||||
#: documents/serialisers.py:467
|
||||
msgid "Invalid color."
|
||||
msgstr "لون خاطئ."
|
||||
|
||||
#: documents/serialisers.py:1314
|
||||
#: documents/serialisers.py:1397
|
||||
#, python-format
|
||||
msgid "File type %(type)s not supported"
|
||||
msgstr "نوع الملف %(type)s غير مدعوم"
|
||||
|
||||
#: documents/serialisers.py:1423
|
||||
#: documents/serialisers.py:1506
|
||||
msgid "Invalid variable detected."
|
||||
msgstr "اكتشاف متغير خاطئ."
|
||||
|
||||
@@ -1370,62 +1370,66 @@ msgid "Japanese"
|
||||
msgstr "اليابانية"
|
||||
|
||||
#: paperless/settings.py:699
|
||||
msgid "Korean"
|
||||
msgstr ""
|
||||
|
||||
#: paperless/settings.py:700
|
||||
msgid "Luxembourgish"
|
||||
msgstr "اللوكسمبرجية"
|
||||
|
||||
#: paperless/settings.py:700
|
||||
#: paperless/settings.py:701
|
||||
msgid "Norwegian"
|
||||
msgstr "النرويجية"
|
||||
|
||||
#: paperless/settings.py:701
|
||||
#: paperless/settings.py:702
|
||||
msgid "Dutch"
|
||||
msgstr "الهولندية"
|
||||
|
||||
#: paperless/settings.py:702
|
||||
#: paperless/settings.py:703
|
||||
msgid "Polish"
|
||||
msgstr "البولندية"
|
||||
|
||||
#: paperless/settings.py:703
|
||||
#: paperless/settings.py:704
|
||||
msgid "Portuguese (Brazil)"
|
||||
msgstr "البرتغالية (البرازيل)"
|
||||
|
||||
#: paperless/settings.py:704
|
||||
#: paperless/settings.py:705
|
||||
msgid "Portuguese"
|
||||
msgstr "البرتغالية"
|
||||
|
||||
#: paperless/settings.py:705
|
||||
#: paperless/settings.py:706
|
||||
msgid "Romanian"
|
||||
msgstr "الرومانية"
|
||||
|
||||
#: paperless/settings.py:706
|
||||
#: paperless/settings.py:707
|
||||
msgid "Russian"
|
||||
msgstr "الروسية"
|
||||
|
||||
#: paperless/settings.py:707
|
||||
#: paperless/settings.py:708
|
||||
msgid "Slovak"
|
||||
msgstr "السلوفاكية"
|
||||
|
||||
#: paperless/settings.py:708
|
||||
#: paperless/settings.py:709
|
||||
msgid "Slovenian"
|
||||
msgstr "السلوفانية"
|
||||
|
||||
#: paperless/settings.py:709
|
||||
#: paperless/settings.py:710
|
||||
msgid "Serbian"
|
||||
msgstr "الصربية"
|
||||
|
||||
#: paperless/settings.py:710
|
||||
#: paperless/settings.py:711
|
||||
msgid "Swedish"
|
||||
msgstr "السويدية"
|
||||
|
||||
#: paperless/settings.py:711
|
||||
#: paperless/settings.py:712
|
||||
msgid "Turkish"
|
||||
msgstr "التركية"
|
||||
|
||||
#: paperless/settings.py:712
|
||||
#: paperless/settings.py:713
|
||||
msgid "Ukrainian"
|
||||
msgstr "الأوكرانية"
|
||||
|
||||
#: paperless/settings.py:713
|
||||
#: paperless/settings.py:714
|
||||
msgid "Chinese Simplified"
|
||||
msgstr "الصينية المبسطة"
|
||||
|
||||
|
||||
@@ -2,8 +2,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: paperless-ngx\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2024-07-09 11:27-0700\n"
|
||||
"PO-Revision-Date: 2024-07-09 18:28\n"
|
||||
"POT-Creation-Date: 2024-08-28 17:12-0700\n"
|
||||
"PO-Revision-Date: 2024-08-29 03:10\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Belarusian\n"
|
||||
"Language: be_BY\n"
|
||||
@@ -927,21 +927,21 @@ msgstr ""
|
||||
msgid "enabled"
|
||||
msgstr ""
|
||||
|
||||
#: documents/serialisers.py:119
|
||||
#: documents/serialisers.py:120
|
||||
#, python-format
|
||||
msgid "Invalid regular expression: %(error)s"
|
||||
msgstr "Няправільны рэгулярны выраз: %(error)s"
|
||||
|
||||
#: documents/serialisers.py:435
|
||||
#: documents/serialisers.py:467
|
||||
msgid "Invalid color."
|
||||
msgstr "Няправільны колер."
|
||||
|
||||
#: documents/serialisers.py:1314
|
||||
#: documents/serialisers.py:1397
|
||||
#, python-format
|
||||
msgid "File type %(type)s not supported"
|
||||
msgstr "Тып файла %(type)s не падтрымліваецца"
|
||||
|
||||
#: documents/serialisers.py:1423
|
||||
#: documents/serialisers.py:1506
|
||||
msgid "Invalid variable detected."
|
||||
msgstr "Выяўлена няправільная зменная."
|
||||
|
||||
@@ -1369,62 +1369,66 @@ msgid "Japanese"
|
||||
msgstr ""
|
||||
|
||||
#: paperless/settings.py:699
|
||||
msgid "Korean"
|
||||
msgstr ""
|
||||
|
||||
#: paperless/settings.py:700
|
||||
msgid "Luxembourgish"
|
||||
msgstr "Люксембургская"
|
||||
|
||||
#: paperless/settings.py:700
|
||||
#: paperless/settings.py:701
|
||||
msgid "Norwegian"
|
||||
msgstr ""
|
||||
|
||||
#: paperless/settings.py:701
|
||||
#: paperless/settings.py:702
|
||||
msgid "Dutch"
|
||||
msgstr "Нідэрландская"
|
||||
|
||||
#: paperless/settings.py:702
|
||||
#: paperless/settings.py:703
|
||||
msgid "Polish"
|
||||
msgstr "Польская"
|
||||
|
||||
#: paperless/settings.py:703
|
||||
#: paperless/settings.py:704
|
||||
msgid "Portuguese (Brazil)"
|
||||
msgstr "Партугальская (Бразілія)"
|
||||
|
||||
#: paperless/settings.py:704
|
||||
#: paperless/settings.py:705
|
||||
msgid "Portuguese"
|
||||
msgstr "Партугальская"
|
||||
|
||||
#: paperless/settings.py:705
|
||||
#: paperless/settings.py:706
|
||||
msgid "Romanian"
|
||||
msgstr "Румынская"
|
||||
|
||||
#: paperless/settings.py:706
|
||||
#: paperless/settings.py:707
|
||||
msgid "Russian"
|
||||
msgstr "Руская"
|
||||
|
||||
#: paperless/settings.py:707
|
||||
#: paperless/settings.py:708
|
||||
msgid "Slovak"
|
||||
msgstr ""
|
||||
|
||||
#: paperless/settings.py:708
|
||||
#: paperless/settings.py:709
|
||||
msgid "Slovenian"
|
||||
msgstr "Славенская"
|
||||
|
||||
#: paperless/settings.py:709
|
||||
#: paperless/settings.py:710
|
||||
msgid "Serbian"
|
||||
msgstr "Сербская"
|
||||
|
||||
#: paperless/settings.py:710
|
||||
#: paperless/settings.py:711
|
||||
msgid "Swedish"
|
||||
msgstr "Шведская"
|
||||
|
||||
#: paperless/settings.py:711
|
||||
#: paperless/settings.py:712
|
||||
msgid "Turkish"
|
||||
msgstr "Турэцкая"
|
||||
|
||||
#: paperless/settings.py:712
|
||||
#: paperless/settings.py:713
|
||||
msgid "Ukrainian"
|
||||
msgstr ""
|
||||
|
||||
#: paperless/settings.py:713
|
||||
#: paperless/settings.py:714
|
||||
msgid "Chinese Simplified"
|
||||
msgstr "Кітайская спрошчаная"
|
||||
|
||||
|
||||
@@ -2,8 +2,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: paperless-ngx\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2024-07-09 11:27-0700\n"
|
||||
"PO-Revision-Date: 2024-07-09 18:28\n"
|
||||
"POT-Creation-Date: 2024-08-28 17:12-0700\n"
|
||||
"PO-Revision-Date: 2024-08-29 03:10\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Bulgarian\n"
|
||||
"Language: bg_BG\n"
|
||||
@@ -927,21 +927,21 @@ msgstr "действия"
|
||||
msgid "enabled"
|
||||
msgstr "активирано"
|
||||
|
||||
#: documents/serialisers.py:119
|
||||
#: documents/serialisers.py:120
|
||||
#, python-format
|
||||
msgid "Invalid regular expression: %(error)s"
|
||||
msgstr "Невалиден регулярен израз: %(error)s"
|
||||
|
||||
#: documents/serialisers.py:435
|
||||
#: documents/serialisers.py:467
|
||||
msgid "Invalid color."
|
||||
msgstr "Невалиден цвят."
|
||||
|
||||
#: documents/serialisers.py:1314
|
||||
#: documents/serialisers.py:1397
|
||||
#, python-format
|
||||
msgid "File type %(type)s not supported"
|
||||
msgstr "Файловия тип %(type)s не се поддържа"
|
||||
|
||||
#: documents/serialisers.py:1423
|
||||
#: documents/serialisers.py:1506
|
||||
msgid "Invalid variable detected."
|
||||
msgstr "Засечена е невалидна променлива."
|
||||
|
||||
@@ -1370,62 +1370,66 @@ msgid "Japanese"
|
||||
msgstr "Японски"
|
||||
|
||||
#: paperless/settings.py:699
|
||||
msgid "Korean"
|
||||
msgstr ""
|
||||
|
||||
#: paperless/settings.py:700
|
||||
msgid "Luxembourgish"
|
||||
msgstr "Люксембургски"
|
||||
|
||||
#: paperless/settings.py:700
|
||||
#: paperless/settings.py:701
|
||||
msgid "Norwegian"
|
||||
msgstr "Норвежки"
|
||||
|
||||
#: paperless/settings.py:701
|
||||
#: paperless/settings.py:702
|
||||
msgid "Dutch"
|
||||
msgstr "Холандски"
|
||||
|
||||
#: paperless/settings.py:702
|
||||
#: paperless/settings.py:703
|
||||
msgid "Polish"
|
||||
msgstr "Полски"
|
||||
|
||||
#: paperless/settings.py:703
|
||||
#: paperless/settings.py:704
|
||||
msgid "Portuguese (Brazil)"
|
||||
msgstr "Португалски (Бразилия)"
|
||||
|
||||
#: paperless/settings.py:704
|
||||
#: paperless/settings.py:705
|
||||
msgid "Portuguese"
|
||||
msgstr "Португалски"
|
||||
|
||||
#: paperless/settings.py:705
|
||||
#: paperless/settings.py:706
|
||||
msgid "Romanian"
|
||||
msgstr "Румънски"
|
||||
|
||||
#: paperless/settings.py:706
|
||||
#: paperless/settings.py:707
|
||||
msgid "Russian"
|
||||
msgstr "Руски"
|
||||
|
||||
#: paperless/settings.py:707
|
||||
#: paperless/settings.py:708
|
||||
msgid "Slovak"
|
||||
msgstr "Словашки"
|
||||
|
||||
#: paperless/settings.py:708
|
||||
#: paperless/settings.py:709
|
||||
msgid "Slovenian"
|
||||
msgstr "Словенски"
|
||||
|
||||
#: paperless/settings.py:709
|
||||
#: paperless/settings.py:710
|
||||
msgid "Serbian"
|
||||
msgstr "Сръбски"
|
||||
|
||||
#: paperless/settings.py:710
|
||||
#: paperless/settings.py:711
|
||||
msgid "Swedish"
|
||||
msgstr "Шведски"
|
||||
|
||||
#: paperless/settings.py:711
|
||||
#: paperless/settings.py:712
|
||||
msgid "Turkish"
|
||||
msgstr "Турски"
|
||||
|
||||
#: paperless/settings.py:712
|
||||
#: paperless/settings.py:713
|
||||
msgid "Ukrainian"
|
||||
msgstr "Украински"
|
||||
|
||||
#: paperless/settings.py:713
|
||||
#: paperless/settings.py:714
|
||||
msgid "Chinese Simplified"
|
||||
msgstr "Китайски опростен"
|
||||
|
||||
|
||||
@@ -2,8 +2,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: paperless-ngx\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2024-07-09 11:27-0700\n"
|
||||
"PO-Revision-Date: 2024-07-27 12:11\n"
|
||||
"POT-Creation-Date: 2024-08-28 17:12-0700\n"
|
||||
"PO-Revision-Date: 2024-09-06 12:10\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Catalan\n"
|
||||
"Language: ca_ES\n"
|
||||
@@ -927,21 +927,21 @@ msgstr "accions"
|
||||
msgid "enabled"
|
||||
msgstr "habilitat"
|
||||
|
||||
#: documents/serialisers.py:119
|
||||
#: documents/serialisers.py:120
|
||||
#, python-format
|
||||
msgid "Invalid regular expression: %(error)s"
|
||||
msgstr "Expressió regular invàlida: %(error)s"
|
||||
|
||||
#: documents/serialisers.py:435
|
||||
#: documents/serialisers.py:467
|
||||
msgid "Invalid color."
|
||||
msgstr "Color Invàlid."
|
||||
|
||||
#: documents/serialisers.py:1314
|
||||
#: documents/serialisers.py:1397
|
||||
#, python-format
|
||||
msgid "File type %(type)s not supported"
|
||||
msgstr "Tipus arxiu %(type)s no suportat"
|
||||
|
||||
#: documents/serialisers.py:1423
|
||||
#: documents/serialisers.py:1506
|
||||
msgid "Invalid variable detected."
|
||||
msgstr "Variable detectada invàlida."
|
||||
|
||||
@@ -1370,62 +1370,66 @@ msgid "Japanese"
|
||||
msgstr "Japonès"
|
||||
|
||||
#: paperless/settings.py:699
|
||||
msgid "Korean"
|
||||
msgstr "Coreà"
|
||||
|
||||
#: paperless/settings.py:700
|
||||
msgid "Luxembourgish"
|
||||
msgstr "Luxemburguès"
|
||||
|
||||
#: paperless/settings.py:700
|
||||
#: paperless/settings.py:701
|
||||
msgid "Norwegian"
|
||||
msgstr "Noruec"
|
||||
|
||||
#: paperless/settings.py:701
|
||||
#: paperless/settings.py:702
|
||||
msgid "Dutch"
|
||||
msgstr "Holandès"
|
||||
|
||||
#: paperless/settings.py:702
|
||||
#: paperless/settings.py:703
|
||||
msgid "Polish"
|
||||
msgstr "Polac"
|
||||
|
||||
#: paperless/settings.py:703
|
||||
#: paperless/settings.py:704
|
||||
msgid "Portuguese (Brazil)"
|
||||
msgstr "Portuguès (BZ)"
|
||||
|
||||
#: paperless/settings.py:704
|
||||
#: paperless/settings.py:705
|
||||
msgid "Portuguese"
|
||||
msgstr "Portuguès"
|
||||
|
||||
#: paperless/settings.py:705
|
||||
#: paperless/settings.py:706
|
||||
msgid "Romanian"
|
||||
msgstr "Romanès"
|
||||
|
||||
#: paperless/settings.py:706
|
||||
#: paperless/settings.py:707
|
||||
msgid "Russian"
|
||||
msgstr "Rus"
|
||||
|
||||
#: paperless/settings.py:707
|
||||
#: paperless/settings.py:708
|
||||
msgid "Slovak"
|
||||
msgstr "Eslovac"
|
||||
|
||||
#: paperless/settings.py:708
|
||||
#: paperless/settings.py:709
|
||||
msgid "Slovenian"
|
||||
msgstr "Eslovè"
|
||||
|
||||
#: paperless/settings.py:709
|
||||
#: paperless/settings.py:710
|
||||
msgid "Serbian"
|
||||
msgstr "Serbi"
|
||||
|
||||
#: paperless/settings.py:710
|
||||
#: paperless/settings.py:711
|
||||
msgid "Swedish"
|
||||
msgstr "Suec"
|
||||
|
||||
#: paperless/settings.py:711
|
||||
#: paperless/settings.py:712
|
||||
msgid "Turkish"
|
||||
msgstr "Turc"
|
||||
|
||||
#: paperless/settings.py:712
|
||||
#: paperless/settings.py:713
|
||||
msgid "Ukrainian"
|
||||
msgstr "Ucranià"
|
||||
|
||||
#: paperless/settings.py:713
|
||||
#: paperless/settings.py:714
|
||||
msgid "Chinese Simplified"
|
||||
msgstr "Xinès Simplificat"
|
||||
|
||||
|
||||
@@ -2,8 +2,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: paperless-ngx\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2024-07-09 11:27-0700\n"
|
||||
"PO-Revision-Date: 2024-07-09 18:28\n"
|
||||
"POT-Creation-Date: 2024-08-28 17:12-0700\n"
|
||||
"PO-Revision-Date: 2024-08-29 03:10\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Czech\n"
|
||||
"Language: cs_CZ\n"
|
||||
@@ -927,21 +927,21 @@ msgstr "akce"
|
||||
msgid "enabled"
|
||||
msgstr "povoleno"
|
||||
|
||||
#: documents/serialisers.py:119
|
||||
#: documents/serialisers.py:120
|
||||
#, python-format
|
||||
msgid "Invalid regular expression: %(error)s"
|
||||
msgstr "Neplatný regulární výraz: %(error)s"
|
||||
|
||||
#: documents/serialisers.py:435
|
||||
#: documents/serialisers.py:467
|
||||
msgid "Invalid color."
|
||||
msgstr "Neplatná barva."
|
||||
|
||||
#: documents/serialisers.py:1314
|
||||
#: documents/serialisers.py:1397
|
||||
#, python-format
|
||||
msgid "File type %(type)s not supported"
|
||||
msgstr "Typ souboru %(type)s není podporován"
|
||||
|
||||
#: documents/serialisers.py:1423
|
||||
#: documents/serialisers.py:1506
|
||||
msgid "Invalid variable detected."
|
||||
msgstr "Zjištěna neplatná proměnná."
|
||||
|
||||
@@ -1369,62 +1369,66 @@ msgid "Japanese"
|
||||
msgstr ""
|
||||
|
||||
#: paperless/settings.py:699
|
||||
msgid "Korean"
|
||||
msgstr ""
|
||||
|
||||
#: paperless/settings.py:700
|
||||
msgid "Luxembourgish"
|
||||
msgstr "Lucemburština"
|
||||
|
||||
#: paperless/settings.py:700
|
||||
#: paperless/settings.py:701
|
||||
msgid "Norwegian"
|
||||
msgstr ""
|
||||
|
||||
#: paperless/settings.py:701
|
||||
#: paperless/settings.py:702
|
||||
msgid "Dutch"
|
||||
msgstr "Holandština"
|
||||
|
||||
#: paperless/settings.py:702
|
||||
#: paperless/settings.py:703
|
||||
msgid "Polish"
|
||||
msgstr "Polština"
|
||||
|
||||
#: paperless/settings.py:703
|
||||
#: paperless/settings.py:704
|
||||
msgid "Portuguese (Brazil)"
|
||||
msgstr "Portugalština (Brazílie)"
|
||||
|
||||
#: paperless/settings.py:704
|
||||
#: paperless/settings.py:705
|
||||
msgid "Portuguese"
|
||||
msgstr "Portugalština"
|
||||
|
||||
#: paperless/settings.py:705
|
||||
#: paperless/settings.py:706
|
||||
msgid "Romanian"
|
||||
msgstr "Rumunština"
|
||||
|
||||
#: paperless/settings.py:706
|
||||
#: paperless/settings.py:707
|
||||
msgid "Russian"
|
||||
msgstr "Ruština"
|
||||
|
||||
#: paperless/settings.py:707
|
||||
#: paperless/settings.py:708
|
||||
msgid "Slovak"
|
||||
msgstr ""
|
||||
|
||||
#: paperless/settings.py:708
|
||||
#: paperless/settings.py:709
|
||||
msgid "Slovenian"
|
||||
msgstr "Slovinština"
|
||||
|
||||
#: paperless/settings.py:709
|
||||
#: paperless/settings.py:710
|
||||
msgid "Serbian"
|
||||
msgstr "Srbština"
|
||||
|
||||
#: paperless/settings.py:710
|
||||
#: paperless/settings.py:711
|
||||
msgid "Swedish"
|
||||
msgstr "Švédština"
|
||||
|
||||
#: paperless/settings.py:711
|
||||
#: paperless/settings.py:712
|
||||
msgid "Turkish"
|
||||
msgstr "Turečtina"
|
||||
|
||||
#: paperless/settings.py:712
|
||||
#: paperless/settings.py:713
|
||||
msgid "Ukrainian"
|
||||
msgstr ""
|
||||
|
||||
#: paperless/settings.py:713
|
||||
#: paperless/settings.py:714
|
||||
msgid "Chinese Simplified"
|
||||
msgstr "Čínština (zjednodušená)"
|
||||
|
||||
|
||||
@@ -2,8 +2,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: paperless-ngx\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2024-07-09 11:27-0700\n"
|
||||
"PO-Revision-Date: 2024-07-09 18:28\n"
|
||||
"POT-Creation-Date: 2024-08-28 17:12-0700\n"
|
||||
"PO-Revision-Date: 2024-08-29 03:10\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Danish\n"
|
||||
"Language: da_DK\n"
|
||||
@@ -927,21 +927,21 @@ msgstr "handlinger"
|
||||
msgid "enabled"
|
||||
msgstr "aktiveret"
|
||||
|
||||
#: documents/serialisers.py:119
|
||||
#: documents/serialisers.py:120
|
||||
#, python-format
|
||||
msgid "Invalid regular expression: %(error)s"
|
||||
msgstr "Ugyldigt regulært udtryk: %(error)s"
|
||||
|
||||
#: documents/serialisers.py:435
|
||||
#: documents/serialisers.py:467
|
||||
msgid "Invalid color."
|
||||
msgstr "Ugyldig farve."
|
||||
|
||||
#: documents/serialisers.py:1314
|
||||
#: documents/serialisers.py:1397
|
||||
#, python-format
|
||||
msgid "File type %(type)s not supported"
|
||||
msgstr "Filtype %(type)s understøttes ikke"
|
||||
|
||||
#: documents/serialisers.py:1423
|
||||
#: documents/serialisers.py:1506
|
||||
msgid "Invalid variable detected."
|
||||
msgstr "Ugyldig variabel fundet."
|
||||
|
||||
@@ -1370,62 +1370,66 @@ msgid "Japanese"
|
||||
msgstr ""
|
||||
|
||||
#: paperless/settings.py:699
|
||||
msgid "Korean"
|
||||
msgstr ""
|
||||
|
||||
#: paperless/settings.py:700
|
||||
msgid "Luxembourgish"
|
||||
msgstr "Luxemburgsk"
|
||||
|
||||
#: paperless/settings.py:700
|
||||
#: paperless/settings.py:701
|
||||
msgid "Norwegian"
|
||||
msgstr ""
|
||||
|
||||
#: paperless/settings.py:701
|
||||
#: paperless/settings.py:702
|
||||
msgid "Dutch"
|
||||
msgstr "Hollandsk"
|
||||
|
||||
#: paperless/settings.py:702
|
||||
#: paperless/settings.py:703
|
||||
msgid "Polish"
|
||||
msgstr "Polsk"
|
||||
|
||||
#: paperless/settings.py:703
|
||||
#: paperless/settings.py:704
|
||||
msgid "Portuguese (Brazil)"
|
||||
msgstr "Portugisisk (Brasilien)"
|
||||
|
||||
#: paperless/settings.py:704
|
||||
#: paperless/settings.py:705
|
||||
msgid "Portuguese"
|
||||
msgstr "Portugisisk"
|
||||
|
||||
#: paperless/settings.py:705
|
||||
#: paperless/settings.py:706
|
||||
msgid "Romanian"
|
||||
msgstr "Romansk"
|
||||
|
||||
#: paperless/settings.py:706
|
||||
#: paperless/settings.py:707
|
||||
msgid "Russian"
|
||||
msgstr "Russisk"
|
||||
|
||||
#: paperless/settings.py:707
|
||||
#: paperless/settings.py:708
|
||||
msgid "Slovak"
|
||||
msgstr ""
|
||||
|
||||
#: paperless/settings.py:708
|
||||
#: paperless/settings.py:709
|
||||
msgid "Slovenian"
|
||||
msgstr ""
|
||||
|
||||
#: paperless/settings.py:709
|
||||
#: paperless/settings.py:710
|
||||
msgid "Serbian"
|
||||
msgstr ""
|
||||
|
||||
#: paperless/settings.py:710
|
||||
#: paperless/settings.py:711
|
||||
msgid "Swedish"
|
||||
msgstr "Svensk"
|
||||
|
||||
#: paperless/settings.py:711
|
||||
#: paperless/settings.py:712
|
||||
msgid "Turkish"
|
||||
msgstr ""
|
||||
|
||||
#: paperless/settings.py:712
|
||||
#: paperless/settings.py:713
|
||||
msgid "Ukrainian"
|
||||
msgstr ""
|
||||
|
||||
#: paperless/settings.py:713
|
||||
#: paperless/settings.py:714
|
||||
msgid "Chinese Simplified"
|
||||
msgstr ""
|
||||
|
||||
|
||||
@@ -2,8 +2,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: paperless-ngx\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2024-07-09 11:27-0700\n"
|
||||
"PO-Revision-Date: 2024-07-25 12:10\n"
|
||||
"POT-Creation-Date: 2024-08-28 17:12-0700\n"
|
||||
"PO-Revision-Date: 2024-09-06 12:10\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: German\n"
|
||||
"Language: de_DE\n"
|
||||
@@ -927,21 +927,21 @@ msgstr "Aktionen"
|
||||
msgid "enabled"
|
||||
msgstr "aktiviert"
|
||||
|
||||
#: documents/serialisers.py:119
|
||||
#: documents/serialisers.py:120
|
||||
#, python-format
|
||||
msgid "Invalid regular expression: %(error)s"
|
||||
msgstr "Ungültiger regulärer Ausdruck: %(error)s"
|
||||
|
||||
#: documents/serialisers.py:435
|
||||
#: documents/serialisers.py:467
|
||||
msgid "Invalid color."
|
||||
msgstr "Ungültige Farbe."
|
||||
|
||||
#: documents/serialisers.py:1314
|
||||
#: documents/serialisers.py:1397
|
||||
#, python-format
|
||||
msgid "File type %(type)s not supported"
|
||||
msgstr "Dateityp %(type)s nicht unterstützt"
|
||||
|
||||
#: documents/serialisers.py:1423
|
||||
#: documents/serialisers.py:1506
|
||||
msgid "Invalid variable detected."
|
||||
msgstr "Ungültige Variable erkannt."
|
||||
|
||||
@@ -1370,62 +1370,66 @@ msgid "Japanese"
|
||||
msgstr "Japanisch"
|
||||
|
||||
#: paperless/settings.py:699
|
||||
msgid "Korean"
|
||||
msgstr "Koreanisch"
|
||||
|
||||
#: paperless/settings.py:700
|
||||
msgid "Luxembourgish"
|
||||
msgstr "Luxemburgisch"
|
||||
|
||||
#: paperless/settings.py:700
|
||||
#: paperless/settings.py:701
|
||||
msgid "Norwegian"
|
||||
msgstr "Norwegisch"
|
||||
|
||||
#: paperless/settings.py:701
|
||||
#: paperless/settings.py:702
|
||||
msgid "Dutch"
|
||||
msgstr "Niederländisch"
|
||||
|
||||
#: paperless/settings.py:702
|
||||
#: paperless/settings.py:703
|
||||
msgid "Polish"
|
||||
msgstr "Polnisch"
|
||||
|
||||
#: paperless/settings.py:703
|
||||
#: paperless/settings.py:704
|
||||
msgid "Portuguese (Brazil)"
|
||||
msgstr "Portugiesisch (Brasilien)"
|
||||
|
||||
#: paperless/settings.py:704
|
||||
#: paperless/settings.py:705
|
||||
msgid "Portuguese"
|
||||
msgstr "Portugiesisch"
|
||||
|
||||
#: paperless/settings.py:705
|
||||
#: paperless/settings.py:706
|
||||
msgid "Romanian"
|
||||
msgstr "Rumänisch"
|
||||
|
||||
#: paperless/settings.py:706
|
||||
#: paperless/settings.py:707
|
||||
msgid "Russian"
|
||||
msgstr "Russisch"
|
||||
|
||||
#: paperless/settings.py:707
|
||||
#: paperless/settings.py:708
|
||||
msgid "Slovak"
|
||||
msgstr "Slowakisch"
|
||||
|
||||
#: paperless/settings.py:708
|
||||
#: paperless/settings.py:709
|
||||
msgid "Slovenian"
|
||||
msgstr "Slowenisch"
|
||||
|
||||
#: paperless/settings.py:709
|
||||
#: paperless/settings.py:710
|
||||
msgid "Serbian"
|
||||
msgstr "Serbisch"
|
||||
|
||||
#: paperless/settings.py:710
|
||||
#: paperless/settings.py:711
|
||||
msgid "Swedish"
|
||||
msgstr "Schwedisch"
|
||||
|
||||
#: paperless/settings.py:711
|
||||
#: paperless/settings.py:712
|
||||
msgid "Turkish"
|
||||
msgstr "Türkisch"
|
||||
|
||||
#: paperless/settings.py:712
|
||||
#: paperless/settings.py:713
|
||||
msgid "Ukrainian"
|
||||
msgstr "Ukrainisch"
|
||||
|
||||
#: paperless/settings.py:713
|
||||
#: paperless/settings.py:714
|
||||
msgid "Chinese Simplified"
|
||||
msgstr "Chinesisch (vereinfacht)"
|
||||
|
||||
|
||||
@@ -2,8 +2,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: paperless-ngx\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2024-07-09 11:27-0700\n"
|
||||
"PO-Revision-Date: 2024-07-09 18:28\n"
|
||||
"POT-Creation-Date: 2024-08-28 17:12-0700\n"
|
||||
"PO-Revision-Date: 2024-08-29 03:10\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Greek\n"
|
||||
"Language: el_GR\n"
|
||||
@@ -677,7 +677,7 @@ msgstr "Σύνδεσμος Εγγράφου"
|
||||
|
||||
#: documents/models.py:812
|
||||
msgid "Select"
|
||||
msgstr ""
|
||||
msgstr "Επιλογή"
|
||||
|
||||
#: documents/models.py:824
|
||||
msgid "data type"
|
||||
@@ -685,7 +685,7 @@ msgstr "τύπος δεδομένων"
|
||||
|
||||
#: documents/models.py:831
|
||||
msgid "extra data"
|
||||
msgstr ""
|
||||
msgstr "περισσότερα δεδομένα"
|
||||
|
||||
#: documents/models.py:835
|
||||
msgid "Extra data for the custom field, such as select options"
|
||||
@@ -713,11 +713,11 @@ msgstr "Η Κατανάλωση Ξεκίνησε"
|
||||
|
||||
#: documents/models.py:979
|
||||
msgid "Document Added"
|
||||
msgstr ""
|
||||
msgstr "Το έγγραφο προστέθηκε"
|
||||
|
||||
#: documents/models.py:980
|
||||
msgid "Document Updated"
|
||||
msgstr ""
|
||||
msgstr "Το έγγραφο ενημερώθηκε"
|
||||
|
||||
#: documents/models.py:983
|
||||
msgid "Consume Folder"
|
||||
@@ -927,21 +927,21 @@ msgstr "ενέργειες"
|
||||
msgid "enabled"
|
||||
msgstr ""
|
||||
|
||||
#: documents/serialisers.py:119
|
||||
#: documents/serialisers.py:120
|
||||
#, python-format
|
||||
msgid "Invalid regular expression: %(error)s"
|
||||
msgstr "Άκυρη έκφραση: %(error)s"
|
||||
|
||||
#: documents/serialisers.py:435
|
||||
#: documents/serialisers.py:467
|
||||
msgid "Invalid color."
|
||||
msgstr "Άκυρο χρώμα."
|
||||
|
||||
#: documents/serialisers.py:1314
|
||||
#: documents/serialisers.py:1397
|
||||
#, python-format
|
||||
msgid "File type %(type)s not supported"
|
||||
msgstr "Ο τύπος αρχείου %(type)s δεν υποστηρίζεται"
|
||||
|
||||
#: documents/serialisers.py:1423
|
||||
#: documents/serialisers.py:1506
|
||||
msgid "Invalid variable detected."
|
||||
msgstr "Εντοπίστηκε μη έγκυρη μεταβλητή."
|
||||
|
||||
@@ -1369,62 +1369,66 @@ msgid "Japanese"
|
||||
msgstr ""
|
||||
|
||||
#: paperless/settings.py:699
|
||||
msgid "Korean"
|
||||
msgstr ""
|
||||
|
||||
#: paperless/settings.py:700
|
||||
msgid "Luxembourgish"
|
||||
msgstr "Λουξεμβουργικά"
|
||||
|
||||
#: paperless/settings.py:700
|
||||
#: paperless/settings.py:701
|
||||
msgid "Norwegian"
|
||||
msgstr "Νορβηγικά"
|
||||
|
||||
#: paperless/settings.py:701
|
||||
#: paperless/settings.py:702
|
||||
msgid "Dutch"
|
||||
msgstr "Ολλανδικά"
|
||||
|
||||
#: paperless/settings.py:702
|
||||
#: paperless/settings.py:703
|
||||
msgid "Polish"
|
||||
msgstr "Πολωνικά"
|
||||
|
||||
#: paperless/settings.py:703
|
||||
#: paperless/settings.py:704
|
||||
msgid "Portuguese (Brazil)"
|
||||
msgstr "Πορτογαλικά (Βραζιλίας)"
|
||||
|
||||
#: paperless/settings.py:704
|
||||
#: paperless/settings.py:705
|
||||
msgid "Portuguese"
|
||||
msgstr "Πορτογαλικά"
|
||||
|
||||
#: paperless/settings.py:705
|
||||
#: paperless/settings.py:706
|
||||
msgid "Romanian"
|
||||
msgstr "Ρουμάνικα"
|
||||
|
||||
#: paperless/settings.py:706
|
||||
#: paperless/settings.py:707
|
||||
msgid "Russian"
|
||||
msgstr "Ρωσικά"
|
||||
|
||||
#: paperless/settings.py:707
|
||||
#: paperless/settings.py:708
|
||||
msgid "Slovak"
|
||||
msgstr "Σλοβακικά"
|
||||
|
||||
#: paperless/settings.py:708
|
||||
#: paperless/settings.py:709
|
||||
msgid "Slovenian"
|
||||
msgstr "Σλοβενικά"
|
||||
|
||||
#: paperless/settings.py:709
|
||||
#: paperless/settings.py:710
|
||||
msgid "Serbian"
|
||||
msgstr "Σερβικά"
|
||||
|
||||
#: paperless/settings.py:710
|
||||
#: paperless/settings.py:711
|
||||
msgid "Swedish"
|
||||
msgstr "Σουηδικά"
|
||||
|
||||
#: paperless/settings.py:711
|
||||
#: paperless/settings.py:712
|
||||
msgid "Turkish"
|
||||
msgstr "Τούρκικα"
|
||||
|
||||
#: paperless/settings.py:712
|
||||
#: paperless/settings.py:713
|
||||
msgid "Ukrainian"
|
||||
msgstr "Ουκρανικά"
|
||||
|
||||
#: paperless/settings.py:713
|
||||
#: paperless/settings.py:714
|
||||
msgid "Chinese Simplified"
|
||||
msgstr "Κινέζικα Απλοποιημένα"
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: paperless-ngx\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2024-07-09 11:27-0700\n"
|
||||
"POT-Creation-Date: 2024-08-28 17:12-0700\n"
|
||||
"PO-Revision-Date: 2022-02-17 04:17\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: English\n"
|
||||
@@ -936,21 +936,21 @@ msgstr ""
|
||||
msgid "enabled"
|
||||
msgstr ""
|
||||
|
||||
#: documents/serialisers.py:119
|
||||
#: documents/serialisers.py:120
|
||||
#, python-format
|
||||
msgid "Invalid regular expression: %(error)s"
|
||||
msgstr ""
|
||||
|
||||
#: documents/serialisers.py:435
|
||||
#: documents/serialisers.py:467
|
||||
msgid "Invalid color."
|
||||
msgstr ""
|
||||
|
||||
#: documents/serialisers.py:1314
|
||||
#: documents/serialisers.py:1397
|
||||
#, python-format
|
||||
msgid "File type %(type)s not supported"
|
||||
msgstr ""
|
||||
|
||||
#: documents/serialisers.py:1423
|
||||
#: documents/serialisers.py:1506
|
||||
msgid "Invalid variable detected."
|
||||
msgstr ""
|
||||
|
||||
@@ -1387,62 +1387,66 @@ msgid "Japanese"
|
||||
msgstr ""
|
||||
|
||||
#: paperless/settings.py:699
|
||||
msgid "Luxembourgish"
|
||||
msgid "Korean"
|
||||
msgstr ""
|
||||
|
||||
#: paperless/settings.py:700
|
||||
msgid "Norwegian"
|
||||
msgid "Luxembourgish"
|
||||
msgstr ""
|
||||
|
||||
#: paperless/settings.py:701
|
||||
msgid "Dutch"
|
||||
msgid "Norwegian"
|
||||
msgstr ""
|
||||
|
||||
#: paperless/settings.py:702
|
||||
msgid "Polish"
|
||||
msgid "Dutch"
|
||||
msgstr ""
|
||||
|
||||
#: paperless/settings.py:703
|
||||
msgid "Portuguese (Brazil)"
|
||||
msgid "Polish"
|
||||
msgstr ""
|
||||
|
||||
#: paperless/settings.py:704
|
||||
msgid "Portuguese"
|
||||
msgid "Portuguese (Brazil)"
|
||||
msgstr ""
|
||||
|
||||
#: paperless/settings.py:705
|
||||
msgid "Romanian"
|
||||
msgid "Portuguese"
|
||||
msgstr ""
|
||||
|
||||
#: paperless/settings.py:706
|
||||
msgid "Russian"
|
||||
msgid "Romanian"
|
||||
msgstr ""
|
||||
|
||||
#: paperless/settings.py:707
|
||||
msgid "Slovak"
|
||||
msgid "Russian"
|
||||
msgstr ""
|
||||
|
||||
#: paperless/settings.py:708
|
||||
msgid "Slovenian"
|
||||
msgid "Slovak"
|
||||
msgstr ""
|
||||
|
||||
#: paperless/settings.py:709
|
||||
msgid "Serbian"
|
||||
msgid "Slovenian"
|
||||
msgstr ""
|
||||
|
||||
#: paperless/settings.py:710
|
||||
msgid "Swedish"
|
||||
msgid "Serbian"
|
||||
msgstr ""
|
||||
|
||||
#: paperless/settings.py:711
|
||||
msgid "Turkish"
|
||||
msgid "Swedish"
|
||||
msgstr ""
|
||||
|
||||
#: paperless/settings.py:712
|
||||
msgid "Ukrainian"
|
||||
msgid "Turkish"
|
||||
msgstr ""
|
||||
|
||||
#: paperless/settings.py:713
|
||||
msgid "Ukrainian"
|
||||
msgstr ""
|
||||
|
||||
#: paperless/settings.py:714
|
||||
msgid "Chinese Simplified"
|
||||
msgstr ""
|
||||
|
||||
|
||||
@@ -2,8 +2,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: paperless-ngx\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2024-07-09 11:27-0700\n"
|
||||
"PO-Revision-Date: 2024-07-09 18:28\n"
|
||||
"POT-Creation-Date: 2024-08-28 17:12-0700\n"
|
||||
"PO-Revision-Date: 2024-09-08 23:52\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Spanish\n"
|
||||
"Language: es_ES\n"
|
||||
@@ -47,11 +47,11 @@ msgstr "Expresión regular"
|
||||
|
||||
#: documents/models.py:61 documents/models.py:975
|
||||
msgid "Fuzzy word"
|
||||
msgstr ""
|
||||
msgstr "Palabra borrosa"
|
||||
|
||||
#: documents/models.py:62
|
||||
msgid "Automatic"
|
||||
msgstr ""
|
||||
msgstr "Automático"
|
||||
|
||||
#: documents/models.py:65 documents/models.py:419 documents/models.py:1291
|
||||
#: paperless_mail/models.py:18 paperless_mail/models.py:107
|
||||
@@ -257,59 +257,59 @@ msgstr "logs"
|
||||
|
||||
#: documents/models.py:401
|
||||
msgid "Table"
|
||||
msgstr ""
|
||||
msgstr "Tabla"
|
||||
|
||||
#: documents/models.py:402
|
||||
msgid "Small Cards"
|
||||
msgstr ""
|
||||
msgstr "Tarjetas Pequeñas"
|
||||
|
||||
#: documents/models.py:403
|
||||
msgid "Large Cards"
|
||||
msgstr ""
|
||||
msgstr "Tarjetas Grandes"
|
||||
|
||||
#: documents/models.py:406
|
||||
msgid "Title"
|
||||
msgstr ""
|
||||
msgstr "Título"
|
||||
|
||||
#: documents/models.py:407
|
||||
msgid "Created"
|
||||
msgstr ""
|
||||
msgstr "Creado"
|
||||
|
||||
#: documents/models.py:408
|
||||
msgid "Added"
|
||||
msgstr ""
|
||||
msgstr "Agregado"
|
||||
|
||||
#: documents/models.py:409
|
||||
msgid "Tags"
|
||||
msgstr ""
|
||||
msgstr "Etiquetas"
|
||||
|
||||
#: documents/models.py:410
|
||||
msgid "Correspondent"
|
||||
msgstr ""
|
||||
msgstr "Corresponsal"
|
||||
|
||||
#: documents/models.py:411
|
||||
msgid "Document Type"
|
||||
msgstr ""
|
||||
msgstr "Tipo de Documento"
|
||||
|
||||
#: documents/models.py:412
|
||||
msgid "Storage Path"
|
||||
msgstr ""
|
||||
msgstr "Ruta de Almacenamiento"
|
||||
|
||||
#: documents/models.py:413
|
||||
msgid "Note"
|
||||
msgstr ""
|
||||
msgstr "Nota"
|
||||
|
||||
#: documents/models.py:414
|
||||
msgid "Owner"
|
||||
msgstr ""
|
||||
msgstr "Propietario"
|
||||
|
||||
#: documents/models.py:415
|
||||
msgid "Shared"
|
||||
msgstr ""
|
||||
msgstr "Compartido"
|
||||
|
||||
#: documents/models.py:416
|
||||
msgid "ASN"
|
||||
msgstr ""
|
||||
msgstr "ASN"
|
||||
|
||||
#: documents/models.py:422
|
||||
msgid "show on dashboard"
|
||||
@@ -329,15 +329,15 @@ msgstr "ordenar al revés"
|
||||
|
||||
#: documents/models.py:437
|
||||
msgid "View page size"
|
||||
msgstr ""
|
||||
msgstr "Ver tamaño de página"
|
||||
|
||||
#: documents/models.py:445
|
||||
msgid "View display mode"
|
||||
msgstr ""
|
||||
msgstr "Modo de visualización"
|
||||
|
||||
#: documents/models.py:452
|
||||
msgid "Document display fields"
|
||||
msgstr ""
|
||||
msgstr "Campos de visualización de documentos"
|
||||
|
||||
#: documents/models.py:459 documents/models.py:516
|
||||
msgid "saved view"
|
||||
@@ -433,7 +433,7 @@ msgstr "consulta de texto completo"
|
||||
|
||||
#: documents/models.py:489
|
||||
msgid "more like this"
|
||||
msgstr ""
|
||||
msgstr "más como esto"
|
||||
|
||||
#: documents/models.py:490
|
||||
msgid "has tags in"
|
||||
@@ -501,19 +501,19 @@ msgstr "compartido por mí"
|
||||
|
||||
#: documents/models.py:506
|
||||
msgid "has custom fields"
|
||||
msgstr ""
|
||||
msgstr "tiene campos personalizados"
|
||||
|
||||
#: documents/models.py:507
|
||||
msgid "has custom field in"
|
||||
msgstr ""
|
||||
msgstr "tiene campo personalizado en"
|
||||
|
||||
#: documents/models.py:508
|
||||
msgid "does not have custom field in"
|
||||
msgstr ""
|
||||
msgstr "no tiene campo personalizado en"
|
||||
|
||||
#: documents/models.py:509
|
||||
msgid "does not have custom field"
|
||||
msgstr ""
|
||||
msgstr "no tiene campo personalizado"
|
||||
|
||||
#: documents/models.py:519
|
||||
msgid "rule type"
|
||||
@@ -549,7 +549,7 @@ msgstr "Si la tarea es reconocida a través del frontend o API"
|
||||
|
||||
#: documents/models.py:649
|
||||
msgid "Task Filename"
|
||||
msgstr "Nombre del archivo de tarea"
|
||||
msgstr "Nombre del archivo de la tarea"
|
||||
|
||||
#: documents/models.py:650
|
||||
msgid "Name of the file which the Task was run for"
|
||||
@@ -633,7 +633,7 @@ msgstr "expiración"
|
||||
|
||||
#: documents/models.py:759
|
||||
msgid "slug"
|
||||
msgstr ""
|
||||
msgstr "slug"
|
||||
|
||||
#: documents/models.py:791
|
||||
msgid "share link"
|
||||
@@ -677,7 +677,7 @@ msgstr "Enlace al documento"
|
||||
|
||||
#: documents/models.py:812
|
||||
msgid "Select"
|
||||
msgstr ""
|
||||
msgstr "Selecciona"
|
||||
|
||||
#: documents/models.py:824
|
||||
msgid "data type"
|
||||
@@ -685,11 +685,11 @@ msgstr "tipo de dato"
|
||||
|
||||
#: documents/models.py:831
|
||||
msgid "extra data"
|
||||
msgstr ""
|
||||
msgstr "datos extra"
|
||||
|
||||
#: documents/models.py:835
|
||||
msgid "Extra data for the custom field, such as select options"
|
||||
msgstr ""
|
||||
msgstr "Datos adicionales para el campo personalizado, como opciones de selección"
|
||||
|
||||
#: documents/models.py:841
|
||||
msgid "custom field"
|
||||
@@ -781,7 +781,7 @@ msgstr "Tarea"
|
||||
|
||||
#: documents/models.py:1079
|
||||
msgid "Removal"
|
||||
msgstr ""
|
||||
msgstr "Eliminar"
|
||||
|
||||
#: documents/models.py:1083
|
||||
msgid "Workflow Action Type"
|
||||
@@ -837,71 +837,71 @@ msgstr "asignar estos campos personalizados"
|
||||
|
||||
#: documents/models.py:1181
|
||||
msgid "remove these tag(s)"
|
||||
msgstr ""
|
||||
msgstr "eliminar estas etiqueta(s)"
|
||||
|
||||
#: documents/models.py:1186
|
||||
msgid "remove all tags"
|
||||
msgstr ""
|
||||
msgstr "elimina todas las etiquetas"
|
||||
|
||||
#: documents/models.py:1193
|
||||
msgid "remove these document type(s)"
|
||||
msgstr ""
|
||||
msgstr "eliminar este tipo de documento (s)"
|
||||
|
||||
#: documents/models.py:1198
|
||||
msgid "remove all document types"
|
||||
msgstr ""
|
||||
msgstr "eliminar todos los tipos de documentos"
|
||||
|
||||
#: documents/models.py:1205
|
||||
msgid "remove these correspondent(s)"
|
||||
msgstr ""
|
||||
msgstr "eliminar estos corresponsales"
|
||||
|
||||
#: documents/models.py:1210
|
||||
msgid "remove all correspondents"
|
||||
msgstr ""
|
||||
msgstr "eliminar a todos los corresponsales"
|
||||
|
||||
#: documents/models.py:1217
|
||||
msgid "remove these storage path(s)"
|
||||
msgstr ""
|
||||
msgstr "eliminar estas rutas de almacenamiento"
|
||||
|
||||
#: documents/models.py:1222
|
||||
msgid "remove all storage paths"
|
||||
msgstr ""
|
||||
msgstr "eliminar todas las rutas de almacenamiento"
|
||||
|
||||
#: documents/models.py:1229
|
||||
msgid "remove these owner(s)"
|
||||
msgstr ""
|
||||
msgstr "eliminar estos propietarios"
|
||||
|
||||
#: documents/models.py:1234
|
||||
msgid "remove all owners"
|
||||
msgstr ""
|
||||
msgstr "eliminar todos los propietarios"
|
||||
|
||||
#: documents/models.py:1241
|
||||
msgid "remove view permissions for these users"
|
||||
msgstr ""
|
||||
msgstr "elimina permisos de visualización para estos usuarios"
|
||||
|
||||
#: documents/models.py:1248
|
||||
msgid "remove view permissions for these groups"
|
||||
msgstr ""
|
||||
msgstr "elimina permisos de visualización para estos grupos"
|
||||
|
||||
#: documents/models.py:1255
|
||||
msgid "remove change permissions for these users"
|
||||
msgstr ""
|
||||
msgstr "eliminar permisos de cambio para estos usuarios"
|
||||
|
||||
#: documents/models.py:1262
|
||||
msgid "remove change permissions for these groups"
|
||||
msgstr ""
|
||||
msgstr "elimina permisos de cambio para estos grupos"
|
||||
|
||||
#: documents/models.py:1267
|
||||
msgid "remove all permissions"
|
||||
msgstr ""
|
||||
msgstr "elimina todos los permisos"
|
||||
|
||||
#: documents/models.py:1274
|
||||
msgid "remove these custom fields"
|
||||
msgstr ""
|
||||
msgstr "elimina estos campos personalizados"
|
||||
|
||||
#: documents/models.py:1279
|
||||
msgid "remove all custom fields"
|
||||
msgstr ""
|
||||
msgstr "elimina todos los campos personalizados"
|
||||
|
||||
#: documents/models.py:1283
|
||||
msgid "workflow action"
|
||||
@@ -927,34 +927,35 @@ msgstr "acciones"
|
||||
msgid "enabled"
|
||||
msgstr "habilitado"
|
||||
|
||||
#: documents/serialisers.py:119
|
||||
#: documents/serialisers.py:120
|
||||
#, python-format
|
||||
msgid "Invalid regular expression: %(error)s"
|
||||
msgstr "Expresión irregular inválida: %(error)s"
|
||||
|
||||
#: documents/serialisers.py:435
|
||||
#: documents/serialisers.py:467
|
||||
msgid "Invalid color."
|
||||
msgstr "Color inválido."
|
||||
|
||||
#: documents/serialisers.py:1314
|
||||
#: documents/serialisers.py:1397
|
||||
#, python-format
|
||||
msgid "File type %(type)s not supported"
|
||||
msgstr "Tipo de fichero %(type)s no suportado"
|
||||
|
||||
#: documents/serialisers.py:1423
|
||||
#: documents/serialisers.py:1506
|
||||
msgid "Invalid variable detected."
|
||||
msgstr "Variable inválida."
|
||||
|
||||
#: documents/templates/account/email/base_message.txt:1
|
||||
#, python-format
|
||||
msgid "Hello from %(site_name)s!"
|
||||
msgstr ""
|
||||
msgstr "Hola de %(site_name)s!"
|
||||
|
||||
#: documents/templates/account/email/base_message.txt:5
|
||||
#, python-format
|
||||
msgid "Thank you for using %(site_name)s!\n"
|
||||
"%(site_domain)s"
|
||||
msgstr ""
|
||||
msgstr "Gracias por utilizar %(site_name)s!\n"
|
||||
"%(site_domain)s"
|
||||
|
||||
#: documents/templates/account/login.html:5
|
||||
msgid "Paperless-ngx sign in"
|
||||
@@ -967,7 +968,7 @@ msgstr "Por favor, inicie sesión"
|
||||
#: documents/templates/account/login.html:12
|
||||
#, python-format
|
||||
msgid "Don't have an account yet? <a href=\"%(signup_url)s\">Sign up</a>"
|
||||
msgstr ""
|
||||
msgstr "¿Aún no tienes una cuenta? <a href=\"%(signup_url)s\">Regístrate</a>"
|
||||
|
||||
#: documents/templates/account/login.html:19
|
||||
#: documents/templates/account/signup.html:15
|
||||
@@ -1064,21 +1065,21 @@ msgstr "Se ha establecido tu nueva contraseña. Ahora puedes <a href=\"%(login_u
|
||||
|
||||
#: documents/templates/account/signup.html:5
|
||||
msgid "Paperless-ngx sign up"
|
||||
msgstr ""
|
||||
msgstr "Paperless-ngx inicio de sesión"
|
||||
|
||||
#: documents/templates/account/signup.html:10
|
||||
#, python-format
|
||||
msgid "Already have an account? <a href=\"%(login_url)s\">Sign in</a>"
|
||||
msgstr ""
|
||||
msgstr "¿Ya tienes una cuenta? <a href=\"%(login_url)s\">Inicia sesión</a>"
|
||||
|
||||
#: documents/templates/account/signup.html:16
|
||||
#: documents/templates/socialaccount/signup.html:14
|
||||
msgid "Email (optional)"
|
||||
msgstr ""
|
||||
msgstr "Correo electrónico (opcional)"
|
||||
|
||||
#: documents/templates/account/signup.html:18
|
||||
msgid "Password (again)"
|
||||
msgstr ""
|
||||
msgstr "Contraseña (otra vez)"
|
||||
|
||||
#: documents/templates/account/signup.html:36
|
||||
#: documents/templates/socialaccount/signup.html:27
|
||||
@@ -1131,11 +1132,11 @@ msgstr "Acceso a Paperless-ngx con cuenta social"
|
||||
#: documents/templates/socialaccount/signup.html:10
|
||||
#, python-format
|
||||
msgid "You are about to use your %(provider_name)s account to login."
|
||||
msgstr ""
|
||||
msgstr "Estás a punto de usar tu cuenta de %(provider_name)s para iniciar sesión."
|
||||
|
||||
#: documents/templates/socialaccount/signup.html:11
|
||||
msgid "As a final step, please complete the following form:"
|
||||
msgstr ""
|
||||
msgstr "Como último paso, por favor complete el siguiente formulario:"
|
||||
|
||||
#: documents/validators.py:17
|
||||
#, python-brace-format
|
||||
@@ -1190,7 +1191,7 @@ msgstr "forzar"
|
||||
|
||||
#: paperless/models.py:42
|
||||
msgid "skip_noarchive"
|
||||
msgstr ""
|
||||
msgstr "omitir_sinarchivo"
|
||||
|
||||
#: paperless/models.py:50
|
||||
msgid "never"
|
||||
@@ -1258,7 +1259,7 @@ msgstr "Controla la generación de un archivo"
|
||||
|
||||
#: paperless/models.py:124
|
||||
msgid "Sets image DPI fallback value"
|
||||
msgstr ""
|
||||
msgstr "Establece el valor DPI por defecto"
|
||||
|
||||
#: paperless/models.py:131
|
||||
msgid "Controls the unpaper cleaning"
|
||||
@@ -1270,23 +1271,23 @@ msgstr ""
|
||||
|
||||
#: paperless/models.py:141
|
||||
msgid "Enables page rotation"
|
||||
msgstr ""
|
||||
msgstr "Permite rotación de página"
|
||||
|
||||
#: paperless/models.py:146
|
||||
msgid "Sets the threshold for rotation of pages"
|
||||
msgstr ""
|
||||
msgstr "Establece el umbral de rotación de páginas"
|
||||
|
||||
#: paperless/models.py:152
|
||||
msgid "Sets the maximum image size for decompression"
|
||||
msgstr ""
|
||||
msgstr "Establece el tamaño máximo de imagen para la descompresión"
|
||||
|
||||
#: paperless/models.py:158
|
||||
msgid "Sets the Ghostscript color conversion strategy"
|
||||
msgstr ""
|
||||
msgstr "Establece la estrategia de conversión de colores de Ghostscript"
|
||||
|
||||
#: paperless/models.py:166
|
||||
msgid "Adds additional user arguments for OCRMyPDF"
|
||||
msgstr ""
|
||||
msgstr "Añade argumentos de usuario adicionales para OCRMyPDF"
|
||||
|
||||
#: paperless/models.py:171
|
||||
msgid "Application title"
|
||||
@@ -1294,11 +1295,11 @@ msgstr "Título de la aplicación"
|
||||
|
||||
#: paperless/models.py:178
|
||||
msgid "Application logo"
|
||||
msgstr ""
|
||||
msgstr "Logo de la aplicación"
|
||||
|
||||
#: paperless/models.py:188
|
||||
msgid "paperless application settings"
|
||||
msgstr ""
|
||||
msgstr "Ajustes de la aplicación paperless"
|
||||
|
||||
#: paperless/settings.py:682
|
||||
msgid "English (US)"
|
||||
@@ -1366,65 +1367,69 @@ msgstr "Italiano"
|
||||
|
||||
#: paperless/settings.py:698
|
||||
msgid "Japanese"
|
||||
msgstr ""
|
||||
msgstr "Japonés"
|
||||
|
||||
#: paperless/settings.py:699
|
||||
msgid "Korean"
|
||||
msgstr "Coreano"
|
||||
|
||||
#: paperless/settings.py:700
|
||||
msgid "Luxembourgish"
|
||||
msgstr "Luxemburgués"
|
||||
|
||||
#: paperless/settings.py:700
|
||||
#: paperless/settings.py:701
|
||||
msgid "Norwegian"
|
||||
msgstr "Noruego"
|
||||
|
||||
#: paperless/settings.py:701
|
||||
#: paperless/settings.py:702
|
||||
msgid "Dutch"
|
||||
msgstr "Alemán"
|
||||
|
||||
#: paperless/settings.py:702
|
||||
#: paperless/settings.py:703
|
||||
msgid "Polish"
|
||||
msgstr "Polaco"
|
||||
|
||||
#: paperless/settings.py:703
|
||||
#: paperless/settings.py:704
|
||||
msgid "Portuguese (Brazil)"
|
||||
msgstr "Portugués (Brasil)"
|
||||
|
||||
#: paperless/settings.py:704
|
||||
#: paperless/settings.py:705
|
||||
msgid "Portuguese"
|
||||
msgstr "Portugués"
|
||||
|
||||
#: paperless/settings.py:705
|
||||
#: paperless/settings.py:706
|
||||
msgid "Romanian"
|
||||
msgstr "Rumano"
|
||||
|
||||
#: paperless/settings.py:706
|
||||
#: paperless/settings.py:707
|
||||
msgid "Russian"
|
||||
msgstr "Ruso"
|
||||
|
||||
#: paperless/settings.py:707
|
||||
#: paperless/settings.py:708
|
||||
msgid "Slovak"
|
||||
msgstr "Eslovaco"
|
||||
|
||||
#: paperless/settings.py:708
|
||||
#: paperless/settings.py:709
|
||||
msgid "Slovenian"
|
||||
msgstr "Esloveno"
|
||||
|
||||
#: paperless/settings.py:709
|
||||
#: paperless/settings.py:710
|
||||
msgid "Serbian"
|
||||
msgstr "Serbio"
|
||||
|
||||
#: paperless/settings.py:710
|
||||
#: paperless/settings.py:711
|
||||
msgid "Swedish"
|
||||
msgstr "Sueco"
|
||||
|
||||
#: paperless/settings.py:711
|
||||
#: paperless/settings.py:712
|
||||
msgid "Turkish"
|
||||
msgstr "Turco"
|
||||
|
||||
#: paperless/settings.py:712
|
||||
#: paperless/settings.py:713
|
||||
msgid "Ukrainian"
|
||||
msgstr "Ucraniano"
|
||||
|
||||
#: paperless/settings.py:713
|
||||
#: paperless/settings.py:714
|
||||
msgid "Chinese Simplified"
|
||||
msgstr "Chino simplificado"
|
||||
|
||||
@@ -1514,7 +1519,7 @@ msgstr "contraseña"
|
||||
|
||||
#: paperless_mail/models.py:42
|
||||
msgid "Is token authentication"
|
||||
msgstr ""
|
||||
msgstr "Es la autenticación por token"
|
||||
|
||||
#: paperless_mail/models.py:45
|
||||
msgid "character set"
|
||||
@@ -1626,11 +1631,11 @@ msgstr "filtrar cuerpo"
|
||||
|
||||
#: paperless_mail/models.py:157
|
||||
msgid "filter attachment filename inclusive"
|
||||
msgstr ""
|
||||
msgstr "filtrar nombre del archivo adjunto modo incluyente"
|
||||
|
||||
#: paperless_mail/models.py:169
|
||||
msgid "filter attachment filename exclusive"
|
||||
msgstr ""
|
||||
msgstr "Filtrar nombre del archivo adjunto modo excluyente"
|
||||
|
||||
#: paperless_mail/models.py:174
|
||||
msgid "Do not consume documents which entirely match this filename if specified. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive."
|
||||
|
||||
@@ -2,8 +2,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: paperless-ngx\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2024-07-09 11:27-0700\n"
|
||||
"PO-Revision-Date: 2024-07-09 18:28\n"
|
||||
"POT-Creation-Date: 2024-08-28 17:12-0700\n"
|
||||
"PO-Revision-Date: 2024-08-29 03:10\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Finnish\n"
|
||||
"Language: fi_FI\n"
|
||||
@@ -927,21 +927,21 @@ msgstr "toiminnot"
|
||||
msgid "enabled"
|
||||
msgstr "käytössä"
|
||||
|
||||
#: documents/serialisers.py:119
|
||||
#: documents/serialisers.py:120
|
||||
#, python-format
|
||||
msgid "Invalid regular expression: %(error)s"
|
||||
msgstr "Virheellinen regex-lauseke: %(error)s"
|
||||
|
||||
#: documents/serialisers.py:435
|
||||
#: documents/serialisers.py:467
|
||||
msgid "Invalid color."
|
||||
msgstr "Virheellinen väri."
|
||||
|
||||
#: documents/serialisers.py:1314
|
||||
#: documents/serialisers.py:1397
|
||||
#, python-format
|
||||
msgid "File type %(type)s not supported"
|
||||
msgstr "Tiedostotyyppiä %(type)s ei tueta"
|
||||
|
||||
#: documents/serialisers.py:1423
|
||||
#: documents/serialisers.py:1506
|
||||
msgid "Invalid variable detected."
|
||||
msgstr "Virheellinen muuttuja havaittu."
|
||||
|
||||
@@ -1370,62 +1370,66 @@ msgid "Japanese"
|
||||
msgstr ""
|
||||
|
||||
#: paperless/settings.py:699
|
||||
msgid "Korean"
|
||||
msgstr ""
|
||||
|
||||
#: paperless/settings.py:700
|
||||
msgid "Luxembourgish"
|
||||
msgstr "Luxemburg"
|
||||
|
||||
#: paperless/settings.py:700
|
||||
#: paperless/settings.py:701
|
||||
msgid "Norwegian"
|
||||
msgstr "Norja"
|
||||
|
||||
#: paperless/settings.py:701
|
||||
#: paperless/settings.py:702
|
||||
msgid "Dutch"
|
||||
msgstr "Hollanti"
|
||||
|
||||
#: paperless/settings.py:702
|
||||
#: paperless/settings.py:703
|
||||
msgid "Polish"
|
||||
msgstr "puola"
|
||||
|
||||
#: paperless/settings.py:703
|
||||
#: paperless/settings.py:704
|
||||
msgid "Portuguese (Brazil)"
|
||||
msgstr "portugali (Brasilia)"
|
||||
|
||||
#: paperless/settings.py:704
|
||||
#: paperless/settings.py:705
|
||||
msgid "Portuguese"
|
||||
msgstr "portugali"
|
||||
|
||||
#: paperless/settings.py:705
|
||||
#: paperless/settings.py:706
|
||||
msgid "Romanian"
|
||||
msgstr "romania"
|
||||
|
||||
#: paperless/settings.py:706
|
||||
#: paperless/settings.py:707
|
||||
msgid "Russian"
|
||||
msgstr "venäjä"
|
||||
|
||||
#: paperless/settings.py:707
|
||||
#: paperless/settings.py:708
|
||||
msgid "Slovak"
|
||||
msgstr "Slovakia"
|
||||
|
||||
#: paperless/settings.py:708
|
||||
#: paperless/settings.py:709
|
||||
msgid "Slovenian"
|
||||
msgstr "Slovenia"
|
||||
|
||||
#: paperless/settings.py:709
|
||||
#: paperless/settings.py:710
|
||||
msgid "Serbian"
|
||||
msgstr "Serbia"
|
||||
|
||||
#: paperless/settings.py:710
|
||||
#: paperless/settings.py:711
|
||||
msgid "Swedish"
|
||||
msgstr "ruotsi"
|
||||
|
||||
#: paperless/settings.py:711
|
||||
#: paperless/settings.py:712
|
||||
msgid "Turkish"
|
||||
msgstr "Turkki"
|
||||
|
||||
#: paperless/settings.py:712
|
||||
#: paperless/settings.py:713
|
||||
msgid "Ukrainian"
|
||||
msgstr "Ukraina"
|
||||
|
||||
#: paperless/settings.py:713
|
||||
#: paperless/settings.py:714
|
||||
msgid "Chinese Simplified"
|
||||
msgstr "Kiina (yksinkertaistettu)"
|
||||
|
||||
|
||||
@@ -2,8 +2,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: paperless-ngx\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2024-07-09 11:27-0700\n"
|
||||
"PO-Revision-Date: 2024-07-26 00:26\n"
|
||||
"POT-Creation-Date: 2024-08-28 17:12-0700\n"
|
||||
"PO-Revision-Date: 2024-09-08 00:31\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: French\n"
|
||||
"Language: fr_FR\n"
|
||||
@@ -927,21 +927,21 @@ msgstr "actions"
|
||||
msgid "enabled"
|
||||
msgstr "activé"
|
||||
|
||||
#: documents/serialisers.py:119
|
||||
#: documents/serialisers.py:120
|
||||
#, python-format
|
||||
msgid "Invalid regular expression: %(error)s"
|
||||
msgstr "Expression régulière incorrecte : %(error)s"
|
||||
|
||||
#: documents/serialisers.py:435
|
||||
#: documents/serialisers.py:467
|
||||
msgid "Invalid color."
|
||||
msgstr "Couleur incorrecte."
|
||||
|
||||
#: documents/serialisers.py:1314
|
||||
#: documents/serialisers.py:1397
|
||||
#, python-format
|
||||
msgid "File type %(type)s not supported"
|
||||
msgstr "Type de fichier %(type)s non pris en charge"
|
||||
|
||||
#: documents/serialisers.py:1423
|
||||
#: documents/serialisers.py:1506
|
||||
msgid "Invalid variable detected."
|
||||
msgstr "Variable invalide détectée."
|
||||
|
||||
@@ -1369,62 +1369,66 @@ msgid "Japanese"
|
||||
msgstr "Japonais"
|
||||
|
||||
#: paperless/settings.py:699
|
||||
msgid "Korean"
|
||||
msgstr "Coréen"
|
||||
|
||||
#: paperless/settings.py:700
|
||||
msgid "Luxembourgish"
|
||||
msgstr "Luxembourgeois"
|
||||
|
||||
#: paperless/settings.py:700
|
||||
#: paperless/settings.py:701
|
||||
msgid "Norwegian"
|
||||
msgstr "Norvégien"
|
||||
|
||||
#: paperless/settings.py:701
|
||||
#: paperless/settings.py:702
|
||||
msgid "Dutch"
|
||||
msgstr "Néerlandais"
|
||||
|
||||
#: paperless/settings.py:702
|
||||
#: paperless/settings.py:703
|
||||
msgid "Polish"
|
||||
msgstr "Polonais"
|
||||
|
||||
#: paperless/settings.py:703
|
||||
#: paperless/settings.py:704
|
||||
msgid "Portuguese (Brazil)"
|
||||
msgstr "Portugais (Brésil)"
|
||||
|
||||
#: paperless/settings.py:704
|
||||
#: paperless/settings.py:705
|
||||
msgid "Portuguese"
|
||||
msgstr "Portugais"
|
||||
|
||||
#: paperless/settings.py:705
|
||||
#: paperless/settings.py:706
|
||||
msgid "Romanian"
|
||||
msgstr "Roumain"
|
||||
|
||||
#: paperless/settings.py:706
|
||||
#: paperless/settings.py:707
|
||||
msgid "Russian"
|
||||
msgstr "Russe"
|
||||
|
||||
#: paperless/settings.py:707
|
||||
#: paperless/settings.py:708
|
||||
msgid "Slovak"
|
||||
msgstr "Solvaque"
|
||||
|
||||
#: paperless/settings.py:708
|
||||
#: paperless/settings.py:709
|
||||
msgid "Slovenian"
|
||||
msgstr "Slovène"
|
||||
|
||||
#: paperless/settings.py:709
|
||||
#: paperless/settings.py:710
|
||||
msgid "Serbian"
|
||||
msgstr "Serbe"
|
||||
|
||||
#: paperless/settings.py:710
|
||||
#: paperless/settings.py:711
|
||||
msgid "Swedish"
|
||||
msgstr "Suédois"
|
||||
|
||||
#: paperless/settings.py:711
|
||||
#: paperless/settings.py:712
|
||||
msgid "Turkish"
|
||||
msgstr "Turc"
|
||||
|
||||
#: paperless/settings.py:712
|
||||
#: paperless/settings.py:713
|
||||
msgid "Ukrainian"
|
||||
msgstr "Ukrainien"
|
||||
|
||||
#: paperless/settings.py:713
|
||||
#: paperless/settings.py:714
|
||||
msgid "Chinese Simplified"
|
||||
msgstr "Chinois simplifié"
|
||||
|
||||
|
||||
@@ -2,8 +2,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: paperless-ngx\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2024-07-09 11:27-0700\n"
|
||||
"PO-Revision-Date: 2024-07-09 18:28\n"
|
||||
"POT-Creation-Date: 2024-08-28 17:12-0700\n"
|
||||
"PO-Revision-Date: 2024-08-29 03:10\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Hebrew\n"
|
||||
"Language: he_IL\n"
|
||||
@@ -927,21 +927,21 @@ msgstr "פעולות"
|
||||
msgid "enabled"
|
||||
msgstr "פעיל"
|
||||
|
||||
#: documents/serialisers.py:119
|
||||
#: documents/serialisers.py:120
|
||||
#, python-format
|
||||
msgid "Invalid regular expression: %(error)s"
|
||||
msgstr "ביטוי רגולרי בלתי חוקי: %(error)s"
|
||||
|
||||
#: documents/serialisers.py:435
|
||||
#: documents/serialisers.py:467
|
||||
msgid "Invalid color."
|
||||
msgstr "צבע לא חוקי."
|
||||
|
||||
#: documents/serialisers.py:1314
|
||||
#: documents/serialisers.py:1397
|
||||
#, python-format
|
||||
msgid "File type %(type)s not supported"
|
||||
msgstr "סוג קובץ %(type)s לא נתמך"
|
||||
|
||||
#: documents/serialisers.py:1423
|
||||
#: documents/serialisers.py:1506
|
||||
msgid "Invalid variable detected."
|
||||
msgstr "משתנה לא חוקי זוהה."
|
||||
|
||||
@@ -1369,62 +1369,66 @@ msgid "Japanese"
|
||||
msgstr "יפנית"
|
||||
|
||||
#: paperless/settings.py:699
|
||||
msgid "Korean"
|
||||
msgstr ""
|
||||
|
||||
#: paperless/settings.py:700
|
||||
msgid "Luxembourgish"
|
||||
msgstr "לוקסמבורגית"
|
||||
|
||||
#: paperless/settings.py:700
|
||||
#: paperless/settings.py:701
|
||||
msgid "Norwegian"
|
||||
msgstr "נורווגית"
|
||||
|
||||
#: paperless/settings.py:701
|
||||
#: paperless/settings.py:702
|
||||
msgid "Dutch"
|
||||
msgstr "הולנדית"
|
||||
|
||||
#: paperless/settings.py:702
|
||||
#: paperless/settings.py:703
|
||||
msgid "Polish"
|
||||
msgstr "פולנית"
|
||||
|
||||
#: paperless/settings.py:703
|
||||
#: paperless/settings.py:704
|
||||
msgid "Portuguese (Brazil)"
|
||||
msgstr "פורטוגלית ברזילאית"
|
||||
|
||||
#: paperless/settings.py:704
|
||||
#: paperless/settings.py:705
|
||||
msgid "Portuguese"
|
||||
msgstr "פורטוגלית"
|
||||
|
||||
#: paperless/settings.py:705
|
||||
#: paperless/settings.py:706
|
||||
msgid "Romanian"
|
||||
msgstr "רומנית"
|
||||
|
||||
#: paperless/settings.py:706
|
||||
#: paperless/settings.py:707
|
||||
msgid "Russian"
|
||||
msgstr "רוסית"
|
||||
|
||||
#: paperless/settings.py:707
|
||||
#: paperless/settings.py:708
|
||||
msgid "Slovak"
|
||||
msgstr "סלובקית"
|
||||
|
||||
#: paperless/settings.py:708
|
||||
#: paperless/settings.py:709
|
||||
msgid "Slovenian"
|
||||
msgstr "סלובנית"
|
||||
|
||||
#: paperless/settings.py:709
|
||||
#: paperless/settings.py:710
|
||||
msgid "Serbian"
|
||||
msgstr "סרבית"
|
||||
|
||||
#: paperless/settings.py:710
|
||||
#: paperless/settings.py:711
|
||||
msgid "Swedish"
|
||||
msgstr "שוודית"
|
||||
|
||||
#: paperless/settings.py:711
|
||||
#: paperless/settings.py:712
|
||||
msgid "Turkish"
|
||||
msgstr "טורקית"
|
||||
|
||||
#: paperless/settings.py:712
|
||||
#: paperless/settings.py:713
|
||||
msgid "Ukrainian"
|
||||
msgstr "אוקראינית"
|
||||
|
||||
#: paperless/settings.py:713
|
||||
#: paperless/settings.py:714
|
||||
msgid "Chinese Simplified"
|
||||
msgstr "סינית מפושטת"
|
||||
|
||||
|
||||
@@ -2,8 +2,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: paperless-ngx\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2024-07-09 11:27-0700\n"
|
||||
"PO-Revision-Date: 2024-07-09 18:28\n"
|
||||
"POT-Creation-Date: 2024-08-28 17:12-0700\n"
|
||||
"PO-Revision-Date: 2024-08-29 03:10\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Croatian\n"
|
||||
"Language: hr_HR\n"
|
||||
@@ -927,21 +927,21 @@ msgstr ""
|
||||
msgid "enabled"
|
||||
msgstr ""
|
||||
|
||||
#: documents/serialisers.py:119
|
||||
#: documents/serialisers.py:120
|
||||
#, python-format
|
||||
msgid "Invalid regular expression: %(error)s"
|
||||
msgstr "Nevažeći regularni izraz: %(error)s"
|
||||
|
||||
#: documents/serialisers.py:435
|
||||
#: documents/serialisers.py:467
|
||||
msgid "Invalid color."
|
||||
msgstr "Nevažeća boja."
|
||||
|
||||
#: documents/serialisers.py:1314
|
||||
#: documents/serialisers.py:1397
|
||||
#, python-format
|
||||
msgid "File type %(type)s not supported"
|
||||
msgstr "Vrsta datoteke %(type)s nije podržana"
|
||||
|
||||
#: documents/serialisers.py:1423
|
||||
#: documents/serialisers.py:1506
|
||||
msgid "Invalid variable detected."
|
||||
msgstr "Otkrivena je nevaljana vrsta datoteke."
|
||||
|
||||
@@ -1369,62 +1369,66 @@ msgid "Japanese"
|
||||
msgstr ""
|
||||
|
||||
#: paperless/settings.py:699
|
||||
msgid "Korean"
|
||||
msgstr ""
|
||||
|
||||
#: paperless/settings.py:700
|
||||
msgid "Luxembourgish"
|
||||
msgstr "Luksemburški"
|
||||
|
||||
#: paperless/settings.py:700
|
||||
#: paperless/settings.py:701
|
||||
msgid "Norwegian"
|
||||
msgstr ""
|
||||
|
||||
#: paperless/settings.py:701
|
||||
#: paperless/settings.py:702
|
||||
msgid "Dutch"
|
||||
msgstr "Nizozemski"
|
||||
|
||||
#: paperless/settings.py:702
|
||||
#: paperless/settings.py:703
|
||||
msgid "Polish"
|
||||
msgstr "Poljski"
|
||||
|
||||
#: paperless/settings.py:703
|
||||
#: paperless/settings.py:704
|
||||
msgid "Portuguese (Brazil)"
|
||||
msgstr "Portugalski (Brazil)"
|
||||
|
||||
#: paperless/settings.py:704
|
||||
#: paperless/settings.py:705
|
||||
msgid "Portuguese"
|
||||
msgstr "Portugalski"
|
||||
|
||||
#: paperless/settings.py:705
|
||||
#: paperless/settings.py:706
|
||||
msgid "Romanian"
|
||||
msgstr "Rumunjski"
|
||||
|
||||
#: paperless/settings.py:706
|
||||
#: paperless/settings.py:707
|
||||
msgid "Russian"
|
||||
msgstr "Ruski"
|
||||
|
||||
#: paperless/settings.py:707
|
||||
#: paperless/settings.py:708
|
||||
msgid "Slovak"
|
||||
msgstr ""
|
||||
|
||||
#: paperless/settings.py:708
|
||||
#: paperless/settings.py:709
|
||||
msgid "Slovenian"
|
||||
msgstr "Slovenski"
|
||||
|
||||
#: paperless/settings.py:709
|
||||
#: paperless/settings.py:710
|
||||
msgid "Serbian"
|
||||
msgstr "Srpski"
|
||||
|
||||
#: paperless/settings.py:710
|
||||
#: paperless/settings.py:711
|
||||
msgid "Swedish"
|
||||
msgstr "Švedski"
|
||||
|
||||
#: paperless/settings.py:711
|
||||
#: paperless/settings.py:712
|
||||
msgid "Turkish"
|
||||
msgstr "Turski"
|
||||
|
||||
#: paperless/settings.py:712
|
||||
#: paperless/settings.py:713
|
||||
msgid "Ukrainian"
|
||||
msgstr ""
|
||||
|
||||
#: paperless/settings.py:713
|
||||
#: paperless/settings.py:714
|
||||
msgid "Chinese Simplified"
|
||||
msgstr "Pojednostavljeni kineski"
|
||||
|
||||
|
||||
@@ -2,8 +2,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: paperless-ngx\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2024-07-09 11:27-0700\n"
|
||||
"PO-Revision-Date: 2024-07-09 18:28\n"
|
||||
"POT-Creation-Date: 2024-08-28 17:12-0700\n"
|
||||
"PO-Revision-Date: 2024-08-29 03:10\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Hungarian\n"
|
||||
"Language: hu_HU\n"
|
||||
@@ -927,21 +927,21 @@ msgstr ""
|
||||
msgid "enabled"
|
||||
msgstr ""
|
||||
|
||||
#: documents/serialisers.py:119
|
||||
#: documents/serialisers.py:120
|
||||
#, python-format
|
||||
msgid "Invalid regular expression: %(error)s"
|
||||
msgstr "Érvénytelen reguláris kifejezés: %(error)s"
|
||||
|
||||
#: documents/serialisers.py:435
|
||||
#: documents/serialisers.py:467
|
||||
msgid "Invalid color."
|
||||
msgstr "Érvénytelen szín."
|
||||
|
||||
#: documents/serialisers.py:1314
|
||||
#: documents/serialisers.py:1397
|
||||
#, python-format
|
||||
msgid "File type %(type)s not supported"
|
||||
msgstr "Fájltípus %(type)s nem támogatott"
|
||||
|
||||
#: documents/serialisers.py:1423
|
||||
#: documents/serialisers.py:1506
|
||||
msgid "Invalid variable detected."
|
||||
msgstr "Érvénytelen változót észleltek."
|
||||
|
||||
@@ -1369,62 +1369,66 @@ msgid "Japanese"
|
||||
msgstr ""
|
||||
|
||||
#: paperless/settings.py:699
|
||||
msgid "Korean"
|
||||
msgstr ""
|
||||
|
||||
#: paperless/settings.py:700
|
||||
msgid "Luxembourgish"
|
||||
msgstr "Luxemburgi"
|
||||
|
||||
#: paperless/settings.py:700
|
||||
#: paperless/settings.py:701
|
||||
msgid "Norwegian"
|
||||
msgstr "Norvég"
|
||||
|
||||
#: paperless/settings.py:701
|
||||
#: paperless/settings.py:702
|
||||
msgid "Dutch"
|
||||
msgstr "Holland"
|
||||
|
||||
#: paperless/settings.py:702
|
||||
#: paperless/settings.py:703
|
||||
msgid "Polish"
|
||||
msgstr "Lengyel"
|
||||
|
||||
#: paperless/settings.py:703
|
||||
#: paperless/settings.py:704
|
||||
msgid "Portuguese (Brazil)"
|
||||
msgstr "Portugál (Brazília)"
|
||||
|
||||
#: paperless/settings.py:704
|
||||
#: paperless/settings.py:705
|
||||
msgid "Portuguese"
|
||||
msgstr "Portugál"
|
||||
|
||||
#: paperless/settings.py:705
|
||||
#: paperless/settings.py:706
|
||||
msgid "Romanian"
|
||||
msgstr "Román"
|
||||
|
||||
#: paperless/settings.py:706
|
||||
#: paperless/settings.py:707
|
||||
msgid "Russian"
|
||||
msgstr "Orosz"
|
||||
|
||||
#: paperless/settings.py:707
|
||||
#: paperless/settings.py:708
|
||||
msgid "Slovak"
|
||||
msgstr "Szlovák"
|
||||
|
||||
#: paperless/settings.py:708
|
||||
#: paperless/settings.py:709
|
||||
msgid "Slovenian"
|
||||
msgstr "Szlovén"
|
||||
|
||||
#: paperless/settings.py:709
|
||||
#: paperless/settings.py:710
|
||||
msgid "Serbian"
|
||||
msgstr "Szerb"
|
||||
|
||||
#: paperless/settings.py:710
|
||||
#: paperless/settings.py:711
|
||||
msgid "Swedish"
|
||||
msgstr "Svéd"
|
||||
|
||||
#: paperless/settings.py:711
|
||||
#: paperless/settings.py:712
|
||||
msgid "Turkish"
|
||||
msgstr "Török"
|
||||
|
||||
#: paperless/settings.py:712
|
||||
#: paperless/settings.py:713
|
||||
msgid "Ukrainian"
|
||||
msgstr "Ukrán"
|
||||
|
||||
#: paperless/settings.py:713
|
||||
#: paperless/settings.py:714
|
||||
msgid "Chinese Simplified"
|
||||
msgstr "Kínai egyszerűsített"
|
||||
|
||||
|
||||
@@ -2,8 +2,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: paperless-ngx\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2024-07-09 11:27-0700\n"
|
||||
"PO-Revision-Date: 2024-07-09 18:28\n"
|
||||
"POT-Creation-Date: 2024-08-28 17:12-0700\n"
|
||||
"PO-Revision-Date: 2024-08-29 03:10\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Indonesian\n"
|
||||
"Language: id_ID\n"
|
||||
@@ -927,21 +927,21 @@ msgstr "tindakan"
|
||||
msgid "enabled"
|
||||
msgstr "dinyalakan"
|
||||
|
||||
#: documents/serialisers.py:119
|
||||
#: documents/serialisers.py:120
|
||||
#, python-format
|
||||
msgid "Invalid regular expression: %(error)s"
|
||||
msgstr "Ekspresi reguler tidak valid: %(error)s"
|
||||
|
||||
#: documents/serialisers.py:435
|
||||
#: documents/serialisers.py:467
|
||||
msgid "Invalid color."
|
||||
msgstr "Warna tidak valid."
|
||||
|
||||
#: documents/serialisers.py:1314
|
||||
#: documents/serialisers.py:1397
|
||||
#, python-format
|
||||
msgid "File type %(type)s not supported"
|
||||
msgstr "Jenis berkas %(type)s tidak didukung"
|
||||
|
||||
#: documents/serialisers.py:1423
|
||||
#: documents/serialisers.py:1506
|
||||
msgid "Invalid variable detected."
|
||||
msgstr "Variabel ilegal terdeteksi."
|
||||
|
||||
@@ -1370,62 +1370,66 @@ msgid "Japanese"
|
||||
msgstr ""
|
||||
|
||||
#: paperless/settings.py:699
|
||||
msgid "Korean"
|
||||
msgstr ""
|
||||
|
||||
#: paperless/settings.py:700
|
||||
msgid "Luxembourgish"
|
||||
msgstr "Luksemburg"
|
||||
|
||||
#: paperless/settings.py:700
|
||||
#: paperless/settings.py:701
|
||||
msgid "Norwegian"
|
||||
msgstr "Norwegia"
|
||||
|
||||
#: paperless/settings.py:701
|
||||
#: paperless/settings.py:702
|
||||
msgid "Dutch"
|
||||
msgstr "Belanda"
|
||||
|
||||
#: paperless/settings.py:702
|
||||
#: paperless/settings.py:703
|
||||
msgid "Polish"
|
||||
msgstr "Polandia"
|
||||
|
||||
#: paperless/settings.py:703
|
||||
#: paperless/settings.py:704
|
||||
msgid "Portuguese (Brazil)"
|
||||
msgstr "Portugis (Brasil)"
|
||||
|
||||
#: paperless/settings.py:704
|
||||
#: paperless/settings.py:705
|
||||
msgid "Portuguese"
|
||||
msgstr "Portugis"
|
||||
|
||||
#: paperless/settings.py:705
|
||||
#: paperless/settings.py:706
|
||||
msgid "Romanian"
|
||||
msgstr "Rumania"
|
||||
|
||||
#: paperless/settings.py:706
|
||||
#: paperless/settings.py:707
|
||||
msgid "Russian"
|
||||
msgstr "Rusia"
|
||||
|
||||
#: paperless/settings.py:707
|
||||
#: paperless/settings.py:708
|
||||
msgid "Slovak"
|
||||
msgstr "Slovakia"
|
||||
|
||||
#: paperless/settings.py:708
|
||||
#: paperless/settings.py:709
|
||||
msgid "Slovenian"
|
||||
msgstr "Slovenia"
|
||||
|
||||
#: paperless/settings.py:709
|
||||
#: paperless/settings.py:710
|
||||
msgid "Serbian"
|
||||
msgstr "Serbia"
|
||||
|
||||
#: paperless/settings.py:710
|
||||
#: paperless/settings.py:711
|
||||
msgid "Swedish"
|
||||
msgstr "Swedia"
|
||||
|
||||
#: paperless/settings.py:711
|
||||
#: paperless/settings.py:712
|
||||
msgid "Turkish"
|
||||
msgstr "Turki"
|
||||
|
||||
#: paperless/settings.py:712
|
||||
#: paperless/settings.py:713
|
||||
msgid "Ukrainian"
|
||||
msgstr "Ukraina"
|
||||
|
||||
#: paperless/settings.py:713
|
||||
#: paperless/settings.py:714
|
||||
msgid "Chinese Simplified"
|
||||
msgstr "Mandarin Sederhana"
|
||||
|
||||
|
||||
@@ -2,8 +2,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: paperless-ngx\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2024-07-09 11:27-0700\n"
|
||||
"PO-Revision-Date: 2024-07-20 12:09\n"
|
||||
"POT-Creation-Date: 2024-08-28 17:12-0700\n"
|
||||
"PO-Revision-Date: 2024-08-30 12:10\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Italian\n"
|
||||
"Language: it_IT\n"
|
||||
@@ -293,7 +293,7 @@ msgstr "Tipo di documento"
|
||||
|
||||
#: documents/models.py:412
|
||||
msgid "Storage Path"
|
||||
msgstr "Percorso archiviazione"
|
||||
msgstr "Percorso di archiviazione"
|
||||
|
||||
#: documents/models.py:413
|
||||
msgid "Note"
|
||||
@@ -497,7 +497,7 @@ msgstr "ha un valore di campo personalizzato"
|
||||
|
||||
#: documents/models.py:505
|
||||
msgid "is shared by me"
|
||||
msgstr "condiviso da me"
|
||||
msgstr "è condiviso da me"
|
||||
|
||||
#: documents/models.py:506
|
||||
msgid "has custom fields"
|
||||
@@ -633,7 +633,7 @@ msgstr "scadenza"
|
||||
|
||||
#: documents/models.py:759
|
||||
msgid "slug"
|
||||
msgstr ""
|
||||
msgstr "slug"
|
||||
|
||||
#: documents/models.py:791
|
||||
msgid "share link"
|
||||
@@ -927,21 +927,21 @@ msgstr "azioni"
|
||||
msgid "enabled"
|
||||
msgstr "abilitato"
|
||||
|
||||
#: documents/serialisers.py:119
|
||||
#: documents/serialisers.py:120
|
||||
#, python-format
|
||||
msgid "Invalid regular expression: %(error)s"
|
||||
msgstr "Espressione regolare non valida: %(error)s"
|
||||
|
||||
#: documents/serialisers.py:435
|
||||
#: documents/serialisers.py:467
|
||||
msgid "Invalid color."
|
||||
msgstr "Colore non valido."
|
||||
|
||||
#: documents/serialisers.py:1314
|
||||
#: documents/serialisers.py:1397
|
||||
#, python-format
|
||||
msgid "File type %(type)s not supported"
|
||||
msgstr "Il tipo di file %(type)s non è supportato"
|
||||
|
||||
#: documents/serialisers.py:1423
|
||||
#: documents/serialisers.py:1506
|
||||
msgid "Invalid variable detected."
|
||||
msgstr "Variabile non valida rilevata."
|
||||
|
||||
@@ -1127,7 +1127,7 @@ msgstr "Continua"
|
||||
|
||||
#: documents/templates/socialaccount/signup.html:5
|
||||
msgid "Paperless-ngx social account sign up"
|
||||
msgstr "Registrati con un account social"
|
||||
msgstr "Registrati con un account social a Paperless-ngx"
|
||||
|
||||
#: documents/templates/socialaccount/signup.html:10
|
||||
#, python-format
|
||||
@@ -1211,7 +1211,7 @@ msgstr "pulisci"
|
||||
|
||||
#: paperless/models.py:61
|
||||
msgid "clean-final"
|
||||
msgstr "pulito-finale"
|
||||
msgstr "pulizia-finale"
|
||||
|
||||
#: paperless/models.py:62
|
||||
msgid "none"
|
||||
@@ -1370,62 +1370,66 @@ msgid "Japanese"
|
||||
msgstr "Giapponese"
|
||||
|
||||
#: paperless/settings.py:699
|
||||
msgid "Korean"
|
||||
msgstr ""
|
||||
|
||||
#: paperless/settings.py:700
|
||||
msgid "Luxembourgish"
|
||||
msgstr "Lussemburghese"
|
||||
|
||||
#: paperless/settings.py:700
|
||||
#: paperless/settings.py:701
|
||||
msgid "Norwegian"
|
||||
msgstr "Norvegese"
|
||||
|
||||
#: paperless/settings.py:701
|
||||
#: paperless/settings.py:702
|
||||
msgid "Dutch"
|
||||
msgstr "Olandese"
|
||||
|
||||
#: paperless/settings.py:702
|
||||
#: paperless/settings.py:703
|
||||
msgid "Polish"
|
||||
msgstr "Polacco"
|
||||
|
||||
#: paperless/settings.py:703
|
||||
#: paperless/settings.py:704
|
||||
msgid "Portuguese (Brazil)"
|
||||
msgstr "Portoghese (Brasile)"
|
||||
|
||||
#: paperless/settings.py:704
|
||||
#: paperless/settings.py:705
|
||||
msgid "Portuguese"
|
||||
msgstr "Portoghese"
|
||||
|
||||
#: paperless/settings.py:705
|
||||
#: paperless/settings.py:706
|
||||
msgid "Romanian"
|
||||
msgstr "Rumeno"
|
||||
|
||||
#: paperless/settings.py:706
|
||||
#: paperless/settings.py:707
|
||||
msgid "Russian"
|
||||
msgstr "Russo"
|
||||
|
||||
#: paperless/settings.py:707
|
||||
#: paperless/settings.py:708
|
||||
msgid "Slovak"
|
||||
msgstr "Slovacco"
|
||||
|
||||
#: paperless/settings.py:708
|
||||
#: paperless/settings.py:709
|
||||
msgid "Slovenian"
|
||||
msgstr "Sloveno"
|
||||
|
||||
#: paperless/settings.py:709
|
||||
#: paperless/settings.py:710
|
||||
msgid "Serbian"
|
||||
msgstr "Serbo"
|
||||
|
||||
#: paperless/settings.py:710
|
||||
#: paperless/settings.py:711
|
||||
msgid "Swedish"
|
||||
msgstr "Svedese"
|
||||
|
||||
#: paperless/settings.py:711
|
||||
#: paperless/settings.py:712
|
||||
msgid "Turkish"
|
||||
msgstr "Turco"
|
||||
|
||||
#: paperless/settings.py:712
|
||||
#: paperless/settings.py:713
|
||||
msgid "Ukrainian"
|
||||
msgstr "Ucraino"
|
||||
|
||||
#: paperless/settings.py:713
|
||||
#: paperless/settings.py:714
|
||||
msgid "Chinese Simplified"
|
||||
msgstr "Cinese semplificato"
|
||||
|
||||
|
||||
@@ -2,8 +2,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: paperless-ngx\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2024-07-09 11:27-0700\n"
|
||||
"PO-Revision-Date: 2024-07-09 18:28\n"
|
||||
"POT-Creation-Date: 2024-08-28 17:12-0700\n"
|
||||
"PO-Revision-Date: 2024-08-30 12:10\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Japanese\n"
|
||||
"Language: ja_JP\n"
|
||||
@@ -257,59 +257,59 @@ msgstr "ログ"
|
||||
|
||||
#: documents/models.py:401
|
||||
msgid "Table"
|
||||
msgstr ""
|
||||
msgstr "テーブル"
|
||||
|
||||
#: documents/models.py:402
|
||||
msgid "Small Cards"
|
||||
msgstr ""
|
||||
msgstr "小カード"
|
||||
|
||||
#: documents/models.py:403
|
||||
msgid "Large Cards"
|
||||
msgstr ""
|
||||
msgstr "大カード"
|
||||
|
||||
#: documents/models.py:406
|
||||
msgid "Title"
|
||||
msgstr ""
|
||||
msgstr "タイトル"
|
||||
|
||||
#: documents/models.py:407
|
||||
msgid "Created"
|
||||
msgstr ""
|
||||
msgstr "作成済み"
|
||||
|
||||
#: documents/models.py:408
|
||||
msgid "Added"
|
||||
msgstr ""
|
||||
msgstr "追加済"
|
||||
|
||||
#: documents/models.py:409
|
||||
msgid "Tags"
|
||||
msgstr ""
|
||||
msgstr "タグ"
|
||||
|
||||
#: documents/models.py:410
|
||||
msgid "Correspondent"
|
||||
msgstr ""
|
||||
msgstr "担当"
|
||||
|
||||
#: documents/models.py:411
|
||||
msgid "Document Type"
|
||||
msgstr ""
|
||||
msgstr "ドキュメントタイプ"
|
||||
|
||||
#: documents/models.py:412
|
||||
msgid "Storage Path"
|
||||
msgstr ""
|
||||
msgstr "ストレージパス"
|
||||
|
||||
#: documents/models.py:413
|
||||
msgid "Note"
|
||||
msgstr ""
|
||||
msgstr "メモ"
|
||||
|
||||
#: documents/models.py:414
|
||||
msgid "Owner"
|
||||
msgstr ""
|
||||
msgstr "所有者"
|
||||
|
||||
#: documents/models.py:415
|
||||
msgid "Shared"
|
||||
msgstr ""
|
||||
msgstr "共有済み"
|
||||
|
||||
#: documents/models.py:416
|
||||
msgid "ASN"
|
||||
msgstr ""
|
||||
msgstr "ASN"
|
||||
|
||||
#: documents/models.py:422
|
||||
msgid "show on dashboard"
|
||||
@@ -329,15 +329,15 @@ msgstr "項目を逆順で並べ替え"
|
||||
|
||||
#: documents/models.py:437
|
||||
msgid "View page size"
|
||||
msgstr ""
|
||||
msgstr "ページサイズの表示"
|
||||
|
||||
#: documents/models.py:445
|
||||
msgid "View display mode"
|
||||
msgstr ""
|
||||
msgstr "表示モード"
|
||||
|
||||
#: documents/models.py:452
|
||||
msgid "Document display fields"
|
||||
msgstr ""
|
||||
msgstr "ドキュメントの表示フィールド"
|
||||
|
||||
#: documents/models.py:459 documents/models.py:516
|
||||
msgid "saved view"
|
||||
@@ -501,19 +501,19 @@ msgstr "自分が共有した"
|
||||
|
||||
#: documents/models.py:506
|
||||
msgid "has custom fields"
|
||||
msgstr ""
|
||||
msgstr "カスタムフィールド"
|
||||
|
||||
#: documents/models.py:507
|
||||
msgid "has custom field in"
|
||||
msgstr ""
|
||||
msgstr "カスタムフィールドがあります"
|
||||
|
||||
#: documents/models.py:508
|
||||
msgid "does not have custom field in"
|
||||
msgstr ""
|
||||
msgstr "カスタムフィールドがありません"
|
||||
|
||||
#: documents/models.py:509
|
||||
msgid "does not have custom field"
|
||||
msgstr ""
|
||||
msgstr "カスタムフィールドがありません"
|
||||
|
||||
#: documents/models.py:519
|
||||
msgid "rule type"
|
||||
@@ -677,7 +677,7 @@ msgstr "ドキュメントリンク"
|
||||
|
||||
#: documents/models.py:812
|
||||
msgid "Select"
|
||||
msgstr ""
|
||||
msgstr "選択"
|
||||
|
||||
#: documents/models.py:824
|
||||
msgid "data type"
|
||||
@@ -685,11 +685,11 @@ msgstr "データの種類"
|
||||
|
||||
#: documents/models.py:831
|
||||
msgid "extra data"
|
||||
msgstr ""
|
||||
msgstr "追加データ"
|
||||
|
||||
#: documents/models.py:835
|
||||
msgid "Extra data for the custom field, such as select options"
|
||||
msgstr ""
|
||||
msgstr "カスタムフィールドの追加データ(選択オプションなど)"
|
||||
|
||||
#: documents/models.py:841
|
||||
msgid "custom field"
|
||||
@@ -927,21 +927,21 @@ msgstr "アクション"
|
||||
msgid "enabled"
|
||||
msgstr "有効"
|
||||
|
||||
#: documents/serialisers.py:119
|
||||
#: documents/serialisers.py:120
|
||||
#, python-format
|
||||
msgid "Invalid regular expression: %(error)s"
|
||||
msgstr "不正な正規表現: %(error)s"
|
||||
|
||||
#: documents/serialisers.py:435
|
||||
#: documents/serialisers.py:467
|
||||
msgid "Invalid color."
|
||||
msgstr "無効な色"
|
||||
|
||||
#: documents/serialisers.py:1314
|
||||
#: documents/serialisers.py:1397
|
||||
#, python-format
|
||||
msgid "File type %(type)s not supported"
|
||||
msgstr "ファイルタイプ %(type)s はサポートされていません"
|
||||
|
||||
#: documents/serialisers.py:1423
|
||||
#: documents/serialisers.py:1506
|
||||
msgid "Invalid variable detected."
|
||||
msgstr "無効な変数を検出しました"
|
||||
|
||||
@@ -1370,62 +1370,66 @@ msgid "Japanese"
|
||||
msgstr "日本語"
|
||||
|
||||
#: paperless/settings.py:699
|
||||
msgid "Korean"
|
||||
msgstr "韓国語"
|
||||
|
||||
#: paperless/settings.py:700
|
||||
msgid "Luxembourgish"
|
||||
msgstr "ルクセンブルク語"
|
||||
|
||||
#: paperless/settings.py:700
|
||||
#: paperless/settings.py:701
|
||||
msgid "Norwegian"
|
||||
msgstr "ノルウェー語"
|
||||
|
||||
#: paperless/settings.py:701
|
||||
#: paperless/settings.py:702
|
||||
msgid "Dutch"
|
||||
msgstr "オランダ語"
|
||||
|
||||
#: paperless/settings.py:702
|
||||
#: paperless/settings.py:703
|
||||
msgid "Polish"
|
||||
msgstr "ポーランド語"
|
||||
|
||||
#: paperless/settings.py:703
|
||||
#: paperless/settings.py:704
|
||||
msgid "Portuguese (Brazil)"
|
||||
msgstr "ポルトガル語 (ブラジル)"
|
||||
|
||||
#: paperless/settings.py:704
|
||||
#: paperless/settings.py:705
|
||||
msgid "Portuguese"
|
||||
msgstr "ポルトガル語"
|
||||
|
||||
#: paperless/settings.py:705
|
||||
#: paperless/settings.py:706
|
||||
msgid "Romanian"
|
||||
msgstr "ルーマニア語"
|
||||
|
||||
#: paperless/settings.py:706
|
||||
#: paperless/settings.py:707
|
||||
msgid "Russian"
|
||||
msgstr "ロシア語"
|
||||
|
||||
#: paperless/settings.py:707
|
||||
#: paperless/settings.py:708
|
||||
msgid "Slovak"
|
||||
msgstr "スロバキア語"
|
||||
|
||||
#: paperless/settings.py:708
|
||||
#: paperless/settings.py:709
|
||||
msgid "Slovenian"
|
||||
msgstr "スロベニア語"
|
||||
|
||||
#: paperless/settings.py:709
|
||||
#: paperless/settings.py:710
|
||||
msgid "Serbian"
|
||||
msgstr "セルビア語"
|
||||
|
||||
#: paperless/settings.py:710
|
||||
#: paperless/settings.py:711
|
||||
msgid "Swedish"
|
||||
msgstr "スウェーデン語"
|
||||
|
||||
#: paperless/settings.py:711
|
||||
#: paperless/settings.py:712
|
||||
msgid "Turkish"
|
||||
msgstr "トルコ語"
|
||||
|
||||
#: paperless/settings.py:712
|
||||
#: paperless/settings.py:713
|
||||
msgid "Ukrainian"
|
||||
msgstr "ウクライナ語"
|
||||
|
||||
#: paperless/settings.py:713
|
||||
#: paperless/settings.py:714
|
||||
msgid "Chinese Simplified"
|
||||
msgstr "中国語 (簡体字)"
|
||||
|
||||
|
||||
Loaded 100 of 130 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user