From 019c7dd4b64d44cf8e313b7c27c049bd8b6b0779 Mon Sep 17 00:00:00 2001 From: melinoix Date: Mon, 14 Oct 2024 14:13:18 +0200 Subject: [PATCH 01/29] Correct plurial Questions or singular question --- frontend/messages/en.json | 4 +++- frontend/messages/fr.json | 4 +++- frontend/src/lib/components/Forms/Question.svelte | 7 ++++++- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/frontend/messages/en.json b/frontend/messages/en.json index 8e529943e..1dea04c1b 100644 --- a/frontend/messages/en.json +++ b/frontend/messages/en.json @@ -774,5 +774,7 @@ "librariesCanOnlyBeLoadedByAdmin": "Libraries can only be loaded by an administrator", "catalog": "Catalog", "actions": "Actions", - "operations": "Operations" + "operations": "Operations", + "questionSingular": "Question", + "questionPlurial": "Questions" } diff --git a/frontend/messages/fr.json b/frontend/messages/fr.json index fb1caf229..7bf2ac8ec 100644 --- a/frontend/messages/fr.json +++ b/frontend/messages/fr.json @@ -688,5 +688,7 @@ "backupLowerVersionError": "Une erreur s'est produite, la version de sauvegarde est peut-être trop ancienne, si c'est le cas, elle doit être mise à jour avant de réessayer.", "thirdParty": "Gestion des tiers", "catalog": "Catalogue", - "actions": "Actions" + "actions": "Actions", + "questionSingular": "Question", + "questionPlurial": "Questions" } diff --git a/frontend/src/lib/components/Forms/Question.svelte b/frontend/src/lib/components/Forms/Question.svelte index a1076aa04..1983e3378 100644 --- a/frontend/src/lib/components/Forms/Question.svelte +++ b/frontend/src/lib/components/Forms/Question.svelte @@ -4,6 +4,7 @@ import { RadioGroup, RadioItem } from '@skeletonlabs/skeleton'; let _class = 'w-fit'; + import * as m from '$paraglide/messages.js'; export { _class as class }; export let label: string | undefined = undefined; @@ -16,6 +17,10 @@ $: classesTextField = (errors: string[] | undefined) => errors && errors.length > 0 ? 'input-error' : ''; + let questionLabel = + $value.questions.length > 1 + ? `${$value.questions.length} ${m.questionPlurial()}` + : `1 ${m.questionSingular()}`;
@@ -25,7 +30,7 @@ >{label} * {:else} - + {/if} {/if} {#if $errors && $errors.length > 0} From 44dc310104cd8c25646f965d73d4de5b964c0b3d Mon Sep 17 00:00:00 2001 From: melinoix Date: Mon, 14 Oct 2024 16:27:08 +0200 Subject: [PATCH 02/29] Changed Plurial to Plural --- frontend/messages/en.json | 2 +- frontend/messages/fr.json | 2 +- frontend/src/lib/components/Forms/Question.svelte | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/frontend/messages/en.json b/frontend/messages/en.json index 1dea04c1b..79857bc4d 100644 --- a/frontend/messages/en.json +++ b/frontend/messages/en.json @@ -776,5 +776,5 @@ "actions": "Actions", "operations": "Operations", "questionSingular": "Question", - "questionPlurial": "Questions" + "questionPlural": "Questions" } diff --git a/frontend/messages/fr.json b/frontend/messages/fr.json index 7bf2ac8ec..ffd481f76 100644 --- a/frontend/messages/fr.json +++ b/frontend/messages/fr.json @@ -690,5 +690,5 @@ "catalog": "Catalogue", "actions": "Actions", "questionSingular": "Question", - "questionPlurial": "Questions" + "questionPlural": "Questions" } diff --git a/frontend/src/lib/components/Forms/Question.svelte b/frontend/src/lib/components/Forms/Question.svelte index 1983e3378..24c3f4ba2 100644 --- a/frontend/src/lib/components/Forms/Question.svelte +++ b/frontend/src/lib/components/Forms/Question.svelte @@ -19,7 +19,7 @@ errors && errors.length > 0 ? 'input-error' : ''; let questionLabel = $value.questions.length > 1 - ? `${$value.questions.length} ${m.questionPlurial()}` + ? `${$value.questions.length} ${m.questionPlural()}` : `1 ${m.questionSingular()}`; From 66f51f28bfad736bc7beccdd062dc6435f51c307 Mon Sep 17 00:00:00 2001 From: melinoix Date: Tue, 15 Oct 2024 10:27:12 +0200 Subject: [PATCH 03/29] Changed plural form to tags --- enterprise/backend/poetry.lock | 34 +++++++++++++------ enterprise/backend/pyproject.toml | 1 + .../src/lib/components/Forms/Question.svelte | 6 +--- .../[id=uuid]/TreeViewItemContent.svelte | 16 +++++++-- 4 files changed, 39 insertions(+), 18 deletions(-) diff --git a/enterprise/backend/poetry.lock b/enterprise/backend/poetry.lock index 0ed5e2f19..bd6b42841 100644 --- a/enterprise/backend/poetry.lock +++ b/enterprise/backend/poetry.lock @@ -27,13 +27,13 @@ files = [ [[package]] name = "django" -version = "5.1" +version = "5.1.2" description = "A high-level Python web framework that encourages rapid development and clean, pragmatic design." optional = false python-versions = ">=3.10" files = [ - {file = "Django-5.1-py3-none-any.whl", hash = "sha256:d3b811bf5371a26def053d7ee42a9df1267ef7622323fe70a601936725aa4557"}, - {file = "Django-5.1.tar.gz", hash = "sha256:848a5980e8efb76eea70872fb0e4bc5e371619c70fffbe48e3e1b50b2c09455d"}, + {file = "Django-5.1.2-py3-none-any.whl", hash = "sha256:f11aa87ad8d5617171e3f77e1d5d16f004b79a2cf5d2e1d2b97a6a1f8e9ba5ed"}, + {file = "Django-5.1.2.tar.gz", hash = "sha256:bd7376f90c99f96b643722eee676498706c9fd7dc759f55ebfaf2c08ebcdf4f0"}, ] [package.dependencies] @@ -84,13 +84,13 @@ testing = ["pytest", "pytest-benchmark"] [[package]] name = "pytest" -version = "8.3.2" +version = "8.3.3" description = "pytest: simple powerful testing with Python" optional = false python-versions = ">=3.8" files = [ - {file = "pytest-8.3.2-py3-none-any.whl", hash = "sha256:4ba08f9ae7dcf84ded419494d229b48d0903ea6407b030eaec46df5e6a73bba5"}, - {file = "pytest-8.3.2.tar.gz", hash = "sha256:c132345d12ce551242c87269de812483f5bcc87cdbb4722e48487ba194f9fdce"}, + {file = "pytest-8.3.3-py3-none-any.whl", hash = "sha256:a6853c7375b2663155079443d2e45de913a911a11d669df02a50814944db57b2"}, + {file = "pytest-8.3.3.tar.gz", hash = "sha256:70b98107bd648308a7952b06e6ca9a50bc660be218d53c257cc1fc94fda10181"}, ] [package.dependencies] @@ -102,6 +102,20 @@ pluggy = ">=1.5,<2" [package.extras] dev = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"] +[[package]] +name = "python-dotenv" +version = "1.0.1" +description = "Read key-value pairs from a .env file and set them as environment variables" +optional = false +python-versions = ">=3.8" +files = [ + {file = "python-dotenv-1.0.1.tar.gz", hash = "sha256:e324ee90a023d808f1959c46bcbc04446a10ced277783dc6ee09987c37ec10ca"}, + {file = "python_dotenv-1.0.1-py3-none-any.whl", hash = "sha256:f7b63ef50f1b690dddf550d03497b66d609393b40b564ed0d674909a68ebf16a"}, +] + +[package.extras] +cli = ["click (>=5.0)"] + [[package]] name = "sqlparse" version = "0.5.1" @@ -119,16 +133,16 @@ doc = ["sphinx"] [[package]] name = "tzdata" -version = "2024.1" +version = "2024.2" description = "Provider of IANA time zone data" optional = false python-versions = ">=2" files = [ - {file = "tzdata-2024.1-py2.py3-none-any.whl", hash = "sha256:9068bc196136463f5245e51efda838afa15aaeca9903f49050dfa2679db4d252"}, - {file = "tzdata-2024.1.tar.gz", hash = "sha256:2674120f8d891909751c38abcdfd386ac0a5a1127954fbc332af6b5ceae07efd"}, + {file = "tzdata-2024.2-py2.py3-none-any.whl", hash = "sha256:a48093786cdcde33cad18c2555e8532f34422074448fbc874186f0abd79565cd"}, + {file = "tzdata-2024.2.tar.gz", hash = "sha256:7d85cc416e9382e69095b7bdf4afd9e3880418a2413feec7069d533d6b4e31cc"}, ] [metadata] lock-version = "2.0" python-versions = "^3.11" -content-hash = "8a80aa85d51ed80a0e0507445c58329043159fbfe335ea462f15c71c3275f678" +content-hash = "a6d699f628281abbe5ea4434fcb028a794b72ab9946b2739d2a6fa921e552d80" diff --git a/enterprise/backend/pyproject.toml b/enterprise/backend/pyproject.toml index 8c69ed480..e57da8488 100644 --- a/enterprise/backend/pyproject.toml +++ b/enterprise/backend/pyproject.toml @@ -8,6 +8,7 @@ readme = "README.md" [tool.poetry.dependencies] python = "^3.11" django = "^5.1" +python-dotenv = "^1.0.1" [tool.poetry.group.dev.dependencies] pytest = "^8.3.2" diff --git a/frontend/src/lib/components/Forms/Question.svelte b/frontend/src/lib/components/Forms/Question.svelte index 24c3f4ba2..67a990925 100644 --- a/frontend/src/lib/components/Forms/Question.svelte +++ b/frontend/src/lib/components/Forms/Question.svelte @@ -17,10 +17,6 @@ $: classesTextField = (errors: string[] | undefined) => errors && errors.length > 0 ? 'input-error' : ''; - let questionLabel = - $value.questions.length > 1 - ? `${$value.questions.length} ${m.questionPlural()}` - : `1 ${m.questionSingular()}`;
@@ -30,7 +26,7 @@ >{label} * {:else} - + {/if} {/if} {#if $errors && $errors.length > 0} diff --git a/frontend/src/routes/(app)/(third-party)/compliance-assessments/[id=uuid]/TreeViewItemContent.svelte b/frontend/src/routes/(app)/(third-party)/compliance-assessments/[id=uuid]/TreeViewItemContent.svelte index b11818e9b..31ea766b4 100644 --- a/frontend/src/routes/(app)/(third-party)/compliance-assessments/[id=uuid]/TreeViewItemContent.svelte +++ b/frontend/src/routes/(app)/(third-party)/compliance-assessments/[id=uuid]/TreeViewItemContent.svelte @@ -156,9 +156,19 @@ {/each} {/if} {#if node.question.questions} - {node.question.questions.length} {m.questionOrQuestions()} + {#if node.question.questions.length > 1} + {node.question.questions.length} {m.questionPlural()} + {:else} + {node.question.questions.length} {m.questionSingular()} + {/if} {/if}
From d7164ed5f95a9fe971d794342d55252b2eb141a1 Mon Sep 17 00:00:00 2001 From: melinoix <105644053+melinoix@users.noreply.github.com> Date: Wed, 16 Oct 2024 10:17:10 +0200 Subject: [PATCH 04/29] =?UTF-8?q?chore:=20update=20translations=20with=20F?= =?UTF-8?q?ink=20=F0=9F=90=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/messages/ar.json | 4 +++- frontend/messages/de.json | 4 +++- frontend/messages/en.json | 1 - frontend/messages/es.json | 4 +++- frontend/messages/fr.json | 5 ++--- frontend/messages/hi.json | 4 +++- frontend/messages/it.json | 4 +++- frontend/messages/nl.json | 4 +++- frontend/messages/pl.json | 4 +++- frontend/messages/pt.json | 4 +++- frontend/messages/ro.json | 4 +++- frontend/messages/ur.json | 4 +++- 12 files changed, 32 insertions(+), 14 deletions(-) diff --git a/frontend/messages/ar.json b/frontend/messages/ar.json index 1250f7898..066a34f33 100644 --- a/frontend/messages/ar.json +++ b/frontend/messages/ar.json @@ -637,5 +637,7 @@ "waitingRiskAcceptances": "مرحبًا! لديك حاليًا {number} مخاطرة معلقة .يمكنك العثور عليها في علامة التبويب المخاطر.", "backupLoadingError": "حدث خطأ أثناء تحميل النسخة الاحتياطية.", "backupGreaterVersionError": "لا يمكن تحميل النسخة الاحتياطية، إصدار النسخة الاحتياطية أعلى من الإصدار الحالي للتطبيق الخاص بك.", - "backupLowerVersionError": "حدث خطأ، قد تكون نسخة النسخ الاحتياطي قديمة جدًا، إذا كان الأمر كذلك فيجب تحديثها قبل إعادة المحاولة." + "backupLowerVersionError": "حدث خطأ، قد تكون نسخة النسخ الاحتياطي قديمة جدًا، إذا كان الأمر كذلك فيجب تحديثها قبل إعادة المحاولة.", + "questionSingular": "سؤال", + "questionPlural": "أسئلة" } diff --git a/frontend/messages/de.json b/frontend/messages/de.json index 7777a980b..843e3409c 100644 --- a/frontend/messages/de.json +++ b/frontend/messages/de.json @@ -674,5 +674,7 @@ "waitingRiskAcceptances": "Hallo! Sie haben derzeit {number} Risiko{s} zur Annahme ausstehend. Sie finden sie auf der Registerkarte „Risiken“.", "backupLoadingError": "Beim Laden der Sicherung ist ein Fehler aufgetreten.", "backupGreaterVersionError": "Das Backup kann nicht geladen werden, die Version des Backups ist höher als die aktuelle Version Ihrer Anwendung.", - "backupLowerVersionError": "Ein Fehler ist aufgetreten. Die Sicherungsversion ist möglicherweise zu alt. Wenn dies der Fall ist, muss sie vor einem erneuten Versuch aktualisiert werden." + "backupLowerVersionError": "Ein Fehler ist aufgetreten. Die Sicherungsversion ist möglicherweise zu alt. Wenn dies der Fall ist, muss sie vor einem erneuten Versuch aktualisiert werden.", + "questionSingular": "Frage", + "questionPlural": "Fragen" } diff --git a/frontend/messages/en.json b/frontend/messages/en.json index 79857bc4d..ded5666c9 100644 --- a/frontend/messages/en.json +++ b/frontend/messages/en.json @@ -773,7 +773,6 @@ "availableSeats": "Available seats", "librariesCanOnlyBeLoadedByAdmin": "Libraries can only be loaded by an administrator", "catalog": "Catalog", - "actions": "Actions", "operations": "Operations", "questionSingular": "Question", "questionPlural": "Questions" diff --git a/frontend/messages/es.json b/frontend/messages/es.json index cabbdad0a..8380c0114 100644 --- a/frontend/messages/es.json +++ b/frontend/messages/es.json @@ -674,5 +674,7 @@ "waitingRiskAcceptances": "Hola! Actualmente tienes {number} riesgo{s} aceptación pendiente. Puedes encontrarlos en la pestaña de riesgo.", "backupLoadingError": "Se produjo un error al cargar la copia de seguridad.", "backupGreaterVersionError": "No se puede cargar la copia de seguridad, la versión de la copia de seguridad es superior a la versión actual de la aplicación.", - "backupLowerVersionError": "Se produjo un error, la versión de respaldo puede ser demasiado antigua, si es así debe actualizarse antes de volver a intentarlo." + "backupLowerVersionError": "Se produjo un error, la versión de respaldo puede ser demasiado antigua, si es así debe actualizarse antes de volver a intentarlo.", + "questionSingular": "Pregunta", + "questionPlural": "Preguntas" } diff --git a/frontend/messages/fr.json b/frontend/messages/fr.json index ffd481f76..497d742f7 100644 --- a/frontend/messages/fr.json +++ b/frontend/messages/fr.json @@ -635,6 +635,7 @@ "referenceLink": "Lien de référence", "mission": "Mission", "ownedFolders": "Domaines possédés", + "thirdParty": "Gestion des tiers", "entityAssessment": "Évaluation de l'entité", "entityAssessments": "Évaluations des entités", "addEntityAssessment": "Ajouter une évaluation d'entité", @@ -674,7 +675,6 @@ "waitingRiskAcceptances": "Bonjour ! Vous avez actuellement {number} risque{s} en attente d'acceptation. Vous pouvez les retrouver dans l'onglet risque.", "successfullyUpdatedClientSettings": "Paramètres du client mis à jour avec succès. Vous pouvez rafrachir la page.", "xRaysEmptyMessage": "Vous devez créer au moins un projet pour utiliser X-rays.", - "NoPreviewMessage": "Aucun aperçu disponible.", "suggestControls": "Mesures recommendées", "createAppliedControlsFromSuggestionsHelpText": "Créer des mesures appliquées à partir des mesures de référence suggérées", "createAppliedControlsFromSuggestionsSuccess": "Mesures appliquées créées avec succès à partir des suggestions", @@ -686,9 +686,8 @@ "backupLoadingError": "Une erreur s'est produite lors du chargement de la sauvegarde.", "backupGreaterVersionError": "Impossible de charger la sauvegarde, la version de la sauvegarde est supérieure à la version actuelle de votre application.", "backupLowerVersionError": "Une erreur s'est produite, la version de sauvegarde est peut-être trop ancienne, si c'est le cas, elle doit être mise à jour avant de réessayer.", - "thirdParty": "Gestion des tiers", + "NoPreviewMessage": "Aucun aperçu disponible.", "catalog": "Catalogue", - "actions": "Actions", "questionSingular": "Question", "questionPlural": "Questions" } diff --git a/frontend/messages/hi.json b/frontend/messages/hi.json index e4c337cca..5c0e057c4 100644 --- a/frontend/messages/hi.json +++ b/frontend/messages/hi.json @@ -683,5 +683,7 @@ "waitingRiskAcceptances": "नमस्ते! आपके पास वर्तमान में {number} जोखिम स्वीकृति{s} लंबित हैं। आप उन्हें जोखिम टैब में पा सकते हैं।", "backupLoadingError": "बैकअप लोड करते समय एक त्रुटि हुई.", "backupGreaterVersionError": "बैकअप लोड नहीं किया जा सकता, बैकअप का संस्करण आपके एप्लिकेशन के वर्तमान संस्करण से अधिक है.", - "backupLowerVersionError": "कोई त्रुटि हुई, बैकअप संस्करण बहुत पुराना हो सकता है, यदि ऐसा है तो पुनः प्रयास करने से पहले उसे अद्यतन करना आवश्यक है।" + "backupLowerVersionError": "कोई त्रुटि हुई, बैकअप संस्करण बहुत पुराना हो सकता है, यदि ऐसा है तो पुनः प्रयास करने से पहले उसे अद्यतन करना आवश्यक है।", + "questionSingular": "सवाल", + "questionPlural": "प्रश्न" } diff --git a/frontend/messages/it.json b/frontend/messages/it.json index 270a386ee..9b5243db9 100644 --- a/frontend/messages/it.json +++ b/frontend/messages/it.json @@ -674,5 +674,7 @@ "waitingRiskAcceptances": "Ciao! Al momento hai {number} rischi{s} in attesa di accettazione. Puoi trovarli nella scheda rischi.", "backupLoadingError": "Si è verificato un errore durante il caricamento del backup.", "backupGreaterVersionError": "Impossibile caricare il backup, la versione del backup è successiva alla versione corrente dell'applicazione.", - "backupLowerVersionError": "Si è verificato un errore, la versione di backup potrebbe essere troppo vecchia. In tal caso, è necessario aggiornarla prima di riprovare." + "backupLowerVersionError": "Si è verificato un errore, la versione di backup potrebbe essere troppo vecchia. In tal caso, è necessario aggiornarla prima di riprovare.", + "questionSingular": "Domanda", + "questionPlural": "Domande" } diff --git a/frontend/messages/nl.json b/frontend/messages/nl.json index 46ef03578..104fcf9b7 100644 --- a/frontend/messages/nl.json +++ b/frontend/messages/nl.json @@ -674,5 +674,7 @@ "waitingRiskAcceptances": "Hallo! U hebt momenteel {number} risico{s} acceptatie in behandeling. U kunt ze vinden in het tabblad risico.", "backupLoadingError": "Er is een fout opgetreden tijdens het laden van de back-up.", "backupGreaterVersionError": "De back-up kan niet worden geladen. De versie van de back-up is hoger dan de huidige versie van uw applicatie.", - "backupLowerVersionError": "Er is een fout opgetreden. Mogelijk is de back-upversie te oud. Als dat zo is, moet u deze bijwerken voordat u het opnieuw probeert." + "backupLowerVersionError": "Er is een fout opgetreden. Mogelijk is de back-upversie te oud. Als dat zo is, moet u deze bijwerken voordat u het opnieuw probeert.", + "questionSingular": "Vraag", + "questionPlural": "Vragen" } diff --git a/frontend/messages/pl.json b/frontend/messages/pl.json index e8bca8574..d08dc552a 100644 --- a/frontend/messages/pl.json +++ b/frontend/messages/pl.json @@ -711,5 +711,7 @@ "waitingRiskAcceptances": "Cześć! Obecnie masz {number} ryzyko{s} oczekujące na akceptację. Możesz je znaleźć w zakładce ryzyko.", "backupLoadingError": "Wystąpił błąd podczas ładowania kopii zapasowej.", "backupGreaterVersionError": "Nie można załadować kopii zapasowej. Wersja kopii zapasowej jest nowsza niż bieżąca wersja aplikacji.", - "backupLowerVersionError": "Wystąpił błąd. Wersja kopii zapasowej może być za stara. Jeśli tak, należy ją zaktualizować przed ponowną próbą." + "backupLowerVersionError": "Wystąpił błąd. Wersja kopii zapasowej może być za stara. Jeśli tak, należy ją zaktualizować przed ponowną próbą.", + "questionSingular": "Pytanie", + "questionPlural": "Pytania" } diff --git a/frontend/messages/pt.json b/frontend/messages/pt.json index 72dacac56..dbce20fd3 100644 --- a/frontend/messages/pt.json +++ b/frontend/messages/pt.json @@ -674,5 +674,7 @@ "waitingRiskAcceptances": "Olá! No momento, você tem {number} aceitação de risco{s} pendente. Você pode encontrá-los na aba de risco.", "backupLoadingError": "Ocorreu um erro ao carregar o backup.", "backupGreaterVersionError": "Não é possível carregar o backup, a versão do backup é superior à versão atual do seu aplicativo.", - "backupLowerVersionError": "Ocorreu um erro, a versão de backup pode ser muito antiga. Se for o caso, ela deve ser atualizada antes de tentar novamente." + "backupLowerVersionError": "Ocorreu um erro, a versão de backup pode ser muito antiga. Se for o caso, ela deve ser atualizada antes de tentar novamente.", + "questionSingular": "Pergunta", + "questionPlural": "Questões" } diff --git a/frontend/messages/ro.json b/frontend/messages/ro.json index b0fb01333..f49017703 100644 --- a/frontend/messages/ro.json +++ b/frontend/messages/ro.json @@ -679,5 +679,7 @@ "waitingRiskAcceptances": "Buna ziua! În prezent, aveți {number} riscul{s} în așteptare. Le puteți găsi în fila de riscuri.", "backupLoadingError": "A apărut o eroare la încărcarea copiei de rezervă.", "backupGreaterVersionError": "Nu se poate încărca copia de rezervă, versiunea copiei de rezervă este mai mare decât versiunea curentă a aplicației dvs.", - "backupLowerVersionError": "A apărut o eroare, versiunea de rezervă poate fi prea veche, dacă da, trebuie actualizată înainte de a reîncerca." + "backupLowerVersionError": "A apărut o eroare, versiunea de rezervă poate fi prea veche, dacă da, trebuie actualizată înainte de a reîncerca.", + "questionSingular": "Întrebare", + "questionPlural": "Întrebări" } diff --git a/frontend/messages/ur.json b/frontend/messages/ur.json index db0620133..942b09660 100644 --- a/frontend/messages/ur.json +++ b/frontend/messages/ur.json @@ -683,5 +683,7 @@ "waitingRiskAcceptances": "ہیلو! آپ کے پاس فی الحال {number} خطرے کی منظوری {s} زیر التواء ہیں۔ آپ انہیں خطرے والے ٹیب میں پا سکتے ہیں۔", "backupLoadingError": "بیک اپ لوڈ کرتے وقت ایک خرابی پیش آگئی۔", "backupGreaterVersionError": "بیک اپ لوڈ نہیں ہو سکتا، بیک اپ کا ورژن آپ کی ایپلیکیشن کے موجودہ ورژن سے زیادہ ہے۔", - "backupLowerVersionError": "ایک خرابی پیش آ گئی، بیک اپ ورژن بہت پرانا ہو سکتا ہے، اگر ایسا ہے تو اسے دوبارہ کوشش کرنے سے پہلے اپ ڈیٹ کرنا ضروری ہے۔" + "backupLowerVersionError": "ایک خرابی پیش آ گئی، بیک اپ ورژن بہت پرانا ہو سکتا ہے، اگر ایسا ہے تو اسے دوبارہ کوشش کرنے سے پہلے اپ ڈیٹ کرنا ضروری ہے۔", + "questionSingular": "سوال", + "questionPlural": "سوالات" } From 2836d1767660bac2df64f0bcef702a88467b9e10 Mon Sep 17 00:00:00 2001 From: Mohamed-Hacene Date: Wed, 16 Oct 2024 16:06:27 +0200 Subject: [PATCH 05/29] chore: remove unused import --- frontend/src/lib/components/Forms/Question.svelte | 1 - 1 file changed, 1 deletion(-) diff --git a/frontend/src/lib/components/Forms/Question.svelte b/frontend/src/lib/components/Forms/Question.svelte index 67a990925..a1076aa04 100644 --- a/frontend/src/lib/components/Forms/Question.svelte +++ b/frontend/src/lib/components/Forms/Question.svelte @@ -4,7 +4,6 @@ import { RadioGroup, RadioItem } from '@skeletonlabs/skeleton'; let _class = 'w-fit'; - import * as m from '$paraglide/messages.js'; export { _class as class }; export let label: string | undefined = undefined; From 8df803e8c9cfd628b878dead0e9cb915a07b7aa3 Mon Sep 17 00:00:00 2001 From: melinoix <105644053+melinoix@users.noreply.github.com> Date: Thu, 17 Oct 2024 12:58:57 +0200 Subject: [PATCH 06/29] =?UTF-8?q?chore:=20update=20translations=20with=20F?= =?UTF-8?q?ink=20=F0=9F=90=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/messages/ar.json | 49 +++++++++++++++++++++++---- frontend/messages/de.json | 55 ++++++++++++++++++++++++++++++- frontend/messages/en.json | 1 - frontend/messages/es.json | 55 ++++++++++++++++++++++++++++++- frontend/messages/fr.json | 69 +++++++++++++++++++++++++++++++++++---- frontend/messages/hi.json | 33 ++++++++++++++++++- frontend/messages/it.json | 60 +++++++++++++++++++++++++++++++++- frontend/messages/nl.json | 55 ++++++++++++++++++++++++++++++- frontend/messages/pl.json | 26 ++++++++++++++- frontend/messages/pt.json | 55 ++++++++++++++++++++++++++++++- frontend/messages/ro.json | 37 ++++++++++++++++++++- frontend/messages/ur.json | 31 +++++++++++++++++- 12 files changed, 502 insertions(+), 24 deletions(-) diff --git a/frontend/messages/ar.json b/frontend/messages/ar.json index 1250f7898..f3a1b4950 100644 --- a/frontend/messages/ar.json +++ b/frontend/messages/ar.json @@ -37,6 +37,9 @@ "associatedDomains": "النطاقات المرتبطة", "associatedProjects": "المشاريع المرتبطة", "associatedUsers": "المستخدمين المرتبطين", + "associatedEntityAssessments": "تقييمات الكيانات المرتبطة", + "associatedRepresentatives": "الممثلون المرتبطون", + "associatedSolutions": "الحلول المرتبطة", "home": "الرئيسية", "edit": "تحرير", "changePassword": "تغيير كلمة المرور", @@ -50,13 +53,16 @@ "analytics": "تحليلات", "calendar": "التقويم", "threats": "التهديدات", + "threatsColon": "التهديدات:", "referenceControls": "التحكمات المرجعية", + "referenceControlsColon": "ضوابط المرجع:", "appliedControls": "التحكمات المطبقة", "assets": "الأصول", "asset": "الأصل", "policy": "السياسة", "policies": "السياسات", "riskMatrices": "مصفوفات المخاطر", + "riskMatricesColon": "مصفوفات المخاطر:", "riskAssessments": "تقييمات المخاطر", "riskScenarios": "سيناريوهات المخاطر", "riskScenario": "سيناريو المخاطر", @@ -67,6 +73,7 @@ "evidences": "الأدلة", "evidence": "الدليل", "frameworks": "الأطر", + "frameworksColon": "الأطر:", "domains": "النطاقات", "projects": "المشاريع", "users": "المستخدمين", @@ -74,6 +81,7 @@ "userGroups": "مجموعات المستخدمين", "roleAssignments": "تعيينات الأدوار", "xRays": "X-rays", + "inspect": "فحص", "scoringAssistant": "مساعد التقييم", "scoringAssistantNoMatrixError": "يرجى استيراد مصفوفة المخاطر من متجر المكتبات للوصول إلى هذه الصفحة", "libraries": "المكتبات", @@ -96,6 +104,7 @@ "referenceControl": "التحكم المرجعي", "appliedControl": "التحكم المطبق", "provider": "المزود", + "providerColon": "مزود:", "domain": "النطاق", "urn": "URN", "id": "معرف", @@ -104,11 +113,13 @@ "currentLevel": "المستوى الحالي", "residualLevel": "المستوى المتبقي", "riskMatrix": "مصفوفة المخاطر", + "riskMatrixColon": "مصفوفة المخاطر:", "project": "المشروع", "folder": "المجلد", "riskAssessment": "تقييم المخاطر", "threat": "التهديد", "framework": "الإطار", + "frameworkColon": "نطاق:", "file": "الملف", "language": "اللغة", "builtin": "مضمن", @@ -120,6 +131,7 @@ "noEntriesFound": "لم يتم العثور على مدخلات", "rowCount": "عرض {start} إلى {end} من {total}", "status": "الحالة", + "result": "نتيجة", "effort": "الجهد", "cost": "يكلف", "impact": "التأثير", @@ -152,6 +164,7 @@ "isActive": "نشط", "dateJoined": "تاريخ الانضمام", "version": "الإصدار", + "versionColon": "إصدار:", "treatment": "المعالجة", "currentProba": "الاحتمالية الحالية", "currentImpact": "التأثير الحالي", @@ -162,8 +175,10 @@ "dueDate": "تاريخ الاستحقاق", "attachment": "المرفق", "observation": "الملاحظة", + "noObservation": "لا يوجد ملاحظة", "importMatrices": "استيراد المصفوفات", "importFrameworks": "استيراد الأطر", + "importMappings": "استيراد المخططات", "summary": "الملخص", "composer": "الملحن", "statistics": "الإحصائيات", @@ -353,6 +368,7 @@ "loadingLibraryUploadButton": "جارٍ تحميل زر تحميل المكتبة", "errorOccurredWhileLoadingLibrary": "حدث الخطأ التالي أثناء تحميل نموذج المكتبة", "packager": "المعبئ", + "packagerColon": "المعبئ:", "dependencies": "التبعيات", "copyright": "حقوق الطبع والنشر", "addYourLibrary": "أضف مكتبتك الخاصة", @@ -461,15 +477,20 @@ "inProgress": "قيد التقدم", "inReview": "قيد المراجعة", "deprecated": "غير محدث", + "onHold": "في الانتظار", "done": "مكتمل", "nonCompliant": "غير متوافق", + "nonCompliantMinor": "قاصر غير ملتزم", + "nonCompliantMajor": "غير متوافق مع التخصص", "partiallyCompliant": "متوافق جزئيًا", "compliant": "متوافق", "notApplicable": "غير قابل للتطبيق", + "notAssessed": "لم يتم تقييمه", "administrator": "المسؤول", "domainManager": "مدير النطاق", "analyst": "المحلل", "successfullyCreatedObject": "تم إنشاء الكائن {object} بنجاح", + "successfullyDuplicateObject": "تم تكرار الكائن {object} بنجاح", "successfullyUpdatedObject": "تم تحديث الكائن {object} بنجاح", "successfullySavedObject": "تم حفظ الكائن {object} بنجاح", "successfullyDeletedObject": "تم حذف الكائن {object} بنجاح", @@ -582,13 +603,7 @@ "identityProviders": "مزودي الهوية", "clientIDHelpText": "معرف التطبيق، أو مفتاح المستهلك", "secretHelpText": "سرية API، سرية العميل، أو سرية المستهلك", - "SAMLIdPConfiguration": "تكوين SAML IdP", - "SPConfiguration": "تكوين SP", "advancedSettings": "الإعدادات المتقدمة", - "IdPEntityID": "معرف كيان IdP", - "metadataURL": "عنوان URL للبيانات الوصفية", - "SSOURL": "عنوان URL لتسجيل الدخول الموحد", - "SLOURL": "عنوان URL لتسجيل الخروج الموحد", "x509Cert": "شهادة x509", "SPEntityID": "معرف كيان SP", "attributeMappingUID": "تعيين معرف السمة", @@ -615,6 +630,9 @@ "enableSSO": "تمكين تسجيل الدخول الموحد", "failedSSO": "فشل تسجيل الدخول الموحد، يرجى الاتصال بمسؤول النظام", "UserDoesNotExist": "المستخدم غير معلن، يرجى الاتصال بمسؤول النظام", + "idPInitiatedSSORejected": "تم رفض تسجيل الدخول الفردي الذي بدأه موفر الهوية، يرجى الاتصال بالمسؤول الخاص بك", + "permissionDenied": "تم رفض الإذن", + "signupClosed": "تم إغلاق التسجيل", "loginSSO": "تسجيل الدخول باستخدام تسجيل الدخول الموحد", "or": "أو", "errorImportingLibrary": "خطأ أثناء استيراد المكتبة", @@ -624,8 +642,15 @@ "ssoSettingsDescription": "قم بتكوين إعدادات تسجيل الدخول الموحد هنا.", "sso": "SSO", "isSso": "هل هو SSO", + "suggestion": "اقتراح", + "suggestionColon": "اقتراح:", + "annotationColon": "ملاحظة:", "requirementMappingSets": "ربط الأطر", "size": "الحجم", + "clientSettings": "إعدادات العميل", + "invalidFileType": "نوع الملف غير صالح", + "logoHelpText": "سيتم عرض الشعار في رأس التطبيق. التنسيقات المقبولة هي PNG وJPEG وWEBP وSVG.", + "faviconHelpText": "سيتم عرض الرمز المفضل في علامة تبويب المتصفح. التنسيقات المقبولة هي ICO وPNG وJPEG وWEBP", "financial": "المالي", "legal": "القانوني", "reputation": "السمعة", @@ -635,7 +660,17 @@ "availability": "التوفر", "authenticity": "الأصالة", "waitingRiskAcceptances": "مرحبًا! لديك حاليًا {number} مخاطرة معلقة .يمكنك العثور عليها في علامة التبويب المخاطر.", + "createAudit": "إنشاء التدقيق", + "nameDuplicate": "الاسم موجود بالفعل", + "noAnswer": "لا يوجد جواب", + "sendQuestionnaire": "إرسال الاستبيان", + "sureToSendQuestionnaire": "هل أنت متأكد من أنك تريد إرسال الاستبيان: {questionnaire} ؟", + "createAppliedControlsFromSuggestionsSuccess": "تم تطبيق عناصر التحكم بنجاح من عناصر التحكم المرجعية المقترحة", "backupLoadingError": "حدث خطأ أثناء تحميل النسخة الاحتياطية.", "backupGreaterVersionError": "لا يمكن تحميل النسخة الاحتياطية، إصدار النسخة الاحتياطية أعلى من الإصدار الحالي للتطبيق الخاص بك.", - "backupLowerVersionError": "حدث خطأ، قد تكون نسخة النسخ الاحتياطي قديمة جدًا، إذا كان الأمر كذلك فيجب تحديثها قبل إعادة المحاولة." + "backupLowerVersionError": "حدث خطأ، قد تكون نسخة النسخ الاحتياطي قديمة جدًا، إذا كان الأمر كذلك فيجب تحديثها قبل إعادة المحاولة.", + "NoPreviewMessage": "لا يوجد معاينة متاحة.", + "entityAssessmentEvidenceHelpText": "استبيان خارجي", + "errorLicenseSeatsExceeded": "لقد تجاوز عدد مقاعد الترخيص، ولن تتمكن من منح حقوق التحرير لهذا المستخدم. يرجى الاتصال بالمسؤول لديك.", + "showImagesUnauthenticated": "إظهار الشعار والرمز المفضل للمستخدمين غير المعتمدين" } diff --git a/frontend/messages/de.json b/frontend/messages/de.json index 7777a980b..79fecc4db 100644 --- a/frontend/messages/de.json +++ b/frontend/messages/de.json @@ -81,6 +81,7 @@ "userGroups": "Benutzergruppen", "roleAssignments": "Rollenverteilungen", "xRays": "X-rays", + "inspect": "Überprüfen", "scoringAssistant": "Bewertungshilfe", "scoringAssistantNoMatrixError": "Bitte importieren Sie eine Risikomatrix aus dem Bibliotheksladen, um auf diese Seite zuzugreifen", "libraries": "Bibliotheken", @@ -174,8 +175,10 @@ "dueDate": "Fälligkeitsdatum", "attachment": "Anhang", "observation": "Beobachtung", + "noObservation": "Keine Beobachtung", "importMatrices": "Matrizen importieren", "importFrameworks": "Frameworks importieren", + "importMappings": "Zuordnungen importieren", "summary": "Zusammenfassung", "composer": "Komponist", "statistics": "Statistiken", @@ -591,11 +594,43 @@ "evidenceNoFile": "Für den Beweis wurde keine Datei hochgeladen", "requirementAppliedControlHelpText": "Mit den ausgewählten Maßnahmen verknüpfte Nachweise werden automatisch der Anforderung zugeordnet.", "requirementEvidenceHelpText": "Über diese Registerkarte können Sie der Anforderung weitere Nachweise hinzufügen.", + "providerID": "Anbieter-ID", + "clientID": "Kunden-ID", + "secret": "Geheimnis", + "key": "Schlüssel", "settings": "Einstellungen", + "identityProvider": "Identitätsanbieter", + "identityProviders": "Identitätsanbieter", + "clientIDHelpText": "App-ID oder Consumer-Schlüssel", + "secretHelpText": "API-Geheimnis, Client-Geheimnis oder Consumer-Geheimnis", + "SAMLIdPConfiguration": "SAML IdP-Konfiguration", + "SPConfiguration": "SP-Konfiguration", "advancedSettings": "Erweiterte Einstellungen", + "IdPEntityID": "IdP-Entitäts-ID", + "metadataURL": "Metadaten-URL", + "SSOURL": "SSO-URL", + "SLOURL": "SLO-URL", + "x509Cert": "x509-Zertifikat", + "SPEntityID": "SP-Entitäts-ID", + "attributeMappingUID": "Attributzuordnungs-UID", + "allowRepeatAttributeName": "Wiederholten Attributnamen zulassen", + "allowSingleLabelDomains": "Einzellabel-Domänen zulassen", + "authnRequestSigned": "Authentisierungsanfrage signiert", + "digestAlgorithm": "Digest-Algorithmus", + "logoutRequestSigned": "Abmeldeanforderung unterzeichnet", + "logoutResponseSigned": "Logout-Antwort signiert", + "metadataSigned": "Metadaten signiert", + "nameIDEncrypted": "Namens-ID verschlüsselt", + "rejectDeprecatedAlgorithm": "Veralteten Algorithmus ablehnen", + "signatureAlgorithm": "Signaturalgorithmus", + "wantMessageSigned": "Nachricht signiert haben möchten", + "IdPConfiguration": "IdP-Konfiguration", "enableSSO": "Aktivieren von SSO", "failedSSO": "SSO-Authentifizierung fehlgeschlagen, bitte wenden Sie sich an Ihren Administrator", "UserDoesNotExist": "Benutzer nicht deklariert, bitte kontaktieren Sie Ihren Administrator", + "idPInitiatedSSORejected": "IdP-initiiertes SSO abgelehnt. Bitte wenden Sie sich an Ihren Administrator.", + "permissionDenied": "Zugriff verweigert", + "signupClosed": "Anmeldung geschlossen", "loginSSO": "Melden Sie sich bei SSO an", "or": "oder", "errorImportingLibrary": "Fehler beim Importieren der Bibliothek", @@ -629,6 +664,10 @@ "duplicate": "Duplikat", "duplicateRiskAssessment": "Duplizieren Sie die Risikobewertung", "size": "Größe", + "clientSettings": "Clienteinstellungen", + "invalidFileType": "Ungültiger Dateityp", + "logoHelpText": "Das Logo wird im Header der Anwendung angezeigt. Akzeptierte Formate sind PNG, JPEG, WEBP, SVG.", + "faviconHelpText": "Das Favicon wird im Browser-Tab angezeigt. Akzeptierte Formate sind ICO, PNG, JPEG, WEBP", "entity": "Juristische Person", "entities": "Entitäten", "addEntity": "Entität hinzufügen", @@ -672,7 +711,21 @@ "tableMode": "Tabellenmodus", "owner": "Eigentümer", "waitingRiskAcceptances": "Hallo! Sie haben derzeit {number} Risiko{s} zur Annahme ausstehend. Sie finden sie auf der Registerkarte „Risiken“.", + "licenseExpiration": "Ablauf der Lizenz", + "questionnaireMode": "Fragebogenmodus", + "createAudit": "Audit erstellen", + "createAuditHelpText": "Erstellen Sie ein Audit parallel zur Entitätsbewertung", + "nameDuplicate": "Name existiert bereits", + "noAnswer": "Keine Antwort", + "sendQuestionnaire": "Fragebogen abschicken", + "sureToSendQuestionnaire": "Möchten Sie den Fragebogen: {questionnaire} wirklich versenden?", + "createAppliedControlsFromSuggestionsSuccess": "Angewandte Kontrollen erfolgreich aus den vorgeschlagenen Referenzkontrollen erstellt", + "startDateHelpText": "Startdatum (nützlich für die Zeitleiste)", "backupLoadingError": "Beim Laden der Sicherung ist ein Fehler aufgetreten.", "backupGreaterVersionError": "Das Backup kann nicht geladen werden, die Version des Backups ist höher als die aktuelle Version Ihrer Anwendung.", - "backupLowerVersionError": "Ein Fehler ist aufgetreten. Die Sicherungsversion ist möglicherweise zu alt. Wenn dies der Fall ist, muss sie vor einem erneuten Versuch aktualisiert werden." + "backupLowerVersionError": "Ein Fehler ist aufgetreten. Die Sicherungsversion ist möglicherweise zu alt. Wenn dies der Fall ist, muss sie vor einem erneuten Versuch aktualisiert werden.", + "NoPreviewMessage": "Keine Vorschau verfügbar.", + "entityAssessmentEvidenceHelpText": "Ein externer Fragebogen", + "errorLicenseSeatsExceeded": "Die Anzahl der Lizenzplätze ist überschritten, Sie können diesem Benutzer keine Bearbeitungsrechte mehr erteilen. Bitte kontaktieren Sie Ihren Administrator.", + "showImagesUnauthenticated": "Nicht authentifizierten Benutzern Logo und Favicon anzeigen" } diff --git a/frontend/messages/en.json b/frontend/messages/en.json index f2abe7606..6ae264085 100644 --- a/frontend/messages/en.json +++ b/frontend/messages/en.json @@ -777,6 +777,5 @@ "showImagesUnauthenticatedHelpText": "If disabled, the regular CISO Assistant logo and favicon will be displayed on the login screen", "librariesCanOnlyBeLoadedByAdmin": "Libraries can only be loaded by an administrator", "catalog": "Catalog", - "actions": "Actions", "operations": "Operations" } diff --git a/frontend/messages/es.json b/frontend/messages/es.json index cabbdad0a..70f217b37 100644 --- a/frontend/messages/es.json +++ b/frontend/messages/es.json @@ -81,6 +81,7 @@ "userGroups": "Grupos de usuarios", "roleAssignments": "Asignaciones de roles", "xRays": "X-rays", + "inspect": "Inspeccionar", "scoringAssistant": "Asistente de puntuación", "scoringAssistantNoMatrixError": "Importe una matriz de riesgos desde la tienda de bibliotecas para acceder a esta página", "libraries": "Bibliotecas", @@ -174,8 +175,10 @@ "dueDate": "Fecha de vencimiento", "attachment": "Adjunto", "observation": "Observación", + "noObservation": "Sin observación", "importMatrices": "Importar matrices", "importFrameworks": "Importar marcos", + "importMappings": "Importar asignaciones", "summary": "Resumen", "composer": "Compositor", "statistics": "Estadísticas", @@ -591,11 +594,43 @@ "evidenceNoFile": "La evidencia no tiene ningún archivo subido", "requirementAppliedControlHelpText": "Las evidencias vinculadas a las medidas seleccionadas se asociarán automáticamente al requisito.", "requirementEvidenceHelpText": "Esta pestaña le permite agregar evidencias adicionales al requisito.", + "providerID": "Identificación del proveedor", + "clientID": "Identificación del cliente", + "secret": "Secreto", + "key": "Llave", "settings": "Ajustes", + "identityProvider": "Proveedor de identidad", + "identityProviders": "Proveedores de identidad", + "clientIDHelpText": "ID de la aplicación o clave del consumidor", + "secretHelpText": "Secreto de API, secreto de cliente o secreto de consumidor", + "SAMLIdPConfiguration": "Configuración de IdP SAML", + "SPConfiguration": "Configuración de SP", "advancedSettings": "Ajustes avanzados", + "IdPEntityID": "Identificación de entidad del IdP", + "metadataURL": "URL de metadatos", + "SSOURL": "URL de inicio de sesión único", + "SLOURL": "URL de SLO", + "x509Cert": "certificado x509", + "SPEntityID": "Identificación de entidad SP", + "attributeMappingUID": "UID de mapeo de atributos", + "allowRepeatAttributeName": "Permitir repetir nombre de atributo", + "allowSingleLabelDomains": "Permitir dominios de etiqueta única", + "authnRequestSigned": "Solicitud de autorización firmada", + "digestAlgorithm": "Algoritmo de resumen", + "logoutRequestSigned": "Solicitud de cierre de sesión firmada", + "logoutResponseSigned": "Respuesta de cierre de sesión firmada", + "metadataSigned": "Metadatos firmados", + "nameIDEncrypted": "Identificación de nombre cifrada", + "rejectDeprecatedAlgorithm": "Rechazar algoritmo obsoleto", + "signatureAlgorithm": "Algoritmo de firma", + "wantMessageSigned": "Quiero mensaje firmado", + "IdPConfiguration": "Configuración de IdP", "enableSSO": "Habilitar SSO", "failedSSO": "La autenticación SSO falló; comuníquese con su administrador", "UserDoesNotExist": "Usuario no declarado, por favor contacte a su administrador", + "idPInitiatedSSORejected": "Se rechazó el inicio de sesión único (SSO) iniciado por IdP; comuníquese con su administrador", + "permissionDenied": "Permiso denegado", + "signupClosed": "Inscripción cerrada", "loginSSO": "Inicie sesión en SSO", "or": "o", "errorImportingLibrary": "Error al importar la biblioteca", @@ -629,6 +664,10 @@ "duplicate": "Duplicar", "duplicateRiskAssessment": "Duplicar la evaluación de riesgo", "size": "Tamaño", + "clientSettings": "Configuración del cliente", + "invalidFileType": "Tipo de archivo no válido", + "logoHelpText": "El logotipo se mostrará en el encabezado de la aplicación. Los formatos aceptados son PNG, JPEG, WEBP y SVG.", + "faviconHelpText": "El favicon se mostrará en la pestaña del navegador. Los formatos aceptados son ICO, PNG, JPEG, WEBP", "entity": "Entidad", "entities": "Entidades", "addEntity": "Agregar entidad", @@ -672,7 +711,21 @@ "tableMode": "Modo de tabla", "owner": "Titular", "waitingRiskAcceptances": "Hola! Actualmente tienes {number} riesgo{s} aceptación pendiente. Puedes encontrarlos en la pestaña de riesgo.", + "licenseExpiration": "Caducidad de la licencia", + "questionnaireMode": "Modo cuestionario", + "createAudit": "Crear auditoría", + "createAuditHelpText": "Crear una auditoría junto con la evaluación de la entidad", + "nameDuplicate": "El nombre ya existe", + "noAnswer": "No hay respuesta", + "sendQuestionnaire": "Enviar cuestionario", + "sureToSendQuestionnaire": "¿Está seguro de que desea enviar el cuestionario: {questionnaire} ?", + "createAppliedControlsFromSuggestionsSuccess": "Controles aplicados creados exitosamente a partir de los controles de referencia sugeridos", + "startDateHelpText": "Fecha de inicio (útil para la cronología)", "backupLoadingError": "Se produjo un error al cargar la copia de seguridad.", "backupGreaterVersionError": "No se puede cargar la copia de seguridad, la versión de la copia de seguridad es superior a la versión actual de la aplicación.", - "backupLowerVersionError": "Se produjo un error, la versión de respaldo puede ser demasiado antigua, si es así debe actualizarse antes de volver a intentarlo." + "backupLowerVersionError": "Se produjo un error, la versión de respaldo puede ser demasiado antigua, si es así debe actualizarse antes de volver a intentarlo.", + "NoPreviewMessage": "No hay vista previa disponible.", + "entityAssessmentEvidenceHelpText": "Un cuestionario externo", + "errorLicenseSeatsExceeded": "Se ha excedido el número de licencias, no podrá otorgar derechos de edición a este usuario. Póngase en contacto con su administrador.", + "showImagesUnauthenticated": "Mostrar logotipo y favicono a usuarios no autenticados" } diff --git a/frontend/messages/fr.json b/frontend/messages/fr.json index 0133caf09..dc878b939 100644 --- a/frontend/messages/fr.json +++ b/frontend/messages/fr.json @@ -81,6 +81,7 @@ "userGroups": "Groupes d'utilisateurs", "roleAssignments": "Affectations de rôle", "xRays": "X-rays", + "inspect": "Inspecter", "scoringAssistant": "Assistant d'évaluation", "scoringAssistantNoMatrixError": "Veuillez importer une matrice de risque depuis le magasin de bibliothèques pour pouvoir accéder à cette page", "libraries": "Bibliothèques", @@ -103,7 +104,7 @@ "referenceControl": "Mesure de référence", "appliedControl": "Mesure appliquée", "provider": "Fournisseur", - "providerColon": "Fournisseur :", + "providerColon": "Fournisseur:", "domain": "Domaine", "urn": "URN", "id": "ID", @@ -174,6 +175,7 @@ "dueDate": "Date d'échéance", "attachment": "Pièce jointe", "observation": "Observation", + "noObservation": "Aucune observation", "importMatrices": "Importer des matrices", "importFrameworks": "Importer des référentiels", "importMappings": "Importer des mappings", @@ -592,11 +594,44 @@ "evidenceNoFile": "Aucun fichier n'a été téléchargé pour les preuves", "requirementAppliedControlHelpText": "Les preuves liées aux mesures sélectionnées seront automatiquement associées à l'exigence.", "requirementEvidenceHelpText": "Cet onglet vous permet d'ajouter des preuves supplémentaires à l'exigence.", + "providerID": "ID fournisseur", + "clientID": "ID client", + "secret": "Secrète", + "key": "Clé", "settings": "Paramètres", + "identityProvider": "Fournisseur d'identité", + "identityProviders": "Fournisseurs d'identité", + "clientIDHelpText": "ID d'application ou clé consommateur", + "secretHelpText": "Secret API, secret client ou secret consommateur", + "SAMLIdPConfiguration": "Configuration IdP SAML", + "SPConfiguration": "Configuration SP", "advancedSettings": "Réglages avancés", + "IdPEntityID": "ID d'entité IdP", + "metadataURL": "URL des métadonnées", + "SSOURL": "URL SSO", + "SLOURL": "URL SLO", + "x509Cert": "certificat x509", + "SPEntityID": "ID d'entité SP", + "attributeMappingUID": "Mappage d'attributs UID", + "attributeMappingEmailVerified": " ", + "allowRepeatAttributeName": "Autoriser la répétition du nom d'attribut", + "allowSingleLabelDomains": "Autoriser les domaines à étiquette unique", + "authnRequestSigned": "Demande d'authentification signée", + "digestAlgorithm": "Algorithme de synthèse", + "logoutRequestSigned": "Demande de déconnexion signée", + "logoutResponseSigned": "Réponse de déconnexion signée", + "metadataSigned": "Métadonnées signées", + "nameIDEncrypted": "Nom ID crypté", + "rejectDeprecatedAlgorithm": "Rejeter l'algorithme obsolète", + "signatureAlgorithm": "Algorithme de signature", + "wantMessageSigned": "Je veux un message signé", + "IdPConfiguration": "Configuration IdP", "enableSSO": "Activer le SSO", "failedSSO": "L'authentification SSO a échoué, veuillez contacter votre administrateur", "UserDoesNotExist": "Utilisateur non déclaré, merci de contacter votre administrateur", + "idPInitiatedSSORejected": "Le SSO initié par l'IdP a été rejeté, veuillez contacter votre administrateur", + "permissionDenied": "Permission refusée", + "signupClosed": "Inscriptions fermées", "loginSSO": "Connectez-vous en SSO", "or": "ou", "errorImportingLibrary": "Erreur lors de l'importation de la bibliothèque", @@ -630,12 +665,18 @@ "duplicate": "Dupliquer", "duplicateRiskAssessment": "Dupliquer l’évaluation de risque", "size": "Taille", + "clientSettings": "Paramètres du client", + "invalidFileType": "Type de fichier non valide", + "logoHelpText": "Le logo sera affiché dans l'en-tête de l'application. Les formats acceptés sont PNG, JPEG, WEBP, SVG.", + "faviconHelpText": "Le favicon s'affichera dans l'onglet du navigateur. Les formats acceptés sont ICO, PNG, JPEG, WEBP", "entity": "Entité", "entities": "Entités", "addEntity": "Ajouter une entité", "referenceLink": "Lien de référence", "mission": "Mission", "ownedFolders": "Domaines possédés", + "thirdParty": "Tiers", + "thirdPartyCategory": "Gestion des tiers", "entityAssessment": "Évaluation de l'entité", "entityAssessments": "Évaluations des entités", "addEntityAssessment": "Ajouter une évaluation d'entité", @@ -673,10 +714,20 @@ "tableMode": "Mode tableau", "owner": "Propriétaire", "waitingRiskAcceptances": "Bonjour ! Vous avez actuellement {number} risque{s} en attente d'acceptation. Vous pouvez les retrouver dans l'onglet risque.", + "licenseExpiration": "Expiration de la licence", + "questionnaireMode": "Mode questionnaire", + "createAudit": "Créer un audit", + "createAuditHelpText": "Créer un audit parallèlement à l'évaluation de l'entité", + "questionnaire": "Questionnaire", + "conclusion": "Conclusion", + "createUser": "Créer un utilisateur", + "nameDuplicate": "Le nom existe déjà", + "noAnswer": "Pas de réponse", + "sendQuestionnaire": "Envoyer le questionnaire", + "sureToSendQuestionnaire": "Etes-vous sûr de vouloir envoyer le questionnaire : {questionnaire} ?", "successfullyUpdatedClientSettings": "Paramètres du client mis à jour avec succès. Vous pouvez rafrachir la page.", "xRaysEmptyMessage": "Vous devez créer au moins un projet pour utiliser X-rays.", - "NoPreviewMessage": "Aucun aperçu disponible.", - "suggestControls": "Mesures recommendées", + "suggestControls": "Mesures recommandées", "createAppliedControlsFromSuggestionsHelpText": "Créer des mesures appliquées à partir des mesures de référence suggérées", "createAppliedControlsFromSuggestionsSuccess": "Mesures appliquées créées avec succès à partir des suggestions", "createAppliedControlsFromSuggestionsError": "Une erreur s'est produite lors de la création des mesures appliquées depuis les suggestions", @@ -684,11 +735,15 @@ "theFollowingControlsWillBeAddedColon": "Les mesures suivantes seront appliquées :", "ShowAllNodesMessage": "Tout afficher", "ShowOnlyAssessable": "Uniquement évaluables", + "startDateHelpText": "Date de début (utile pour la chronologie)", "backupLoadingError": "Une erreur s'est produite lors du chargement de la sauvegarde.", "backupGreaterVersionError": "Impossible de charger la sauvegarde, la version de la sauvegarde est supérieure à la version actuelle de votre application.", "backupLowerVersionError": "Une erreur s'est produite, la version de sauvegarde est peut-être trop ancienne, si c'est le cas, elle doit être mise à jour avant de réessayer.", - "thirdParty": "Tiers", - "thirdPartyCategory": "Gestion des tiers", - "catalog": "Catalogue", - "actions": "Actions" + "NoPreviewMessage": "Aucun aperçu disponible.", + "entityAssessmentEvidenceHelpText": "Un questionnaire externe", + "errorLicenseSeatsExceeded": "Le nombre de licences disponibles est dépassé, vous ne pourrez pas accorder de droits d'édition à cet utilisateur. Veuillez contacter votre administrateur.", + "availableSeats": "Places disponibles", + "showImagesUnauthenticated": "Afficher le logo et le favicon aux utilisateurs non authentifiés", + "showImagesUnauthenticatedHelpText": "Si cette option est désactivée, le logo et l'icône habituels de l'assistant CISO seront affichés sur l'écran de connexion.", + "catalog": "Catalogue" } diff --git a/frontend/messages/hi.json b/frontend/messages/hi.json index e4c337cca..5fa13a74a 100644 --- a/frontend/messages/hi.json +++ b/frontend/messages/hi.json @@ -37,6 +37,9 @@ "associatedDomains": "संबंधित डोमेन", "associatedProjects": "संबंधित प्रोजेक्ट", "associatedUsers": "संबंधित उपयोगकर्ता", + "associatedEntityAssessments": "संबद्ध इकाई मूल्यांकन", + "associatedRepresentatives": "संबद्ध प्रतिनिधि", + "associatedSolutions": "संबद्ध समाधान", "home": "होम", "edit": "संपादित करें", "changePassword": "पासवर्ड बदलें", @@ -172,8 +175,10 @@ "dueDate": "नियत तारीख", "attachment": "संलग्नक", "observation": "पर्यवेक्षण", + "noObservation": "कोई अवलोकन नहीं", "importMatrices": "मैट्रिक्स आयात करें", "importFrameworks": "फ्रेमवर्क आयात करें", + "importMappings": "मैपिंग आयात करें", "summary": "सारांश", "composer": "रचनाकार", "statistics": "आँकड़े", @@ -671,6 +676,18 @@ "duplicate": "प्रतिलिपि", "duplicateRiskAssessment": "जोखिम आकलन की प्रतिलिपि बनाएँ", "size": "आकार", + "clientSettings": "क्लाइंट सेटिंग्स", + "invalidFileType": "अमान्य फ़ाइल प्रकार", + "logoHelpText": "लोगो को एप्लीकेशन के हेडर में प्रदर्शित किया जाएगा। स्वीकृत प्रारूप PNG, JPEG, WEBP, SVG हैं।", + "faviconHelpText": "फ़ेविकॉन ब्राउज़र टैब में प्रदर्शित किया जाएगा। स्वीकृत प्रारूप ICO, PNG, JPEG, WEBP हैं", + "entity": "इकाई", + "entities": "इकाइयां,", + "addEntity": "इकाई जोड़ें", + "referenceLink": "संदर्भ लिंक", + "mission": "उद्देश्य", + "ownedFolders": "स्वामित्व वाले डोमेन", + "entityAssessment": "इकाई मूल्यांकन", + "entityAssessments": "इकाई मूल्यांकन", "financial": "वित्तीय", "legal": "कानूनी", "reputation": "प्रतिष्ठा", @@ -681,7 +698,21 @@ "authenticity": "प्रामाणिकता", "owner": "मालिक", "waitingRiskAcceptances": "नमस्ते! आपके पास वर्तमान में {number} जोखिम स्वीकृति{s} लंबित हैं। आप उन्हें जोखिम टैब में पा सकते हैं।", + "licenseExpiration": "लाइसेंस समाप्ति", + "questionnaireMode": "प्रश्नावली मोड", + "createAudit": "ऑडिट बनाएं", + "createAuditHelpText": "इकाई मूल्यांकन के साथ-साथ एक ऑडिट बनाएं", + "nameDuplicate": "नाम पहले से मौजूद है", + "noAnswer": "कोई जवाब नहीं", + "sendQuestionnaire": "प्रश्नावली भेजें", + "sureToSendQuestionnaire": "क्या आप वाकई प्रश्नावली भेजना चाहते हैं: {questionnaire} ?", + "createAppliedControlsFromSuggestionsSuccess": "सुझाए गए संदर्भ नियंत्रणों से सफलतापूर्वक लागू किए गए नियंत्रण बनाए गए", + "startDateHelpText": "आरंभ तिथि (समयरेखा के लिए उपयोगी)", "backupLoadingError": "बैकअप लोड करते समय एक त्रुटि हुई.", "backupGreaterVersionError": "बैकअप लोड नहीं किया जा सकता, बैकअप का संस्करण आपके एप्लिकेशन के वर्तमान संस्करण से अधिक है.", - "backupLowerVersionError": "कोई त्रुटि हुई, बैकअप संस्करण बहुत पुराना हो सकता है, यदि ऐसा है तो पुनः प्रयास करने से पहले उसे अद्यतन करना आवश्यक है।" + "backupLowerVersionError": "कोई त्रुटि हुई, बैकअप संस्करण बहुत पुराना हो सकता है, यदि ऐसा है तो पुनः प्रयास करने से पहले उसे अद्यतन करना आवश्यक है।", + "NoPreviewMessage": "कोई पूर्वावलोकन उपलब्ध नहीं है.", + "entityAssessmentEvidenceHelpText": "एक बाहरी प्रश्नावली", + "errorLicenseSeatsExceeded": "लाइसेंस सीटों की संख्या पार हो गई है, आप इस उपयोगकर्ता को संपादन अधिकार नहीं दे पाएंगे। कृपया अपने व्यवस्थापक से संपर्क करें।", + "showImagesUnauthenticated": "अप्रमाणित उपयोगकर्ताओं को लोगो और फ़ेविकॉन दिखाएँ" } diff --git a/frontend/messages/it.json b/frontend/messages/it.json index 270a386ee..fcfd02b62 100644 --- a/frontend/messages/it.json +++ b/frontend/messages/it.json @@ -81,6 +81,7 @@ "userGroups": "Gruppi di utenti", "roleAssignments": "Assegnazioni di ruoli", "xRays": "X-rays", + "inspect": "Ispezionare", "scoringAssistant": "Assistente di punteggio", "scoringAssistantNoMatrixError": "Importa una matrice di rischio dal negozio di biblioteche per accedere a questa pagina", "libraries": "Biblioteche", @@ -174,8 +175,10 @@ "dueDate": "Data di scadenza", "attachment": "Allegato", "observation": "Osservazione", + "noObservation": "Nessuna osservazione", "importMatrices": "Importa matrici", "importFrameworks": "Importa framework", + "importMappings": "Importazione di mapping", "summary": "Riepilogo", "composer": "Compositore", "statistics": "Statistiche", @@ -591,11 +594,43 @@ "evidenceNoFile": "Nessun file è stato caricato nelle prove", "requirementAppliedControlHelpText": "Le evidenze legate alle misure selezionate verranno automaticamente associate al requisito.", "requirementEvidenceHelpText": "Questa scheda ti consente di aggiungere ulteriori prove al requisito.", + "providerID": "ID fornitore", + "clientID": "ID cliente", + "secret": "Segreto", + "key": "Chiave", "settings": "Impostazioni", + "identityProvider": "Fornitore di identità", + "identityProviders": "Fornitori di identità", + "clientIDHelpText": "ID app o chiave del consumatore", + "secretHelpText": "Segreto API, segreto client o segreto consumer", + "SAMLIdPConfiguration": "Configurazione IdP SAML", + "SPConfiguration": "Configurazione SP", "advancedSettings": "Impostazioni avanzate", + "IdPEntityID": "ID entità IdP", + "metadataURL": "URL dei metadati", + "SSOURL": "URL dell'SSO", + "SLOURL": "URL dell'SLO", + "x509Cert": "certificato x509", + "SPEntityID": "ID entità SP", + "attributeMappingUID": "UID di mappatura degli attributi", + "allowRepeatAttributeName": "Consenti la ripetizione del nome dell'attributo", + "allowSingleLabelDomains": "Consenti domini con etichetta singola", + "authnRequestSigned": "Richiesta di autenticazione firmata", + "digestAlgorithm": "Algoritmo di digestione", + "logoutRequestSigned": "Richiesta di disconnessione firmata", + "logoutResponseSigned": "Risposta di disconnessione firmata", + "metadataSigned": "Metadati firmati", + "nameIDEncrypted": "Nome ID crittografato", + "rejectDeprecatedAlgorithm": "Rifiuta algoritmo deprecato", + "signatureAlgorithm": "Algoritmo di firma", + "wantMessageSigned": "Voglio che il messaggio venga firmato", + "IdPConfiguration": "Configurazione IdP", "enableSSO": "Abilita SSO", "failedSSO": "Autenticazione SSO non riuscita, contatta il tuo amministratore", "UserDoesNotExist": "Utente non dichiarato, contatta il tuo amministratore", + "idPInitiatedSSORejected": "SSO avviato da IdP rifiutato, contattare l'amministratore", + "permissionDenied": "Permesso negato", + "signupClosed": "Iscrizione chiusa", "loginSSO": "Accedi a SSO", "or": "O", "errorImportingLibrary": "Errore durante l'importazione della biblioteca", @@ -629,6 +664,10 @@ "duplicate": "Duplicare", "duplicateRiskAssessment": "Duplicare la valutazione del rischio", "size": "Dimensione", + "clientSettings": "Impostazioni del cliente", + "invalidFileType": "Tipo di file non valido", + "logoHelpText": "Il logo verrà visualizzato nell'intestazione dell'applicazione. I formati accettati sono PNG, JPEG, WEBP, SVG.", + "faviconHelpText": "La favicon verrà visualizzata nella scheda del browser. I formati accettati sono ICO, PNG, JPEG, WEBP", "entity": "Entità", "entities": "Entità", "addEntity": "Aggiungi entità", @@ -672,7 +711,26 @@ "tableMode": "Modalità tabella", "owner": "Proprietario", "waitingRiskAcceptances": "Ciao! Al momento hai {number} rischi{s} in attesa di accettazione. Puoi trovarli nella scheda rischi.", + "licenseExpiration": "Scadenza della licenza", + "questionnaireMode": "Modalità questionario", + "createAudit": "Crea audit", + "createAuditHelpText": "Creare un audit insieme alla valutazione dell'entità", + "questionnaire": "Questionario", + "conclusion": "Conclusione", + "createUser": "Crea utente", + "nameDuplicate": "Il nome esiste già", + "noAnswer": "Nessuna risposta", + "sendQuestionnaire": "Invia questionario", + "sureToSendQuestionnaire": "Sei sicuro di voler inviare il questionario: {questionnaire} ?", + "createAppliedControlsFromSuggestionsSuccess": "Controlli applicati creati correttamente dai controlli di riferimento suggeriti", + "startDateHelpText": "Data di inizio (utile per la cronologia)", "backupLoadingError": "Si è verificato un errore durante il caricamento del backup.", "backupGreaterVersionError": "Impossibile caricare il backup, la versione del backup è successiva alla versione corrente dell'applicazione.", - "backupLowerVersionError": "Si è verificato un errore, la versione di backup potrebbe essere troppo vecchia. In tal caso, è necessario aggiornarla prima di riprovare." + "backupLowerVersionError": "Si è verificato un errore, la versione di backup potrebbe essere troppo vecchia. In tal caso, è necessario aggiornarla prima di riprovare.", + "NoPreviewMessage": "Nessuna anteprima disponibile.", + "entityAssessmentEvidenceHelpText": "Un questionario esterno", + "errorLicenseSeatsExceeded": "Il numero di postazioni di licenza è stato superato, non potrai concedere diritti di modifica a questo utente. Contatta il tuo amministratore.", + "availableSeats": "Posti disponibili", + "showImagesUnauthenticated": "Mostra logo e favicon agli utenti non autenticati", + "showImagesUnauthenticatedHelpText": "Se disabilitato, il logo e l'icona preferiti di CISO Assistant verranno visualizzati nella schermata di accesso" } diff --git a/frontend/messages/nl.json b/frontend/messages/nl.json index 46ef03578..137784eed 100644 --- a/frontend/messages/nl.json +++ b/frontend/messages/nl.json @@ -81,6 +81,7 @@ "userGroups": "Gebruikersgroepen", "roleAssignments": "Roltoewijzingen", "xRays": "X-rays", + "inspect": "Inspecteren", "scoringAssistant": "Score-assistent", "scoringAssistantNoMatrixError": "Importeer een risicomatrix uit de bibliotheekwinkel om toegang te krijgen tot deze pagina", "libraries": "Bibliotheken", @@ -174,8 +175,10 @@ "dueDate": "Vervaldatum", "attachment": "Bijlage", "observation": "Observatie", + "noObservation": "Geen observatie", "importMatrices": "Matrijzen importeren", "importFrameworks": "Kaders importeren", + "importMappings": "Importeer toewijzingen", "summary": "Samenvatting", "composer": "Samensteller", "statistics": "Statistieken", @@ -591,11 +594,42 @@ "evidenceNoFile": "Er is geen bestand geüpload voor bewijsmateriaal", "requirementAppliedControlHelpText": "Bewijsstukken die verband houden met de geselecteerde maatregelen worden automatisch aan de eis gekoppeld.", "requirementEvidenceHelpText": "Op dit tabblad kunt u extra bewijsstukken aan de eis toevoegen.", + "providerID": "Leveranciers-ID", + "clientID": "Klant-ID", + "secret": "Geheim", + "key": "Sleutel", "settings": "Instellingen", + "identityProviders": "Identiteitsaanbieders", + "clientIDHelpText": "App-ID of consumentensleutel", + "secretHelpText": "API-geheim, clientgeheim of consumentengeheim", + "SAMLIdPConfiguration": "SAML IdP-configuratie", + "SPConfiguration": "SP-configuratie", "advancedSettings": "Geavanceerde instellingen", + "IdPEntityID": "IdP-entiteits-ID", + "metadataURL": "Metagegevens-URL", + "SSOURL": "SSO-URL", + "SLOURL": "SLO-URL", + "x509Cert": "x509-certificaat", + "SPEntityID": "SP-entiteits-ID", + "attributeMappingUID": "Attribuut mapping UID", + "allowRepeatAttributeName": "Toestaan dat attribuutnaam wordt herhaald", + "allowSingleLabelDomains": "Enkelvoudige labeldomeinen toestaan", + "authnRequestSigned": "Authn-verzoek ondertekend", + "digestAlgorithm": "Digest-algoritme", + "logoutRequestSigned": "Uitlogverzoek ondertekend", + "logoutResponseSigned": "Uitlogreactie ondertekend", + "metadataSigned": "Metadata ondertekend", + "nameIDEncrypted": "Naam-ID gecodeerd", + "rejectDeprecatedAlgorithm": "Verouderd algoritme afwijzen", + "signatureAlgorithm": "Handtekeningalgoritme", + "wantMessageSigned": "Bericht ondertekend willen hebben", + "IdPConfiguration": "IdP-configuratie", "enableSSO": "SSO inschakelen", "failedSSO": "SSO-authenticatie mislukt. Neem contact op met uw beheerder", "UserDoesNotExist": "Gebruiker niet aangegeven. Neem contact op met uw beheerder", + "idPInitiatedSSORejected": "Door IdP geïnitieerde SSO afgewezen, neem contact op met uw beheerder", + "permissionDenied": "Toestemming geweigerd", + "signupClosed": "Inschrijving gesloten", "loginSSO": "Log in op SSO", "or": "of", "errorImportingLibrary": "Fout bij het importeren van de bibliotheek", @@ -629,6 +663,10 @@ "duplicate": "Duplicaat", "duplicateRiskAssessment": "Dupliceer de risicobeoordeling", "size": "Grootte", + "clientSettings": "Clientinstellingen", + "invalidFileType": "Ongeldig bestandstype", + "logoHelpText": "Het logo wordt weergegeven in de header van de applicatie. Geaccepteerde formaten zijn PNG, JPEG, WEBP, SVG.", + "faviconHelpText": "Het favicon wordt weergegeven in het browsertabblad. Geaccepteerde formaten zijn ICO, PNG, JPEG, WEBP", "entity": "Entiteit", "entities": "Entiteiten", "addEntity": "Entiteit toevoegen", @@ -672,7 +710,22 @@ "tableMode": "Tabelmodus", "owner": "Eigenaar", "waitingRiskAcceptances": "Hallo! U hebt momenteel {number} risico{s} acceptatie in behandeling. U kunt ze vinden in het tabblad risico.", + "licenseExpiration": "Licentie verloopt", + "questionnaireMode": "Vragenlijstmodus", + "createAudit": "Audit aanmaken", + "createAuditHelpText": "Maak een audit aan naast de entiteitsbeoordeling", + "nameDuplicate": "Naam bestaat al", + "noAnswer": "Geen antwoord", + "sendQuestionnaire": "Vragenlijst verzenden", + "sureToSendQuestionnaire": "Weet u zeker dat u de vragenlijst {questionnaire} wilt verzenden?", + "createAppliedControlsFromSuggestionsSuccess": "Toegepaste besturingselementen zijn succesvol gemaakt op basis van de voorgestelde referentiebesturingselementen", + "startDateHelpText": "Startdatum (handig voor tijdlijn)", "backupLoadingError": "Er is een fout opgetreden tijdens het laden van de back-up.", "backupGreaterVersionError": "De back-up kan niet worden geladen. De versie van de back-up is hoger dan de huidige versie van uw applicatie.", - "backupLowerVersionError": "Er is een fout opgetreden. Mogelijk is de back-upversie te oud. Als dat zo is, moet u deze bijwerken voordat u het opnieuw probeert." + "backupLowerVersionError": "Er is een fout opgetreden. Mogelijk is de back-upversie te oud. Als dat zo is, moet u deze bijwerken voordat u het opnieuw probeert.", + "NoPreviewMessage": "Geen voorbeeld beschikbaar.", + "entityAssessmentEvidenceHelpText": "Een externe vragenlijst", + "errorLicenseSeatsExceeded": "Het aantal licentieplaatsen is overschreden, u kunt deze gebruiker geen bewerkingsrechten verlenen. Neem contact op met uw beheerder.", + "availableSeats": "Beschikbare plaatsen", + "showImagesUnauthenticated": "Toon logo en favicon aan niet-geverifieerde gebruikers" } diff --git a/frontend/messages/pl.json b/frontend/messages/pl.json index e8bca8574..3ee9306c5 100644 --- a/frontend/messages/pl.json +++ b/frontend/messages/pl.json @@ -81,6 +81,7 @@ "userGroups": "Grupy użytkowników", "roleAssignments": "Przypisania ról", "xRays": "X-rays", + "inspect": "Sprawdzać", "scoringAssistant": "Asystent oceny", "scoringAssistantNoMatrixError": "Proszę zaimportować macierz ryzyka z biblioteki, aby uzyskać dostęp do tej strony", "libraries": "Biblioteki", @@ -174,8 +175,10 @@ "dueDate": "Termin", "attachment": "Załącznik", "observation": "Obserwacja", + "noObservation": "Brak obserwacji", "importMatrices": "Importuj macierze", "importFrameworks": "Importuj ramy", + "importMappings": "Importuj mapowania", "summary": "Podsumowanie", "composer": "Kompozytor", "statistics": "Statystyki", @@ -633,6 +636,9 @@ "enableSSO": "Włącz SSO", "failedSSO": "SSO authentication failed, please contact your administrator", "UserDoesNotExist": "User not declared, please contact your administrator", + "idPInitiatedSSORejected": "Odrzucono logowanie jednokrotne zainicjowane przez dostawcę tożsamości (IdP). Skontaktuj się z administratorem.", + "permissionDenied": "Odmowa zgody", + "signupClosed": "Zapisy zamknięte", "loginSSO": "Zaloguj się za pomocą SSO", "or": "lub", "errorImportingLibrary": "Błąd podczas importowania biblioteki", @@ -666,6 +672,10 @@ "duplicate": "Duplikować", "duplicateRiskAssessment": "Powielić ocenę ryzyka", "size": "Rozmiar", + "clientSettings": "Ustawienia klienta", + "invalidFileType": "Nieprawidłowy typ pliku", + "logoHelpText": "Logo będzie wyświetlane w nagłówku aplikacji. Akceptowalne formaty to PNG, JPEG, WEBP, SVG.", + "faviconHelpText": "Favicon będzie wyświetlany w karcie przeglądarki. Akceptowane formaty to ICO, PNG, JPEG, WEBP", "entity": "Podmiot", "entities": "Podmioty", "addEntity": "Dodaj jednostkę", @@ -709,7 +719,21 @@ "tableMode": "Tryb tabeli", "owner": "Właściciel", "waitingRiskAcceptances": "Cześć! Obecnie masz {number} ryzyko{s} oczekujące na akceptację. Możesz je znaleźć w zakładce ryzyko.", + "licenseExpiration": "Wygaśnięcie licencji", + "questionnaireMode": "Tryb ankiety", + "createAudit": "Utwórz audyt", + "createAuditHelpText": "Utwórz audyt obok oceny podmiotu", + "nameDuplicate": "Nazwa już istnieje", + "noAnswer": "Brak odpowiedzi", + "sendQuestionnaire": "Wyślij kwestionariusz", + "sureToSendQuestionnaire": "Czy na pewno chcesz wysłać kwestionariusz: {questionnaire} ?", + "createAppliedControlsFromSuggestionsSuccess": "Zastosowano pomyślnie elementy sterujące utworzone na podstawie sugerowanych elementów referencyjnych", + "startDateHelpText": "Data rozpoczęcia (przydatna dla osi czasu)", "backupLoadingError": "Wystąpił błąd podczas ładowania kopii zapasowej.", "backupGreaterVersionError": "Nie można załadować kopii zapasowej. Wersja kopii zapasowej jest nowsza niż bieżąca wersja aplikacji.", - "backupLowerVersionError": "Wystąpił błąd. Wersja kopii zapasowej może być za stara. Jeśli tak, należy ją zaktualizować przed ponowną próbą." + "backupLowerVersionError": "Wystąpił błąd. Wersja kopii zapasowej może być za stara. Jeśli tak, należy ją zaktualizować przed ponowną próbą.", + "NoPreviewMessage": "Podgląd niedostępny.", + "entityAssessmentEvidenceHelpText": "Kwestionariusz zewnętrzny", + "errorLicenseSeatsExceeded": "Liczba miejsc licencyjnych została przekroczona, nie będziesz mógł przyznać praw do edycji temu użytkownikowi. Skontaktuj się z administratorem.", + "showImagesUnauthenticated": "Pokaż logo i ikonę witryny nieuwierzytelnionym użytkownikom" } diff --git a/frontend/messages/pt.json b/frontend/messages/pt.json index 72dacac56..c502ded73 100644 --- a/frontend/messages/pt.json +++ b/frontend/messages/pt.json @@ -81,6 +81,7 @@ "userGroups": "Grupos de usuários", "roleAssignments": "Atribuições de função", "xRays": "X-rays", + "inspect": "Inspecionar", "scoringAssistant": "Assistente de pontuação", "scoringAssistantNoMatrixError": "Importe uma matriz de risco da loja de bibliotecas para acessar esta página", "libraries": "Bibliotecas", @@ -174,8 +175,10 @@ "dueDate": "Data de vencimento", "attachment": "Anexo", "observation": "Observação", + "noObservation": "Nenhuma observação", "importMatrices": "Importar matrizes", "importFrameworks": "Importar frameworks", + "importMappings": "Mapeamentos de importação", "summary": "Resumo", "composer": "Compositor", "statistics": "Estatísticas", @@ -591,11 +594,43 @@ "evidenceNoFile": "A evidência não tem nenhum arquivo carregado", "requirementAppliedControlHelpText": "As evidências vinculadas às medidas selecionadas serão automaticamente associadas ao requisito.", "requirementEvidenceHelpText": "Esta aba permite adicionar evidências extras ao requisito.", + "providerID": "ID do provedor", + "clientID": "ID do cliente", + "secret": "Segredo", + "key": "Chave", "settings": "Configurações", + "identityProvider": "Provedor de identidade", + "identityProviders": "Provedores de identidade", + "clientIDHelpText": "ID do aplicativo ou chave do consumidor", + "secretHelpText": "Segredo da API, segredo do cliente ou segredo do consumidor", + "SAMLIdPConfiguration": "Configuração do IdP SAML", + "SPConfiguration": "Configuração SP", "advancedSettings": "Configurações avançadas", + "IdPEntityID": "ID da entidade IdP", + "metadataURL": "URL de metadados", + "SSOURL": "URL do SSO", + "SLOURL": "URL do SLO", + "x509Cert": "certificado x509", + "SPEntityID": "ID da entidade SP", + "attributeMappingUID": "Mapeamento de atributos UID", + "allowRepeatAttributeName": "Permitir repetição de nome de atributo", + "allowSingleLabelDomains": "Permitir domínios de rótulo único", + "authnRequestSigned": "Solicitação de autenticação assinada", + "digestAlgorithm": "Algoritmo de resumo", + "logoutRequestSigned": "Solicitação de logout assinada", + "logoutResponseSigned": "Resposta de logout assinada", + "metadataSigned": "Metadados assinados", + "nameIDEncrypted": "Nome ID criptografado", + "rejectDeprecatedAlgorithm": "Rejeitar algoritmo obsoleto", + "signatureAlgorithm": "Algoritmo de assinatura", + "wantMessageSigned": "Quero mensagem assinada", + "IdPConfiguration": "Configuração do IdP", "enableSSO": "Habilitar SSO", "failedSSO": "Falha na autenticação SSO. Entre em contato com seu administrador", "UserDoesNotExist": "Usuário não declarado, entre em contato com seu administrador", + "idPInitiatedSSORejected": "SSO iniciado por IdP rejeitado, entre em contato com seu administrador", + "permissionDenied": "Permissão negada", + "signupClosed": "Inscrição encerrada", "loginSSO": "Faça login no SSO", "or": "ou", "errorImportingLibrary": "Erro durante a importação da biblioteca", @@ -629,6 +664,10 @@ "duplicate": "Duplicado", "duplicateRiskAssessment": "Duplicar a avaliação de risco", "size": "Tamanho", + "clientSettings": "Configurações do cliente", + "invalidFileType": "Tipo de arquivo inválido", + "logoHelpText": "O logotipo será exibido no cabeçalho do aplicativo. Os formatos aceitos são PNG, JPEG, WEBP, SVG.", + "faviconHelpText": "O favicon será exibido na aba do navegador. Os formatos aceitos são ICO, PNG, JPEG, WEBP", "entity": "Entidade", "entities": "Entidades", "addEntity": "Adicionar entidade", @@ -672,7 +711,21 @@ "tableMode": "Modo de tabela", "owner": "Proprietário", "waitingRiskAcceptances": "Olá! No momento, você tem {number} aceitação de risco{s} pendente. Você pode encontrá-los na aba de risco.", + "licenseExpiration": "Expiração da licença", + "questionnaireMode": "Modo questionário", + "createAudit": "Criar auditoria", + "createAuditHelpText": "Crie uma auditoria junto com a avaliação da entidade", + "nameDuplicate": "Nome já existe", + "noAnswer": "Sem resposta", + "sendQuestionnaire": "Enviar questionário", + "sureToSendQuestionnaire": "Tem certeza de que deseja enviar o questionário: {questionnaire} ?", + "createAppliedControlsFromSuggestionsSuccess": "Controles aplicados criados com sucesso a partir dos controles de referência sugeridos", + "startDateHelpText": "Data de início (útil para linha do tempo)", "backupLoadingError": "Ocorreu um erro ao carregar o backup.", "backupGreaterVersionError": "Não é possível carregar o backup, a versão do backup é superior à versão atual do seu aplicativo.", - "backupLowerVersionError": "Ocorreu um erro, a versão de backup pode ser muito antiga. Se for o caso, ela deve ser atualizada antes de tentar novamente." + "backupLowerVersionError": "Ocorreu um erro, a versão de backup pode ser muito antiga. Se for o caso, ela deve ser atualizada antes de tentar novamente.", + "NoPreviewMessage": "Nenhuma pré-visualização disponível.", + "entityAssessmentEvidenceHelpText": "Um questionário externo", + "errorLicenseSeatsExceeded": "O número de assentos de licença foi excedido, você não poderá conceder direitos de edição a este usuário. Entre em contato com seu administrador.", + "showImagesUnauthenticated": "Mostrar logotipo e favicon para usuários não autenticados" } diff --git a/frontend/messages/ro.json b/frontend/messages/ro.json index b0fb01333..fbf59f167 100644 --- a/frontend/messages/ro.json +++ b/frontend/messages/ro.json @@ -37,6 +37,9 @@ "associatedDomains": "Domenii asociate", "associatedProjects": "Proiecte asociate", "associatedUsers": "Utilizatori asociați", + "associatedEntityAssessments": "Evaluări ale entităților asociate", + "associatedRepresentatives": "Reprezentanti asociati", + "associatedSolutions": "Solutii asociate", "home": "Acasă", "edit": "Editează", "changePassword": "Schimbă parola", @@ -78,6 +81,7 @@ "userGroups": "Grupuri de utilizatori", "roleAssignments": "Atribuiri de roluri", "xRays": "X-rays", + "inspect": "Inspecta", "scoringAssistant": "Asistent de scor", "scoringAssistantNoMatrixError": "Importați o matrice de risc din magazinul de biblioteci pentru a avea acces la această pagină", "libraries": "Biblioteci", @@ -105,6 +109,7 @@ "urn": "URN", "id": "ID", "treatmentStatus": "Stare tratament", + "qualification": "Calificare", "currentLevel": "Nivel curent", "residualLevel": "Nivel rezidual", "riskMatrix": "Matrice de risc", @@ -170,8 +175,10 @@ "dueDate": "Data scadenței", "attachment": "Atașament", "observation": "Observație", + "noObservation": "Nicio observatie", "importMatrices": "Importă matrici", "importFrameworks": "Importă cadre", + "importMappings": "Importați mapări", "summary": "Rezumat", "composer": "Compozitor", "statistics": "Statistici", @@ -470,6 +477,7 @@ "inProgress": "În desfășurare", "inReview": "În revizuire", "deprecated": "Depreciat", + "onHold": "În așteptare", "done": "Finalizat", "nonCompliant": "Neconform", "nonCompliantMinor": "Neconform minor", @@ -668,6 +676,19 @@ "duplicate": "Dublică", "duplicateRiskAssessment": "Dublarea evaluării riscului", "size": "Mărime", + "clientSettings": "Setări client", + "invalidFileType": "Tip de fișier nevalid", + "logoHelpText": "Logo-ul va fi afișat în antetul aplicației. Formatele acceptate sunt PNG, JPEG, WEBP, SVG.", + "faviconHelpText": "Favicon-ul va fi afișat în fila browser. Formatele acceptate sunt ICO, PNG, JPEG, WEBP", + "entity": "Entitate", + "entities": "Entități", + "addEntity": "Adăugați entitate", + "referenceLink": "Link de referință", + "mission": "Misiune", + "ownedFolders": "Domenii deținute", + "entityAssessments": "Evaluări ale entităților", + "addEntityAssessment": "Adăugați evaluarea entității", + "criticality": "Criticitatea", "financial": "Finanțe", "legal": "Juridic", "reputation": "Reputație", @@ -677,7 +698,21 @@ "availability": "Accesibilitate", "authenticity": "Autenticitate", "waitingRiskAcceptances": "Buna ziua! În prezent, aveți {number} riscul{s} în așteptare. Le puteți găsi în fila de riscuri.", + "licenseExpiration": "Expirarea licenței", + "questionnaireMode": "Modul chestionar", + "createAudit": "Creați audit", + "createAuditHelpText": "Creați un audit împreună cu evaluarea entității", + "nameDuplicate": "Numele există deja", + "noAnswer": "Nici un răspuns", + "sendQuestionnaire": "Trimite chestionar", + "sureToSendQuestionnaire": "Sigur doriți să trimiteți chestionarul: {questionnaire} ?", + "createAppliedControlsFromSuggestionsSuccess": "Controalele aplicate create cu succes din controalele de referință sugerate", + "startDateHelpText": "Data de începere (utilă pentru cronologie)", "backupLoadingError": "A apărut o eroare la încărcarea copiei de rezervă.", "backupGreaterVersionError": "Nu se poate încărca copia de rezervă, versiunea copiei de rezervă este mai mare decât versiunea curentă a aplicației dvs.", - "backupLowerVersionError": "A apărut o eroare, versiunea de rezervă poate fi prea veche, dacă da, trebuie actualizată înainte de a reîncerca." + "backupLowerVersionError": "A apărut o eroare, versiunea de rezervă poate fi prea veche, dacă da, trebuie actualizată înainte de a reîncerca.", + "NoPreviewMessage": "Nicio previzualizare disponibilă.", + "entityAssessmentEvidenceHelpText": "Un chestionar extern", + "errorLicenseSeatsExceeded": "Numărul de locuri de licență este depășit, nu veți putea acorda drepturi de editare acestui utilizator. Vă rugăm să contactați administratorul dvs.", + "showImagesUnauthenticated": "Afișați sigla și favicon pentru utilizatorii neautentificați" } diff --git a/frontend/messages/ur.json b/frontend/messages/ur.json index db0620133..cace848b2 100644 --- a/frontend/messages/ur.json +++ b/frontend/messages/ur.json @@ -37,6 +37,9 @@ "associatedDomains": "وابستہ ڈومینز", "associatedProjects": "وابستہ پروجیکٹس", "associatedUsers": "وابستہ صارفین", + "associatedEntityAssessments": "وابستہ ہستی کے جائزے", + "associatedRepresentatives": "وابستہ نمائندے۔", + "associatedSolutions": "وابستہ حل", "home": "ہوم", "edit": "ترمیم کریں", "changePassword": "پاس ورڈ تبدیل کریں", @@ -172,8 +175,10 @@ "dueDate": "آخری تاریخ", "attachment": "منسلکہ", "observation": "مشاہدہ", + "noObservation": "کوئی مشاہدہ نہیں۔", "importMatrices": "میٹرکس درآمد کریں", "importFrameworks": "فریم ورک درآمد کریں", + "importMappings": "نقشہ جات درآمد کریں۔", "summary": "خلاصہ", "composer": "کمپوزر", "statistics": "اعداد و شمار", @@ -671,6 +676,16 @@ "duplicate": "نقل کریں", "duplicateRiskAssessment": "خطرے کی تشخیص کو نقل کریں", "size": "سائز", + "clientSettings": "کلائنٹ کی ترتیبات", + "invalidFileType": "غلط فائل کی قسم", + "logoHelpText": "لوگو ایپلی کیشن کے ہیڈر میں دکھایا جائے گا۔ منظور شدہ فارمیٹس PNG، JPEG، WEBP، SVG ہیں۔", + "faviconHelpText": "فیویکن براؤزر کے ٹیب میں ظاہر ہوگا۔ قبول شدہ فارمیٹس ICO, PNG, JPEG, WEBP ہیں۔", + "entity": "ہستی", + "entities": "اداروں", + "addEntity": "ہستی شامل کریں۔", + "referenceLink": "حوالہ لنک", + "mission": "مشن", + "ownedFolders": "زیر ملکیت ڈومینز", "financial": "مالیاتی", "legal": "قانونی", "reputation": "ساکھ", @@ -681,7 +696,21 @@ "authenticity": "صداقت", "owner": "مالک", "waitingRiskAcceptances": "ہیلو! آپ کے پاس فی الحال {number} خطرے کی منظوری {s} زیر التواء ہیں۔ آپ انہیں خطرے والے ٹیب میں پا سکتے ہیں۔", + "licenseExpiration": "لائسنس کی میعاد ختم", + "questionnaireMode": "سوالنامہ موڈ", + "createAudit": "آڈٹ بنائیں", + "createAuditHelpText": "ہستی کی تشخیص کے ساتھ ساتھ ایک آڈٹ بنائیں", + "nameDuplicate": "نام پہلے سے موجود ہے۔", + "noAnswer": "کوئی جواب نہیں۔", + "sendQuestionnaire": "سوالنامہ بھیجیں۔", + "sureToSendQuestionnaire": "کیا آپ واقعی سوالنامہ بھیجنا چاہتے ہیں: {questionnaire} ؟", + "createAppliedControlsFromSuggestionsSuccess": "تجویز کردہ حوالہ کنٹرولز سے کامیابی کے ساتھ بنائے گئے لاگو کنٹرولز", + "startDateHelpText": "تاریخ شروع (ٹائم لائن کے لیے مفید)", "backupLoadingError": "بیک اپ لوڈ کرتے وقت ایک خرابی پیش آگئی۔", "backupGreaterVersionError": "بیک اپ لوڈ نہیں ہو سکتا، بیک اپ کا ورژن آپ کی ایپلیکیشن کے موجودہ ورژن سے زیادہ ہے۔", - "backupLowerVersionError": "ایک خرابی پیش آ گئی، بیک اپ ورژن بہت پرانا ہو سکتا ہے، اگر ایسا ہے تو اسے دوبارہ کوشش کرنے سے پہلے اپ ڈیٹ کرنا ضروری ہے۔" + "backupLowerVersionError": "ایک خرابی پیش آ گئی، بیک اپ ورژن بہت پرانا ہو سکتا ہے، اگر ایسا ہے تو اسے دوبارہ کوشش کرنے سے پہلے اپ ڈیٹ کرنا ضروری ہے۔", + "NoPreviewMessage": "کوئی پیش نظارہ دستیاب نہیں ہے۔", + "entityAssessmentEvidenceHelpText": "ایک بیرونی سوالنامہ", + "errorLicenseSeatsExceeded": "لائسنس کی نشستوں کی تعداد حد سے تجاوز کر گئی ہے، آپ اس صارف کو ترمیم کے حقوق نہیں دے سکیں گے۔ براہ کرم اپنے منتظم سے رابطہ کریں۔", + "showImagesUnauthenticated": "غیر تصدیق شدہ صارفین کو لوگو اور فیوی کون دکھائیں۔" } From 5b008a705b0e2e4122b51a934f0d5954362cb4ff Mon Sep 17 00:00:00 2001 From: melinoix <105644053+melinoix@users.noreply.github.com> Date: Thu, 17 Oct 2024 14:10:41 +0200 Subject: [PATCH 07/29] =?UTF-8?q?chore:=20update=20translations=20with=20F?= =?UTF-8?q?ink=20=F0=9F=90=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/messages/fr.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/frontend/messages/fr.json b/frontend/messages/fr.json index dc878b939..1bdfa9eba 100644 --- a/frontend/messages/fr.json +++ b/frontend/messages/fr.json @@ -618,10 +618,10 @@ "allowSingleLabelDomains": "Autoriser les domaines à étiquette unique", "authnRequestSigned": "Demande d'authentification signée", "digestAlgorithm": "Algorithme de synthèse", - "logoutRequestSigned": "Demande de déconnexion signée", - "logoutResponseSigned": "Réponse de déconnexion signée", - "metadataSigned": "Métadonnées signées", - "nameIDEncrypted": "Nom ID crypté", + "logoutRequestSigned": "Demande de déconnexion chiffrée", + "logoutResponseSigned": "Réponse de déconnexion chiffrée", + "metadataSigned": "Métadonnées chiffrées", + "nameIDEncrypted": "Nom ID chiffré", "rejectDeprecatedAlgorithm": "Rejeter l'algorithme obsolète", "signatureAlgorithm": "Algorithme de signature", "wantMessageSigned": "Je veux un message signé", From 45e72fda070f5b7f3c0719ab7cfaea30ca272660 Mon Sep 17 00:00:00 2001 From: Nassim Tabchiche Date: Thu, 17 Oct 2024 15:08:41 +0200 Subject: [PATCH 08/29] Add global analyst user group --- backend/core/startup.py | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/backend/core/startup.py b/backend/core/startup.py index 2910c4ba5..b056383c8 100644 --- a/backend/core/startup.py +++ b/backend/core/startup.py @@ -6,7 +6,7 @@ from structlog import get_logger from ciso_assistant.settings import CISO_ASSISTANT_SUPERUSER_EMAIL -from core.utils import RoleCodename +from core.utils import RoleCodename, UserGroupCodename logger = get_logger(__name__) @@ -417,6 +417,22 @@ def startup(sender: AppConfig, **kwargs): folder=Folder.get_root_folder(), ) ra2.perimeter_folders.add(global_readers.folder) + if not UserGroup.objects.filter( + name=UserGroupCodename.ANALYST.value, folder=Folder.get_root_folder() + ).exists(): + analysts = UserGroup.objects.create( + name=UserGroupCodename.ANALYST.value, + folder=Folder.get_root_folder(), + builtin=True, + ) + ra2 = RoleAssignment.objects.create( + user_group=analysts, + role=Role.objects.get(name=RoleCodename.ANALYST.value), + is_recursive=True, + builtin=True, + folder=Folder.get_root_folder(), + ) + ra2.perimeter_folders.add(analysts.folder) # if global approvers user group does not exist, then create it if not UserGroup.objects.filter( name="BI-UG-GAP", folder=Folder.get_root_folder() From 6c4af40fd06d000412871bb354010217f0f23fb7 Mon Sep 17 00:00:00 2001 From: Nassim Tabchiche Date: Thu, 17 Oct 2024 15:20:37 +0200 Subject: [PATCH 09/29] Machine translate --- frontend/messages/ar.json | 107 +++++++++++++++++++++++++++++++++++++- frontend/messages/de.json | 52 +++++++++++++++++- frontend/messages/es.json | 52 +++++++++++++++++- frontend/messages/fr.json | 34 +++++++++++- frontend/messages/hi.json | 65 ++++++++++++++++++++++- frontend/messages/it.json | 47 ++++++++++++++++- frontend/messages/nl.json | 52 +++++++++++++++++- frontend/messages/pl.json | 44 +++++++++++++++- frontend/messages/pt.json | 52 +++++++++++++++++- frontend/messages/ro.json | 65 ++++++++++++++++++++++- frontend/messages/ur.json | 67 +++++++++++++++++++++++- 11 files changed, 626 insertions(+), 11 deletions(-) diff --git a/frontend/messages/ar.json b/frontend/messages/ar.json index f3a1b4950..a204f5643 100644 --- a/frontend/messages/ar.json +++ b/frontend/messages/ar.json @@ -603,7 +603,13 @@ "identityProviders": "مزودي الهوية", "clientIDHelpText": "معرف التطبيق، أو مفتاح المستهلك", "secretHelpText": "سرية API، سرية العميل، أو سرية المستهلك", + "SAMLIdPConfiguration": "تكوين SAML IdP", + "SPConfiguration": "تكوين SP", "advancedSettings": "الإعدادات المتقدمة", + "IdPEntityID": "معرف كيان IdP", + "metadataURL": "عنوان URL للبيانات الوصفية", + "SSOURL": "عنوان URL لتسجيل الدخول الموحد", + "SLOURL": "عنوان URL لـ SLO", "x509Cert": "شهادة x509", "SPEntityID": "معرف كيان SP", "attributeMappingUID": "تعيين معرف السمة", @@ -645,12 +651,65 @@ "suggestion": "اقتراح", "suggestionColon": "اقتراح:", "annotationColon": "ملاحظة:", + "mapping": "رسم الخرائط", + "applyMapping": "تطبيق الخرائط", + "mappingInference": "استدلال رسم الخرائط", + "mappingInferenceTip": "اقتراح رسم الخرائط متاح لهذا المطلب", + "additionalInformation": "معلومات إضافية", + "requirementMappingSet": "رسم الخرائط", + "requirementMappingSetColon": "رسم الخرائط:", "requirementMappingSets": "ربط الأطر", + "requirementMapping": "تعيين المتطلبات", + "requirementMappings": "تعيينات المتطلبات", + "sourceFramework": "إطار المصدر", + "targetFramework": "الإطار المستهدف", + "baseline": "خط الأساس", + "createAuditFromBaseline": "إنشاء التدقيق من خط الأساس", + "coverageColon": "التغطية:", + "full": "ممتلىء", + "partial": "جزئي", + "noResultFound": "لم يتم العثور على نتيجة", + "filters": "المرشحات", + "notApplicableScore": "لا يمكنك التسجيل إذا لم يكن تقييم المتطلبات قابلاً للتطبيق", + "maturity": "نضج", + "progress": "تقدم", + "back": "خلف", + "duplicate": "ينسخ", + "duplicateRiskAssessment": "تكرار تقييم المخاطر", "size": "الحجم", + "favicon": "الرمز المفضل", + "logo": "الشعار", "clientSettings": "إعدادات العميل", "invalidFileType": "نوع الملف غير صالح", "logoHelpText": "سيتم عرض الشعار في رأس التطبيق. التنسيقات المقبولة هي PNG وJPEG وWEBP وSVG.", "faviconHelpText": "سيتم عرض الرمز المفضل في علامة تبويب المتصفح. التنسيقات المقبولة هي ICO وPNG وJPEG وWEBP", + "entity": "كيان", + "entities": "الكيانات", + "addEntity": "إضافة كيان", + "referenceLink": "رابط مرجعي", + "mission": "مهمة", + "ownedFolders": "المجالات المملوكة", + "thirdParty": "طرف ثالث", + "thirdPartyCategory": "الأطراف الثالثة", + "entityAssessment": "تقييم الكيان", + "entityAssessments": "تقييمات الكيان", + "addEntityAssessment": "إضافة تقييم الكيان", + "criticality": "الأهمية الحرجة", + "penetration": "اختراق", + "dependency": "التبعية", + "trust": "يثق", + "solutions": "الحلول", + "solution": "حل", + "addSolution": "إضافة الحل", + "providerEntity": "كيان المزود", + "addProduct": "إضافة المنتج", + "representatives": "ممثلين", + "representative": "ممثل", + "addRepresentative": "إضافة ممثل", + "phone": "هاتف", + "role": "دور", + "question": "سؤال", + "recipientEntity": "الكيان المتلقي", "financial": "المالي", "legal": "القانوني", "reputation": "السمعة", @@ -659,18 +718,64 @@ "integrity": "النزاهة", "availability": "التوفر", "authenticity": "الأصالة", + "reviewObservation": "مراجعة الملاحظة", + "reviewObservationSemiColon": "مراجعة الملاحظة:", + "reviewConclusion": "استنتاج المراجعة", + "reviewConclusionSemiColon": "استنتاج المراجعة:", + "review": "مراجعة", + "conclusionSemiColon": "خاتمة:", + "observationSemiColon": "ملاحظة:", + "tableMode": "وضع الجدول", + "owner": "مالك", "waitingRiskAcceptances": "مرحبًا! لديك حاليًا {number} مخاطرة معلقة .يمكنك العثور عليها في علامة التبويب المخاطر.", + "licenseSeats": "مقاعد الترخيص", + "licenseExpiration": "انتهاء صلاحية الترخيص", + "answer": "إجابة", + "questionnaireMode": "وضع الاستبيان", + "assessmentMode": "وضع التقييم", "createAudit": "إنشاء التدقيق", + "createAuditHelpText": "إنشاء تدقيق إلى جانب تقييم الكيان", + "questionnaire": "الاستبيان", + "conclusion": "خاتمة", + "blocker": "مانع", + "createUser": "إنشاء المستخدم", + "createUserHelpText": "إنشاء مستخدم تابع لجهة خارجية أو ربطه بالممثل بناءً على البريد الإلكتروني", "nameDuplicate": "الاسم موجود بالفعل", "noAnswer": "لا يوجد جواب", + "entityAssessmentRepresentativesHelpText": "المستخدمون الخارجيون المسؤولون عن استكمال الاستبيان", "sendQuestionnaire": "إرسال الاستبيان", "sureToSendQuestionnaire": "هل أنت متأكد من أنك تريد إرسال الاستبيان: {questionnaire} ؟", + "theFollowingRepresentativesWillReceiveTheQuestionnaireColon": "سوف يتلقى الممثلون التاليون الاستبيان:", + "mailSuccessfullySent": "لقد تم إرسال البريد بنجاح", + "mailFailedToSend": "فشل في إرسال البريد", + "questionOrQuestions": "أسئلة)", + "successfullyUpdatedClientSettings": "تم تحديث إعدادات العميل بنجاح، يرجى تحديث الصفحة.", + "xRaysEmptyMessage": "يتعين عليك إنشاء مشروع واحد على الأقل لاستخدام الأشعة السينية.", + "suggestControls": "اقتراح الضوابط", + "createAppliedControlsFromSuggestionsHelpText": "إنشاء عناصر تحكم تطبيقية من عناصر التحكم المرجعية المقترحة لمتطلبات الإطار", "createAppliedControlsFromSuggestionsSuccess": "تم تطبيق عناصر التحكم بنجاح من عناصر التحكم المرجعية المقترحة", + "createAppliedControlsFromSuggestionsError": "حدث خطأ أثناء إنشاء عناصر التحكم المطبقة من عناصر التحكم المرجعية المقترحة", + "createAppliedControlsFromSuggestionsConfirmMessage": "سيتم إنشاء عناصر التحكم المطبقة {count} من عناصر التحكم المرجعية المقترحة. هل تريد المتابعة؟", + "theFollowingControlsWillBeAddedColon": "سيتم إضافة عناصر التحكم التالية:", + "ShowAllNodesMessage": "إظهار الكل", + "ShowOnlyAssessable": "قابلة للتقييم فقط", + "experimental": "تجريبي", + "timeline": "الخط الزمني", + "graph": "الرسم البياني", + "startDate": "تاريخ البدء", + "startDateHelpText": "تاريخ البدء (مفيد للجدول الزمني)", "backupLoadingError": "حدث خطأ أثناء تحميل النسخة الاحتياطية.", "backupGreaterVersionError": "لا يمكن تحميل النسخة الاحتياطية، إصدار النسخة الاحتياطية أعلى من الإصدار الحالي للتطبيق الخاص بك.", "backupLowerVersionError": "حدث خطأ، قد تكون نسخة النسخ الاحتياطي قديمة جدًا، إذا كان الأمر كذلك فيجب تحديثها قبل إعادة المحاولة.", "NoPreviewMessage": "لا يوجد معاينة متاحة.", "entityAssessmentEvidenceHelpText": "استبيان خارجي", + "associatedEntities": "الكيانات المرتبطة", + "noMailerConfigured": "لم يتم تكوين أي بريد", "errorLicenseSeatsExceeded": "لقد تجاوز عدد مقاعد الترخيص، ولن تتمكن من منح حقوق التحرير لهذا المستخدم. يرجى الاتصال بالمسؤول لديك.", - "showImagesUnauthenticated": "إظهار الشعار والرمز المفضل للمستخدمين غير المعتمدين" + "availableSeats": "المقاعد المتاحة", + "showImagesUnauthenticated": "إظهار الشعار والرمز المفضل للمستخدمين غير المعتمدين", + "showImagesUnauthenticatedHelpText": "في حالة تعطيله، سيتم عرض شعار CISO Assistant العادي ورمز favicon على شاشة تسجيل الدخول", + "librariesCanOnlyBeLoadedByAdmin": "لا يمكن تحميل المكتبات إلا بواسطة المسؤول", + "catalog": "الكتالوج", + "operations": "العمليات" } diff --git a/frontend/messages/de.json b/frontend/messages/de.json index 79fecc4db..8629f4e2d 100644 --- a/frontend/messages/de.json +++ b/frontend/messages/de.json @@ -613,6 +613,8 @@ "x509Cert": "x509-Zertifikat", "SPEntityID": "SP-Entitäts-ID", "attributeMappingUID": "Attributzuordnungs-UID", + "attributeMappingEmail": "E-Mail zur Attributzuordnung", + "attributeMappingEmailVerified": "E-Mail zur Attributzuordnung verifiziert", "allowRepeatAttributeName": "Wiederholten Attributnamen zulassen", "allowSingleLabelDomains": "Einzellabel-Domänen zulassen", "authnRequestSigned": "Authentisierungsanfrage signiert", @@ -622,8 +624,14 @@ "metadataSigned": "Metadaten signiert", "nameIDEncrypted": "Namens-ID verschlüsselt", "rejectDeprecatedAlgorithm": "Veralteten Algorithmus ablehnen", + "rejectIdPInitiatedSSO": "Ablehnen des vom IdP initiierten SSO", "signatureAlgorithm": "Signaturalgorithmus", + "wantAssertionSigned": "Willst du eine unterschriebene Erklärung?", + "wantAssertionEncrypted": "Willst du Behauptung verschlüsselt", + "wantAttributeStatement": "Attributanweisung gewünscht?", "wantMessageSigned": "Nachricht signiert haben möchten", + "wantNameID": "Willst du einen Namen?", + "wantNameIDEncrypted": "Möchten Sie die Namens-ID verschlüsseln?", "IdPConfiguration": "IdP-Konfiguration", "enableSSO": "Aktivieren von SSO", "failedSSO": "SSO-Authentifizierung fehlgeschlagen, bitte wenden Sie sich an Ihren Administrator", @@ -643,9 +651,14 @@ "suggestion": "Anregung", "suggestionColon": "Anregung:", "annotationColon": "Anmerkung:", + "mapping": "Abbildung", + "applyMapping": "Zuordnung anwenden", "mappingInference": "Abbildungsinferenz", "mappingInferenceTip": "Für diese Anforderung ist ein Mapping-Vorschlag verfügbar", "additionalInformation": "Weitere Informationen", + "requirementMappingSet": "Abbildung", + "requirementMappingSetColon": "Abbildung:", + "requirementMappingSets": "Zuordnungen", "requirementMapping": "Anforderungszuordnung", "requirementMappings": "Anforderungszuordnungen", "sourceFramework": "Quellrahmen", @@ -664,6 +677,8 @@ "duplicate": "Duplikat", "duplicateRiskAssessment": "Duplizieren Sie die Risikobewertung", "size": "Größe", + "favicon": "Favicon", + "logo": "Logo", "clientSettings": "Clienteinstellungen", "invalidFileType": "Ungültiger Dateityp", "logoHelpText": "Das Logo wird im Header der Anwendung angezeigt. Akzeptierte Formate sind PNG, JPEG, WEBP, SVG.", @@ -674,6 +689,8 @@ "referenceLink": "Referenzlink", "mission": "Mission", "ownedFolders": "Eigene Domänen", + "thirdParty": "Dritte Seite", + "thirdPartyCategory": "Dritte", "entityAssessment": "Unternehmensbewertung", "entityAssessments": "Entitätsbewertungen", "addEntityAssessment": "Entitätsbewertung hinzufügen", @@ -711,21 +728,54 @@ "tableMode": "Tabellenmodus", "owner": "Eigentümer", "waitingRiskAcceptances": "Hallo! Sie haben derzeit {number} Risiko{s} zur Annahme ausstehend. Sie finden sie auf der Registerkarte „Risiken“.", + "licenseSeats": "Lizenzplätze", "licenseExpiration": "Ablauf der Lizenz", + "answer": "Antwort", "questionnaireMode": "Fragebogenmodus", + "assessmentMode": "Bewertungsmodus", "createAudit": "Audit erstellen", "createAuditHelpText": "Erstellen Sie ein Audit parallel zur Entitätsbewertung", + "questionnaire": "Fragebogen", + "conclusion": "Abschluss", + "blocker": "Blocker", + "createUser": "Benutzer erstellen", + "createUserHelpText": "Erstellen oder verknüpfen Sie einen Drittbenutzer mit dem Vertreter basierend auf der E-Mail", "nameDuplicate": "Name existiert bereits", "noAnswer": "Keine Antwort", + "entityAssessmentRepresentativesHelpText": "Die Drittbenutzer, die für das Ausfüllen des Fragebogens verantwortlich sind", "sendQuestionnaire": "Fragebogen abschicken", "sureToSendQuestionnaire": "Möchten Sie den Fragebogen: {questionnaire} wirklich versenden?", + "theFollowingRepresentativesWillReceiveTheQuestionnaireColon": "Den Fragebogen erhalten folgende Vertreter:", + "mailSuccessfullySent": "Die E-Mail wurde erfolgreich versendet", + "mailFailedToSend": "Die E-Mail konnte nicht gesendet werden", + "questionOrQuestions": "Frage(n)", + "successfullyUpdatedClientSettings": "Clienteinstellungen erfolgreich aktualisiert, bitte aktualisieren Sie die Seite.", + "xRaysEmptyMessage": "Um Röntgenstrahlen verwenden zu können, müssen Sie mindestens ein Projekt erstellen.", + "suggestControls": "Steuerelemente vorschlagen", + "createAppliedControlsFromSuggestionsHelpText": "Erstellen Sie angewandte Kontrollen aus den vorgeschlagenen Referenzkontrollen der Framework-Anforderungen", "createAppliedControlsFromSuggestionsSuccess": "Angewandte Kontrollen erfolgreich aus den vorgeschlagenen Referenzkontrollen erstellt", + "createAppliedControlsFromSuggestionsError": "Beim Erstellen der angewandten Kontrollen aus den vorgeschlagenen Referenzkontrollen ist ein Fehler aufgetreten", + "createAppliedControlsFromSuggestionsConfirmMessage": "Aus den vorgeschlagenen Referenzkontrollen werden {count} angewendete Kontrollen erstellt. Möchten Sie fortfahren?", + "theFollowingControlsWillBeAddedColon": "Die folgenden Steuerelemente werden hinzugefügt:", + "ShowAllNodesMessage": "Alle anzeigen", + "ShowOnlyAssessable": "Nur bewertbar", + "experimental": "Experimental", + "timeline": "Zeitleiste", + "graph": "Graph", + "startDate": "Startdatum", "startDateHelpText": "Startdatum (nützlich für die Zeitleiste)", "backupLoadingError": "Beim Laden der Sicherung ist ein Fehler aufgetreten.", "backupGreaterVersionError": "Das Backup kann nicht geladen werden, die Version des Backups ist höher als die aktuelle Version Ihrer Anwendung.", "backupLowerVersionError": "Ein Fehler ist aufgetreten. Die Sicherungsversion ist möglicherweise zu alt. Wenn dies der Fall ist, muss sie vor einem erneuten Versuch aktualisiert werden.", "NoPreviewMessage": "Keine Vorschau verfügbar.", "entityAssessmentEvidenceHelpText": "Ein externer Fragebogen", + "associatedEntities": "Verbundene Unternehmen", + "noMailerConfigured": "Kein Mailer konfiguriert", "errorLicenseSeatsExceeded": "Die Anzahl der Lizenzplätze ist überschritten, Sie können diesem Benutzer keine Bearbeitungsrechte mehr erteilen. Bitte kontaktieren Sie Ihren Administrator.", - "showImagesUnauthenticated": "Nicht authentifizierten Benutzern Logo und Favicon anzeigen" + "availableSeats": "Verfügbare Plätze", + "showImagesUnauthenticated": "Nicht authentifizierten Benutzern Logo und Favicon anzeigen", + "showImagesUnauthenticatedHelpText": "Wenn deaktiviert, werden das normale CISO Assistant-Logo und das Favicon auf dem Anmeldebildschirm angezeigt", + "librariesCanOnlyBeLoadedByAdmin": "Bibliotheken können nur von einem Administrator geladen werden", + "catalog": "Katalog", + "operations": "Operationen" } diff --git a/frontend/messages/es.json b/frontend/messages/es.json index 70f217b37..ff11ae160 100644 --- a/frontend/messages/es.json +++ b/frontend/messages/es.json @@ -613,6 +613,8 @@ "x509Cert": "certificado x509", "SPEntityID": "Identificación de entidad SP", "attributeMappingUID": "UID de mapeo de atributos", + "attributeMappingEmail": "Asignación de atributos por correo electrónico", + "attributeMappingEmailVerified": "Asignación de atributos por correo electrónico verificado", "allowRepeatAttributeName": "Permitir repetir nombre de atributo", "allowSingleLabelDomains": "Permitir dominios de etiqueta única", "authnRequestSigned": "Solicitud de autorización firmada", @@ -622,8 +624,14 @@ "metadataSigned": "Metadatos firmados", "nameIDEncrypted": "Identificación de nombre cifrada", "rejectDeprecatedAlgorithm": "Rechazar algoritmo obsoleto", + "rejectIdPInitiatedSSO": "Rechazar inicio de sesión único iniciado por IdP", "signatureAlgorithm": "Algoritmo de firma", + "wantAssertionSigned": "Quiero que se firme la afirmación", + "wantAssertionEncrypted": "Quiero una afirmación cifrada", + "wantAttributeStatement": "¿Quiere una declaración de atributo?", "wantMessageSigned": "Quiero mensaje firmado", + "wantNameID": "¿Quieres identificación de nombre?", + "wantNameIDEncrypted": "¿Quieres que el ID del nombre esté cifrado?", "IdPConfiguration": "Configuración de IdP", "enableSSO": "Habilitar SSO", "failedSSO": "La autenticación SSO falló; comuníquese con su administrador", @@ -643,9 +651,14 @@ "suggestion": "Sugerencia", "suggestionColon": "Sugerencia:", "annotationColon": "Anotación:", + "mapping": "Cartografía", + "applyMapping": "Aplicar mapeo", "mappingInference": "Inferencia de mapeo", "mappingInferenceTip": "La sugerencia de mapeo está disponible para este requisito.", "additionalInformation": "Información adicional", + "requirementMappingSet": "Cartografía", + "requirementMappingSetColon": "Cartografía:", + "requirementMappingSets": "Mapeos", "requirementMapping": "Mapeo de requisitos", "requirementMappings": "Asignaciones de requisitos", "sourceFramework": "Marco de trabajo", @@ -664,6 +677,8 @@ "duplicate": "Duplicar", "duplicateRiskAssessment": "Duplicar la evaluación de riesgo", "size": "Tamaño", + "favicon": "Favicon", + "logo": "Logo", "clientSettings": "Configuración del cliente", "invalidFileType": "Tipo de archivo no válido", "logoHelpText": "El logotipo se mostrará en el encabezado de la aplicación. Los formatos aceptados son PNG, JPEG, WEBP y SVG.", @@ -674,6 +689,8 @@ "referenceLink": "Enlace de referencia", "mission": "Misión", "ownedFolders": "Dominios propios", + "thirdParty": "Tercero", + "thirdPartyCategory": "Terceros", "entityAssessment": "Evaluación de entidades", "entityAssessments": "Evaluaciones de entidades", "addEntityAssessment": "Añadir evaluación de entidad", @@ -711,21 +728,54 @@ "tableMode": "Modo de tabla", "owner": "Titular", "waitingRiskAcceptances": "Hola! Actualmente tienes {number} riesgo{s} aceptación pendiente. Puedes encontrarlos en la pestaña de riesgo.", + "licenseSeats": "Asientos de licencia", "licenseExpiration": "Caducidad de la licencia", + "answer": "Respuesta", "questionnaireMode": "Modo cuestionario", + "assessmentMode": "Modo de evaluación", "createAudit": "Crear auditoría", "createAuditHelpText": "Crear una auditoría junto con la evaluación de la entidad", + "questionnaire": "Cuestionario", + "conclusion": "Conclusión", + "blocker": "Bloqueador", + "createUser": "Crear usuario", + "createUserHelpText": "Crear o vincular un usuario de terceros al representante en función del correo electrónico", "nameDuplicate": "El nombre ya existe", "noAnswer": "No hay respuesta", + "entityAssessmentRepresentativesHelpText": "Los usuarios de terceros que son responsables de completar el cuestionario", "sendQuestionnaire": "Enviar cuestionario", "sureToSendQuestionnaire": "¿Está seguro de que desea enviar el cuestionario: {questionnaire} ?", + "theFollowingRepresentativesWillReceiveTheQuestionnaireColon": "Los siguientes representantes recibirán el cuestionario:", + "mailSuccessfullySent": "El correo ha sido enviado exitosamente", + "mailFailedToSend": "El correo no se pudo enviar", + "questionOrQuestions": "Preguntas)", + "successfullyUpdatedClientSettings": "La configuración del cliente se actualizó correctamente, actualice la página.", + "xRaysEmptyMessage": "Debes crear al menos un proyecto para poder utilizar rayos X.", + "suggestControls": "Sugerir controles", + "createAppliedControlsFromSuggestionsHelpText": "Crear controles aplicados a partir de los controles de referencia sugeridos por los requisitos del marco", "createAppliedControlsFromSuggestionsSuccess": "Controles aplicados creados exitosamente a partir de los controles de referencia sugeridos", + "createAppliedControlsFromSuggestionsError": "Se produjo un error al crear controles aplicados a partir de los controles de referencia sugeridos", + "createAppliedControlsFromSuggestionsConfirmMessage": "Los controles aplicados {count} se crearán a partir de los controles de referencia sugeridos. ¿Desea continuar?", + "theFollowingControlsWillBeAddedColon": "Se agregarán los siguientes controles:", + "ShowAllNodesMessage": "Mostrar todo", + "ShowOnlyAssessable": "Solo evaluable", + "experimental": "Experimental", + "timeline": "Cronología", + "graph": "Gráfico", + "startDate": "Fecha de inicio", "startDateHelpText": "Fecha de inicio (útil para la cronología)", "backupLoadingError": "Se produjo un error al cargar la copia de seguridad.", "backupGreaterVersionError": "No se puede cargar la copia de seguridad, la versión de la copia de seguridad es superior a la versión actual de la aplicación.", "backupLowerVersionError": "Se produjo un error, la versión de respaldo puede ser demasiado antigua, si es así debe actualizarse antes de volver a intentarlo.", "NoPreviewMessage": "No hay vista previa disponible.", "entityAssessmentEvidenceHelpText": "Un cuestionario externo", + "associatedEntities": "Entidades asociadas", + "noMailerConfigured": "No hay ningún correo configurado", "errorLicenseSeatsExceeded": "Se ha excedido el número de licencias, no podrá otorgar derechos de edición a este usuario. Póngase en contacto con su administrador.", - "showImagesUnauthenticated": "Mostrar logotipo y favicono a usuarios no autenticados" + "availableSeats": "Asientos disponibles", + "showImagesUnauthenticated": "Mostrar logotipo y favicono a usuarios no autenticados", + "showImagesUnauthenticatedHelpText": "Si está deshabilitado, el logotipo y el favicon habituales del Asistente de CISO se mostrarán en la pantalla de inicio de sesión.", + "librariesCanOnlyBeLoadedByAdmin": "Las bibliotecas sólo pueden ser cargadas por un administrador", + "catalog": "Catalogar", + "operations": "Operaciones" } diff --git a/frontend/messages/fr.json b/frontend/messages/fr.json index 1bdfa9eba..a924bc118 100644 --- a/frontend/messages/fr.json +++ b/frontend/messages/fr.json @@ -613,6 +613,7 @@ "x509Cert": "certificat x509", "SPEntityID": "ID d'entité SP", "attributeMappingUID": "Mappage d'attributs UID", + "attributeMappingEmail": "E-mail de mappage d'attributs", "attributeMappingEmailVerified": " ", "allowRepeatAttributeName": "Autoriser la répétition du nom d'attribut", "allowSingleLabelDomains": "Autoriser les domaines à étiquette unique", @@ -623,8 +624,14 @@ "metadataSigned": "Métadonnées chiffrées", "nameIDEncrypted": "Nom ID chiffré", "rejectDeprecatedAlgorithm": "Rejeter l'algorithme obsolète", + "rejectIdPInitiatedSSO": "Rejeter l'authentification unique initiée par l'IdP", "signatureAlgorithm": "Algorithme de signature", + "wantAssertionSigned": "Je veux que l'affirmation soit signée", + "wantAssertionEncrypted": "Je veux que l'affirmation soit cryptée", + "wantAttributeStatement": "Déclaration d'attribut souhaitée", "wantMessageSigned": "Je veux un message signé", + "wantNameID": "Je veux un nom d'identification", + "wantNameIDEncrypted": "Je veux que l'identifiant du nom soit crypté", "IdPConfiguration": "Configuration IdP", "enableSSO": "Activer le SSO", "failedSSO": "L'authentification SSO a échoué, veuillez contacter votre administrateur", @@ -644,9 +651,14 @@ "suggestion": "Suggestion", "suggestionColon": "Suggestion :", "annotationColon": "Annotation :", + "mapping": "Cartographie", + "applyMapping": "Appliquer la cartographie", "mappingInference": "Inférence de mapping", "mappingInferenceTip": "Une suggestion de mappage est disponible pour cette exigence", "additionalInformation": "Informations Complémentaires", + "requirementMappingSet": "Cartographie", + "requirementMappingSetColon": "Cartographie :", + "requirementMappingSets": "Cartographies", "requirementMapping": "Cartographie des exigences", "requirementMappings": "Cartographies des exigences", "sourceFramework": "Référentiel source", @@ -665,6 +677,8 @@ "duplicate": "Dupliquer", "duplicateRiskAssessment": "Dupliquer l’évaluation de risque", "size": "Taille", + "favicon": "Icône de favori", + "logo": "Logo", "clientSettings": "Paramètres du client", "invalidFileType": "Type de fichier non valide", "logoHelpText": "Le logo sera affiché dans l'en-tête de l'application. Les formats acceptés sont PNG, JPEG, WEBP, SVG.", @@ -714,17 +728,27 @@ "tableMode": "Mode tableau", "owner": "Propriétaire", "waitingRiskAcceptances": "Bonjour ! Vous avez actuellement {number} risque{s} en attente d'acceptation. Vous pouvez les retrouver dans l'onglet risque.", + "licenseSeats": "Sièges de licence", "licenseExpiration": "Expiration de la licence", + "answer": "Répondre", "questionnaireMode": "Mode questionnaire", + "assessmentMode": "Mode d'évaluation", "createAudit": "Créer un audit", "createAuditHelpText": "Créer un audit parallèlement à l'évaluation de l'entité", "questionnaire": "Questionnaire", "conclusion": "Conclusion", + "blocker": "Bloqueur", "createUser": "Créer un utilisateur", + "createUserHelpText": "Créer ou lier un utilisateur tiers au représentant en fonction de l'e-mail", "nameDuplicate": "Le nom existe déjà", "noAnswer": "Pas de réponse", + "entityAssessmentRepresentativesHelpText": "Les utilisateurs tiers qui sont responsables de la complétion du questionnaire", "sendQuestionnaire": "Envoyer le questionnaire", "sureToSendQuestionnaire": "Etes-vous sûr de vouloir envoyer le questionnaire : {questionnaire} ?", + "theFollowingRepresentativesWillReceiveTheQuestionnaireColon": "Les représentants suivants recevront le questionnaire :", + "mailSuccessfullySent": "Le courrier a été envoyé avec succès", + "mailFailedToSend": "Le courrier n'a pas pu être envoyé", + "questionOrQuestions": "Question(s)", "successfullyUpdatedClientSettings": "Paramètres du client mis à jour avec succès. Vous pouvez rafrachir la page.", "xRaysEmptyMessage": "Vous devez créer au moins un projet pour utiliser X-rays.", "suggestControls": "Mesures recommandées", @@ -735,15 +759,23 @@ "theFollowingControlsWillBeAddedColon": "Les mesures suivantes seront appliquées :", "ShowAllNodesMessage": "Tout afficher", "ShowOnlyAssessable": "Uniquement évaluables", + "experimental": "Expérimental", + "timeline": "Chronologie", + "graph": "Graphique", + "startDate": "Date de début", "startDateHelpText": "Date de début (utile pour la chronologie)", "backupLoadingError": "Une erreur s'est produite lors du chargement de la sauvegarde.", "backupGreaterVersionError": "Impossible de charger la sauvegarde, la version de la sauvegarde est supérieure à la version actuelle de votre application.", "backupLowerVersionError": "Une erreur s'est produite, la version de sauvegarde est peut-être trop ancienne, si c'est le cas, elle doit être mise à jour avant de réessayer.", "NoPreviewMessage": "Aucun aperçu disponible.", "entityAssessmentEvidenceHelpText": "Un questionnaire externe", + "associatedEntities": "Entités associées", + "noMailerConfigured": "Aucun mailer configuré", "errorLicenseSeatsExceeded": "Le nombre de licences disponibles est dépassé, vous ne pourrez pas accorder de droits d'édition à cet utilisateur. Veuillez contacter votre administrateur.", "availableSeats": "Places disponibles", "showImagesUnauthenticated": "Afficher le logo et le favicon aux utilisateurs non authentifiés", "showImagesUnauthenticatedHelpText": "Si cette option est désactivée, le logo et l'icône habituels de l'assistant CISO seront affichés sur l'écran de connexion.", - "catalog": "Catalogue" + "librariesCanOnlyBeLoadedByAdmin": "Les bibliothèques ne peuvent être chargées que par un administrateur", + "catalog": "Catalogue", + "operations": "Opérations" } diff --git a/frontend/messages/hi.json b/frontend/messages/hi.json index 5fa13a74a..18c7936dc 100644 --- a/frontend/messages/hi.json +++ b/frontend/messages/hi.json @@ -652,6 +652,7 @@ "suggestionColon": "सुझाव:", "annotationColon": "व्याख्या:", "mapping": "मैपिंग", + "applyMapping": "मैपिंग लागू करें", "mappingInference": "मैपिंग अनुमान", "mappingInferenceTip": "इस आवश्यकता के लिए मैपिंग सुझाव उपलब्ध है", "additionalInformation": "अतिरिक्त जानकारी", @@ -676,6 +677,8 @@ "duplicate": "प्रतिलिपि", "duplicateRiskAssessment": "जोखिम आकलन की प्रतिलिपि बनाएँ", "size": "आकार", + "favicon": "फ़ेविकॉन", + "logo": "प्रतीक चिन्ह", "clientSettings": "क्लाइंट सेटिंग्स", "invalidFileType": "अमान्य फ़ाइल प्रकार", "logoHelpText": "लोगो को एप्लीकेशन के हेडर में प्रदर्शित किया जाएगा। स्वीकृत प्रारूप PNG, JPEG, WEBP, SVG हैं।", @@ -686,8 +689,27 @@ "referenceLink": "संदर्भ लिंक", "mission": "उद्देश्य", "ownedFolders": "स्वामित्व वाले डोमेन", + "thirdParty": "तृतीय पक्ष", + "thirdPartyCategory": "तीसरे पक्ष", "entityAssessment": "इकाई मूल्यांकन", "entityAssessments": "इकाई मूल्यांकन", + "addEntityAssessment": "इकाई मूल्यांकन जोड़ें", + "criticality": "निर्णायक मोड़", + "penetration": "प्रवेश", + "dependency": "निर्भरता", + "trust": "विश्वास", + "solutions": "समाधान", + "solution": "समाधान", + "addSolution": "समाधान जोड़ें", + "providerEntity": "प्रदाता इकाई", + "addProduct": "उत्पाद जोड़ें", + "representatives": "प्रतिनिधियों", + "representative": "प्रतिनिधि", + "addRepresentative": "प्रतिनिधि जोड़ें", + "phone": "फ़ोन", + "role": "भूमिका", + "question": "सवाल", + "recipientEntity": "प्राप्तकर्ता इकाई", "financial": "वित्तीय", "legal": "कानूनी", "reputation": "प्रतिष्ठा", @@ -696,23 +718,64 @@ "integrity": "अखंडता", "availability": "उपलब्धता", "authenticity": "प्रामाणिकता", + "reviewObservation": "अवलोकन की समीक्षा करें", + "reviewObservationSemiColon": "अवलोकन की समीक्षा करें:", + "reviewConclusion": "समीक्षा निष्कर्ष", + "reviewConclusionSemiColon": "समीक्षा निष्कर्ष:", + "review": "समीक्षा", + "conclusionSemiColon": "निष्कर्ष:", + "observationSemiColon": "अवलोकन:", + "tableMode": "टेबल मोड", "owner": "मालिक", "waitingRiskAcceptances": "नमस्ते! आपके पास वर्तमान में {number} जोखिम स्वीकृति{s} लंबित हैं। आप उन्हें जोखिम टैब में पा सकते हैं।", + "licenseSeats": "लाइसेंस सीटें", "licenseExpiration": "लाइसेंस समाप्ति", + "answer": "उत्तर", "questionnaireMode": "प्रश्नावली मोड", + "assessmentMode": "मूल्यांकन मोड", "createAudit": "ऑडिट बनाएं", "createAuditHelpText": "इकाई मूल्यांकन के साथ-साथ एक ऑडिट बनाएं", + "questionnaire": "प्रश्नावली", + "conclusion": "निष्कर्ष", + "blocker": "अवरोधक", + "createUser": "उपयोगकर्ता बनाएं", + "createUserHelpText": "ईमेल के आधार पर प्रतिनिधि से तीसरे पक्ष के उपयोगकर्ता को बनाएं या लिंक करें", "nameDuplicate": "नाम पहले से मौजूद है", "noAnswer": "कोई जवाब नहीं", + "entityAssessmentRepresentativesHelpText": "तीसरे पक्ष के उपयोगकर्ता जो प्रश्नावली को पूरा करने के लिए जिम्मेदार हैं", "sendQuestionnaire": "प्रश्नावली भेजें", "sureToSendQuestionnaire": "क्या आप वाकई प्रश्नावली भेजना चाहते हैं: {questionnaire} ?", + "theFollowingRepresentativesWillReceiveTheQuestionnaireColon": "निम्नलिखित प्रतिनिधियों को प्रश्नावली प्राप्त होगी:", + "mailSuccessfullySent": "मेल सफलतापूर्वक भेज दिया गया है", + "mailFailedToSend": "मेल भेजा जाना विफल रहा", + "questionOrQuestions": "प्रश्न", + "successfullyUpdatedClientSettings": "क्लाइंट सेटिंग्स सफलतापूर्वक अपडेट हो गई हैं, कृपया पेज को रीफ्रेश करें।", + "xRaysEmptyMessage": "एक्स-रे का उपयोग करने के लिए आपको कम से कम एक प्रोजेक्ट बनाना होगा।", + "suggestControls": "नियंत्रण सुझाएँ", + "createAppliedControlsFromSuggestionsHelpText": "फ़्रेमवर्क की आवश्यकताओं के सुझाए गए संदर्भ नियंत्रणों से लागू नियंत्रण बनाएँ", "createAppliedControlsFromSuggestionsSuccess": "सुझाए गए संदर्भ नियंत्रणों से सफलतापूर्वक लागू किए गए नियंत्रण बनाए गए", + "createAppliedControlsFromSuggestionsError": "सुझाए गए संदर्भ नियंत्रणों से लागू नियंत्रण बनाते समय त्रुटि हुई", + "createAppliedControlsFromSuggestionsConfirmMessage": "{count} लागू नियंत्रण सुझाए गए संदर्भ नियंत्रणों से बनाए जाएँगे। क्या आप आगे बढ़ना चाहते हैं?", + "theFollowingControlsWillBeAddedColon": "निम्नलिखित नियंत्रण जोड़े जाएंगे:", + "ShowAllNodesMessage": "सब दिखाएं", + "ShowOnlyAssessable": "केवल आकलन योग्य", + "experimental": "प्रयोगात्मक", + "timeline": "समय", + "graph": "ग्राफ़", + "startDate": "आरंभ करने की तिथि", "startDateHelpText": "आरंभ तिथि (समयरेखा के लिए उपयोगी)", "backupLoadingError": "बैकअप लोड करते समय एक त्रुटि हुई.", "backupGreaterVersionError": "बैकअप लोड नहीं किया जा सकता, बैकअप का संस्करण आपके एप्लिकेशन के वर्तमान संस्करण से अधिक है.", "backupLowerVersionError": "कोई त्रुटि हुई, बैकअप संस्करण बहुत पुराना हो सकता है, यदि ऐसा है तो पुनः प्रयास करने से पहले उसे अद्यतन करना आवश्यक है।", "NoPreviewMessage": "कोई पूर्वावलोकन उपलब्ध नहीं है.", "entityAssessmentEvidenceHelpText": "एक बाहरी प्रश्नावली", + "associatedEntities": "संबद्ध संस्थाएं", + "noMailerConfigured": "कोई मेलर कॉन्फ़िगर नहीं किया गया", "errorLicenseSeatsExceeded": "लाइसेंस सीटों की संख्या पार हो गई है, आप इस उपयोगकर्ता को संपादन अधिकार नहीं दे पाएंगे। कृपया अपने व्यवस्थापक से संपर्क करें।", - "showImagesUnauthenticated": "अप्रमाणित उपयोगकर्ताओं को लोगो और फ़ेविकॉन दिखाएँ" + "availableSeats": "उपलब्ध सीट", + "showImagesUnauthenticated": "अप्रमाणित उपयोगकर्ताओं को लोगो और फ़ेविकॉन दिखाएँ", + "showImagesUnauthenticatedHelpText": "यदि अक्षम किया गया है, तो नियमित CISO सहायक लोगो और फ़ेविकॉन लॉगिन स्क्रीन पर प्रदर्शित किया जाएगा", + "librariesCanOnlyBeLoadedByAdmin": "लाइब्रेरीज़ को केवल व्यवस्थापक द्वारा ही लोड किया जा सकता है", + "catalog": "सूची", + "operations": "संचालन" } diff --git a/frontend/messages/it.json b/frontend/messages/it.json index fcfd02b62..92c9a187a 100644 --- a/frontend/messages/it.json +++ b/frontend/messages/it.json @@ -613,6 +613,8 @@ "x509Cert": "certificato x509", "SPEntityID": "ID entità SP", "attributeMappingUID": "UID di mappatura degli attributi", + "attributeMappingEmail": "E-mail di mappatura degli attributi", + "attributeMappingEmailVerified": "Email di mappatura degli attributi verificata", "allowRepeatAttributeName": "Consenti la ripetizione del nome dell'attributo", "allowSingleLabelDomains": "Consenti domini con etichetta singola", "authnRequestSigned": "Richiesta di autenticazione firmata", @@ -622,8 +624,14 @@ "metadataSigned": "Metadati firmati", "nameIDEncrypted": "Nome ID crittografato", "rejectDeprecatedAlgorithm": "Rifiuta algoritmo deprecato", + "rejectIdPInitiatedSSO": "Rifiuta SSO avviato da IdP", "signatureAlgorithm": "Algoritmo di firma", + "wantAssertionSigned": "Voglio che l'affermazione sia firmata", + "wantAssertionEncrypted": "Voglio che l'affermazione sia crittografata", + "wantAttributeStatement": "Dichiarazione di attributo desiderata", "wantMessageSigned": "Voglio che il messaggio venga firmato", + "wantNameID": "Voglio il nome ID", + "wantNameIDEncrypted": "Voglio che il nome ID sia crittografato", "IdPConfiguration": "Configurazione IdP", "enableSSO": "Abilita SSO", "failedSSO": "Autenticazione SSO non riuscita, contatta il tuo amministratore", @@ -643,9 +651,14 @@ "suggestion": "Suggerimento", "suggestionColon": "Suggerimento:", "annotationColon": "Annotazione:", + "mapping": "Mappatura", + "applyMapping": "Applica la mappatura", "mappingInference": "Inferenza di mappatura", "mappingInferenceTip": "Per questo requisito è disponibile un suggerimento di mappatura", "additionalInformation": "Informazioni aggiuntive", + "requirementMappingSet": "Mappatura", + "requirementMappingSetColon": "Mappatura:", + "requirementMappingSets": "Mappature", "requirementMapping": "Mappatura dei requisiti", "requirementMappings": "Mappature dei requisiti", "sourceFramework": "Quadro di origine", @@ -664,6 +677,8 @@ "duplicate": "Duplicare", "duplicateRiskAssessment": "Duplicare la valutazione del rischio", "size": "Dimensione", + "favicon": "Icona preferita", + "logo": "Logo", "clientSettings": "Impostazioni del cliente", "invalidFileType": "Tipo di file non valido", "logoHelpText": "Il logo verrà visualizzato nell'intestazione dell'applicazione. I formati accettati sono PNG, JPEG, WEBP, SVG.", @@ -674,6 +689,8 @@ "referenceLink": "Link di riferimento", "mission": "Missione", "ownedFolders": "Domini di proprietà", + "thirdParty": "Terzo", + "thirdPartyCategory": "Terze parti", "entityAssessment": "Valutazione dell'entità", "entityAssessments": "Valutazioni dell'entità", "addEntityAssessment": "Aggiungere la valutazione dell'entità", @@ -711,26 +728,54 @@ "tableMode": "Modalità tabella", "owner": "Proprietario", "waitingRiskAcceptances": "Ciao! Al momento hai {number} rischi{s} in attesa di accettazione. Puoi trovarli nella scheda rischi.", + "licenseSeats": "Posti di licenza", "licenseExpiration": "Scadenza della licenza", + "answer": "Risposta", "questionnaireMode": "Modalità questionario", + "assessmentMode": "Modalità di valutazione", "createAudit": "Crea audit", "createAuditHelpText": "Creare un audit insieme alla valutazione dell'entità", "questionnaire": "Questionario", "conclusion": "Conclusione", + "blocker": "Bloccante", "createUser": "Crea utente", + "createUserHelpText": "Crea o collega un utente di terze parti al rappresentante in base all'e-mail", "nameDuplicate": "Il nome esiste già", "noAnswer": "Nessuna risposta", + "entityAssessmentRepresentativesHelpText": "Gli utenti terzi responsabili della compilazione del questionario", "sendQuestionnaire": "Invia questionario", "sureToSendQuestionnaire": "Sei sicuro di voler inviare il questionario: {questionnaire} ?", + "theFollowingRepresentativesWillReceiveTheQuestionnaireColon": "I seguenti rappresentanti riceveranno il questionario:", + "mailSuccessfullySent": "La mail è stata inviata con successo", + "mailFailedToSend": "La posta non è stata inviata", + "questionOrQuestions": "Domanda(e)", + "successfullyUpdatedClientSettings": "Impostazioni client aggiornate correttamente, aggiornare la pagina.", + "xRaysEmptyMessage": "Per utilizzare i raggi X è necessario creare almeno un progetto.", + "suggestControls": "Suggerisci controlli", + "createAppliedControlsFromSuggestionsHelpText": "Creare controlli applicati dai controlli di riferimento suggeriti dai requisiti del framework", "createAppliedControlsFromSuggestionsSuccess": "Controlli applicati creati correttamente dai controlli di riferimento suggeriti", + "createAppliedControlsFromSuggestionsError": "Si è verificato un errore durante la creazione dei controlli applicati dai controlli di riferimento suggeriti", + "createAppliedControlsFromSuggestionsConfirmMessage": "{count} controlli applicati verranno creati dai controlli di riferimento suggeriti. Vuoi procedere?", + "theFollowingControlsWillBeAddedColon": "Verranno aggiunti i seguenti controlli:", + "ShowAllNodesMessage": "Mostra tutto", + "ShowOnlyAssessable": "Solo valutabile", + "experimental": "Sperimentale", + "timeline": "Cronologia", + "graph": "Grafico", + "startDate": "Data di inizio", "startDateHelpText": "Data di inizio (utile per la cronologia)", "backupLoadingError": "Si è verificato un errore durante il caricamento del backup.", "backupGreaterVersionError": "Impossibile caricare il backup, la versione del backup è successiva alla versione corrente dell'applicazione.", "backupLowerVersionError": "Si è verificato un errore, la versione di backup potrebbe essere troppo vecchia. In tal caso, è necessario aggiornarla prima di riprovare.", "NoPreviewMessage": "Nessuna anteprima disponibile.", "entityAssessmentEvidenceHelpText": "Un questionario esterno", + "associatedEntities": "Entità collegate", + "noMailerConfigured": "Nessun mailer configurato", "errorLicenseSeatsExceeded": "Il numero di postazioni di licenza è stato superato, non potrai concedere diritti di modifica a questo utente. Contatta il tuo amministratore.", "availableSeats": "Posti disponibili", "showImagesUnauthenticated": "Mostra logo e favicon agli utenti non autenticati", - "showImagesUnauthenticatedHelpText": "Se disabilitato, il logo e l'icona preferiti di CISO Assistant verranno visualizzati nella schermata di accesso" + "showImagesUnauthenticatedHelpText": "Se disabilitato, il logo e l'icona preferiti di CISO Assistant verranno visualizzati nella schermata di accesso", + "librariesCanOnlyBeLoadedByAdmin": "Le librerie possono essere caricate solo da un amministratore", + "catalog": "Catalogare", + "operations": "Operazioni" } diff --git a/frontend/messages/nl.json b/frontend/messages/nl.json index 137784eed..2e80dae2a 100644 --- a/frontend/messages/nl.json +++ b/frontend/messages/nl.json @@ -599,6 +599,7 @@ "secret": "Geheim", "key": "Sleutel", "settings": "Instellingen", + "identityProvider": "Identiteitsprovider", "identityProviders": "Identiteitsaanbieders", "clientIDHelpText": "App-ID of consumentensleutel", "secretHelpText": "API-geheim, clientgeheim of consumentengeheim", @@ -612,6 +613,8 @@ "x509Cert": "x509-certificaat", "SPEntityID": "SP-entiteits-ID", "attributeMappingUID": "Attribuut mapping UID", + "attributeMappingEmail": "Attribuut mapping e-mail", + "attributeMappingEmailVerified": "Attribuut mapping e-mail geverifieerd", "allowRepeatAttributeName": "Toestaan dat attribuutnaam wordt herhaald", "allowSingleLabelDomains": "Enkelvoudige labeldomeinen toestaan", "authnRequestSigned": "Authn-verzoek ondertekend", @@ -621,8 +624,14 @@ "metadataSigned": "Metadata ondertekend", "nameIDEncrypted": "Naam-ID gecodeerd", "rejectDeprecatedAlgorithm": "Verouderd algoritme afwijzen", + "rejectIdPInitiatedSSO": "Door IdP geïnitieerde SSO afwijzen", "signatureAlgorithm": "Handtekeningalgoritme", + "wantAssertionSigned": "Wil dat de verklaring ondertekend wordt", + "wantAssertionEncrypted": "Wil bewering gecodeerd", + "wantAttributeStatement": "Wil attribuut statement", "wantMessageSigned": "Bericht ondertekend willen hebben", + "wantNameID": "Wilt u een naam-ID?", + "wantNameIDEncrypted": "Wilt u dat uw naam-ID gecodeerd is?", "IdPConfiguration": "IdP-configuratie", "enableSSO": "SSO inschakelen", "failedSSO": "SSO-authenticatie mislukt. Neem contact op met uw beheerder", @@ -642,9 +651,14 @@ "suggestion": "Suggestie", "suggestionColon": "Suggestie:", "annotationColon": "Annotatie:", + "mapping": "In kaart brengen", + "applyMapping": "Toepassen van mapping", "mappingInference": "Inferentie in kaart brengen", "mappingInferenceTip": "Voor deze vereiste is een mappingsuggestie beschikbaar", "additionalInformation": "Extra informatie", + "requirementMappingSet": "In kaart brengen", + "requirementMappingSetColon": "In kaart brengen:", + "requirementMappingSets": "Kaarten", "requirementMapping": "Vereisten in kaart brengen", "requirementMappings": "Vereistentoewijzingen", "sourceFramework": "Bronkader", @@ -663,6 +677,8 @@ "duplicate": "Duplicaat", "duplicateRiskAssessment": "Dupliceer de risicobeoordeling", "size": "Grootte", + "favicon": "Favorieten", + "logo": "Logo", "clientSettings": "Clientinstellingen", "invalidFileType": "Ongeldig bestandstype", "logoHelpText": "Het logo wordt weergegeven in de header van de applicatie. Geaccepteerde formaten zijn PNG, JPEG, WEBP, SVG.", @@ -673,6 +689,8 @@ "referenceLink": "Referentielink", "mission": "Missie", "ownedFolders": "Eigendom domeinen", + "thirdParty": "Derde partij", + "thirdPartyCategory": "Derden", "entityAssessment": "Entiteitsbeoordeling", "entityAssessments": "Entiteitsbeoordelingen", "addEntityAssessment": "Entiteitsbeoordeling toevoegen", @@ -710,22 +728,54 @@ "tableMode": "Tabelmodus", "owner": "Eigenaar", "waitingRiskAcceptances": "Hallo! U hebt momenteel {number} risico{s} acceptatie in behandeling. U kunt ze vinden in het tabblad risico.", + "licenseSeats": "Licentie stoelen", "licenseExpiration": "Licentie verloopt", + "answer": "Antwoord", "questionnaireMode": "Vragenlijstmodus", + "assessmentMode": "Beoordelingsmodus", "createAudit": "Audit aanmaken", "createAuditHelpText": "Maak een audit aan naast de entiteitsbeoordeling", + "questionnaire": "Vragenlijst", + "conclusion": "Conclusie", + "blocker": "Blokker", + "createUser": "Gebruiker aanmaken", + "createUserHelpText": "Maak of koppel een derde partijgebruiker aan de vertegenwoordiger op basis van het e-mailadres", "nameDuplicate": "Naam bestaat al", "noAnswer": "Geen antwoord", + "entityAssessmentRepresentativesHelpText": "De externe gebruikers die verantwoordelijk zijn voor het invullen van de vragenlijst", "sendQuestionnaire": "Vragenlijst verzenden", "sureToSendQuestionnaire": "Weet u zeker dat u de vragenlijst {questionnaire} wilt verzenden?", + "theFollowingRepresentativesWillReceiveTheQuestionnaireColon": "De volgende vertegenwoordigers zullen de vragenlijst ontvangen:", + "mailSuccessfullySent": "De e-mail is succesvol verzonden", + "mailFailedToSend": "De e-mail kon niet worden verzonden", + "questionOrQuestions": "Vraag(en)", + "successfullyUpdatedClientSettings": "De clientinstellingen zijn succesvol bijgewerkt. Vernieuw de pagina.", + "xRaysEmptyMessage": "U moet minimaal één project maken om röntgenstraling te kunnen gebruiken.", + "suggestControls": "Suggesties voor bedieningselementen", + "createAppliedControlsFromSuggestionsHelpText": "Toegepaste controles maken op basis van de voorgestelde referentiecontroles van de vereisten van het raamwerk", "createAppliedControlsFromSuggestionsSuccess": "Toegepaste besturingselementen zijn succesvol gemaakt op basis van de voorgestelde referentiebesturingselementen", + "createAppliedControlsFromSuggestionsError": "Er is een fout opgetreden bij het maken van toegepaste besturingselementen op basis van de voorgestelde referentiebesturingselementen", + "createAppliedControlsFromSuggestionsConfirmMessage": "{count} toegepaste besturingselementen worden gemaakt op basis van de voorgestelde referentiebesturingselementen. Wilt u doorgaan?", + "theFollowingControlsWillBeAddedColon": "De volgende besturingselementen worden toegevoegd:", + "ShowAllNodesMessage": "Alles weergeven", + "ShowOnlyAssessable": "Alleen beoordeelbaar", + "experimental": "Experimenteel", + "timeline": "Tijdlijn", + "graph": "Grafiek", + "startDate": "Startdatum", "startDateHelpText": "Startdatum (handig voor tijdlijn)", "backupLoadingError": "Er is een fout opgetreden tijdens het laden van de back-up.", "backupGreaterVersionError": "De back-up kan niet worden geladen. De versie van de back-up is hoger dan de huidige versie van uw applicatie.", "backupLowerVersionError": "Er is een fout opgetreden. Mogelijk is de back-upversie te oud. Als dat zo is, moet u deze bijwerken voordat u het opnieuw probeert.", "NoPreviewMessage": "Geen voorbeeld beschikbaar.", "entityAssessmentEvidenceHelpText": "Een externe vragenlijst", + "associatedEntities": "Geassocieerde entiteiten", + "noMailerConfigured": "Geen mailer geconfigureerd", "errorLicenseSeatsExceeded": "Het aantal licentieplaatsen is overschreden, u kunt deze gebruiker geen bewerkingsrechten verlenen. Neem contact op met uw beheerder.", "availableSeats": "Beschikbare plaatsen", - "showImagesUnauthenticated": "Toon logo en favicon aan niet-geverifieerde gebruikers" + "showImagesUnauthenticated": "Toon logo en favicon aan niet-geverifieerde gebruikers", + "showImagesUnauthenticatedHelpText": "Als deze optie is uitgeschakeld, worden het normale CISO Assistant-logo en favicon weergegeven op het inlogscherm", + "librariesCanOnlyBeLoadedByAdmin": "Bibliotheken kunnen alleen door een beheerder worden geladen", + "catalog": "Catalogus", + "operations": "Operaties" } diff --git a/frontend/messages/pl.json b/frontend/messages/pl.json index 3ee9306c5..9ef4712f3 100644 --- a/frontend/messages/pl.json +++ b/frontend/messages/pl.json @@ -651,9 +651,14 @@ "suggestion": "Sugestia", "suggestionColon": "Sugestia:", "annotationColon": "Adnotacja:", + "mapping": "Mapowanie", + "applyMapping": "Zastosuj mapowanie", "mappingInference": "Wnioskowanie mapujące", "mappingInferenceTip": "Dla tego wymagania dostępna jest sugestia mapowania", "additionalInformation": "Dodatkowe informacje", + "requirementMappingSet": "Mapowanie", + "requirementMappingSetColon": "Mapowanie:", + "requirementMappingSets": "Mapowania", "requirementMapping": "Mapowanie wymagań", "requirementMappings": "Mapowania wymagań", "sourceFramework": "Ramy źródłowa", @@ -672,6 +677,8 @@ "duplicate": "Duplikować", "duplicateRiskAssessment": "Powielić ocenę ryzyka", "size": "Rozmiar", + "favicon": "Favicon", + "logo": "Logo", "clientSettings": "Ustawienia klienta", "invalidFileType": "Nieprawidłowy typ pliku", "logoHelpText": "Logo będzie wyświetlane w nagłówku aplikacji. Akceptowalne formaty to PNG, JPEG, WEBP, SVG.", @@ -682,6 +689,8 @@ "referenceLink": "Link referencyjny", "mission": "Misja", "ownedFolders": "Posiadane domeny", + "thirdParty": "Strona trzecia", + "thirdPartyCategory": "Strony trzecie", "entityAssessment": "Ocena podmiotu", "entityAssessments": "Oceny podmiotów", "addEntityAssessment": "Dodaj ocenę podmiotu", @@ -719,21 +728,54 @@ "tableMode": "Tryb tabeli", "owner": "Właściciel", "waitingRiskAcceptances": "Cześć! Obecnie masz {number} ryzyko{s} oczekujące na akceptację. Możesz je znaleźć w zakładce ryzyko.", + "licenseSeats": "Miejsca na licencję", "licenseExpiration": "Wygaśnięcie licencji", + "answer": "Odpowiedź", "questionnaireMode": "Tryb ankiety", + "assessmentMode": "Tryb oceny", "createAudit": "Utwórz audyt", "createAuditHelpText": "Utwórz audyt obok oceny podmiotu", + "questionnaire": "Kwestionariusz", + "conclusion": "Wniosek", + "blocker": "Bloker", + "createUser": "Utwórz użytkownika", + "createUserHelpText": "Utwórz lub połącz użytkownika zewnętrznego z przedstawicielem na podstawie adresu e-mail", "nameDuplicate": "Nazwa już istnieje", "noAnswer": "Brak odpowiedzi", + "entityAssessmentRepresentativesHelpText": "Użytkownicy zewnętrzni odpowiedzialni za wypełnienie kwestionariusza", "sendQuestionnaire": "Wyślij kwestionariusz", "sureToSendQuestionnaire": "Czy na pewno chcesz wysłać kwestionariusz: {questionnaire} ?", + "theFollowingRepresentativesWillReceiveTheQuestionnaireColon": "Kwestionariusz otrzymają następujący przedstawiciele:", + "mailSuccessfullySent": "Wiadomość została pomyślnie wysłana", + "mailFailedToSend": "Nie udało się wysłać maila", + "questionOrQuestions": "Pytanie(a)", + "successfullyUpdatedClientSettings": "Ustawienia klienta zostały pomyślnie zaktualizowane. Odśwież stronę.", + "xRaysEmptyMessage": "Aby użyć promieni rentgenowskich, musisz utworzyć co najmniej jeden projekt.", + "suggestControls": "Zaproponuj kontrole", + "createAppliedControlsFromSuggestionsHelpText": "Utwórz kontrolki stosowane na podstawie sugerowanych kontrolek referencyjnych wymagań struktury", "createAppliedControlsFromSuggestionsSuccess": "Zastosowano pomyślnie elementy sterujące utworzone na podstawie sugerowanych elementów referencyjnych", + "createAppliedControlsFromSuggestionsError": "Wystąpił błąd podczas tworzenia zastosowanych kontrolek z sugerowanych kontrolek referencyjnych", + "createAppliedControlsFromSuggestionsConfirmMessage": "{count} zastosowane kontrolki zostaną utworzone z sugerowanych kontrolki referencyjne. Czy chcesz kontynuować?", + "theFollowingControlsWillBeAddedColon": "Zostaną dodane następujące elementy sterujące:", + "ShowAllNodesMessage": "Pokaż wszystko", + "ShowOnlyAssessable": "Tylko do oceny", + "experimental": "Eksperymentalny", + "timeline": "Oś czasu", + "graph": "Wykres", + "startDate": "Data rozpoczęcia", "startDateHelpText": "Data rozpoczęcia (przydatna dla osi czasu)", "backupLoadingError": "Wystąpił błąd podczas ładowania kopii zapasowej.", "backupGreaterVersionError": "Nie można załadować kopii zapasowej. Wersja kopii zapasowej jest nowsza niż bieżąca wersja aplikacji.", "backupLowerVersionError": "Wystąpił błąd. Wersja kopii zapasowej może być za stara. Jeśli tak, należy ją zaktualizować przed ponowną próbą.", "NoPreviewMessage": "Podgląd niedostępny.", "entityAssessmentEvidenceHelpText": "Kwestionariusz zewnętrzny", + "associatedEntities": "Podmioty powiązane", + "noMailerConfigured": "Nie skonfigurowano programu pocztowego", "errorLicenseSeatsExceeded": "Liczba miejsc licencyjnych została przekroczona, nie będziesz mógł przyznać praw do edycji temu użytkownikowi. Skontaktuj się z administratorem.", - "showImagesUnauthenticated": "Pokaż logo i ikonę witryny nieuwierzytelnionym użytkownikom" + "availableSeats": "Dostępne miejsca", + "showImagesUnauthenticated": "Pokaż logo i ikonę witryny nieuwierzytelnionym użytkownikom", + "showImagesUnauthenticatedHelpText": "Jeśli ta opcja jest wyłączona, na ekranie logowania będzie wyświetlane standardowe logo i ikona asystenta CISO", + "librariesCanOnlyBeLoadedByAdmin": "Biblioteki mogą być ładowane tylko przez administratora", + "catalog": "Katalog", + "operations": "Operacje" } diff --git a/frontend/messages/pt.json b/frontend/messages/pt.json index c502ded73..3c8f0876a 100644 --- a/frontend/messages/pt.json +++ b/frontend/messages/pt.json @@ -613,6 +613,8 @@ "x509Cert": "certificado x509", "SPEntityID": "ID da entidade SP", "attributeMappingUID": "Mapeamento de atributos UID", + "attributeMappingEmail": "Mapeamento de atributos de e-mail", + "attributeMappingEmailVerified": "Mapeamento de atributos e-mail verificado", "allowRepeatAttributeName": "Permitir repetição de nome de atributo", "allowSingleLabelDomains": "Permitir domínios de rótulo único", "authnRequestSigned": "Solicitação de autenticação assinada", @@ -622,8 +624,14 @@ "metadataSigned": "Metadados assinados", "nameIDEncrypted": "Nome ID criptografado", "rejectDeprecatedAlgorithm": "Rejeitar algoritmo obsoleto", + "rejectIdPInitiatedSSO": "Rejeitar SSO iniciado por IdP", "signatureAlgorithm": "Algoritmo de assinatura", + "wantAssertionSigned": "Quero afirmação assinada", + "wantAssertionEncrypted": "Quer a afirmação criptografada", + "wantAttributeStatement": "Declaração de atributo desejado", "wantMessageSigned": "Quero mensagem assinada", + "wantNameID": "Quero ID de nome", + "wantNameIDEncrypted": "Deseja que o ID do nome seja criptografado", "IdPConfiguration": "Configuração do IdP", "enableSSO": "Habilitar SSO", "failedSSO": "Falha na autenticação SSO. Entre em contato com seu administrador", @@ -643,9 +651,14 @@ "suggestion": "Sugestão", "suggestionColon": "Sugestão:", "annotationColon": "Anotação:", + "mapping": "Mapeamento", + "applyMapping": "Aplicar mapeamento", "mappingInference": "Inferência de mapeamento", "mappingInferenceTip": "A sugestão de mapeamento está disponível para este requisito", "additionalInformation": "Informações adicionais", + "requirementMappingSet": "Mapeamento", + "requirementMappingSetColon": "Mapeamento:", + "requirementMappingSets": "Mapeamentos", "requirementMapping": "Mapeamento de requisitos", "requirementMappings": "Mapeamentos de requisitos", "sourceFramework": "Quadro de origem", @@ -664,6 +677,8 @@ "duplicate": "Duplicado", "duplicateRiskAssessment": "Duplicar a avaliação de risco", "size": "Tamanho", + "favicon": "Favicon", + "logo": "Logotipo", "clientSettings": "Configurações do cliente", "invalidFileType": "Tipo de arquivo inválido", "logoHelpText": "O logotipo será exibido no cabeçalho do aplicativo. Os formatos aceitos são PNG, JPEG, WEBP, SVG.", @@ -674,6 +689,8 @@ "referenceLink": "Link de referência", "mission": "Missão", "ownedFolders": "Domínios próprios", + "thirdParty": "Terceiro", + "thirdPartyCategory": "Terceiros", "entityAssessment": "Avaliação de entidade", "entityAssessments": "Avaliações de entidades", "addEntityAssessment": "Adicionar avaliação de entidade", @@ -711,21 +728,54 @@ "tableMode": "Modo de tabela", "owner": "Proprietário", "waitingRiskAcceptances": "Olá! No momento, você tem {number} aceitação de risco{s} pendente. Você pode encontrá-los na aba de risco.", + "licenseSeats": "Assentos de licença", "licenseExpiration": "Expiração da licença", + "answer": "Responder", "questionnaireMode": "Modo questionário", + "assessmentMode": "Modo de avaliação", "createAudit": "Criar auditoria", "createAuditHelpText": "Crie uma auditoria junto com a avaliação da entidade", + "questionnaire": "Questionário", + "conclusion": "Conclusão", + "blocker": "Bloqueador", + "createUser": "Criar usuário", + "createUserHelpText": "Crie ou vincule um usuário terceiro ao representante com base no e-mail", "nameDuplicate": "Nome já existe", "noAnswer": "Sem resposta", + "entityAssessmentRepresentativesHelpText": "Os usuários terceiros responsáveis pelo preenchimento do questionário", "sendQuestionnaire": "Enviar questionário", "sureToSendQuestionnaire": "Tem certeza de que deseja enviar o questionário: {questionnaire} ?", + "theFollowingRepresentativesWillReceiveTheQuestionnaireColon": "Os seguintes representantes receberão o questionário:", + "mailSuccessfullySent": "O e-mail foi enviado com sucesso", + "mailFailedToSend": "O e-mail não foi enviado", + "questionOrQuestions": "Questões)", + "successfullyUpdatedClientSettings": "As configurações do cliente foram atualizadas com sucesso. Atualize a página.", + "xRaysEmptyMessage": "Você precisa criar pelo menos um projeto para usar raios X.", + "suggestControls": "Sugerir controles", + "createAppliedControlsFromSuggestionsHelpText": "Crie controles aplicados a partir dos controles de referência sugeridos pelos requisitos da estrutura", "createAppliedControlsFromSuggestionsSuccess": "Controles aplicados criados com sucesso a partir dos controles de referência sugeridos", + "createAppliedControlsFromSuggestionsError": "Ocorreu um erro ao criar controles aplicados a partir dos controles de referência sugeridos", + "createAppliedControlsFromSuggestionsConfirmMessage": "{count} controles aplicados serão criados a partir dos controles de referência sugeridos. Deseja prosseguir?", + "theFollowingControlsWillBeAddedColon": "Os seguintes controles serão adicionados:", + "ShowAllNodesMessage": "Mostrar tudo", + "ShowOnlyAssessable": "Somente avaliável", + "experimental": "Experimental", + "timeline": "Linha do tempo", + "graph": "Gráfico", + "startDate": "Data de início", "startDateHelpText": "Data de início (útil para linha do tempo)", "backupLoadingError": "Ocorreu um erro ao carregar o backup.", "backupGreaterVersionError": "Não é possível carregar o backup, a versão do backup é superior à versão atual do seu aplicativo.", "backupLowerVersionError": "Ocorreu um erro, a versão de backup pode ser muito antiga. Se for o caso, ela deve ser atualizada antes de tentar novamente.", "NoPreviewMessage": "Nenhuma pré-visualização disponível.", "entityAssessmentEvidenceHelpText": "Um questionário externo", + "associatedEntities": "Entidades associadas", + "noMailerConfigured": "Nenhum mailer configurado", "errorLicenseSeatsExceeded": "O número de assentos de licença foi excedido, você não poderá conceder direitos de edição a este usuário. Entre em contato com seu administrador.", - "showImagesUnauthenticated": "Mostrar logotipo e favicon para usuários não autenticados" + "availableSeats": "Assentos disponíveis", + "showImagesUnauthenticated": "Mostrar logotipo e favicon para usuários não autenticados", + "showImagesUnauthenticatedHelpText": "Se desabilitado, o logotipo e o favicon regulares do Assistente CISO serão exibidos na tela de login", + "librariesCanOnlyBeLoadedByAdmin": "As bibliotecas só podem ser carregadas por um administrador", + "catalog": "Catálogo", + "operations": "Operações" } diff --git a/frontend/messages/ro.json b/frontend/messages/ro.json index fbf59f167..a55331ba1 100644 --- a/frontend/messages/ro.json +++ b/frontend/messages/ro.json @@ -652,6 +652,7 @@ "suggestionColon": "Sugestie:", "annotationColon": "Anotare:", "mapping": "Mapare", + "applyMapping": "Aplicați maparea", "mappingInference": "Mapare inferență", "mappingInferenceTip": "O sugestie de mapare este disponibilă pentru această cerință", "additionalInformation": "Informații suplimentare", @@ -676,6 +677,8 @@ "duplicate": "Dublică", "duplicateRiskAssessment": "Dublarea evaluării riscului", "size": "Mărime", + "favicon": "Favicon", + "logo": "Logo", "clientSettings": "Setări client", "invalidFileType": "Tip de fișier nevalid", "logoHelpText": "Logo-ul va fi afișat în antetul aplicației. Formatele acceptate sunt PNG, JPEG, WEBP, SVG.", @@ -686,9 +689,27 @@ "referenceLink": "Link de referință", "mission": "Misiune", "ownedFolders": "Domenii deținute", + "thirdParty": "Terț", + "thirdPartyCategory": "Terți", + "entityAssessment": "Evaluarea entității", "entityAssessments": "Evaluări ale entităților", "addEntityAssessment": "Adăugați evaluarea entității", "criticality": "Criticitatea", + "penetration": "Penetrare", + "dependency": "Dependenţă", + "trust": "Încredere", + "solutions": "Soluții", + "solution": "Soluţie", + "addSolution": "Adăugați soluție", + "providerEntity": "Entitate furnizor", + "addProduct": "Adăugați produsul", + "representatives": "Reprezentanți", + "representative": "Reprezentant", + "addRepresentative": "Adăugați un reprezentant", + "phone": "Telefon", + "role": "Rol", + "question": "Întrebare", + "recipientEntity": "Entitatea destinatară", "financial": "Finanțe", "legal": "Juridic", "reputation": "Reputație", @@ -697,22 +718,64 @@ "integrity": "Integritate", "availability": "Accesibilitate", "authenticity": "Autenticitate", + "reviewObservation": "Revizuiți observația", + "reviewObservationSemiColon": "Examinați observația:", + "reviewConclusion": "Concluzia revizuirii", + "reviewConclusionSemiColon": "Concluzia revizuirii:", + "review": "Recenzie", + "conclusionSemiColon": "Concluzie:", + "observationSemiColon": "Observare:", + "tableMode": "Modul de masă", + "owner": "Proprietar", "waitingRiskAcceptances": "Buna ziua! În prezent, aveți {number} riscul{s} în așteptare. Le puteți găsi în fila de riscuri.", + "licenseSeats": "Scaune de licență", "licenseExpiration": "Expirarea licenței", + "answer": "Răspuns", "questionnaireMode": "Modul chestionar", + "assessmentMode": "Modul de evaluare", "createAudit": "Creați audit", "createAuditHelpText": "Creați un audit împreună cu evaluarea entității", + "questionnaire": "Chestionar", + "conclusion": "Concluzie", + "blocker": "Blocant", + "createUser": "Creați utilizator", + "createUserHelpText": "Creați sau legați un utilizator terță parte la reprezentant pe baza e-mailului", "nameDuplicate": "Numele există deja", "noAnswer": "Nici un răspuns", + "entityAssessmentRepresentativesHelpText": "Utilizatorii terți care sunt responsabili pentru completarea chestionarului", "sendQuestionnaire": "Trimite chestionar", "sureToSendQuestionnaire": "Sigur doriți să trimiteți chestionarul: {questionnaire} ?", + "theFollowingRepresentativesWillReceiveTheQuestionnaireColon": "Următorii reprezentanți vor primi chestionarul:", + "mailSuccessfullySent": "E-mailul a fost trimis cu succes", + "mailFailedToSend": "E-mailul nu a putut fi trimis", + "questionOrQuestions": "Întrebare(e)", + "successfullyUpdatedClientSettings": "Setările clientului au fost actualizate cu succes, vă rugăm să reîmprospătați pagina.", + "xRaysEmptyMessage": "Trebuie să creați cel puțin un proiect pentru a utiliza raze X.", + "suggestControls": "Sugerați controale", + "createAppliedControlsFromSuggestionsHelpText": "Creați controale aplicate din controalele de referință sugerate de cerințele cadrului", "createAppliedControlsFromSuggestionsSuccess": "Controalele aplicate create cu succes din controalele de referință sugerate", + "createAppliedControlsFromSuggestionsError": "A apărut o eroare la crearea controalelor aplicate din controalele de referință sugerate", + "createAppliedControlsFromSuggestionsConfirmMessage": "{count} controale aplicate vor fi create din controalele de referință sugerate. Doriți să continuați?", + "theFollowingControlsWillBeAddedColon": "Vor fi adăugate următoarele controale:", + "ShowAllNodesMessage": "Arată tot", + "ShowOnlyAssessable": "Doar evaluabil", + "experimental": "Experimental", + "timeline": "Cronologie", + "graph": "Grafic", + "startDate": "Data de începere", "startDateHelpText": "Data de începere (utilă pentru cronologie)", "backupLoadingError": "A apărut o eroare la încărcarea copiei de rezervă.", "backupGreaterVersionError": "Nu se poate încărca copia de rezervă, versiunea copiei de rezervă este mai mare decât versiunea curentă a aplicației dvs.", "backupLowerVersionError": "A apărut o eroare, versiunea de rezervă poate fi prea veche, dacă da, trebuie actualizată înainte de a reîncerca.", "NoPreviewMessage": "Nicio previzualizare disponibilă.", "entityAssessmentEvidenceHelpText": "Un chestionar extern", + "associatedEntities": "Entități asociate", + "noMailerConfigured": "Nu s-a configurat un mailer", "errorLicenseSeatsExceeded": "Numărul de locuri de licență este depășit, nu veți putea acorda drepturi de editare acestui utilizator. Vă rugăm să contactați administratorul dvs.", - "showImagesUnauthenticated": "Afișați sigla și favicon pentru utilizatorii neautentificați" + "availableSeats": "Locuri disponibile", + "showImagesUnauthenticated": "Afișați sigla și favicon pentru utilizatorii neautentificați", + "showImagesUnauthenticatedHelpText": "Dacă este dezactivată, logo-ul obișnuit al Asistentului CISO și favicon-ul vor fi afișate pe ecranul de conectare", + "librariesCanOnlyBeLoadedByAdmin": "Bibliotecile pot fi încărcate numai de un administrator", + "catalog": "Catalog", + "operations": "Operațiuni" } diff --git a/frontend/messages/ur.json b/frontend/messages/ur.json index cace848b2..a18e40f50 100644 --- a/frontend/messages/ur.json +++ b/frontend/messages/ur.json @@ -652,6 +652,7 @@ "suggestionColon": "تجویز:", "annotationColon": "وضاحت:", "mapping": "نقشہ سازی", + "applyMapping": "نقشہ سازی کا اطلاق کریں۔", "mappingInference": "نقشہ سازی کا نتیجہ", "mappingInferenceTip": "اس ضرورت کے لیے نقشہ سازی کی تجویز دستیاب ہے", "additionalInformation": "اضافی معلومات", @@ -676,6 +677,8 @@ "duplicate": "نقل کریں", "duplicateRiskAssessment": "خطرے کی تشخیص کو نقل کریں", "size": "سائز", + "favicon": "فیویکان", + "logo": "لوگو", "clientSettings": "کلائنٹ کی ترتیبات", "invalidFileType": "غلط فائل کی قسم", "logoHelpText": "لوگو ایپلی کیشن کے ہیڈر میں دکھایا جائے گا۔ منظور شدہ فارمیٹس PNG، JPEG، WEBP، SVG ہیں۔", @@ -686,6 +689,27 @@ "referenceLink": "حوالہ لنک", "mission": "مشن", "ownedFolders": "زیر ملکیت ڈومینز", + "thirdParty": "تیسری پارٹی", + "thirdPartyCategory": "تیسرے فریق", + "entityAssessment": "ہستی کی تشخیص", + "entityAssessments": "ہستی کے جائزے", + "addEntityAssessment": "ہستی کی تشخیص شامل کریں۔", + "criticality": "تنقید", + "penetration": "دخول", + "dependency": "انحصار", + "trust": "بھروسہ", + "solutions": "حل", + "solution": "حل", + "addSolution": "حل شامل کریں۔", + "providerEntity": "فراہم کرنے والا ادارہ", + "addProduct": "پروڈکٹ شامل کریں۔", + "representatives": "نمائندے۔", + "representative": "نمائندہ", + "addRepresentative": "نمائندہ شامل کریں۔", + "phone": "فون", + "role": "کردار", + "question": "سوال", + "recipientEntity": "وصول کنندہ ادارہ", "financial": "مالیاتی", "legal": "قانونی", "reputation": "ساکھ", @@ -694,23 +718,64 @@ "integrity": "دیانتداری", "availability": "دستیابی", "authenticity": "صداقت", + "reviewObservation": "مشاہدے کا جائزہ لیں۔", + "reviewObservationSemiColon": "جائزہ مشاہدہ:", + "reviewConclusion": "جائزہ نتیجہ", + "reviewConclusionSemiColon": "جائزہ نتیجہ:", + "review": "جائزہ لیں", + "conclusionSemiColon": "نتیجہ:", + "observationSemiColon": "مشاہدہ:", + "tableMode": "ٹیبل موڈ", "owner": "مالک", "waitingRiskAcceptances": "ہیلو! آپ کے پاس فی الحال {number} خطرے کی منظوری {s} زیر التواء ہیں۔ آپ انہیں خطرے والے ٹیب میں پا سکتے ہیں۔", + "licenseSeats": "لائسنس نشستیں", "licenseExpiration": "لائسنس کی میعاد ختم", + "answer": "جواب دیں۔", "questionnaireMode": "سوالنامہ موڈ", + "assessmentMode": "تشخیص موڈ", "createAudit": "آڈٹ بنائیں", "createAuditHelpText": "ہستی کی تشخیص کے ساتھ ساتھ ایک آڈٹ بنائیں", + "questionnaire": "سوالنامہ", + "conclusion": "نتیجہ", + "blocker": "بلاکر", + "createUser": "صارف بنائیں", + "createUserHelpText": "ای میل کی بنیاد پر کسی تیسرے فریق صارف کو نمائندے سے بنائیں یا لنک کریں۔", "nameDuplicate": "نام پہلے سے موجود ہے۔", "noAnswer": "کوئی جواب نہیں۔", + "entityAssessmentRepresentativesHelpText": "تیسرے فریق کے صارفین جو سوالنامے کی تکمیل کے ذمہ دار ہیں۔", "sendQuestionnaire": "سوالنامہ بھیجیں۔", "sureToSendQuestionnaire": "کیا آپ واقعی سوالنامہ بھیجنا چاہتے ہیں: {questionnaire} ؟", + "theFollowingRepresentativesWillReceiveTheQuestionnaireColon": "درج ذیل نمائندے سوالنامہ وصول کریں گے:", + "mailSuccessfullySent": "میل کامیابی کے ساتھ بھیج دیا گیا ہے۔", + "mailFailedToSend": "میل بھیجنے میں ناکام رہا۔", + "questionOrQuestions": "سوال (سوال)", + "successfullyUpdatedClientSettings": "کلائنٹ کی ترتیبات کو کامیابی کے ساتھ اپ ڈیٹ کیا گیا، براہ کرم صفحہ کو ریفریش کریں۔", + "xRaysEmptyMessage": "ایکس رے استعمال کرنے کے لیے آپ کو کم از کم ایک پروجیکٹ بنانا ہوگا۔", + "suggestControls": "کنٹرولز تجویز کریں۔", + "createAppliedControlsFromSuggestionsHelpText": "فریم ورک کی ضروریات کے تجویز کردہ حوالہ کنٹرول سے لاگو کنٹرولز بنائیں", "createAppliedControlsFromSuggestionsSuccess": "تجویز کردہ حوالہ کنٹرولز سے کامیابی کے ساتھ بنائے گئے لاگو کنٹرولز", + "createAppliedControlsFromSuggestionsError": "تجویز کردہ حوالہ کنٹرولز سے لاگو کنٹرولز بناتے وقت ایک خرابی پیش آگئی", + "createAppliedControlsFromSuggestionsConfirmMessage": "{count} لاگو کنٹرول تجویز کردہ حوالہ کنٹرول سے بنائے جائیں گے۔ کیا آپ آگے بڑھنا چاہتے ہیں؟", + "theFollowingControlsWillBeAddedColon": "درج ذیل کنٹرولز شامل کیے جائیں گے:", + "ShowAllNodesMessage": "سب دکھائیں۔", + "ShowOnlyAssessable": "صرف قابل تشخیص", + "experimental": "تجرباتی", + "timeline": "ٹائم لائن", + "graph": "گراف", + "startDate": "تاریخ شروع", "startDateHelpText": "تاریخ شروع (ٹائم لائن کے لیے مفید)", "backupLoadingError": "بیک اپ لوڈ کرتے وقت ایک خرابی پیش آگئی۔", "backupGreaterVersionError": "بیک اپ لوڈ نہیں ہو سکتا، بیک اپ کا ورژن آپ کی ایپلیکیشن کے موجودہ ورژن سے زیادہ ہے۔", "backupLowerVersionError": "ایک خرابی پیش آ گئی، بیک اپ ورژن بہت پرانا ہو سکتا ہے، اگر ایسا ہے تو اسے دوبارہ کوشش کرنے سے پہلے اپ ڈیٹ کرنا ضروری ہے۔", "NoPreviewMessage": "کوئی پیش نظارہ دستیاب نہیں ہے۔", "entityAssessmentEvidenceHelpText": "ایک بیرونی سوالنامہ", + "associatedEntities": "وابستہ ادارے", + "noMailerConfigured": "کوئی میلر کنفیگر نہیں ہے۔", "errorLicenseSeatsExceeded": "لائسنس کی نشستوں کی تعداد حد سے تجاوز کر گئی ہے، آپ اس صارف کو ترمیم کے حقوق نہیں دے سکیں گے۔ براہ کرم اپنے منتظم سے رابطہ کریں۔", - "showImagesUnauthenticated": "غیر تصدیق شدہ صارفین کو لوگو اور فیوی کون دکھائیں۔" + "availableSeats": "دستیاب نشستیں۔", + "showImagesUnauthenticated": "غیر تصدیق شدہ صارفین کو لوگو اور فیوی کون دکھائیں۔", + "showImagesUnauthenticatedHelpText": "غیر فعال ہونے پر، باقاعدہ CISO اسسٹنٹ لوگو اور فیویکن لاگ ان اسکرین پر ظاہر ہوں گے۔", + "librariesCanOnlyBeLoadedByAdmin": "لائبریریوں کو صرف ایک منتظم ہی لوڈ کر سکتا ہے۔", + "catalog": "کیٹلاگ", + "operations": "آپریشنز" } From df9db13b1ab3271d28adc469a9334487e8679580 Mon Sep 17 00:00:00 2001 From: nas-tabchiche <71079376+nas-tabchiche@users.noreply.github.com> Date: Thu, 17 Oct 2024 15:32:25 +0200 Subject: [PATCH 10/29] =?UTF-8?q?chore:=20update=20translations=20with=20F?= =?UTF-8?q?ink=20=F0=9F=90=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/messages/es.json | 28 ++++++++++++++-------------- frontend/messages/fr.json | 34 +++++++++++++++++----------------- 2 files changed, 31 insertions(+), 31 deletions(-) diff --git a/frontend/messages/es.json b/frontend/messages/es.json index ff11ae160..0540568bc 100644 --- a/frontend/messages/es.json +++ b/frontend/messages/es.json @@ -612,13 +612,13 @@ "SLOURL": "URL de SLO", "x509Cert": "certificado x509", "SPEntityID": "Identificación de entidad SP", - "attributeMappingUID": "UID de mapeo de atributos", + "attributeMappingUID": "Mapeo de atributos UID", "attributeMappingEmail": "Asignación de atributos por correo electrónico", "attributeMappingEmailVerified": "Asignación de atributos por correo electrónico verificado", "allowRepeatAttributeName": "Permitir repetir nombre de atributo", "allowSingleLabelDomains": "Permitir dominios de etiqueta única", "authnRequestSigned": "Solicitud de autorización firmada", - "digestAlgorithm": "Algoritmo de resumen", + "digestAlgorithm": "Algoritmo de hash", "logoutRequestSigned": "Solicitud de cierre de sesión firmada", "logoutResponseSigned": "Respuesta de cierre de sesión firmada", "metadataSigned": "Metadatos firmados", @@ -626,13 +626,13 @@ "rejectDeprecatedAlgorithm": "Rechazar algoritmo obsoleto", "rejectIdPInitiatedSSO": "Rechazar inicio de sesión único iniciado por IdP", "signatureAlgorithm": "Algoritmo de firma", - "wantAssertionSigned": "Quiero que se firme la afirmación", - "wantAssertionEncrypted": "Quiero una afirmación cifrada", - "wantAttributeStatement": "¿Quiere una declaración de atributo?", + "wantAssertionSigned": "Querer que se firme la afirmación", + "wantAssertionEncrypted": "Querer una afirmación cifrada", + "wantAttributeStatement": "Querer declaración de atributo", "wantMessageSigned": "Quiero mensaje firmado", - "wantNameID": "¿Quieres identificación de nombre?", - "wantNameIDEncrypted": "¿Quieres que el ID del nombre esté cifrado?", - "IdPConfiguration": "Configuración de IdP", + "wantNameID": "Querer nombre ID", + "wantNameIDEncrypted": "Querer que el ID del nombre esté cifrado", + "IdPConfiguration": "Configuración del IdP", "enableSSO": "Habilitar SSO", "failedSSO": "La autenticación SSO falló; comuníquese con su administrador", "UserDoesNotExist": "Usuario no declarado, por favor contacte a su administrador", @@ -644,7 +644,7 @@ "errorImportingLibrary": "Error al importar la biblioteca", "libraryImportError": "Ocurrió un error durante la importación de su biblioteca.", "ssoSettingsupdated": "Configuración de SSO actualizada", - "ssoSettings": "Configuración de inicio de sesión único", + "ssoSettings": "Configuración SSO", "ssoSettingsDescription": "Configure sus ajustes de inicio de sesión único aquí.", "sso": "SSO", "isSso": "es SSO", @@ -656,11 +656,11 @@ "mappingInference": "Inferencia de mapeo", "mappingInferenceTip": "La sugerencia de mapeo está disponible para este requisito.", "additionalInformation": "Información adicional", - "requirementMappingSet": "Cartografía", - "requirementMappingSetColon": "Cartografía:", - "requirementMappingSets": "Mapeos", - "requirementMapping": "Mapeo de requisitos", - "requirementMappings": "Asignaciones de requisitos", + "requirementMappingSet": "Mapping", + "requirementMappingSetColon": "Mapping:", + "requirementMappingSets": "Mapping", + "requirementMapping": "Mapping de requisitos", + "requirementMappings": "Mappings de requisitos", "sourceFramework": "Marco de trabajo", "targetFramework": "Marco de destino", "baseline": "Base", diff --git a/frontend/messages/fr.json b/frontend/messages/fr.json index a924bc118..1cd261139 100644 --- a/frontend/messages/fr.json +++ b/frontend/messages/fr.json @@ -613,25 +613,25 @@ "x509Cert": "certificat x509", "SPEntityID": "ID d'entité SP", "attributeMappingUID": "Mappage d'attributs UID", - "attributeMappingEmail": "E-mail de mappage d'attributs", - "attributeMappingEmailVerified": " ", + "attributeMappingEmail": "Mappage d'attributs e-mail", + "attributeMappingEmailVerified": " Mappage d'attributs email vérifié", "allowRepeatAttributeName": "Autoriser la répétition du nom d'attribut", "allowSingleLabelDomains": "Autoriser les domaines à étiquette unique", "authnRequestSigned": "Demande d'authentification signée", - "digestAlgorithm": "Algorithme de synthèse", + "digestAlgorithm": "Algorithme de hachage", "logoutRequestSigned": "Demande de déconnexion chiffrée", "logoutResponseSigned": "Réponse de déconnexion chiffrée", "metadataSigned": "Métadonnées chiffrées", "nameIDEncrypted": "Nom ID chiffré", - "rejectDeprecatedAlgorithm": "Rejeter l'algorithme obsolète", - "rejectIdPInitiatedSSO": "Rejeter l'authentification unique initiée par l'IdP", + "rejectDeprecatedAlgorithm": "Rejeter les algorithmes obsolètes", + "rejectIdPInitiatedSSO": "Rejeter le SSO initié par l'IdP", "signatureAlgorithm": "Algorithme de signature", - "wantAssertionSigned": "Je veux que l'affirmation soit signée", - "wantAssertionEncrypted": "Je veux que l'affirmation soit cryptée", - "wantAttributeStatement": "Déclaration d'attribut souhaitée", - "wantMessageSigned": "Je veux un message signé", - "wantNameID": "Je veux un nom d'identification", - "wantNameIDEncrypted": "Je veux que l'identifiant du nom soit crypté", + "wantAssertionSigned": "Exiger que l'affirmation soit signée", + "wantAssertionEncrypted": "Exiger que l'affirmation soit chiffrée", + "wantAttributeStatement": "Exiger déclaration d'attribut", + "wantMessageSigned": "Exiger message signé", + "wantNameID": "Exiger nom ID", + "wantNameIDEncrypted": "Exiger que l'identifiant du nom soit chiffré", "IdPConfiguration": "Configuration IdP", "enableSSO": "Activer le SSO", "failedSSO": "L'authentification SSO a échoué, veuillez contacter votre administrateur", @@ -655,12 +655,12 @@ "applyMapping": "Appliquer la cartographie", "mappingInference": "Inférence de mapping", "mappingInferenceTip": "Une suggestion de mappage est disponible pour cette exigence", - "additionalInformation": "Informations Complémentaires", - "requirementMappingSet": "Cartographie", - "requirementMappingSetColon": "Cartographie :", - "requirementMappingSets": "Cartographies", - "requirementMapping": "Cartographie des exigences", - "requirementMappings": "Cartographies des exigences", + "additionalInformation": "Informations complémentaires", + "requirementMappingSet": "Mapping", + "requirementMappingSetColon": "Mapping :", + "requirementMappingSets": "Mappings", + "requirementMapping": "Mapping des exigences", + "requirementMappings": "Mappings des exigences", "sourceFramework": "Référentiel source", "targetFramework": "Référentiel cible", "baseline": "Référence de base", From 821d7137ef3412d6448414968b4e1f2d8adacb6b Mon Sep 17 00:00:00 2001 From: nas-tabchiche <71079376+nas-tabchiche@users.noreply.github.com> Date: Thu, 17 Oct 2024 15:33:12 +0200 Subject: [PATCH 11/29] =?UTF-8?q?chore:=20update=20translations=20with=20F?= =?UTF-8?q?ink=20=F0=9F=90=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/messages/fr.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/messages/fr.json b/frontend/messages/fr.json index 1cd261139..825e8dce9 100644 --- a/frontend/messages/fr.json +++ b/frontend/messages/fr.json @@ -104,7 +104,7 @@ "referenceControl": "Mesure de référence", "appliedControl": "Mesure appliquée", "provider": "Fournisseur", - "providerColon": "Fournisseur:", + "providerColon": "Fournisseur :", "domain": "Domaine", "urn": "URN", "id": "ID", From bebb2a5e56780159e5ad28244d48826bb74b1e4f Mon Sep 17 00:00:00 2001 From: nas-tabchiche <71079376+nas-tabchiche@users.noreply.github.com> Date: Thu, 17 Oct 2024 15:33:31 +0200 Subject: [PATCH 12/29] =?UTF-8?q?chore:=20update=20translations=20with=20F?= =?UTF-8?q?ink=20=F0=9F=90=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/messages/fr.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/messages/fr.json b/frontend/messages/fr.json index 825e8dce9..84864a021 100644 --- a/frontend/messages/fr.json +++ b/frontend/messages/fr.json @@ -596,7 +596,7 @@ "requirementEvidenceHelpText": "Cet onglet vous permet d'ajouter des preuves supplémentaires à l'exigence.", "providerID": "ID fournisseur", "clientID": "ID client", - "secret": "Secrète", + "secret": "Secret", "key": "Clé", "settings": "Paramètres", "identityProvider": "Fournisseur d'identité", From 15dcab0366423f7d5d83170e032afe495289e997 Mon Sep 17 00:00:00 2001 From: nas-tabchiche <71079376+nas-tabchiche@users.noreply.github.com> Date: Thu, 17 Oct 2024 15:40:26 +0200 Subject: [PATCH 13/29] =?UTF-8?q?chore:=20update=20translations=20with=20F?= =?UTF-8?q?ink=20=F0=9F=90=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/messages/es.json | 2 +- frontend/messages/fr.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/frontend/messages/es.json b/frontend/messages/es.json index 0540568bc..3a752777d 100644 --- a/frontend/messages/es.json +++ b/frontend/messages/es.json @@ -654,7 +654,7 @@ "mapping": "Cartografía", "applyMapping": "Aplicar mapeo", "mappingInference": "Inferencia de mapeo", - "mappingInferenceTip": "La sugerencia de mapeo está disponible para este requisito.", + "mappingInferenceTip": "La sugerencia de mapping está disponible para este requisito.", "additionalInformation": "Información adicional", "requirementMappingSet": "Mapping", "requirementMappingSetColon": "Mapping:", diff --git a/frontend/messages/fr.json b/frontend/messages/fr.json index 84864a021..7a2326613 100644 --- a/frontend/messages/fr.json +++ b/frontend/messages/fr.json @@ -654,7 +654,7 @@ "mapping": "Cartographie", "applyMapping": "Appliquer la cartographie", "mappingInference": "Inférence de mapping", - "mappingInferenceTip": "Une suggestion de mappage est disponible pour cette exigence", + "mappingInferenceTip": "Une suggestion de mapping est disponible pour cette exigence", "additionalInformation": "Informations complémentaires", "requirementMappingSet": "Mapping", "requirementMappingSetColon": "Mapping :", From 04b12e8d62a5753f5f78a0115b3a5be43c00f321 Mon Sep 17 00:00:00 2001 From: Nassim Tabchiche Date: Thu, 17 Oct 2024 15:43:43 +0200 Subject: [PATCH 14/29] Add translations --- frontend/messages/en.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/frontend/messages/en.json b/frontend/messages/en.json index 6ae264085..920514ccf 100644 --- a/frontend/messages/en.json +++ b/frontend/messages/en.json @@ -777,5 +777,7 @@ "showImagesUnauthenticatedHelpText": "If disabled, the regular CISO Assistant logo and favicon will be displayed on the login screen", "librariesCanOnlyBeLoadedByAdmin": "Libraries can only be loaded by an administrator", "catalog": "Catalog", - "operations": "Operations" + "operations": "Operations", + "fillMetadataURL": "Option 1: Fill the metadata url", + "fillSSOSLOURLx509cert": "Option 2: Fill the SSO URL, SLO URL and x509cert" } From b1786cbacde375d292a8bc924bb6e737b3787d99 Mon Sep 17 00:00:00 2001 From: nas-tabchiche <71079376+nas-tabchiche@users.noreply.github.com> Date: Thu, 17 Oct 2024 15:45:51 +0200 Subject: [PATCH 15/29] =?UTF-8?q?chore:=20update=20translations=20with=20F?= =?UTF-8?q?ink=20=F0=9F=90=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/messages/ar.json | 4 +++- frontend/messages/de.json | 4 +++- frontend/messages/es.json | 6 ++++-- frontend/messages/fr.json | 6 ++++-- frontend/messages/hi.json | 4 +++- frontend/messages/it.json | 6 ++++-- frontend/messages/nl.json | 4 +++- frontend/messages/pl.json | 4 +++- frontend/messages/pt.json | 6 ++++-- frontend/messages/ro.json | 4 +++- frontend/messages/ur.json | 4 +++- 11 files changed, 37 insertions(+), 15 deletions(-) diff --git a/frontend/messages/ar.json b/frontend/messages/ar.json index a204f5643..b71faa3f2 100644 --- a/frontend/messages/ar.json +++ b/frontend/messages/ar.json @@ -777,5 +777,7 @@ "showImagesUnauthenticatedHelpText": "في حالة تعطيله، سيتم عرض شعار CISO Assistant العادي ورمز favicon على شاشة تسجيل الدخول", "librariesCanOnlyBeLoadedByAdmin": "لا يمكن تحميل المكتبات إلا بواسطة المسؤول", "catalog": "الكتالوج", - "operations": "العمليات" + "operations": "العمليات", + "fillMetadataURL": "الخيار 1: املأ عنوان URL الخاص بالبيانات الوصفية", + "fillSSOSLOURLx509cert": "الخيار 2: املأ عنوان URL الخاص بـ SSO وعنوان URL الخاص بـ SLO وx509cert" } diff --git a/frontend/messages/de.json b/frontend/messages/de.json index 8629f4e2d..71b2ff95f 100644 --- a/frontend/messages/de.json +++ b/frontend/messages/de.json @@ -777,5 +777,7 @@ "showImagesUnauthenticatedHelpText": "Wenn deaktiviert, werden das normale CISO Assistant-Logo und das Favicon auf dem Anmeldebildschirm angezeigt", "librariesCanOnlyBeLoadedByAdmin": "Bibliotheken können nur von einem Administrator geladen werden", "catalog": "Katalog", - "operations": "Operationen" + "operations": "Operationen", + "fillMetadataURL": "Option 1: Füllen Sie die Metadaten-URL aus", + "fillSSOSLOURLx509cert": "Option 2: Füllen Sie die SSO-URL, SLO-URL und x509cert aus" } diff --git a/frontend/messages/es.json b/frontend/messages/es.json index 3a752777d..2951686c0 100644 --- a/frontend/messages/es.json +++ b/frontend/messages/es.json @@ -610,7 +610,7 @@ "metadataURL": "URL de metadatos", "SSOURL": "URL de inicio de sesión único", "SLOURL": "URL de SLO", - "x509Cert": "certificado x509", + "x509Cert": "Certificado x509", "SPEntityID": "Identificación de entidad SP", "attributeMappingUID": "Mapeo de atributos UID", "attributeMappingEmail": "Asignación de atributos por correo electrónico", @@ -777,5 +777,7 @@ "showImagesUnauthenticatedHelpText": "Si está deshabilitado, el logotipo y el favicon habituales del Asistente de CISO se mostrarán en la pantalla de inicio de sesión.", "librariesCanOnlyBeLoadedByAdmin": "Las bibliotecas sólo pueden ser cargadas por un administrador", "catalog": "Catalogar", - "operations": "Operaciones" + "operations": "Operaciones", + "fillMetadataURL": "Opción 1: Completar la URL de metadatos", + "fillSSOSLOURLx509cert": "Opción 2: Complete la URL de SSO, la URL de SLO y el certificado x509" } diff --git a/frontend/messages/fr.json b/frontend/messages/fr.json index 7a2326613..4e7821337 100644 --- a/frontend/messages/fr.json +++ b/frontend/messages/fr.json @@ -610,7 +610,7 @@ "metadataURL": "URL des métadonnées", "SSOURL": "URL SSO", "SLOURL": "URL SLO", - "x509Cert": "certificat x509", + "x509Cert": "Certificat x509", "SPEntityID": "ID d'entité SP", "attributeMappingUID": "Mappage d'attributs UID", "attributeMappingEmail": "Mappage d'attributs e-mail", @@ -777,5 +777,7 @@ "showImagesUnauthenticatedHelpText": "Si cette option est désactivée, le logo et l'icône habituels de l'assistant CISO seront affichés sur l'écran de connexion.", "librariesCanOnlyBeLoadedByAdmin": "Les bibliothèques ne peuvent être chargées que par un administrateur", "catalog": "Catalogue", - "operations": "Opérations" + "operations": "Opérations", + "fillMetadataURL": "Option 1 : Remplissez l'URL des métadonnées", + "fillSSOSLOURLx509cert": "Option 2 : Remplissez l'URL SSO, l'URL SLO et le certificat x509" } diff --git a/frontend/messages/hi.json b/frontend/messages/hi.json index 18c7936dc..a8e685bd6 100644 --- a/frontend/messages/hi.json +++ b/frontend/messages/hi.json @@ -777,5 +777,7 @@ "showImagesUnauthenticatedHelpText": "यदि अक्षम किया गया है, तो नियमित CISO सहायक लोगो और फ़ेविकॉन लॉगिन स्क्रीन पर प्रदर्शित किया जाएगा", "librariesCanOnlyBeLoadedByAdmin": "लाइब्रेरीज़ को केवल व्यवस्थापक द्वारा ही लोड किया जा सकता है", "catalog": "सूची", - "operations": "संचालन" + "operations": "संचालन", + "fillMetadataURL": "विकल्प 1: मेटाडेटा यूआरएल भरें", + "fillSSOSLOURLx509cert": "विकल्प 2: SSO URL, SLO URL और x509cert भरें" } diff --git a/frontend/messages/it.json b/frontend/messages/it.json index 92c9a187a..9e8771f28 100644 --- a/frontend/messages/it.json +++ b/frontend/messages/it.json @@ -610,7 +610,7 @@ "metadataURL": "URL dei metadati", "SSOURL": "URL dell'SSO", "SLOURL": "URL dell'SLO", - "x509Cert": "certificato x509", + "x509Cert": "Certificato x509", "SPEntityID": "ID entità SP", "attributeMappingUID": "UID di mappatura degli attributi", "attributeMappingEmail": "E-mail di mappatura degli attributi", @@ -777,5 +777,7 @@ "showImagesUnauthenticatedHelpText": "Se disabilitato, il logo e l'icona preferiti di CISO Assistant verranno visualizzati nella schermata di accesso", "librariesCanOnlyBeLoadedByAdmin": "Le librerie possono essere caricate solo da un amministratore", "catalog": "Catalogare", - "operations": "Operazioni" + "operations": "Operazioni", + "fillMetadataURL": "Opzione 1: compila l'URL dei metadati", + "fillSSOSLOURLx509cert": "Opzione 2: compilare l'URL SSO, l'URL SLO e x509cert" } diff --git a/frontend/messages/nl.json b/frontend/messages/nl.json index 2e80dae2a..02460a88b 100644 --- a/frontend/messages/nl.json +++ b/frontend/messages/nl.json @@ -777,5 +777,7 @@ "showImagesUnauthenticatedHelpText": "Als deze optie is uitgeschakeld, worden het normale CISO Assistant-logo en favicon weergegeven op het inlogscherm", "librariesCanOnlyBeLoadedByAdmin": "Bibliotheken kunnen alleen door een beheerder worden geladen", "catalog": "Catalogus", - "operations": "Operaties" + "operations": "Operaties", + "fillMetadataURL": "Optie 1: Vul de metadata-url in", + "fillSSOSLOURLx509cert": "Optie 2: Vul de SSO-URL, SLO-URL en x509cert in" } diff --git a/frontend/messages/pl.json b/frontend/messages/pl.json index 9ef4712f3..94b52336f 100644 --- a/frontend/messages/pl.json +++ b/frontend/messages/pl.json @@ -777,5 +777,7 @@ "showImagesUnauthenticatedHelpText": "Jeśli ta opcja jest wyłączona, na ekranie logowania będzie wyświetlane standardowe logo i ikona asystenta CISO", "librariesCanOnlyBeLoadedByAdmin": "Biblioteki mogą być ładowane tylko przez administratora", "catalog": "Katalog", - "operations": "Operacje" + "operations": "Operacje", + "fillMetadataURL": "Opcja 1: Wypełnij adres URL metadanych", + "fillSSOSLOURLx509cert": "Opcja 2: Wypełnij adres URL SSO, adres URL SLO i certyfikat x509cert" } diff --git a/frontend/messages/pt.json b/frontend/messages/pt.json index 3c8f0876a..4d7fa3336 100644 --- a/frontend/messages/pt.json +++ b/frontend/messages/pt.json @@ -610,7 +610,7 @@ "metadataURL": "URL de metadados", "SSOURL": "URL do SSO", "SLOURL": "URL do SLO", - "x509Cert": "certificado x509", + "x509Cert": "Certificado x509", "SPEntityID": "ID da entidade SP", "attributeMappingUID": "Mapeamento de atributos UID", "attributeMappingEmail": "Mapeamento de atributos de e-mail", @@ -777,5 +777,7 @@ "showImagesUnauthenticatedHelpText": "Se desabilitado, o logotipo e o favicon regulares do Assistente CISO serão exibidos na tela de login", "librariesCanOnlyBeLoadedByAdmin": "As bibliotecas só podem ser carregadas por um administrador", "catalog": "Catálogo", - "operations": "Operações" + "operations": "Operações", + "fillMetadataURL": "Opção 1: Preencha a URL dos metadados", + "fillSSOSLOURLx509cert": "Opção 2: Preencha a URL do SSO, a URL do SLO e o x509cert" } diff --git a/frontend/messages/ro.json b/frontend/messages/ro.json index a55331ba1..8adbca206 100644 --- a/frontend/messages/ro.json +++ b/frontend/messages/ro.json @@ -777,5 +777,7 @@ "showImagesUnauthenticatedHelpText": "Dacă este dezactivată, logo-ul obișnuit al Asistentului CISO și favicon-ul vor fi afișate pe ecranul de conectare", "librariesCanOnlyBeLoadedByAdmin": "Bibliotecile pot fi încărcate numai de un administrator", "catalog": "Catalog", - "operations": "Operațiuni" + "operations": "Operațiuni", + "fillMetadataURL": "Opțiunea 1: completați adresa URL a metadatelor", + "fillSSOSLOURLx509cert": "Opțiunea 2: completați URL-ul SSO, URL-ul SLO și x509cert" } diff --git a/frontend/messages/ur.json b/frontend/messages/ur.json index a18e40f50..f5490ad0b 100644 --- a/frontend/messages/ur.json +++ b/frontend/messages/ur.json @@ -777,5 +777,7 @@ "showImagesUnauthenticatedHelpText": "غیر فعال ہونے پر، باقاعدہ CISO اسسٹنٹ لوگو اور فیویکن لاگ ان اسکرین پر ظاہر ہوں گے۔", "librariesCanOnlyBeLoadedByAdmin": "لائبریریوں کو صرف ایک منتظم ہی لوڈ کر سکتا ہے۔", "catalog": "کیٹلاگ", - "operations": "آپریشنز" + "operations": "آپریشنز", + "fillMetadataURL": "آپشن 1: میٹا ڈیٹا یو آر ایل کو بھریں۔", + "fillSSOSLOURLx509cert": "اختیار 2: SSO URL، SLO URL اور x509cert پُر کریں۔" } From 0253f45b7a7e6b8edb51962cd6657cc257d6418a Mon Sep 17 00:00:00 2001 From: Mohamed-Hacene Date: Thu, 17 Oct 2024 16:36:07 +0200 Subject: [PATCH 16/29] feat: add is_published notion --- backend/core/helpers.py | 43 +++++++++++++++++++++++++++++++++++++++++ backend/core/views.py | 43 ----------------------------------------- 2 files changed, 43 insertions(+), 43 deletions(-) diff --git a/backend/core/helpers.py b/backend/core/helpers.py index 4b4afd492..bf2103ff8 100644 --- a/backend/core/helpers.py +++ b/backend/core/helpers.py @@ -1175,3 +1175,46 @@ def handle(exc, context): exc = DRFValidationError(detail=data) return drf_exception_handler(exc, context) + +def duplicate_related_objects( + object, duplicate_object, target_folder, field_name, model_class + ): + """ + Duplicates related objects (e.g., controls, threats, assets) from a source object to a duplicate object, + ensuring that objects are not duplicated if they already exist in the/a target/sub domain (folder). + + Parameters: + - object (object): The source object containing the related objects to be duplicated. + - duplicate_object (object): The duplicate object where the objects will be added. + - target_folder (object): The target folder where the duplicated objects will be stored. + - field_name (str): The field name representing the related objects to duplicate in the object. + - model_class (class): The model class of the related objects to be processed. + """ + + # Get parent folders of the target folder + target_parent_folders = target_folder.get_parent_folders() + + # Fetch all related objects for the given field name + related_objects = getattr(object, field_name).all() + + for obj in related_objects: + # Check if an object with the same name already exists in the target folder + existing_obj = model_class.objects.filter( + name=obj.name, folder=target_folder + ).first() + + if existing_obj: + # If the object already exists in the targer folder, add the existing one to the duplicate object + getattr(duplicate_object, field_name).add(existing_obj) + + elif obj.folder in target_parent_folders and obj.is_published: + # If the object's folder is a parent of the targert folder and is published, add the object to the duplicate object + getattr(duplicate_object, field_name).add(obj) + + else: + # If the object doesn't exist, duplicate the object + duplicate_obj = obj + duplicate_obj.pk = None + duplicate_obj.folder = target_folder + duplicate_obj.save() + getattr(duplicate_object, field_name).add(duplicate_obj) diff --git a/backend/core/views.py b/backend/core/views.py index 59bd040c7..b869938cd 100644 --- a/backend/core/views.py +++ b/backend/core/views.py @@ -598,49 +598,6 @@ def treatment_plan_pdf(self, request, pk): serializer_class=RiskAssessmentDuplicateSerializer, ) def duplicate(self, request, pk): - def duplicate_related_objects( - scenario, duplicate_scenario, target_folder, field_name, model_class - ): - """ - Duplicates related objects (e.g., controls, threats, assets) from a source scenario to a duplicate scenario, - ensuring that objects are not duplicated if they already exist in the/a target/parent domain (folder). - - Parameters: - - scenario (object): The source scenario containing the related objects to be duplicated. - - duplicate_scenario (object): The duplicate scenario where the objects will be added. - - target_folder (object): The target folder where the duplicated objects will be stored. - - field_name (str): The field name representing the related objects to duplicate in the scenario. - - model_class (class): The model class of the related objects to be processed. - """ - - # Get parent folders of the target folder - target_parent_folders = target_folder.get_parent_folders() - - # Fetch all related objects for the given field name - related_objects = getattr(scenario, field_name).all() - - for obj in related_objects: - # Check if an object with the same name already exists in the target folder - existing_obj = model_class.objects.filter( - name=obj.name, folder=target_folder - ).first() - - if existing_obj: - # If the object already exists in the targer folder, add the existing one to the duplicate scenario - getattr(duplicate_scenario, field_name).add(existing_obj) - - elif obj.folder in target_parent_folders: - # If the object's folder is a parent of the targert folder, add the object to the duplicate scenario - getattr(duplicate_scenario, field_name).add(obj) - - else: - # If the object doesn't exist, duplicate the object - duplicate_obj = obj - duplicate_obj.pk = None - duplicate_obj.folder = target_folder - duplicate_obj.save() - getattr(duplicate_scenario, field_name).add(duplicate_obj) - (object_ids_view, _, _) = RoleAssignment.get_accessible_object_ids( Folder.get_root_folder(), request.user, RiskAssessment ) From 1e88dbfe4f684942a81ecfee0abd45b0887f0227 Mon Sep 17 00:00:00 2001 From: Mohamed-Hacene Date: Thu, 17 Oct 2024 16:51:44 +0200 Subject: [PATCH 17/29] feat: add duplication from sub folders --- backend/core/helpers.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/backend/core/helpers.py b/backend/core/helpers.py index bf2103ff8..f7a60437a 100644 --- a/backend/core/helpers.py +++ b/backend/core/helpers.py @@ -1193,6 +1193,7 @@ def duplicate_related_objects( # Get parent folders of the target folder target_parent_folders = target_folder.get_parent_folders() + sub_folders = target_folder.sub_folders() # Fetch all related objects for the given field name related_objects = getattr(object, field_name).all() @@ -1210,6 +1211,10 @@ def duplicate_related_objects( elif obj.folder in target_parent_folders and obj.is_published: # If the object's folder is a parent of the targert folder and is published, add the object to the duplicate object getattr(duplicate_object, field_name).add(obj) + + elif obj.folder in sub_folders: + # If the object's folder is a subfolder of the target folder, add the object to the duplicate object + getattr(duplicate_object, field_name).add(obj) else: # If the object doesn't exist, duplicate the object From 5fbb9f7988e7cba225d76146c0eceae89c865b27 Mon Sep 17 00:00:00 2001 From: Mohamed-Hacene Date: Thu, 17 Oct 2024 16:54:08 +0200 Subject: [PATCH 18/29] chore: run format --- backend/core/helpers.py | 93 +++++++++++++++++++++-------------------- 1 file changed, 47 insertions(+), 46 deletions(-) diff --git a/backend/core/helpers.py b/backend/core/helpers.py index f7a60437a..9f4b57812 100644 --- a/backend/core/helpers.py +++ b/backend/core/helpers.py @@ -1176,50 +1176,51 @@ def handle(exc, context): return drf_exception_handler(exc, context) + def duplicate_related_objects( - object, duplicate_object, target_folder, field_name, model_class - ): - """ - Duplicates related objects (e.g., controls, threats, assets) from a source object to a duplicate object, - ensuring that objects are not duplicated if they already exist in the/a target/sub domain (folder). - - Parameters: - - object (object): The source object containing the related objects to be duplicated. - - duplicate_object (object): The duplicate object where the objects will be added. - - target_folder (object): The target folder where the duplicated objects will be stored. - - field_name (str): The field name representing the related objects to duplicate in the object. - - model_class (class): The model class of the related objects to be processed. - """ - - # Get parent folders of the target folder - target_parent_folders = target_folder.get_parent_folders() - sub_folders = target_folder.sub_folders() - - # Fetch all related objects for the given field name - related_objects = getattr(object, field_name).all() - - for obj in related_objects: - # Check if an object with the same name already exists in the target folder - existing_obj = model_class.objects.filter( - name=obj.name, folder=target_folder - ).first() - - if existing_obj: - # If the object already exists in the targer folder, add the existing one to the duplicate object - getattr(duplicate_object, field_name).add(existing_obj) - - elif obj.folder in target_parent_folders and obj.is_published: - # If the object's folder is a parent of the targert folder and is published, add the object to the duplicate object - getattr(duplicate_object, field_name).add(obj) - - elif obj.folder in sub_folders: - # If the object's folder is a subfolder of the target folder, add the object to the duplicate object - getattr(duplicate_object, field_name).add(obj) - - else: - # If the object doesn't exist, duplicate the object - duplicate_obj = obj - duplicate_obj.pk = None - duplicate_obj.folder = target_folder - duplicate_obj.save() - getattr(duplicate_object, field_name).add(duplicate_obj) + object, duplicate_object, target_folder, field_name, model_class +): + """ + Duplicates related objects (e.g., controls, threats, assets) from a source object to a duplicate object, + ensuring that objects are not duplicated if they already exist in the/a target/sub domain (folder). + + Parameters: + - object (object): The source object containing the related objects to be duplicated. + - duplicate_object (object): The duplicate object where the objects will be added. + - target_folder (object): The target folder where the duplicated objects will be stored. + - field_name (str): The field name representing the related objects to duplicate in the object. + - model_class (class): The model class of the related objects to be processed. + """ + + # Get parent folders of the target folder + target_parent_folders = target_folder.get_parent_folders() + sub_folders = target_folder.sub_folders() + + # Fetch all related objects for the given field name + related_objects = getattr(object, field_name).all() + + for obj in related_objects: + # Check if an object with the same name already exists in the target folder + existing_obj = model_class.objects.filter( + name=obj.name, folder=target_folder + ).first() + + if existing_obj: + # If the object already exists in the targer folder, add the existing one to the duplicate object + getattr(duplicate_object, field_name).add(existing_obj) + + elif obj.folder in target_parent_folders and obj.is_published: + # If the object's folder is a parent of the targert folder and is published, add the object to the duplicate object + getattr(duplicate_object, field_name).add(obj) + + elif obj.folder in sub_folders: + # If the object's folder is a subfolder of the target folder, add the object to the duplicate object + getattr(duplicate_object, field_name).add(obj) + + else: + # If the object doesn't exist, duplicate the object + duplicate_obj = obj + duplicate_obj.pk = None + duplicate_obj.folder = target_folder + duplicate_obj.save() + getattr(duplicate_object, field_name).add(duplicate_obj) From d6923e81696e782103e729c0322872838eb32ef1 Mon Sep 17 00:00:00 2001 From: Mohamed-Hacene Date: Thu, 17 Oct 2024 18:07:15 +0200 Subject: [PATCH 19/29] chore: improve complexity --- backend/core/helpers.py | 95 +++++++++++++++++++++++++++-------------- 1 file changed, 62 insertions(+), 33 deletions(-) diff --git a/backend/core/helpers.py b/backend/core/helpers.py index 9f4b57812..3f83696da 100644 --- a/backend/core/helpers.py +++ b/backend/core/helpers.py @@ -1178,49 +1178,78 @@ def handle(exc, context): def duplicate_related_objects( - object, duplicate_object, target_folder, field_name, model_class + source_object, duplicate_object, target_folder, field_name, model_class ): """ - Duplicates related objects (e.g., controls, threats, assets) from a source object to a duplicate object, - ensuring that objects are not duplicated if they already exist in the/a target/sub domain (folder). + Duplicates related objects from a source object to a duplicate object, avoiding duplicates in the target folder. Parameters: - - object (object): The source object containing the related objects to be duplicated. - - duplicate_object (object): The duplicate object where the objects will be added. - - target_folder (object): The target folder where the duplicated objects will be stored. - - field_name (str): The field name representing the related objects to duplicate in the object. - - model_class (class): The model class of the related objects to be processed. + - source_object (object): The source object containing related objects to duplicate. + - duplicate_object (object): The object where duplicated objects will be linked. + - target_folder (object): The folder where duplicated objects will be stored. + - field_name (str): The field name representing the related objects in the source object. + - model_class (class): The model class of the related objects. """ + + def process_related_object( + obj, duplicate_object, target_folder, target_parent_folders, sub_folders, field_name, model_class + ): + """ + Process a single related object: add, link, or duplicate it based on folder and existence checks. + """ - # Get parent folders of the target folder - target_parent_folders = target_folder.get_parent_folders() - sub_folders = target_folder.sub_folders() - - # Fetch all related objects for the given field name - related_objects = getattr(object, field_name).all() - - for obj in related_objects: - # Check if an object with the same name already exists in the target folder - existing_obj = model_class.objects.filter( - name=obj.name, folder=target_folder - ).first() - + # Check if the object already exists in the target folder + existing_obj = get_existing_object(obj, target_folder, model_class) + if existing_obj: - # If the object already exists in the targer folder, add the existing one to the duplicate object - getattr(duplicate_object, field_name).add(existing_obj) + # If the object exists in the target folder, link it to the duplicate object + link_existing_object(duplicate_object, existing_obj, field_name) elif obj.folder in target_parent_folders and obj.is_published: - # If the object's folder is a parent of the targert folder and is published, add the object to the duplicate object - getattr(duplicate_object, field_name).add(obj) + # If the object's folder is a parent and it's published, link it + link_existing_object(duplicate_object, obj, field_name) elif obj.folder in sub_folders: - # If the object's folder is a subfolder of the target folder, add the object to the duplicate object - getattr(duplicate_object, field_name).add(obj) + # If the object's folder is a subfolder of the target folder, link it + link_existing_object(duplicate_object, obj, field_name) else: - # If the object doesn't exist, duplicate the object - duplicate_obj = obj - duplicate_obj.pk = None - duplicate_obj.folder = target_folder - duplicate_obj.save() - getattr(duplicate_object, field_name).add(duplicate_obj) + # Otherwise, duplicate the object and link it + duplicate_and_link_object(obj, duplicate_object, target_folder, field_name) + + + def get_existing_object(obj, target_folder, model_class): + """ + Check if an object with the same name already exists in the target folder. + """ + return model_class.objects.filter(name=obj.name, folder=target_folder).first() + + + def link_existing_object(duplicate_object, existing_obj, field_name): + """ + Link an existing object to the duplicate object by adding it to the related field. + """ + getattr(duplicate_object, field_name).add(existing_obj) + + + def duplicate_and_link_object(obj, duplicate_object, target_folder, field_name): + """ + Duplicate an object and link it to the duplicate object. + """ + duplicate_obj = obj + duplicate_obj.pk = None # Reset primary key to create a new object + duplicate_obj.folder = target_folder + duplicate_obj.save() # Save the new duplicated object + getattr(duplicate_object, field_name).add(duplicate_obj) + + # Get parent and sub-folders of the target folder + target_parent_folders = target_folder.get_parent_folders() + sub_folders = target_folder.sub_folders() + + # Get all related objects for the specified field + related_objects = getattr(source_object, field_name).all() + + # Process each related object + for obj in related_objects: + # Determine if the object should be added, linked, or duplicated + process_related_object(obj, duplicate_object, target_folder, target_parent_folders, sub_folders, field_name, model_class) From 953a9a6c5c9e5f341e79268ff770d835a8d1da90 Mon Sep 17 00:00:00 2001 From: Mohamed-Hacene Date: Thu, 17 Oct 2024 18:08:14 +0200 Subject: [PATCH 20/29] chore: run format --- backend/core/helpers.py | 30 ++++++++++++++++++++---------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/backend/core/helpers.py b/backend/core/helpers.py index 3f83696da..7fc1f2222 100644 --- a/backend/core/helpers.py +++ b/backend/core/helpers.py @@ -1190,9 +1190,15 @@ def duplicate_related_objects( - field_name (str): The field name representing the related objects in the source object. - model_class (class): The model class of the related objects. """ - + def process_related_object( - obj, duplicate_object, target_folder, target_parent_folders, sub_folders, field_name, model_class + obj, + duplicate_object, + target_folder, + target_parent_folders, + sub_folders, + field_name, + model_class, ): """ Process a single related object: add, link, or duplicate it based on folder and existence checks. @@ -1200,7 +1206,7 @@ def process_related_object( # Check if the object already exists in the target folder existing_obj = get_existing_object(obj, target_folder, model_class) - + if existing_obj: # If the object exists in the target folder, link it to the duplicate object link_existing_object(duplicate_object, existing_obj, field_name) @@ -1217,29 +1223,26 @@ def process_related_object( # Otherwise, duplicate the object and link it duplicate_and_link_object(obj, duplicate_object, target_folder, field_name) - def get_existing_object(obj, target_folder, model_class): """ Check if an object with the same name already exists in the target folder. """ return model_class.objects.filter(name=obj.name, folder=target_folder).first() - def link_existing_object(duplicate_object, existing_obj, field_name): """ Link an existing object to the duplicate object by adding it to the related field. """ getattr(duplicate_object, field_name).add(existing_obj) - def duplicate_and_link_object(obj, duplicate_object, target_folder, field_name): """ Duplicate an object and link it to the duplicate object. """ duplicate_obj = obj - duplicate_obj.pk = None # Reset primary key to create a new object + duplicate_obj.pk = None duplicate_obj.folder = target_folder - duplicate_obj.save() # Save the new duplicated object + duplicate_obj.save() getattr(duplicate_object, field_name).add(duplicate_obj) # Get parent and sub-folders of the target folder @@ -1251,5 +1254,12 @@ def duplicate_and_link_object(obj, duplicate_object, target_folder, field_name): # Process each related object for obj in related_objects: - # Determine if the object should be added, linked, or duplicated - process_related_object(obj, duplicate_object, target_folder, target_parent_folders, sub_folders, field_name, model_class) + process_related_object( + obj, + duplicate_object, + target_folder, + target_parent_folders, + sub_folders, + field_name, + model_class, + ) From 3c689f9e73a126d98329119255a0f7e45763af2f Mon Sep 17 00:00:00 2001 From: monsieurswag Date: Thu, 17 Oct 2024 19:36:03 +0200 Subject: [PATCH 21/29] Add annotations --- backend/core/helpers.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/backend/core/helpers.py b/backend/core/helpers.py index 7fc1f2222..de424349f 100644 --- a/backend/core/helpers.py +++ b/backend/core/helpers.py @@ -1178,7 +1178,11 @@ def handle(exc, context): def duplicate_related_objects( - source_object, duplicate_object, target_folder, field_name, model_class + source_object: models.Model, + duplicate_object: models.Model, + target_folder: Folder, + field_name: str, + model_class: Type[models.Model], ): """ Duplicates related objects from a source object to a duplicate object, avoiding duplicates in the target folder. @@ -1188,7 +1192,7 @@ def duplicate_related_objects( - duplicate_object (object): The object where duplicated objects will be linked. - target_folder (object): The folder where duplicated objects will be stored. - field_name (str): The field name representing the related objects in the source object. - - model_class (class): The model class of the related objects. + - model_class (type): The model class of the related objects. """ def process_related_object( From abc33a53c79ff98868f82ac9f3735b4efc638b9b Mon Sep 17 00:00:00 2001 From: monsieurswag Date: Thu, 17 Oct 2024 19:41:26 +0200 Subject: [PATCH 22/29] Light simplification for duplicate_and_link_object --- backend/core/helpers.py | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/backend/core/helpers.py b/backend/core/helpers.py index de424349f..daec326d5 100644 --- a/backend/core/helpers.py +++ b/backend/core/helpers.py @@ -1239,15 +1239,14 @@ def link_existing_object(duplicate_object, existing_obj, field_name): """ getattr(duplicate_object, field_name).add(existing_obj) - def duplicate_and_link_object(obj, duplicate_object, target_folder, field_name): + def duplicate_and_link_object(new_obj, duplicate_object, target_folder, field_name): """ Duplicate an object and link it to the duplicate object. """ - duplicate_obj = obj - duplicate_obj.pk = None - duplicate_obj.folder = target_folder - duplicate_obj.save() - getattr(duplicate_object, field_name).add(duplicate_obj) + new_obj.pk = None + new_obj.folder = target_folder + new_obj.save() + link_existing_object(duplicate_object, new_obj, field_name) # Get parent and sub-folders of the target folder target_parent_folders = target_folder.get_parent_folders() From 120b4f13866a29152c3f73e9556818d38c173234 Mon Sep 17 00:00:00 2001 From: nas-tabchiche <71079376+nas-tabchiche@users.noreply.github.com> Date: Thu, 17 Oct 2024 20:07:38 +0200 Subject: [PATCH 23/29] =?UTF-8?q?chore:=20update=20translations=20with=20F?= =?UTF-8?q?ink=20=F0=9F=90=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/messages/es.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/messages/es.json b/frontend/messages/es.json index 2951686c0..2ce67d3fb 100644 --- a/frontend/messages/es.json +++ b/frontend/messages/es.json @@ -178,7 +178,7 @@ "noObservation": "Sin observación", "importMatrices": "Importar matrices", "importFrameworks": "Importar marcos", - "importMappings": "Importar asignaciones", + "importMappings": "Importar mappings", "summary": "Resumen", "composer": "Compositor", "statistics": "Estadísticas", From 3ac16480373c899112b25a9f07296c7a3c933fed Mon Sep 17 00:00:00 2001 From: nas-tabchiche <71079376+nas-tabchiche@users.noreply.github.com> Date: Thu, 17 Oct 2024 20:08:41 +0200 Subject: [PATCH 24/29] =?UTF-8?q?chore:=20update=20translations=20with=20F?= =?UTF-8?q?ink=20=F0=9F=90=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/messages/es.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/messages/es.json b/frontend/messages/es.json index 2ce67d3fb..85d214d94 100644 --- a/frontend/messages/es.json +++ b/frontend/messages/es.json @@ -612,7 +612,7 @@ "SLOURL": "URL de SLO", "x509Cert": "Certificado x509", "SPEntityID": "Identificación de entidad SP", - "attributeMappingUID": "Mapeo de atributos UID", + "attributeMappingUID": "Asignación de atributos UID", "attributeMappingEmail": "Asignación de atributos por correo electrónico", "attributeMappingEmailVerified": "Asignación de atributos por correo electrónico verificado", "allowRepeatAttributeName": "Permitir repetir nombre de atributo", From 4ceed7c6060ffca422b171228dc423a84d60d4d7 Mon Sep 17 00:00:00 2001 From: monsieurswag Date: Thu, 17 Oct 2024 20:26:20 +0200 Subject: [PATCH 25/29] Remove useless argument --- backend/core/helpers.py | 8 ++++---- backend/core/views.py | 3 --- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/backend/core/helpers.py b/backend/core/helpers.py index daec326d5..9653d254c 100644 --- a/backend/core/helpers.py +++ b/backend/core/helpers.py @@ -1182,7 +1182,6 @@ def duplicate_related_objects( duplicate_object: models.Model, target_folder: Folder, field_name: str, - model_class: Type[models.Model], ): """ Duplicates related objects from a source object to a duplicate object, avoiding duplicates in the target folder. @@ -1190,9 +1189,8 @@ def duplicate_related_objects( Parameters: - source_object (object): The source object containing related objects to duplicate. - duplicate_object (object): The object where duplicated objects will be linked. - - target_folder (object): The folder where duplicated objects will be stored. - - field_name (str): The field name representing the related objects in the source object. - - model_class (type): The model class of the related objects. + - target_folder (Folder): The folder where duplicated objects will be stored. + - field_name (str): The field name representing the related objects in the source """ def process_related_object( @@ -1248,6 +1246,8 @@ def duplicate_and_link_object(new_obj, duplicate_object, target_folder, field_na new_obj.save() link_existing_object(duplicate_object, new_obj, field_name) + model_class = getattr(type(source_object), field_name).field.related_model + # Get parent and sub-folders of the target folder target_parent_folders = target_folder.get_parent_folders() sub_folders = target_folder.sub_folders() diff --git a/backend/core/views.py b/backend/core/views.py index b869938cd..07a48ed1d 100644 --- a/backend/core/views.py +++ b/backend/core/views.py @@ -641,21 +641,18 @@ def duplicate(self, request, pk): duplicate_scenario, duplicate_risk_assessment.project.folder, "applied_controls", - AppliedControl, ) duplicate_related_objects( scenario, duplicate_scenario, duplicate_risk_assessment.project.folder, "threats", - Threat, ) duplicate_related_objects( scenario, duplicate_scenario, duplicate_risk_assessment.project.folder, "assets", - Asset, ) if ( From 82ba211e601ebec96ceec6f83475e2929fc99181 Mon Sep 17 00:00:00 2001 From: monsieurswag Date: Thu, 17 Oct 2024 20:29:42 +0200 Subject: [PATCH 26/29] Avoid repetition --- backend/core/views.py | 25 +++++++------------------ 1 file changed, 7 insertions(+), 18 deletions(-) diff --git a/backend/core/views.py b/backend/core/views.py index 07a48ed1d..afef5fa94 100644 --- a/backend/core/views.py +++ b/backend/core/views.py @@ -636,24 +636,13 @@ def duplicate(self, request, pk): justification=scenario.justification, ) - duplicate_related_objects( - scenario, - duplicate_scenario, - duplicate_risk_assessment.project.folder, - "applied_controls", - ) - duplicate_related_objects( - scenario, - duplicate_scenario, - duplicate_risk_assessment.project.folder, - "threats", - ) - duplicate_related_objects( - scenario, - duplicate_scenario, - duplicate_risk_assessment.project.folder, - "assets", - ) + for field in ["applied_controls", "threats", "assets"] : + duplicate_related_objects( + scenario, + duplicate_scenario, + duplicate_risk_assessment.project.folder, + field, + ) if ( duplicate_risk_assessment.project.folder From e6634bb7a0f78330be7a3eef1df731f003bd7475 Mon Sep 17 00:00:00 2001 From: monsieurswag Date: Thu, 17 Oct 2024 20:47:23 +0200 Subject: [PATCH 27/29] Formatter --- backend/core/views.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/core/views.py b/backend/core/views.py index afef5fa94..2d290e56e 100644 --- a/backend/core/views.py +++ b/backend/core/views.py @@ -636,7 +636,7 @@ def duplicate(self, request, pk): justification=scenario.justification, ) - for field in ["applied_controls", "threats", "assets"] : + for field in ["applied_controls", "threats", "assets"]: duplicate_related_objects( scenario, duplicate_scenario, From d6940e0688e148e8aa840b0d61f36a5726363e1d Mon Sep 17 00:00:00 2001 From: Nassim Tabchiche Date: Thu, 17 Oct 2024 21:09:34 +0200 Subject: [PATCH 28/29] Add translations in SSO settings form --- .../src/lib/components/Forms/ModelForm/SsoSettingForm.svelte | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/frontend/src/lib/components/Forms/ModelForm/SsoSettingForm.svelte b/frontend/src/lib/components/Forms/ModelForm/SsoSettingForm.svelte index 66779c374..669b0c6c5 100644 --- a/frontend/src/lib/components/Forms/ModelForm/SsoSettingForm.svelte +++ b/frontend/src/lib/components/Forms/ModelForm/SsoSettingForm.svelte @@ -93,7 +93,7 @@ cacheLock={cacheLocks['idp_entity_id']} bind:cachedValue={formDataCache['idp_entity_id']} /> -

Option 1: Fill the metadata url

+

{m.fillMetadataURL()}

{m.or()}
-

Option 2: Fill the SSO URL, SLO URL and x509cert

+

{m.fillSSOSLOURLx509cert()}

Date: Fri, 18 Oct 2024 12:49:07 +0200 Subject: [PATCH 29/29] chore: remove description inheritance from reference control to applied control during suggestion --- backend/core/models.py | 1 - 1 file changed, 1 deletion(-) diff --git a/backend/core/models.py b/backend/core/models.py index c79e76fbf..483471124 100644 --- a/backend/core/models.py +++ b/backend/core/models.py @@ -2606,7 +2606,6 @@ def create_applied_controls_from_suggestions(self) -> list[AppliedControl]: folder=self.folder, reference_control=reference_control, category=reference_control.category, - description=reference_control.description, ) if created: logger.info(