mirror of
				https://github.com/paperless-ngx/paperless-ngx.git
				synced 2025-11-02 18:47:10 -05:00 
			
		
		
		
	Merge branch 'dev' into fix/issue-603
This commit is contained in:
		
						commit
						fe3c3b8946
					
				
							
								
								
									
										1
									
								
								.github/workflows/ansible.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.github/workflows/ansible.yml
									
									
									
									
										vendored
									
									
								
							@ -47,7 +47,6 @@ jobs:
 | 
			
		||||
          molecule converge
 | 
			
		||||
          molecule idempotence
 | 
			
		||||
          molecule verify
 | 
			
		||||
          molecule destroy
 | 
			
		||||
        working-directory: "${{ github.repository }}"
 | 
			
		||||
  # # https://galaxy.ansible.com/docs/contributing/importing.html
 | 
			
		||||
  # release:
 | 
			
		||||
 | 
			
		||||
@ -18,8 +18,9 @@ paperlessng_directory: /opt/paperless-ng
 | 
			
		||||
paperlessng_consumption_dir: "{{ paperlessng_directory }}/consumption"
 | 
			
		||||
paperlessng_data_dir: "{{ paperlessng_directory }}/data"
 | 
			
		||||
paperlessng_media_root: "{{ paperlessng_directory }}/media"
 | 
			
		||||
paperlessng_static_dir: "{{ paperlessng_directory }}/static"
 | 
			
		||||
paperlessng_staticdir: "{{ paperlessng_directory }}/static"
 | 
			
		||||
paperlessng_filename_format:
 | 
			
		||||
paperlessng_logging_dir: "{{ paperlessng_data_dir }}/log"
 | 
			
		||||
paperlessng_virtualenv: "{{ paperlessng_directory }}/.venv"
 | 
			
		||||
 | 
			
		||||
# Hosting & Security
 | 
			
		||||
@ -36,12 +37,15 @@ paperlessng_enable_http_remote_user: False
 | 
			
		||||
paperlessng_ocr_languages:
 | 
			
		||||
  - eng
 | 
			
		||||
paperlessng_ocr_mode: skip
 | 
			
		||||
paperlessng_ocr_clean: clean
 | 
			
		||||
paperlessng_ocr_deskew: True
 | 
			
		||||
paperlessng_ocr_rotate_pages: True
 | 
			
		||||
paperlessng_ocr_rotate_pages_threshold: 12
 | 
			
		||||
paperlessng_ocr_output_type: pdfa
 | 
			
		||||
paperlessng_ocr_pages: 0
 | 
			
		||||
paperlessng_ocr_image_dpi:
 | 
			
		||||
# see https://ocrmypdf.readthedocs.io/en/latest/api.html#ocrmypdf.ocr
 | 
			
		||||
paperlessng_ocr_user_args:
 | 
			
		||||
  #- "deskew": True  # https://github.com/jonaswinkler/paperless-ng/issues/231
 | 
			
		||||
  - "optimize": 1
 | 
			
		||||
paperlessng_use_jbig2enc: True
 | 
			
		||||
paperlessng_big2enc_lossy: False
 | 
			
		||||
@ -57,10 +61,11 @@ paperlessng_consumer_polling: 0
 | 
			
		||||
paperlessng_consumer_delete_duplicates: False
 | 
			
		||||
paperlessng_consumer_recursive: False
 | 
			
		||||
paperlessng_consumer_subdirs_as_tags: False
 | 
			
		||||
paperlessng_convert_memory_limit: 0
 | 
			
		||||
paperlessng_convert_tmpdir:
 | 
			
		||||
paperlessng_optimize_thumbnails: True
 | 
			
		||||
paperlessng_post_consume_script:
 | 
			
		||||
paperlessng_filename_date_order:
 | 
			
		||||
paperlessng_filename_parse_transforms:
 | 
			
		||||
paperlessng_thumbnail_font_name: /usr/share/fonts/liberation/LiberationSerif-Regular.ttf
 | 
			
		||||
paperlessng_ignore_dates: ""
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -2,9 +2,15 @@
 | 
			
		||||
- name: update previous release to newest release
 | 
			
		||||
  hosts: all
 | 
			
		||||
  tasks:
 | 
			
		||||
    - name: install git dependency
 | 
			
		||||
      apt:
 | 
			
		||||
        pkg: git
 | 
			
		||||
    - name: obtain latest git hash in current tree
 | 
			
		||||
      command: git rev-parse HEAD
 | 
			
		||||
      register: git_hash
 | 
			
		||||
    - name: set current github commit as version when available
 | 
			
		||||
      set_fact:
 | 
			
		||||
        paperlessng_version: "{{ lookup('env', 'GITHUB_SHA') | default('master', True) }}"
 | 
			
		||||
        paperlessng_version: "{{ git_hash.stdout }}"
 | 
			
		||||
    - name: update to newest paperless-ng release
 | 
			
		||||
      include_role:
 | 
			
		||||
        name: ansible
 | 
			
		||||
 | 
			
		||||
@ -43,7 +43,7 @@
 | 
			
		||||
 | 
			
		||||
- name: install ocr languages
 | 
			
		||||
  apt:
 | 
			
		||||
    pkg: "{{ paperlessng_ocr_languages | map('regex_replace', '^(.*)$', 'tesseract-ocr-\\1') | list }}"
 | 
			
		||||
    pkg: "{{ paperlessng_ocr_languages | map('regex_replace', '^(.*)$', 'tesseract-ocr-\\1') | map('replace', '_', '-') | list }}"
 | 
			
		||||
 | 
			
		||||
- name: set up notesalexp repository key (for jbig2enc)
 | 
			
		||||
  apt_key:
 | 
			
		||||
@ -256,7 +256,7 @@
 | 
			
		||||
    - "{{ paperlessng_consumption_dir }}"
 | 
			
		||||
    - "{{ paperlessng_data_dir }}"
 | 
			
		||||
    - "{{ paperlessng_media_root }}"
 | 
			
		||||
    - "{{ paperlessng_static_dir }}"
 | 
			
		||||
    - "{{ paperlessng_staticdir }}"
 | 
			
		||||
 | 
			
		||||
- name: rename initial config
 | 
			
		||||
  command:
 | 
			
		||||
@ -280,9 +280,11 @@
 | 
			
		||||
    - regexp: PAPERLESS_MEDIA_ROOT
 | 
			
		||||
      line: "PAPERLESS_MEDIA_ROOT={{ paperlessng_media_root }}"
 | 
			
		||||
    - regexp: PAPERLESS_STATICDIR
 | 
			
		||||
      line: "PAPERLESS_STATICDIR={{ paperlessng_static_dir }}"
 | 
			
		||||
      line: "PAPERLESS_STATICDIR={{ paperlessng_staticdir }}"
 | 
			
		||||
    - regexp: PAPERLESS_FILENAME_FORMAT
 | 
			
		||||
      line: "PAPERLESS_FILENAME_FORMAT={{ paperlessng_filename_format }}"
 | 
			
		||||
    - regexp: PAPERLESS_LOGGING_DIR
 | 
			
		||||
      line: "PAPERLESS_LOGGING_DIR={{ paperlessng_logging_dir }}"
 | 
			
		||||
    # Hosting & Security
 | 
			
		||||
    - regexp: PAPERLESS_SECRET_KEY
 | 
			
		||||
      line: "PAPERLESS_SECRET_KEY={{ paperlessng_secret_key }}"
 | 
			
		||||
@ -302,9 +304,17 @@
 | 
			
		||||
      line: "PAPERLESS_ENABLE_HTTP_REMOTE_USER={{ paperlessng_enable_http_remote_user }}"
 | 
			
		||||
    # OCR settings
 | 
			
		||||
    - regexp: PAPERLESS_OCR_LANGUAGE
 | 
			
		||||
      line: "PAPERLESS_OCR_LANGUAGE={{ paperlessng_ocr_languages | join('+') }}"
 | 
			
		||||
      line: "PAPERLESS_OCR_LANGUAGE={{ paperlessng_ocr_languages | join('+') | replace('-','_') }}"
 | 
			
		||||
    - regexp: PAPERLESS_OCR_MODE
 | 
			
		||||
      line: "PAPERLESS_OCR_MODE={{ paperlessng_ocr_mode }}"
 | 
			
		||||
    - regexp: PAPERLESS_OCR_CLEAN
 | 
			
		||||
      line: "PAPERLESS_OCR_CLEAN={{ paperlessng_ocr_clean }}"
 | 
			
		||||
    - regexp: PAPERLESS_OCR_DESKEW
 | 
			
		||||
      line: "PAPERLESS_OCR_DESKEW={{ paperlessng_ocr_deskew }}"
 | 
			
		||||
    - regexp: PAPERLESS_OCR_ROTATE_PAGES
 | 
			
		||||
      line: "PAPERLESS_OCR_ROTATE_PAGES={{ paperlessng_ocr_rotate_pages }}"
 | 
			
		||||
    - regexp: PAPERLESS_OCR_ROTATE_PAGES_THRESHOLD
 | 
			
		||||
      line: "PAPERLESS_OCR_ROTATE_PAGES_THRESHOLD={{ paperlessng_ocr_rotate_pages_threshold }}"
 | 
			
		||||
    - regexp: PAPERLESS_OCR_OUTPUT_TYPE
 | 
			
		||||
      line: "PAPERLESS_OCR_OUTPUT_TYPE={{ paperlessng_ocr_output_type }}"
 | 
			
		||||
    - regexp: PAPERLESS_OCR_PAGES
 | 
			
		||||
@ -331,6 +341,10 @@
 | 
			
		||||
      line: "PAPERLESS_CONSUMER_RECURSIVE={{ paperlessng_consumer_recursive }}"
 | 
			
		||||
    - regexp: PAPERLESS_CONSUMER_SUBDIRS_AS_TAGS
 | 
			
		||||
      line: "PAPERLESS_CONSUMER_SUBDIRS_AS_TAGS={{ paperlessng_consumer_subdirs_as_tags }}"
 | 
			
		||||
    - regexp: PAPERLESS_CONVERT_MEMORY_LIMIT
 | 
			
		||||
      line: "PAPERLESS_CONVERT_MEMORY_LIMIT={{ paperlessng_convert_memory_limit }}"
 | 
			
		||||
    - regexp: PAPERLESS_CONVERT_TMPDIR
 | 
			
		||||
      line: "PAPERLESS_CONVERT_TMPDIR={{ paperlessng_convert_tmpdir }}"
 | 
			
		||||
    - regexp: PAPERLESS_OPTIMIZE_THUMBNAILS
 | 
			
		||||
      line: "PAPERLESS_OPTIMIZE_THUMBNAILS={{ paperlessng_optimize_thumbnails }}"
 | 
			
		||||
    - regexp: PAPERLESS_POST_CONSUME_SCRIPT
 | 
			
		||||
 | 
			
		||||
@ -5,29 +5,82 @@ Paperless development
 | 
			
		||||
 | 
			
		||||
This section describes the steps you need to take to start development on paperless-ng.
 | 
			
		||||
 | 
			
		||||
1.  Check out the source from github. The repository is organized in the following way:
 | 
			
		||||
Check out the source from github. The repository is organized in the following way:
 | 
			
		||||
 | 
			
		||||
    *   ``master`` always represents the latest release and will only see changes
 | 
			
		||||
*   ``master`` always represents the latest release and will only see changes
 | 
			
		||||
    when a new release is made.
 | 
			
		||||
    *   ``dev`` contains the code that will be in the next release.
 | 
			
		||||
    *   ``feature-X`` contain bigger changes that will be in some release, but not
 | 
			
		||||
*   ``dev`` contains the code that will be in the next release.
 | 
			
		||||
*   ``feature-X`` contain bigger changes that will be in some release, but not
 | 
			
		||||
    necessarily the next one.
 | 
			
		||||
 | 
			
		||||
    Apart from that, the folder structure is as follows:
 | 
			
		||||
When making functional changes to paperless, *always* make your changes on the ``dev`` branch.
 | 
			
		||||
 | 
			
		||||
    *   ``docs/`` - Documentation.
 | 
			
		||||
    *   ``src-ui/`` - Code of the front end.
 | 
			
		||||
    *   ``src/`` - Code of the back end.
 | 
			
		||||
    *   ``scripts/`` - Various scripts that help with different parts of development.
 | 
			
		||||
    *   ``docker/`` - Files required to build the docker image.
 | 
			
		||||
Apart from that, the folder structure is as follows:
 | 
			
		||||
 | 
			
		||||
2.  Install some dependencies.
 | 
			
		||||
*   ``docs/`` - Documentation.
 | 
			
		||||
*   ``src-ui/`` - Code of the front end.
 | 
			
		||||
*   ``src/`` - Code of the back end.
 | 
			
		||||
*   ``scripts/`` - Various scripts that help with different parts of development.
 | 
			
		||||
*   ``docker/`` - Files required to build the docker image.
 | 
			
		||||
 | 
			
		||||
    *   Python 3.6.
 | 
			
		||||
    *   All dependencies listed in the :ref:`Bare metal route <setup-bare_metal>`
 | 
			
		||||
    *   redis. You can either install redis or use the included scritps/start-services.sh
 | 
			
		||||
        to use docker to fire up a redis instance (and some other services such as tika,
 | 
			
		||||
        gotenberg and a postgresql server).
 | 
			
		||||
Initial setup and first start 
 | 
			
		||||
=============================
 | 
			
		||||
 | 
			
		||||
After you forked and cloned the code from github you need to perform a first-time setup. 
 | 
			
		||||
To do the setup you need to perform the steps from the following chapters in a certain order:
 | 
			
		||||
 | 
			
		||||
1.  Install prerequisites + pipenv as mentioned in :ref:`Bare metal route <setup-bare_metal>`
 | 
			
		||||
2.  Copy ``paperless.conf.example`` to ``paperless.conf`` and enable debug mode.
 | 
			
		||||
3.  Install the Angular CLI interface:
 | 
			
		||||
 | 
			
		||||
    .. code:: shell-session
 | 
			
		||||
 | 
			
		||||
        $ npm install -g @angular/cli 
 | 
			
		||||
 | 
			
		||||
4.  Create ``consume`` and ``media`` folders in the cloned root folder.
 | 
			
		||||
   
 | 
			
		||||
    .. code:: shell-session
 | 
			
		||||
 | 
			
		||||
        mkdir -p consume media
 | 
			
		||||
 | 
			
		||||
5.  You can now either ...
 | 
			
		||||
 | 
			
		||||
    *  install redis or 
 | 
			
		||||
    *  use the included scripts/start-services.sh to use docker to fire up a redis instance (and some other services such as tika, gotenberg and a postgresql server) or
 | 
			
		||||
    *  spin up a bare redis container 
 | 
			
		||||
 | 
			
		||||
        .. code:: shell-session
 | 
			
		||||
 | 
			
		||||
            docker run -d -p 6379:6379 -restart unless-stopped redis:latest
 | 
			
		||||
 | 
			
		||||
6.  Install the python dependencies by performing in the src/ directory.
 | 
			
		||||
 | 
			
		||||
    .. code:: shell-session
 | 
			
		||||
 | 
			
		||||
        pipenv install --dev
 | 
			
		||||
 | 
			
		||||
7.  Generate the static UI so you can perform a login to get session that is required for frontend development (this needs to be done one time only). From root folder:
 | 
			
		||||
 | 
			
		||||
    .. code:: shell-session
 | 
			
		||||
 | 
			
		||||
        compile-frontend.sh
 | 
			
		||||
 | 
			
		||||
8.  Apply migrations and create a superuser for your dev instance:
 | 
			
		||||
 | 
			
		||||
    .. code:: shell-session
 | 
			
		||||
 | 
			
		||||
        python3 manage.py migrate
 | 
			
		||||
        python3 manage.py createsuperuser
 | 
			
		||||
 | 
			
		||||
9.  Now spin up the dev backend. Depending on which part of paperless you're developing for, you need to have some or all of them running.
 | 
			
		||||
 | 
			
		||||
    .. code:: shell-session
 | 
			
		||||
 | 
			
		||||
        python3 manage.py runserver & python3 manage.py document_consumer & python3 manage.py qcluster
 | 
			
		||||
 | 
			
		||||
10. Login with the superuser credentials provided in step 8 at ``http://localhost:8000`` to create a session that enables you to use the backend.
 | 
			
		||||
 
 | 
			
		||||
Backend development environment is now ready, to start Frontend development go to ``/src-ui`` and run ``ng serve``. From there you can use ``http://localhost:4200`` for a preview.
 | 
			
		||||
 | 
			
		||||
Back end development
 | 
			
		||||
====================
 | 
			
		||||
@ -35,21 +88,18 @@ Back end development
 | 
			
		||||
The backend is a django application. I use PyCharm for development, but you can use whatever
 | 
			
		||||
you want.
 | 
			
		||||
 | 
			
		||||
Install the python dependencies by performing ``pipenv install --dev`` in the src/ directory.
 | 
			
		||||
This will also create a virtual environment, which you can enter with ``pipenv shell`` or
 | 
			
		||||
execute one-shot commands in with ``pipenv run``.
 | 
			
		||||
 | 
			
		||||
Copy ``paperless.conf.example`` to ``paperless.conf`` and enable debug mode.
 | 
			
		||||
 | 
			
		||||
Configure the IDE to use the src/ folder as the base source folder. Configure the following
 | 
			
		||||
launch configurations in your IDE:
 | 
			
		||||
 | 
			
		||||
*   python3 manage.py runserver
 | 
			
		||||
*   python3 manage.py qcluster
 | 
			
		||||
*   python3 manage.py consumer
 | 
			
		||||
*   python3 manage.py document_consumer
 | 
			
		||||
 | 
			
		||||
Depending on which part of paperless you're developing for, you need to have some or all of
 | 
			
		||||
them running.
 | 
			
		||||
To start them all:
 | 
			
		||||
 | 
			
		||||
.. code:: shell-session
 | 
			
		||||
 | 
			
		||||
    python3 manage.py runserver & python3 manage.py document_consumer & python3 manage.py qcluster
 | 
			
		||||
 | 
			
		||||
Testing and code style:
 | 
			
		||||
 | 
			
		||||
@ -62,7 +112,7 @@ Testing and code style:
 | 
			
		||||
 | 
			
		||||
        The line length rule E501 is generally useful for getting multiple source files
 | 
			
		||||
        next to each other on the screen. However, in some cases, its just not possible
 | 
			
		||||
        to make some lines fit, especially complicated IF cases. Append ``  # NOQA: E501``
 | 
			
		||||
        to make some lines fit, especially complicated IF cases. Append ``# NOQA: E501``
 | 
			
		||||
        to disable this check for certain lines.
 | 
			
		||||
 | 
			
		||||
Front end development
 | 
			
		||||
@ -109,6 +159,92 @@ This will build the front end and put it in a location from which the Django ser
 | 
			
		||||
it as static content. This way, you can verify that authentication is working.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Localization
 | 
			
		||||
============
 | 
			
		||||
 | 
			
		||||
Paperless is available in many different languages. Since paperless consists both of a django
 | 
			
		||||
application and an Angular front end, both these parts have to be translated separately.
 | 
			
		||||
 | 
			
		||||
Front end localization
 | 
			
		||||
----------------------
 | 
			
		||||
 | 
			
		||||
*   The Angular front end does localization according to the `Angular documentation <https://angular.io/guide/i18n>`_.
 | 
			
		||||
*   The source language of the project is "en_US".
 | 
			
		||||
*   The source strings end up in the file "src-ui/messages.xlf".
 | 
			
		||||
*   The translated strings need to be placed in the "src-ui/src/locale/" folder.
 | 
			
		||||
*   In order to extract added or changed strings from the source files, call ``ng xi18n --ivy``.
 | 
			
		||||
 | 
			
		||||
Adding new languages requires adding the translated files in the "src-ui/src/locale/" fodler and adjusting a couple files.
 | 
			
		||||
 | 
			
		||||
1.  Adjust "src-ui/angular.json":
 | 
			
		||||
 | 
			
		||||
    .. code:: json
 | 
			
		||||
 | 
			
		||||
        "i18n": {
 | 
			
		||||
            "sourceLocale": "en-US",
 | 
			
		||||
            "locales": {
 | 
			
		||||
                "de": "src/locale/messages.de.xlf",
 | 
			
		||||
                "nl-NL": "src/locale/messages.nl_NL.xlf",
 | 
			
		||||
                "fr": "src/locale/messages.fr.xlf",
 | 
			
		||||
                "en-GB": "src/locale/messages.en_GB.xlf",
 | 
			
		||||
                "pt-BR": "src/locale/messages.pt_BR.xlf",
 | 
			
		||||
                "language-code": "language-file"
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
2.  Add the language to the available options in "src-ui/src/app/services/settings.service.ts":
 | 
			
		||||
 | 
			
		||||
    .. code:: typescript
 | 
			
		||||
 | 
			
		||||
        getLanguageOptions(): LanguageOption[] {
 | 
			
		||||
            return [
 | 
			
		||||
                {code: "en-us", name: $localize`English (US)`, englishName: "English (US)", dateInputFormat: "mm/dd/yyyy"},
 | 
			
		||||
                {code: "en-gb", name: $localize`English (GB)`, englishName: "English (GB)", dateInputFormat: "dd/mm/yyyy"},
 | 
			
		||||
                {code: "de", name: $localize`German`, englishName: "German", dateInputFormat: "dd.mm.yyyy"},
 | 
			
		||||
                {code: "nl", name: $localize`Dutch`, englishName: "Dutch", dateInputFormat: "dd-mm-yyyy"},
 | 
			
		||||
                {code: "fr", name: $localize`French`, englishName: "French", dateInputFormat: "dd/mm/yyyy"},
 | 
			
		||||
                {code: "pt-br", name: $localize`Portuguese (Brazil)`, englishName: "Portuguese (Brazil)", dateInputFormat: "dd/mm/yyyy"}
 | 
			
		||||
                // Add your new language here
 | 
			
		||||
            ]
 | 
			
		||||
        }
 | 
			
		||||
    
 | 
			
		||||
    ``dateInputFormat`` is a special string that defines the behavior of the date input fields and absolutely needs to contain "dd", "mm" and "yyyy".
 | 
			
		||||
 | 
			
		||||
3.  Import and register the Angular data for this locale in "src-ui/src/app/app.module.ts":
 | 
			
		||||
 | 
			
		||||
    .. code:: typescript
 | 
			
		||||
 | 
			
		||||
        import localeDe from '@angular/common/locales/de';
 | 
			
		||||
        registerLocaleData(localeDe)
 | 
			
		||||
 | 
			
		||||
Back end localization
 | 
			
		||||
---------------------
 | 
			
		||||
 | 
			
		||||
A majority of the strings that appear in the back end appear only when the admin is used. However,
 | 
			
		||||
some of these are still shown on the front end (such as error messages).
 | 
			
		||||
 | 
			
		||||
*   The django application does localization according to the `django documentation <https://docs.djangoproject.com/en/3.1/topics/i18n/translation/>`_.
 | 
			
		||||
*   The source language of the project is "en_US".
 | 
			
		||||
*   Localization files end up in the folder "src/locale/".
 | 
			
		||||
*   In order to extract strings from the application, call ``python3 manage.py makemessages -l en_US``. This is important after making changes to translatable strings.
 | 
			
		||||
*   The message files need to be compiled for them to show up in the application. Call ``python3 manage.py compilemessages`` to do this. The generated files don't get
 | 
			
		||||
    committed into git, since these are derived artifacts. The build pipeline takes care of executing this command.
 | 
			
		||||
 | 
			
		||||
Adding new languages requires adding the translated files in the "src/locale/" folder and adjusting the file "src/paperless/settings.py" to include the new language:
 | 
			
		||||
 | 
			
		||||
.. code:: python
 | 
			
		||||
 | 
			
		||||
    LANGUAGES = [
 | 
			
		||||
        ("en-us", _("English (US)")),
 | 
			
		||||
        ("en-gb", _("English (GB)")),
 | 
			
		||||
        ("de", _("German")),
 | 
			
		||||
        ("nl-nl", _("Dutch")),
 | 
			
		||||
        ("fr", _("French")),
 | 
			
		||||
        ("pt-br", _("Portuguese (Brazil)")),
 | 
			
		||||
        # Add language here.
 | 
			
		||||
    ]
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Building the documentation
 | 
			
		||||
==========================
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -284,6 +284,12 @@ writing. Windows is not and will never be supported.
 | 
			
		||||
    *   ``libmagic-dev`` for mime type detection
 | 
			
		||||
    *   ``mime-support`` for mime type detection
 | 
			
		||||
 | 
			
		||||
    Use this list for your preferred package management:
 | 
			
		||||
 | 
			
		||||
    .. code:: 
 | 
			
		||||
 | 
			
		||||
        python3 python3-pip python3-dev imagemagick fonts-liberation optipng gnupg libpq-dev libmagic-dev mime-support
 | 
			
		||||
 | 
			
		||||
    These dependencies are required for OCRmyPDF, which is used for text recognition.
 | 
			
		||||
 | 
			
		||||
    *   ``unpaper``
 | 
			
		||||
@ -297,6 +303,12 @@ writing. Windows is not and will never be supported.
 | 
			
		||||
    *   ``tesseract-ocr`` >= 4.0.0 for OCR
 | 
			
		||||
    *   ``tesseract-ocr`` language packs (``tesseract-ocr-eng``, ``tesseract-ocr-deu``, etc)
 | 
			
		||||
 | 
			
		||||
    Use this list for your preferred package management:
 | 
			
		||||
 | 
			
		||||
    .. code:: 
 | 
			
		||||
 | 
			
		||||
        unpaper ghostscript icc-profiles-free qpdf liblept5 libxml2 pngquant zlib1g tesseract-ocr
 | 
			
		||||
 | 
			
		||||
    On Raspberry Pi, these libraries are required as well:
 | 
			
		||||
 | 
			
		||||
    *   ``libatlas-base-dev``
 | 
			
		||||
 | 
			
		||||
@ -20,7 +20,8 @@
 | 
			
		||||
					"nl-NL": "src/locale/messages.nl_NL.xlf",
 | 
			
		||||
					"fr": "src/locale/messages.fr.xlf",
 | 
			
		||||
					"en-GB": "src/locale/messages.en_GB.xlf",
 | 
			
		||||
					"pt-BR": "src/locale/messages.pt_BR.xlf"
 | 
			
		||||
					"pt-BR": "src/locale/messages.pt_BR.xlf",
 | 
			
		||||
					"it": "src/locale/messages.it.xlf"
 | 
			
		||||
				}
 | 
			
		||||
			},
 | 
			
		||||
			"architect": {
 | 
			
		||||
 | 
			
		||||
@ -419,7 +419,7 @@
 | 
			
		||||
        <source>Do you really want to delete the tag "<x id="PH" equiv-text="object.name"/>"?</source>
 | 
			
		||||
        <context-group purpose="location">
 | 
			
		||||
          <context context-type="sourcefile">src/app/components/manage/tag-list/tag-list.component.ts</context>
 | 
			
		||||
          <context context-type="linenumber">30</context>
 | 
			
		||||
          <context context-type="linenumber">26</context>
 | 
			
		||||
        </context-group>
 | 
			
		||||
      </trans-unit>
 | 
			
		||||
      <trans-unit id="cafc87479686947e2590b9f588a88040aeaf660b" datatype="html">
 | 
			
		||||
@ -867,28 +867,28 @@
 | 
			
		||||
        <source>Create new tag</source>
 | 
			
		||||
        <context-group purpose="location">
 | 
			
		||||
          <context context-type="sourcefile">src/app/components/manage/tag-list/tag-edit-dialog/tag-edit-dialog.component.ts</context>
 | 
			
		||||
          <context context-type="linenumber">21</context>
 | 
			
		||||
          <context context-type="linenumber">22</context>
 | 
			
		||||
        </context-group>
 | 
			
		||||
      </trans-unit>
 | 
			
		||||
      <trans-unit id="5872175735754226507" datatype="html">
 | 
			
		||||
        <source>Edit tag</source>
 | 
			
		||||
        <context-group purpose="location">
 | 
			
		||||
          <context context-type="sourcefile">src/app/components/manage/tag-list/tag-edit-dialog/tag-edit-dialog.component.ts</context>
 | 
			
		||||
          <context context-type="linenumber">25</context>
 | 
			
		||||
          <context context-type="linenumber">26</context>
 | 
			
		||||
        </context-group>
 | 
			
		||||
      </trans-unit>
 | 
			
		||||
      <trans-unit id="f2a30b4e1a89a8a0db0bd147b54d6626b9a9bc42" datatype="html">
 | 
			
		||||
        <source>Inbox tag</source>
 | 
			
		||||
        <context-group purpose="location">
 | 
			
		||||
          <context context-type="sourcefile">src/app/components/manage/tag-list/tag-edit-dialog/tag-edit-dialog.component.html</context>
 | 
			
		||||
          <context context-type="linenumber">21</context>
 | 
			
		||||
          <context context-type="linenumber">13</context>
 | 
			
		||||
        </context-group>
 | 
			
		||||
      </trans-unit>
 | 
			
		||||
      <trans-unit id="5e2f1a4ea12a1b8606ee3f0548d0ba64bf266077" datatype="html">
 | 
			
		||||
        <source>Inbox tags are automatically assigned to all consumed documents.</source>
 | 
			
		||||
        <context-group purpose="location">
 | 
			
		||||
          <context context-type="sourcefile">src/app/components/manage/tag-list/tag-edit-dialog/tag-edit-dialog.component.html</context>
 | 
			
		||||
          <context context-type="linenumber">21</context>
 | 
			
		||||
          <context context-type="linenumber">13</context>
 | 
			
		||||
        </context-group>
 | 
			
		||||
      </trans-unit>
 | 
			
		||||
      <trans-unit id="6672809941092516947" datatype="html">
 | 
			
		||||
@ -1128,28 +1128,28 @@
 | 
			
		||||
        <source>Last 7 days</source>
 | 
			
		||||
        <context-group purpose="location">
 | 
			
		||||
          <context context-type="sourcefile">src/app/components/common/date-dropdown/date-dropdown.component.ts</context>
 | 
			
		||||
          <context context-type="linenumber">24</context>
 | 
			
		||||
          <context context-type="linenumber">34</context>
 | 
			
		||||
        </context-group>
 | 
			
		||||
      </trans-unit>
 | 
			
		||||
      <trans-unit id="4463380307954693363" datatype="html">
 | 
			
		||||
        <source>Last month</source>
 | 
			
		||||
        <context-group purpose="location">
 | 
			
		||||
          <context context-type="sourcefile">src/app/components/common/date-dropdown/date-dropdown.component.ts</context>
 | 
			
		||||
          <context context-type="linenumber">25</context>
 | 
			
		||||
          <context context-type="linenumber">35</context>
 | 
			
		||||
        </context-group>
 | 
			
		||||
      </trans-unit>
 | 
			
		||||
      <trans-unit id="8697368973702409683" datatype="html">
 | 
			
		||||
        <source>Last 3 months</source>
 | 
			
		||||
        <context-group purpose="location">
 | 
			
		||||
          <context context-type="sourcefile">src/app/components/common/date-dropdown/date-dropdown.component.ts</context>
 | 
			
		||||
          <context context-type="linenumber">26</context>
 | 
			
		||||
          <context context-type="linenumber">36</context>
 | 
			
		||||
        </context-group>
 | 
			
		||||
      </trans-unit>
 | 
			
		||||
      <trans-unit id="3566342898065860218" datatype="html">
 | 
			
		||||
        <source>Last year</source>
 | 
			
		||||
        <context-group purpose="location">
 | 
			
		||||
          <context context-type="sourcefile">src/app/components/common/date-dropdown/date-dropdown.component.ts</context>
 | 
			
		||||
          <context context-type="linenumber">27</context>
 | 
			
		||||
          <context context-type="linenumber">37</context>
 | 
			
		||||
        </context-group>
 | 
			
		||||
      </trans-unit>
 | 
			
		||||
      <trans-unit id="be2add3a3d9e4e2556b8f9048a15a9c0f00bf1ad" datatype="html">
 | 
			
		||||
@ -1163,7 +1163,7 @@
 | 
			
		||||
        <source>Before</source>
 | 
			
		||||
        <context-group purpose="location">
 | 
			
		||||
          <context context-type="sourcefile">src/app/components/common/date-dropdown/date-dropdown.component.html</context>
 | 
			
		||||
          <context context-type="linenumber">29</context>
 | 
			
		||||
          <context context-type="linenumber">38</context>
 | 
			
		||||
        </context-group>
 | 
			
		||||
      </trans-unit>
 | 
			
		||||
      <trans-unit id="99ee4faa69cd2ea8e3678c1f557c0ff1f05aae46" datatype="html">
 | 
			
		||||
@ -1602,7 +1602,7 @@
 | 
			
		||||
        <source>Invalid date.</source>
 | 
			
		||||
        <context-group purpose="location">
 | 
			
		||||
          <context context-type="sourcefile">src/app/components/common/input/date/date.component.html</context>
 | 
			
		||||
          <context context-type="linenumber">13</context>
 | 
			
		||||
          <context context-type="linenumber">14</context>
 | 
			
		||||
        </context-group>
 | 
			
		||||
      </trans-unit>
 | 
			
		||||
      <trans-unit id="2807800733729323332" datatype="html">
 | 
			
		||||
@ -1668,11 +1668,18 @@
 | 
			
		||||
          <context context-type="linenumber">93</context>
 | 
			
		||||
        </context-group>
 | 
			
		||||
      </trans-unit>
 | 
			
		||||
      <trans-unit id="2935232983274991580" datatype="html">
 | 
			
		||||
        <source>Italian</source>
 | 
			
		||||
        <context-group purpose="location">
 | 
			
		||||
          <context context-type="sourcefile">src/app/services/settings.service.ts</context>
 | 
			
		||||
          <context context-type="linenumber">94</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">98</context>
 | 
			
		||||
          <context context-type="linenumber">99</context>
 | 
			
		||||
        </context-group>
 | 
			
		||||
      </trans-unit>
 | 
			
		||||
      <trans-unit id="2119857572761283468" datatype="html">
 | 
			
		||||
@ -1833,97 +1840,6 @@
 | 
			
		||||
          <context context-type="linenumber">23</context>
 | 
			
		||||
        </context-group>
 | 
			
		||||
      </trans-unit>
 | 
			
		||||
      <trans-unit id="2056433880533904076" datatype="html">
 | 
			
		||||
        <source>Light blue</source>
 | 
			
		||||
        <context-group purpose="location">
 | 
			
		||||
          <context context-type="sourcefile">src/app/data/paperless-tag.ts</context>
 | 
			
		||||
          <context context-type="linenumber">6</context>
 | 
			
		||||
        </context-group>
 | 
			
		||||
      </trans-unit>
 | 
			
		||||
      <trans-unit id="4082253113407591781" datatype="html">
 | 
			
		||||
        <source>Blue</source>
 | 
			
		||||
        <context-group purpose="location">
 | 
			
		||||
          <context context-type="sourcefile">src/app/data/paperless-tag.ts</context>
 | 
			
		||||
          <context context-type="linenumber">7</context>
 | 
			
		||||
        </context-group>
 | 
			
		||||
      </trans-unit>
 | 
			
		||||
      <trans-unit id="1143414876575720034" datatype="html">
 | 
			
		||||
        <source>Light green</source>
 | 
			
		||||
        <context-group purpose="location">
 | 
			
		||||
          <context context-type="sourcefile">src/app/data/paperless-tag.ts</context>
 | 
			
		||||
          <context context-type="linenumber">8</context>
 | 
			
		||||
        </context-group>
 | 
			
		||||
      </trans-unit>
 | 
			
		||||
      <trans-unit id="119581980963263815" datatype="html">
 | 
			
		||||
        <source>Green</source>
 | 
			
		||||
        <context-group purpose="location">
 | 
			
		||||
          <context context-type="sourcefile">src/app/data/paperless-tag.ts</context>
 | 
			
		||||
          <context context-type="linenumber">9</context>
 | 
			
		||||
        </context-group>
 | 
			
		||||
      </trans-unit>
 | 
			
		||||
      <trans-unit id="3250646524116252719" datatype="html">
 | 
			
		||||
        <source>Light red</source>
 | 
			
		||||
        <context-group purpose="location">
 | 
			
		||||
          <context context-type="sourcefile">src/app/data/paperless-tag.ts</context>
 | 
			
		||||
          <context context-type="linenumber">10</context>
 | 
			
		||||
        </context-group>
 | 
			
		||||
      </trans-unit>
 | 
			
		||||
      <trans-unit id="1628552745302385832" datatype="html">
 | 
			
		||||
        <source>Red </source>
 | 
			
		||||
        <context-group purpose="location">
 | 
			
		||||
          <context context-type="sourcefile">src/app/data/paperless-tag.ts</context>
 | 
			
		||||
          <context context-type="linenumber">11</context>
 | 
			
		||||
        </context-group>
 | 
			
		||||
      </trans-unit>
 | 
			
		||||
      <trans-unit id="5479028842846122610" datatype="html">
 | 
			
		||||
        <source>Light orange</source>
 | 
			
		||||
        <context-group purpose="location">
 | 
			
		||||
          <context context-type="sourcefile">src/app/data/paperless-tag.ts</context>
 | 
			
		||||
          <context context-type="linenumber">12</context>
 | 
			
		||||
        </context-group>
 | 
			
		||||
      </trans-unit>
 | 
			
		||||
      <trans-unit id="8598918991528773310" datatype="html">
 | 
			
		||||
        <source>Orange</source>
 | 
			
		||||
        <context-group purpose="location">
 | 
			
		||||
          <context context-type="sourcefile">src/app/data/paperless-tag.ts</context>
 | 
			
		||||
          <context context-type="linenumber">13</context>
 | 
			
		||||
        </context-group>
 | 
			
		||||
      </trans-unit>
 | 
			
		||||
      <trans-unit id="1789283185177957430" datatype="html">
 | 
			
		||||
        <source>Light violet</source>
 | 
			
		||||
        <context-group purpose="location">
 | 
			
		||||
          <context context-type="sourcefile">src/app/data/paperless-tag.ts</context>
 | 
			
		||||
          <context context-type="linenumber">14</context>
 | 
			
		||||
        </context-group>
 | 
			
		||||
      </trans-unit>
 | 
			
		||||
      <trans-unit id="2682868487071320453" datatype="html">
 | 
			
		||||
        <source>Violet</source>
 | 
			
		||||
        <context-group purpose="location">
 | 
			
		||||
          <context context-type="sourcefile">src/app/data/paperless-tag.ts</context>
 | 
			
		||||
          <context context-type="linenumber">15</context>
 | 
			
		||||
        </context-group>
 | 
			
		||||
      </trans-unit>
 | 
			
		||||
      <trans-unit id="1449010446077321264" datatype="html">
 | 
			
		||||
        <source>Brown</source>
 | 
			
		||||
        <context-group purpose="location">
 | 
			
		||||
          <context context-type="sourcefile">src/app/data/paperless-tag.ts</context>
 | 
			
		||||
          <context context-type="linenumber">16</context>
 | 
			
		||||
        </context-group>
 | 
			
		||||
      </trans-unit>
 | 
			
		||||
      <trans-unit id="30300572504753589" datatype="html">
 | 
			
		||||
        <source>Black</source>
 | 
			
		||||
        <context-group purpose="location">
 | 
			
		||||
          <context context-type="sourcefile">src/app/data/paperless-tag.ts</context>
 | 
			
		||||
          <context context-type="linenumber">17</context>
 | 
			
		||||
        </context-group>
 | 
			
		||||
      </trans-unit>
 | 
			
		||||
      <trans-unit id="461048771215121187" datatype="html">
 | 
			
		||||
        <source>Light grey</source>
 | 
			
		||||
        <context-group purpose="location">
 | 
			
		||||
          <context context-type="sourcefile">src/app/data/paperless-tag.ts</context>
 | 
			
		||||
          <context context-type="linenumber">18</context>
 | 
			
		||||
        </context-group>
 | 
			
		||||
      </trans-unit>
 | 
			
		||||
      <trans-unit id="4561076822163447092" datatype="html">
 | 
			
		||||
        <source>Create new item</source>
 | 
			
		||||
        <context-group purpose="location">
 | 
			
		||||
 | 
			
		||||
@ -70,12 +70,14 @@ import localeFr from '@angular/common/locales/fr';
 | 
			
		||||
import localeNl from '@angular/common/locales/nl';
 | 
			
		||||
import localeDe from '@angular/common/locales/de';
 | 
			
		||||
import localePt from '@angular/common/locales/pt';
 | 
			
		||||
import localeIt from '@angular/common/locales/it';
 | 
			
		||||
import localeEnGb from '@angular/common/locales/en-GB';
 | 
			
		||||
 | 
			
		||||
registerLocaleData(localeFr)
 | 
			
		||||
registerLocaleData(localeNl)
 | 
			
		||||
registerLocaleData(localeDe)
 | 
			
		||||
registerLocaleData(localePt, "pt-BR")
 | 
			
		||||
registerLocaleData(localeIt)
 | 
			
		||||
registerLocaleData(localeEnGb)
 | 
			
		||||
 | 
			
		||||
@NgModule({
 | 
			
		||||
 | 
			
		||||
@ -1,7 +1,7 @@
 | 
			
		||||
<div class="card mb-3 shadow-sm" [class.card-selected]="selected" [class.document-card]="selectable">
 | 
			
		||||
  <div class="row no-gutters">
 | 
			
		||||
    <div class="col-md-2 d-none d-lg-block doc-img-background rounded-left" [class.doc-img-background-selected]="selected" (click)="this.toggleSelected.emit($event)">
 | 
			
		||||
      <img [src]="getThumbUrl()" class="card-img doc-img border-right rounded-left">
 | 
			
		||||
      <img [src]="getThumbUrl()" class="card-img doc-img border-right rounded-left" [class.inverted]="getIsThumbInverted()">
 | 
			
		||||
 | 
			
		||||
      <div style="top: 0; left: 0" class="position-absolute border-right border-bottom bg-light p-1" [class.document-card-check]="!selected">
 | 
			
		||||
        <div class="custom-control custom-checkbox">
 | 
			
		||||
 | 
			
		||||
@ -2,6 +2,7 @@ import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';
 | 
			
		||||
import { DomSanitizer } from '@angular/platform-browser';
 | 
			
		||||
import { PaperlessDocument } from 'src/app/data/paperless-document';
 | 
			
		||||
import { DocumentService } from 'src/app/services/rest/document.service';
 | 
			
		||||
import { SettingsService, SETTINGS_KEYS } from 'src/app/services/settings.service';
 | 
			
		||||
 | 
			
		||||
@Component({
 | 
			
		||||
  selector: 'app-document-card-large',
 | 
			
		||||
@ -10,7 +11,7 @@ import { DocumentService } from 'src/app/services/rest/document.service';
 | 
			
		||||
})
 | 
			
		||||
export class DocumentCardLargeComponent implements OnInit {
 | 
			
		||||
 | 
			
		||||
  constructor(private documentService: DocumentService, private sanitizer: DomSanitizer) { }
 | 
			
		||||
  constructor(private documentService: DocumentService, private sanitizer: DomSanitizer, private settingsService: SettingsService) { }
 | 
			
		||||
 | 
			
		||||
  @Input()
 | 
			
		||||
  selected = false
 | 
			
		||||
@ -53,6 +54,10 @@ export class DocumentCardLargeComponent implements OnInit {
 | 
			
		||||
  ngOnInit(): void {
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  getIsThumbInverted() {
 | 
			
		||||
    return this.settingsService.get(SETTINGS_KEYS.DARK_MODE_THUMB_INVERTED)
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  getDetailsAsString() {
 | 
			
		||||
    if (typeof this.details === 'string') {
 | 
			
		||||
      return this.details.substring(0, 500)
 | 
			
		||||
 | 
			
		||||
@ -1,7 +1,7 @@
 | 
			
		||||
<div class="col p-2 h-100">
 | 
			
		||||
  <div class="card h-100 shadow-sm document-card" [class.card-selected]="selected">
 | 
			
		||||
    <div class="border-bottom doc-img-container" [class.doc-img-background-selected]="selected" (click)="this.toggleSelected.emit($event)">
 | 
			
		||||
      <img class="card-img doc-img rounded-top" [src]="getThumbUrl()">
 | 
			
		||||
      <img class="card-img doc-img rounded-top" [class.inverted]="getIsThumbInverted()" [src]="getThumbUrl()">
 | 
			
		||||
 | 
			
		||||
      <div class="border-right border-bottom bg-light p-1 rounded document-card-check">
 | 
			
		||||
        <div class="custom-control custom-checkbox">
 | 
			
		||||
 | 
			
		||||
@ -2,6 +2,7 @@ import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';
 | 
			
		||||
import { map } from 'rxjs/operators';
 | 
			
		||||
import { PaperlessDocument } from 'src/app/data/paperless-document';
 | 
			
		||||
import { DocumentService } from 'src/app/services/rest/document.service';
 | 
			
		||||
import { SettingsService, SETTINGS_KEYS } from 'src/app/services/settings.service';
 | 
			
		||||
 | 
			
		||||
@Component({
 | 
			
		||||
  selector: 'app-document-card-small',
 | 
			
		||||
@ -10,7 +11,7 @@ import { DocumentService } from 'src/app/services/rest/document.service';
 | 
			
		||||
})
 | 
			
		||||
export class DocumentCardSmallComponent implements OnInit {
 | 
			
		||||
 | 
			
		||||
  constructor(private documentService: DocumentService) { }
 | 
			
		||||
  constructor(private documentService: DocumentService, private settingsService: SettingsService) { }
 | 
			
		||||
 | 
			
		||||
  @Input()
 | 
			
		||||
  selected = false
 | 
			
		||||
@ -32,6 +33,10 @@ export class DocumentCardSmallComponent implements OnInit {
 | 
			
		||||
  ngOnInit(): void {
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  getIsThumbInverted() {
 | 
			
		||||
    return this.settingsService.get(SETTINGS_KEYS.DARK_MODE_THUMB_INVERTED)
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  getThumbUrl() {
 | 
			
		||||
    return this.documentService.getThumbUrl(this.document.id)
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
@ -96,6 +96,7 @@
 | 
			
		||||
          <div class="col">
 | 
			
		||||
            <app-input-check i18n-title title="Use system settings" formControlName="darkModeUseSystem"></app-input-check>
 | 
			
		||||
            <app-input-check [hidden]="settingsForm.value.darkModeUseSystem" i18n-title title="Enable dark mode" formControlName="darkModeEnabled"></app-input-check>
 | 
			
		||||
            <app-input-check i18n-title title="Invert Thumbnails in dark mode" formControlName="darkModeInvertThumbs"></app-input-check>
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -21,6 +21,7 @@ export class SettingsComponent implements OnInit {
 | 
			
		||||
    'documentListItemPerPage': new FormControl(this.settings.get(SETTINGS_KEYS.DOCUMENT_LIST_SIZE)),
 | 
			
		||||
    'darkModeUseSystem': new FormControl(this.settings.get(SETTINGS_KEYS.DARK_MODE_USE_SYSTEM)),
 | 
			
		||||
    'darkModeEnabled': new FormControl(this.settings.get(SETTINGS_KEYS.DARK_MODE_ENABLED)),
 | 
			
		||||
    'darkModeInvertThumbs': new FormControl(this.settings.get(SETTINGS_KEYS.DARK_MODE_THUMB_INVERTED)),
 | 
			
		||||
    'useNativePdfViewer': new FormControl(this.settings.get(SETTINGS_KEYS.USE_NATIVE_PDF_VIEWER)),
 | 
			
		||||
    'savedViews': this.savedViewGroup,
 | 
			
		||||
    'displayLanguage': new FormControl(this.settings.getLanguage()),
 | 
			
		||||
@ -74,6 +75,7 @@ export class SettingsComponent implements OnInit {
 | 
			
		||||
    this.settings.set(SETTINGS_KEYS.DOCUMENT_LIST_SIZE, this.settingsForm.value.documentListItemPerPage)
 | 
			
		||||
    this.settings.set(SETTINGS_KEYS.DARK_MODE_USE_SYSTEM, this.settingsForm.value.darkModeUseSystem)
 | 
			
		||||
    this.settings.set(SETTINGS_KEYS.DARK_MODE_ENABLED, (this.settingsForm.value.darkModeEnabled == true).toString())
 | 
			
		||||
    this.settings.set(SETTINGS_KEYS.DARK_MODE_THUMB_INVERTED, (this.settingsForm.value.darkModeInvertThumbs == true).toString())
 | 
			
		||||
    this.settings.set(SETTINGS_KEYS.USE_NATIVE_PDF_VIEWER, this.settingsForm.value.useNativePdfViewer)
 | 
			
		||||
    this.settings.set(SETTINGS_KEYS.DATE_LOCALE, this.settingsForm.value.dateLocale)
 | 
			
		||||
    this.settings.set(SETTINGS_KEYS.DATE_FORMAT, this.settingsForm.value.dateFormat)
 | 
			
		||||
 | 
			
		||||
@ -26,6 +26,7 @@ export const SETTINGS_KEYS = {
 | 
			
		||||
  DOCUMENT_LIST_SIZE: 'general-settings:documentListSize',
 | 
			
		||||
  DARK_MODE_USE_SYSTEM: 'general-settings:dark-mode:use-system',
 | 
			
		||||
  DARK_MODE_ENABLED: 'general-settings:dark-mode:enabled',
 | 
			
		||||
  DARK_MODE_THUMB_INVERTED: 'general-settings:dark-mode:thumb-inverted',
 | 
			
		||||
  USE_NATIVE_PDF_VIEWER: 'general-settings:document-details:native-pdf-viewer',
 | 
			
		||||
  DATE_LOCALE: 'general-settings:date-display:date-locale',
 | 
			
		||||
  DATE_FORMAT: 'general-settings:date-display:date-format',
 | 
			
		||||
@ -41,6 +42,7 @@ const SETTINGS: PaperlessSettings[] = [
 | 
			
		||||
  {key: SETTINGS_KEYS.DOCUMENT_LIST_SIZE, type: "number", default: 50},
 | 
			
		||||
  {key: SETTINGS_KEYS.DARK_MODE_USE_SYSTEM, type: "boolean", default: true},
 | 
			
		||||
  {key: SETTINGS_KEYS.DARK_MODE_ENABLED, type: "boolean", default: false},
 | 
			
		||||
  {key: SETTINGS_KEYS.DARK_MODE_THUMB_INVERTED, type: "boolean", default: true},
 | 
			
		||||
  {key: SETTINGS_KEYS.USE_NATIVE_PDF_VIEWER, type: "boolean", default: false},
 | 
			
		||||
  {key: SETTINGS_KEYS.DATE_LOCALE, type: "string", default: ""},
 | 
			
		||||
  {key: SETTINGS_KEYS.DATE_FORMAT, type: "string", default: "mediumDate"},
 | 
			
		||||
@ -90,7 +92,8 @@ export class SettingsService {
 | 
			
		||||
      {code: "de", name: $localize`German`, englishName: "German", dateInputFormat: "dd.mm.yyyy"},
 | 
			
		||||
      {code: "nl", name: $localize`Dutch`, englishName: "Dutch", dateInputFormat: "dd-mm-yyyy"},
 | 
			
		||||
      {code: "fr", name: $localize`French`, englishName: "French", dateInputFormat: "dd/mm/yyyy"},
 | 
			
		||||
      {code: "pt-br", name: $localize`Portuguese (Brazil)`, englishName: "Portuguese (Brazil)", dateInputFormat: "dd/mm/yyyy"}
 | 
			
		||||
      {code: "pt-br", name: $localize`Portuguese (Brazil)`, englishName: "Portuguese (Brazil)", dateInputFormat: "dd/mm/yyyy"},
 | 
			
		||||
      {code: "it", name: $localize`Italian`, englishName: "Italian", dateInputFormat: "dd/mm/yyyy"}
 | 
			
		||||
    ]
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -478,7 +478,7 @@
 | 
			
		||||
        <target>Möchten Sie das Tag "<x equiv-text="object.name" id="PH"/>" wirklich löschen?</target>
 | 
			
		||||
        <context-group purpose="location">
 | 
			
		||||
          <context context-type="sourcefile">src/app/components/manage/tag-list/tag-list.component.ts</context>
 | 
			
		||||
          <context context-type="linenumber">30</context>
 | 
			
		||||
          <context context-type="linenumber">26</context>
 | 
			
		||||
        </context-group>
 | 
			
		||||
      </trans-unit>
 | 
			
		||||
      <trans-unit datatype="html" id="cafc87479686947e2590b9f588a88040aeaf660b">
 | 
			
		||||
@ -990,7 +990,7 @@
 | 
			
		||||
        <target>Neues Tag erstellen</target>
 | 
			
		||||
        <context-group purpose="location">
 | 
			
		||||
          <context context-type="sourcefile">src/app/components/manage/tag-list/tag-edit-dialog/tag-edit-dialog.component.ts</context>
 | 
			
		||||
          <context context-type="linenumber">21</context>
 | 
			
		||||
          <context context-type="linenumber">22</context>
 | 
			
		||||
        </context-group>
 | 
			
		||||
      </trans-unit>
 | 
			
		||||
      <trans-unit datatype="html" id="5872175735754226507">
 | 
			
		||||
@ -998,7 +998,7 @@
 | 
			
		||||
        <target>Tag bearbeiten</target>
 | 
			
		||||
        <context-group purpose="location">
 | 
			
		||||
          <context context-type="sourcefile">src/app/components/manage/tag-list/tag-edit-dialog/tag-edit-dialog.component.ts</context>
 | 
			
		||||
          <context context-type="linenumber">25</context>
 | 
			
		||||
          <context context-type="linenumber">26</context>
 | 
			
		||||
        </context-group>
 | 
			
		||||
      </trans-unit>
 | 
			
		||||
      <trans-unit datatype="html" id="f2a30b4e1a89a8a0db0bd147b54d6626b9a9bc42">
 | 
			
		||||
@ -1006,7 +1006,7 @@
 | 
			
		||||
        <target>Posteingangs-Tag</target>
 | 
			
		||||
        <context-group purpose="location">
 | 
			
		||||
          <context context-type="sourcefile">src/app/components/manage/tag-list/tag-edit-dialog/tag-edit-dialog.component.html</context>
 | 
			
		||||
          <context context-type="linenumber">21</context>
 | 
			
		||||
          <context context-type="linenumber">13</context>
 | 
			
		||||
        </context-group>
 | 
			
		||||
      </trans-unit>
 | 
			
		||||
      <trans-unit datatype="html" id="5e2f1a4ea12a1b8606ee3f0548d0ba64bf266077">
 | 
			
		||||
@ -1014,7 +1014,7 @@
 | 
			
		||||
        <target>Ein Tag mit dieser Option wird automatisch allen neuen Dokumenten zugewiesen.</target>
 | 
			
		||||
        <context-group purpose="location">
 | 
			
		||||
          <context context-type="sourcefile">src/app/components/manage/tag-list/tag-edit-dialog/tag-edit-dialog.component.html</context>
 | 
			
		||||
          <context context-type="linenumber">21</context>
 | 
			
		||||
          <context context-type="linenumber">13</context>
 | 
			
		||||
        </context-group>
 | 
			
		||||
      </trans-unit>
 | 
			
		||||
      <trans-unit datatype="html" id="6672809941092516947">
 | 
			
		||||
@ -1288,7 +1288,7 @@
 | 
			
		||||
        <target>Letzte 7 Tage</target>
 | 
			
		||||
        <context-group purpose="location">
 | 
			
		||||
          <context context-type="sourcefile">src/app/components/common/date-dropdown/date-dropdown.component.ts</context>
 | 
			
		||||
          <context context-type="linenumber">24</context>
 | 
			
		||||
          <context context-type="linenumber">34</context>
 | 
			
		||||
        </context-group>
 | 
			
		||||
      </trans-unit>
 | 
			
		||||
      <trans-unit datatype="html" id="4463380307954693363">
 | 
			
		||||
@ -1296,7 +1296,7 @@
 | 
			
		||||
        <target>Letzten Monat</target>
 | 
			
		||||
        <context-group purpose="location">
 | 
			
		||||
          <context context-type="sourcefile">src/app/components/common/date-dropdown/date-dropdown.component.ts</context>
 | 
			
		||||
          <context context-type="linenumber">25</context>
 | 
			
		||||
          <context context-type="linenumber">35</context>
 | 
			
		||||
        </context-group>
 | 
			
		||||
      </trans-unit>
 | 
			
		||||
      <trans-unit datatype="html" id="8697368973702409683">
 | 
			
		||||
@ -1304,7 +1304,7 @@
 | 
			
		||||
        <target>Letzte 3 Monate</target>
 | 
			
		||||
        <context-group purpose="location">
 | 
			
		||||
          <context context-type="sourcefile">src/app/components/common/date-dropdown/date-dropdown.component.ts</context>
 | 
			
		||||
          <context context-type="linenumber">26</context>
 | 
			
		||||
          <context context-type="linenumber">36</context>
 | 
			
		||||
        </context-group>
 | 
			
		||||
      </trans-unit>
 | 
			
		||||
      <trans-unit datatype="html" id="3566342898065860218">
 | 
			
		||||
@ -1312,7 +1312,7 @@
 | 
			
		||||
        <target>Letztes Jahr</target>
 | 
			
		||||
        <context-group purpose="location">
 | 
			
		||||
          <context context-type="sourcefile">src/app/components/common/date-dropdown/date-dropdown.component.ts</context>
 | 
			
		||||
          <context context-type="linenumber">27</context>
 | 
			
		||||
          <context context-type="linenumber">37</context>
 | 
			
		||||
        </context-group>
 | 
			
		||||
      </trans-unit>
 | 
			
		||||
      <trans-unit datatype="html" id="be2add3a3d9e4e2556b8f9048a15a9c0f00bf1ad">
 | 
			
		||||
@ -1328,7 +1328,7 @@
 | 
			
		||||
        <target>Vor</target>
 | 
			
		||||
        <context-group purpose="location">
 | 
			
		||||
          <context context-type="sourcefile">src/app/components/common/date-dropdown/date-dropdown.component.html</context>
 | 
			
		||||
          <context context-type="linenumber">29</context>
 | 
			
		||||
          <context context-type="linenumber">38</context>
 | 
			
		||||
        </context-group>
 | 
			
		||||
      </trans-unit>
 | 
			
		||||
      <trans-unit datatype="html" id="99ee4faa69cd2ea8e3678c1f557c0ff1f05aae46">
 | 
			
		||||
@ -1829,7 +1829,7 @@
 | 
			
		||||
        <target>Ungültiges Datum.</target>
 | 
			
		||||
        <context-group purpose="location">
 | 
			
		||||
          <context context-type="sourcefile">src/app/components/common/input/date/date.component.html</context>
 | 
			
		||||
          <context context-type="linenumber">13</context>
 | 
			
		||||
          <context context-type="linenumber">14</context>
 | 
			
		||||
        </context-group>
 | 
			
		||||
      </trans-unit>
 | 
			
		||||
      <trans-unit datatype="html" id="2807800733729323332">
 | 
			
		||||
@ -1904,12 +1904,20 @@
 | 
			
		||||
          <context context-type="linenumber">93</context>
 | 
			
		||||
        </context-group>
 | 
			
		||||
      </trans-unit>
 | 
			
		||||
      <trans-unit datatype="html" id="2935232983274991580">
 | 
			
		||||
        <source>Italian</source>
 | 
			
		||||
        <target>Italienisch</target>
 | 
			
		||||
        <context-group purpose="location">
 | 
			
		||||
          <context context-type="sourcefile">src/app/services/settings.service.ts</context>
 | 
			
		||||
          <context context-type="linenumber">94</context>
 | 
			
		||||
        </context-group>
 | 
			
		||||
      </trans-unit>
 | 
			
		||||
      <trans-unit datatype="html" id="4912706592792948707">
 | 
			
		||||
        <source>ISO 8601</source>
 | 
			
		||||
        <target>ISO 8601</target>
 | 
			
		||||
        <context-group purpose="location">
 | 
			
		||||
          <context context-type="sourcefile">src/app/services/settings.service.ts</context>
 | 
			
		||||
          <context context-type="linenumber">98</context>
 | 
			
		||||
          <context context-type="linenumber">99</context>
 | 
			
		||||
        </context-group>
 | 
			
		||||
      </trans-unit>
 | 
			
		||||
      <trans-unit datatype="html" id="2119857572761283468">
 | 
			
		||||
@ -2092,110 +2100,6 @@
 | 
			
		||||
          <context context-type="linenumber">23</context>
 | 
			
		||||
        </context-group>
 | 
			
		||||
      </trans-unit>
 | 
			
		||||
      <trans-unit datatype="html" id="2056433880533904076">
 | 
			
		||||
        <source>Light blue</source>
 | 
			
		||||
        <target>Blau, hell</target>
 | 
			
		||||
        <context-group purpose="location">
 | 
			
		||||
          <context context-type="sourcefile">src/app/data/paperless-tag.ts</context>
 | 
			
		||||
          <context context-type="linenumber">6</context>
 | 
			
		||||
        </context-group>
 | 
			
		||||
      </trans-unit>
 | 
			
		||||
      <trans-unit datatype="html" id="4082253113407591781">
 | 
			
		||||
        <source>Blue</source>
 | 
			
		||||
        <target>Blau</target>
 | 
			
		||||
        <context-group purpose="location">
 | 
			
		||||
          <context context-type="sourcefile">src/app/data/paperless-tag.ts</context>
 | 
			
		||||
          <context context-type="linenumber">7</context>
 | 
			
		||||
        </context-group>
 | 
			
		||||
      </trans-unit>
 | 
			
		||||
      <trans-unit datatype="html" id="1143414876575720034">
 | 
			
		||||
        <source>Light green</source>
 | 
			
		||||
        <target>Grün, hell</target>
 | 
			
		||||
        <context-group purpose="location">
 | 
			
		||||
          <context context-type="sourcefile">src/app/data/paperless-tag.ts</context>
 | 
			
		||||
          <context context-type="linenumber">8</context>
 | 
			
		||||
        </context-group>
 | 
			
		||||
      </trans-unit>
 | 
			
		||||
      <trans-unit datatype="html" id="119581980963263815">
 | 
			
		||||
        <source>Green</source>
 | 
			
		||||
        <target>Grün</target>
 | 
			
		||||
        <context-group purpose="location">
 | 
			
		||||
          <context context-type="sourcefile">src/app/data/paperless-tag.ts</context>
 | 
			
		||||
          <context context-type="linenumber">9</context>
 | 
			
		||||
        </context-group>
 | 
			
		||||
      </trans-unit>
 | 
			
		||||
      <trans-unit datatype="html" id="3250646524116252719">
 | 
			
		||||
        <source>Light red</source>
 | 
			
		||||
        <target>Rot, hell</target>
 | 
			
		||||
        <context-group purpose="location">
 | 
			
		||||
          <context context-type="sourcefile">src/app/data/paperless-tag.ts</context>
 | 
			
		||||
          <context context-type="linenumber">10</context>
 | 
			
		||||
        </context-group>
 | 
			
		||||
      </trans-unit>
 | 
			
		||||
      <trans-unit datatype="html" id="1628552745302385832">
 | 
			
		||||
        <source>Red </source>
 | 
			
		||||
        <target>Rot</target>
 | 
			
		||||
        <context-group purpose="location">
 | 
			
		||||
          <context context-type="sourcefile">src/app/data/paperless-tag.ts</context>
 | 
			
		||||
          <context context-type="linenumber">11</context>
 | 
			
		||||
        </context-group>
 | 
			
		||||
      </trans-unit>
 | 
			
		||||
      <trans-unit datatype="html" id="5479028842846122610">
 | 
			
		||||
        <source>Light orange</source>
 | 
			
		||||
        <target>Orange, hell</target>
 | 
			
		||||
        <context-group purpose="location">
 | 
			
		||||
          <context context-type="sourcefile">src/app/data/paperless-tag.ts</context>
 | 
			
		||||
          <context context-type="linenumber">12</context>
 | 
			
		||||
        </context-group>
 | 
			
		||||
      </trans-unit>
 | 
			
		||||
      <trans-unit datatype="html" id="8598918991528773310">
 | 
			
		||||
        <source>Orange</source>
 | 
			
		||||
        <target>Orange</target>
 | 
			
		||||
        <context-group purpose="location">
 | 
			
		||||
          <context context-type="sourcefile">src/app/data/paperless-tag.ts</context>
 | 
			
		||||
          <context context-type="linenumber">13</context>
 | 
			
		||||
        </context-group>
 | 
			
		||||
      </trans-unit>
 | 
			
		||||
      <trans-unit datatype="html" id="1789283185177957430">
 | 
			
		||||
        <source>Light violet</source>
 | 
			
		||||
        <target>Violet, hell</target>
 | 
			
		||||
        <context-group purpose="location">
 | 
			
		||||
          <context context-type="sourcefile">src/app/data/paperless-tag.ts</context>
 | 
			
		||||
          <context context-type="linenumber">14</context>
 | 
			
		||||
        </context-group>
 | 
			
		||||
      </trans-unit>
 | 
			
		||||
      <trans-unit datatype="html" id="2682868487071320453">
 | 
			
		||||
        <source>Violet</source>
 | 
			
		||||
        <target>Violet</target>
 | 
			
		||||
        <context-group purpose="location">
 | 
			
		||||
          <context context-type="sourcefile">src/app/data/paperless-tag.ts</context>
 | 
			
		||||
          <context context-type="linenumber">15</context>
 | 
			
		||||
        </context-group>
 | 
			
		||||
      </trans-unit>
 | 
			
		||||
      <trans-unit datatype="html" id="1449010446077321264">
 | 
			
		||||
        <source>Brown</source>
 | 
			
		||||
        <target>Braun</target>
 | 
			
		||||
        <context-group purpose="location">
 | 
			
		||||
          <context context-type="sourcefile">src/app/data/paperless-tag.ts</context>
 | 
			
		||||
          <context context-type="linenumber">16</context>
 | 
			
		||||
        </context-group>
 | 
			
		||||
      </trans-unit>
 | 
			
		||||
      <trans-unit datatype="html" id="30300572504753589">
 | 
			
		||||
        <source>Black</source>
 | 
			
		||||
        <target>Schwarz</target>
 | 
			
		||||
        <context-group purpose="location">
 | 
			
		||||
          <context context-type="sourcefile">src/app/data/paperless-tag.ts</context>
 | 
			
		||||
          <context context-type="linenumber">17</context>
 | 
			
		||||
        </context-group>
 | 
			
		||||
      </trans-unit>
 | 
			
		||||
      <trans-unit datatype="html" id="461048771215121187">
 | 
			
		||||
        <source>Light grey</source>
 | 
			
		||||
        <target>Grau, hell</target>
 | 
			
		||||
        <context-group purpose="location">
 | 
			
		||||
          <context context-type="sourcefile">src/app/data/paperless-tag.ts</context>
 | 
			
		||||
          <context context-type="linenumber">18</context>
 | 
			
		||||
        </context-group>
 | 
			
		||||
      </trans-unit>
 | 
			
		||||
      <trans-unit datatype="html" id="4561076822163447092">
 | 
			
		||||
        <source>Create new item</source>
 | 
			
		||||
        <target>Neues Element erstellen</target>
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										2353
									
								
								src-ui/src/locale/messages.it.xlf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2353
									
								
								src-ui/src/locale/messages.it.xlf
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@ -143,15 +143,18 @@ $border-color-dark-mode: #47494f;
 | 
			
		||||
 | 
			
		||||
  .doc-img {
 | 
			
		||||
    mix-blend-mode: normal;
 | 
			
		||||
    filter: invert(95%) hue-rotate(180deg);
 | 
			
		||||
    border-radius: 0;
 | 
			
		||||
    border-color: $bg-dark-mode;
 | 
			
		||||
 | 
			
		||||
    filter: invert(10%);
 | 
			
		||||
    &.border-right {
 | 
			
		||||
      border-right: none !important;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  .doc-img.inverted {
 | 
			
		||||
    filter: invert(95%) hue-rotate(180deg);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  .card-selected .doc-img {
 | 
			
		||||
    mix-blend-mode: luminosity;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
@ -1356,3 +1356,16 @@ class TestApiAuth(APITestCase):
 | 
			
		||||
        self.assertEqual(self.client.get("/api/documents/bulk_edit/").status_code, 401)
 | 
			
		||||
        self.assertEqual(self.client.get("/api/documents/bulk_download/").status_code, 401)
 | 
			
		||||
        self.assertEqual(self.client.get("/api/documents/selection_data/").status_code, 401)
 | 
			
		||||
 | 
			
		||||
    def test_api_version_no_auth(self):
 | 
			
		||||
 | 
			
		||||
        response = self.client.get("/api/")
 | 
			
		||||
        self.assertNotIn("X-Api-Version", response)
 | 
			
		||||
        self.assertNotIn("X-Version", response)
 | 
			
		||||
 | 
			
		||||
    def test_api_version_with_auth(self):
 | 
			
		||||
        user = User.objects.create_superuser(username="test")
 | 
			
		||||
        self.client.force_login(user)
 | 
			
		||||
        response = self.client.get("/api/")
 | 
			
		||||
        self.assertIn("X-Api-Version", response)
 | 
			
		||||
        self.assertIn("X-Version", response)
 | 
			
		||||
 | 
			
		||||
@ -11,7 +11,7 @@ msgid ""
 | 
			
		||||
msgstr ""
 | 
			
		||||
"Project-Id-Version: PACKAGE VERSION\n"
 | 
			
		||||
"Report-Msgid-Bugs-To: \n"
 | 
			
		||||
"POT-Creation-Date: 2021-02-24 16:49+0100\n"
 | 
			
		||||
"POT-Creation-Date: 2021-02-26 12:56+0100\n"
 | 
			
		||||
"PO-Revision-Date: 2021-02-16 18:37+0000\n"
 | 
			
		||||
"Last-Translator: Jonas Winkler, 2021\n"
 | 
			
		||||
"Language-Team: German (https://www.transifex.com/paperless/teams/115905/de/)\n"
 | 
			
		||||
@ -49,7 +49,7 @@ msgstr "Ungenaues Wort"
 | 
			
		||||
msgid "Automatic"
 | 
			
		||||
msgstr "Automatisch"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:41 documents/models.py:364 paperless_mail/models.py:25
 | 
			
		||||
#: documents/models.py:41 documents/models.py:350 paperless_mail/models.py:25
 | 
			
		||||
#: paperless_mail/models.py:109
 | 
			
		||||
msgid "name"
 | 
			
		||||
msgstr "Name"
 | 
			
		||||
@ -66,7 +66,7 @@ msgstr "Zuweisungsalgorithmus"
 | 
			
		||||
msgid "is insensitive"
 | 
			
		||||
msgstr "Groß-/Kleinschreibung irrelevant"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:74 documents/models.py:134
 | 
			
		||||
#: documents/models.py:74 documents/models.py:120
 | 
			
		||||
msgid "correspondent"
 | 
			
		||||
msgstr "Korrespondent"
 | 
			
		||||
 | 
			
		||||
@ -74,15 +74,15 @@ msgstr "Korrespondent"
 | 
			
		||||
msgid "correspondents"
 | 
			
		||||
msgstr "Korrespondenten"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:97
 | 
			
		||||
#: documents/models.py:81
 | 
			
		||||
msgid "color"
 | 
			
		||||
msgstr "Farbe"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:101
 | 
			
		||||
#: documents/models.py:87
 | 
			
		||||
msgid "is inbox tag"
 | 
			
		||||
msgstr "Posteingangs-Tag"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:103
 | 
			
		||||
#: documents/models.py:89
 | 
			
		||||
msgid ""
 | 
			
		||||
"Marks this tag as an inbox tag: All newly consumed documents will be tagged "
 | 
			
		||||
"with inbox tags."
 | 
			
		||||
@ -90,39 +90,39 @@ msgstr ""
 | 
			
		||||
"Markiert das Tag als Posteingangs-Tag. Neue Dokumente werden immer mit "
 | 
			
		||||
"diesem Tag versehen."
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:108
 | 
			
		||||
#: documents/models.py:94
 | 
			
		||||
msgid "tag"
 | 
			
		||||
msgstr "Tag"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:109 documents/models.py:165
 | 
			
		||||
#: documents/models.py:95 documents/models.py:151
 | 
			
		||||
msgid "tags"
 | 
			
		||||
msgstr "Tags"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:115 documents/models.py:147
 | 
			
		||||
#: documents/models.py:101 documents/models.py:133
 | 
			
		||||
msgid "document type"
 | 
			
		||||
msgstr "Dokumenttyp"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:116
 | 
			
		||||
#: documents/models.py:102
 | 
			
		||||
msgid "document types"
 | 
			
		||||
msgstr "Dokumenttypen"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:124
 | 
			
		||||
#: documents/models.py:110
 | 
			
		||||
msgid "Unencrypted"
 | 
			
		||||
msgstr "Nicht verschlüsselt"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:125
 | 
			
		||||
#: documents/models.py:111
 | 
			
		||||
msgid "Encrypted with GNU Privacy Guard"
 | 
			
		||||
msgstr "Verschlüsselt mit GNU Privacy Guard"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:138
 | 
			
		||||
#: documents/models.py:124
 | 
			
		||||
msgid "title"
 | 
			
		||||
msgstr "Titel"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:151
 | 
			
		||||
#: documents/models.py:137
 | 
			
		||||
msgid "content"
 | 
			
		||||
msgstr "Inhalt"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:153
 | 
			
		||||
#: documents/models.py:139
 | 
			
		||||
msgid ""
 | 
			
		||||
"The raw, text-only data of the document. This field is primarily used for "
 | 
			
		||||
"searching."
 | 
			
		||||
@ -130,241 +130,245 @@ msgstr ""
 | 
			
		||||
"Der Inhalt des Dokuments in Textform. Dieses Feld wird primär für die Suche "
 | 
			
		||||
"verwendet."
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:158
 | 
			
		||||
#: documents/models.py:144
 | 
			
		||||
msgid "mime type"
 | 
			
		||||
msgstr "MIME-Typ"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:169
 | 
			
		||||
#: documents/models.py:155
 | 
			
		||||
msgid "checksum"
 | 
			
		||||
msgstr "Prüfsumme"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:173
 | 
			
		||||
#: documents/models.py:159
 | 
			
		||||
msgid "The checksum of the original document."
 | 
			
		||||
msgstr "Die Prüfsumme des originalen Dokuments."
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:177
 | 
			
		||||
#: documents/models.py:163
 | 
			
		||||
msgid "archive checksum"
 | 
			
		||||
msgstr "Archiv-Prüfsumme"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:182
 | 
			
		||||
#: documents/models.py:168
 | 
			
		||||
msgid "The checksum of the archived document."
 | 
			
		||||
msgstr "Die Prüfsumme des archivierten Dokuments."
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:186 documents/models.py:342
 | 
			
		||||
#: documents/models.py:172 documents/models.py:328
 | 
			
		||||
msgid "created"
 | 
			
		||||
msgstr "Ausgestellt"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:190
 | 
			
		||||
#: documents/models.py:176
 | 
			
		||||
msgid "modified"
 | 
			
		||||
msgstr "Geändert"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:194
 | 
			
		||||
#: documents/models.py:180
 | 
			
		||||
msgid "storage type"
 | 
			
		||||
msgstr "Speichertyp"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:202
 | 
			
		||||
#: documents/models.py:188
 | 
			
		||||
msgid "added"
 | 
			
		||||
msgstr "Hinzugefügt"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:206
 | 
			
		||||
#: documents/models.py:192
 | 
			
		||||
msgid "filename"
 | 
			
		||||
msgstr "Dateiname"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:212
 | 
			
		||||
#: documents/models.py:198
 | 
			
		||||
msgid "Current filename in storage"
 | 
			
		||||
msgstr "Aktueller Dateiname im Datenspeicher"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:216
 | 
			
		||||
#: documents/models.py:202
 | 
			
		||||
msgid "archive filename"
 | 
			
		||||
msgstr "Archiv-Dateiname"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:222
 | 
			
		||||
#: documents/models.py:208
 | 
			
		||||
msgid "Current archive filename in storage"
 | 
			
		||||
msgstr "Aktueller Dateiname im Archiv"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:226
 | 
			
		||||
#: documents/models.py:212
 | 
			
		||||
msgid "archive serial number"
 | 
			
		||||
msgstr "Archiv-Seriennummer"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:231
 | 
			
		||||
#: documents/models.py:217
 | 
			
		||||
msgid "The position of this document in your physical document archive."
 | 
			
		||||
msgstr "Die Position dieses Dokuments in Ihrem physischen Dokumentenarchiv."
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:237
 | 
			
		||||
#: documents/models.py:223
 | 
			
		||||
msgid "document"
 | 
			
		||||
msgstr "Dokument"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:238
 | 
			
		||||
#: documents/models.py:224
 | 
			
		||||
msgid "documents"
 | 
			
		||||
msgstr "Dokumente"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:325
 | 
			
		||||
#: documents/models.py:311
 | 
			
		||||
msgid "debug"
 | 
			
		||||
msgstr "Debug"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:326
 | 
			
		||||
#: documents/models.py:312
 | 
			
		||||
msgid "information"
 | 
			
		||||
msgstr "Information"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:327
 | 
			
		||||
#: documents/models.py:313
 | 
			
		||||
msgid "warning"
 | 
			
		||||
msgstr "Warnung"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:328
 | 
			
		||||
#: documents/models.py:314
 | 
			
		||||
msgid "error"
 | 
			
		||||
msgstr "Fehler"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:329
 | 
			
		||||
#: documents/models.py:315
 | 
			
		||||
msgid "critical"
 | 
			
		||||
msgstr "Kritisch"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:333
 | 
			
		||||
#: documents/models.py:319
 | 
			
		||||
msgid "group"
 | 
			
		||||
msgstr "Gruppe"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:336
 | 
			
		||||
#: documents/models.py:322
 | 
			
		||||
msgid "message"
 | 
			
		||||
msgstr "Nachricht"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:339
 | 
			
		||||
#: documents/models.py:325
 | 
			
		||||
msgid "level"
 | 
			
		||||
msgstr "Level"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:346
 | 
			
		||||
#: documents/models.py:332
 | 
			
		||||
msgid "log"
 | 
			
		||||
msgstr "Protokoll"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:347
 | 
			
		||||
#: documents/models.py:333
 | 
			
		||||
msgid "logs"
 | 
			
		||||
msgstr "Protokoll"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:358 documents/models.py:408
 | 
			
		||||
#: documents/models.py:344 documents/models.py:394
 | 
			
		||||
msgid "saved view"
 | 
			
		||||
msgstr "Gespeicherte Ansicht"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:359
 | 
			
		||||
#: documents/models.py:345
 | 
			
		||||
msgid "saved views"
 | 
			
		||||
msgstr "Gespeicherte Ansichten"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:362
 | 
			
		||||
#: documents/models.py:348
 | 
			
		||||
msgid "user"
 | 
			
		||||
msgstr "Benutzer"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:368
 | 
			
		||||
#: documents/models.py:354
 | 
			
		||||
msgid "show on dashboard"
 | 
			
		||||
msgstr "Auf Startseite zeigen"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:371
 | 
			
		||||
#: documents/models.py:357
 | 
			
		||||
msgid "show in sidebar"
 | 
			
		||||
msgstr "In Seitenleiste zeigen"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:375
 | 
			
		||||
#: documents/models.py:361
 | 
			
		||||
msgid "sort field"
 | 
			
		||||
msgstr "Sortierfeld"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:378
 | 
			
		||||
#: documents/models.py:364
 | 
			
		||||
msgid "sort reverse"
 | 
			
		||||
msgstr "Umgekehrte Sortierung"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:384
 | 
			
		||||
#: documents/models.py:370
 | 
			
		||||
msgid "title contains"
 | 
			
		||||
msgstr "Titel enthält"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:385
 | 
			
		||||
#: documents/models.py:371
 | 
			
		||||
msgid "content contains"
 | 
			
		||||
msgstr "Inhalt enthält"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:386
 | 
			
		||||
#: documents/models.py:372
 | 
			
		||||
msgid "ASN is"
 | 
			
		||||
msgstr "ASN ist"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:387
 | 
			
		||||
#: documents/models.py:373
 | 
			
		||||
msgid "correspondent is"
 | 
			
		||||
msgstr "Korrespondent ist"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:388
 | 
			
		||||
#: documents/models.py:374
 | 
			
		||||
msgid "document type is"
 | 
			
		||||
msgstr "Dokumenttyp ist"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:389
 | 
			
		||||
#: documents/models.py:375
 | 
			
		||||
msgid "is in inbox"
 | 
			
		||||
msgstr "Ist im Posteingang"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:390
 | 
			
		||||
#: documents/models.py:376
 | 
			
		||||
msgid "has tag"
 | 
			
		||||
msgstr "Hat Tag"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:391
 | 
			
		||||
#: documents/models.py:377
 | 
			
		||||
msgid "has any tag"
 | 
			
		||||
msgstr "Hat irgendein Tag"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:392
 | 
			
		||||
#: documents/models.py:378
 | 
			
		||||
msgid "created before"
 | 
			
		||||
msgstr "Ausgestellt vor"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:393
 | 
			
		||||
#: documents/models.py:379
 | 
			
		||||
msgid "created after"
 | 
			
		||||
msgstr "Ausgestellt nach"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:394
 | 
			
		||||
#: documents/models.py:380
 | 
			
		||||
msgid "created year is"
 | 
			
		||||
msgstr "Ausgestellt im Jahr"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:395
 | 
			
		||||
#: documents/models.py:381
 | 
			
		||||
msgid "created month is"
 | 
			
		||||
msgstr "Ausgestellt im Monat"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:396
 | 
			
		||||
#: documents/models.py:382
 | 
			
		||||
msgid "created day is"
 | 
			
		||||
msgstr "Ausgestellt am Tag"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:397
 | 
			
		||||
#: documents/models.py:383
 | 
			
		||||
msgid "added before"
 | 
			
		||||
msgstr "Hinzugefügt vor"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:398
 | 
			
		||||
#: documents/models.py:384
 | 
			
		||||
msgid "added after"
 | 
			
		||||
msgstr "Hinzugefügt nach"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:399
 | 
			
		||||
#: documents/models.py:385
 | 
			
		||||
msgid "modified before"
 | 
			
		||||
msgstr "Geändert vor"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:400
 | 
			
		||||
#: documents/models.py:386
 | 
			
		||||
msgid "modified after"
 | 
			
		||||
msgstr "Geändert nach"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:401
 | 
			
		||||
#: documents/models.py:387
 | 
			
		||||
msgid "does not have tag"
 | 
			
		||||
msgstr "Hat nicht folgendes Tag"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:412
 | 
			
		||||
#: documents/models.py:398
 | 
			
		||||
msgid "rule type"
 | 
			
		||||
msgstr "Regeltyp"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:416
 | 
			
		||||
#: documents/models.py:402
 | 
			
		||||
msgid "value"
 | 
			
		||||
msgstr "Wert"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:422
 | 
			
		||||
#: documents/models.py:408
 | 
			
		||||
msgid "filter rule"
 | 
			
		||||
msgstr "Filterregel"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:423
 | 
			
		||||
#: documents/models.py:409
 | 
			
		||||
msgid "filter rules"
 | 
			
		||||
msgstr "Filterregeln"
 | 
			
		||||
 | 
			
		||||
#: documents/serialisers.py:52
 | 
			
		||||
#: documents/serialisers.py:53
 | 
			
		||||
#, python-format
 | 
			
		||||
msgid "Invalid regular expresssion: %(error)s"
 | 
			
		||||
msgstr "Ungültiger regulärer Ausdruck: %(error)s"
 | 
			
		||||
 | 
			
		||||
#: documents/serialisers.py:378
 | 
			
		||||
#: documents/serialisers.py:177
 | 
			
		||||
msgid "Invalid color."
 | 
			
		||||
msgstr "Ungültige Farbe."
 | 
			
		||||
 | 
			
		||||
#: documents/serialisers.py:451
 | 
			
		||||
#, python-format
 | 
			
		||||
msgid "File type %(type)s not supported"
 | 
			
		||||
msgstr "Dateityp %(type)s nicht unterstützt"
 | 
			
		||||
 | 
			
		||||
#: documents/templates/index.html:20
 | 
			
		||||
#: documents/templates/index.html:21
 | 
			
		||||
msgid "Paperless-ng is loading..."
 | 
			
		||||
msgstr "Paperless-ng wird geladen..."
 | 
			
		||||
 | 
			
		||||
@ -406,30 +410,34 @@ msgstr "Passwort"
 | 
			
		||||
msgid "Sign in"
 | 
			
		||||
msgstr "Anmelden"
 | 
			
		||||
 | 
			
		||||
#: paperless/settings.py:291
 | 
			
		||||
#: paperless/settings.py:297
 | 
			
		||||
msgid "English (US)"
 | 
			
		||||
msgstr "Englisch (US)"
 | 
			
		||||
 | 
			
		||||
#: paperless/settings.py:292
 | 
			
		||||
#: paperless/settings.py:298
 | 
			
		||||
msgid "English (GB)"
 | 
			
		||||
msgstr "Englisch (UK)"
 | 
			
		||||
 | 
			
		||||
#: paperless/settings.py:293
 | 
			
		||||
#: paperless/settings.py:299
 | 
			
		||||
msgid "German"
 | 
			
		||||
msgstr "Deutsch"
 | 
			
		||||
 | 
			
		||||
#: paperless/settings.py:294
 | 
			
		||||
#: paperless/settings.py:300
 | 
			
		||||
msgid "Dutch"
 | 
			
		||||
msgstr "Niederländisch"
 | 
			
		||||
 | 
			
		||||
#: paperless/settings.py:295
 | 
			
		||||
#: paperless/settings.py:301
 | 
			
		||||
msgid "French"
 | 
			
		||||
msgstr "Französisch"
 | 
			
		||||
 | 
			
		||||
#: paperless/settings.py:296
 | 
			
		||||
#: paperless/settings.py:302
 | 
			
		||||
msgid "Portuguese (Brazil)"
 | 
			
		||||
msgstr "Portugiesisch (Brasilien)"
 | 
			
		||||
 | 
			
		||||
#: paperless/settings.py:303
 | 
			
		||||
msgid "Italian"
 | 
			
		||||
msgstr "Italienisch"
 | 
			
		||||
 | 
			
		||||
#: paperless/urls.py:118
 | 
			
		||||
msgid "Paperless-ng administration"
 | 
			
		||||
msgstr "Paperless-ng Administration"
 | 
			
		||||
 | 
			
		||||
@ -8,7 +8,7 @@ msgid ""
 | 
			
		||||
msgstr ""
 | 
			
		||||
"Project-Id-Version: PACKAGE VERSION\n"
 | 
			
		||||
"Report-Msgid-Bugs-To: \n"
 | 
			
		||||
"POT-Creation-Date: 2021-02-24 16:49+0100\n"
 | 
			
		||||
"POT-Creation-Date: 2021-02-26 12:56+0100\n"
 | 
			
		||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 | 
			
		||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 | 
			
		||||
"Language-Team: LANGUAGE <LL@li.org>\n"
 | 
			
		||||
@ -45,7 +45,7 @@ msgstr ""
 | 
			
		||||
msgid "Automatic"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:41 documents/models.py:364 paperless_mail/models.py:25
 | 
			
		||||
#: documents/models.py:41 documents/models.py:350 paperless_mail/models.py:25
 | 
			
		||||
#: paperless_mail/models.py:109
 | 
			
		||||
msgid "name"
 | 
			
		||||
msgstr ""
 | 
			
		||||
@ -62,7 +62,7 @@ msgstr ""
 | 
			
		||||
msgid "is insensitive"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:74 documents/models.py:134
 | 
			
		||||
#: documents/models.py:74 documents/models.py:120
 | 
			
		||||
msgid "correspondent"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
@ -70,293 +70,297 @@ msgstr ""
 | 
			
		||||
msgid "correspondents"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:97
 | 
			
		||||
#: documents/models.py:81
 | 
			
		||||
msgid "color"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:101
 | 
			
		||||
#: documents/models.py:87
 | 
			
		||||
msgid "is inbox tag"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:103
 | 
			
		||||
#: documents/models.py:89
 | 
			
		||||
msgid ""
 | 
			
		||||
"Marks this tag as an inbox tag: All newly consumed documents will be tagged "
 | 
			
		||||
"with inbox tags."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:108
 | 
			
		||||
#: documents/models.py:94
 | 
			
		||||
msgid "tag"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:109 documents/models.py:165
 | 
			
		||||
#: documents/models.py:95 documents/models.py:151
 | 
			
		||||
msgid "tags"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:115 documents/models.py:147
 | 
			
		||||
#: documents/models.py:101 documents/models.py:133
 | 
			
		||||
msgid "document type"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:116
 | 
			
		||||
#: documents/models.py:102
 | 
			
		||||
msgid "document types"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:124
 | 
			
		||||
#: documents/models.py:110
 | 
			
		||||
msgid "Unencrypted"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:125
 | 
			
		||||
#: documents/models.py:111
 | 
			
		||||
msgid "Encrypted with GNU Privacy Guard"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:138
 | 
			
		||||
#: documents/models.py:124
 | 
			
		||||
msgid "title"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:151
 | 
			
		||||
#: documents/models.py:137
 | 
			
		||||
msgid "content"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:153
 | 
			
		||||
#: documents/models.py:139
 | 
			
		||||
msgid ""
 | 
			
		||||
"The raw, text-only data of the document. This field is primarily used for "
 | 
			
		||||
"searching."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:158
 | 
			
		||||
#: documents/models.py:144
 | 
			
		||||
msgid "mime type"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:169
 | 
			
		||||
#: documents/models.py:155
 | 
			
		||||
msgid "checksum"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:173
 | 
			
		||||
#: documents/models.py:159
 | 
			
		||||
msgid "The checksum of the original document."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:177
 | 
			
		||||
#: documents/models.py:163
 | 
			
		||||
msgid "archive checksum"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:182
 | 
			
		||||
#: documents/models.py:168
 | 
			
		||||
msgid "The checksum of the archived document."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:186 documents/models.py:342
 | 
			
		||||
#: documents/models.py:172 documents/models.py:328
 | 
			
		||||
msgid "created"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:190
 | 
			
		||||
#: documents/models.py:176
 | 
			
		||||
msgid "modified"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:194
 | 
			
		||||
#: documents/models.py:180
 | 
			
		||||
msgid "storage type"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:202
 | 
			
		||||
#: documents/models.py:188
 | 
			
		||||
msgid "added"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:206
 | 
			
		||||
#: documents/models.py:192
 | 
			
		||||
msgid "filename"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:212
 | 
			
		||||
#: documents/models.py:198
 | 
			
		||||
msgid "Current filename in storage"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:216
 | 
			
		||||
#: documents/models.py:202
 | 
			
		||||
msgid "archive filename"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:222
 | 
			
		||||
#: documents/models.py:208
 | 
			
		||||
msgid "Current archive filename in storage"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:226
 | 
			
		||||
#: documents/models.py:212
 | 
			
		||||
msgid "archive serial number"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:231
 | 
			
		||||
#: documents/models.py:217
 | 
			
		||||
msgid "The position of this document in your physical document archive."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:237
 | 
			
		||||
#: documents/models.py:223
 | 
			
		||||
msgid "document"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:238
 | 
			
		||||
#: documents/models.py:224
 | 
			
		||||
msgid "documents"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:325
 | 
			
		||||
#: documents/models.py:311
 | 
			
		||||
msgid "debug"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:326
 | 
			
		||||
#: documents/models.py:312
 | 
			
		||||
msgid "information"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:327
 | 
			
		||||
#: documents/models.py:313
 | 
			
		||||
msgid "warning"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:328
 | 
			
		||||
#: documents/models.py:314
 | 
			
		||||
msgid "error"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:329
 | 
			
		||||
#: documents/models.py:315
 | 
			
		||||
msgid "critical"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:333
 | 
			
		||||
#: documents/models.py:319
 | 
			
		||||
msgid "group"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:336
 | 
			
		||||
#: documents/models.py:322
 | 
			
		||||
msgid "message"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:339
 | 
			
		||||
#: documents/models.py:325
 | 
			
		||||
msgid "level"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:346
 | 
			
		||||
#: documents/models.py:332
 | 
			
		||||
msgid "log"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:347
 | 
			
		||||
#: documents/models.py:333
 | 
			
		||||
msgid "logs"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:358 documents/models.py:408
 | 
			
		||||
#: documents/models.py:344 documents/models.py:394
 | 
			
		||||
msgid "saved view"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:359
 | 
			
		||||
#: documents/models.py:345
 | 
			
		||||
msgid "saved views"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:362
 | 
			
		||||
#: documents/models.py:348
 | 
			
		||||
msgid "user"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:368
 | 
			
		||||
#: documents/models.py:354
 | 
			
		||||
msgid "show on dashboard"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:371
 | 
			
		||||
#: documents/models.py:357
 | 
			
		||||
msgid "show in sidebar"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:375
 | 
			
		||||
#: documents/models.py:361
 | 
			
		||||
msgid "sort field"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:378
 | 
			
		||||
#: documents/models.py:364
 | 
			
		||||
msgid "sort reverse"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:384
 | 
			
		||||
#: documents/models.py:370
 | 
			
		||||
msgid "title contains"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:385
 | 
			
		||||
#: documents/models.py:371
 | 
			
		||||
msgid "content contains"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:386
 | 
			
		||||
#: documents/models.py:372
 | 
			
		||||
msgid "ASN is"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:387
 | 
			
		||||
#: documents/models.py:373
 | 
			
		||||
msgid "correspondent is"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:388
 | 
			
		||||
#: documents/models.py:374
 | 
			
		||||
msgid "document type is"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:389
 | 
			
		||||
#: documents/models.py:375
 | 
			
		||||
msgid "is in inbox"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:390
 | 
			
		||||
#: documents/models.py:376
 | 
			
		||||
msgid "has tag"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:391
 | 
			
		||||
#: documents/models.py:377
 | 
			
		||||
msgid "has any tag"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:392
 | 
			
		||||
#: documents/models.py:378
 | 
			
		||||
msgid "created before"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:393
 | 
			
		||||
#: documents/models.py:379
 | 
			
		||||
msgid "created after"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:394
 | 
			
		||||
#: documents/models.py:380
 | 
			
		||||
msgid "created year is"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:395
 | 
			
		||||
#: documents/models.py:381
 | 
			
		||||
msgid "created month is"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:396
 | 
			
		||||
#: documents/models.py:382
 | 
			
		||||
msgid "created day is"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:397
 | 
			
		||||
#: documents/models.py:383
 | 
			
		||||
msgid "added before"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:398
 | 
			
		||||
#: documents/models.py:384
 | 
			
		||||
msgid "added after"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:399
 | 
			
		||||
#: documents/models.py:385
 | 
			
		||||
msgid "modified before"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:400
 | 
			
		||||
#: documents/models.py:386
 | 
			
		||||
msgid "modified after"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:401
 | 
			
		||||
#: documents/models.py:387
 | 
			
		||||
msgid "does not have tag"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:412
 | 
			
		||||
#: documents/models.py:398
 | 
			
		||||
msgid "rule type"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:416
 | 
			
		||||
#: documents/models.py:402
 | 
			
		||||
msgid "value"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:422
 | 
			
		||||
#: documents/models.py:408
 | 
			
		||||
msgid "filter rule"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:423
 | 
			
		||||
#: documents/models.py:409
 | 
			
		||||
msgid "filter rules"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: documents/serialisers.py:52
 | 
			
		||||
#: documents/serialisers.py:53
 | 
			
		||||
#, python-format
 | 
			
		||||
msgid "Invalid regular expresssion: %(error)s"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: documents/serialisers.py:378
 | 
			
		||||
#: documents/serialisers.py:177
 | 
			
		||||
msgid "Invalid color."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: documents/serialisers.py:451
 | 
			
		||||
#, python-format
 | 
			
		||||
msgid "File type %(type)s not supported"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: documents/templates/index.html:20
 | 
			
		||||
#: documents/templates/index.html:21
 | 
			
		||||
msgid "Paperless-ng is loading..."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
@ -396,30 +400,34 @@ msgstr ""
 | 
			
		||||
msgid "Sign in"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: paperless/settings.py:291
 | 
			
		||||
#: paperless/settings.py:297
 | 
			
		||||
msgid "English (US)"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: paperless/settings.py:292
 | 
			
		||||
#: paperless/settings.py:298
 | 
			
		||||
msgid "English (GB)"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: paperless/settings.py:293
 | 
			
		||||
#: paperless/settings.py:299
 | 
			
		||||
msgid "German"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: paperless/settings.py:294
 | 
			
		||||
#: paperless/settings.py:300
 | 
			
		||||
msgid "Dutch"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: paperless/settings.py:295
 | 
			
		||||
#: paperless/settings.py:301
 | 
			
		||||
msgid "French"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: paperless/settings.py:296
 | 
			
		||||
#: paperless/settings.py:302
 | 
			
		||||
msgid "Portuguese (Brazil)"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: paperless/settings.py:303
 | 
			
		||||
msgid "Italian"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: paperless/urls.py:118
 | 
			
		||||
msgid "Paperless-ng administration"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										673
									
								
								src/locale/it/LC_MESSAGES/django.po
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										673
									
								
								src/locale/it/LC_MESSAGES/django.po
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,673 @@
 | 
			
		||||
# SOME DESCRIPTIVE TITLE.
 | 
			
		||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
 | 
			
		||||
# This file is distributed under the same license as the PACKAGE package.
 | 
			
		||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 | 
			
		||||
# 
 | 
			
		||||
# Translators:
 | 
			
		||||
# Ioma Taani, 2021
 | 
			
		||||
# Jonas Winkler, 2021
 | 
			
		||||
# Oliver Thomas Cervera <cervera93-10@yahoo.it>, 2021
 | 
			
		||||
# 
 | 
			
		||||
#, fuzzy
 | 
			
		||||
msgid ""
 | 
			
		||||
msgstr ""
 | 
			
		||||
"Project-Id-Version: PACKAGE VERSION\n"
 | 
			
		||||
"Report-Msgid-Bugs-To: \n"
 | 
			
		||||
"POT-Creation-Date: 2021-02-24 16:49+0100\n"
 | 
			
		||||
"PO-Revision-Date: 2021-02-16 18:37+0000\n"
 | 
			
		||||
"Last-Translator: Oliver Thomas Cervera <cervera93-10@yahoo.it>, 2021\n"
 | 
			
		||||
"Language-Team: Italian (https://www.transifex.com/paperless/teams/115905/it/)\n"
 | 
			
		||||
"MIME-Version: 1.0\n"
 | 
			
		||||
"Content-Type: text/plain; charset=UTF-8\n"
 | 
			
		||||
"Content-Transfer-Encoding: 8bit\n"
 | 
			
		||||
"Language: it\n"
 | 
			
		||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
 | 
			
		||||
 | 
			
		||||
#: documents/apps.py:10
 | 
			
		||||
msgid "Documents"
 | 
			
		||||
msgstr "Documenti"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:32
 | 
			
		||||
msgid "Any word"
 | 
			
		||||
msgstr "Qualsiasi parola"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:33
 | 
			
		||||
msgid "All words"
 | 
			
		||||
msgstr "Tutte le parole"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:34
 | 
			
		||||
msgid "Exact match"
 | 
			
		||||
msgstr "Corrispondenza esatta"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:35
 | 
			
		||||
msgid "Regular expression"
 | 
			
		||||
msgstr "Espressione regolare"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:36
 | 
			
		||||
msgid "Fuzzy word"
 | 
			
		||||
msgstr "Parole fuzzy"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:37
 | 
			
		||||
msgid "Automatic"
 | 
			
		||||
msgstr "Automatico"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:41 documents/models.py:364 paperless_mail/models.py:25
 | 
			
		||||
#: paperless_mail/models.py:109
 | 
			
		||||
msgid "name"
 | 
			
		||||
msgstr "nome"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:45
 | 
			
		||||
msgid "match"
 | 
			
		||||
msgstr "corrispondenza"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:49
 | 
			
		||||
msgid "matching algorithm"
 | 
			
		||||
msgstr "algoritmo di corrispondenza"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:55
 | 
			
		||||
msgid "is insensitive"
 | 
			
		||||
msgstr "non distingue maiuscole e minuscole"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:74 documents/models.py:134
 | 
			
		||||
msgid "correspondent"
 | 
			
		||||
msgstr "corrispondente"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:75
 | 
			
		||||
msgid "correspondents"
 | 
			
		||||
msgstr "corrispondenti"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:97
 | 
			
		||||
msgid "color"
 | 
			
		||||
msgstr "colore"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:101
 | 
			
		||||
msgid "is inbox tag"
 | 
			
		||||
msgstr "è tag di arrivo"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:103
 | 
			
		||||
msgid ""
 | 
			
		||||
"Marks this tag as an inbox tag: All newly consumed documents will be tagged "
 | 
			
		||||
"with inbox tags."
 | 
			
		||||
msgstr ""
 | 
			
		||||
"Contrassegna questo tag come tag in arrivo: tutti i documenti elaborati "
 | 
			
		||||
"verranno taggati con questo tag."
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:108
 | 
			
		||||
msgid "tag"
 | 
			
		||||
msgstr "tag"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:109 documents/models.py:165
 | 
			
		||||
msgid "tags"
 | 
			
		||||
msgstr "tag"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:115 documents/models.py:147
 | 
			
		||||
msgid "document type"
 | 
			
		||||
msgstr "tipo di documento"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:116
 | 
			
		||||
msgid "document types"
 | 
			
		||||
msgstr "tipi di documento"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:124
 | 
			
		||||
msgid "Unencrypted"
 | 
			
		||||
msgstr "Non criptato"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:125
 | 
			
		||||
msgid "Encrypted with GNU Privacy Guard"
 | 
			
		||||
msgstr "Criptato con GNU Privacy Guard"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:138
 | 
			
		||||
msgid "title"
 | 
			
		||||
msgstr "titolo"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:151
 | 
			
		||||
msgid "content"
 | 
			
		||||
msgstr "contenuto"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:153
 | 
			
		||||
msgid ""
 | 
			
		||||
"The raw, text-only data of the document. This field is primarily used for "
 | 
			
		||||
"searching."
 | 
			
		||||
msgstr ""
 | 
			
		||||
"I dati grezzi o solo testo del documento. Questo campo è usato "
 | 
			
		||||
"principalmente per la ricerca."
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:158
 | 
			
		||||
msgid "mime type"
 | 
			
		||||
msgstr "tipo mime"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:169
 | 
			
		||||
msgid "checksum"
 | 
			
		||||
msgstr "checksum"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:173
 | 
			
		||||
msgid "The checksum of the original document."
 | 
			
		||||
msgstr "Il checksum del documento originale."
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:177
 | 
			
		||||
msgid "archive checksum"
 | 
			
		||||
msgstr "checksum dell'archivio"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:182
 | 
			
		||||
msgid "The checksum of the archived document."
 | 
			
		||||
msgstr "Il checksum del documento archiviato."
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:186 documents/models.py:342
 | 
			
		||||
msgid "created"
 | 
			
		||||
msgstr "creato il"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:190
 | 
			
		||||
msgid "modified"
 | 
			
		||||
msgstr "modificato il"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:194
 | 
			
		||||
msgid "storage type"
 | 
			
		||||
msgstr "tipo di storage"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:202
 | 
			
		||||
msgid "added"
 | 
			
		||||
msgstr "aggiunto il"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:206
 | 
			
		||||
msgid "filename"
 | 
			
		||||
msgstr "nome del file"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:212
 | 
			
		||||
msgid "Current filename in storage"
 | 
			
		||||
msgstr "Nome del file corrente nello storage"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:216
 | 
			
		||||
msgid "archive filename"
 | 
			
		||||
msgstr "Nome file in archivio"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:222
 | 
			
		||||
msgid "Current archive filename in storage"
 | 
			
		||||
msgstr "Il nome del file nell'archiviazione"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:226
 | 
			
		||||
msgid "archive serial number"
 | 
			
		||||
msgstr "numero seriale dell'archivio"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:231
 | 
			
		||||
msgid "The position of this document in your physical document archive."
 | 
			
		||||
msgstr "Posizione di questo documento all'interno dell'archivio fisico."
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:237
 | 
			
		||||
msgid "document"
 | 
			
		||||
msgstr "documento"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:238
 | 
			
		||||
msgid "documents"
 | 
			
		||||
msgstr "documenti"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:325
 | 
			
		||||
msgid "debug"
 | 
			
		||||
msgstr "debug"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:326
 | 
			
		||||
msgid "information"
 | 
			
		||||
msgstr "informazione"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:327
 | 
			
		||||
msgid "warning"
 | 
			
		||||
msgstr "avvertimento"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:328
 | 
			
		||||
msgid "error"
 | 
			
		||||
msgstr "errore"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:329
 | 
			
		||||
msgid "critical"
 | 
			
		||||
msgstr "critico"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:333
 | 
			
		||||
msgid "group"
 | 
			
		||||
msgstr "gruppo"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:336
 | 
			
		||||
msgid "message"
 | 
			
		||||
msgstr "messaggio"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:339
 | 
			
		||||
msgid "level"
 | 
			
		||||
msgstr "livello"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:346
 | 
			
		||||
msgid "log"
 | 
			
		||||
msgstr "log"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:347
 | 
			
		||||
msgid "logs"
 | 
			
		||||
msgstr "log"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:358 documents/models.py:408
 | 
			
		||||
msgid "saved view"
 | 
			
		||||
msgstr "vista salvata"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:359
 | 
			
		||||
msgid "saved views"
 | 
			
		||||
msgstr "viste salvate"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:362
 | 
			
		||||
msgid "user"
 | 
			
		||||
msgstr "utente"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:368
 | 
			
		||||
msgid "show on dashboard"
 | 
			
		||||
msgstr "mostra sul cruscotto"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:371
 | 
			
		||||
msgid "show in sidebar"
 | 
			
		||||
msgstr "mostra nella barra laterale"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:375
 | 
			
		||||
msgid "sort field"
 | 
			
		||||
msgstr "campo di ordinamento"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:378
 | 
			
		||||
msgid "sort reverse"
 | 
			
		||||
msgstr "ordine invertito"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:384
 | 
			
		||||
msgid "title contains"
 | 
			
		||||
msgstr "il titolo contiene"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:385
 | 
			
		||||
msgid "content contains"
 | 
			
		||||
msgstr "il contenuto contiene"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:386
 | 
			
		||||
msgid "ASN is"
 | 
			
		||||
msgstr "ASN è"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:387
 | 
			
		||||
msgid "correspondent is"
 | 
			
		||||
msgstr "la corrispondenza è"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:388
 | 
			
		||||
msgid "document type is"
 | 
			
		||||
msgstr "il tipo di documento è"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:389
 | 
			
		||||
msgid "is in inbox"
 | 
			
		||||
msgstr "è in arrivo"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:390
 | 
			
		||||
msgid "has tag"
 | 
			
		||||
msgstr "ha etichetta"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:391
 | 
			
		||||
msgid "has any tag"
 | 
			
		||||
msgstr "ha qualsiasi etichetta"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:392
 | 
			
		||||
msgid "created before"
 | 
			
		||||
msgstr "creato prima del"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:393
 | 
			
		||||
msgid "created after"
 | 
			
		||||
msgstr "creato dopo il"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:394
 | 
			
		||||
msgid "created year is"
 | 
			
		||||
msgstr "l'anno di creazione è"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:395
 | 
			
		||||
msgid "created month is"
 | 
			
		||||
msgstr "il mese di creazione è"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:396
 | 
			
		||||
msgid "created day is"
 | 
			
		||||
msgstr "il giorno di creazione è"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:397
 | 
			
		||||
msgid "added before"
 | 
			
		||||
msgstr "aggiunto prima del"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:398
 | 
			
		||||
msgid "added after"
 | 
			
		||||
msgstr "aggiunto dopo il"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:399
 | 
			
		||||
msgid "modified before"
 | 
			
		||||
msgstr "modificato prima del"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:400
 | 
			
		||||
msgid "modified after"
 | 
			
		||||
msgstr "modificato dopo"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:401
 | 
			
		||||
msgid "does not have tag"
 | 
			
		||||
msgstr "non ha tag"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:412
 | 
			
		||||
msgid "rule type"
 | 
			
		||||
msgstr "tipo di regola"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:416
 | 
			
		||||
msgid "value"
 | 
			
		||||
msgstr "valore"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:422
 | 
			
		||||
msgid "filter rule"
 | 
			
		||||
msgstr "regola filtro"
 | 
			
		||||
 | 
			
		||||
#: documents/models.py:423
 | 
			
		||||
msgid "filter rules"
 | 
			
		||||
msgstr "regole filtro"
 | 
			
		||||
 | 
			
		||||
#: documents/serialisers.py:52
 | 
			
		||||
#, python-format
 | 
			
		||||
msgid "Invalid regular expresssion: %(error)s"
 | 
			
		||||
msgstr "Espressione regolare non valida: %(error)s"
 | 
			
		||||
 | 
			
		||||
#: documents/serialisers.py:378
 | 
			
		||||
#, python-format
 | 
			
		||||
msgid "File type %(type)s not supported"
 | 
			
		||||
msgstr "Il tipo di file %(type)s non è supportato"
 | 
			
		||||
 | 
			
		||||
#: documents/templates/index.html:20
 | 
			
		||||
msgid "Paperless-ng is loading..."
 | 
			
		||||
msgstr "Paperless-ng si sta caricando..."
 | 
			
		||||
 | 
			
		||||
#: documents/templates/registration/logged_out.html:13
 | 
			
		||||
msgid "Paperless-ng signed out"
 | 
			
		||||
msgstr "Paperless-ng è uscito"
 | 
			
		||||
 | 
			
		||||
#: documents/templates/registration/logged_out.html:41
 | 
			
		||||
msgid "You have been successfully logged out. Bye!"
 | 
			
		||||
msgstr "Vi siete disconnessi. Ciao!"
 | 
			
		||||
 | 
			
		||||
#: documents/templates/registration/logged_out.html:42
 | 
			
		||||
msgid "Sign in again"
 | 
			
		||||
msgstr "Rientra nuovamente"
 | 
			
		||||
 | 
			
		||||
#: documents/templates/registration/login.html:13
 | 
			
		||||
msgid "Paperless-ng sign in"
 | 
			
		||||
msgstr "Accedi a Paperless-ng"
 | 
			
		||||
 | 
			
		||||
#: documents/templates/registration/login.html:42
 | 
			
		||||
msgid "Please sign in."
 | 
			
		||||
msgstr "Accedi"
 | 
			
		||||
 | 
			
		||||
#: documents/templates/registration/login.html:45
 | 
			
		||||
msgid "Your username and password didn't match. Please try again."
 | 
			
		||||
msgstr "Il nome utente e la password non sono corretti. Riprovare."
 | 
			
		||||
 | 
			
		||||
#: documents/templates/registration/login.html:48
 | 
			
		||||
msgid "Username"
 | 
			
		||||
msgstr "Nome utente"
 | 
			
		||||
 | 
			
		||||
#: documents/templates/registration/login.html:49
 | 
			
		||||
msgid "Password"
 | 
			
		||||
msgstr "Password"
 | 
			
		||||
 | 
			
		||||
#: documents/templates/registration/login.html:54
 | 
			
		||||
msgid "Sign in"
 | 
			
		||||
msgstr "Accedi"
 | 
			
		||||
 | 
			
		||||
#: paperless/settings.py:291
 | 
			
		||||
msgid "English (US)"
 | 
			
		||||
msgstr "Inglese (US)"
 | 
			
		||||
 | 
			
		||||
#: paperless/settings.py:292
 | 
			
		||||
msgid "English (GB)"
 | 
			
		||||
msgstr "Inglese (GB)"
 | 
			
		||||
 | 
			
		||||
#: paperless/settings.py:293
 | 
			
		||||
msgid "German"
 | 
			
		||||
msgstr "Tedesco"
 | 
			
		||||
 | 
			
		||||
#: paperless/settings.py:294
 | 
			
		||||
msgid "Dutch"
 | 
			
		||||
msgstr "Olandese"
 | 
			
		||||
 | 
			
		||||
#: paperless/settings.py:295
 | 
			
		||||
msgid "French"
 | 
			
		||||
msgstr "Francese"
 | 
			
		||||
 | 
			
		||||
#: paperless/settings.py:296
 | 
			
		||||
msgid "Portuguese (Brazil)"
 | 
			
		||||
msgstr "Portoghese (Brasile)"
 | 
			
		||||
 | 
			
		||||
#: paperless/urls.py:118
 | 
			
		||||
msgid "Paperless-ng administration"
 | 
			
		||||
msgstr "Amministrazione di Paperless-ng"
 | 
			
		||||
 | 
			
		||||
#: paperless_mail/admin.py:25
 | 
			
		||||
msgid "Filter"
 | 
			
		||||
msgstr "Filtro"
 | 
			
		||||
 | 
			
		||||
#: paperless_mail/admin.py:27
 | 
			
		||||
msgid ""
 | 
			
		||||
"Paperless will only process mails that match ALL of the filters given below."
 | 
			
		||||
msgstr ""
 | 
			
		||||
"Paperless-ng processerà solo la posta che rientra in TUTTI i filtri "
 | 
			
		||||
"impostati."
 | 
			
		||||
 | 
			
		||||
#: paperless_mail/admin.py:37
 | 
			
		||||
msgid "Actions"
 | 
			
		||||
msgstr "Azioni"
 | 
			
		||||
 | 
			
		||||
#: paperless_mail/admin.py:39
 | 
			
		||||
msgid ""
 | 
			
		||||
"The action applied to the mail. This action is only performed when documents"
 | 
			
		||||
" were consumed from the mail. Mails without attachments will remain entirely"
 | 
			
		||||
" untouched."
 | 
			
		||||
msgstr ""
 | 
			
		||||
"L'azione che viene applicata alla email. Questa azione viene eseguita solo "
 | 
			
		||||
"quando dei documenti vengono elaborati dalla email. Le email senza allegati "
 | 
			
		||||
"vengono ignorate."
 | 
			
		||||
 | 
			
		||||
#: paperless_mail/admin.py:46
 | 
			
		||||
msgid "Metadata"
 | 
			
		||||
msgstr "Metadati"
 | 
			
		||||
 | 
			
		||||
#: paperless_mail/admin.py:48
 | 
			
		||||
msgid ""
 | 
			
		||||
"Assign metadata to documents consumed from this rule automatically. If you "
 | 
			
		||||
"do not assign tags, types or correspondents here, paperless will still "
 | 
			
		||||
"process all matching rules that you have defined."
 | 
			
		||||
msgstr ""
 | 
			
		||||
"Assegna automaticamente i metadati ai documenti elaborati da questa regola. "
 | 
			
		||||
"Se non assegni qui dei tag, tipi di documenti o corrispondenti, Paperless "
 | 
			
		||||
"userà comunque le regole corrispondenti che hai configurato."
 | 
			
		||||
 | 
			
		||||
#: paperless_mail/apps.py:9
 | 
			
		||||
msgid "Paperless mail"
 | 
			
		||||
msgstr "Email Paperless"
 | 
			
		||||
 | 
			
		||||
#: paperless_mail/models.py:11
 | 
			
		||||
msgid "mail account"
 | 
			
		||||
msgstr "account email"
 | 
			
		||||
 | 
			
		||||
#: paperless_mail/models.py:12
 | 
			
		||||
msgid "mail accounts"
 | 
			
		||||
msgstr "account email"
 | 
			
		||||
 | 
			
		||||
#: paperless_mail/models.py:19
 | 
			
		||||
msgid "No encryption"
 | 
			
		||||
msgstr "Nessuna crittografia"
 | 
			
		||||
 | 
			
		||||
#: paperless_mail/models.py:20
 | 
			
		||||
msgid "Use SSL"
 | 
			
		||||
msgstr "Usa SSL"
 | 
			
		||||
 | 
			
		||||
#: paperless_mail/models.py:21
 | 
			
		||||
msgid "Use STARTTLS"
 | 
			
		||||
msgstr "Usa STARTTLS"
 | 
			
		||||
 | 
			
		||||
#: paperless_mail/models.py:29
 | 
			
		||||
msgid "IMAP server"
 | 
			
		||||
msgstr "Server IMAP"
 | 
			
		||||
 | 
			
		||||
#: paperless_mail/models.py:33
 | 
			
		||||
msgid "IMAP port"
 | 
			
		||||
msgstr "Porta IMAP"
 | 
			
		||||
 | 
			
		||||
#: paperless_mail/models.py:36
 | 
			
		||||
msgid ""
 | 
			
		||||
"This is usually 143 for unencrypted and STARTTLS connections, and 993 for "
 | 
			
		||||
"SSL connections."
 | 
			
		||||
msgstr ""
 | 
			
		||||
"Di solito si usa 143 per STARTTLS o nessuna crittografia e 993 per SSL."
 | 
			
		||||
 | 
			
		||||
#: paperless_mail/models.py:40
 | 
			
		||||
msgid "IMAP security"
 | 
			
		||||
msgstr "Sicurezza IMAP"
 | 
			
		||||
 | 
			
		||||
#: paperless_mail/models.py:46
 | 
			
		||||
msgid "username"
 | 
			
		||||
msgstr "nome utente"
 | 
			
		||||
 | 
			
		||||
#: paperless_mail/models.py:50
 | 
			
		||||
msgid "password"
 | 
			
		||||
msgstr "password"
 | 
			
		||||
 | 
			
		||||
#: paperless_mail/models.py:60
 | 
			
		||||
msgid "mail rule"
 | 
			
		||||
msgstr "regola email"
 | 
			
		||||
 | 
			
		||||
#: paperless_mail/models.py:61
 | 
			
		||||
msgid "mail rules"
 | 
			
		||||
msgstr "regole email"
 | 
			
		||||
 | 
			
		||||
#: paperless_mail/models.py:67
 | 
			
		||||
msgid "Only process attachments."
 | 
			
		||||
msgstr "Elabora solo gli allegati."
 | 
			
		||||
 | 
			
		||||
#: paperless_mail/models.py:68
 | 
			
		||||
msgid "Process all files, including 'inline' attachments."
 | 
			
		||||
msgstr "Elabora tutti i file, inclusi gli allegati nel corpo."
 | 
			
		||||
 | 
			
		||||
#: paperless_mail/models.py:78
 | 
			
		||||
msgid "Mark as read, don't process read mails"
 | 
			
		||||
msgstr "Segna come letto, non elaborare le email lette"
 | 
			
		||||
 | 
			
		||||
#: paperless_mail/models.py:79
 | 
			
		||||
msgid "Flag the mail, don't process flagged mails"
 | 
			
		||||
msgstr "Contrassegna la email, non elaborare le email elaborate."
 | 
			
		||||
 | 
			
		||||
#: paperless_mail/models.py:80
 | 
			
		||||
msgid "Move to specified folder"
 | 
			
		||||
msgstr "Sposta in una cartella"
 | 
			
		||||
 | 
			
		||||
#: paperless_mail/models.py:81
 | 
			
		||||
msgid "Delete"
 | 
			
		||||
msgstr "Elimina"
 | 
			
		||||
 | 
			
		||||
#: paperless_mail/models.py:88
 | 
			
		||||
msgid "Use subject as title"
 | 
			
		||||
msgstr "Usa oggetto come titolo"
 | 
			
		||||
 | 
			
		||||
#: paperless_mail/models.py:89
 | 
			
		||||
msgid "Use attachment filename as title"
 | 
			
		||||
msgstr "Usa il nome dell'allegato come titolo"
 | 
			
		||||
 | 
			
		||||
#: paperless_mail/models.py:99
 | 
			
		||||
msgid "Do not assign a correspondent"
 | 
			
		||||
msgstr "Non assegnare un corrispondente"
 | 
			
		||||
 | 
			
		||||
#: paperless_mail/models.py:101
 | 
			
		||||
msgid "Use mail address"
 | 
			
		||||
msgstr "Usa indirizzo email"
 | 
			
		||||
 | 
			
		||||
#: paperless_mail/models.py:103
 | 
			
		||||
msgid "Use name (or mail address if not available)"
 | 
			
		||||
msgstr "Usa nome (o indirizzo email se non disponibile)"
 | 
			
		||||
 | 
			
		||||
#: paperless_mail/models.py:105
 | 
			
		||||
msgid "Use correspondent selected below"
 | 
			
		||||
msgstr "Usa il corrispondente selezionato qui sotto"
 | 
			
		||||
 | 
			
		||||
#: paperless_mail/models.py:113
 | 
			
		||||
msgid "order"
 | 
			
		||||
msgstr "priorità"
 | 
			
		||||
 | 
			
		||||
#: paperless_mail/models.py:120
 | 
			
		||||
msgid "account"
 | 
			
		||||
msgstr "account"
 | 
			
		||||
 | 
			
		||||
#: paperless_mail/models.py:124
 | 
			
		||||
msgid "folder"
 | 
			
		||||
msgstr "cartella"
 | 
			
		||||
 | 
			
		||||
#: paperless_mail/models.py:128
 | 
			
		||||
msgid "filter from"
 | 
			
		||||
msgstr "filtra da"
 | 
			
		||||
 | 
			
		||||
#: paperless_mail/models.py:131
 | 
			
		||||
msgid "filter subject"
 | 
			
		||||
msgstr "filtra oggetto"
 | 
			
		||||
 | 
			
		||||
#: paperless_mail/models.py:134
 | 
			
		||||
msgid "filter body"
 | 
			
		||||
msgstr "filtra corpo"
 | 
			
		||||
 | 
			
		||||
#: paperless_mail/models.py:138
 | 
			
		||||
msgid "filter attachment filename"
 | 
			
		||||
msgstr "filtra nome allegato"
 | 
			
		||||
 | 
			
		||||
#: paperless_mail/models.py:140
 | 
			
		||||
msgid ""
 | 
			
		||||
"Only consume documents which entirely match this filename if specified. "
 | 
			
		||||
"Wildcards such as *.pdf or *invoice* are allowed. Case insensitive."
 | 
			
		||||
msgstr ""
 | 
			
		||||
"Elabora i documenti che corrispondono a questo nome. Puoi usare wildcard "
 | 
			
		||||
"come *.pdf o *fattura*. Non fa differenza fra maiuscole e minuscole."
 | 
			
		||||
 | 
			
		||||
#: paperless_mail/models.py:146
 | 
			
		||||
msgid "maximum age"
 | 
			
		||||
msgstr "età massima"
 | 
			
		||||
 | 
			
		||||
#: paperless_mail/models.py:148
 | 
			
		||||
msgid "Specified in days."
 | 
			
		||||
msgstr "Definito in giorni."
 | 
			
		||||
 | 
			
		||||
#: paperless_mail/models.py:151
 | 
			
		||||
msgid "attachment type"
 | 
			
		||||
msgstr "tipo di allegato"
 | 
			
		||||
 | 
			
		||||
#: paperless_mail/models.py:154
 | 
			
		||||
msgid ""
 | 
			
		||||
"Inline attachments include embedded images, so it's best to combine this "
 | 
			
		||||
"option with a filename filter."
 | 
			
		||||
msgstr ""
 | 
			
		||||
"Gli allegati in linea includono le immagini nel corpo, quindi è meglio "
 | 
			
		||||
"combinare questa opzione con il filtro nome."
 | 
			
		||||
 | 
			
		||||
#: paperless_mail/models.py:159
 | 
			
		||||
msgid "action"
 | 
			
		||||
msgstr "azione"
 | 
			
		||||
 | 
			
		||||
#: paperless_mail/models.py:165
 | 
			
		||||
msgid "action parameter"
 | 
			
		||||
msgstr "parametro azione"
 | 
			
		||||
 | 
			
		||||
#: paperless_mail/models.py:167
 | 
			
		||||
msgid ""
 | 
			
		||||
"Additional parameter for the action selected above, i.e., the target folder "
 | 
			
		||||
"of the move to folder action."
 | 
			
		||||
msgstr ""
 | 
			
		||||
"Parametro aggiuntivo per l'azione selezionata, ad esempio la cartella di "
 | 
			
		||||
"destinazione per l'azione che sposta in una cartella."
 | 
			
		||||
 | 
			
		||||
#: paperless_mail/models.py:173
 | 
			
		||||
msgid "assign title from"
 | 
			
		||||
msgstr "assegna tittolo da"
 | 
			
		||||
 | 
			
		||||
#: paperless_mail/models.py:183
 | 
			
		||||
msgid "assign this tag"
 | 
			
		||||
msgstr "assegna questo tag"
 | 
			
		||||
 | 
			
		||||
#: paperless_mail/models.py:191
 | 
			
		||||
msgid "assign this document type"
 | 
			
		||||
msgstr "assegna questo tipo di documento"
 | 
			
		||||
 | 
			
		||||
#: paperless_mail/models.py:195
 | 
			
		||||
msgid "assign correspondent from"
 | 
			
		||||
msgstr "assegna corrispondente da"
 | 
			
		||||
 | 
			
		||||
#: paperless_mail/models.py:205
 | 
			
		||||
msgid "assign this correspondent"
 | 
			
		||||
msgstr "assegna questo corrispondente"
 | 
			
		||||
@ -13,6 +13,8 @@ class ApiVersionMiddleware:
 | 
			
		||||
        if request.user.is_authenticated:
 | 
			
		||||
            versions = settings.REST_FRAMEWORK['ALLOWED_VERSIONS']
 | 
			
		||||
            response['X-Api-Version'] = versions[len(versions)-1]
 | 
			
		||||
            response['X-Version'] = ".".join([str(_) for _ in version.__version__])
 | 
			
		||||
            response['X-Version'] = ".".join(
 | 
			
		||||
                [str(_) for _ in version.__version__]
 | 
			
		||||
            )
 | 
			
		||||
 | 
			
		||||
        return response
 | 
			
		||||
 | 
			
		||||
@ -299,7 +299,8 @@ LANGUAGES = [
 | 
			
		||||
    ("de", _("German")),
 | 
			
		||||
    ("nl-nl", _("Dutch")),
 | 
			
		||||
    ("fr", _("French")),
 | 
			
		||||
    ("pt-br", _("Portuguese (Brazil)"))
 | 
			
		||||
    ("pt-br", _("Portuguese (Brazil)")),
 | 
			
		||||
    ("it", _("Italian"))
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
LOCALE_PATHS = [
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user