From 863b8f368cd2ad0a4042c4fc05e2db7b50042268 Mon Sep 17 00:00:00 2001 From: Mohammed Hamdoune Date: Fri, 6 Dec 2024 10:30:02 +0100 Subject: [PATCH] feat(pci-object-storage): show object Signed-off-by: Mohammed Hamdoune --- .../apps/pci-object-storage/package.json | 1 + .../translations/common/Messages_de_DE.json | 93 +++ .../translations/common/Messages_en_GB.json | 93 +++ .../translations/common/Messages_es_ES.json | 93 +++ .../translations/common/Messages_fr_CA.json | 93 +++ .../translations/common/Messages_fr_FR.json | 93 +++ .../translations/common/Messages_it_IT.json | 93 +++ .../translations/common/Messages_pl_PL.json | 93 +++ .../translations/common/Messages_pt_PT.json | 93 +++ .../container/Messages_de_DE.json | 49 ++ .../container/Messages_en_GB.json | 49 ++ .../container/Messages_es_ES.json | 49 ++ .../container/Messages_fr_CA.json | 49 ++ .../container/Messages_fr_FR.json | 49 ++ .../container/Messages_it_IT.json | 49 ++ .../container/Messages_pl_PL.json | 49 ++ .../container/Messages_pt_PT.json | 49 ++ .../data-encryption/Messages_de_DE.json | 7 + .../data-encryption/Messages_en_GB.json | 7 + .../data-encryption/Messages_es_ES.json | 7 + .../data-encryption/Messages_fr_CA.json | 7 + .../data-encryption/Messages_fr_FR.json | 7 + .../data-encryption/Messages_it_IT.json | 7 + .../data-encryption/Messages_pl_PL.json | 7 + .../data-encryption/Messages_pt_PT.json | 7 + .../storages/add/Messages_de_DE.json | 59 ++ .../storages/add/Messages_en_GB.json | 59 ++ .../storages/add/Messages_es_ES.json | 59 ++ .../storages/add/Messages_fr_CA.json | 60 ++ .../storages/add/Messages_fr_FR.json | 60 ++ .../storages/add/Messages_it_IT.json | 59 ++ .../storages/add/Messages_pl_PL.json | 59 ++ .../storages/add/Messages_pt_PT.json | 59 ++ .../src/api/data/container.ts | 54 ++ .../src/api/data/feature-availablity.ts | 9 + .../pci-object-storage/src/api/data/region.ts | 22 + .../src/api/data/storages.ts | 1 + .../src/api/hooks/useAvailability.ts | 14 + .../src/api/hooks/useContainer.ts | 53 ++ .../src/api/hooks/useRegion.ts | 10 + .../src/api/hooks/useStorages.ts | 86 ++- .../apps/pci-object-storage/src/constants.ts | 119 +++ .../objects/container/object/Object.page.tsx | 14 - .../container/object/delete/Delete.page.tsx | 9 +- .../object/show/ActionsComponent.tsx | 92 +++ .../container/object/show/Show.page.tsx | 692 ++++++++++++++++++ .../objects/container/object/show/Tiles.tsx | 30 + .../object/show/usedatagridColumn.tsx | 88 +++ .../objects/container/useDatagridColumn.tsx | 2 +- .../apps/pci-object-storage/src/routes.tsx | 2 +- 50 files changed, 2918 insertions(+), 46 deletions(-) create mode 100644 packages/manager/apps/pci-object-storage/public/translations/common/Messages_de_DE.json create mode 100644 packages/manager/apps/pci-object-storage/public/translations/common/Messages_en_GB.json create mode 100644 packages/manager/apps/pci-object-storage/public/translations/common/Messages_es_ES.json create mode 100644 packages/manager/apps/pci-object-storage/public/translations/common/Messages_fr_CA.json create mode 100644 packages/manager/apps/pci-object-storage/public/translations/common/Messages_fr_FR.json create mode 100644 packages/manager/apps/pci-object-storage/public/translations/common/Messages_it_IT.json create mode 100644 packages/manager/apps/pci-object-storage/public/translations/common/Messages_pl_PL.json create mode 100644 packages/manager/apps/pci-object-storage/public/translations/common/Messages_pt_PT.json create mode 100644 packages/manager/apps/pci-object-storage/public/translations/container/Messages_de_DE.json create mode 100644 packages/manager/apps/pci-object-storage/public/translations/container/Messages_en_GB.json create mode 100644 packages/manager/apps/pci-object-storage/public/translations/container/Messages_es_ES.json create mode 100644 packages/manager/apps/pci-object-storage/public/translations/container/Messages_fr_CA.json create mode 100644 packages/manager/apps/pci-object-storage/public/translations/container/Messages_fr_FR.json create mode 100644 packages/manager/apps/pci-object-storage/public/translations/container/Messages_it_IT.json create mode 100644 packages/manager/apps/pci-object-storage/public/translations/container/Messages_pl_PL.json create mode 100644 packages/manager/apps/pci-object-storage/public/translations/container/Messages_pt_PT.json create mode 100644 packages/manager/apps/pci-object-storage/public/translations/container/data-encryption/Messages_de_DE.json create mode 100644 packages/manager/apps/pci-object-storage/public/translations/container/data-encryption/Messages_en_GB.json create mode 100644 packages/manager/apps/pci-object-storage/public/translations/container/data-encryption/Messages_es_ES.json create mode 100644 packages/manager/apps/pci-object-storage/public/translations/container/data-encryption/Messages_fr_CA.json create mode 100644 packages/manager/apps/pci-object-storage/public/translations/container/data-encryption/Messages_fr_FR.json create mode 100644 packages/manager/apps/pci-object-storage/public/translations/container/data-encryption/Messages_it_IT.json create mode 100644 packages/manager/apps/pci-object-storage/public/translations/container/data-encryption/Messages_pl_PL.json create mode 100644 packages/manager/apps/pci-object-storage/public/translations/container/data-encryption/Messages_pt_PT.json create mode 100644 packages/manager/apps/pci-object-storage/public/translations/storages/add/Messages_de_DE.json create mode 100644 packages/manager/apps/pci-object-storage/public/translations/storages/add/Messages_en_GB.json create mode 100644 packages/manager/apps/pci-object-storage/public/translations/storages/add/Messages_es_ES.json create mode 100644 packages/manager/apps/pci-object-storage/public/translations/storages/add/Messages_fr_CA.json create mode 100644 packages/manager/apps/pci-object-storage/public/translations/storages/add/Messages_fr_FR.json create mode 100644 packages/manager/apps/pci-object-storage/public/translations/storages/add/Messages_it_IT.json create mode 100644 packages/manager/apps/pci-object-storage/public/translations/storages/add/Messages_pl_PL.json create mode 100644 packages/manager/apps/pci-object-storage/public/translations/storages/add/Messages_pt_PT.json create mode 100644 packages/manager/apps/pci-object-storage/src/api/data/container.ts create mode 100644 packages/manager/apps/pci-object-storage/src/api/data/feature-availablity.ts create mode 100644 packages/manager/apps/pci-object-storage/src/api/data/region.ts create mode 100644 packages/manager/apps/pci-object-storage/src/api/hooks/useAvailability.ts create mode 100644 packages/manager/apps/pci-object-storage/src/api/hooks/useContainer.ts create mode 100644 packages/manager/apps/pci-object-storage/src/api/hooks/useRegion.ts delete mode 100644 packages/manager/apps/pci-object-storage/src/pages/objects/container/object/Object.page.tsx create mode 100644 packages/manager/apps/pci-object-storage/src/pages/objects/container/object/show/ActionsComponent.tsx create mode 100644 packages/manager/apps/pci-object-storage/src/pages/objects/container/object/show/Show.page.tsx create mode 100644 packages/manager/apps/pci-object-storage/src/pages/objects/container/object/show/Tiles.tsx create mode 100644 packages/manager/apps/pci-object-storage/src/pages/objects/container/object/show/usedatagridColumn.tsx diff --git a/packages/manager/apps/pci-object-storage/package.json b/packages/manager/apps/pci-object-storage/package.json index ee963aba4a3f..28581c620039 100644 --- a/packages/manager/apps/pci-object-storage/package.json +++ b/packages/manager/apps/pci-object-storage/package.json @@ -31,6 +31,7 @@ "@tanstack/react-query": "^5.51.21", "@tanstack/react-table": "^8.20.1", "clsx": "^2.1.1", + "date-fns": "^4.1.0", "element-internals-polyfill": "^1.3.12", "i18next": "^23.8.2", "i18next-http-backend": "^2.5.2", diff --git a/packages/manager/apps/pci-object-storage/public/translations/common/Messages_de_DE.json b/packages/manager/apps/pci-object-storage/public/translations/common/Messages_de_DE.json new file mode 100644 index 000000000000..95ffbeb35afd --- /dev/null +++ b/packages/manager/apps/pci-object-storage/public/translations/common/Messages_de_DE.json @@ -0,0 +1,93 @@ +{ + "common_clipboard_copy_to_clipboard": "In die Zwischenablage kopieren", + "common_clipboard_copied": "Kopiert", + "common_clipboard_not_supported": "Kann nicht in die Zwischenablage kopiert werden. Bitte kopieren Sie den Text manuell", + "common_criteria_adder_column_label": "Spalte", + "common_criteria_adder_operator_label": "Bedingung", + "common_criteria_adder_operator_boolean_is": "ist", + "common_criteria_adder_operator_boolean_isNot": "ist nicht", + "common_criteria_adder_operator_string_contains": "enthält", + "common_criteria_adder_operator_string_containsNot": "enthält nicht", + "common_criteria_adder_operator_string_startsWith": "beginnt mit", + "common_criteria_adder_operator_string_endsWith": "endet auf", + "common_criteria_adder_operator_string_is": "ist gleich", + "common_criteria_adder_operator_string_isNot": "ist nicht", + "common_criteria_adder_operator_number_is": "ist gleich", + "common_criteria_adder_operator_number_smaller": "ist geringer als", + "common_criteria_adder_operator_number_bigger": "ist größer als", + "common_criteria_adder_operator_date_is": "ist", + "common_criteria_adder_operator_date_isBefore": "ist vor", + "common_criteria_adder_operator_date_isAfter": "ist nach", + "common_criteria_adder_operator_options_is": "ist", + "common_criteria_adder_operator_options_isNot": "ist nicht", + "common_criteria_adder_true_label": "Ja", + "common_criteria_adder_false_label": "Nein", + "common_criteria_adder_value_label": "Wert", + "common_criteria_adder_submit_label": "Hinzufügen", + "common_none": "Keine", + "common_datagrid_nodata": "Keine Ergebnisse", + "common_field_error_required": "Bitte füllen Sie dieses Feld aus.", + "common_field_error_number": "Bitte geben Sie einen gültigen Zahlenwert ein.", + "common_field_error_email": "Bitte geben Sie eine gültige E-Mail-Adresse ein.", + "common_field_error_min": "Bitte geben Sie einen Wert größer oder gleich {{min}} ein.", + "common_field_error_max": "Bitte geben Sie einen Wert kleiner oder gleich {{max}} ein.", + "common_field_error_minlength": "Bitte geben Sie mindestens {{minlength}} Zeichen ein.", + "common_field_error_maxlength": "Bitte geben Sie höchstens {{maxlength}} Zeichen ein.", + "common_field_error_pattern": "Bitte geben Sie ein gültiges Format ein.", + "common_navbar_notification_title": "Benachrichtigungen", + "common_navbar_notification_see_all": "Alle Benachrichtigungen anzeigen", + "common_navbar_notification_error_in_notification": "Es ist ein Fehler aufgetreten.", + "common_navbar_notification_error_in_notification_description": "Das Menü kann nicht gestartet werden.", + "common_navbar_notification_mark_as_read": "Als gelesen markieren", + "common_navbar_notification_mark_as_unread": "Als ungelesen markieren", + "common_navbar_notification_none": "Sie sind auf dem neuesten Stand.", + "common_navbar_notification_none_description": "Sie haben keine Benachrichtigungen.", + "common_open_new_tab": "Öffnet einen neuen Tab", + "common_pagination_resultsperpage": "Ergebnisse pro Seite", + "common_pagination_page": "Seite", + "common_pagination_of": "von", + "common_pagination_ofnresults": "von TOTAL_ITEMS Ergebnissen", + "common_pagination_currentpageofpagecount": "Seite CURRENT_PAGE von PAGE_COUNT", + "common_pagination_results": "Ergebnisse", + "common_pagination_next": "Nächste Seite", + "common_pagination_previous": "Vorherige Seite", + "common_choose": "Auswählen", + "common_stepper_optional_label": "(optional)", + "common_stepper_modify_this_step": "Diesen Schritt bearbeiten", + "common_stepper_skip_this_step": "Diesen Schritt überspringen", + "common_stepper_next_button_label": "Weiter", + "common_stepper_submit_button_label": "Absenden", + "common_stepper_cancel_button_label": "Abbrechen", + "common_file_attachmentsHeading": "Angehängt Datei(en)", + "common_file_dropArea": "Verschieben Sie Dateien per Drag-and-Drop oder", + "common_file_dropAreaSelector": "wählen Sie eine Datei aus", + "common_file_fileSelector": "Wählen Sie eine Datei aus", + "common_file_filesSelector": "Wählen Sie Dateien aus", + "common_file_maxsizeError": "Die Datei übersteigt die maximale Größe", + "common_file_removeFile": "Datei aus Auswahl entfernen", + "common_password_all_rules_met": "Alle Passwortregeln wurden eingehalten.", + "common_password_hide_password": "Passwort verbergen", + "common_password_show_password": "Passwort anzeigen", + "common_password_valid_rule": "Gültige Regel.", + "common_password_invalid_rule": "Ungültige Regel.", + "common_password_risky_password": "Unsicheres Passwort.", + "common_password_bad_password": "Falsches Passwort.", + "common_password_weak_password": "Schwaches Passwort.", + "common_password_good_password": "Korrektes Passwort.", + "common_password_strong_password": "Starkes Passwort.", + "common_criteria_adder_filter_label": "Filtern", + "common_back_button_back_to": "Zurück zu", + "common_back_button_back_to_previous_page": "Zurück zur vorherigen Seite ", + "common_dual_list_source_heading": "Zu wählende Elemente", + "common_dual_list_source_placeholder": "Keine zu wählenden Elemente", + "common_dual_list_source_move": "Hinzufügen", + "common_dual_list_source_move_all": "Alles hinzufügen", + "common_dual_list_source_search": "In den Quelldaten suchen", + "common_dual_list_target_heading": "Ausgewählte Elemente", + "common_dual_list_target_placeholder": "Kein Element ausgewählt", + "common_dual_list_target_move": "Löschen", + "common_dual_list_target_move_all": "Alles löschen", + "common_dual_list_target_search": "In den Zieldaten suchen", + "common_file_dropAreaSingle": "Eine Datei per Drag and Drop ablegen oder", + "common_file_notSingleError": "Es kann nur eine Datei hinzugefügt werden" +} diff --git a/packages/manager/apps/pci-object-storage/public/translations/common/Messages_en_GB.json b/packages/manager/apps/pci-object-storage/public/translations/common/Messages_en_GB.json new file mode 100644 index 000000000000..d98f7d7ab9db --- /dev/null +++ b/packages/manager/apps/pci-object-storage/public/translations/common/Messages_en_GB.json @@ -0,0 +1,93 @@ +{ + "common_clipboard_copy_to_clipboard": "Copy to clipboard", + "common_clipboard_copied": "Copied", + "common_clipboard_not_supported": "Copying to clipboard is not supported. Please copy the text manually.", + "common_criteria_adder_column_label": "Column", + "common_criteria_adder_operator_label": "Condition", + "common_criteria_adder_operator_boolean_is": "is", + "common_criteria_adder_operator_boolean_isNot": "is different from", + "common_criteria_adder_operator_string_contains": "includes", + "common_criteria_adder_operator_string_containsNot": "doesn't include", + "common_criteria_adder_operator_string_startsWith": "starts with", + "common_criteria_adder_operator_string_endsWith": "ends with", + "common_criteria_adder_operator_string_is": "is equal to", + "common_criteria_adder_operator_string_isNot": "is different from", + "common_criteria_adder_operator_number_is": "is equal to", + "common_criteria_adder_operator_number_smaller": "is lower than", + "common_criteria_adder_operator_number_bigger": "is higher than", + "common_criteria_adder_operator_date_is": "is", + "common_criteria_adder_operator_date_isBefore": "is before", + "common_criteria_adder_operator_date_isAfter": "is after", + "common_criteria_adder_operator_options_is": "is", + "common_criteria_adder_operator_options_isNot": "is different from", + "common_criteria_adder_true_label": "Yes", + "common_criteria_adder_false_label": "No", + "common_criteria_adder_value_label": "Value", + "common_criteria_adder_submit_label": "Add", + "common_none": "None", + "common_datagrid_nodata": "No result", + "common_field_error_required": "Please fill in this field.", + "common_field_error_number": "Please enter a valid numeric value.", + "common_field_error_email": "Please enter a valid email address.", + "common_field_error_min": "Please enter a value greater than or equal to {{min}}.", + "common_field_error_max": "Please enter a value less than or equal to {{max}}.", + "common_field_error_minlength": "Please enter a minimum of {{minlength}} characters.", + "common_field_error_maxlength": "Please enter a maximum of {{maxlength}} characters.", + "common_field_error_pattern": "Please enter a valid format.", + "common_navbar_notification_title": "Notifications", + "common_navbar_notification_see_all": "See all the notifications ", + "common_navbar_notification_error_in_notification": "Oops, there is a problem!", + "common_navbar_notification_error_in_notification_description": "Unable to load menu.", + "common_navbar_notification_mark_as_read": "Mark as read", + "common_navbar_notification_mark_as_unread": "Mark as unread", + "common_navbar_notification_none": "You are up to date!", + "common_navbar_notification_none_description": "You do not have any notifications.", + "common_open_new_tab": "Opens a new tab", + "common_pagination_resultsperpage": "Results per page", + "common_pagination_page": "page", + "common_pagination_of": "on", + "common_pagination_ofnresults": "of TOTAL_ITEMS results", + "common_pagination_currentpageofpagecount": "Page CURRENT_PAGE of PAGE_COUNT", + "common_pagination_results": "results", + "common_pagination_next": "Next page", + "common_pagination_previous": "Previous page", + "common_choose": "Choose", + "common_stepper_optional_label": "(optional)", + "common_stepper_modify_this_step": "Edit this step", + "common_stepper_skip_this_step": "Skip this step", + "common_stepper_next_button_label": "Next", + "common_stepper_submit_button_label": "Send", + "common_stepper_cancel_button_label": "Cancel", + "common_file_attachmentsHeading": "Attached file(s)", + "common_file_dropArea": "Drag and drop files or", + "common_file_dropAreaSelector": "select a file", + "common_file_fileSelector": "Select a file", + "common_file_filesSelector": "Select files...", + "common_file_maxsizeError": "This file exceeds the size limit", + "common_file_removeFile": "Delete the file selected", + "common_password_all_rules_met": "All of the password requirements have been met.", + "common_password_hide_password": "Hide password", + "common_password_show_password": "Show password", + "common_password_valid_rule": "Valid rule.", + "common_password_invalid_rule": "Invalid rule.", + "common_password_risky_password": "Very weak password.", + "common_password_bad_password": "Incorrect password.", + "common_password_weak_password": "Weak password.", + "common_password_good_password": "Correct password.", + "common_password_strong_password": "Strong password.", + "common_criteria_adder_filter_label": "Filter", + "common_back_button_back_to": "Back to", + "common_back_button_back_to_previous_page": "Back to previous page", + "common_dual_list_source_heading": "Items to select", + "common_dual_list_source_placeholder": "No items to select", + "common_dual_list_source_move": "Add", + "common_dual_list_source_move_all": "Add all", + "common_dual_list_source_search": "Search source content", + "common_dual_list_target_heading": "Items selected", + "common_dual_list_target_placeholder": "No items selected", + "common_dual_list_target_move": "Delete", + "common_dual_list_target_move_all": "Delete all", + "common_dual_list_target_search": "Search target content", + "common_file_dropAreaSingle": "Drag and drop a file or", + "common_file_notSingleError": "You can only add one file" +} diff --git a/packages/manager/apps/pci-object-storage/public/translations/common/Messages_es_ES.json b/packages/manager/apps/pci-object-storage/public/translations/common/Messages_es_ES.json new file mode 100644 index 000000000000..eee0d7037c40 --- /dev/null +++ b/packages/manager/apps/pci-object-storage/public/translations/common/Messages_es_ES.json @@ -0,0 +1,93 @@ +{ + "common_clipboard_copy_to_clipboard": "Copiar al portapapeles", + "common_clipboard_copied": "Copiado", + "common_clipboard_not_supported": "No es posible copiar el texto al portapapeles. Por favor, cópielo manualmente.", + "common_criteria_adder_column_label": "Columna", + "common_criteria_adder_operator_label": "Condición", + "common_criteria_adder_operator_boolean_is": "es", + "common_criteria_adder_operator_boolean_isNot": "no es", + "common_criteria_adder_operator_string_contains": "contiene", + "common_criteria_adder_operator_string_containsNot": "no contiene", + "common_criteria_adder_operator_string_startsWith": "empieza por", + "common_criteria_adder_operator_string_endsWith": "termina por", + "common_criteria_adder_operator_string_is": "es igual a", + "common_criteria_adder_operator_string_isNot": "no es", + "common_criteria_adder_operator_number_is": "es igual a", + "common_criteria_adder_operator_number_smaller": "es inferior a", + "common_criteria_adder_operator_number_bigger": "es superior a", + "common_criteria_adder_operator_date_is": "es", + "common_criteria_adder_operator_date_isBefore": "es anterior a", + "common_criteria_adder_operator_date_isAfter": "es posterior a", + "common_criteria_adder_operator_options_is": "es", + "common_criteria_adder_operator_options_isNot": "no es", + "common_criteria_adder_true_label": "Sí", + "common_criteria_adder_false_label": "No", + "common_criteria_adder_value_label": "Valor", + "common_criteria_adder_submit_label": "Añadir", + "common_none": "Ninguna", + "common_datagrid_nodata": "No hay resultados", + "common_field_error_required": "Complete este campo.", + "common_field_error_number": "Introduzca un valor numérico válido.", + "common_field_error_email": "Introduzca una dirección de correo electrónico válida.", + "common_field_error_min": "Introduzca un valor superior o igual a {{min}}.", + "common_field_error_max": "Introduzca un valor inferior o igual a {{max}}.", + "common_field_error_minlength": "Introduzca un mínimo de {{minlength}} caracteres.", + "common_field_error_maxlength": "Introduzca un máximo de {{maxlength}} caracteres.", + "common_field_error_pattern": "Introduzca un formato válido.", + "common_navbar_notification_title": "Notificaciones", + "common_navbar_notification_see_all": "Ver todas las notificaciones", + "common_navbar_notification_error_in_notification": "¡Vaya! Hay un problema.", + "common_navbar_notification_error_in_notification_description": "No se ha podido cargar el menú.", + "common_navbar_notification_mark_as_read": "Marcar como leído", + "common_navbar_notification_mark_as_unread": "Marcar como no leído", + "common_navbar_notification_none": "¡No tiene nada pendiente!", + "common_navbar_notification_none_description": "No hay notificaciones.", + "common_open_new_tab": "Abrir una nueva pestaña", + "common_pagination_resultsperpage": "Resultados por página", + "common_pagination_page": "página", + "common_pagination_of": "de", + "common_pagination_ofnresults": "de TOTAL_ITEMS resultados", + "common_pagination_currentpageofpagecount": "Página CURRENT_PAGE de PAGE_COUNT", + "common_pagination_results": "resultados", + "common_pagination_next": "Página siguiente", + "common_pagination_previous": "Página anterior", + "common_choose": "Elegir", + "common_stepper_optional_label": "(opcional)", + "common_stepper_modify_this_step": "Modificar este paso", + "common_stepper_skip_this_step": "Omitir este paso", + "common_stepper_next_button_label": "Siguiente", + "common_stepper_submit_button_label": "Enviar", + "common_stepper_cancel_button_label": "Cancelar", + "common_file_attachmentsHeading": "Archivo(s) adjunto(s)", + "common_file_dropArea": "Arrastre archivos o", + "common_file_dropAreaSelector": "seleccione un archivo", + "common_file_fileSelector": "Seleccione un archivo", + "common_file_filesSelector": "Seleccionar archivos...", + "common_file_maxsizeError": "El tamaño del archivo es superior al máximo autorizado.", + "common_file_removeFile": "Quitar el archivo de la selección", + "common_password_all_rules_met": "Se cumplen todas las reglas de contraseña.", + "common_password_hide_password": "Ocultar la contraseña", + "common_password_show_password": "Ver la contraseña", + "common_password_valid_rule": "Regla válida.", + "common_password_invalid_rule": "Regla no válida.", + "common_password_risky_password": "Contraseña no segura.", + "common_password_bad_password": "Contraseña incorrecta.", + "common_password_weak_password": "Contraseña débil.", + "common_password_good_password": "Contraseña correcta.", + "common_password_strong_password": "Contraseña segura.", + "common_criteria_adder_filter_label": "Filtrar", + "common_back_button_back_to": "Volver a ", + "common_back_button_back_to_previous_page": "Volver a la página anterior", + "common_dual_list_source_heading": "Elementos a seleccionar", + "common_dual_list_source_placeholder": "Ningún elemento a seleccionar", + "common_dual_list_source_move": "Añadir", + "common_dual_list_source_move_all": "Añadir todo", + "common_dual_list_source_search": "Buscar en el contenido de origen", + "common_dual_list_target_heading": "Elementos seleccionados", + "common_dual_list_target_placeholder": "Ningún elemento seleccionado", + "common_dual_list_target_move": "Eliminar", + "common_dual_list_target_move_all": "Eliminar todo", + "common_dual_list_target_search": "Buscar en el contenido de destino", + "common_file_dropAreaSingle": "Arrastre y suelte un archivo o", + "common_file_notSingleError": "Solo es posible añadir un archivo" +} diff --git a/packages/manager/apps/pci-object-storage/public/translations/common/Messages_fr_CA.json b/packages/manager/apps/pci-object-storage/public/translations/common/Messages_fr_CA.json new file mode 100644 index 000000000000..3bcaf24ff182 --- /dev/null +++ b/packages/manager/apps/pci-object-storage/public/translations/common/Messages_fr_CA.json @@ -0,0 +1,93 @@ +{ + "common_back_button_back_to": "Retour à", + "common_back_button_back_to_previous_page": "Retour à la page précédente", + "common_clipboard_copy_to_clipboard": "Copier dans le presse-papier", + "common_clipboard_copied": "Copié", + "common_clipboard_not_supported": "La copie dans le presse-papier n’est pas supportée. Veuillez copier le texte manuellement", + "common_criteria_adder_filter_label": "Filtrer", + "common_criteria_adder_column_label": "Colonne", + "common_criteria_adder_operator_label": "Condition", + "common_criteria_adder_operator_boolean_is": "est", + "common_criteria_adder_operator_boolean_isNot": "est différent de", + "common_criteria_adder_operator_string_contains": "contient", + "common_criteria_adder_operator_string_containsNot": "ne contient pas", + "common_criteria_adder_operator_string_startsWith": "débute par", + "common_criteria_adder_operator_string_endsWith": "termine par", + "common_criteria_adder_operator_string_is": "est égal à", + "common_criteria_adder_operator_string_isNot": "est différent de", + "common_criteria_adder_operator_number_is": "est égal à", + "common_criteria_adder_operator_number_smaller": "est inférieur à", + "common_criteria_adder_operator_number_bigger": "est supérieur à", + "common_criteria_adder_operator_date_is": "est", + "common_criteria_adder_operator_date_isBefore": "est avant", + "common_criteria_adder_operator_date_isAfter": "est après", + "common_criteria_adder_operator_options_is": "est", + "common_criteria_adder_operator_options_isNot": "est différent de", + "common_criteria_adder_true_label": "Oui", + "common_criteria_adder_false_label": "Non", + "common_criteria_adder_value_label": "Valeur", + "common_criteria_adder_submit_label": "Ajouter", + "common_none": "Aucun", + "common_dual_list_source_heading": "Éléments à sélectionner", + "common_dual_list_source_placeholder": "Aucun élément à sélectionner", + "common_dual_list_source_move": "Ajouter", + "common_dual_list_source_move_all": "Ajouter tout", + "common_dual_list_source_search": "Chercher dans le contenu source", + "common_dual_list_target_heading": "Éléments sélectionnés", + "common_dual_list_target_placeholder": "Aucun élément sélectionné", + "common_dual_list_target_move": "Supprimer", + "common_dual_list_target_move_all": "Supprimer tout", + "common_dual_list_target_search": "Chercher dans le contenu cible", + "common_datagrid_nodata": "Aucun résultat", + "common_field_error_required": "Veuillez compléter ce champ.", + "common_field_error_number": "Veuillez saisir une valeur numérique valide.", + "common_field_error_email": "Veuillez saisir une adresse e-mail valide.", + "common_field_error_min": "Veuillez saisir une valeur plus grande ou égale à {{min}}.", + "common_field_error_max": "Veuillez saisir une valeur plus petite ou égale à {{max}}.", + "common_field_error_minlength": "Veuillez saisir un minimum de {{minlength}} caractères.", + "common_field_error_maxlength": "Veuillez saisir un maximum de {{maxlength}} caractères.", + "common_field_error_pattern": "Veuillez saisir un format valide.", + "common_navbar_notification_title": "Notifications", + "common_navbar_notification_see_all": "Voir toutes les notifications", + "common_navbar_notification_error_in_notification": "Oups, il y a un problème !", + "common_navbar_notification_error_in_notification_description": "Nous n'arrivons pas à initialiser le menu.", + "common_navbar_notification_mark_as_read": "Marquer comme lu", + "common_navbar_notification_mark_as_unread": "Marquer comme non lu", + "common_navbar_notification_none": "Vous êtes à jour !", + "common_navbar_notification_none_description": "Vous n'avez aucune notification.", + "common_open_new_tab": "Ouvre un nouvel onglet", + "common_pagination_resultsperpage": "Résultats par page", + "common_pagination_page": "page", + "common_pagination_of": "sur", + "common_pagination_ofnresults": "sur TOTAL_ITEMS résultats", + "common_pagination_currentpageofpagecount": "Page CURRENT_PAGE sur PAGE_COUNT", + "common_pagination_results": "résultats", + "common_pagination_next": "Page suivante", + "common_pagination_previous": "Page précédente", + "common_choose": "Choisir", + "common_stepper_optional_label": "(facultatif)", + "common_stepper_modify_this_step": "Modifier cette étape", + "common_stepper_skip_this_step": "Ignorer cette étape", + "common_stepper_next_button_label": "Suivant", + "common_stepper_submit_button_label": "Envoyer", + "common_stepper_cancel_button_label": "Annuler", + "common_file_attachmentsHeading": "Fichier(s) joint(s)", + "common_file_dropArea": "Glissez/déposez des fichiers ou", + "common_file_dropAreaSingle": "Glissez/déposez un fichier ou", + "common_file_dropAreaSelector": "sélectionnez un fichier", + "common_file_fileSelector": "Sélectionnez un fichier", + "common_file_filesSelector": "Sélectionner des fichiers…", + "common_file_maxsizeError": "Le fichier dépasse la taille limite", + "common_file_notSingleError": "Vous ne pouvez ajouter qu'un seul fichier", + "common_file_removeFile": "Supprimer le fichier de la sélection", + "common_password_all_rules_met": "Toutes les règles de mot de passe sont respectées.", + "common_password_hide_password": "Masquer le mot de passe", + "common_password_show_password": "Afficher le mot de passe", + "common_password_valid_rule": "Règle valide.", + "common_password_invalid_rule": "Règle invalide.", + "common_password_risky_password": "Mot de passe risqué.", + "common_password_bad_password": "Mot de passe incorrect.", + "common_password_weak_password": "Mot de passe faible.", + "common_password_good_password": "Mot de passe correct.", + "common_password_strong_password": "Mot de passe fort." +} diff --git a/packages/manager/apps/pci-object-storage/public/translations/common/Messages_fr_FR.json b/packages/manager/apps/pci-object-storage/public/translations/common/Messages_fr_FR.json new file mode 100644 index 000000000000..3bcaf24ff182 --- /dev/null +++ b/packages/manager/apps/pci-object-storage/public/translations/common/Messages_fr_FR.json @@ -0,0 +1,93 @@ +{ + "common_back_button_back_to": "Retour à", + "common_back_button_back_to_previous_page": "Retour à la page précédente", + "common_clipboard_copy_to_clipboard": "Copier dans le presse-papier", + "common_clipboard_copied": "Copié", + "common_clipboard_not_supported": "La copie dans le presse-papier n’est pas supportée. Veuillez copier le texte manuellement", + "common_criteria_adder_filter_label": "Filtrer", + "common_criteria_adder_column_label": "Colonne", + "common_criteria_adder_operator_label": "Condition", + "common_criteria_adder_operator_boolean_is": "est", + "common_criteria_adder_operator_boolean_isNot": "est différent de", + "common_criteria_adder_operator_string_contains": "contient", + "common_criteria_adder_operator_string_containsNot": "ne contient pas", + "common_criteria_adder_operator_string_startsWith": "débute par", + "common_criteria_adder_operator_string_endsWith": "termine par", + "common_criteria_adder_operator_string_is": "est égal à", + "common_criteria_adder_operator_string_isNot": "est différent de", + "common_criteria_adder_operator_number_is": "est égal à", + "common_criteria_adder_operator_number_smaller": "est inférieur à", + "common_criteria_adder_operator_number_bigger": "est supérieur à", + "common_criteria_adder_operator_date_is": "est", + "common_criteria_adder_operator_date_isBefore": "est avant", + "common_criteria_adder_operator_date_isAfter": "est après", + "common_criteria_adder_operator_options_is": "est", + "common_criteria_adder_operator_options_isNot": "est différent de", + "common_criteria_adder_true_label": "Oui", + "common_criteria_adder_false_label": "Non", + "common_criteria_adder_value_label": "Valeur", + "common_criteria_adder_submit_label": "Ajouter", + "common_none": "Aucun", + "common_dual_list_source_heading": "Éléments à sélectionner", + "common_dual_list_source_placeholder": "Aucun élément à sélectionner", + "common_dual_list_source_move": "Ajouter", + "common_dual_list_source_move_all": "Ajouter tout", + "common_dual_list_source_search": "Chercher dans le contenu source", + "common_dual_list_target_heading": "Éléments sélectionnés", + "common_dual_list_target_placeholder": "Aucun élément sélectionné", + "common_dual_list_target_move": "Supprimer", + "common_dual_list_target_move_all": "Supprimer tout", + "common_dual_list_target_search": "Chercher dans le contenu cible", + "common_datagrid_nodata": "Aucun résultat", + "common_field_error_required": "Veuillez compléter ce champ.", + "common_field_error_number": "Veuillez saisir une valeur numérique valide.", + "common_field_error_email": "Veuillez saisir une adresse e-mail valide.", + "common_field_error_min": "Veuillez saisir une valeur plus grande ou égale à {{min}}.", + "common_field_error_max": "Veuillez saisir une valeur plus petite ou égale à {{max}}.", + "common_field_error_minlength": "Veuillez saisir un minimum de {{minlength}} caractères.", + "common_field_error_maxlength": "Veuillez saisir un maximum de {{maxlength}} caractères.", + "common_field_error_pattern": "Veuillez saisir un format valide.", + "common_navbar_notification_title": "Notifications", + "common_navbar_notification_see_all": "Voir toutes les notifications", + "common_navbar_notification_error_in_notification": "Oups, il y a un problème !", + "common_navbar_notification_error_in_notification_description": "Nous n'arrivons pas à initialiser le menu.", + "common_navbar_notification_mark_as_read": "Marquer comme lu", + "common_navbar_notification_mark_as_unread": "Marquer comme non lu", + "common_navbar_notification_none": "Vous êtes à jour !", + "common_navbar_notification_none_description": "Vous n'avez aucune notification.", + "common_open_new_tab": "Ouvre un nouvel onglet", + "common_pagination_resultsperpage": "Résultats par page", + "common_pagination_page": "page", + "common_pagination_of": "sur", + "common_pagination_ofnresults": "sur TOTAL_ITEMS résultats", + "common_pagination_currentpageofpagecount": "Page CURRENT_PAGE sur PAGE_COUNT", + "common_pagination_results": "résultats", + "common_pagination_next": "Page suivante", + "common_pagination_previous": "Page précédente", + "common_choose": "Choisir", + "common_stepper_optional_label": "(facultatif)", + "common_stepper_modify_this_step": "Modifier cette étape", + "common_stepper_skip_this_step": "Ignorer cette étape", + "common_stepper_next_button_label": "Suivant", + "common_stepper_submit_button_label": "Envoyer", + "common_stepper_cancel_button_label": "Annuler", + "common_file_attachmentsHeading": "Fichier(s) joint(s)", + "common_file_dropArea": "Glissez/déposez des fichiers ou", + "common_file_dropAreaSingle": "Glissez/déposez un fichier ou", + "common_file_dropAreaSelector": "sélectionnez un fichier", + "common_file_fileSelector": "Sélectionnez un fichier", + "common_file_filesSelector": "Sélectionner des fichiers…", + "common_file_maxsizeError": "Le fichier dépasse la taille limite", + "common_file_notSingleError": "Vous ne pouvez ajouter qu'un seul fichier", + "common_file_removeFile": "Supprimer le fichier de la sélection", + "common_password_all_rules_met": "Toutes les règles de mot de passe sont respectées.", + "common_password_hide_password": "Masquer le mot de passe", + "common_password_show_password": "Afficher le mot de passe", + "common_password_valid_rule": "Règle valide.", + "common_password_invalid_rule": "Règle invalide.", + "common_password_risky_password": "Mot de passe risqué.", + "common_password_bad_password": "Mot de passe incorrect.", + "common_password_weak_password": "Mot de passe faible.", + "common_password_good_password": "Mot de passe correct.", + "common_password_strong_password": "Mot de passe fort." +} diff --git a/packages/manager/apps/pci-object-storage/public/translations/common/Messages_it_IT.json b/packages/manager/apps/pci-object-storage/public/translations/common/Messages_it_IT.json new file mode 100644 index 000000000000..6cfd5230041b --- /dev/null +++ b/packages/manager/apps/pci-object-storage/public/translations/common/Messages_it_IT.json @@ -0,0 +1,93 @@ +{ + "common_clipboard_copy_to_clipboard": "Copia negli appunti", + "common_clipboard_copied": "Copiato", + "common_clipboard_not_supported": "La copia negli appunti non è supportata, esegui l'operazione manualmente", + "common_criteria_adder_column_label": "Colonna", + "common_criteria_adder_operator_label": "Condizione", + "common_criteria_adder_operator_boolean_is": "è", + "common_criteria_adder_operator_boolean_isNot": "è diverso da", + "common_criteria_adder_operator_string_contains": "contiene", + "common_criteria_adder_operator_string_containsNot": "non contiene ", + "common_criteria_adder_operator_string_startsWith": "inizia per", + "common_criteria_adder_operator_string_endsWith": "termina per", + "common_criteria_adder_operator_string_is": "è uguale a", + "common_criteria_adder_operator_string_isNot": "è diverso da", + "common_criteria_adder_operator_number_is": "è uguale a", + "common_criteria_adder_operator_number_smaller": "è inferiore a", + "common_criteria_adder_operator_number_bigger": "è superiore a", + "common_criteria_adder_operator_date_is": "è", + "common_criteria_adder_operator_date_isBefore": "è prima di", + "common_criteria_adder_operator_date_isAfter": "è dopo di", + "common_criteria_adder_operator_options_is": "è", + "common_criteria_adder_operator_options_isNot": "è diverso da", + "common_criteria_adder_true_label": "Sì", + "common_criteria_adder_false_label": "No", + "common_criteria_adder_value_label": "Valore", + "common_criteria_adder_submit_label": "Aggiungi", + "common_none": "Nessuno", + "common_datagrid_nodata": "Nessun risultato", + "common_field_error_required": "Completa questo campo", + "common_field_error_number": "Inserisci un valore numerico valido", + "common_field_error_email": "Inserisci un indirizzo email valido", + "common_field_error_min": "Inserisci un valore maggiore o uguale a {{min}}", + "common_field_error_max": "Inserisci un valore inferiore o uguale a {{max}}", + "common_field_error_minlength": "Inserisci almeno {{minlength}} caratteri", + "common_field_error_maxlength": "Inserisci un massimo di {{maxlength}} caratteri", + "common_field_error_pattern": "Inserisci un formato valido", + "common_navbar_notification_title": "Notifiche", + "common_navbar_notification_see_all": "Visualizza tutte le notifiche", + "common_navbar_notification_error_in_notification": "Ops, si è verificato un problema!", + "common_navbar_notification_error_in_notification_description": "Impossibile avviare il menu", + "common_navbar_notification_mark_as_read": "Segna come letto", + "common_navbar_notification_mark_as_unread": "Segna come non letto", + "common_navbar_notification_none": "È tutto aggiornato!", + "common_navbar_notification_none_description": "Non sono presenti notifiche", + "common_open_new_tab": "Apre una nuova scheda", + "common_pagination_resultsperpage": "Risultati per pagina", + "common_pagination_page": "pagina", + "common_pagination_of": "su", + "common_pagination_ofnresults": "di TOTAL_ITEMS risultati", + "common_pagination_currentpageofpagecount": "Pagina CURRENT_PAGE di PAGE_COUNT", + "common_pagination_results": "risultati", + "common_pagination_next": "Pagina successiva", + "common_pagination_previous": "Pagina precedente", + "common_choose": "Scegli", + "common_stepper_optional_label": "(facoltativo)", + "common_stepper_modify_this_step": "Modifica questo step", + "common_stepper_skip_this_step": "Ignora questo step", + "common_stepper_next_button_label": "Continua", + "common_stepper_submit_button_label": "Invia", + "common_stepper_cancel_button_label": "Annulla", + "common_file_attachmentsHeading": "File allegati", + "common_file_dropArea": "Esegui il drag-and-drop dei file o", + "common_file_dropAreaSelector": "seleziona un file", + "common_file_fileSelector": "seleziona un file", + "common_file_filesSelector": "Seleziona i file...", + "common_file_maxsizeError": "Il file supera la dimensione massima", + "common_file_removeFile": "Rimuovi il file dalla selezione", + "common_password_all_rules_met": "La password rispetta tutti i requisiti", + "common_password_hide_password": "Nascondi password", + "common_password_show_password": "Mostra password", + "common_password_valid_rule": "Regola valida", + "common_password_invalid_rule": "Regola non valida", + "common_password_risky_password": "Password non sicura", + "common_password_bad_password": "Password non corretta", + "common_password_weak_password": "Password debole", + "common_password_good_password": "Password corretta", + "common_password_strong_password": "Password sicura", + "common_criteria_adder_filter_label": "Filtra", + "common_back_button_back_to": "Torna a", + "common_back_button_back_to_previous_page": "Torna alla pagina precedente", + "common_dual_list_source_heading": "Elementi da selezionare", + "common_dual_list_source_placeholder": "Nessun elemento da selezionare", + "common_dual_list_source_move": "Aggiungi", + "common_dual_list_source_move_all": "Aggiungi tutto", + "common_dual_list_source_search": "Cerca nel contenuto di partenza", + "common_dual_list_target_heading": "Elementi selezionati", + "common_dual_list_target_placeholder": "Nessun elemento selezionato", + "common_dual_list_target_move": "Elimina", + "common_dual_list_target_move_all": "Elimina tutto", + "common_dual_list_target_search": "Cerca nel contenuto di destinazione", + "common_file_dropAreaSingle": "Trascina e rilascia un file o", + "common_file_notSingleError": "Puoi aggiungere un solo file" +} diff --git a/packages/manager/apps/pci-object-storage/public/translations/common/Messages_pl_PL.json b/packages/manager/apps/pci-object-storage/public/translations/common/Messages_pl_PL.json new file mode 100644 index 000000000000..cee5750c53b8 --- /dev/null +++ b/packages/manager/apps/pci-object-storage/public/translations/common/Messages_pl_PL.json @@ -0,0 +1,93 @@ +{ + "common_clipboard_copy_to_clipboard": "Skopiuj do schowka", + "common_clipboard_copied": "Skopiowano", + "common_clipboard_not_supported": "Kopiowanie do schowka nie jest możliwe. Skopiuj tekst ręcznie.", + "common_criteria_adder_column_label": "Kolumna", + "common_criteria_adder_operator_label": "Warunek", + "common_criteria_adder_operator_boolean_is": "jest", + "common_criteria_adder_operator_boolean_isNot": "nie jest", + "common_criteria_adder_operator_string_contains": "zawiera", + "common_criteria_adder_operator_string_containsNot": "nie zawiera", + "common_criteria_adder_operator_string_startsWith": "zaczyna się na", + "common_criteria_adder_operator_string_endsWith": "kończy się na", + "common_criteria_adder_operator_string_is": "jest równy", + "common_criteria_adder_operator_string_isNot": "nie jest", + "common_criteria_adder_operator_number_is": "jest równy", + "common_criteria_adder_operator_number_smaller": "jest mniejszy niż", + "common_criteria_adder_operator_number_bigger": "jest większy niż", + "common_criteria_adder_operator_date_is": "jest", + "common_criteria_adder_operator_date_isBefore": "jest przed", + "common_criteria_adder_operator_date_isAfter": "jest po", + "common_criteria_adder_operator_options_is": "jest", + "common_criteria_adder_operator_options_isNot": "nie jest", + "common_criteria_adder_true_label": "Tak", + "common_criteria_adder_false_label": "Nie", + "common_criteria_adder_value_label": "Wartość", + "common_criteria_adder_submit_label": "Dodaj", + "common_none": "Brak", + "common_datagrid_nodata": "Brak wyników", + "common_field_error_required": "Wypełnij to pole.", + "common_field_error_number": "Wprowadź poprawną wartość liczbową.", + "common_field_error_email": "Wprowadź poprawny adres e-mail.", + "common_field_error_min": "Wprowadź wartość większą lub równą {{min}}.", + "common_field_error_max": "Wprowadź wartość mniejszą lub równą {{max}}.", + "common_field_error_minlength": "Wprowadź minimum {{minlength}} znaków.", + "common_field_error_maxlength": "Wprowadź maksimum {{maxlength}} znaków.", + "common_field_error_pattern": "Użyj poprawnego formatu.", + "common_navbar_notification_title": "Powiadomienia", + "common_navbar_notification_see_all": "Wyświetl wszystkie powiadomienia", + "common_navbar_notification_error_in_notification": "Wystąpił nieoczekiwany błąd.", + "common_navbar_notification_error_in_notification_description": "Nie można uruchomić menu.", + "common_navbar_notification_mark_as_read": "Oznacz jako przeczytaną", + "common_navbar_notification_mark_as_unread": "Oznacz jako nieprzeczytaną", + "common_navbar_notification_none": "Jesteś na bieżąco!", + "common_navbar_notification_none_description": "Nie masz powiadomień.", + "common_open_new_tab": "Otwórz nową zakładkę", + "common_pagination_resultsperpage": "Wyniki na stronie", + "common_pagination_page": "strona", + "common_pagination_of": "z", + "common_pagination_ofnresults": "z TOTAL_ITEMS wyników", + "common_pagination_currentpageofpagecount": "Strona CURRENT_PAGE z PAGE_COUNT", + "common_pagination_results": "wyniki", + "common_pagination_next": "Następna strona", + "common_pagination_previous": "Poprzednia strona", + "common_choose": "Wybierz", + "common_stepper_optional_label": "(opcjonalnie)", + "common_stepper_modify_this_step": "Edytuj ten krok", + "common_stepper_skip_this_step": "Pomiń ten krok", + "common_stepper_next_button_label": "Dalej", + "common_stepper_submit_button_label": "Wyślij", + "common_stepper_cancel_button_label": "Anuluj", + "common_file_attachmentsHeading": "Dołączony(e) plik(i)", + "common_file_dropArea": "Przeciągnij/upuść pliki lub", + "common_file_dropAreaSelector": "wybierz plik", + "common_file_fileSelector": "Wybierz plik", + "common_file_filesSelector": "Wybierz pliki...", + "common_file_maxsizeError": "Plik przekracza limit rozmiaru", + "common_file_removeFile": "Usuń wybrany plik", + "common_password_all_rules_met": "Wszystkie wymagania dotyczące hasła zostały spełnione.", + "common_password_hide_password": "Ukryj hasło", + "common_password_show_password": "Wyświetl hasło", + "common_password_valid_rule": "Prawidłowa reguła.", + "common_password_invalid_rule": "Nieprawidłowa reguła.", + "common_password_risky_password": "Niebezpieczne hasło.", + "common_password_bad_password": "Nieprawidłowe hasło.", + "common_password_weak_password": "Słabe hasło.", + "common_password_good_password": "Poprawne hasło.", + "common_password_strong_password": "Silne hasło.", + "common_criteria_adder_filter_label": "Filtruj", + "common_back_button_back_to": "Powrót do", + "common_back_button_back_to_previous_page": "Powrót do poprzedniej strony", + "common_dual_list_source_heading": "Elementy do wyboru", + "common_dual_list_source_placeholder": "Brak elementów do wyboru", + "common_dual_list_source_move": "Dodaj", + "common_dual_list_source_move_all": "Dodaj wszystko", + "common_dual_list_source_search": "Szukaj w treści źródłowej", + "common_dual_list_target_heading": "Wybrane elementy", + "common_dual_list_target_placeholder": "Brak wybranych elementów", + "common_dual_list_target_move": "Usuń", + "common_dual_list_target_move_all": "Usuń wszystko", + "common_dual_list_target_search": "Szukaj w treści docelowej", + "common_file_dropAreaSingle": "Przeciągnij/upuść plik lub", + "common_file_notSingleError": "Możesz dodać tylko jeden plik" +} diff --git a/packages/manager/apps/pci-object-storage/public/translations/common/Messages_pt_PT.json b/packages/manager/apps/pci-object-storage/public/translations/common/Messages_pt_PT.json new file mode 100644 index 000000000000..6b465e678a1d --- /dev/null +++ b/packages/manager/apps/pci-object-storage/public/translations/common/Messages_pt_PT.json @@ -0,0 +1,93 @@ +{ + "common_clipboard_copy_to_clipboard": "Copiar para a área de transferência", + "common_clipboard_copied": "Copiado", + "common_clipboard_not_supported": "A cópia para a área de transferência não é suportada. Copie o texto manualmente", + "common_criteria_adder_column_label": "Coluna", + "common_criteria_adder_operator_label": "Regra", + "common_criteria_adder_operator_boolean_is": "é", + "common_criteria_adder_operator_boolean_isNot": "é diferente de", + "common_criteria_adder_operator_string_contains": "contém", + "common_criteria_adder_operator_string_containsNot": "não contém", + "common_criteria_adder_operator_string_startsWith": "começa por", + "common_criteria_adder_operator_string_endsWith": "termina em", + "common_criteria_adder_operator_string_is": "é igual a", + "common_criteria_adder_operator_string_isNot": "é diferente de", + "common_criteria_adder_operator_number_is": "é igual a", + "common_criteria_adder_operator_number_smaller": "é inferior a", + "common_criteria_adder_operator_number_bigger": "é superior a", + "common_criteria_adder_operator_date_is": "é", + "common_criteria_adder_operator_date_isBefore": "está antes", + "common_criteria_adder_operator_date_isAfter": "está depois", + "common_criteria_adder_operator_options_is": "é", + "common_criteria_adder_operator_options_isNot": "é diferente de", + "common_criteria_adder_true_label": "Sim", + "common_criteria_adder_false_label": "Não", + "common_criteria_adder_value_label": "Valor", + "common_criteria_adder_submit_label": "Adicionar", + "common_none": "Nenhum", + "common_datagrid_nodata": "Nenhum resultado encontrado", + "common_field_error_required": "Preencha o campo.", + "common_field_error_number": "Introduza um valor numérico válido.", + "common_field_error_email": "Introduza um endereço de e-mail válido.", + "common_field_error_min": "Introduza um valor superior ou igual a {{min}}.", + "common_field_error_max": "Introduza um valor inferior ou igual a {{max}}.", + "common_field_error_minlength": "Introduza um mínimo de {{minlength}} caracteres.", + "common_field_error_maxlength": "Introduza um máximo de {{maxlength}} caracteres.", + "common_field_error_pattern": "Introduza um formato válido.", + "common_navbar_notification_title": "Notificações", + "common_navbar_notification_see_all": "Consultar todas as notificações", + "common_navbar_notification_error_in_notification": "Lamentamos, mas existe um problema!", + "common_navbar_notification_error_in_notification_description": "Não é possível iniciar o menu.", + "common_navbar_notification_mark_as_read": "Marcar como lida", + "common_navbar_notification_mark_as_unread": "Marcar como não lida", + "common_navbar_notification_none": "Está atualizado!", + "common_navbar_notification_none_description": "Não tem notificações.", + "common_open_new_tab": "Abre um novo separador", + "common_pagination_resultsperpage": "Resultados por página", + "common_pagination_page": "página", + "common_pagination_of": "em", + "common_pagination_ofnresults": "de TOTAL_ITEMS resultados", + "common_pagination_currentpageofpagecount": "Página CURRENT_PAGE de PAGE_COUNT", + "common_pagination_results": "resultados", + "common_pagination_next": "Página seguinte", + "common_pagination_previous": "Página anterior", + "common_choose": "Escolher", + "common_stepper_optional_label": "(opcional)", + "common_stepper_modify_this_step": "Editar este passo", + "common_stepper_skip_this_step": "Ignorar este passo", + "common_stepper_next_button_label": "Seguinte", + "common_stepper_submit_button_label": "Enviar", + "common_stepper_cancel_button_label": "Anular", + "common_file_attachmentsHeading": "Ficheiro(s) anexado(s)", + "common_file_dropArea": "Arraste e solte ficheiros ou", + "common_file_dropAreaSelector": "selecione um ficheiro", + "common_file_fileSelector": "Selecione um ficheiro", + "common_file_filesSelector": "Selecionar ficheiros...", + "common_file_maxsizeError": "O ficheiro ultrapassa o tamanho limite", + "common_file_removeFile": "Eliminar o ficheiro selecionado", + "common_password_all_rules_met": "Todas as condições de palavra-passe foram cumpridas.", + "common_password_hide_password": "Ocultar a palavra-passe", + "common_password_show_password": "Mostrar a palavra-passe", + "common_password_valid_rule": "Condição válida.", + "common_password_invalid_rule": "Condição inválida.", + "common_password_risky_password": "Palavra-passe de risco.", + "common_password_bad_password": "Palavra-passe incorreta.", + "common_password_weak_password": "Palavra-passe fraca.", + "common_password_good_password": "Palavra-passe correta.", + "common_password_strong_password": "Palavra-passe forte.", + "common_criteria_adder_filter_label": "Filtrar", + "common_back_button_back_to": "Voltar para", + "common_back_button_back_to_previous_page": "Voltar à página anterior", + "common_dual_list_source_heading": "Elementos por selecionar", + "common_dual_list_source_placeholder": "Nenhum elemento a selecionar", + "common_dual_list_source_move": "Adicionar", + "common_dual_list_source_move_all": "Adicionar tudo", + "common_dual_list_source_search": "Procurar no conteúdo de origem", + "common_dual_list_target_heading": "Elementos selecionados", + "common_dual_list_target_placeholder": "Nenhum elemento selecionado", + "common_dual_list_target_move": "Eliminar", + "common_dual_list_target_move_all": "Eliminar tudo", + "common_dual_list_target_search": "Procurar no conteúdo de destino", + "common_file_dropAreaSingle": "Arraste e solte um ficheiro ou", + "common_file_notSingleError": "Só um ficheiro pode ser adicionado" +} diff --git a/packages/manager/apps/pci-object-storage/public/translations/container/Messages_de_DE.json b/packages/manager/apps/pci-object-storage/public/translations/container/Messages_de_DE.json new file mode 100644 index 000000000000..3ddfd23088a4 --- /dev/null +++ b/packages/manager/apps/pci-object-storage/public/translations/container/Messages_de_DE.json @@ -0,0 +1,49 @@ +{ + "pci_projects_project_storages_containers_container_back_label": "Zurück", + "pci_projects_project_storages_containers_container_archive_info_storedObjects": "Archive: {{ count }}", + "pci_projects_project_storages_containers_container_object_info_storedObjects": "Objekte: {{ count }}", + "pci_projects_project_storages_containers_container_info_storedBytes": "Verwendeter Speicherplatz: {{ bytes }}", + "pci_projects_project_storages_containers_container_info_publicUrl": "Endpoint", + "pci_projects_project_storages_containers_container_info_publicUrl_help": "Diese Information ist notwendig, um Ihre Objekte über die API abzurufen oder zu bearbeiten. Weitere Informationen finden Sie in unserer Dokumentation.", + "pci_projects_project_storages_containers_container_archive_info_staticUrl": "Serveradresse für rsync/sftp/scp:", + "pci_projects_project_storages_containers_container_object_info_staticUrl": "Wert des CNAME-/TXT-Eintrags:", + "pci_projects_project_storages_containers_container_object_info_staticUrl_help": "Verwenden Sie den Container „Statisches Hosting“ für eine Domain oder Subdomain. Ändern Sie einfach die DNS-Zone: Fügen Sie dazu einen CNAME-Eintrag mit diesem Wert hinzu.", + "pci_projects_project_storages_containers_container_archive_info_user": "Benutzername: {{ user }}", + "pci_projects_project_storages_containers_container_archive_info_password": "Passwort (Konkatenation der folgenden Felder):", + "pci_projects_project_storages_containers_container_name_label": "Name", + "pci_projects_project_storages_containers_container_lastModified_label": "Letzte Änderung", + "pci_projects_project_storages_containers_container_size_label": "Größe", + "pci_projects_project_storages_containers_container_contentType_label": "Typ", + "pci_projects_project_storages_containers_container_retrievalState_label": "Verfügbarkeit", + "pci_projects_project_storages_containers_container_retrievalState_unsealed": "Ja", + "pci_projects_project_storages_containers_container_retrievalState_sealed": "Gesperrt", + "pci_projects_project_storages_containers_container_unseal_label": "Freigeben", + "pci_projects_project_storages_containers_container_download_label": "Herunterladen", + "pci_projects_project_storages_containers_container_delete_label": "Löschen", + "pci_projects_project_storages_containers_container_add_archive_label": "Archive hinzufügen", + "pci_projects_project_storages_containers_container_add_object_label": "Objekte hinzufügen", + "pci_projects_project_storages_containers_container_archive_error_query": "Beim Abruf des Archivcontainers ist ein Fehler aufgetreten: {{ message }}.", + "pci_projects_project_storages_containers_container_object_error_query": "Beim Abruf des Objektcontainers ist ein Fehler aufgetreten: {{ message }}.", + "pci_projects_project_storages_containers_container_archive_error_download": "Beim Download des Archivs ist ein Fehler aufgetreten: {{ message }}.", + "pci_projects_project_storages_containers_container_object_error_download": "Beim Download des Objekts ist ein Fehler aufgetreten: {{ message }}.", + "pci_projects_project_storages_containers_container_archive_error_unseal": "Bei der Freigabe des Archivs ist ein Fehler aufgetreten: {{ message }}.", + "pci_projects_project_storages_containers_container_archive_success_unseal": "Das Archiv {{ archive }} wird freigegeben.", + "pci_projects_project_storages_containers_container_add_user_label": "Einen Nutzer zu meinem Objekt hinzufügen", + "pci_projects_project_storages_containers_container_info_id": "ID", + "pci_projects_project_storages_containers_container_documentation_title_rclone": "Object Storage mit Rclone", + "pci_projects_project_storages_containers_container_documentation_description_rclone": "Hier erfahren Sie, wie OVHcloud Object Storage mit Rclone synchronisiert werden kann.", + "pci_projects_project_storages_containers_container_documentation_title_veeam": "S3 Object Storage mit Veeam", + "pci_projects_project_storages_containers_container_documentation_description_veeam": "Konfigurieren Sie Veeam und nutzen Sie Ihren S3 Object Storage-Speicherplatz.", + "pci_projects_project_storages_containers_container_documentation_title_s3-limitation": "Die technischen Grenzen des S3 Object Storage", + "pci_projects_project_storages_containers_container_documentation_description_s3-limitation": "Hier erklären wir die technisch bedingten Grenzen der Lösung S3 Object Storage.", + "pci_projects_project_storages_containers_container_back_button_label": "Meine Container", + "pci_projects_project_storages_containers_container_object_info_s3_staticUrl_help": "Stellen Sie Ihre Container und Objekte im Web bereit, indem Sie die Zugriffsrechte für jedes Objekt konfigurieren und so einen öffentlichen Zugang ermöglichen. Sie sind dann über die Virtual Hosted Style-Adresse verfügbar.", + "pci_projects_project_storages_containers_container_info_data_encryption_enabled": "Verschlüsselung: SSE-S3", + "pci_projects_project_storages_containers_container_info_data_encryption_disabled": "Verschlüsselung: Keine", + "pci_projects_project_storages_containers_container_storage_class_label": "Speicherklasse", + "pci_projects_project_storages_containers_container_storage_class_STANDARD": "Standard", + "pci_projects_project_storages_containers_container_storage_class_HIGH_PERF": "High Performance", + "pci_projects_project_storages_containers_container_maintenance_message": "Wir führen gerade Wartungsarbeiten durch, um die S3-Endpunkte zusammenzuführen. Das Hinzufügen von Objekten wurde vorübergehend ausgesetzt.", + "pci_projects_project_storages_containers_container_region": "Standort: {{ region }}", + "pci_projects_project_storages_containers_container_add_replication_rules_info": "Bitte beachten Sie, dass Ihr Bucket keine externe Replikation Ihrer Daten beinhaltet. Wenn Ihr Anwendungsfall diese zusätzliche Schutzebene erfordert, erwägen Sie die Verwendung unserer asynchronen Replikation in einer oder mehreren Regionen (derzeit nur über die API verfügbar)." +} diff --git a/packages/manager/apps/pci-object-storage/public/translations/container/Messages_en_GB.json b/packages/manager/apps/pci-object-storage/public/translations/container/Messages_en_GB.json new file mode 100644 index 000000000000..e777fab517ab --- /dev/null +++ b/packages/manager/apps/pci-object-storage/public/translations/container/Messages_en_GB.json @@ -0,0 +1,49 @@ +{ + "pci_projects_project_storages_containers_container_back_label": "Back", + "pci_projects_project_storages_containers_container_archive_info_storedObjects": "Archives: {{ count }}", + "pci_projects_project_storages_containers_container_object_info_storedObjects": "Objects: {{ count }}", + "pci_projects_project_storages_containers_container_info_storedBytes": "Space used: {{ bytes }}", + "pci_projects_project_storages_containers_container_info_publicUrl": "Endpoint", + "pci_projects_project_storages_containers_container_info_publicUrl_help": "You need this information to retrieve or change objects via the API. Go to the guide section for more details.", + "pci_projects_project_storages_containers_container_archive_info_staticUrl": "Server address for rsync/sftp/scp:", + "pci_projects_project_storages_containers_container_object_info_staticUrl": "CNAME/TXT record value:", + "pci_projects_project_storages_containers_container_object_info_staticUrl_help": "Use the “Static hosting” container on a domain or subdomain. Simply modify the DNS zone by adding a CNAME record with this value.", + "pci_projects_project_storages_containers_container_archive_info_user": "Username: {{ user }}", + "pci_projects_project_storages_containers_container_archive_info_password": "Password (the combination of the following fields): ", + "pci_projects_project_storages_containers_container_name_label": "Name", + "pci_projects_project_storages_containers_container_lastModified_label": "Latest modification", + "pci_projects_project_storages_containers_container_size_label": "Size", + "pci_projects_project_storages_containers_container_contentType_label": "Type", + "pci_projects_project_storages_containers_container_retrievalState_label": "Availability", + "pci_projects_project_storages_containers_container_retrievalState_unsealed": "Yes", + "pci_projects_project_storages_containers_container_retrievalState_sealed": "Frozen", + "pci_projects_project_storages_containers_container_unseal_label": "Unfreeze", + "pci_projects_project_storages_containers_container_download_label": "Download", + "pci_projects_project_storages_containers_container_delete_label": "Delete", + "pci_projects_project_storages_containers_container_add_archive_label": "Add archives", + "pci_projects_project_storages_containers_container_add_object_label": "Add objects", + "pci_projects_project_storages_containers_container_archive_error_query": "An error has occurred retrieving the archive container: {{ message }}.", + "pci_projects_project_storages_containers_container_object_error_query": "An error has occurred retrieving the object container: {{ message }}.", + "pci_projects_project_storages_containers_container_archive_error_download": "An error has occurred downloading the archive: {{message}}.", + "pci_projects_project_storages_containers_container_object_error_download": "An error has occurred downloading the object: {{message}}.", + "pci_projects_project_storages_containers_container_archive_error_unseal": "An error has occurred unfreezing the archive: {{message}}.", + "pci_projects_project_storages_containers_container_archive_success_unseal": "Unfreezing the {{archive}} archive.", + "pci_projects_project_storages_containers_container_add_user_label": "Add a user to my object", + "pci_projects_project_storages_containers_container_info_id": "ID", + "pci_projects_project_storages_containers_container_documentation_title_rclone": "Object Storage with rclone", + "pci_projects_project_storages_containers_container_documentation_description_rclone": "Find out how OVHcloud Object Storage can be synced via rclone.", + "pci_projects_project_storages_containers_container_documentation_title_veeam": "S3 Object Storage with Veeam", + "pci_projects_project_storages_containers_container_documentation_description_veeam": "Configure Veeam to use your S3 Object Storage space.", + "pci_projects_project_storages_containers_container_documentation_title_s3-limitation": "The technical limits of S3 Object Storage", + "pci_projects_project_storages_containers_container_documentation_description_s3-limitation": "Here, you can find the technical limits for the S3 Object Storage product", + "pci_projects_project_storages_containers_container_back_button_label": "My containers", + "pci_projects_project_storages_containers_container_object_info_s3_staticUrl_help": "Publish your containers and objects on the internet by setting access rights (per object), giving them public access. They are then accessible via the virtual-hosted style address.", + "pci_projects_project_storages_containers_container_info_data_encryption_enabled": "Encryption: SSE-S3", + "pci_projects_project_storages_containers_container_info_data_encryption_disabled": "Encryption: None", + "pci_projects_project_storages_containers_container_storage_class_label": "Storage class", + "pci_projects_project_storages_containers_container_storage_class_STANDARD": "Standard", + "pci_projects_project_storages_containers_container_storage_class_HIGH_PERF": "High Performance", + "pci_projects_project_storages_containers_container_maintenance_message": "Maintenance is currently being carried out to merge S3 endpoints. Adding objects is temporarily suspended.", + "pci_projects_project_storages_containers_container_region": "Location: {{ region }}", + "pci_projects_project_storages_containers_container_add_replication_rules_info": "Please note that your bucket does not include off-site replication of your data. If your use case requires this additional layer of protection, consider using our asynchronous replication across one or more regions (currently only available via the API)." +} diff --git a/packages/manager/apps/pci-object-storage/public/translations/container/Messages_es_ES.json b/packages/manager/apps/pci-object-storage/public/translations/container/Messages_es_ES.json new file mode 100644 index 000000000000..e30ab460b2bf --- /dev/null +++ b/packages/manager/apps/pci-object-storage/public/translations/container/Messages_es_ES.json @@ -0,0 +1,49 @@ +{ + "pci_projects_project_storages_containers_container_back_label": "Volver", + "pci_projects_project_storages_containers_container_archive_info_storedObjects": "Archivos: {{ count }}", + "pci_projects_project_storages_containers_container_object_info_storedObjects": "Objetos: {{ count }}", + "pci_projects_project_storages_containers_container_info_storedBytes": "Espacio utilizado: {{ bytes }}", + "pci_projects_project_storages_containers_container_info_publicUrl": "Endpoint", + "pci_projects_project_storages_containers_container_info_publicUrl_help": "Esta información es necesaria para descargar o manipular los objetos a través de la API. Para más información, consulte nuestras guías.", + "pci_projects_project_storages_containers_container_archive_info_staticUrl": "Dirección del servidor para rsync/sftp/scp:", + "pci_projects_project_storages_containers_container_object_info_staticUrl": "Valor del registro CNAME/TXT:", + "pci_projects_project_storages_containers_container_object_info_staticUrl_help": "Utilice el contenedor «Alojamiento estático» en un dominio o subdominio. Modifique la zona DNS añadiendo un registro CNAME con este valor.", + "pci_projects_project_storages_containers_container_archive_info_user": "Nombre de usuario: {{ user }}", + "pci_projects_project_storages_containers_container_archive_info_password": "Contraseña (la concatenación de los siguientes campos):", + "pci_projects_project_storages_containers_container_name_label": "Nombre", + "pci_projects_project_storages_containers_container_lastModified_label": "Última modificación", + "pci_projects_project_storages_containers_container_size_label": "Tamaño", + "pci_projects_project_storages_containers_container_contentType_label": "Tipo", + "pci_projects_project_storages_containers_container_retrievalState_label": "Disponibilidad", + "pci_projects_project_storages_containers_container_retrievalState_unsealed": "Sí", + "pci_projects_project_storages_containers_container_retrievalState_sealed": "Congelado", + "pci_projects_project_storages_containers_container_unseal_label": "Descongelar", + "pci_projects_project_storages_containers_container_download_label": "Descargar", + "pci_projects_project_storages_containers_container_delete_label": "Eliminar", + "pci_projects_project_storages_containers_container_add_archive_label": "Añadir archivos", + "pci_projects_project_storages_containers_container_add_object_label": "Añadir objetos", + "pci_projects_project_storages_containers_container_archive_error_query": "Se ha producido un error al recuperar el contenedor de archivos: {{ message }}.", + "pci_projects_project_storages_containers_container_object_error_query": "Se ha producido un error al recuperar el contenedor de objetos: {{ message }}.", + "pci_projects_project_storages_containers_container_archive_error_download": "Se ha producido un error al descargar el archivo: {{ message }}.", + "pci_projects_project_storages_containers_container_object_error_download": "Se ha producido un error al descargar el objeto: {{ message }}.", + "pci_projects_project_storages_containers_container_archive_error_unseal": "Se ha producido un error al descongelar el archivo: {{ message }}.", + "pci_projects_project_storages_containers_container_archive_success_unseal": "Descongelando el archivo {{archive}}...", + "pci_projects_project_storages_containers_container_add_user_label": "Añadir un usuario a mi objeto", + "pci_projects_project_storages_containers_container_info_id": "ID", + "pci_projects_project_storages_containers_container_documentation_title_rclone": "Object Storage con Rclone", + "pci_projects_project_storages_containers_container_documentation_description_rclone": "Descubra cómo sincronizar el Object Storage de OVHcloud a través de Rclone.", + "pci_projects_project_storages_containers_container_documentation_title_veeam": "Object Storage S3 con Veeam", + "pci_projects_project_storages_containers_container_documentation_description_veeam": "Configure Veeam para utilizar su espacio de almacenamiento S3 Object Storage.", + "pci_projects_project_storages_containers_container_documentation_title_s3-limitation": "Limitaciones técnicas de Object Storage S3", + "pci_projects_project_storages_containers_container_documentation_description_s3-limitation": "Consulte las limitaciones técnicas de la solución S3 Object Storage.", + "pci_projects_project_storages_containers_container_back_button_label": "Mis contenedores", + "pci_projects_project_storages_containers_container_object_info_s3_staticUrl_help": "Exponga sus contenedores y sus objetos en la red configurando los permisos de acceso (por objeto) y proporcionando acceso público. A continuación, podrá acceder a ellos desde la dirección Virtual Hosted-Style.", + "pci_projects_project_storages_containers_container_info_data_encryption_enabled": "Cifrado: SSE-S3", + "pci_projects_project_storages_containers_container_info_data_encryption_disabled": "Cifrado: Ninguno", + "pci_projects_project_storages_containers_container_storage_class_label": "Tipo de almacenamiento", + "pci_projects_project_storages_containers_container_storage_class_STANDARD": "Standard", + "pci_projects_project_storages_containers_container_storage_class_HIGH_PERF": "High Performance", + "pci_projects_project_storages_containers_container_maintenance_message": "Estamos realizando una operación de mantenimiento para fusionar los endpoints S3. No es posible añadir objetos de manera temporal.", + "pci_projects_project_storages_containers_container_region": "Localización: {{ region }}", + "pci_projects_project_storages_containers_container_add_replication_rules_info": "Tenga en cuenta que su bucket no incluye la replicación de sus datos fuera de las instalaciones. Si su caso de uso requiere esta capa adicional de protección, considere la posibilidad de utilizar nuestra replicación asincrónica en una o varias regiones (actualmente disponible solo a través de la API)." +} diff --git a/packages/manager/apps/pci-object-storage/public/translations/container/Messages_fr_CA.json b/packages/manager/apps/pci-object-storage/public/translations/container/Messages_fr_CA.json new file mode 100644 index 000000000000..3fbd1963a731 --- /dev/null +++ b/packages/manager/apps/pci-object-storage/public/translations/container/Messages_fr_CA.json @@ -0,0 +1,49 @@ +{ + "pci_projects_project_storages_containers_container_back_label": "Retour", + "pci_projects_project_storages_containers_container_back_button_label": "Mes conteneurs", + "pci_projects_project_storages_containers_container_archive_info_storedObjects": "Archives : {{ count }}", + "pci_projects_project_storages_containers_container_object_info_storedObjects": "Objets : {{ count }}", + "pci_projects_project_storages_containers_container_info_storedBytes": "Espace utilisé : {{ bytes }}", + "pci_projects_project_storages_containers_container_info_data_encryption_enabled": "Chiffrement : SSE-S3", + "pci_projects_project_storages_containers_container_info_data_encryption_disabled": "Chiffrement : Aucun", + "pci_projects_project_storages_containers_container_info_id": "ID", + "pci_projects_project_storages_containers_container_info_publicUrl": "Endpoint", + "pci_projects_project_storages_containers_container_info_publicUrl_help": "Cette information est nécessaire pour récupérer ou manipuler vos objets via l'API. Rendez-vous dans la section guide pour plus de détails.", + "pci_projects_project_storages_containers_container_archive_info_staticUrl": "Adresse du serveur pour rsync/sftp/scp :", + "pci_projects_project_storages_containers_container_object_info_staticUrl": "Valeur de l'enregistrement CNAME/TXT :", + "pci_projects_project_storages_containers_container_object_info_staticUrl_help": "Utilisez le conteneur \"Hébergement statique\" sur un domaine ou sous-domaine. Modifiez simplement la zone DNS en ajoutant un enregistrement CNAME avec cette valeur.", + "pci_projects_project_storages_containers_container_object_info_s3_staticUrl_help": "Exposez vos conteneurs et vos objets sur le web en paramétrant les droits d'accès (par objet), donnant un accès public. Ils sont ensuite accessibles par l'adresse Virtual Hosted-Style.", + "pci_projects_project_storages_containers_container_archive_info_user": "Nom de l'utilisateur : {{ user }}", + "pci_projects_project_storages_containers_container_archive_info_password": "Mot de passe (la concaténation des champs suivant) :", + "pci_projects_project_storages_containers_container_maintenance_message": "Nous effectuons actuellement une opération de maintenance pour fusionner les points de terminaison S3. L'ajout d'objets est temporairement suspendu.", + "pci_projects_project_storages_containers_container_name_label": "Nom", + "pci_projects_project_storages_containers_container_lastModified_label": "Dernière modification", + "pci_projects_project_storages_containers_container_storage_class_label": "Classe de stockage", + "pci_projects_project_storages_containers_container_storage_class_STANDARD": "Standard", + "pci_projects_project_storages_containers_container_storage_class_HIGH_PERF": "High Performance", + "pci_projects_project_storages_containers_container_size_label": "Taille", + "pci_projects_project_storages_containers_container_contentType_label": "Type", + "pci_projects_project_storages_containers_container_retrievalState_label": "Disponibilité", + "pci_projects_project_storages_containers_container_retrievalState_unsealed": "Oui", + "pci_projects_project_storages_containers_container_retrievalState_sealed": "Gelée", + "pci_projects_project_storages_containers_container_unseal_label": "Dégeler", + "pci_projects_project_storages_containers_container_download_label": "Télécharger", + "pci_projects_project_storages_containers_container_delete_label": "Supprimer", + "pci_projects_project_storages_containers_container_add_archive_label": "Ajouter des archives", + "pci_projects_project_storages_containers_container_add_object_label": "Ajouter des objets", + "pci_projects_project_storages_containers_container_archive_error_query": "Une erreur est survenue lors de la récupération du conteneur d'archive : {{ message }}.", + "pci_projects_project_storages_containers_container_object_error_query": "Une erreur est survenue lors de la récupération du conteneur d'objet : {{ message }}.", + "pci_projects_project_storages_containers_container_archive_error_download": "Une erreur est survenue lors du téléchargement de l'archive : {{ message }}.", + "pci_projects_project_storages_containers_container_object_error_download": "Une erreur est survenue lors du téléchargement de l'objet : {{ message }}.", + "pci_projects_project_storages_containers_container_archive_error_unseal": "Une erreur est survenue lors du dégel de l'archive : {{ message }}.", + "pci_projects_project_storages_containers_container_archive_success_unseal": "Le dégel de l'archive {{archive}} est en cours.", + "pci_projects_project_storages_containers_container_add_user_label": "Ajouter un utilisateur à mon objet", + "pci_projects_project_storages_containers_container_documentation_title_rclone": "L'Object Storage avec rclone", + "pci_projects_project_storages_containers_container_documentation_description_rclone": "Découvrez comment l’Object Storage d’OVH peut être synchronisé via rclone.", + "pci_projects_project_storages_containers_container_documentation_title_veeam": "L'Object Storage S3 avec Veeam", + "pci_projects_project_storages_containers_container_documentation_description_veeam": "Configurez Veeam pour utiliser votre espace de stockage S3 Object Storage.", + "pci_projects_project_storages_containers_container_documentation_title_s3-limitation": "Les limites techniques de l'Object Storage S3", + "pci_projects_project_storages_containers_container_documentation_description_s3-limitation": "Retrouvez ici les limites techniques relatives à l’offre S3 Object Storage", + "pci_projects_project_storages_containers_container_region": "Localisation : {{ region }}", + "pci_projects_project_storages_containers_container_add_replication_rules_info": "Veuillez noter que votre bucket n'inclut pas la réplication hors site de vos données. Si votre cas d'utilisation nécessite cette couche supplémentaire de protection, envisagez d'utiliser notre réplication asynchrone sur une ou plusieurs régions (actuellement disponible uniquement via l'API)." +} diff --git a/packages/manager/apps/pci-object-storage/public/translations/container/Messages_fr_FR.json b/packages/manager/apps/pci-object-storage/public/translations/container/Messages_fr_FR.json new file mode 100644 index 000000000000..3fbd1963a731 --- /dev/null +++ b/packages/manager/apps/pci-object-storage/public/translations/container/Messages_fr_FR.json @@ -0,0 +1,49 @@ +{ + "pci_projects_project_storages_containers_container_back_label": "Retour", + "pci_projects_project_storages_containers_container_back_button_label": "Mes conteneurs", + "pci_projects_project_storages_containers_container_archive_info_storedObjects": "Archives : {{ count }}", + "pci_projects_project_storages_containers_container_object_info_storedObjects": "Objets : {{ count }}", + "pci_projects_project_storages_containers_container_info_storedBytes": "Espace utilisé : {{ bytes }}", + "pci_projects_project_storages_containers_container_info_data_encryption_enabled": "Chiffrement : SSE-S3", + "pci_projects_project_storages_containers_container_info_data_encryption_disabled": "Chiffrement : Aucun", + "pci_projects_project_storages_containers_container_info_id": "ID", + "pci_projects_project_storages_containers_container_info_publicUrl": "Endpoint", + "pci_projects_project_storages_containers_container_info_publicUrl_help": "Cette information est nécessaire pour récupérer ou manipuler vos objets via l'API. Rendez-vous dans la section guide pour plus de détails.", + "pci_projects_project_storages_containers_container_archive_info_staticUrl": "Adresse du serveur pour rsync/sftp/scp :", + "pci_projects_project_storages_containers_container_object_info_staticUrl": "Valeur de l'enregistrement CNAME/TXT :", + "pci_projects_project_storages_containers_container_object_info_staticUrl_help": "Utilisez le conteneur \"Hébergement statique\" sur un domaine ou sous-domaine. Modifiez simplement la zone DNS en ajoutant un enregistrement CNAME avec cette valeur.", + "pci_projects_project_storages_containers_container_object_info_s3_staticUrl_help": "Exposez vos conteneurs et vos objets sur le web en paramétrant les droits d'accès (par objet), donnant un accès public. Ils sont ensuite accessibles par l'adresse Virtual Hosted-Style.", + "pci_projects_project_storages_containers_container_archive_info_user": "Nom de l'utilisateur : {{ user }}", + "pci_projects_project_storages_containers_container_archive_info_password": "Mot de passe (la concaténation des champs suivant) :", + "pci_projects_project_storages_containers_container_maintenance_message": "Nous effectuons actuellement une opération de maintenance pour fusionner les points de terminaison S3. L'ajout d'objets est temporairement suspendu.", + "pci_projects_project_storages_containers_container_name_label": "Nom", + "pci_projects_project_storages_containers_container_lastModified_label": "Dernière modification", + "pci_projects_project_storages_containers_container_storage_class_label": "Classe de stockage", + "pci_projects_project_storages_containers_container_storage_class_STANDARD": "Standard", + "pci_projects_project_storages_containers_container_storage_class_HIGH_PERF": "High Performance", + "pci_projects_project_storages_containers_container_size_label": "Taille", + "pci_projects_project_storages_containers_container_contentType_label": "Type", + "pci_projects_project_storages_containers_container_retrievalState_label": "Disponibilité", + "pci_projects_project_storages_containers_container_retrievalState_unsealed": "Oui", + "pci_projects_project_storages_containers_container_retrievalState_sealed": "Gelée", + "pci_projects_project_storages_containers_container_unseal_label": "Dégeler", + "pci_projects_project_storages_containers_container_download_label": "Télécharger", + "pci_projects_project_storages_containers_container_delete_label": "Supprimer", + "pci_projects_project_storages_containers_container_add_archive_label": "Ajouter des archives", + "pci_projects_project_storages_containers_container_add_object_label": "Ajouter des objets", + "pci_projects_project_storages_containers_container_archive_error_query": "Une erreur est survenue lors de la récupération du conteneur d'archive : {{ message }}.", + "pci_projects_project_storages_containers_container_object_error_query": "Une erreur est survenue lors de la récupération du conteneur d'objet : {{ message }}.", + "pci_projects_project_storages_containers_container_archive_error_download": "Une erreur est survenue lors du téléchargement de l'archive : {{ message }}.", + "pci_projects_project_storages_containers_container_object_error_download": "Une erreur est survenue lors du téléchargement de l'objet : {{ message }}.", + "pci_projects_project_storages_containers_container_archive_error_unseal": "Une erreur est survenue lors du dégel de l'archive : {{ message }}.", + "pci_projects_project_storages_containers_container_archive_success_unseal": "Le dégel de l'archive {{archive}} est en cours.", + "pci_projects_project_storages_containers_container_add_user_label": "Ajouter un utilisateur à mon objet", + "pci_projects_project_storages_containers_container_documentation_title_rclone": "L'Object Storage avec rclone", + "pci_projects_project_storages_containers_container_documentation_description_rclone": "Découvrez comment l’Object Storage d’OVH peut être synchronisé via rclone.", + "pci_projects_project_storages_containers_container_documentation_title_veeam": "L'Object Storage S3 avec Veeam", + "pci_projects_project_storages_containers_container_documentation_description_veeam": "Configurez Veeam pour utiliser votre espace de stockage S3 Object Storage.", + "pci_projects_project_storages_containers_container_documentation_title_s3-limitation": "Les limites techniques de l'Object Storage S3", + "pci_projects_project_storages_containers_container_documentation_description_s3-limitation": "Retrouvez ici les limites techniques relatives à l’offre S3 Object Storage", + "pci_projects_project_storages_containers_container_region": "Localisation : {{ region }}", + "pci_projects_project_storages_containers_container_add_replication_rules_info": "Veuillez noter que votre bucket n'inclut pas la réplication hors site de vos données. Si votre cas d'utilisation nécessite cette couche supplémentaire de protection, envisagez d'utiliser notre réplication asynchrone sur une ou plusieurs régions (actuellement disponible uniquement via l'API)." +} diff --git a/packages/manager/apps/pci-object-storage/public/translations/container/Messages_it_IT.json b/packages/manager/apps/pci-object-storage/public/translations/container/Messages_it_IT.json new file mode 100644 index 000000000000..4ebe153368db --- /dev/null +++ b/packages/manager/apps/pci-object-storage/public/translations/container/Messages_it_IT.json @@ -0,0 +1,49 @@ +{ + "pci_projects_project_storages_containers_container_back_label": "Indietro", + "pci_projects_project_storages_containers_container_archive_info_storedObjects": "Archivi: {{ count }}", + "pci_projects_project_storages_containers_container_object_info_storedObjects": "Oggetti: {{ count }}", + "pci_projects_project_storages_containers_container_info_storedBytes": "Spazio utilizzato: {{ bytes }}", + "pci_projects_project_storages_containers_container_info_publicUrl": "Endpoint", + "pci_projects_project_storages_containers_container_info_publicUrl_help": "Questa informazione è necessaria per recuperare o modificare i tuoi oggetti via API. Per maggiori informazioni, consulta le nostre guide.", + "pci_projects_project_storages_containers_container_archive_info_staticUrl": "Indirizzo del server per rsync/SFTP/SCP:", + "pci_projects_project_storages_containers_container_object_info_staticUrl": "Valore del record CNAME/TXT:", + "pci_projects_project_storages_containers_container_object_info_staticUrl_help": "Utilizza il container \"Hosting statico\" su un dominio o sottodominio. Modifica la zona DNS semplicemente aggiungendo un record CNAME con questo valore.", + "pci_projects_project_storages_containers_container_archive_info_user": "Username: {{ user }}", + "pci_projects_project_storages_containers_container_archive_info_password": "Password (combinazione dei campi seguenti):", + "pci_projects_project_storages_containers_container_name_label": "Nome", + "pci_projects_project_storages_containers_container_lastModified_label": "Ultima modifica", + "pci_projects_project_storages_containers_container_size_label": "Dimensione", + "pci_projects_project_storages_containers_container_contentType_label": "Tipo", + "pci_projects_project_storages_containers_container_retrievalState_label": "Disponibilità", + "pci_projects_project_storages_containers_container_retrievalState_unsealed": "Sì", + "pci_projects_project_storages_containers_container_retrievalState_sealed": "Bloccata", + "pci_projects_project_storages_containers_container_unseal_label": "Sblocca", + "pci_projects_project_storages_containers_container_download_label": "Scarica", + "pci_projects_project_storages_containers_container_delete_label": "Elimina", + "pci_projects_project_storages_containers_container_add_archive_label": "Aggiungi archivi", + "pci_projects_project_storages_containers_container_add_object_label": "Aggiungi oggetti", + "pci_projects_project_storages_containers_container_archive_error_query": "Si è verificato un errore durante il recupero del container di archivi: {{ message }}", + "pci_projects_project_storages_containers_container_object_error_query": "Si è verificato un errore durante il recupero del container di oggetti: {{ message }}", + "pci_projects_project_storages_containers_container_archive_error_download": "Si è verificato un errore durante il download dell'archivio: {{message}}", + "pci_projects_project_storages_containers_container_object_error_download": "Si è verificato un errore durante il download dell'oggetto: {{message}}", + "pci_projects_project_storages_containers_container_archive_error_unseal": "Si è verificato un errore durante l’operazione di sblocco dell'archivio: {{message}}", + "pci_projects_project_storages_containers_container_archive_success_unseal": "Sblocco dell’archivio {{archive}} in corso...", + "pci_projects_project_storages_containers_container_add_user_label": "Aggiungi un utente al tuo oggetto", + "pci_projects_project_storages_containers_container_info_id": "ID", + "pci_projects_project_storages_containers_container_documentation_title_rclone": "Object Storage con Rclone", + "pci_projects_project_storages_containers_container_documentation_description_rclone": "Scopri come sincronizzare l'Object Storage di OVHcloud con Rclone.", + "pci_projects_project_storages_containers_container_documentation_title_veeam": "Object Storage S3 con Veeam", + "pci_projects_project_storages_containers_container_documentation_description_veeam": "Configura Veeam per utilizzare lo spazio di storage S3 Object Storage.", + "pci_projects_project_storages_containers_container_documentation_title_s3-limitation": "Limiti tecnici dell'Object Storage S3", + "pci_projects_project_storages_containers_container_documentation_description_s3-limitation": "Limiti tecnici relativi alla soluzione S3 Object Storage", + "pci_projects_project_storages_containers_container_back_button_label": "I tuoi container", + "pci_projects_project_storages_containers_container_object_info_s3_staticUrl_help": "Per esporre i tuoi container e oggetti sul Web è possibile configurare i permessi (per oggetto) autorizzando l’accesso pubblico. A questo punto, sarà possibile effettuare l’accesso dall'indirizzo Virtual Hosted-Style.", + "pci_projects_project_storages_containers_container_info_data_encryption_enabled": "Crittografia: SSE-S3", + "pci_projects_project_storages_containers_container_info_data_encryption_disabled": "Crittografia: Nessuna", + "pci_projects_project_storages_containers_container_storage_class_label": "Classe di storage", + "pci_projects_project_storages_containers_container_storage_class_STANDARD": "Standard", + "pci_projects_project_storages_containers_container_storage_class_HIGH_PERF": "High Performance", + "pci_projects_project_storages_containers_container_maintenance_message": "Stiamo effettuando un'operazione di manutenzione per unificare gli endpoint S3. L'aggiunta di oggetti è temporaneamente sospesa.", + "pci_projects_project_storages_containers_container_region": "Localizzazione: {{ region }}", + "pci_projects_project_storages_containers_container_add_replication_rules_info": "Ti ricordiamo che il tuo bucket non include la replica offsite dei tuoi dati. Se il tuo caso d’uso richiede questo livello aggiuntivo di protezione, considera di utilizzare la nostra replica asincrona su una o più Region (attualmente disponibile solo via API)." +} diff --git a/packages/manager/apps/pci-object-storage/public/translations/container/Messages_pl_PL.json b/packages/manager/apps/pci-object-storage/public/translations/container/Messages_pl_PL.json new file mode 100644 index 000000000000..f6590e033b2f --- /dev/null +++ b/packages/manager/apps/pci-object-storage/public/translations/container/Messages_pl_PL.json @@ -0,0 +1,49 @@ +{ + "pci_projects_project_storages_containers_container_back_label": "Powrót", + "pci_projects_project_storages_containers_container_archive_info_storedObjects": "Archiwa: {{ count }}", + "pci_projects_project_storages_containers_container_object_info_storedObjects": "Obiekty: {{ count }}", + "pci_projects_project_storages_containers_container_info_storedBytes": "Wykorzystywana przestrzeń : {{ bytes }}", + "pci_projects_project_storages_containers_container_info_publicUrl": "EndPoint", + "pci_projects_project_storages_containers_container_info_publicUrl_help": "Ta informacja jest niezbędna do pobierania i zarządzania obiektami przez API. W przewodnikach OVH znajdziesz więcej informacji.", + "pci_projects_project_storages_containers_container_archive_info_staticUrl": "Adres serwera dla rsync/sftp/scp", + "pci_projects_project_storages_containers_container_object_info_staticUrl": "Wartość rekordu CNAME/TXT", + "pci_projects_project_storages_containers_container_object_info_staticUrl_help": "Użyj kontenera \"Hosting statyczny\" dla domeny lub subdomeny. Zmień strefę DNS, dodając rekord CNAME z tą wartością.", + "pci_projects_project_storages_containers_container_archive_info_user": "Nazwa użytkownika: {{ user }}", + "pci_projects_project_storages_containers_container_archive_info_password": "Hasło (powiązanie następujących pól) :", + "pci_projects_project_storages_containers_container_name_label": "Nazwa", + "pci_projects_project_storages_containers_container_lastModified_label": "Ostatnia zmiana ", + "pci_projects_project_storages_containers_container_size_label": "Rozmiar", + "pci_projects_project_storages_containers_container_contentType_label": "Typ", + "pci_projects_project_storages_containers_container_retrievalState_label": "Dostępność", + "pci_projects_project_storages_containers_container_retrievalState_unsealed": "Tak", + "pci_projects_project_storages_containers_container_retrievalState_sealed": "Zablokowany", + "pci_projects_project_storages_containers_container_unseal_label": "Odblokuj", + "pci_projects_project_storages_containers_container_download_label": "Pobierz", + "pci_projects_project_storages_containers_container_delete_label": "Usuń", + "pci_projects_project_storages_containers_container_add_archive_label": "Dodaj archiwa", + "pci_projects_project_storages_containers_container_add_object_label": "Dodaj obiekty", + "pci_projects_project_storages_containers_container_archive_error_query": "Wystąpił błąd podczas pobierania kontenera archiwum: {{message}}.", + "pci_projects_project_storages_containers_container_object_error_query": "Wystąpił błąd podczas pobierania kontenera obiektu: {{message}}.", + "pci_projects_project_storages_containers_container_archive_error_download": "Wystąpił błąd podczas pobierania archiwum: {{message}}.", + "pci_projects_project_storages_containers_container_object_error_download": "Wystąpił błąd podczas pobierania obiektu: {{message}}.", + "pci_projects_project_storages_containers_container_archive_error_unseal": "Wystąpił błąd podczas odblokowywania archiwum:{{message}}.", + "pci_projects_project_storages_containers_container_archive_success_unseal": "Trwa odblokowywanie archiwum {{archive}}...", + "pci_projects_project_storages_containers_container_add_user_label": "Dodaj użytkownika do obiektu", + "pci_projects_project_storages_containers_container_info_id": "ID", + "pci_projects_project_storages_containers_container_documentation_title_rclone": "Object Storage z rclone", + "pci_projects_project_storages_containers_container_documentation_description_rclone": "Dowiedz się, jak można synchronizować Object Storage za pomocą rclone.", + "pci_projects_project_storages_containers_container_documentation_title_veeam": "Object Storage S3 z Veeam", + "pci_projects_project_storages_containers_container_documentation_description_veeam": "Skonfiguruj Veeam, aby korzystać z przestrzeni dyskowej S3 Object Storage.", + "pci_projects_project_storages_containers_container_documentation_title_s3-limitation": "Ograniczenia techniczne Object Storage S3", + "pci_projects_project_storages_containers_container_documentation_description_s3-limitation": "Zapoznaj się z technicznymi ograniczeniami oferty S3 Object Storage", + "pci_projects_project_storages_containers_container_back_button_label": "Twoje kontenery", + "pci_projects_project_storages_containers_container_object_info_s3_staticUrl_help": "Udostępniaj kontenery i obiekty w sieci. Ustaw uprawnienia dostępu (dla każdego obiektu) i zapewnij dostęp publiczny. Kontenery i obiekty będą następnie dostępne za pośrednictwem adresu Virtual Hosted-Style.", + "pci_projects_project_storages_containers_container_info_data_encryption_enabled": "Szyfrowanie: SSE-S3", + "pci_projects_project_storages_containers_container_info_data_encryption_disabled": "Szyfrowanie: Brak", + "pci_projects_project_storages_containers_container_storage_class_label": "Klasa przestrzeni dyskowej", + "pci_projects_project_storages_containers_container_storage_class_STANDARD": "Standard", + "pci_projects_project_storages_containers_container_storage_class_HIGH_PERF": "High Performance", + "pci_projects_project_storages_containers_container_maintenance_message": "Aktualnie prowadzimy prace konserwacyjne mające na celu połączenie punktów końcowych S3. Dodawanie obiektów jest tymczasowo zawieszone.", + "pci_projects_project_storages_containers_container_region": "Lokalizacja: {{region}}", + "pci_projects_project_storages_containers_container_add_replication_rules_info": "Pamiętaj, że Twój bucket nie obejmuje replikacji Twoich danych poza lokalizacją. Jeśli Twój przypadek zastosowania wymaga tej dodatkowej warstwy ochrony, rozważ użycie replikacji asynchronicznej w jednym lub kilku regionach (aktualnie dostępnej tylko przez API)." +} diff --git a/packages/manager/apps/pci-object-storage/public/translations/container/Messages_pt_PT.json b/packages/manager/apps/pci-object-storage/public/translations/container/Messages_pt_PT.json new file mode 100644 index 000000000000..418851344007 --- /dev/null +++ b/packages/manager/apps/pci-object-storage/public/translations/container/Messages_pt_PT.json @@ -0,0 +1,49 @@ +{ + "pci_projects_project_storages_containers_container_back_label": "Retroceder", + "pci_projects_project_storages_containers_container_archive_info_storedObjects": "Arquivos: {{ count }}", + "pci_projects_project_storages_containers_container_object_info_storedObjects": "Objetos: {{ count }}", + "pci_projects_project_storages_containers_container_info_storedBytes": "Espaço utilizado: {{ bytes }}", + "pci_projects_project_storages_containers_container_info_publicUrl": "Endpoint", + "pci_projects_project_storages_containers_container_info_publicUrl_help": "Esta informação é necessária para carregar ou utilizar os seus objetos através da API. Para mais informações, consulte os manuais da OVH.", + "pci_projects_project_storages_containers_container_archive_info_staticUrl": "Endereço do servidor para rsync/sftp/scp:", + "pci_projects_project_storages_containers_container_object_info_staticUrl": "Valor do registo CNAME/TXT:", + "pci_projects_project_storages_containers_container_object_info_staticUrl_help": "Utilize o container \"Alojamento estático\" num domínio ou subdomínio. Altere a zona DNS adicionando um registo CNAME com este valor.", + "pci_projects_project_storages_containers_container_archive_info_user": "Nome de utilizador: {{ user }}", + "pci_projects_project_storages_containers_container_archive_info_password": "Palavra-passe (a concatenação dos seguintes campos):", + "pci_projects_project_storages_containers_container_name_label": "Nome", + "pci_projects_project_storages_containers_container_lastModified_label": "Última alteração", + "pci_projects_project_storages_containers_container_size_label": "Tamanho", + "pci_projects_project_storages_containers_container_contentType_label": "Tipo", + "pci_projects_project_storages_containers_container_retrievalState_label": "Disponibilidade", + "pci_projects_project_storages_containers_container_retrievalState_unsealed": "Sim", + "pci_projects_project_storages_containers_container_retrievalState_sealed": "Congelada", + "pci_projects_project_storages_containers_container_unseal_label": "Descongelar", + "pci_projects_project_storages_containers_container_download_label": "Transferir", + "pci_projects_project_storages_containers_container_delete_label": "Eliminar", + "pci_projects_project_storages_containers_container_add_archive_label": "Adicionar arquivos", + "pci_projects_project_storages_containers_container_add_object_label": "Adicionar objetos", + "pci_projects_project_storages_containers_container_archive_error_query": "Ocorreu um erro ao recuperar o container de arquivos: {{ message }}.", + "pci_projects_project_storages_containers_container_object_error_query": "Ocorreu um erro ao recuperar o container de objetos: {{ message }}.", + "pci_projects_project_storages_containers_container_archive_error_download": "Ocorreu um erro durante a transferência do arquivo: {{ message }}.", + "pci_projects_project_storages_containers_container_object_error_download": "Ocorreu um erro durante a transferência do objeto: {{ message }}.", + "pci_projects_project_storages_containers_container_archive_error_unseal": "Ocorreu um erro durante o descongelamento do arquivo: {{ message }}.", + "pci_projects_project_storages_containers_container_archive_success_unseal": "O descongelamento do arquivo {{archive}} está em curso.", + "pci_projects_project_storages_containers_container_add_user_label": "Adicionar um utilizador ao meu objeto", + "pci_projects_project_storages_containers_container_info_id": "ID", + "pci_projects_project_storages_containers_container_documentation_title_rclone": "Object Storage com rclone", + "pci_projects_project_storages_containers_container_documentation_description_rclone": "Saiba como o Object Storage da OVHcloud pode ser sincronizado através de rclone.", + "pci_projects_project_storages_containers_container_documentation_title_veeam": "Object Storage S3 com Veeam", + "pci_projects_project_storages_containers_container_documentation_description_veeam": "Configure o Veeam para utilizar o seu espaço de armazenamento S3 Object Storage.", + "pci_projects_project_storages_containers_container_documentation_title_s3-limitation": "Os limites técnicos do Object Storage S3", + "pci_projects_project_storages_containers_container_documentation_description_s3-limitation": "Descubra aqui os limites técnicos relativos à oferta S3 Object Storage", + "pci_projects_project_storages_containers_container_back_button_label": "Os meus containers", + "pci_projects_project_storages_containers_container_object_info_s3_staticUrl_help": "Exponha os seus containers e objetos na Internet, configurando os direitos de acesso (por objeto) e dando acesso público. Poderão ser acedidos através do endereço Virtual Hosted-Style.", + "pci_projects_project_storages_containers_container_info_data_encryption_enabled": "Encriptação: SSE-S3", + "pci_projects_project_storages_containers_container_info_data_encryption_disabled": "Encriptação: Nenhum", + "pci_projects_project_storages_containers_container_storage_class_label": "Classe de armazenamento", + "pci_projects_project_storages_containers_container_storage_class_STANDARD": "Standard", + "pci_projects_project_storages_containers_container_storage_class_HIGH_PERF": "High Performance", + "pci_projects_project_storages_containers_container_maintenance_message": "Estamos a efetuar uma operação de manutenção para fundir os pontos de terminação S3. A adição de objetos está temporariamente suspensa.", + "pci_projects_project_storages_containers_container_region": "Localização: {{ region }}", + "pci_projects_project_storages_containers_container_add_replication_rules_info": "Tenha em conta que o seu bucket não inclui a replicação fora das instalações dos seus dados. Se o seu caso de utilização necessitar desta camada adicional de proteção, considere a utilização da nossa replicação assíncrona numa ou várias regiões (atualmente apenas disponível através da API)." +} diff --git a/packages/manager/apps/pci-object-storage/public/translations/container/data-encryption/Messages_de_DE.json b/packages/manager/apps/pci-object-storage/public/translations/container/data-encryption/Messages_de_DE.json new file mode 100644 index 000000000000..6b6bd1970e15 --- /dev/null +++ b/packages/manager/apps/pci-object-storage/public/translations/container/data-encryption/Messages_de_DE.json @@ -0,0 +1,7 @@ +{ + "pci_projects_project_storages_containers_data_encryption_title": "Datenverschlüsselung", + "pci_projects_project_storages_containers_data_encryption_description": "Die in diesen Container geladenen Daten werden von OVHcloud on the fly verschlüsselt.", + "pci_projects_project_storages_containers_data_encryption_plaintext": "Keine Verschlüsselung", + "pci_projects_project_storages_containers_data_encryption_aes256": "Serverseitige Verschlüsselung mit OVHcloud Managed Keys (SSE-S3)", + "pci_projects_project_storages_containers_data_encryption_aes256_tooltip": "Die OVHcloud Managed Keys werden in Ihrem Namen von einem integrierten OVHcloud Dienst mit dem verstärkten KMS von OVHcloud verwaltet und verwendet." +} diff --git a/packages/manager/apps/pci-object-storage/public/translations/container/data-encryption/Messages_en_GB.json b/packages/manager/apps/pci-object-storage/public/translations/container/data-encryption/Messages_en_GB.json new file mode 100644 index 000000000000..9ab285857320 --- /dev/null +++ b/packages/manager/apps/pci-object-storage/public/translations/container/data-encryption/Messages_en_GB.json @@ -0,0 +1,7 @@ +{ + "pci_projects_project_storages_containers_data_encryption_title": "Encrypt your data", + "pci_projects_project_storages_containers_data_encryption_description": "OVHcloud encrypts the data as it flows into the container.", + "pci_projects_project_storages_containers_data_encryption_plaintext": "No encryption", + "pci_projects_project_storages_containers_data_encryption_aes256": "Server-side encryption with OVHcloud Managed Keys (SSE-S3)", + "pci_projects_project_storages_containers_data_encryption_aes256_tooltip": "OVHcloud Managed Keys are handled and used on your behalf via OVHcloud’s secure KMS-integrated service." +} diff --git a/packages/manager/apps/pci-object-storage/public/translations/container/data-encryption/Messages_es_ES.json b/packages/manager/apps/pci-object-storage/public/translations/container/data-encryption/Messages_es_ES.json new file mode 100644 index 000000000000..1b9899e96bab --- /dev/null +++ b/packages/manager/apps/pci-object-storage/public/translations/container/data-encryption/Messages_es_ES.json @@ -0,0 +1,7 @@ +{ + "pci_projects_project_storages_containers_data_encryption_title": "Cifre sus datos", + "pci_projects_project_storages_containers_data_encryption_description": "Los datos introducidos en este contenedor son cifrados de inmediato por OVHcloud.", + "pci_projects_project_storages_containers_data_encryption_plaintext": "Sin cifrado", + "pci_projects_project_storages_containers_data_encryption_aes256": "Cifrado del lado del servidor con OVHcloud Managed Keys (SSE-S3)", + "pci_projects_project_storages_containers_data_encryption_aes256_tooltip": "Las OVHcloud Managed Keys son gestionadas y utilizadas en su nombre por un servicio de OVHcloud integrado con el KMS reforzado de OVHcloud" +} diff --git a/packages/manager/apps/pci-object-storage/public/translations/container/data-encryption/Messages_fr_CA.json b/packages/manager/apps/pci-object-storage/public/translations/container/data-encryption/Messages_fr_CA.json new file mode 100644 index 000000000000..253395dc71a8 --- /dev/null +++ b/packages/manager/apps/pci-object-storage/public/translations/container/data-encryption/Messages_fr_CA.json @@ -0,0 +1,7 @@ +{ + "pci_projects_project_storages_containers_data_encryption_title": "Chiffrez vos données", + "pci_projects_project_storages_containers_data_encryption_description": "Les données déversées dans ce conteneur sont chiffrées à la volée par OVHcloud.", + "pci_projects_project_storages_containers_data_encryption_plaintext": "Pas de chiffrement", + "pci_projects_project_storages_containers_data_encryption_aes256": "Chiffrement côté serveur avec des OVHcloud Managed Keys (SSE-S3)", + "pci_projects_project_storages_containers_data_encryption_aes256_tooltip": "Les OVHcloud Managed Keys sont gérées et utilisées en votre nom par un service OVHcloud intégré avec le KMS renforcé d'OVHcloud" +} diff --git a/packages/manager/apps/pci-object-storage/public/translations/container/data-encryption/Messages_fr_FR.json b/packages/manager/apps/pci-object-storage/public/translations/container/data-encryption/Messages_fr_FR.json new file mode 100644 index 000000000000..253395dc71a8 --- /dev/null +++ b/packages/manager/apps/pci-object-storage/public/translations/container/data-encryption/Messages_fr_FR.json @@ -0,0 +1,7 @@ +{ + "pci_projects_project_storages_containers_data_encryption_title": "Chiffrez vos données", + "pci_projects_project_storages_containers_data_encryption_description": "Les données déversées dans ce conteneur sont chiffrées à la volée par OVHcloud.", + "pci_projects_project_storages_containers_data_encryption_plaintext": "Pas de chiffrement", + "pci_projects_project_storages_containers_data_encryption_aes256": "Chiffrement côté serveur avec des OVHcloud Managed Keys (SSE-S3)", + "pci_projects_project_storages_containers_data_encryption_aes256_tooltip": "Les OVHcloud Managed Keys sont gérées et utilisées en votre nom par un service OVHcloud intégré avec le KMS renforcé d'OVHcloud" +} diff --git a/packages/manager/apps/pci-object-storage/public/translations/container/data-encryption/Messages_it_IT.json b/packages/manager/apps/pci-object-storage/public/translations/container/data-encryption/Messages_it_IT.json new file mode 100644 index 000000000000..99cd5014b7e2 --- /dev/null +++ b/packages/manager/apps/pci-object-storage/public/translations/container/data-encryption/Messages_it_IT.json @@ -0,0 +1,7 @@ +{ + "pci_projects_project_storages_containers_data_encryption_title": "Cifra i tuoi dati", + "pci_projects_project_storages_containers_data_encryption_description": "I dati inseriti in questo container sono cifrati immediatamente da OVHcloud.", + "pci_projects_project_storages_containers_data_encryption_plaintext": "Senza crittografia", + "pci_projects_project_storages_containers_data_encryption_aes256": "Crittografia lato server con OVHcloud Managed Keys (SSE-S3)", + "pci_projects_project_storages_containers_data_encryption_aes256_tooltip": "Le OVHcloud Managed Keys sono gestite e utilizzate a tuo nome da un servizio OVHcloud integrato con il KMS rafforzato di OVHcloud" +} diff --git a/packages/manager/apps/pci-object-storage/public/translations/container/data-encryption/Messages_pl_PL.json b/packages/manager/apps/pci-object-storage/public/translations/container/data-encryption/Messages_pl_PL.json new file mode 100644 index 000000000000..6f479b9a1be2 --- /dev/null +++ b/packages/manager/apps/pci-object-storage/public/translations/container/data-encryption/Messages_pl_PL.json @@ -0,0 +1,7 @@ +{ + "pci_projects_project_storages_containers_data_encryption_title": "Szyfruj dane", + "pci_projects_project_storages_containers_data_encryption_description": "Dane przesyłane do tego kontenera są szyfrowane w locie przez OVHcloud.", + "pci_projects_project_storages_containers_data_encryption_plaintext": "Bez szyfrowania", + "pci_projects_project_storages_containers_data_encryption_aes256": "Szyfrowanie po stronie serwera za pomocą OVHcloud Managed Keys (SSE-S3)", + "pci_projects_project_storages_containers_data_encryption_aes256_tooltip": "Klucze OVHcloud Managed Keys są zarządzane i używane w Twoim imieniu przez usługę OVHcloud zintegrowaną z ulepszonym KMS od OVHcloud." +} diff --git a/packages/manager/apps/pci-object-storage/public/translations/container/data-encryption/Messages_pt_PT.json b/packages/manager/apps/pci-object-storage/public/translations/container/data-encryption/Messages_pt_PT.json new file mode 100644 index 000000000000..e18cdbcdd958 --- /dev/null +++ b/packages/manager/apps/pci-object-storage/public/translations/container/data-encryption/Messages_pt_PT.json @@ -0,0 +1,7 @@ +{ + "pci_projects_project_storages_containers_data_encryption_title": "Encripte os seus dados", + "pci_projects_project_storages_containers_data_encryption_description": "Os dados introduzidos neste container são encriptados \"on demand\" pela OVHcloud.", + "pci_projects_project_storages_containers_data_encryption_plaintext": "Sem encriptação", + "pci_projects_project_storages_containers_data_encryption_aes256": "Encriptação do servidor com os OVHcloud Managed Keys (SSE-S3)", + "pci_projects_project_storages_containers_data_encryption_aes256_tooltip": "Os OVHcloud Managed Keys são geridos e utilizados em seu nome por um serviço OVHcloud integrado com o KMS reforçado da OVHcloud" +} diff --git a/packages/manager/apps/pci-object-storage/public/translations/storages/add/Messages_de_DE.json b/packages/manager/apps/pci-object-storage/public/translations/storages/add/Messages_de_DE.json new file mode 100644 index 000000000000..0aea1dd07488 --- /dev/null +++ b/packages/manager/apps/pci-object-storage/public/translations/storages/add/Messages_de_DE.json @@ -0,0 +1,59 @@ +{ + "pci_projects_project_storages_containers_add_title": "Objektcontainer erstellen", + "pci_projects_project_storages_containers_add_description": "Entwickeln Sie Ihre S3/Swift-APIs mit unserer Object Storage Lösung: eine einfache Lösung für die Verwaltung Ihrer Daten.", + "pci_projects_project_storages_containers_add_description_link": "Die Preise einsehen", + "pci_projects_project_storages_containers_add_archive_title": "Einen Archivcontainer erstellen", + "pci_projects_project_storages_containers_add_offer_title": "Wählen Sie Ihr Angebot", + "pci_projects_project_storages_containers_add_offer_storage": "Swift-API", + "pci_projects_project_storages_containers_add_offer_storage-s3-standard": "S3-API", + "pci_projects_project_storages_containers_add_offer_storage_description": "Grundlegende Speicherlösung ohne besondere Leistungsanforderungen. Hierbei handelt es sich um den nativen Objektspeicher von OpenStack mit den Swift-APIs.", + "pci_projects_project_storages_containers_add_offer_storage-s3-standard_description": "Dies ist die ideale Speicherlösung für große Datenmengen zum Bestpreis. Mit dieser Lösung ist eine breite Palette von S3-APIs verfügbar.", + "pci_projects_project_storages_containers_add_offer_storage-s3-standard_label": "Neu", + "pci_projects_project_storages_containers_add_region_title": "Standort auswählen", + "pci_projects_project_storages_containers_add_type_title": "Wählen Sie einen Container-Typ aus", + "pci_projects_project_storages_containers_add_create_or_linked_user_title": "Nutzer zuweisen", + "pci_projects_project_storages_containers_add_create_or_linked_user_success_field_secret_key": "Ihr geheimer S3-Schlüssel:", + "pci_projects_project_storages_containers_add_create_or_linked_user_description": "Sie können einem Ihrer vorkonfigurierten OpenStack-User mit der Rolle „Administrator“ oder „Object Storage Operator“ Zugriff auf den Container gewähren oder einen neuen User erstellen.", + "pci_projects_project_storages_containers_add_type_static_label": "Statisches Hosting", + "pci_projects_project_storages_containers_add_type_static_description": "Schneller und performanter Zugriff auf Ihre Webseiten. Verbinden Sie Ihre Domains und legen Sie Dateien ab.", + "pci_projects_project_storages_containers_add_type_public_label": "Öffentlich", + "pci_projects_project_storages_containers_add_type_public_description": "Multimedia, Binärdateien, E-Commerce. Speichern Sie eine unbegrenzte Anzahl an Daten.", + "pci_projects_project_storages_containers_add_type_private_label": "Privat", + "pci_projects_project_storages_containers_add_type_private_description": "Abrechnung, rechtliche Informationen, Logs. Archivieren Sie Daten ganz einfach und nach Bedarf.", + "pci_projects_project_storages_containers_add_name_title": "Name des Containers", + "pci_projects_project_storages_containers_add_pattern_help_storage-s3": "Der Name des Containers muss aus 3 bis 63 Zeichen bestehen und mit Zahlen oder Kleinbuchstaben beginnen und enden, also von a bis z und 0 bis 9. Zulässig sind die Satzzeichen „.“ und „-“.", + "pci_projects_project_storages_containers_add_submit_title": "Bestätigung", + "pci_projects_project_storages_containers_add_submit_label": "Container hinzufügen", + "pci_projects_project_storages_containers_add_cancel_label": "Abbrechen", + "pci_projects_project_storages_containers_add_save_form": "Container wird erstellt", + "pci_projects_project_storages_containers_add_success_message": "Der Container {{ container }} wurde hinzugefügt.", + "pci_projects_project_storages_containers_add_success_message_with_user_creation": "Der Container {{container}} wurde erfolgreich erstellt. Der S3-Nutzer {{ userName }} ist Administrator dieses Containers.", + "pci_projects_project_storages_containers_add_error_post": "Beim Hinzufügen des Containers {{ container }} ist ein Fehler aufgetreten: {{ message }}.", + "pci_projects_project_storages_containers_add_type_price": "{{ price }} ohne MWSt./Monat/GB", + "pci_projects_project_storages_containers_add_offer_storage-s3-standard_recommanded": "Empfohlen", + "pci_projects_project_storages_containers_deployment_mode_title": "Bereitstellungsmodus auswählen", + "pci_projects_project_storages_containers_add_deployment_mode_region-3-az": "3-AZ Regionen", + "pci_projects_project_storages_containers_add_deployment_mode_region": "1-AZ Regionen", + "pci_projects_project_storages_containers_add_deployment_mode_region-3-az_description": "Bereitstellung mit hoher Resilienz/Hochverfügbarkeit für kritische Anwendungen in 3 Verfügbarkeitszonen.", + "pci_projects_project_storages_containers_add_deployment_mode_region_description": "Resiliente und kostengünstige Bereitstellung in 1 Availability Zone.", + "pci_projects_project_storages_containers_add_deployment_mode_region-3-az_label": "3-AZ", + "pci_projects_project_storages_containers_add_deployment_mode_region_label": "1-AZ", + "pci_projects_project_storages_containers_add_deployment_mode_sub_title": "Wählen Sie die optimale Konfiguration für Ihre Use Cases aus, um Verfügbarkeit, Resilienz und eine angemessene Latenz für Ihre Daten zu gewährleisten.", + "pci_projects_project_storages_containers_add_deployment_mode_sub_title_link": "Mehr erfahren", + "pci_projects_project_storages_containers_add_add_region_success": "Der Speicherort {{ code }} wurde Ihrem Public-Cloud-Projekt hinzugefügt.", + "pci_projects_project_storages_containers_add_add_region_error": "Beim Hinzufügen des Standorts ist ein Fehler aufgetreten: {{message}}", + "pci_projects_project_storages_containers_add_add_region_activate": "Der ausgewählte Speicherort ist nicht aktiviert. Klicken Sie auf „Weiter“, um ihn zu Ihrem Public-Cloud-Projekt hinzuzufügen und die Erstellung Ihres Containers fortzusetzen.", + "pci_projects_project_storages_containers_add_deployment_mode_soon": "Bald verfügbar", + "pci_projects_project_storages_containers_add_offers_estimated_price": "Ab {{price}} inkl. MwSt./Monat/TB", + "pci_projects_project_storages_containers_add_deployment_mode_price": "{{price}} ohne MwSt./Monat/TB*", + "pci_projects_project_storages_containers_add_deployment_mode_price_explanation": "* Der angezeigte Preis entspricht dem öffentlichen Preis von 1 TB Storage für 30 Tage. Für mehr Informationen ", + "pci_projects_project_storages_containers_add_deployment_mode_price_explanation_link": "die Seite mit den Preisen zurate ziehen.", + "pci_projects_project_storages_containers_add_deployment_mode_localzone": "Local Zones", + "pci_projects_project_storages_containers_add_deployment_mode_localzone_description": "Bereitstellung Ihrer Anwendungen nah an Ihren Benutzern bei geringer Latenz und geringem Datenspeicherbedarf.", + "pci_projects_project_storages_containers_add_deployment_mode_localzone_label": "Local Zone", + "pci_projects_project_storages_containers_add_deployment_mode_flipping_region-3-az": "3-AZ Regionen", + "pci_projects_project_storages_containers_add_deployment_mode_flipping_region": "Regionen", + "pci_projects_project_storages_containers_add_deployment_mode_flipping_localzone": "Local Zones", + "pci_projects_project_storages_containers_add_replication_rules_info": "Herzlichen Glückwunsch, Ihr Bucket ist fast einsatzbereit mit integrierter Resilienz, um maximale Betriebszeit zu gewährleisten. Bitte beachten Sie, dass dies keine externe Replikation Ihrer Daten umfasst. Wenn Ihr Anwendungsfall diese zusätzliche Schutzebene erfordert, erwägen Sie die Verwendung unserer asynchronen Replikation in einer oder mehreren Regionen (nur über die APIs verfügbar). ", + "pci_projects_project_storages_containers_add_replication_rules_info_link": "Um mehr zu erfahren und zu beginnen." +} diff --git a/packages/manager/apps/pci-object-storage/public/translations/storages/add/Messages_en_GB.json b/packages/manager/apps/pci-object-storage/public/translations/storages/add/Messages_en_GB.json new file mode 100644 index 000000000000..5678b1059616 --- /dev/null +++ b/packages/manager/apps/pci-object-storage/public/translations/storages/add/Messages_en_GB.json @@ -0,0 +1,59 @@ +{ + "pci_projects_project_storages_containers_add_title": "Create an object container ", + "pci_projects_project_storages_containers_add_description": "Develop your S3/Swift APIs with our Object Storage solution — a simple solution for managing your data.", + "pci_projects_project_storages_containers_add_description_link": "View prices", + "pci_projects_project_storages_containers_add_archive_title": "Create an archive container", + "pci_projects_project_storages_containers_add_offer_title": "Select your solution", + "pci_projects_project_storages_containers_add_offer_storage": "Swift API", + "pci_projects_project_storages_containers_add_offer_storage-s3-standard": "S3 API", + "pci_projects_project_storages_containers_add_offer_storage_description": "A basic storage solution with no specific requirements for performance. This is the OpenStack native object storage, with Swift APIs.", + "pci_projects_project_storages_containers_add_offer_storage-s3-standard_description": "The perfect storage solution for high volumes of data at the best price. A wide range of S3 APIs are available with this solution.", + "pci_projects_project_storages_containers_add_offer_storage-s3-standard_label": "New", + "pci_projects_project_storages_containers_add_region_title": "Select a region", + "pci_projects_project_storages_containers_add_type_title": "Select a type of container", + "pci_projects_project_storages_containers_add_create_or_linked_user_title": "Link a user", + "pci_projects_project_storages_containers_add_create_or_linked_user_success_field_secret_key": "Your S3 secret key:", + "pci_projects_project_storages_containers_add_create_or_linked_user_description": "There are two ways to grant access to the container: assign an existing OpenStack user with “Administrator” or “Object Storage Operator” role, or create a new user.", + "pci_projects_project_storages_containers_add_type_static_label": "Static hosting", + "pci_projects_project_storages_containers_add_type_static_description": "Quick access and high performance. Link your domains and transfer your files.", + "pci_projects_project_storages_containers_add_type_public_label": "Public", + "pci_projects_project_storages_containers_add_type_public_description": "Multimedia, binaries, e-commerce. Store an enormous amount of data.", + "pci_projects_project_storages_containers_add_type_private_label": "Private", + "pci_projects_project_storages_containers_add_type_private_description": "Billing, legal information, logs. Archive it simply, in a way that suits you.", + "pci_projects_project_storages_containers_add_name_title": "Container name", + "pci_projects_project_storages_containers_add_pattern_help_storage-s3": "The container name must be between 3 and 63 characters, must start and end with lower-case alphanumeric characters (a to z and 0 to 9), and may include the following punctuation marks: ‘.’ and ‘-’.", + "pci_projects_project_storages_containers_add_submit_title": "Confirmation", + "pci_projects_project_storages_containers_add_submit_label": "Create the container", + "pci_projects_project_storages_containers_add_cancel_label": "Cancel", + "pci_projects_project_storages_containers_add_save_form": "Creating container..", + "pci_projects_project_storages_containers_add_success_message": "The {{container}} container has been added. ", + "pci_projects_project_storages_containers_add_success_message_with_user_creation": "The {{container}} container has been created. The S3 user {{userName}} is the administrator of this container.", + "pci_projects_project_storages_containers_add_error_post": "There was an error when adding the {{ container }} container: {{ message }}.", + "pci_projects_project_storages_containers_add_type_price": "{{ price }} ex. VAT/month/GB", + "pci_projects_project_storages_containers_add_offer_storage-s3-standard_recommanded": "Recommended", + "pci_projects_project_storages_containers_deployment_mode_title": "Select a deployment mode", + "pci_projects_project_storages_containers_add_deployment_mode_region-3-az": "3-AZ Regions", + "pci_projects_project_storages_containers_add_deployment_mode_region": "1-AZ Regions", + "pci_projects_project_storages_containers_add_deployment_mode_region-3-az_description": "High-resilience/high-availability deployment for your critical applications across 3 availability zones.", + "pci_projects_project_storages_containers_add_deployment_mode_region_description": "Resilient and low cost deployment in 1 availability zone.", + "pci_projects_project_storages_containers_add_deployment_mode_region-3-az_label": "3-AZ", + "pci_projects_project_storages_containers_add_deployment_mode_region_label": "1-AZ", + "pci_projects_project_storages_containers_add_deployment_mode_sub_title": "Pick the optimal configuration to ensure your data is always accessible, reliable, and has the right latency based on your use cases.", + "pci_projects_project_storages_containers_add_deployment_mode_sub_title_link": "Find out more", + "pci_projects_project_storages_containers_add_add_region_success": "The {{ code }} storage location has been added to your Public Cloud project.", + "pci_projects_project_storages_containers_add_add_region_error": "An error has occurred adding the location: {{message}}", + "pci_projects_project_storages_containers_add_add_region_activate": "The selected storage location is not enabled. Click ‘Next’ to add it to your Public Cloud project and continue creating your container.", + "pci_projects_project_storages_containers_add_deployment_mode_soon": "Coming soon", + "pci_projects_project_storages_containers_add_offers_estimated_price": "From {{price}} ex. VAT/month/TB", + "pci_projects_project_storages_containers_add_deployment_mode_price": "{{price}} ex. VAT/month/TB*", + "pci_projects_project_storages_containers_add_deployment_mode_price_explanation": "*The price displayed is the advertised price of 1 TB of storage for 30 days. For more information, ", + "pci_projects_project_storages_containers_add_deployment_mode_price_explanation_link": "See the prices page.", + "pci_projects_project_storages_containers_add_deployment_mode_localzone": "Local Zones", + "pci_projects_project_storages_containers_add_deployment_mode_localzone_description": "Deploy your applications as close as possible to your users, for low latency and data residency.", + "pci_projects_project_storages_containers_add_deployment_mode_localzone_label": "Local Zone", + "pci_projects_project_storages_containers_add_deployment_mode_flipping_region-3-az": "3-AZ Regions", + "pci_projects_project_storages_containers_add_deployment_mode_flipping_region": "Regions", + "pci_projects_project_storages_containers_add_deployment_mode_flipping_localzone": "Local Zones", + "pci_projects_project_storages_containers_add_replication_rules_info": "Congratulations, your bucket is almost ready to use with built-in resilience to ensure maximum uptime. Please note that this does not include off-site replication of your data. If your use case requires this additional layer of protection, consider using our asynchronous replication across one or more regions (available only via the APIs). ", + "pci_projects_project_storages_containers_add_replication_rules_info_link": "Learn more and get started." +} diff --git a/packages/manager/apps/pci-object-storage/public/translations/storages/add/Messages_es_ES.json b/packages/manager/apps/pci-object-storage/public/translations/storages/add/Messages_es_ES.json new file mode 100644 index 000000000000..863334df8ddb --- /dev/null +++ b/packages/manager/apps/pci-object-storage/public/translations/storages/add/Messages_es_ES.json @@ -0,0 +1,59 @@ +{ + "pci_projects_project_storages_containers_add_title": "Crear un contenedor de objetos", + "pci_projects_project_storages_containers_add_description": "Desarrolle sus API S3/Swift con nuestra solución Object Storage, una forma sencilla de administrar sus datos.", + "pci_projects_project_storages_containers_add_description_link": "Consultar los precios", + "pci_projects_project_storages_containers_add_archive_title": "Crear un contenedor de archivos", + "pci_projects_project_storages_containers_add_offer_title": "Seleccione su solución", + "pci_projects_project_storages_containers_add_offer_storage": "API Swift", + "pci_projects_project_storages_containers_add_offer_storage-s3-standard": "API S3", + "pci_projects_project_storages_containers_add_offer_storage_description": "Solución básica de almacenamiento sin necesidades particulares en materia de rendimiento. Se trata del almacenamiento de objetos nativo de OpenStack, con las API Swift.", + "pci_projects_project_storages_containers_add_offer_storage-s3-standard_description": "Solución de almacenamiento para grandes volúmenes de datos al mejor precio. Una amplia gama de API S3 está disponible con esta solución.", + "pci_projects_project_storages_containers_add_offer_storage-s3-standard_label": "Novedad", + "pci_projects_project_storages_containers_add_region_title": "Seleccione una localización", + "pci_projects_project_storages_containers_add_type_title": "Seleccione un tipo de contenedor", + "pci_projects_project_storages_containers_add_create_or_linked_user_title": "Asociar un usuario", + "pci_projects_project_storages_containers_add_create_or_linked_user_success_field_secret_key": "Su clave secreta S3:", + "pci_projects_project_storages_containers_add_create_or_linked_user_description": "Puede dar acceso al contenedor a uno de sus usuarios OpenStack preconfigurados con un rol de «Administrador» o de «Operador Object Storage», o bien crear un nuevo usuario.", + "pci_projects_project_storages_containers_add_type_static_label": "Alojamiento estático", + "pci_projects_project_storages_containers_add_type_static_description": "Acceso rápido y eficaz para sus sitios web: asocie sus dominios y suba sus archivos.", + "pci_projects_project_storages_containers_add_type_public_label": "Público", + "pci_projects_project_storages_containers_add_type_public_description": "Multimedia, binarios, e-commerce...: almacene una infinidad de datos.", + "pci_projects_project_storages_containers_add_type_private_label": "Privado", + "pci_projects_project_storages_containers_add_type_private_description": "Facturación, información legal, logs...: archive fácilmente y según su uso.", + "pci_projects_project_storages_containers_add_name_title": "Nombre del contenedor", + "pci_projects_project_storages_containers_add_pattern_help_storage-s3": "El nombre del contenedor debe tener entre 3 y 63 caracteres, y debe empezar y terminar por caracteres alfanuméricos en minúsculas (de la «a» a la «z» y de 0 a 9) y puede contener los siguientes signos de puntuación: punto («.») y guion («-»).", + "pci_projects_project_storages_containers_add_submit_title": "Validación", + "pci_projects_project_storages_containers_add_submit_label": "Añadir el contenedor", + "pci_projects_project_storages_containers_add_cancel_label": "Cancelar", + "pci_projects_project_storages_containers_add_save_form": "Creando el contenedor...", + "pci_projects_project_storages_containers_add_success_message": "Se ha añadido el contenedor {{ container }}.", + "pci_projects_project_storages_containers_add_success_message_with_user_creation": "El contenedor {{container}} se ha creado correctamente. El usuario S3 {{ userName }} es el administrador de este contenedor.", + "pci_projects_project_storages_containers_add_error_post": "Se ha producido un error al añadir el contenedor {{ container }}: {{ message }}.", + "pci_projects_project_storages_containers_add_type_price": "{{price}}/mes + IVA por GB", + "pci_projects_project_storages_containers_add_offer_storage-s3-standard_recommanded": "Recomendada", + "pci_projects_project_storages_containers_deployment_mode_title": "Seleccione un modo de implementación", + "pci_projects_project_storages_containers_add_deployment_mode_region-3-az": "Regiones 3-AZ", + "pci_projects_project_storages_containers_add_deployment_mode_region": "Regiones 1-AZ", + "pci_projects_project_storages_containers_add_deployment_mode_region-3-az_description": "Despliegue de alta resiliencia/alta disponibilidad para sus aplicaciones críticas en 3 zonas de disponibilidad.", + "pci_projects_project_storages_containers_add_deployment_mode_region_description": "Implementación resiliente y económica en 1 zona de disponibilidad.", + "pci_projects_project_storages_containers_add_deployment_mode_region-3-az_label": "3-AZ", + "pci_projects_project_storages_containers_add_deployment_mode_region_label": "1-AZ", + "pci_projects_project_storages_containers_add_deployment_mode_sub_title": "Seleccione la configuración óptima para garantizar la disponibilidad, la resiliencia y la latencia más adecuadas para los datos en función de sus casos de uso.", + "pci_projects_project_storages_containers_add_deployment_mode_sub_title_link": "Más información", + "pci_projects_project_storages_containers_add_add_region_success": "La localización de almacenamiento {{ code }} se ha añadido correctamente a su proyecto Public Cloud.", + "pci_projects_project_storages_containers_add_add_region_error": "Se ha producido un error al añadir la localización: {{message}}.", + "pci_projects_project_storages_containers_add_add_region_activate": "La localización de almacenamiento seleccionada no está activada. Haga clic en «Siguiente» para añadirla a su proyecto Public Cloud y seguir creando su contenedor.", + "pci_projects_project_storages_containers_add_deployment_mode_soon": "Próximamente", + "pci_projects_project_storages_containers_add_offers_estimated_price": "Desde {{price}}/mes + IVA por TB", + "pci_projects_project_storages_containers_add_deployment_mode_price": "{{price}}/mes + IVA por TB*", + "pci_projects_project_storages_containers_add_deployment_mode_price_explanation": "* El precio indicado corresponde al precio público de 1 TB de almacenamiento durante 30 días. Para más información, ", + "pci_projects_project_storages_containers_add_deployment_mode_price_explanation_link": "consulte la página de precios.", + "pci_projects_project_storages_containers_add_deployment_mode_localzone": "Local Zones", + "pci_projects_project_storages_containers_add_deployment_mode_localzone_description": "Despliegue sus aplicaciones cerca de sus usuarios para reducir la latencia y conservar los datos.", + "pci_projects_project_storages_containers_add_deployment_mode_localzone_label": "Local Zone", + "pci_projects_project_storages_containers_add_deployment_mode_flipping_region-3-az": "Regiones 3-AZ", + "pci_projects_project_storages_containers_add_deployment_mode_flipping_region": "Regiones", + "pci_projects_project_storages_containers_add_deployment_mode_flipping_localzone": "Local Zones", + "pci_projects_project_storages_containers_add_replication_rules_info": "Enhorabuena, su «bucket» está casi listo para su uso con una resiliencia integrada para garantizar un tiempo de funcionamiento máximo. Tenga en cuenta que esto no incluye la replicación de sus datos fuera de las instalaciones. Si su caso de uso requiere esta capa de protección adicional, considere la posibilidad de utilizar nuestra replicación asíncrona en una o varias regiones (disponible únicamente a través de las API). ", + "pci_projects_project_storages_containers_add_replication_rules_info_link": "Para saber más y empezar." +} diff --git a/packages/manager/apps/pci-object-storage/public/translations/storages/add/Messages_fr_CA.json b/packages/manager/apps/pci-object-storage/public/translations/storages/add/Messages_fr_CA.json new file mode 100644 index 000000000000..4b42ceb90d65 --- /dev/null +++ b/packages/manager/apps/pci-object-storage/public/translations/storages/add/Messages_fr_CA.json @@ -0,0 +1,60 @@ +{ + "pci_projects_project_storages_containers_add_title": "Créer un conteneur d'objets", + "pci_projects_project_storages_containers_add_description": "Développez vos API S3 / Swift grâce à notre solution Object Storage : une solution simple pour administrer vos données.", + "pci_projects_project_storages_containers_add_description_link": "Consulter les prix", + "pci_projects_project_storages_containers_add_archive_title": "Créer un conteneur d'archive", + "pci_projects_project_storages_containers_add_offer_title": "Sélectionnez votre offre", + "pci_projects_project_storages_containers_add_offer_storage": "Swift API", + "pci_projects_project_storages_containers_add_offer_storage-s3-standard": "S3 API", + "pci_projects_project_storages_containers_add_offer_storage_description": "Solution basique pour le stockage sans besoin particulier en matière de performance. Il s'agit du stockage objet natif d'OpenStack, avec les API Swift.", + "pci_projects_project_storages_containers_add_offer_storage-s3-standard_description": "Solution idéale de stockage pour les grosses volumétries de données au meilleur prix. Une large gamme d'API S3 est disponible avec cette solution.", + "pci_projects_project_storages_containers_add_offer_storage-s3-standard_label": "Nouveau", + "pci_projects_project_storages_containers_add_offer_storage-s3-standard_recommanded": "Recommandée", + "pci_projects_project_storages_containers_add_region_title": "Sélectionnez une localisation", + "pci_projects_project_storages_containers_add_type_title": "Sélectionnez un type de conteneur", + "pci_projects_project_storages_containers_add_create_or_linked_user_title": "Associer un utilisateur", + "pci_projects_project_storages_containers_add_create_or_linked_user_success_field_secret_key": "Votre clé secrète S3 :", + "pci_projects_project_storages_containers_add_create_or_linked_user_description": "Vous pouvez donner accès au conteneur à un de vos utilisateurs OpenStack préconfigurés avec un rôle \"Administrateur\" ou \"Opérateur Object Storage\" ou bien créer un nouvel utilisateur.", + "pci_projects_project_storages_containers_add_type_static_label": "Hébergement statique", + "pci_projects_project_storages_containers_add_type_static_description": "Accès rapide et performant pour vos sites. Liez vos domaines et déposez vos fichiers.", + "pci_projects_project_storages_containers_add_type_public_label": "Public", + "pci_projects_project_storages_containers_add_type_public_description": "Multimédia, binaires, e-commerce. Stockez une infinité de données.", + "pci_projects_project_storages_containers_add_type_private_label": "Privé", + "pci_projects_project_storages_containers_add_type_private_description": "Facturation, informations légales, logs. Archivez simplement et selon vos usages.", + "pci_projects_project_storages_containers_add_name_title": "Nom du conteneur", + "pci_projects_project_storages_containers_add_pattern_help_storage-s3": "Le nom du conteneur doit comporter entre 3 et 63 caractères, doit commencer et se terminer par des caractères alphanumériques minuscules (de a à z et de 0 à 9) et peut comporter les signes de ponctuation suivants : « . » et « - ».", + "pci_projects_project_storages_containers_add_submit_title": "Validation", + "pci_projects_project_storages_containers_add_submit_label": "Ajouter le conteneur", + "pci_projects_project_storages_containers_add_cancel_label": "Annuler", + "pci_projects_project_storages_containers_add_save_form": "Création du conteneur en cours", + + "pci_projects_project_storages_containers_add_success_message": "Le conteneur {{container}} a été ajouté.", + "pci_projects_project_storages_containers_add_success_message_with_user_creation": "Le conteneur {{container}} a été créé avec succès. L'utilisateur S3 {{ userName }} est administrateur de ce conteneur.", + "pci_projects_project_storages_containers_add_error_post": "Une erreur est survenue lors de l'ajout du conteneur {{ container }} : {{ message }}.", + "pci_projects_project_storages_containers_add_type_price": "{{price}} HT/mois/Go", + "pci_projects_project_storages_containers_deployment_mode_title": "Sélectionnez un mode de déploiement", + "pci_projects_project_storages_containers_add_deployment_mode_region-3-az": "Régions 3-AZ", + "pci_projects_project_storages_containers_add_deployment_mode_region": "Régions 1-AZ", + "pci_projects_project_storages_containers_add_deployment_mode_region-3-az_description": "Déploiement haute résilience/haute disponibilité pour vos applications critiques sur 3 zones de disponibilité.", + "pci_projects_project_storages_containers_add_deployment_mode_region_description": "Déploiement résilient et économique sur 1 zone de disponibilité.", + "pci_projects_project_storages_containers_add_deployment_mode_region-3-az_label": "3-AZ", + "pci_projects_project_storages_containers_add_deployment_mode_region_label": "1-AZ", + "pci_projects_project_storages_containers_add_deployment_mode_sub_title": "Sélectionnez la configuration optimale pour garantir la disponibilité, la résilience et la latence appropriée de vos données en fonction de vos cas d'usage.", + "pci_projects_project_storages_containers_add_deployment_mode_sub_title_link": "En savoir plus", + "pci_projects_project_storages_containers_add_add_region_success": "La localisation de stockage {{ code }} a bien été ajoutée à votre projet Public Cloud.", + "pci_projects_project_storages_containers_add_add_region_error": "Une erreur est survenue lors de l'ajout de la localisation : {{message}}", + "pci_projects_project_storages_containers_add_add_region_activate": "La localisation de stockage sélectionnée n’est pas activée. Cliquez sur « Suivant » pour l’ajouter à votre projet Public Cloud et continuer la création de votre conteneur.", + "pci_projects_project_storages_containers_add_deployment_mode_soon": "Coming soon", + "pci_projects_project_storages_containers_add_offers_estimated_price": "À partir de {{price}} HT/mois/To", + "pci_projects_project_storages_containers_add_deployment_mode_price": "{{price}} HT/mois/To*", + "pci_projects_project_storages_containers_add_deployment_mode_localzone": "Local Zones", + "pci_projects_project_storages_containers_add_deployment_mode_localzone_description": "Déploiement de vos applications au plus près de vos utilisateurs pour une faible latence et la résidence des données.", + "pci_projects_project_storages_containers_add_deployment_mode_localzone_label": "Local Zone", + "pci_projects_project_storages_containers_add_deployment_mode_flipping_region-3-az": "Régions 3-AZ", + "pci_projects_project_storages_containers_add_deployment_mode_flipping_region": "Régions", + "pci_projects_project_storages_containers_add_deployment_mode_flipping_localzone": "Local Zones", + "pci_projects_project_storages_containers_add_deployment_mode_price_explanation": "*Le prix indiqué correspond au prix publique d'1 To de stockage pendant 30 jours. Pour plus d'informations, ", + "pci_projects_project_storages_containers_add_deployment_mode_price_explanation_link": "consulter la page des prix.", + "pci_projects_project_storages_containers_add_replication_rules_info": "Félicitations, votre bucket est presque prêt à être utilisé avec une résilience intégrée pour assurer un temps de fonctionnement maximal. Veuillez noter que cela n'inclut pas la réplication hors site de vos données. Si votre cas d'utilisation nécessite cette couche de protection supplémentaire, envisagez d'utiliser notre réplication asynchrone sur une ou plusieurs régions (disponible uniquement via les API). ", + "pci_projects_project_storages_containers_add_replication_rules_info_link": "Pour en savoir plus et commencer." +} diff --git a/packages/manager/apps/pci-object-storage/public/translations/storages/add/Messages_fr_FR.json b/packages/manager/apps/pci-object-storage/public/translations/storages/add/Messages_fr_FR.json new file mode 100644 index 000000000000..4b42ceb90d65 --- /dev/null +++ b/packages/manager/apps/pci-object-storage/public/translations/storages/add/Messages_fr_FR.json @@ -0,0 +1,60 @@ +{ + "pci_projects_project_storages_containers_add_title": "Créer un conteneur d'objets", + "pci_projects_project_storages_containers_add_description": "Développez vos API S3 / Swift grâce à notre solution Object Storage : une solution simple pour administrer vos données.", + "pci_projects_project_storages_containers_add_description_link": "Consulter les prix", + "pci_projects_project_storages_containers_add_archive_title": "Créer un conteneur d'archive", + "pci_projects_project_storages_containers_add_offer_title": "Sélectionnez votre offre", + "pci_projects_project_storages_containers_add_offer_storage": "Swift API", + "pci_projects_project_storages_containers_add_offer_storage-s3-standard": "S3 API", + "pci_projects_project_storages_containers_add_offer_storage_description": "Solution basique pour le stockage sans besoin particulier en matière de performance. Il s'agit du stockage objet natif d'OpenStack, avec les API Swift.", + "pci_projects_project_storages_containers_add_offer_storage-s3-standard_description": "Solution idéale de stockage pour les grosses volumétries de données au meilleur prix. Une large gamme d'API S3 est disponible avec cette solution.", + "pci_projects_project_storages_containers_add_offer_storage-s3-standard_label": "Nouveau", + "pci_projects_project_storages_containers_add_offer_storage-s3-standard_recommanded": "Recommandée", + "pci_projects_project_storages_containers_add_region_title": "Sélectionnez une localisation", + "pci_projects_project_storages_containers_add_type_title": "Sélectionnez un type de conteneur", + "pci_projects_project_storages_containers_add_create_or_linked_user_title": "Associer un utilisateur", + "pci_projects_project_storages_containers_add_create_or_linked_user_success_field_secret_key": "Votre clé secrète S3 :", + "pci_projects_project_storages_containers_add_create_or_linked_user_description": "Vous pouvez donner accès au conteneur à un de vos utilisateurs OpenStack préconfigurés avec un rôle \"Administrateur\" ou \"Opérateur Object Storage\" ou bien créer un nouvel utilisateur.", + "pci_projects_project_storages_containers_add_type_static_label": "Hébergement statique", + "pci_projects_project_storages_containers_add_type_static_description": "Accès rapide et performant pour vos sites. Liez vos domaines et déposez vos fichiers.", + "pci_projects_project_storages_containers_add_type_public_label": "Public", + "pci_projects_project_storages_containers_add_type_public_description": "Multimédia, binaires, e-commerce. Stockez une infinité de données.", + "pci_projects_project_storages_containers_add_type_private_label": "Privé", + "pci_projects_project_storages_containers_add_type_private_description": "Facturation, informations légales, logs. Archivez simplement et selon vos usages.", + "pci_projects_project_storages_containers_add_name_title": "Nom du conteneur", + "pci_projects_project_storages_containers_add_pattern_help_storage-s3": "Le nom du conteneur doit comporter entre 3 et 63 caractères, doit commencer et se terminer par des caractères alphanumériques minuscules (de a à z et de 0 à 9) et peut comporter les signes de ponctuation suivants : « . » et « - ».", + "pci_projects_project_storages_containers_add_submit_title": "Validation", + "pci_projects_project_storages_containers_add_submit_label": "Ajouter le conteneur", + "pci_projects_project_storages_containers_add_cancel_label": "Annuler", + "pci_projects_project_storages_containers_add_save_form": "Création du conteneur en cours", + + "pci_projects_project_storages_containers_add_success_message": "Le conteneur {{container}} a été ajouté.", + "pci_projects_project_storages_containers_add_success_message_with_user_creation": "Le conteneur {{container}} a été créé avec succès. L'utilisateur S3 {{ userName }} est administrateur de ce conteneur.", + "pci_projects_project_storages_containers_add_error_post": "Une erreur est survenue lors de l'ajout du conteneur {{ container }} : {{ message }}.", + "pci_projects_project_storages_containers_add_type_price": "{{price}} HT/mois/Go", + "pci_projects_project_storages_containers_deployment_mode_title": "Sélectionnez un mode de déploiement", + "pci_projects_project_storages_containers_add_deployment_mode_region-3-az": "Régions 3-AZ", + "pci_projects_project_storages_containers_add_deployment_mode_region": "Régions 1-AZ", + "pci_projects_project_storages_containers_add_deployment_mode_region-3-az_description": "Déploiement haute résilience/haute disponibilité pour vos applications critiques sur 3 zones de disponibilité.", + "pci_projects_project_storages_containers_add_deployment_mode_region_description": "Déploiement résilient et économique sur 1 zone de disponibilité.", + "pci_projects_project_storages_containers_add_deployment_mode_region-3-az_label": "3-AZ", + "pci_projects_project_storages_containers_add_deployment_mode_region_label": "1-AZ", + "pci_projects_project_storages_containers_add_deployment_mode_sub_title": "Sélectionnez la configuration optimale pour garantir la disponibilité, la résilience et la latence appropriée de vos données en fonction de vos cas d'usage.", + "pci_projects_project_storages_containers_add_deployment_mode_sub_title_link": "En savoir plus", + "pci_projects_project_storages_containers_add_add_region_success": "La localisation de stockage {{ code }} a bien été ajoutée à votre projet Public Cloud.", + "pci_projects_project_storages_containers_add_add_region_error": "Une erreur est survenue lors de l'ajout de la localisation : {{message}}", + "pci_projects_project_storages_containers_add_add_region_activate": "La localisation de stockage sélectionnée n’est pas activée. Cliquez sur « Suivant » pour l’ajouter à votre projet Public Cloud et continuer la création de votre conteneur.", + "pci_projects_project_storages_containers_add_deployment_mode_soon": "Coming soon", + "pci_projects_project_storages_containers_add_offers_estimated_price": "À partir de {{price}} HT/mois/To", + "pci_projects_project_storages_containers_add_deployment_mode_price": "{{price}} HT/mois/To*", + "pci_projects_project_storages_containers_add_deployment_mode_localzone": "Local Zones", + "pci_projects_project_storages_containers_add_deployment_mode_localzone_description": "Déploiement de vos applications au plus près de vos utilisateurs pour une faible latence et la résidence des données.", + "pci_projects_project_storages_containers_add_deployment_mode_localzone_label": "Local Zone", + "pci_projects_project_storages_containers_add_deployment_mode_flipping_region-3-az": "Régions 3-AZ", + "pci_projects_project_storages_containers_add_deployment_mode_flipping_region": "Régions", + "pci_projects_project_storages_containers_add_deployment_mode_flipping_localzone": "Local Zones", + "pci_projects_project_storages_containers_add_deployment_mode_price_explanation": "*Le prix indiqué correspond au prix publique d'1 To de stockage pendant 30 jours. Pour plus d'informations, ", + "pci_projects_project_storages_containers_add_deployment_mode_price_explanation_link": "consulter la page des prix.", + "pci_projects_project_storages_containers_add_replication_rules_info": "Félicitations, votre bucket est presque prêt à être utilisé avec une résilience intégrée pour assurer un temps de fonctionnement maximal. Veuillez noter que cela n'inclut pas la réplication hors site de vos données. Si votre cas d'utilisation nécessite cette couche de protection supplémentaire, envisagez d'utiliser notre réplication asynchrone sur une ou plusieurs régions (disponible uniquement via les API). ", + "pci_projects_project_storages_containers_add_replication_rules_info_link": "Pour en savoir plus et commencer." +} diff --git a/packages/manager/apps/pci-object-storage/public/translations/storages/add/Messages_it_IT.json b/packages/manager/apps/pci-object-storage/public/translations/storages/add/Messages_it_IT.json new file mode 100644 index 000000000000..248673cffb07 --- /dev/null +++ b/packages/manager/apps/pci-object-storage/public/translations/storages/add/Messages_it_IT.json @@ -0,0 +1,59 @@ +{ + "pci_projects_project_storages_containers_add_title": "Crea un container di oggetti", + "pci_projects_project_storages_containers_add_description": "Sviluppa le tue API S3/Swift grazie alla nostra soluzione Object Storage, un servizio semplice per amministrare i dati.", + "pci_projects_project_storages_containers_add_description_link": "Consulta le tariffe", + "pci_projects_project_storages_containers_add_archive_title": "Crea un container archivio", + "pci_projects_project_storages_containers_add_offer_title": "Seleziona la tua offerta", + "pci_projects_project_storages_containers_add_offer_storage": "API Swift", + "pci_projects_project_storages_containers_add_offer_storage-s3-standard": "API S3", + "pci_projects_project_storages_containers_add_offer_storage_description": "Soluzione di base per lo storage senza particolari esigenze in termini di performance. Si tratta dell’object storage nativo di OpenStack, con le API Swift.", + "pci_projects_project_storages_containers_add_offer_storage-s3-standard_description": "Soluzione di storage ideale per archiviare grandi volumi di dati al miglior prezzo. Con questa soluzione è disponibile un'ampia gamma di API S3.", + "pci_projects_project_storages_containers_add_offer_storage-s3-standard_label": "Nuovo", + "pci_projects_project_storages_containers_add_region_title": "Seleziona una localizzazione", + "pci_projects_project_storages_containers_add_type_title": "Seleziona un tipo di container", + "pci_projects_project_storages_containers_add_create_or_linked_user_title": "Associare un utente", + "pci_projects_project_storages_containers_add_create_or_linked_user_success_field_secret_key": "La tua chiave segreta S3:", + "pci_projects_project_storages_containers_add_create_or_linked_user_description": "Puoi consentire l'accesso al container a uno degli utenti OpenStack preconfigurati con un ruolo \"Amministratore\" o \"Operatore Object Storage\" oppure creare un nuovo utente.", + "pci_projects_project_storages_containers_add_type_static_label": "Hosting statico", + "pci_projects_project_storages_containers_add_type_static_description": "Accesso rapido e performante per i tuoi siti. Associa i tuoi domini e archivia i tuoi file.", + "pci_projects_project_storages_containers_add_type_public_label": "Pubblico", + "pci_projects_project_storages_containers_add_type_public_description": "Multimedia, file binari, e-commerce... Salva un'infinità di dati", + "pci_projects_project_storages_containers_add_type_private_label": "Privato", + "pci_projects_project_storages_containers_add_type_private_description": "Fatturazione, informazioni legali, log... Archivia facilmente e in base al tipo di utilizzo.", + "pci_projects_project_storages_containers_add_name_title": "Nome del container", + "pci_projects_project_storages_containers_add_pattern_help_storage-s3": "Il nome del container deve avere tra 3 e 63 caratteri. Deve iniziare e terminare con caratteri alfanumerici minuscoli (da “a” a “z” e da 0 a 9) e può includere i segni di punteggiatura “.” e “-”.", + "pci_projects_project_storages_containers_add_submit_title": "Convalida", + "pci_projects_project_storages_containers_add_submit_label": "Aggiungi il container", + "pci_projects_project_storages_containers_add_cancel_label": "Annulla", + "pci_projects_project_storages_containers_add_save_form": "Creazione del container in corso...", + "pci_projects_project_storages_containers_add_success_message": "Il container {{ container }} è stato aggiunto.", + "pci_projects_project_storages_containers_add_success_message_with_user_creation": "Il container {{container}} è stato creato correttamente. L'utente S3 {{ userName }} è l'amministratore di questo container.", + "pci_projects_project_storages_containers_add_error_post": "Si è verificato un errore durante l'aggiunta del container {{ container }}: {{ message }}.", + "pci_projects_project_storages_containers_add_type_price": "{{ price }} +IVA/mese/GB", + "pci_projects_project_storages_containers_add_offer_storage-s3-standard_recommanded": "Consigliata", + "pci_projects_project_storages_containers_deployment_mode_title": "Seleziona una modalità di deploy", + "pci_projects_project_storages_containers_add_deployment_mode_region-3-az": "Region 3-AZ", + "pci_projects_project_storages_containers_add_deployment_mode_region": "Region 1-AZ", + "pci_projects_project_storages_containers_add_deployment_mode_region-3-az_description": "Installazione ad alta resilienza/high availability per le applicazioni critiche su 3 zone di disponibilità.", + "pci_projects_project_storages_containers_add_deployment_mode_region_description": "Deploy resiliente ed economico su 1 Availability Zone.", + "pci_projects_project_storages_containers_add_deployment_mode_region-3-az_label": "3-AZ", + "pci_projects_project_storages_containers_add_deployment_mode_region_label": "1-AZ", + "pci_projects_project_storages_containers_add_deployment_mode_sub_title": "Seleziona la configurazione ottimale per garantire la disponibilità, resilienza e latenza più appropriata per i tuoi dati in base alle modalità di utilizzo.", + "pci_projects_project_storages_containers_add_deployment_mode_sub_title_link": "Scopri di più", + "pci_projects_project_storages_containers_add_add_region_success": "La localizzazione di storage {{ code }} è stata aggiunta correttamente al tuo progetto Public Cloud.", + "pci_projects_project_storages_containers_add_add_region_error": "Si è verificato un errore durante l’aggiunta della Region: {{message}}", + "pci_projects_project_storages_containers_add_add_region_activate": "La localizzazione di storage selezionata non è attivata. Clicca su \"Continua\" per aggiungerla al tuo progetto Public Cloud e proseguire con la creazione del tuo container.", + "pci_projects_project_storages_containers_add_deployment_mode_soon": "In arrivo", + "pci_projects_project_storages_containers_add_offers_estimated_price": "A partire da {{price}} +IVA/mese/TB", + "pci_projects_project_storages_containers_add_deployment_mode_price": "{{price}} +IVA/mese/TB*", + "pci_projects_project_storages_containers_add_deployment_mode_price_explanation": "*Il prezzo indicato corrisponde al prezzo pubblico di 1 TB di storage per 30 giorni. Per maggiori informazioni, ", + "pci_projects_project_storages_containers_add_deployment_mode_price_explanation_link": "consulta la pagina dei prezzi.", + "pci_projects_project_storages_containers_add_deployment_mode_localzone": "Local Zone", + "pci_projects_project_storages_containers_add_deployment_mode_localzone_description": "Implementazione delle applicazioni il più vicino possibile agli utenti per una latenza ridotta e la residenza dei dati.", + "pci_projects_project_storages_containers_add_deployment_mode_localzone_label": "Local Zone", + "pci_projects_project_storages_containers_add_deployment_mode_flipping_region-3-az": "Region 3-AZ", + "pci_projects_project_storages_containers_add_deployment_mode_flipping_region": "Region", + "pci_projects_project_storages_containers_add_deployment_mode_flipping_localzone": "Local Zone", + "pci_projects_project_storages_containers_add_replication_rules_info": "Congratulazioni! Il tuo bucket è quasi pronto per essere utilizzato con una resilienza integrata per garantire il massimo tempo di funzionamento. Ti ricordiamo che questa operazione non include la replica dei tuoi dati fuori sede. Se il tuo caso d'uso richiede questo livello di protezione supplementare, considera di utilizzare la nostra replica asincrona su una o più Region (disponibile solo tramite le API). ", + "pci_projects_project_storages_containers_add_replication_rules_info_link": "Per saperne di più e iniziare." +} diff --git a/packages/manager/apps/pci-object-storage/public/translations/storages/add/Messages_pl_PL.json b/packages/manager/apps/pci-object-storage/public/translations/storages/add/Messages_pl_PL.json new file mode 100644 index 000000000000..f54c1d92155b --- /dev/null +++ b/packages/manager/apps/pci-object-storage/public/translations/storages/add/Messages_pl_PL.json @@ -0,0 +1,59 @@ +{ + "pci_projects_project_storages_containers_add_title": "Utwórz kontener obiektów", + "pci_projects_project_storages_containers_add_description": "Rozwijaj API S3/Swift za pomocą Object Storage: prostego rozwiązania do zarządzania danymi.", + "pci_projects_project_storages_containers_add_description_link": "Sprawdź ceny", + "pci_projects_project_storages_containers_add_archive_title": "Utwórz kontener Cloud Archive", + "pci_projects_project_storages_containers_add_offer_title": "Wybierz Twoje rozwiązanie", + "pci_projects_project_storages_containers_add_offer_storage": "API Swift", + "pci_projects_project_storages_containers_add_offer_storage-s3-standard": "API S3 ", + "pci_projects_project_storages_containers_add_offer_storage_description": "Podstawowe rozwiązanie do przechowywania danych bez specyficznych potrzeb w zakresie wydajności. Jest to przestrzeń do przechowywania obiektów OpenStack, z wykorzystaniem API Swift.", + "pci_projects_project_storages_containers_add_offer_storage-s3-standard_description": "Idealne rozwiązanie do przechowywania dużych ilości danych w najlepszej cenie. Wraz z rozwiązaniem dostępna jest szeroka gama interfejsów API S3.", + "pci_projects_project_storages_containers_add_offer_storage-s3-standard_label": "Nowość", + "pci_projects_project_storages_containers_add_region_title": "Wybierz lokalizację", + "pci_projects_project_storages_containers_add_type_title": "Wybierz rodzaj kontenera", + "pci_projects_project_storages_containers_add_create_or_linked_user_title": "Przypisz użytkownika", + "pci_projects_project_storages_containers_add_create_or_linked_user_success_field_secret_key": "Tajny klucz S3:", + "pci_projects_project_storages_containers_add_create_or_linked_user_description": "Możesz przyznać dostęp do kontenera jednemu ze wstępnie skonfigurowanych użytkowników OpenStack z rolą „Administrator” lub „Operator Object Storage” albo utworzyć nowego użytkownika.", + "pci_projects_project_storages_containers_add_type_static_label": "Hosting statyczny", + "pci_projects_project_storages_containers_add_type_static_description": "Szybki i wydajny dostęp do Twoich stron. Połącz Twoje domeny i przechowuj pliki.", + "pci_projects_project_storages_containers_add_type_public_label": "Publiczny", + "pci_projects_project_storages_containers_add_type_public_description": "Multimedia, dane binarne, e-commerce. Przechowuj dane bez ograniczeń.", + "pci_projects_project_storages_containers_add_type_private_label": "Prywatny", + "pci_projects_project_storages_containers_add_type_private_description": "Płatności, informacje prawne, logi. Korzystaj z prostej archiwizacji w zależności od Twoich potrzeb.", + "pci_projects_project_storages_containers_add_name_title": "Nazwa kontenera", + "pci_projects_project_storages_containers_add_pattern_help_storage-s3": "Nazwa kontenera musi zawierać od 3 do 63 znaków, musi zaczynać się i kończyć małym znakiem alfanumerycznym (od „a” do „z” i od 0 do 9) i może zawierać następujące znaki interpunkcyjne: „.” oraz „-”.", + "pci_projects_project_storages_containers_add_submit_title": "Potwierdzenie", + "pci_projects_project_storages_containers_add_submit_label": "Dodaj kontener", + "pci_projects_project_storages_containers_add_cancel_label": "Anuluj", + "pci_projects_project_storages_containers_add_save_form": "Trwa tworzenie kontenera", + "pci_projects_project_storages_containers_add_success_message": "Kontener {{ container }} został dodany.", + "pci_projects_project_storages_containers_add_success_message_with_user_creation": "Kontener {{container}} został utworzony. Użytkownik S3 {{userName}} jest administratorem tego kontenera.", + "pci_projects_project_storages_containers_add_error_post": "Wystąpił błąd podczas dodawania kontenera {{container}}: {{message}}.", + "pci_projects_project_storages_containers_add_type_price": "{{price}} netto/m-c/GB", + "pci_projects_project_storages_containers_add_offer_storage-s3-standard_recommanded": "Zalecane", + "pci_projects_project_storages_containers_deployment_mode_title": "Wybierz tryb wdrożenia", + "pci_projects_project_storages_containers_add_deployment_mode_region-3-az": "Regiony 3-AZ", + "pci_projects_project_storages_containers_add_deployment_mode_region": "Regiony 1-AZ", + "pci_projects_project_storages_containers_add_deployment_mode_region-3-az_description": "Wdrożenie o wysokiej odporności/dostępności dla krytycznych aplikacji w 3 strefach dostępności.", + "pci_projects_project_storages_containers_add_deployment_mode_region_description": "Odporne i ekonomiczne wdrożenie w 1 Availability Zone.", + "pci_projects_project_storages_containers_add_deployment_mode_region-3-az_label": "3-AZ", + "pci_projects_project_storages_containers_add_deployment_mode_region_label": "1-AZ", + "pci_projects_project_storages_containers_add_deployment_mode_sub_title": "Wybierz optymalną konfigurację, aby zapewnić dostępność, odporność i odpowiedni czas odpowiedzi w zależności od zastosowań.", + "pci_projects_project_storages_containers_add_deployment_mode_sub_title_link": "Dowiedz się więcej", + "pci_projects_project_storages_containers_add_add_region_success": "Lokalizacja przestrzeni dyskowej {{code}} została dodana do Twojego projektu Public Cloud.", + "pci_projects_project_storages_containers_add_add_region_error": "Wystąpił błąd podczas dodawania lokalizacji: {{message}}.", + "pci_projects_project_storages_containers_add_add_region_activate": "Wybrana lokalizacja przestrzeni dyskowej nie jest aktywna. Kliknij „Dalej”, aby dodać ją do projektu Public Cloud i kontynuować tworzenie kontenera.", + "pci_projects_project_storages_containers_add_deployment_mode_soon": "Wkrótce...", + "pci_projects_project_storages_containers_add_offers_estimated_price": "Od {{price}} netto/m-c/TB", + "pci_projects_project_storages_containers_add_deployment_mode_price": "{{price}} netto/m-c/TB*", + "pci_projects_project_storages_containers_add_deployment_mode_price_explanation": "*Podana cena to standardowa stawka za korzystanie z 1 TB przestrzeni dyskowej przez 30 dni. Więcej informacji ", + "pci_projects_project_storages_containers_add_deployment_mode_price_explanation_link": "Sprawdź cennik.", + "pci_projects_project_storages_containers_add_deployment_mode_localzone": "Local Zones", + "pci_projects_project_storages_containers_add_deployment_mode_localzone_description": "Wdrażanie aplikacji jak najbliżej użytkowników w celu skrócenia czasu odpowiedzi i zapewnienia rezydencji danych.", + "pci_projects_project_storages_containers_add_deployment_mode_localzone_label": "Local Zone", + "pci_projects_project_storages_containers_add_deployment_mode_flipping_region-3-az": "Regiony 3-AZ", + "pci_projects_project_storages_containers_add_deployment_mode_flipping_region": "Regiony", + "pci_projects_project_storages_containers_add_deployment_mode_flipping_localzone": "Local Zones", + "pci_projects_project_storages_containers_add_replication_rules_info": "Gratulacje, Twój bucket jest prawie gotowy do użycia ze zintegrowaną odpornością, aby zapewnić maksymalny czas działania. Pamiętaj, że nie obejmuje to replikacji danych poza lokalizacją. Jeśli Twój przypadek zastosowania wymaga tej dodatkowej warstwy ochrony, rozważ użycie replikacji asynchronicznej w jednym lub kilku regionach (dostępnej tylko przez API). ", + "pci_projects_project_storages_containers_add_replication_rules_info_link": "Dowiedz się więcej i rozpocznij." +} diff --git a/packages/manager/apps/pci-object-storage/public/translations/storages/add/Messages_pt_PT.json b/packages/manager/apps/pci-object-storage/public/translations/storages/add/Messages_pt_PT.json new file mode 100644 index 000000000000..7de43c34e6d0 --- /dev/null +++ b/packages/manager/apps/pci-object-storage/public/translations/storages/add/Messages_pt_PT.json @@ -0,0 +1,59 @@ +{ + "pci_projects_project_storages_containers_add_title": "Criar um container de objetos", + "pci_projects_project_storages_containers_add_description": "Desenvolva as suas API S3 / Swift graças à nossa solução Object Storage: uma solução simples para administrar os seus dados.", + "pci_projects_project_storages_containers_add_description_link": "Consultar os preços", + "pci_projects_project_storages_containers_add_archive_title": "Criar um container de arquivos", + "pci_projects_project_storages_containers_add_offer_title": "Selecione a sua solução", + "pci_projects_project_storages_containers_add_offer_storage": "Swift API", + "pci_projects_project_storages_containers_add_offer_storage-s3-standard": "S3 API", + "pci_projects_project_storages_containers_add_offer_storage_description": "Solução básica para o armazenamento sem necessidade especial em matéria de desempenho. Trata-se do armazenamento de objetos nativo da OpenStack, com as API Swift.", + "pci_projects_project_storages_containers_add_offer_storage-s3-standard_description": "Solução ideal de armazenamento para grandes volumes de dados ao melhor preço. Com esta solução, está disponível uma vasta gama de API S3.", + "pci_projects_project_storages_containers_add_offer_storage-s3-standard_label": "Novo", + "pci_projects_project_storages_containers_add_region_title": "Selecione uma localização", + "pci_projects_project_storages_containers_add_type_title": "Selecione um tipo de container", + "pci_projects_project_storages_containers_add_create_or_linked_user_title": "Associar um utilizador", + "pci_projects_project_storages_containers_add_create_or_linked_user_success_field_secret_key": "A sua chave secreta S3:", + "pci_projects_project_storages_containers_add_create_or_linked_user_description": "Pode dar acesso ao container a um dos seus utilizadores OpenStack pré-configurados com um papel “Administrador” ou “Operador Object Storage”, ou então criar um novo utilizador.", + "pci_projects_project_storages_containers_add_type_static_label": "Alojamento estático", + "pci_projects_project_storages_containers_add_type_static_description": "Acesso rápido e com excelente desempenho para os seus websites. Associe os seus domínios e arquive os seus ficheiros.", + "pci_projects_project_storages_containers_add_type_public_label": "Público", + "pci_projects_project_storages_containers_add_type_public_description": "Multimédia, binários, e-commerce. Armazene uma infinidade de dados.", + "pci_projects_project_storages_containers_add_type_private_label": "Privado", + "pci_projects_project_storages_containers_add_type_private_description": "Dados de faturação, informações legais, logs. Arquive os seus dados de forma simples e de acordo com as suas utilizações.", + "pci_projects_project_storages_containers_add_name_title": "Nome do container", + "pci_projects_project_storages_containers_add_pattern_help_storage-s3": "O nome do container deve ter entre 3 e 63 caracteres, deve começar e acabar por caracteres alfanuméricos minúsculos (de A a Z e de 0 a 9) e pode conter os seguintes sinais de pontuação: \".\" e \"-\".", + "pci_projects_project_storages_containers_add_submit_title": "Validação", + "pci_projects_project_storages_containers_add_submit_label": "Adicionar o container", + "pci_projects_project_storages_containers_add_cancel_label": "Anular", + "pci_projects_project_storages_containers_add_save_form": "Criação do container em curso", + "pci_projects_project_storages_containers_add_success_message": "O container {{ container }} foi adicionado.", + "pci_projects_project_storages_containers_add_success_message_with_user_creation": "O container {{container}} foi criado com êxito. O utilizador S3 {{ userName }} é o administrador deste container.", + "pci_projects_project_storages_containers_add_error_post": "Ocorreu um erro ao adicionar o container {{ container }}: {{ message }}.", + "pci_projects_project_storages_containers_add_type_price": "{{ price }}/mês por GB + IVA", + "pci_projects_project_storages_containers_add_offer_storage-s3-standard_recommanded": "Recomendada", + "pci_projects_project_storages_containers_deployment_mode_title": "Selecione um modo de implementação", + "pci_projects_project_storages_containers_add_deployment_mode_region-3-az": "Regiões 3-AZ", + "pci_projects_project_storages_containers_add_deployment_mode_region": "Regiões 1-AZ", + "pci_projects_project_storages_containers_add_deployment_mode_region-3-az_description": "Implementação de alta resiliência/alta disponibilidade para as suas aplicações críticas em 3 zonas de disponibilidade.", + "pci_projects_project_storages_containers_add_deployment_mode_region_description": "Implementação resiliente e económica em 1 zona de disponibilidade.", + "pci_projects_project_storages_containers_add_deployment_mode_region-3-az_label": "3-AZ", + "pci_projects_project_storages_containers_add_deployment_mode_region_label": "1-AZ", + "pci_projects_project_storages_containers_add_deployment_mode_sub_title": "Selecione a configuração ideal para garantir a disponibilidade, a resiliência e a latência adequada dos seus dados em função dos seus casos de uso.", + "pci_projects_project_storages_containers_add_deployment_mode_sub_title_link": "Saber mais", + "pci_projects_project_storages_containers_add_add_region_success": "A localização de armazenamento {{ code }} foi adicionada com êxito ao seu projeto Public Cloud.", + "pci_projects_project_storages_containers_add_add_region_error": "Ocorreu um erro ao adicionar a localização: {{message}}", + "pci_projects_project_storages_containers_add_add_region_activate": "A localização de armazenamento selecionada não está ativada. Clique em “Seguinte” para a adicionar ao seu projeto Public Cloud e continuar a criação do seu container.", + "pci_projects_project_storages_containers_add_deployment_mode_soon": "Em breve", + "pci_projects_project_storages_containers_add_offers_estimated_price": "A partir de {{price}} /mês por TB + IVA", + "pci_projects_project_storages_containers_add_deployment_mode_price": "{{price}} /mês por TB* + IVA", + "pci_projects_project_storages_containers_add_deployment_mode_price_explanation": "*O preço indicado corresponde ao preço público de 1 TB de armazenamento durante 30 dias. Para mais informações, ", + "pci_projects_project_storages_containers_add_deployment_mode_price_explanation_link": "consulte a página dedicada aos preços.", + "pci_projects_project_storages_containers_add_deployment_mode_localzone": "Local Zones", + "pci_projects_project_storages_containers_add_deployment_mode_localzone_description": "Implementação das suas aplicações mais próxima dos seus utilizadores para uma latência reduzida e residência dos dados.", + "pci_projects_project_storages_containers_add_deployment_mode_localzone_label": "Local Zone", + "pci_projects_project_storages_containers_add_deployment_mode_flipping_region-3-az": "Regiões 3-AZ", + "pci_projects_project_storages_containers_add_deployment_mode_flipping_region": "Regiões", + "pci_projects_project_storages_containers_add_deployment_mode_flipping_localzone": "Local Zones", + "pci_projects_project_storages_containers_add_replication_rules_info": "Parabéns! O seu bucket está quase pronto a ser utilizado com uma resiliência integrada para assegurar um tempo de funcionamento máximo. Tenha em conta que esta opção não inclui a replicação fora das instalações dos seus dados. Se o seu caso de utilização necessitar desta camada de proteção suplementar, considere a utilização da nossa replicação assíncrona numa ou várias regiões (disponível apenas através das API). ", + "pci_projects_project_storages_containers_add_replication_rules_info_link": "Para saber mais e começar." +} diff --git a/packages/manager/apps/pci-object-storage/src/api/data/container.ts b/packages/manager/apps/pci-object-storage/src/api/data/container.ts new file mode 100644 index 000000000000..27fa5d0fcfe4 --- /dev/null +++ b/packages/manager/apps/pci-object-storage/src/api/data/container.ts @@ -0,0 +1,54 @@ +import { v6 } from '@ovh-ux/manager-core-api'; + +export type TObject = { + key: string; + name: string; + etag: string; + size: number; + contentType: string; + lastModified: string; + storageClass: string; + s3StorageType: string; + retrievalState: string; + retrievalDate: string; +}; +export type TServerContainer = { + createdAt: string; + encryption: { + sseAlgorithm: string; + }; + id: string; + name: string; + objects: TObject[]; + objectsCount: number; + objectsSize: number; + ownerId: number; + region: string; + s3StorageType: unknown; + storedBytes: number; + storedObjects: number; + versioning: { + status: string; + }; + virtualHost: string; + staticUrl: string; + replication: { + rules: { + status: string; + }[]; + }; +}; + +export const getServerContainer = async ( + projectId: string, + region: string, + name: string, + id: string, +): Promise => { + const url = id + ? `/cloud/project/${projectId}/storage/${id}` + : `/cloud/project/${projectId}/region/${region}/storage/${name}`; + + const { data } = await v6.get(url); + return data; +}; diff --git a/packages/manager/apps/pci-object-storage/src/api/data/feature-availablity.ts b/packages/manager/apps/pci-object-storage/src/api/data/feature-availablity.ts new file mode 100644 index 000000000000..3b1a62f55bc6 --- /dev/null +++ b/packages/manager/apps/pci-object-storage/src/api/data/feature-availablity.ts @@ -0,0 +1,9 @@ +import { aapi } from '@ovh-ux/manager-core-api'; + +export const getFeatureAvailability = async (feature: string, app: string) => { + const { data } = await aapi.get>( + `/feature/${feature}/availability?app=${app}`, + ); + + return data; +}; diff --git a/packages/manager/apps/pci-object-storage/src/api/data/region.ts b/packages/manager/apps/pci-object-storage/src/api/data/region.ts new file mode 100644 index 000000000000..93392ee10abd --- /dev/null +++ b/packages/manager/apps/pci-object-storage/src/api/data/region.ts @@ -0,0 +1,22 @@ +import { v6 } from '@ovh-ux/manager-core-api'; + +type TRegion = { + continentCode: string; + datacenterLocation: string; + ipCountries: unknown[]; + name: string; + services: { name: string; status: 'UP'; endpoint: string }[]; + status: 'UP'; + type: 'region' | 'localzone'; +}; + +export const getRegion = async ( + projectId: string, + region: string, +): Promise => { + const { data } = await v6.get( + `/cloud/project/${projectId}/region/${region}`, + ); + + return data; +}; diff --git a/packages/manager/apps/pci-object-storage/src/api/data/storages.ts b/packages/manager/apps/pci-object-storage/src/api/data/storages.ts index 42a3d57e547b..94530b7b25f9 100644 --- a/packages/manager/apps/pci-object-storage/src/api/data/storages.ts +++ b/packages/manager/apps/pci-object-storage/src/api/data/storages.ts @@ -44,6 +44,7 @@ export const getStorages = async ( }, }, ); + return data; }; diff --git a/packages/manager/apps/pci-object-storage/src/api/hooks/useAvailability.ts b/packages/manager/apps/pci-object-storage/src/api/hooks/useAvailability.ts new file mode 100644 index 000000000000..39eacfa256d9 --- /dev/null +++ b/packages/manager/apps/pci-object-storage/src/api/hooks/useAvailability.ts @@ -0,0 +1,14 @@ +import { useQuery } from '@tanstack/react-query'; +import { getFeatureAvailability } from '@/api/data/feature-availablity'; + +export const useGetFeatureAvailability = (feature: string, app: string) => { + const result = useQuery({ + queryKey: ['feature', feature, 'availability', app], + queryFn: () => getFeatureAvailability(feature, app), + }); + + return { + ...result, + available: (result?.data || {})[`${feature}`] === true, + }; +}; diff --git a/packages/manager/apps/pci-object-storage/src/api/hooks/useContainer.ts b/packages/manager/apps/pci-object-storage/src/api/hooks/useContainer.ts new file mode 100644 index 000000000000..62a73c3800d5 --- /dev/null +++ b/packages/manager/apps/pci-object-storage/src/api/hooks/useContainer.ts @@ -0,0 +1,53 @@ +import { useQuery } from '@tanstack/react-query'; +import { ColumnSort, PaginationState } from '@ovh-ux/manager-react-components'; +import { applyFilters, Filter } from '@ovh-ux/manager-core-api'; +import { useMemo } from 'react'; +import { getServerContainer, TObject } from '@/api/data/container'; +import { paginateResults, sortResults } from '@/helpers'; + +export const useServerContainer = ( + projectId: string, + region: string, + name: string, + id: string, +) => { + return useQuery({ + queryKey: ['project', projectId, 'region', region, 'server-container', id], + queryFn: () => getServerContainer(projectId, region, name, id), + enabled: !!projectId && !!name && !!region, + }); +}; + +export const usePaginatedObjects = ( + projectId: string, + region: string, + name: string, + id: string, + pagination: PaginationState, + sorting: ColumnSort, + filters: Filter[], +) => { + const { data: container, error, isLoading, isPending } = useServerContainer( + projectId, + region, + name, + id, + ); + + return useMemo( + () => ({ + isLoading, + isPending, + paginatedObjects: paginateResults( + sortResults( + applyFilters(container?.objects || [], filters), + sorting, + ), + pagination, + ), + allObjects: container?.objects, + error, + }), + [container, error, isLoading, isPending, pagination, sorting, filters], + ); +}; diff --git a/packages/manager/apps/pci-object-storage/src/api/hooks/useRegion.ts b/packages/manager/apps/pci-object-storage/src/api/hooks/useRegion.ts new file mode 100644 index 000000000000..85d7bb1d04a1 --- /dev/null +++ b/packages/manager/apps/pci-object-storage/src/api/hooks/useRegion.ts @@ -0,0 +1,10 @@ +import { useQuery } from '@tanstack/react-query'; +import { getRegion } from '@/api/data/region'; + +export const useGetRegion = (projectId: string, region: string) => { + return useQuery({ + queryKey: ['project', projectId, 'region', region], + queryFn: () => getRegion(projectId, region), + enabled: !!projectId && !!region, + }); +}; diff --git a/packages/manager/apps/pci-object-storage/src/api/hooks/useStorages.ts b/packages/manager/apps/pci-object-storage/src/api/hooks/useStorages.ts index 27606f7d02e7..7ddae3be90f7 100644 --- a/packages/manager/apps/pci-object-storage/src/api/hooks/useStorages.ts +++ b/packages/manager/apps/pci-object-storage/src/api/hooks/useStorages.ts @@ -50,18 +50,8 @@ export const useAllStorages = (projectId: string) => queryFn: () => getStorages(projectId), }); -export const useStorages = ( - projectId: string, - pagination: PaginationState, - sorting: ColumnSort, - filters: Filter[], - availability: { - isLocalZoneAvailable: boolean; - is3azAvailable: boolean; - }, -) => { +export const useMappedStorages = (projectId: string) => { const { i18n, t } = useTranslation('pci-storages-containers'); - const queryClient = useQueryClient(); const { data: storages, @@ -77,12 +67,67 @@ export const useStorages = ( isPending: isRegionsPending, } = useGetProjectRegions(projectId); + const isLoading = isStoragesLoading || isRegionsLoading; + const isPending = isStoragesPending || isRegionsPending; + const mappedStorages = useMemo(() => { if (storages && regions) { return storages.resources.map((storage) => { const deploymentMode = regions.find( (region) => region.name === storage.region, )?.type; + + return { + ...storage, + offer: t( + storage?.s3StorageType + ? 'pci_projects_project_storages_containers_offer_s3' + : 'pci_projects_project_storages_containers_offer_swift', + ), + deploymentMode, + storedObjects: storage.storedObjects || 0, + usedSpace: storage.storedBytes || storage.objectsSize || 0, + }; + }); + } + return []; + }, [storages, regions, i18n?.language]); + + return { + data: mappedStorages, + isLoading, + isPending, + allStorages: storages, + error, + isRefreshing: isFetching, + }; +}; +export const useStorages = ( + projectId: string, + pagination: PaginationState, + sorting: ColumnSort, + filters: Filter[], + availability: { + isLocalZoneAvailable: boolean; + is3azAvailable: boolean; + }, +) => { + const { i18n, t } = useTranslation('pci-storages-containers'); + const queryClient = useQueryClient(); + + const { + data, + isLoading, + isPending, + isRefreshing, + allStorages, + error, + } = useMappedStorages(projectId); + + const mappedStorages = useMemo(() => { + if (data) { + return data.map((storage) => { + const { deploymentMode } = storage; let mode: string; switch (deploymentMode) { case OBJECT_CONTAINER_MODE_MULTI_ZONES: @@ -110,22 +155,11 @@ export const useStorages = ( return { ...storage, mode, - offer: t( - storage?.s3StorageType - ? 'pci_projects_project_storages_containers_offer_s3' - : 'pci_projects_project_storages_containers_offer_swift', - ), - deploymentMode, - storedObjects: storage.storedObjects || 0, - usedSpace: storage.storedBytes || storage.objectsSize || 0, }; }); } return []; - }, [storages, regions, i18n?.language, availability]); - - const isLoading = isStoragesLoading || isRegionsLoading; - const isPending = isStoragesPending || isRegionsPending; + }, [data, i18n?.language, availability]); return useMemo( () => ({ @@ -135,9 +169,9 @@ export const useStorages = ( sortStorages(sorting, applyFilters(mappedStorages, filters)), pagination, ), - allStorages: storages, + allStorages, error, - isRefreshing: isFetching, + isRefreshing, refresh: () => queryClient.invalidateQueries({ queryKey: getStorageQueryKey(projectId), @@ -148,7 +182,7 @@ export const useStorages = ( error, isLoading, isPending, - isFetching, + isRefreshing, pagination, sorting, filters, diff --git a/packages/manager/apps/pci-object-storage/src/constants.ts b/packages/manager/apps/pci-object-storage/src/constants.ts index 058d3de5939b..bc0f685f8cf3 100644 --- a/packages/manager/apps/pci-object-storage/src/constants.ts +++ b/packages/manager/apps/pci-object-storage/src/constants.ts @@ -6,6 +6,7 @@ export const MEGA_BYTES = 1024; export const OBJECT_CONTAINER_MODE_MULTI_ZONES = 'region-3-az'; export const OBJECT_CONTAINER_MODE_MONO_ZONE = 'region'; export const OBJECT_CONTAINER_MODE_LOCAL_ZONE = 'localzone'; +export const OBJECT_CONTAINER_S3_STATIC_URL_INFO = 'Virtual Hosted-Style :'; export const OBJECT_CONTAINER_DEPLOYMENT_MODES = [ OBJECT_CONTAINER_MODE_MULTI_ZONES, @@ -108,6 +109,55 @@ export const STANDARD_S3 = [ }, ]; +export const STORAGE_ASYNC_REPLICATION_LINK = { + DEFAULT: + 'https://help.ovhcloud.com/csm/en-public-cloud-storage-s3-asynchronous-replication-buckets?id=kb_article_view&sysparm_article=KB0062417', + ASIA: + 'https://help.ovhcloud.com/csm/asia-public-cloud-storage-s3-asynchronous-replication-buckets?id=kb_article_view&sysparm_article=KB0062424', + AU: + 'https://help.ovhcloud.com/csm/en-au-public-cloud-storage-s3-asynchronous-replication-buckets?id=kb_article_view&sysparm_article=KB0062420', + CA: + 'https://help.ovhcloud.com/csm/en-ca-public-cloud-storage-s3-asynchronous-replication-buckets?id=kb_article_view&sysparm_article=KB0062423', + DE: + 'https://help.ovhcloud.com/csm/de-public-cloud-storage-s3-asynchronous-replication-buckets?id=kb_article_view&sysparm_article=KB0062426', + ES: + 'https://help.ovhcloud.com/csm/es-es-public-cloud-storage-s3-asynchronous-replication-buckets?id=kb_article_view&sysparm_article=KB0062427', + EU: + 'https://help.ovhcloud.com/csm/en-ie-public-cloud-storage-s3-asynchronous-replication-buckets?id=kb_article_view&sysparm_article=KB0062415', + FR: + 'https://help.ovhcloud.com/csm/fr-public-cloud-storage-s3-asynchronous-replication-buckets?id=kb_article_view&sysparm_article=KB0062418', + GB: + 'https://help.ovhcloud.com/csm/en-gb-public-cloud-storage-s3-asynchronous-replication-buckets?id=kb_article_view&sysparm_article=KB0062422', + IE: + 'https://help.ovhcloud.com/csm/en-ie-public-cloud-storage-s3-asynchronous-replication-buckets?id=kb_article_view&sysparm_article=KB0062415', + IN: + 'https://help.ovhcloud.com/csm/asia-public-cloud-storage-s3-asynchronous-replication-buckets?id=kb_article_view&sysparm_article=KB0062424', + IT: + 'https://help.ovhcloud.com/csm/it-public-cloud-storage-s3-asynchronous-replication-buckets?id=kb_article_view&sysparm_article=KB0062425', + MA: + 'https://help.ovhcloud.com/csm/fr-public-cloud-storage-s3-asynchronous-replication-buckets?id=kb_article_view&sysparm_article=KB0062418', + NL: + 'https://help.ovhcloud.com/csm/en-public-cloud-storage-s3-asynchronous-replication-buckets?id=kb_article_view&sysparm_article=KB0062417', + PL: + 'https://help.ovhcloud.com/csm/pl-public-cloud-storage-s3-asynchronous-replication-buckets?id=kb_article_view&sysparm_article=KB0062421', + PT: + 'https://help.ovhcloud.com/csm/pt-public-cloud-storage-s3-asynchronous-replication-buckets?id=kb_article_view&sysparm_article=KB0062414', + QC: + 'https://help.ovhcloud.com/csm/fr-ca-public-cloud-storage-s3-asynchronous-replication-buckets?id=kb_article_view&sysparm_article=KB0062413', + SG: + 'https://help.ovhcloud.com/csm/en-sg-public-cloud-storage-s3-asynchronous-replication-buckets?id=kb_article_view&sysparm_article=KB0062416', + SN: + 'https://help.ovhcloud.com/csm/fr-public-cloud-storage-s3-asynchronous-replication-buckets?id=kb_article_view&sysparm_article=KB0062418', + TN: + 'https://help.ovhcloud.com/csm/fr-public-cloud-storage-s3-asynchronous-replication-buckets?id=kb_article_view&sysparm_article=KB0062418', + US: + 'https://support.us.ovhcloud.com/hc/en-us/articles/34270032176019-Object-Storage-Master-asynchronous-replication-across-your-buckets', + WE: + 'https://help.ovhcloud.com/csm/en-public-cloud-storage-s3-asynchronous-replication-buckets?id=kb_article_view&sysparm_article=KB0062417', + WS: + 'https://help.ovhcloud.com/csm/es-public-cloud-storage-s3-asynchronous-replication-buckets?id=kb_article_view&sysparm_article=KB0062419', +}; + export const DOWNLOAD_FILENAME = 'import.json'; export const DOWNLOAD_TYPE = 'application/json"'; @@ -202,6 +252,75 @@ export const OBJECT_CONTAINER_USER_ROLES = [ OBJECT_CONTAINER_USER_ROLE_DENY, ]; +export const CONTAINER_GUIDES = [ + { + id: 'rclone', + links: { + DEFAULT: 'https://docs.ovh.com/gb/en/storage/sync-rclone-object-storage/', + FR: 'https://docs.ovh.com/fr/storage/sync-rclone-object-storage/', + DE: 'https://docs.ovh.com/de/storage/sync-Rclone-object-storage/', + GB: 'https://docs.ovh.com/gb/en/storage/sync-rclone-object-storage/', + CA: 'https://docs.ovh.com/ca/en/storage/sync-rclone-object-storage/', + ES: 'https://docs.ovh.com/es/storage/sync-rclone-object-storage/', + IT: 'https://docs.ovh.com/it/storage/sync-rclone-object-storage/', + PT: 'https://docs.ovh.com/pt/storage/sync-rclone-object-storage/', + US: + 'https://support.us.ovhcloud.com/hc/en-us/articles/4605024491667-How-to-Back-Up-Your-Files-to-S3-Object-Storage-with-Rclone', + }, + link: '', + }, + { + id: 'veeam', + links: { + DEFAULT: 'https://docs.ovh.com/gb/en/storage/s3/veeam/', + FR: 'https://docs.ovh.com/fr/storage/s3/veeam/', + DE: 'https://docs.ovh.com/de/storage/s3/veeam/', + GB: 'https://docs.ovh.com/gb/en/storage/s3/veeam/', + CA: 'https://docs.ovh.com/ca/en/storage/s3/veeam/', + ES: 'https://docs.ovh.com/es/storage/s3/veeam/', + IT: 'https://docs.ovh.com/it/storage/s3/veeam/', + PT: 'https://docs.ovh.com/pt/storage/s3/veeam/', + US: + 'https://support.us.ovhcloud.com/hc/en-us/articles/4605427690131-How-to-Use-S3-Object-Storage-with-Veeam', + }, + link: '', + }, + { + id: 's3-limitation', + links: { + DEFAULT: 'https://docs.ovh.com/gb/en/storage/s3/limitations/', + FR: 'https://docs.ovh.com/fr/storage/s3/limitations/', + DE: 'https://docs.ovh.com/de/storage/s3/limitations/', + GB: 'https://docs.ovh.com/gb/en/storage/s3/limitations/', + CA: 'https://docs.ovh.com/ca/en/storage/s3/limitations/', + ES: 'https://docs.ovh.com/es/storage/s3/limitations/', + IT: 'https://docs.ovh.com/it/storage/s3/limitations/', + PT: 'https://docs.ovh.com/pt/storage/s3/limitations/', + US: + 'https://support.us.ovhcloud.com/hc/en-us/articles/4605467875603-Object-Storage-Technical-Limitations', + }, + link: '', + }, +]; + +export const NO_ENCRYPTION_VALUE = 'plaintext'; + +const trackingStorageEncryption = + 'PublicCloud::storages::objects_storage_container::funnel::radio_button::add_objects_storage_container::step4::encrypt_data::'; + +const encryptionAlgorithmSseS3 = 'AES256'; + +export const TRACKING = { + STORAGE_ENCRYPTION: { + [NO_ENCRYPTION_VALUE]: `${trackingStorageEncryption}no_encrypt`, + [encryptionAlgorithmSseS3]: `${trackingStorageEncryption}sse-s3`, + [`TOOLTIP_FUNNEL_${encryptionAlgorithmSseS3}`]: `${trackingStorageEncryption}tooltip_sse-s3`, + [`TOOLTIP_${encryptionAlgorithmSseS3}`]: 'PublicCloud::storages::objects_storage_container::page::tooltip_encrypted_omk_sse-s3', + }, +}; + +export const OPENIO_PRESIGN_EXPIRE = 3600; + export const OBJECT_CONTAINER_OFFER_STORAGE_STANDARD = 'storage-s3-standard'; export const OBJECT_CONTAINER_OFFER_SWIFT = 'storage'; diff --git a/packages/manager/apps/pci-object-storage/src/pages/objects/container/object/Object.page.tsx b/packages/manager/apps/pci-object-storage/src/pages/objects/container/object/Object.page.tsx deleted file mode 100644 index dc09146ef336..000000000000 --- a/packages/manager/apps/pci-object-storage/src/pages/objects/container/object/Object.page.tsx +++ /dev/null @@ -1,14 +0,0 @@ -import { Suspense } from 'react'; -import { Outlet, useParams } from 'react-router-dom'; - -export default function ObjectPage() { - const { storageId } = useParams(); - return ( - <> - Object {storageId} - - - - - ); -} diff --git a/packages/manager/apps/pci-object-storage/src/pages/objects/container/object/delete/Delete.page.tsx b/packages/manager/apps/pci-object-storage/src/pages/objects/container/object/delete/Delete.page.tsx index a444d507aea1..966939d4d05d 100644 --- a/packages/manager/apps/pci-object-storage/src/pages/objects/container/object/delete/Delete.page.tsx +++ b/packages/manager/apps/pci-object-storage/src/pages/objects/container/object/delete/Delete.page.tsx @@ -22,8 +22,9 @@ export default function DeletePage() { region, storageId, ); - const onCancel = () => navigate(`../`); - const onClose = () => navigate(`../`); + const goBack = () => navigate(`../?region=${region}`); + const onCancel = goBack; + const onClose = goBack; const { deleteObject, isPending: isPendingDelete } = useDeleteObject({ projectId, objectName: decodedObjectName, @@ -61,12 +62,12 @@ export default function DeletePage() { , true, ); - navigate('..'); + goBack(); }, }); const onConfirm = () => { deleteObject(); - navigate(`..`); + goBack(); }; const isPending = isPendingStorage || isPendingDelete; return ( diff --git a/packages/manager/apps/pci-object-storage/src/pages/objects/container/object/show/ActionsComponent.tsx b/packages/manager/apps/pci-object-storage/src/pages/objects/container/object/show/ActionsComponent.tsx new file mode 100644 index 000000000000..3e869f1c5a73 --- /dev/null +++ b/packages/manager/apps/pci-object-storage/src/pages/objects/container/object/show/ActionsComponent.tsx @@ -0,0 +1,92 @@ +import { v6 } from '@ovh-ux/manager-core-api'; +import { ActionMenu } from '@ovh-ux/manager-react-components'; +import { useTracking } from '@ovh-ux/manager-react-shell-client'; +import { useTranslation } from 'react-i18next'; +import { useHref, useNavigate, useSearchParams } from 'react-router-dom'; +import { useProject } from '@ovh-ux/manager-pci-common'; +import { addWeeks } from 'date-fns'; +import { OPENIO_PRESIGN_EXPIRE, TRACKING_PREFIX } from '@/constants'; +import { TObject } from '@/api/data/container'; +import { TContainer } from '@/pages/objects/container/object/show/Show.page'; + +export default function ActionsComponent({ + object, + container, + isLocalZone, +}: { + object: TObject; + container: TContainer; + isLocalZone: boolean; +}) { + const { t } = useTranslation('container'); + + const [searchParams] = useSearchParams(); + + const navigate = useNavigate(); + + const addUserHref = useHref(`./addUser?region=${searchParams.get('region')}`); + + const { trackClick } = useTracking(); + + const { data: project } = useProject(); + + const download = async () => { + trackClick({ + name: `${TRACKING_PREFIX}object::download-file`, + type: 'action', + }); + + if (container.s3StorageType) { + const url = `/cloud/project/${project?.project_id}/region/${container.region}/${container.s3StorageType}/${container.name}/presign`; + const options = { + expire: OPENIO_PRESIGN_EXPIRE, + method: 'GET', + object: object.key, + }; + + const { data } = await v6.post<{ url: string }>(url, options); + + window.location.href = data.url; + } else { + const expirationDate = addWeeks(new Date(), 1).toISOString(); + const url = `/cloud/project/${project?.project_id}/storage/${container.name}/publicUrl`; + const options = { + expirationDate, + objectName: object.name, + }; + const { data } = await v6.post<{ getURL: string }>(url, options); + window.open(data.getURL, '_blank'); + } + }; + + const items = [ + container.s3StorageType && + !isLocalZone && { + id: 0, + label: t( + 'pci_projects_project_storages_containers_container_add_user_label', + ), + href: addUserHref, + }, + { + id: 1, + label: t( + 'pci_projects_project_storages_containers_container_download_label', + ), + onClick: download, + }, + { + id: 2, + label: t( + 'pci_projects_project_storages_containers_container_delete_label', + ), + onClick: () => { + navigate( + `./${object.name || object.name}/delete?region=${container.region}`, + ); + }, + }, + ].filter(Boolean); + + return ; +} diff --git a/packages/manager/apps/pci-object-storage/src/pages/objects/container/object/show/Show.page.tsx b/packages/manager/apps/pci-object-storage/src/pages/objects/container/object/show/Show.page.tsx new file mode 100644 index 000000000000..14a4d3ff6eaa --- /dev/null +++ b/packages/manager/apps/pci-object-storage/src/pages/objects/container/object/show/Show.page.tsx @@ -0,0 +1,692 @@ +import { Suspense, useMemo, useRef, useState } from 'react'; +import { + Outlet, + useHref, + useNavigate, + useParams, + useSearchParams, +} from 'react-router-dom'; +import { + OsdsBreadcrumb, + OsdsButton, + OsdsChip, + OsdsFormField, + OsdsIcon, + OsdsLink, + OsdsMessage, + OsdsPopover, + OsdsPopoverContent, + OsdsSearchBar, + OsdsSpinner, + OsdsText, +} from '@ovhcloud/ods-components/react'; +import { + Clipboard, + Datagrid, + FilterAdd, + FilterList, + Headers, + useColumnFilters, + useDataGrid, + useMe, + useNotifications, + useProjectUrl, +} from '@ovh-ux/manager-react-components'; +import { useTranslation } from 'react-i18next'; +import { useBytes, useProject } from '@ovh-ux/manager-pci-common'; +import { useTracking } from '@ovh-ux/manager-react-shell-client'; +import { + ODS_THEME_COLOR_INTENT, + ODS_THEME_TYPOGRAPHY_LEVEL, + ODS_THEME_TYPOGRAPHY_SIZE, +} from '@ovhcloud/ods-common-theming'; +import { + ODS_BUTTON_SIZE, + ODS_BUTTON_VARIANT, + ODS_ICON_NAME, + ODS_ICON_SIZE, + ODS_MESSAGE_TYPE, + ODS_SPINNER_SIZE, + OdsHTMLAnchorElementTarget, +} from '@ovhcloud/ods-components'; +import { FilterCategories } from '@ovh-ux/manager-core-api'; +import { + usePaginatedObjects, + useServerContainer, +} from '@/api/hooks/useContainer'; +import { useDatagridColumn } from './useDatagridColumn'; +import { Tiles } from './Tiles'; +import { + NO_ENCRYPTION_VALUE, + OBJECT_CONTAINER_MODE_LOCAL_ZONE, + OBJECT_CONTAINER_MODE_MONO_ZONE, + OBJECT_CONTAINER_MODE_MULTI_ZONES, + OBJECT_CONTAINER_OFFER_STORAGE_STANDARD, + OBJECT_CONTAINER_S3_STATIC_URL_INFO, + STORAGE_ASYNC_REPLICATION_LINK, + TRACKING, +} from '@/constants'; +import { useGetFeatureAvailability } from '@/api/hooks/useAvailability'; +import { useGetRegion } from '@/api/hooks/useRegion'; +import { useAllStorages } from '@/api/hooks/useStorages'; +import { TServerContainer } from '@/api/data/container'; + +export type TContainer = { + id: string; + objectsCount: number; + usedSpace: string | number; + publicUrl: string; + s3StorageType: string; + staticUrl: string; +} & TServerContainer; + +export default function ObjectPage() { + const { storageId } = useParams(); + const [searchParams] = useSearchParams(); + const { data: project } = useProject(); + + const { trackClick } = useTracking(); + + const { data: allContainers } = useAllStorages(project?.project_id); + + const { me } = useMe(); + + const { formatBytes } = useBytes(); + + const hrefProject = useProjectUrl('public-cloud'); + const { t: tObjects } = useTranslation('objects'); + const { t: tContainer } = useTranslation('container'); + const { t: tCommon } = useTranslation('common'); + const { t: tVersioning } = useTranslation('containers/enable-versioning'); + const { t: tAdd } = useTranslation('storages/add'); + const { t: tDataEncryption } = useTranslation('container/data-encryption'); + const objectStorageHref = useHref('..'); + const enableVersioningHref = useHref( + `./enableVersioning?region=${searchParams.get('region')}`, + ); + + const { data: region } = useGetRegion( + project?.project_id, + searchParams.get('region'), + ); + + const targetContainer = useMemo( + () => + allContainers?.resources.find( + (c) => c.id === storageId || c.name === storageId, + ), + [allContainers, storageId], + ); + + const { data: serverContainer, isPending } = useServerContainer( + project?.project_id, + searchParams.get('region'), + targetContainer?.name, + targetContainer?.id, + ); + + const container = useMemo((): TContainer => { + if (!serverContainer) return undefined; + return { + ...serverContainer, + id: serverContainer?.id || targetContainer?.id, + name: serverContainer?.name || targetContainer?.name, + objectsCount: + serverContainer?.storedObjects || serverContainer?.objectsCount, + usedSpace: formatBytes( + serverContainer?.storedBytes || serverContainer?.objectsSize, + 2, + 1000, + ), + publicUrl: region?.services.find( + (service) => service.name === OBJECT_CONTAINER_OFFER_STORAGE_STANDARD, + )?.endpoint, + s3StorageType: allContainers?.resources.find( + (c) => c.id === storageId || c.name === storageId, + )?.s3StorageType, + staticUrl: serverContainer?.staticUrl || serverContainer?.virtualHost, + }; + }, [serverContainer, region, allContainers]); + + const is = { + localZone: useMemo( + () => + region?.services.find( + (service) => service.name === OBJECT_CONTAINER_MODE_LOCAL_ZONE, + ), + [region], + ), + encrypted: useMemo(() => { + const { sseAlgorithm } = serverContainer?.encryption || {}; + return sseAlgorithm && sseAlgorithm !== NO_ENCRYPTION_VALUE; + }, [serverContainer]), + rightOffer: useMemo(() => !!container?.s3StorageType, [container]), + replicationRulesBannerShown: useMemo(() => { + const hasEnabledRule = container?.replication?.rules?.some( + (rule) => rule.status === 'enabled', + ); + + const service = region?.services.find( + ({ name }) => name === OBJECT_CONTAINER_OFFER_STORAGE_STANDARD, + ); + + const validTypes = [ + OBJECT_CONTAINER_MODE_MONO_ZONE, + OBJECT_CONTAINER_MODE_MULTI_ZONES, + ]; + + return !hasEnabledRule && validTypes.includes(region?.type); + }, [container, region]), + }; + + const REPLICATION_LINK = + STORAGE_ASYNC_REPLICATION_LINK[me?.ovhSubsidiary] || + STORAGE_ASYNC_REPLICATION_LINK.DEFAULT; + + const { available: isEncryptionAvailable } = useGetFeatureAvailability( + 'public-cloud:object-storage:encryption', + 'public-cloud', + ); + + const displayEncryptionData = useMemo(() => { + return isEncryptionAvailable && !!container?.s3StorageType; + }, [isEncryptionAvailable, serverContainer]); + + const columns = useDatagridColumn({ + container, + isLocalZone: !!is.localZone, + }); + const navigate = useNavigate(); + const { clearNotifications } = useNotifications(); + + const { t: tFilter } = useTranslation('filters'); + + const { filters, addFilter, removeFilter } = useColumnFilters(); + const [searchField, setSearchField] = useState(''); + + const [searchQueries, setSearchQueries] = useState([]); + const filterPopoverRef = useRef(undefined); + + const { pagination, setPagination, sorting, setSorting } = useDataGrid(); + + const { paginatedObjects } = usePaginatedObjects( + project?.project_id, + searchParams.get('region'), + targetContainer?.name, + targetContainer?.id, + pagination, + sorting, + filters, + ); + + return ( + <> + +
+ +
+
+ + + {`${tCommon('common_back_button_back_to')} + "${tContainer( + 'pci_projects_project_storages_containers_container_back_button_label', + )}"`} + +
+ {/* maintenance banner */} +
+ + + {tContainer( + 'pci_projects_project_storages_containers_container_add_replication_rules_info', + )}{' '} + + {tAdd( + 'pci_projects_project_storages_containers_add_replication_rules_info_link', + )} + + + + + {container && ( + <> +
+
+
+ + ${container?.region}` }, + ), + }} + > + +
+ + {!is.localZone && ( +
+ + ${container?.objectsCount}`, + }, + ), + }} + > + +
+ )} + + {!is.localZone && ( +
+ + ${container?.usedSpace}` }, + ), + }} + > + +
+ )} + {displayEncryptionData && !is.encrypted && !is.localZone && ( +
+ + + +
+ )} + {displayEncryptionData && is.encrypted && ( +
+ + + + + { + const name = TRACKING.STORAGE_ENCRYPTION.TOOLTIP_AES256; + if (name) { + trackClick({ + name, + type: 'action', + }); + } + }} + /> + + + {tDataEncryption( + 'pci_projects_project_storages_containers_data_encryption_aes256_tooltip', + )} + + + +
+ )} + {is.rightOffer && !is.localZone && ( +
+ + {tVersioning( + 'pci_projects_project_storages_containers_update_versioning_versioning', + )} + + { + if (container.versioning.status === 'enabled') + return ODS_THEME_COLOR_INTENT.success; + if (container.versioning.status === 'disabled') + return ODS_THEME_COLOR_INTENT.error; + if (container.versioning.status === 'suspended') + return ODS_THEME_COLOR_INTENT.warning; + return ODS_THEME_COLOR_INTENT.default; + })()} + className="ml-4" + > + {tVersioning( + `pci_projects_project_storages_containers_update_versioning_${container.versioning.status}_label`, + )} + +
+ )} + {(is.rightOffer && + !is.localZone && + container.versioning?.status === 'suspended') || + (container.versioning?.status === 'disabled' && ( +
+ + {tVersioning( + 'pci_projects_project_storages_containers_update_versioning_title', + )} + + +
+ ))} +
+
+
+ + + {tContainer( + 'pci_projects_project_storages_containers_container_info_id', + )} + + + +
+ +
+ + + + {tContainer( + 'pci_projects_project_storages_containers_container_info_publicUrl', + )} + + + + + + {tContainer( + 'pci_projects_project_storages_containers_container_info_publicUrl_help', + )} + + + + + + +
+ +
+ + + + {container.s3StorageType + ? OBJECT_CONTAINER_S3_STATIC_URL_INFO + : tContainer( + 'pci_projects_project_storages_containers_container_object_info_staticUrl', + )} + + + + + + {tContainer( + `pci_projects_project_storages_containers_container_object_info_${ + container.s3StorageType + ? 's3_staticUrl_help' + : 'staticUrl_help' + }`, + )} + + + + + + +
+
+
+ +
+ { + clearNotifications(); + navigate(`./new?region=${searchParams.get('region')}`); + }} + > + + {tContainer( + `pci_projects_project_storages_containers_container_add_object_label`, + )} + + +
+ { + const { inputValue } = detail; + if (inputValue) { + setSearchField(''); + if (searchQueries.indexOf(inputValue) < 0) { + setSearchQueries([...searchQueries, inputValue]); + setPagination({ + ...pagination, + pageIndex: 0, + }); + } else { + setSearchQueries([...searchQueries]); + } + } + }} + /> + + + + {tFilter('common_criteria_adder_filter_label')} + + + { + setPagination({ + pageIndex: 0, + pageSize: pagination.pageSize, + }); + addFilter({ + ...addedFilter, + label: column.label, + }); + filterPopoverRef.current?.closeSurface(); + }} + /> + + +
+
+
+ +
+ {isPending ? ( + + ) : ( + + )} + + + )} + + + + + ); +} diff --git a/packages/manager/apps/pci-object-storage/src/pages/objects/container/object/show/Tiles.tsx b/packages/manager/apps/pci-object-storage/src/pages/objects/container/object/show/Tiles.tsx new file mode 100644 index 000000000000..f39ee39dff51 --- /dev/null +++ b/packages/manager/apps/pci-object-storage/src/pages/objects/container/object/show/Tiles.tsx @@ -0,0 +1,30 @@ +import { Card, useMe } from '@ovh-ux/manager-react-components'; +import { useTranslation } from 'react-i18next'; +import { CONTAINER_GUIDES } from '@/constants'; + +export function Tiles() { + const { t: tContainer } = useTranslation('container'); + const { t: tOnboarding } = useTranslation('onboarding'); + + const { me } = useMe(); + const tileItems = CONTAINER_GUIDES.map((guide) => ({ + id: guide.id, + href: guide.links[me?.ovhSubsidiary] || guide.links.DEFAULT, + texts: { + category: tOnboarding('onboarding_guide_title'), + description: tContainer( + `pci_projects_project_storages_containers_container_documentation_description_${guide.id}`, + ), + title: tContainer( + `pci_projects_project_storages_containers_container_documentation_title_${guide.id}`, + ), + }, + })); + return ( +
+ {tileItems.map((tile) => ( + + ))} +
+ ); +} diff --git a/packages/manager/apps/pci-object-storage/src/pages/objects/container/object/show/usedatagridColumn.tsx b/packages/manager/apps/pci-object-storage/src/pages/objects/container/object/show/usedatagridColumn.tsx new file mode 100644 index 000000000000..2fdc72451eb2 --- /dev/null +++ b/packages/manager/apps/pci-object-storage/src/pages/objects/container/object/show/usedatagridColumn.tsx @@ -0,0 +1,88 @@ +import { + DatagridColumn, + DataGridTextCell, +} from '@ovh-ux/manager-react-components'; +import { useTranslation } from 'react-i18next'; +import { useBytes } from '@ovh-ux/manager-pci-common'; +import { format } from 'date-fns'; +import ActionsComponent from './ActionsComponent'; +import { TObject } from '@/api/data/container'; +import { TContainer } from '@/pages/objects/container/object/show/Show.page'; + +export const useDatagridColumn = ({ + container, + isLocalZone, +}: { + container: TContainer; + isLocalZone: boolean; +}) => { + const { t } = useTranslation('container'); + + const { formatBytes } = useBytes(); + + const columns: DatagridColumn[] = [ + { + id: 'key', + cell: (props: TObject) => ( + {props.name || props.key} + ), + label: t('pci_projects_project_storages_containers_container_name_label'), + }, + { + id: 'lastModified', + cell: (props: TObject) => ( + + {format(new Date(props.lastModified), 'dd MMM yyyy HH:mm:ss')} + + ), + label: t( + 'pci_projects_project_storages_containers_container_lastModified_label', + ), + }, + container?.s3StorageType && { + id: 'storageClass', + cell: (props: TObject) => ( + + {t( + `pci_projects_project_storages_containers_container_storage_class_${props.storageClass}`, + )} + + ), + label: t( + 'pci_projects_project_storages_containers_container_storage_class_label', + ), + }, + { + id: 'size', + cell: (props: TObject) => ( + {formatBytes(props.size, 2)} + ), + label: t('pci_projects_project_storages_containers_container_size_label'), + }, + !container?.s3StorageType && { + id: 'contentType', + cell: (props: TObject) => ( + {props.contentType} + ), + label: t( + 'pci_projects_project_storages_containers_container_contentType_label', + ), + }, + { + id: 'actions', + cell: (props: TObject) => ( +
+ +
+ ), + label: '', + isSortable: false, + }, + ].filter(Boolean); + + return columns; +}; diff --git a/packages/manager/apps/pci-object-storage/src/pages/objects/container/useDatagridColumn.tsx b/packages/manager/apps/pci-object-storage/src/pages/objects/container/useDatagridColumn.tsx index e137a506051b..0856031f5e69 100644 --- a/packages/manager/apps/pci-object-storage/src/pages/objects/container/useDatagridColumn.tsx +++ b/packages/manager/apps/pci-object-storage/src/pages/objects/container/useDatagridColumn.tsx @@ -30,7 +30,7 @@ export const useDatagridColumn = () => { color={ODS_THEME_COLOR_INTENT.primary} onClick={() => navigate({ - pathname: `./${props.name}`, + pathname: `./${props.id || props.name}`, search: `?${createSearchParams({ region: props.region, })}`, diff --git a/packages/manager/apps/pci-object-storage/src/routes.tsx b/packages/manager/apps/pci-object-storage/src/routes.tsx index 988dc9f10013..54f732e9dce7 100644 --- a/packages/manager/apps/pci-object-storage/src/routes.tsx +++ b/packages/manager/apps/pci-object-storage/src/routes.tsx @@ -22,7 +22,7 @@ const LayoutPage = lazy(() => import('@/pages/Layout')); const OnboardingPage = lazy(() => import('@/pages/onboarding/Onboarding.page')); const StoragePage = lazy(() => import('@/pages/objects/Storage.page')); const ObjectPage = lazy(() => - import('@/pages/objects/container/object/Object.page'), + import('@/pages/objects/container/object/show/Show.page'), ); const DeleteObjectPage = lazy(() => import('@/pages/objects/container/object/delete/Delete.page'),