diff --git a/invenio_administration/admin.py b/invenio_administration/admin.py index d5109a2..3deea98 100644 --- a/invenio_administration/admin.py +++ b/invenio_administration/admin.py @@ -3,6 +3,7 @@ # This file is part of Invenio. # Copyright (C) 2022-2024 CERN. # Copyright (C) 2023-2024 Graz University of Technology. +# Copyright (C) 2024 KTH Royal Institute of Technology. # # Invenio is free software; you can redistribute it and/or modify it # under the terms of the MIT License; see LICENSE file for more details. @@ -11,6 +12,7 @@ from flask import Blueprint from flask_menu import current_menu +from invenio_i18n import lazy_gettext as _ from werkzeug.utils import import_string from invenio_administration.menu import AdminMenu @@ -50,7 +52,7 @@ def __init__( self.blueprint = None if name is None: - name = "Administration" + name = _("Administration") self.name = name self.dashboard_view_class = self.load_admin_dashboard(app) diff --git a/invenio_administration/assets/semantic-ui/js/invenio_administration/src/actions/DeleteModal.js b/invenio_administration/assets/semantic-ui/js/invenio_administration/src/actions/DeleteModal.js index 56da7c9..3e319be 100644 --- a/invenio_administration/assets/semantic-ui/js/invenio_administration/src/actions/DeleteModal.js +++ b/invenio_administration/assets/semantic-ui/js/invenio_administration/src/actions/DeleteModal.js @@ -1,5 +1,6 @@ // This file is part of InvenioAdministration // Copyright (C) 2022 CERN. +// Copyright (C) 2024 KTH Royal Institute of Technology. // // Invenio RDM Records is free software; you can redistribute it and/or modify it // under the terms of the MIT License; see LICENSE file for more details. @@ -40,14 +41,14 @@ class DeleteModal extends Component { await InvenioAdministrationActionsApi.deleteResource(apiEndpoint); toggleModal(false); addNotification({ - title: "Success", - content: "Resource was successfully deleted.", + title: i18next.t("Success"), + content: i18next.t("Resource was successfully deleted."), type: "success", }); successCallback(); } catch (e) { this.setState({ - error: { header: "Action error", content: e.message, id: e.code }, + error: { header: i18next.t("Action error"), content: e.message, id: e.code }, }); } }; diff --git a/invenio_administration/assets/semantic-ui/js/invenio_administration/src/formik/ActionForm.js b/invenio_administration/assets/semantic-ui/js/invenio_administration/src/formik/ActionForm.js index 004970d..9f249df 100644 --- a/invenio_administration/assets/semantic-ui/js/invenio_administration/src/formik/ActionForm.js +++ b/invenio_administration/assets/semantic-ui/js/invenio_administration/src/formik/ActionForm.js @@ -1,3 +1,10 @@ +// This file is part of InvenioAdministration +// Copyright (C) 2022 CERN. +// Copyright (C) 2024 KTH Royal Institute of Technology. +// +// Invenio RDM Records is free software; you can redistribute it and/or modify it +// under the terms of the MIT License; see LICENSE file for more details. + import React, { Component } from "react"; import PropTypes from "prop-types"; import { Form, Formik } from "formik"; @@ -121,7 +128,7 @@ class ActionForm extends Component { } this.setState({ - error: { header: "Action error", content: errorMessage, id: e.code }, + error: { header: i18next.t("Action error"), content: errorMessage, id: e.code }, }); } }; diff --git a/invenio_administration/assets/semantic-ui/js/invenio_administration/src/formik/AdminForm.js b/invenio_administration/assets/semantic-ui/js/invenio_administration/src/formik/AdminForm.js index 4d9b68f..74cdf0f 100644 --- a/invenio_administration/assets/semantic-ui/js/invenio_administration/src/formik/AdminForm.js +++ b/invenio_administration/assets/semantic-ui/js/invenio_administration/src/formik/AdminForm.js @@ -1,3 +1,10 @@ +// This file is part of InvenioAdministration +// Copyright (C) 2022 CERN. +// Copyright (C) 2024 KTH Royal Institute of Technology. +// +// Invenio RDM Records is free software; you can redistribute it and/or modify it +// under the terms of the MIT License; see LICENSE file for more details. + import React, { Component } from "react"; import PropTypes from "prop-types"; import { Form, Formik } from "formik"; @@ -58,7 +65,7 @@ export class AdminForm extends Component { } } catch (e) { console.error(`Error parsing JSON for field ${key}:`, e); - actions.setFieldError(key, "Invalid JSON format"); + actions.setFieldError(key, i18next.t("Invalid JSON format")); throw e; } } @@ -81,8 +88,8 @@ export class AdminForm extends Component { actions.setSubmitting(false); actions.resetForm({ values: { ...values } }); addNotification({ - title: "Success", - content: "Your changes were successfully submitted", + title: i18next.t("Success"), + content: i18next.t("Your changes were successfully submitted"), type: "success", }); successCallback(response.data); @@ -100,7 +107,7 @@ export class AdminForm extends Component { } this.setState({ - error: { header: "Form error", content: errorMessage, id: e.code }, + error: { header: i18next.t("Form error"), content: errorMessage, id: e.code }, }); } }; diff --git a/invenio_administration/assets/semantic-ui/js/invenio_administration/src/search/SearchEmptyResults.js b/invenio_administration/assets/semantic-ui/js/invenio_administration/src/search/SearchEmptyResults.js index 9ae1ca7..3561841 100644 --- a/invenio_administration/assets/semantic-ui/js/invenio_administration/src/search/SearchEmptyResults.js +++ b/invenio_administration/assets/semantic-ui/js/invenio_administration/src/search/SearchEmptyResults.js @@ -1,6 +1,7 @@ /* * This file is part of Invenio. * Copyright (C) 2022 CERN. + * Copyright (C) 2024 KTH Royal Institute of Technology. * * Invenio is free software; you can redistribute it and/or modify it * under the terms of the MIT License; see LICENSE file for more details. @@ -33,7 +34,11 @@ class SearchEmptyResults extends Component { {isEmptyPage && i18next.t("There is no resources in this category.")} {isEmptyPageAfterSearch && i18next.t("No matching resources found.")} - {queryString && Current search "{queryString}"} + {queryString && ( + + {i18next.t("Current search")} "{queryString}" + + )}
{isEmptyPageAfterSearch && (