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 && (