From 94caea0c3fb18c0148f8bed1f985abb008ecbe40 Mon Sep 17 00:00:00 2001 From: Tiberiu Ichim Date: Thu, 19 Oct 2023 10:30:54 +0300 Subject: [PATCH] Update dockerization --- backend/site.cfg | 146 +++++++--- docker-compose.yml | 246 ++++++++++++++--- locales/de.json | 2 +- locales/en.json | 2 +- yarn.lock | 670 +++++++++++++++++++++++++++++++++++++++++---- 5 files changed, 935 insertions(+), 131 deletions(-) diff --git a/backend/site.cfg b/backend/site.cfg index 2bb78cea..d1e6d6fa 100644 --- a/backend/site.cfg +++ b/backend/site.cfg @@ -1,62 +1,118 @@ [buildout] -extends = develop.cfg +extends = buildout.cfg +extensions = mr.developer +allow-picked-versions = true +always-checkout = true -# version v1.10 +auto-checkout += + plone.restapi + freshwater.content + eea.api.glossary +[configuration] eggs += - plone.app.robotframework - collective.MockMailHost - plone.tiles - plone.reload - collective.taxonomy + beautifulsoup4 + collective.monkeypatcher + eea.dexterity.rdfmarshaller eea.api.dataconnector eea.restapi - eea.volto.policy + eea.stringinterp + plone.app.imagecropping + collective.MockMailHost freshwater.content - eea.favboard - collective.bookmarks - eea.banner - -zcml += - collective.taxonomy - eea.api.dataconnector - plone.reload - eea.api.dataconnector + eea.coremetadata eea.volto.policy - eea.banner + eea.geolocation + eea.zotero + collective.relationhelpers + collective.exportimport + eea.api.glossary -auto-checkout = - plone.restapi - collective.taxonomy - eea.api.dataconnector +zcml += + collective.monkeypatcher eea.dexterity.rdfmarshaller - eea.volto.policy + eea.api.dataconnector eea.restapi + eea.stringinterp freshwater.content - eea.favboard - collective.bookmarks - -always-checkout = true - -# kitconcept.volto -# kitconcept.voltodemo - -[configuration] -shared-blob = off [sources] -plone.restapi = git https://github.com/plone/plone.restapi.git branch=slots -collective.taxonomy = git https://github.com/eea/collective.taxonomy branch=restapi -eea.api.dataconnector = git https://github.com/eea/eea.api.dataconnector.git branch=develop -eea.dexterity.rdfmarshaller = git https://github.com/eea/eea.dexterity.rdfmarshaller.git -eea.restapi = git https://github.com/eea/eea.restapi branch=develop -# eea.volto.slate = git https://github.com/eea/eea.volto.slate.git branch=main -eea.volto.policy = git https://github.com/eea/eea.volto.policy.git -freshwater.content = git https://github.com/eea/freshwater.content.git branch=master -eea.favboard = git https://github.com/eea/eea.favboard branch=main -collective.bookmarks= git https://github.com/collective/collective.bookmarks +plone.restapi = git https://github.com/plone/plone.restapi.git pushurl=git@github.com:plone/plone.restapi.git branch=slots +freshwater.content = git https://github.com/eea/freshwater.content.git pushurl=git@github.com:eea/freshwater.content.git branch=develop +eea.api.glossary = git https://github.com/eea/eea.api.glossary.git pushurl=git@github.com:eea/eea.api.glossary.git branch=master [versions] -plone.schema = 1.3.0 plone.rest = 2.0.0a1 -plone.app.vocabularies = 4.3.0 +# freshwater.content = 2.1 +eea.api.dataconnector = 6.2 + +# required by collective.exportimport +collective.exportimport = 1.7 +ijson = 3.2.0.post0 +hurry.filesize = 0.9 + +#python3 +rdflib-jsonld = 0.6.2 + +# [buildout] +# extends = develop.cfg +# +# # version v1.10 +# +# eggs += +# plone.app.robotframework +# collective.MockMailHost +# plone.tiles +# plone.reload +# collective.taxonomy +# eea.api.dataconnector +# eea.restapi +# eea.volto.policy +# freshwater.content +# eea.favboard +# collective.bookmarks +# eea.banner +# +# zcml += +# collective.taxonomy +# eea.api.dataconnector +# plone.reload +# eea.api.dataconnector +# eea.volto.policy +# eea.banner +# +# auto-checkout = +# plone.restapi +# collective.taxonomy +# eea.api.dataconnector +# eea.dexterity.rdfmarshaller +# eea.volto.policy +# eea.restapi +# freshwater.content +# eea.favboard +# collective.bookmarks +# +# always-checkout = true +# +# # kitconcept.volto +# # kitconcept.voltodemo +# +# [configuration] +# shared-blob = off +# +# [sources] +# plone.restapi = git https://github.com/plone/plone.restapi.git branch=slots +# collective.taxonomy = git https://github.com/eea/collective.taxonomy branch=restapi +# eea.api.dataconnector = git https://github.com/eea/eea.api.dataconnector.git branch=develop +# eea.dexterity.rdfmarshaller = git https://github.com/eea/eea.dexterity.rdfmarshaller.git +# eea.restapi = git https://github.com/eea/eea.restapi branch=develop +# # eea.volto.slate = git https://github.com/eea/eea.volto.slate.git branch=main +# eea.volto.policy = git https://github.com/eea/eea.volto.policy.git +# freshwater.content = git https://github.com/eea/freshwater.content.git branch=master +# eea.favboard = git https://github.com/eea/eea.favboard branch=main +# collective.bookmarks= git https://github.com/collective/collective.bookmarks +# +# [versions] +# plone.schema = 1.3.0 +# plone.rest = 2.0.0a1 +# plone.app.vocabularies = 4.3.0 diff --git a/docker-compose.yml b/docker-compose.yml index 83fa7d19..7a8360fb 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,47 +1,221 @@ version: '3' services: - frontend: - image: eeacms/freshwater-frontend:v0.0.8 - # build: . - user: 'node:node' - volumes: - - ./src/addons:/opt/frontend/src/addons - # depends_on: - # - ploneapi + + plone: + image: eeacms/freshwater-backend:5.2.9-3.04 + # image: eeacms/plonesaas:freshwater.demo.2 + # image: eeacms/freshwater-backend:develop + # image: eeacms/freshwater-backend:1.4.0 + # image: laszlocseh/freshwater-backend:test environment: - RAZZLE_API_PATH: 'http://localhost:${BACKEND_PORT:-8080}/${SITE_NAME:-Plone}' - RAZZLE_INTERNAL_API_PATH: 'http://ploneapi:8080/${SITE_NAME:-Plone}' - PORT: '${FRONTEND_PORT:-3000}' - ports: - - '${FRONTEND_PORT:-3000}:${FRONTEND_PORT:-3000}' - - '${FRONTEND_PORT_NEXT:-3001}:${FRONTEND_PORT_NEXT:-3001}' - - '${FRONTEND_ANALYZE_PORT:-8888}:${FRONTEND_ANALYZE_PORT:-8888}' - entrypoint: sh -c "tail -f /dev/null" - # ports: - # - "${FRONTEND:-3000}:3000" - # environment: - # API_PATH: "http://localhost:${BACKEND:-8080}/Plone" - # INTERNAL_API_PATH: "http://ploneapi:${BACKEND:-8080}/Plone" - - ploneapi: - # image: eeacms/plonesaas-devel - # CORS_ALLOW_ORIGIN: "http://localhost:3000,http://127.0.0.1:3000,http://localhost:${FRONTEND:-8000},http://127.0.0.1:${FRONTEND:-8000}" - build: ./backend + CORS_ALLOW_ORIGIN: 'http://localhost:3000,http://127.0.0.1:3000' + # CORS_ALLOW_ORIGIN: http://localhost:3000 + RABBITMQ_HOST: rabbitmq.apps.eea.europa.eu + RABBITMQ_PASS: '' + RABBITMQ_USER: '' + TZ: Europe/Copenhagen + # ZEO_ADDRESS: zeo:8080 + # ZOPE_MODE: zeo_client + volumes: + - ./backend/src:/plone/instance/src + - ./backend/site.cfg:/plone/instance/site.cfg + - ./data:/data + + # - ./data-2021-nov-10/data/:/data + # - ./data-prod-2023-ian-26/:/data ports: - - '${BACKEND_PORT:-8080}:8080' - environment: - CORS_ALLOW_ORIGIN: 'http://localhost:${FRONTEND_PORT:-3000}' + - 8080:8080/tcp depends_on: - memcached - volumes: - - ./data:/data - - ./backend/site.cfg:/plone/instance/site.cfg - - ./backend/src:/plone/instance/src + # - zeo entrypoint: sh -c "tail -f /dev/null" + apache: + # extra_hosts: + # - "marine-frontend:192.168.100.4" + # - "wise-localhost.com:192.168.100.4" + image: eeacms/apache:latest + ports: + - "80:80" + environment: + APACHE_CONFIG: |- + + ServerAdmin helpdesk@wise-localhost.com + ServerName wise-localhost.com + + ErrorLog /var/log/apache.log + + RewriteEngine On + SSLProxyEngine on + + Header set Access-Control-Allow-Origin "http://wise-localhost.com" + Header set Access-Control-Allow-Credentials "true" + + ProxyTimeout 1800 + Timeout 1800 + + Redirect "/geonetwork" "/geonetwork/" + #RewriteRule ^/geonetwork/(.*) http://wise-geonetwork:8080/geonetwork/$$1 [P,L,QSA] + RewriteRule ^/geonetwork/(.*) http://wise-geonetwork-webapp:8080/geonetwork/$$1 [P,L,QSA] + RewriteRule ^/old-geonetwork/(.*) http://wise-geonetwork-webapp:8080/old-geonetwork/$$1 [P,L,QSA] + + # Marine-new test + # assessment module and country profile to plone 5 + RewriteRule ^/(.*)marine-new/countries-and-regional-seas(.*) http://plone:8080/VirtualHostBase/http/wise-localhost.com:80/Plone/VirtualHostRoot/marine-new/countries-and-regional-seas$$2 [P,L] + RewriteRule ^/(.*)marine-new/assessment-module(.*) http://plone:8080/VirtualHostBase/http/wise-localhost.com:80/Plone/VirtualHostRoot/marine-new/assessment-module$$2 [P,L] + RewriteRule ^/\+\+theme\+\+wise-theme(.*) http://plone:8080/VirtualHostBase/http/wise-localhost.com:80/Plone/VirtualHostRoot/++theme++wise-theme$$1 [P,L] + # marine-api to access plone + RewriteRule ^/marine-api(.*) http://plone:8080/VirtualHostBase/http/wise-localhost.com:80/Plone/VirtualHostRoot/_vh_marine-api$$1 [P,L] + RewriteRule ^/marine-new/\+\+plone\+\+(.*) http://plone:8080/VirtualHostBase/http/wise-localhost.com:80/Plone/VirtualHostRoot/$$1 [P,L] + RewriteRule ^/marine-new/\+\+theme\+\+(.*) http://plone:8080/VirtualHostBase/http/wise-localhost.com:80/Plone/VirtualHostRoot/$$1 [P,L] + #marine frontend rules + #rules for @user, @login, /static are needed so we can have the site root at the /marine folder + RewriteRule ^/marine-new\/\+\+api\+\+\/\@system(.*) http://plone:8080/VirtualHostBase/http/wise-localhost.com:80/Plone/VirtualHostRoot/@system$$1 [P,L] + RewriteRule ^/marine-new\/\+\+api\+\+\/\@controlpanels(.*) http://plone:8080/VirtualHostBase/http/wise-localhost.com:80/Plone/VirtualHostRoot/@controlpanels$$1 [P,L] + RewriteRule ^/marine-new\/\+\+api\+\+\/\@users(.*) http://plone:8080/VirtualHostBase/http/wise-localhost.com:80/Plone/VirtualHostRoot/@users$$1 [P,L] + RewriteRule ^/marine-new\/\+\+api\+\+\/\@login(.*) http://plone:8080/VirtualHostBase/http/wise-localhost.com:80/Plone/VirtualHostRoot/@login$$1 [P,L] + RewriteRule ^/marine-new/static(.*) http://marine-frontend:3000/static$$1 [P,L] + RewriteRule ^/marine-new\/\+\+api\+\+(.*) http://plone:8080/VirtualHostBase/http/wise-localhost.com:80/Plone/VirtualHostRoot/_vh_marine-new/marine-new$$1 [P,L] + RewriteRule ^/marine-new(.*) http://marine-frontend:3000/marine-new$$1 [P,L] + + # Marine-new tibi + # RewriteRule ^/marine-new/\+\+api\+\+(.*) http://plone:8080/VirtualHostBase/http/wise-localhost.com:80/Plone/VirtualHostRoot/_vh_marine-new$$1 [P,L] + # RewriteRule ^/marine-new(.*) http://marine-frontend:3000/marine-new$$1 [P,L] + + # Marine - old + # RewriteRule ^/marine-new/static(.*) http://marine-frontend:3000/static$$1 [P,L] + # RewriteRule ^/marine-new(.*) http://marine-frontend:3000/marine-new$$1 [P,L] + # RewriteRule ^/api-marine/\+\+api\+\+\/marine-new(.*) http://plone:8080/VirtualHostBase/http/wise-localhost.com:80/Plone/VirtualHostRoot/_vh_api-marine/marine-new$$1 [P,L] + # RewriteRule ^/api-marine(.*) http://plone:8080/VirtualHostBase/http/wise-localhost.com:80/Plone/VirtualHostRoot/_vh_api-marine$$1 [P,L] + + + # Freshwater + RewriteRule ^/freshwater-api/\+\+api\+\+\/freshwater(.*) http://plone:8080/VirtualHostBase/http/wise-localhost.com:80/Plone/VirtualHostRoot/_vh_freshwater$$1 [P,L] + RewriteRule ^/freshwater-api/freshwater(.*) http://plone:8080/VirtualHostBase/http/wise-localhost.com:80/Plone/VirtualHostRoot/_vh_freshwater-api$$1 [P,L] + RewriteRule ^/freshwater-api(.*) http://plone:8080/VirtualHostBase/http/wise-localhost.com:80/Plone/VirtualHostRoot/_vh_freshwater-api$$1 [P,L] + RewriteRule ^/freshwater(.*) http://freshwater-frontend:3000/$$1 [P,L] + # Fixing cards image from http://wise-localhost.com/freshwater/data-maps-and-tools/water-framework-directive-surface-water-data-products/surface-water-chemical-status + RewriteRule ^/resolveuid(.*) http://freshwater-frontend:3000/resolveuid/$$1 [P,L] + + # Freshwater - old production + # Fixing http://water.ro/api/++api++/freshwater/@navigation?expand.navigation.depth=1 + #RewriteRule ^/static(.*) http://freshwater-frontend:3000/static/$$1 [P,L] + #RewriteRule ^/api/\+\+api\+\+\/freshwater(.*) http://freshwater-backend:8080/VirtualHostBase/https/water.europa.eu:443/Plone/VirtualHostRoot/_vh_freshwater$$1 [P,L] + #RewriteRule ^/api(.*) http://freshwater-backend:8080/VirtualHostBase/https/water.europa.eu:443/Plone/VirtualHostRoot/_vh_api$$1 [P,L] + #RewriteRule ^/freshwater(.*) http://freshwater-frontend:3000/$$1 [P,L] + + # compliance goes to p4 + RewriteRule ^/\+\+theme\+\+wise-theme\/(.*) http://haproxyp5:5000/VirtualHostBase/http/wise-localhost.com:443/Plone/VirtualHostRoot/_vh_marine/++theme++wise-theme/$$1 [P,L] + RewriteRule ^/\+\+plone\+\+privacyscreen\/(.*) http://haproxyp5:5000/VirtualHostBase/http/wise-localhost.com:443/Plone/VirtualHostRoot/_vh_marine/++plone++privacyscreen/$$1 [P,L] + + # new marine website goes to p5 + RewriteRule ^/marine/site-root(.*) http://plone:8080/VirtualHostBase/http/wise-localhost.com:80/Plone/VirtualHostRoot/_vh_marine/site-root/$$1 [P,L] + RewriteRule ^/marine(.*) http://plone:8080/VirtualHostBase/http/wise-localhost.com:80/Plone/VirtualHostRoot/_vh_marine$$1 [P,L] + + # frontpage goes to p4 + RewriteRule ^/(.*) http://plone:8080/VirtualHostBase/http/wise-localhost.com:80/Plone/VirtualHostRoot/_vh_marine/site-root/$$1 [P,L] + + + + # freshwater-frontend: + # extra_hosts: + # # - "marine-frontend:192.168.100.4" + # - "wise-localhost.com:192.168.100.4" + # - "localhost:192.168.100.4" + # image: laszlocseh/freshwater-frontend:0.15.0.local + # # image: eeacms/freshwater-frontend:0.14.0.alpha + # # build: . + # # user: 'node:node' + # # volumes: + # # - ./src/addons:/opt/frontend/src/addons + # environment: + # PORT: '3000' + # RAZZLE_ALLOWED_CORS_DESTINATIONS: http://wise-localhost.com,http://localhost:3000,https://wise-localhost.com + # TZ: Europe/Copenhagen + # API_PATH: http://wise-localhost.com/freshwater-api + # # RAZZLE_API_PATH: http://wise-localhost.com/freshwater + # # PUBLIC_PATH: http://wise-localhost.com/freshwater/ + # #RAZZLE_PREFIX_PATH: '/freshwater/' + # RAZZLE_PROXY_ES_DSN: '' + # # RAZZLE_INTERNAL_API_PATH: 'http://wise-localhost.com/marine-new' + # # RAZZLE_PUBLIC_DIR: '/marine-new/' + # # RAZZLE_DEV_PROXY_API_PATH: http://wise-localhost.com/marine-new + # volumes: + # - ./src/addons/volto-freshwater/:/opt/frontend/src/addons/volto-freshwater + # # - ./marine-frontend/src/addons:/opt/frontend/src/addons + # # - ./marine-frontend/jsconfig.json:/opt/frontend/jsconfig.json + # # user: 'node:node' + # links: + # - plone:backend + # ports: + # - '3000:3000' + # - '3001:3001' + # - '8888:8888' + # entrypoint: sh -c "tail -f /dev/null" + memcached: - image: memcached + image: memcached:1.5.12 + environment: + TZ: Europe/Copenhagen command: - - '-m' - - '512' + - -m + - '1024' + + # zeo: + # # image: eeacms/plonesaas:freshwater.demo.2 + # image: eeacms/freshwater-backend:1.4.0 + # environment: + # TZ: Europe/Copenhagen + # ZOPE_MODE: zeo + # volumes: + # # - ./data-prod-2022-mar-11/data/:/data + # # - ./data-prod-2022-nov-02/data/:/data + # - ./data/:/data + # command: + # - zeo + + # frontend: + # image: eeacms/freshwater-frontend:v0.0.8 + # # build: . + # user: 'node:node' + # volumes: + # - ./src/addons:/opt/frontend/src/addons + # # depends_on: + # # - ploneapi + # environment: + # RAZZLE_API_PATH: 'http://localhost:${BACKEND_PORT:-8080}/${SITE_NAME:-Plone}' + # RAZZLE_INTERNAL_API_PATH: 'http://ploneapi:8080/${SITE_NAME:-Plone}' + # PORT: '${FRONTEND_PORT:-3000}' + # ports: + # - '${FRONTEND_PORT:-3000}:${FRONTEND_PORT:-3000}' + # - '${FRONTEND_PORT_NEXT:-3001}:${FRONTEND_PORT_NEXT:-3001}' + # - '${FRONTEND_ANALYZE_PORT:-8888}:${FRONTEND_ANALYZE_PORT:-8888}' + # entrypoint: sh -c "tail -f /dev/null" + # # ports: + # # - "${FRONTEND:-3000}:3000" + # # environment: + # # API_PATH: "http://localhost:${BACKEND:-8080}/Plone" + # # INTERNAL_API_PATH: "http://ploneapi:${BACKEND:-8080}/Plone" + + # ploneapi: + # # image: eeacms/plonesaas-devel + # # CORS_ALLOW_ORIGIN: "http://localhost:3000,http://127.0.0.1:3000,http://localhost:${FRONTEND:-8000},http://127.0.0.1:${FRONTEND:-8000}" + # build: ./backend + # ports: + # - '${BACKEND_PORT:-8080}:8080' + # environment: + # CORS_ALLOW_ORIGIN: 'http://localhost:${FRONTEND_PORT:-3000}' + # depends_on: + # - memcached + # volumes: + # - ./data:/data + # - ./backend/site.cfg:/plone/instance/site.cfg + # - ./backend/src:/plone/instance/src + # entrypoint: sh -c "tail -f /dev/null" + + # memcached: + # image: memcached + # command: + # - '-m' + # - '512' diff --git a/locales/de.json b/locales/de.json index c24d445f..fd3dcdba 100644 --- a/locales/de.json +++ b/locales/de.json @@ -1 +1 @@ -{"

Add some HTML here

":"

HTML hier einfügen

","Account Registration Completed":"Die Registrierung Ihres Zugangs wurde erfolgreich abgeschlossen.","Account activation completed":"Passwort gesetzt.","Action":"Aktion","Action changed":"Aktion geändert","Action: ":"Aktion: ","Actions":"Aktionen","Activate and deactivate":"Aktiviern und Deaktivieren","Active":"Aktiv","Active content rules in this Page":"Aktivierte Inhaltsregeln auf dieser Seite","Add":"Hinzufügen","Add (object list)":"Hinzufügen","Add Addons":"Add-on hinzufügen","Add Content":"Inhalte hinzufügen","Add Content Rule":"Inhaltsregel hinzufügen","Add Rule":"Regel hinzufügen","Add Translation…":"Übersetzung hinzufügen…","Add User":"Benutzer hinzufügen","Add a description…":"Beschreibung hinzufügen…","Add a new alternative url":"Fügen Sie eine neue, alternative URL hinzu","Add action":"Aktion hinzufügen","Add block":"Block hinzufügen","Add block…":"Block hinzufügen","Add condition":"Bedingung hinzufügen","Add content rule":"Inhaltsregel hinzufügen","Add criteria":"","Add date":"Datum hinzufügen","Add field":"Feld hinzufügen","Add fieldset":"Fieldset hinzufügen","Add group":"Gruppe hinzufügen","Add new content type":"Neuen Inhaltstypen hinzufügen","Add new group":"Neue Gruppe hinzufügen","Add new user":"Neuen Benutzer hinzufügen","Add to Groups":"Zu Gruppe hinzufügen","Add users to group":"Benutzer zu Gruppe hinzufügen","Add vocabulary term":"Neuen Term hinzufügen","Add {type}":"{type} hinzufügen","Add-Ons":"Erweiterungen","Add-on Configuration":"Konfiguration von Erweiterungen","Add-ons":"Erweiterungen","Add-ons Settings":"Einstellungen Add-ons","Added":"Hinzugefügt","Additional date":"Zusätzliches Datum","Addon could not be installed":"Erweiterung konnte nicht installiert werden","Addon could not be uninstalled":"Erweiterung konnte nicht deinstalliert werden","Addon could not be upgraded":"Erweiterung konnte nicht aktualisiert werden","Addon installed succesfuly":"Erweiterungen erfolgreich installiert","Addon uninstalled succesfuly":"Erweiterung erfolgreich deinstalliert","Addon upgraded succesfuly":"Erweiterung erfolgreich aktualisiert","Album view":"Album","Alias":"Alias","Alias has been added":"Alias wurde hinzugefügt","Alignment":"Ausrichtung","All":"Alle","All content":"Alle Inhalte","All existing alternative urls for this site":"Alle existierenden, alternativen Pfade für diese Seite","Alphabetically":"alphabetisch","Alt text":"Alternative Text","Alt text hint":"Das Feld kann leer bleiben, wenn das Bild rein dekorativ ist.","Alt text hint link text":"Beschreiben Sie, was auf dem Bild zu sehen ist.","Alternative url path (Required)":"Alternativer Pfad (erforderlich)","Alternative url path must start with a slash.":"Alternativer Pfad muss mit einem Schrägstrich beginnen","Alternative url path → target url path (date and time of creation, manually created yes/no)":"Alternativer URL Pfad → Zielpfad (Datum und Zeit der Erstellung, manuell erstellt ja/nein)","Applied to subfolders":"Auf Unterseiten angewendet","Applies to subfolders?":"Wird auf Unterseiten angewendet?","Apply to subfolders":"Auf Unterseiten anwenden","Apply working copy":"Arbeitskopie anwenden","Are you sure you want to delete this field?":"Sind Sie sicher, dass Sie dieses Feld löschen möchten?","Are you sure you want to delete this fieldset including all fields?":"Sind Sie sicher, dass Sie dieses Fieldset löschen möchten?","Ascending":"Aufsteigend","Assignments":"Zuweisungen","Available":"Verfügbar","Available content rules:":"Verfügbare Inhaltsregeln:","Back":"Zurück","Base":"Basis","Base search query":"Basis Suchfilter","Block":"Block","Both email address and password are case sensitive, check that caps lock is not enabled.":"Sowohl E-Mail Adresse als auch Passwort unterscheiden zwischen Groß- und Kleinschreibung, stellen Sie sicher dass die Hochstelltaste nicht aktiviert ist.","Breadcrumbs":"Brotkrumen","Browse":"Durchsuchen","Browse the site, drop an image, or type an URL":"","By default, permissions from the container of this item are inherited. If you disable this, only the explicitly defined sharing permissions will be valid. In the overview, the symbol {inherited} indicates an inherited value. Similarly, the symbol {global} indicates a global role, which is managed by the site administrator.":"Standardmäßig werden die Berechtigungen von einem Ordner auf die in ihm befindlichen Artikel vererbt. Wenn Sie dies deaktivieren, sind nur die explizit definierten Zugriffsberechtigungen gültig. In der Übersicht zeigt das Symbol ${image_confirm_icon} einen ererbten Wert an. Das Symbol ${image_link_icon} zeigt eine globale Funktion an, die vom Administrator verwaltet wird.","By deleting this item, you will break links that exist in the items listed below. If this is indeed what you want to do, we recommend that remove these references first.":"Wenn Sie dieses Element löschen, brechen Sie Links, welche in den unten gelisteten Elementen vorkommen. Wenn Sie das möchten, empfehlen wir, die Referenzen im Vorhinein zu löschen.","Cache Name":"Cache Name","Can not edit Layout for {type} content-type as it doesn't have support for Volto Blocks enabled":"Layout für {type} kann nicht verändert werden, da das Volto Blocks-Behavior nicht für diesen Inhaltstyp aktiviert ist","Can not edit Layout for {type} content-type as the Blocks behavior is enabled and read-only":"Layout für {type} kann nicht verändert werden, da das Volto Blocks-Behavior auf nur-lesend gesetzt ist","Cancel":"","Cell":"Zelle","Center":"","Change Note":"Änderungsnotiz","Change Password":"Passwort ändern","Change State":"Arbeitsablauf-Status ändern","Change workflow state recursively":"Arbeitsablauf-Status für alle Unterobjekte ebenfalls ändern","Changes applied.":"Änderungen durchgeführt.","Changes saved":"Änderungen gespeichert","Changes saved.":"Änderungen gespeichert.","Checkbox":"Checkbox","Choices":"","Choose Image":"Bild auswählen","Choose Target":"Ziel auswählen","Choose a file":"Datei auswählen","Clear":"Löschen","Clear filters":"Filter entfernen","Click to download full sized image":"Klicken um das Bild in der vollen Größe runterzuladen","Close":"","Close menu":"Menu schließen","Code":"Code","Collapse item":"Element einklappen","Collection":"Kollektion","Color":"Farbe","Comment":"Kommentar","Commenter":"Kommentarautor","Comments":"Kommentare","Compare":"Vergleichen","Condition changed":"Bedingung geändert","Condition: ":"Bedingung: ","Configuration Versions":"Konfigurationsversionen","Configure Content Rule":"Inhaltsregel konfigurieren","Configure Content Rule: {title}":"Inhaltsregel konfigurieren: {title}","Configure content rule":"Inhaltsregel konfigurieren","Confirm password":"Passwort bestätigen","Connection refused":"Verbindung abgelehnt","Contact form":"Kontaktformular","Contained items":"Enthaltene Elemente","Content":"Inhalt","Content Rule":"Inhaltsregel","Content Rules":"Inhaltsregeln","Content rules for {title}":"Inhaltsregeln für {title}","Content rules from parent folders":"Inhaltsregeln von übergeordneten Seiten","Content type created":"Inhaltstyp erstellt","Content type deleted":"Inhaltstyp gelöscht","Contents":"Inhalte","Controls":"Einstellungen","Copy":"Kopieren","Copy blocks":"Blöcke kopieren","Copyright":"Urheberrecht","Copyright statement or other rights information on this item.":"Informationen über die Urheber- und Nutzungsrechte an diesem Artikel.","Create or delete relations to target":"","Create working copy":"Arbeitskopie erstellen","Created by {creator} on {date}":"Erstellt von {creator} am {date}","Created on":"Erstellt am","Creator":"Ersteller","Creators":"Ersteller","Criteria":"","Current active configuration":"Derzeit aktive Konfiguration","Current filters applied":"Ausgewählte Filter","Current password":"Aktuelles Passwort","Cut":"Ausschneiden","Cut blocks":"Blöcke ausschneiden","Daily":"Täglich","Database":"Datenbank","Database Information":"Datenbankinformationen","Database Location":"Speicheort Datenbank","Database Size":"Größe Datenbank","Database main":"Datenbank","Date":"Datum","Date (newest first)":"Datum (neustes zuerst)","Default":"","Default view":"Standard","Delete":"","Delete Group":"Gruppe löschen","Delete Type":"Inhaltstype löschen","Delete User":"Benutzer löschen","Delete action":"Löschaktion","Delete blocks":"Blöcke löschen","Delete col":"Spalte löschen","Delete condition":"Löschbedingung","Delete row":"Zeile löschen","Deleted":"Gelöscht","Depth":"Tiefe","Descending":"Absteigend","Description":"","Diff":"Unterschied","Difference between revision {one} and {two} of {title}":"Unterschied zwischen Version {one} and {two} von {title}","Disable":"Deaktivieren","Disable apply to subfolders":"Anwendung auf Unterseiten deaktivieren","Disabled":"Deaktiviert","Disabled apply to subfolders":"Anwendung auf Unterseiten deaktiviert","Distributed under the {license}.":"Lizensiert unter der {license}.","Divide each row into separate cells":"Jede Zeile in einzelne Zellen teilen","Do you really want to delete the following items?":"Möchten Sie den Artikel wirklich löschen?","Do you really want to delete the group {groupname}?":"Möchten Sie die Gruppe {groupname} wirklich löschen?","Do you really want to delete the type {typename}?":"Möchten Sie den Inhaltstyp {typename} wirklich löschen?","Do you really want to delete the user {username}?":"Möchten Sie den Nutzer {username} wirklich löschen?","Do you really want to delete this item?":"Möchten Sie den Artikel wirklich löschen?","Document":"Seite","Document view":"Seite","Download Event":"Termindetails herunterladen","Drag and drop files from your computer onto this area or click the “Browse” button.":"Ziehen Sie Dateien von Ihrem Computer auf diesen Bereich oder drücken Sie den “Durchsuchen”-Knopf.","Drop file here to replace the existing file":"Datei hier ablegen um die bestehende Datei zu ersetzen","Drop file here to upload a new file":"Datei hier ablegen um eine neue Datei hochzuladen","Drop files here ...":"Datei hier ablegen um die bestehende Datei zu ersetzen","Dry run selected, transaction aborted.":"Probelauf gewählt, Transaktion abgebrochen.","E-mail":"E-Mail","E-mail addresses do not match.":"E-Mail-Adressen stimmen nicht überein.","Edit":"","Edit Rule":"Bearbeitungsregel","Edit comment":"Kommentar bearbeiten","Edit field":"Feld bearbeiten","Edit fieldset":"Fieldset bearbeiten","Edit recurrence":"Wiederkehrende Einstellungen bearbeiten","Edit values":"","Edit {title}":"{title} bearbeiten","Email":"E-Mail","Email sent":"E-Mail versendet","Embed code error, please follow the instructions and try again.":"","Empty object list":"Leere Liste von Elementen","Enable":"Aktivieren","Enable editable Blocks":"Aktiviere bearbeitbare Blocks","Enabled":"Aktiviert","Enabled here?":"Hier aktivieren?","Enabled?":"Aktiviert?","End Date":"Enddatum","Enter URL or select an item":"URL eingeben oder Objekt auswählen","Enter a username above to search or click 'Show All'":"Benutzername oben eingeben oder auf 'Alle anzeigen' klicken","Enter an email address. This will be your login name. We respect your privacy, and will not give the address away to any third parties or expose it anywhere.":"Tragen Sie Ihre E-Mail-Adresse ein, mit der Sie sich künftig anmelden müssen. Wir respektieren den Datenschutz und werden die E-Mail-Adresse nicht an Dritte weitergeben und auch nirgends anzeigen.","Enter full name, e.g. John Smith.":"Tragen Sie bitte Ihren vollen Namen ein.","Enter map Embed Code":"","Enter the absolute path of the target. The path must start with '/'. Target must exist or be an existing alternative url path to the target.":"Geben Sie den absoluten Pfad des Ziels ein. Der Pfad muss mit '/' beginnen. Das Ziel muss existieren oder ein existierender, alternativer Pfad zum Ziel sein.","Enter the absolute path where the alternative url should exist. The path must start with '/'. Only urls that result in a 404 not found page will result in a redirect occurring.":"Geben Sie den absoluten Pfad ein, an dem die alternative URL existieren soll. Der Pfad muss mit '/' beginnen. Es werden nur URLs die in einem '404 Nicht Gefunden' enden, weitergeleitet.","Enter your current password.":"Geben Sie Ihr aktuelles Passwort ein.","Enter your email for verification.":"Geben Sie Ihre E-Mail zur Verifikation ein.","Enter your new password. Minimum 8 characters.":"Geben Sie ihr neues Passwort ein. Mindestens 8 Zeichen.","Enter your username for verification.":"Geben Sie Ihren Nutzernamen zur Verifikation ein.","Error":"","ErrorHeader":"Fehler","Event":"Ereignis","Event listing":"Termine","Event view":"Termin","Exclude from navigation":"Von der Navigation ausschließen","Exclude this occurence":"Dieses Datum ausschließen","Excluded from navigation":"Von Navigation ausgeschlossen","Existing alternative urls for this item":"Existierende, alternative URLs für dieses Element","Expand sidebar":"Sidebar vergrößern","Expiration Date":"Ablaufdatum","Expiration date":"Ablaufdatum","Expired":"Abgelaufen","External URL":"Externe URL","Facet":"Facette","Facet widget":"Facetten-Widget","Facets":"Facetten","Facets on left side":"Facetten links","Facets on right side":"Facetten rechts","Facets on top":"Facetten oben","Failed To Undo Transactions":"Transaktion rückgänig machen fehlgeschlagen","Field":"Feld","File":"Datei","File size":"Dateigröße","File view":"Datei","Filename":"Dateiname","Filter":"","Filter Rules:":"Filterregeln:","Filter by prefix":"Nach Präfix filtern","Filter users by groups":"Filtere Benutzer via Gruppenmitgliedschaft","Filter…":"Filter…","First":"Erster Tag des Monats","Fix relations":"","Fixed width table cells":"Zellen mit fester Breite","Fold":"Einklappen","Folder":"Ordner","Folder listing":"Ordner","Forbidden":"Verboten","Fourth":"Vierter","From":"E-Mail","Full":"","Full Name":"Vor- und Nachname","Fullname":"Name","GNU GPL license":"GNU-GPL-Lizenz","General":"Allgemein","Global role":"Globale Rolle","Google Maps Embedded Block":"","Group":"Gruppe","Group created":"Gruppe erstellt","Group roles updated":"Gruppenrollen aktualisiert","Groupname":"Gruppenname","Groups":"Gruppen","Groups are logical collections of users, such as departments and business units. Groups are not directly related to permissions on a global level, you normally use Roles for that - and let certain Groups have a particular role. The symbol{plone_svg}indicates a role inherited from membership in another group.":"Gruppen sind Kollektionen von Nutzern, wie z.B. Abteilungen oder Organisationseinheiten. Berechtigungen werden normalerweise nicht global an Gruppen vergeben, sondern eher an Rollen, und dann haben Gruppen eine bestimmte Rolle. Das Symbol {plone_svg} zeigt an, dass eine Rolle von einer anderen Gruppe geerbt wird.","Header cell":"Kopfzeile","Headline":"Überschrift","Headline level":"Überschrift","Hidden facets will still filter the results if proper parameters are passed in URLs":"Verteckte Facetten können die Ergebnisse weiterhin filtern, wenn die entsprechenden Parameter in der URL angehängt werden","Hide Replies":"Antworten ausblenden","Hide facet?":"Facette verstecken","History":"Historie","History Version Number":"Historie Versionsnummer","History of {title}":"Historie von {title}","Home":"Startseite","ID":"ID","If all of the following conditions are met:":"Wenn alle nachfolgenden Bedingungen erfüllt sind:","If selected, this item will not appear in the navigation tree":"Bestimmt, ob der Artikel nicht in der Navigation auftauchen soll.","If this date is in the future, the content will not show up in listings and searches until this date.":"Falls das Datum in der Zukunft liegt wird der Inhalt in Auflistungen und bei der Suche nicht auftauchen, bis zu dem Datum.","If you are certain this user has abandoned the object, you may unlock the object. You will then be able to edit it.":"Wenn Sie sicher sind dass das Objekt nicht mehr aktiv von einem anderen Nutzer verwendet wird, können Sie die Sperrung aufheben. Danach können Sie das Objekt bearbeiten.","If you are certain you have the correct web address but are encountering an error, please contact the {site_admin}.":"Wenn Sie sicher sind, dass Sie die richtige Adresse eingegeben haben, kontaktieren Sie bitte den {site_admin}.","Image":"Bild","Image gallery":"Bildergalerie","Image override":"Bild überschreiben","Image size":"Bildgröße","Image view":"Bild","Include this occurence":"Datum einbeziehen","Info":"Information","InfoUserGroupSettings":"Sie haben die Option 'viele Benutzer' oder 'viele Gruppen' gewählt. Deshalb erwartet das Panel die Eingabe eines Suchwerts und die Auswahl eines Gruppen-Filters um Benutzer und Gruppen zu zeigen. Wenn Sie im Panel umgehend alle Benutzer und Gruppen sehen möchten, dann wechseln Sie bitte zu den Benutzer- und Gruppeneinstellungen und ändern die Einstellungen. Links finden Sie einen Link.","Inherit permissions from higher levels":"Berechtigungen von übergeordneten Seiten übernehmen","Inherited value":"Geerbter Wert","Insert col after":"Spalte dahinter einfügen","Insert col before":"Spalte davor einfügen","Insert row after":"Zeile dahinter einfügen","Insert row before":"Zeile davor einfügen","Inspect relations":"","Install":"Installieren","Installed":"Installiert","Installed version":"Installierte Version","Installing a third party add-on":"Eine Erweiterung installieren","Interval Daily":"Täglich","Interval Monthly":"Monatlich","Interval Weekly":"Wöchentlich","Interval Yearly":"Jährliches Intervall","Invalid Block":"Ungültiger Block - Wird beim Speichern entfernt","Item batch size":"Batch-Anzahl","Item succesfully moved.":"Objekt wurde erfolgreich verschoben.","Item(s) copied.":"Objekt(e) kopiert.","Item(s) cut.":"Objekt(e) ausgeschnitten.","Item(s) has been updated.":"Objekt(e) wurde(n) aktualisiert","Item(s) pasted.":"Artikel eingefügt.","Item(s) state has been updated.":"Der Status der Objekte wurde aktualisiert.","Items":"Elemente","Items must be unique.":"Auswahl muss eindeutig sein.","Items to be deleted:":"Zu löschende Elemente:","Label":"Label","Language":"Sprache","Language independent field.":"Sprachunabhängiges Feld.","Large":"Groß","Last":"Letzter","Last comment date":"Letztes Kommentierdatum","Last modified":"Letzte Änderung","Latest available configuration":"Letzte verfügbare Konfiguration","Latest version":"Letzte Version","Layout":"Layout","Lead Image":"Lead-Bild","Left":"","Link":"Link","Link more":"'Mehr' Link","Link redirect view":"Link","Link title":"Linktitel","Link to":"Link auf","Link translation for":"Übersetzung verbinden","Listing":"Auflistung","Listing view":"Auflistung","Load more":"Mehr laden","Loading":"lädt","Log In":"Anmelden","Log in":"Anmelden","Logged out":"Abgemeldet","Login":"Einloggen","Login Failed":"Login fehlgeschlagen","Login Name":"Benutzername","Logout":"Ausloggen","Made by {creator} on {date}. This is not a working copy anymore, but the main content.":"Erstellt von {creator} am {date}. Diese Seite ist keine Arbeitskopie mehr sondern die Live-Seite.","Make the table compact":"Tabelle komprimieren","Manage Translations":"Übersetzungen verwalten","Manage content…":"Inhalt verwalten…","Manage translations for {title}":"Übersetzungen für {} verwalten","Manual":"Manuell","Manually or automatically added?":"Manuell oder automatisch hinzugefügt?","Many relations found. Please search.":"","Maps":"Karten","Maps URL":"Karten URL","Maximum length is {len}.":"Maximale Länge ist {len}.","Maximum value is {len}.":"Maximaler Wert ist {len}","Medium":"Mittel","Membership updated":"Gruppenmitgliedschaft aktualisiert","Message":"Nachricht","Minimum length is {len}.":"Minimale Länge ist {len}","Minimum value is {len}.":"Minimaler Wert ist {len}","Moderate Comments":"Kommentare moderieren","Moderate comments":"Kommentare moderieren","Monday and Friday":"Montag und Freitag","Month day":"Tag des Monats","Monthly":"Monatlich","More":"Mehr","More information about the upgrade procedure can be found in the documentation section of plone.org in the Upgrade Guide.":"Mehr Information bezüglich des Aktualisierungsablaufs können in der Dokumentation auf plone.org im Aktualisierungsleitfaden gefunden werden.","Mosaic layout":"Mosaic","Move down":"Nach unten bewegen","Move to bottom of folder":"Ans Ende verschieben","Move to top of folder":"An den Anfang verschieben","Move up":"Nach oben bewegen","Multiple choices?":"Mehrfachauswahl?","My email is":"Meine E-Mail ist","My username is":"Mein Nutzername lautet","Name":"Name","Narrow":"Schmal","Navigate back":"Zurück navigieren","Navigation":"Navigation","New password":"Neues Passwort","News Item":"Nachricht","News item view":"Nachricht","No":"Nein","No Transactions Found":"Keine Transaktionen gefunden","No Transactions Selected":"Keine Transaktionen ausgewählt","No Transactions Selected To Do Undo":"Keine Transaktionen zum rückgängig machen ausgewählt","No Video selected":"Kein Video ausgewählt","No addons found":"Keine Add-ons installiert.","No connection to the server":"Keine Verbindung zum Server","No image selected":"Kein Bild ausgewählt","No image set in Lead Image content field":"Im Feld 'Lead-Bild' wurde kein Bild gesetzt.","No image set in image content field":"Im Feld 'Bild' wurde kein Bild gesetzt","No images found.":"Keine Bilder gefunden","No items found in this container.":"Keine Elemente gefunden","No items selected":"Kein Element ausgewählt","No map selected":"Keine Karte ausgewählt","No occurences set":"Kein Datum gesetzt","No options":"","No relation found":"","No results found":"Keine Ergebnisse gefunden","No results found.":"Keine Ergebnisse gefunden.","No selection":"","No uninstall profile":"Kein Deinstallationsprofil","No user found":"Kein Benutzer gefunden","No value":"","No workflow":"Kein Workflow","None":"Nicht vorhanden","Note":"Hinweis","Note that roles set here apply directly to a user. The symbol{plone_svg}indicates a role inherited from membership in a group.":"Rollen gelten für diesen Nutzer. Das Zeichen {plone_svg} zeigt an dass eine Rolle von einer Gruppenzugehörigkeit geerbt wird.","Number of active objects":"Anzahl aktive Objekte","Object Size":"Grösse","Occurences":"Vorkommen","Ok":"OK","Only lowercase letters (a-z) without accents, numbers (0-9), and the characters \"-\", \"_\", and \".\" are allowed.":"Nur Kleinbuchstaben (a-z) ohne Umlaute oder Sonderzeichen, Zahlen (0-9) und die beiden Zeichen \"-\" und \"_\", und \".\" sind erlaubt.","Open in a new tab":"In neuem Tab öffnen","Open menu":"Menü öffnen","Open object browser":"Objekt-Browser öffnen","Origin":"Quelle","Page":"Seite","Parent fieldset":"Eltern-Fieldset","Password":"Passwort","Password reset":"Passwort zurücksetzen","Passwords do not match.":"Die Passwörter stimmen nicht überein.","Paste":"Einfügen","Paste blocks":"Blöcke einfügen","Perform the following actions:":"Führen Sie die folgenden Aktionen aus:","Permissions have been updated successfully":"Berechtigungen wurden erfolgreich aktualisiert","Permissions updated":"Berechtigungen aktualisiert","Personal Information":"Persönliche Informationen","Personal Preferences":"Meine Einstellungen","Personal tools":"Persönliche Einstellungen","Persons responsible for creating the content of this item. Please enter a list of user names, one per line. The principal creator should come first.":"Eine Liste von Personen, die an der Erstellung dieses Artikels beteiligt waren. Bitte geben Sie einen Benutzernamen pro Zeile ein. Der Hauptverantwortliche sollte zuerst genannt werden.","Please choose an existing content as source for this element":"Bitte wählen sie einen existierenden Inhalt als Quelle für dieses Element aus","Please continue with the upgrade.":"Bitte fahren Sie mit der Aktualisierung fort.","Please ensure you have a backup of your site before performing the upgrade.":"Bitte stellen Sie sicher, dass Sie über eine Sicherungskopie verfügen, bevor Sie die Aktualisierung durchführen.","Please enter a valid URL by deleting the block and adding a new video block.":"Geben Sie eine gültige URL ","Please enter the Embed Code provided by Google Maps -> Share -> Embed map. It should contain the