diff --git a/plane-src/apps/web/core/components/cycles/delete-modal.tsx b/plane-src/apps/web/core/components/cycles/delete-modal.tsx
index 04f99b2..0744634 100644
--- a/plane-src/apps/web/core/components/cycles/delete-modal.tsx
+++ b/plane-src/apps/web/core/components/cycles/delete-modal.tsx
@@ -49,8 +49,8 @@ export const CycleDeleteModal = observer(function CycleDeleteModal(props: ICycle
if (cycleId || peekCycle) router.push(`/${workspaceSlug}/projects/${projectId}/cycles`);
setToast({
type: TOAST_TYPE.SUCCESS,
- title: "Success!",
- message: "Cycle deleted successfully.",
+ title: t("common.success"),
+ message: t("entity.delete.success", { entity: t("common.cycle").toLowerCase() }),
});
})
.catch((errors) => {
@@ -68,8 +68,8 @@ export const CycleDeleteModal = observer(function CycleDeleteModal(props: ICycle
} catch {
setToast({
type: TOAST_TYPE.ERROR,
- title: "Warning!",
- message: "Something went wrong please try again later.",
+ title: t("common.warning"),
+ message: t("common.something_went_wrong"),
});
}
@@ -82,14 +82,11 @@ export const CycleDeleteModal = observer(function CycleDeleteModal(props: ICycle
handleSubmit={formSubmit}
isSubmitting={loader}
isOpen={isOpen}
- title="Delete cycle"
- content={
- <>
- Are you sure you want to delete cycle{' "'}
- {cycle?.name}
- {'"'}? All of the data related to the cycle will be permanently removed. This action cannot be undone.
- >
- }
+ title={t("entity.delete.label", { entity: t("common.cycle") })}
+ content={t("entity.delete.confirmation", {
+ entity: t("common.cycle").toLowerCase(),
+ identifier: cycle?.name ? `"${cycle.name}"` : "",
+ })}
/>
);
});
diff --git a/plane-src/apps/web/core/components/estimates/delete/modal.tsx b/plane-src/apps/web/core/components/estimates/delete/modal.tsx
index e6b39fc..e514e41 100644
--- a/plane-src/apps/web/core/components/estimates/delete/modal.tsx
+++ b/plane-src/apps/web/core/components/estimates/delete/modal.tsx
@@ -7,9 +7,9 @@
import { useState } from "react";
import { observer } from "mobx-react";
// ui
-import { Button } from "@plane/propel/button";
+import { useTranslation } from "@plane/i18n";
import { TOAST_TYPE, setToast } from "@plane/propel/toast";
-import { EModalPosition, EModalWidth, ModalCore } from "@plane/ui";
+import { AlertModalCore } from "@plane/ui";
// hooks
import { useProjectEstimates } from "@/hooks/store/estimates";
import { useEstimate } from "@/hooks/store/estimates/use-estimate";
@@ -26,6 +26,7 @@ type TDeleteEstimateModal = {
export const DeleteEstimateModal = observer(function DeleteEstimateModal(props: TDeleteEstimateModal) {
// props
const { workspaceSlug, projectId, estimateId, isOpen, handleClose } = props;
+ const { t } = useTranslation();
// hooks
const { areEstimateEnabledByProjectId, deleteEstimate } = useProjectEstimates();
const { asJson: estimate } = useEstimate(estimateId);
@@ -44,46 +45,32 @@ export const DeleteEstimateModal = observer(function DeleteEstimateModal(props:
setButtonLoader(false);
setToast({
type: TOAST_TYPE.SUCCESS,
- title: "Estimate deleted",
- message: "Estimate has been removed from your project.",
+ title: t("project_settings.estimates.delete_modal.success_title"),
+ message: t("project_settings.estimates.delete_modal.success_message"),
});
handleClose();
} catch (_error) {
setButtonLoader(false);
setToast({
type: TOAST_TYPE.ERROR,
- title: "Estimate creation failed",
- message: "We were unable to delete the estimate, please try again.",
+ title: t("project_settings.estimates.delete_modal.error_title"),
+ message: t("project_settings.estimates.delete_modal.error_message"),
});
}
};
return (
-
-
- {/* heading */}
-
-
Delete Estimate System
-
-
- {/* estimate steps */}
-
-
- Deleting the estimate {estimate?.name}
- system will remove it from all work items permanently. This action cannot be undone. If you add
- estimates again, you will need to update all the work items.
-
-
-
-
-
-
-
-
-
+
);
});
diff --git a/plane-src/apps/web/core/components/inbox/modals/decline-issue-modal.tsx b/plane-src/apps/web/core/components/inbox/modals/decline-issue-modal.tsx
index 7fe5a07..09d5526 100644
--- a/plane-src/apps/web/core/components/inbox/modals/decline-issue-modal.tsx
+++ b/plane-src/apps/web/core/components/inbox/modals/decline-issue-modal.tsx
@@ -47,16 +47,9 @@ export function DeclineIssueModal(props: Props) {
isSubmitting={isDeclining}
isOpen={isOpen}
title={t("inbox_issue.modals.decline.title")}
- // TODO: Need to translate the confirmation message
- content={
- <>
- Are you sure you want to decline work item{" "}
-
- {projectDetails?.identifier}-{data?.sequence_id}
-
- {""}? This action cannot be undone.
- >
- }
+ content={t("inbox_issue.modals.decline.content", {
+ value: `${projectDetails?.identifier}-${data?.sequence_id}`,
+ })}
primaryButtonText={{
loading: t("declining"),
default: t("decline"),
diff --git a/plane-src/apps/web/core/components/issues/attachment/delete-attachment-modal.tsx b/plane-src/apps/web/core/components/issues/attachment/delete-attachment-modal.tsx
index 676f4e3..b6fcb89 100644
--- a/plane-src/apps/web/core/components/issues/attachment/delete-attachment-modal.tsx
+++ b/plane-src/apps/web/core/components/issues/attachment/delete-attachment-modal.tsx
@@ -63,14 +63,7 @@ export const IssueAttachmentDeleteModal = observer(function IssueAttachmentDelet
isSubmitting={loader}
isOpen={isOpen}
title={t("attachment.delete")}
- content={
- <>
- {/* TODO: Translate here */}
- Are you sure you want to delete attachment-{" "}
- {getFileName(attachment.attributes.name)}? This attachment will be
- permanently removed. This action cannot be undone.
- >
- }
+ content={t("attachment.delete_confirmation", { value: getFileName(attachment.attributes.name) })}
/>
);
});
diff --git a/plane-src/apps/web/core/components/labels/delete-label-modal.tsx b/plane-src/apps/web/core/components/labels/delete-label-modal.tsx
index 9adc238..68e1aa6 100644
--- a/plane-src/apps/web/core/components/labels/delete-label-modal.tsx
+++ b/plane-src/apps/web/core/components/labels/delete-label-modal.tsx
@@ -8,6 +8,7 @@ import { useState } from "react";
import { observer } from "mobx-react";
import { useParams } from "next/navigation";
// types
+import { useTranslation } from "@plane/i18n";
import { TOAST_TYPE, setToast } from "@plane/propel/toast";
import type { IIssueLabel } from "@plane/types";
// ui
@@ -23,6 +24,7 @@ type Props = {
export const DeleteLabelModal = observer(function DeleteLabelModal(props: Props) {
const { isOpen, onClose, data } = props;
+ const { t } = useTranslation();
// router
const { workspaceSlug, projectId } = useParams();
// store hooks
@@ -46,10 +48,10 @@ export const DeleteLabelModal = observer(function DeleteLabelModal(props: Props)
})
.catch((err) => {
setIsDeleteLoading(false);
- const error = err?.error || "Label could not be deleted. Please try again.";
+ const error = err?.error || t("label.delete_error");
setToast({
type: TOAST_TYPE.ERROR,
- title: "Error!",
+ title: t("common.error.label"),
message: error,
});
});
@@ -61,13 +63,8 @@ export const DeleteLabelModal = observer(function DeleteLabelModal(props: Props)
handleSubmit={handleDeletion}
isSubmitting={isDeleteLoading}
isOpen={isOpen}
- title="Delete Label"
- content={
- <>
- Are you sure you want to delete {data?.name}? This will
- remove the label from all the work item and from any views where the label is being filtered upon.
- >
- }
+ title={t("entity.delete.label", { entity: t("common.label") })}
+ content={t("label.delete_confirmation", { value: data?.name ?? "" })}
/>
);
});
diff --git a/plane-src/apps/web/core/components/modules/delete-module-modal.tsx b/plane-src/apps/web/core/components/modules/delete-module-modal.tsx
index f3bfe38..75568d0 100644
--- a/plane-src/apps/web/core/components/modules/delete-module-modal.tsx
+++ b/plane-src/apps/web/core/components/modules/delete-module-modal.tsx
@@ -52,8 +52,8 @@ export const DeleteModuleModal = observer(function DeleteModuleModal(props: Prop
handleClose();
setToast({
type: TOAST_TYPE.SUCCESS,
- title: "Success!",
- message: "Module deleted successfully.",
+ title: t("common.success"),
+ message: t("entity.delete.success", { entity: t("common.module").toLowerCase() }),
});
})
.catch((errors) => {
@@ -76,14 +76,11 @@ export const DeleteModuleModal = observer(function DeleteModuleModal(props: Prop
handleSubmit={handleDeletion}
isSubmitting={isDeleteLoading}
isOpen={isOpen}
- title="Delete module"
- content={
- <>
- Are you sure you want to delete module-{" "}
- {data?.name}? All of the data related to the
- module will be permanently removed. This action cannot be undone.
- >
- }
+ title={t("entity.delete.label", { entity: t("common.module") })}
+ content={t("entity.delete.confirmation", {
+ entity: t("common.module").toLowerCase(),
+ identifier: data?.name ? `"${data.name}"` : "",
+ })}
/>
);
});
diff --git a/plane-src/apps/web/core/components/pages/modals/delete-page-modal.tsx b/plane-src/apps/web/core/components/pages/modals/delete-page-modal.tsx
index 937409b..0ff8248 100644
--- a/plane-src/apps/web/core/components/pages/modals/delete-page-modal.tsx
+++ b/plane-src/apps/web/core/components/pages/modals/delete-page-modal.tsx
@@ -8,6 +8,7 @@ import { useState } from "react";
import { observer } from "mobx-react";
// ui
import { useParams } from "next/navigation";
+import { useTranslation } from "@plane/i18n";
import { TOAST_TYPE, setToast } from "@plane/propel/toast";
import { AlertModalCore } from "@plane/ui";
import { getPageName } from "@plane/utils";
@@ -28,6 +29,7 @@ type TConfirmPageDeletionProps = {
export const DeletePageModal = observer(function DeletePageModal(props: TConfirmPageDeletionProps) {
const { isOpen, onClose, page, storeType } = props;
+ const { t } = useTranslation();
// states
const [isDeleting, setIsDeleting] = useState(false);
// store hooks
@@ -52,8 +54,8 @@ export const DeletePageModal = observer(function DeletePageModal(props: TConfirm
handleClose();
setToast({
type: TOAST_TYPE.SUCCESS,
- title: "Success!",
- message: "Page deleted successfully.",
+ title: t("project_page.delete_modal.success_title"),
+ message: t("project_page.delete_modal.success_message"),
});
if (routePageId) {
@@ -63,8 +65,8 @@ export const DeletePageModal = observer(function DeletePageModal(props: TConfirm
.catch(() => {
setToast({
type: TOAST_TYPE.ERROR,
- title: "Error!",
- message: "Page could not be deleted. Please try again.",
+ title: t("project_page.delete_modal.error_title"),
+ message: t("project_page.delete_modal.error_message"),
});
});
@@ -79,14 +81,8 @@ export const DeletePageModal = observer(function DeletePageModal(props: TConfirm
handleSubmit={handleDelete}
isSubmitting={isDeleting}
isOpen={isOpen}
- title="Delete page"
- content={
- <>
- Are you sure you want to delete page-{" "}
- {getPageName(name)} ? The Page will be
- deleted permanently. This action cannot be undone.
- >
- }
+ title={t("project_page.delete_modal.title")}
+ content={t("project_page.delete_modal.content", { value: getPageName(name) })}
/>
);
});
diff --git a/plane-src/apps/web/core/components/project-states/options/delete.tsx b/plane-src/apps/web/core/components/project-states/options/delete.tsx
index 65f4b41..f349c0a 100644
--- a/plane-src/apps/web/core/components/project-states/options/delete.tsx
+++ b/plane-src/apps/web/core/components/project-states/options/delete.tsx
@@ -7,6 +7,7 @@
import { useState } from "react";
import { observer } from "mobx-react";
import { Loader } from "lucide-react";
+import { useTranslation } from "@plane/i18n";
import { CloseIcon } from "@plane/propel/icons";
// plane imports
import { TOAST_TYPE, setToast } from "@plane/propel/toast";
@@ -26,6 +27,7 @@ type TStateDelete = {
export const StateDelete = observer(function StateDelete(props: TStateDelete) {
const { totalStates, state, deleteStateCallback } = props;
+ const { t } = useTranslation();
// hooks
const { isMobile } = usePlatformOS();
// states
@@ -47,15 +49,14 @@ export const StateDelete = observer(function StateDelete(props: TStateDelete) {
if (errorStatus.status === 400) {
setToast({
type: TOAST_TYPE.ERROR,
- title: "Error!",
- message:
- "This state contains some work items within it, please move them to some other state to delete this state.",
+ title: t("common.error.label"),
+ message: t("project_settings.states.delete.blocked"),
});
} else {
setToast({
type: TOAST_TYPE.ERROR,
- title: "Error!",
- message: "State could not be deleted. Please try again.",
+ title: t("common.error.label"),
+ message: t("project_settings.states.delete.error"),
});
}
setIsDelete(false);
@@ -69,13 +70,11 @@ export const StateDelete = observer(function StateDelete(props: TStateDelete) {
handleSubmit={handleDeleteState}
isSubmitting={isDelete}
isOpen={isDeleteModal}
- title="Delete State"
- content={
- <>
- Are you sure you want to delete state- {state?.name}? All
- of the data related to the state will be permanently removed. This action cannot be undone.
- >
- }
+ title={t("entity.delete.label", { entity: t("common.state") })}
+ content={t("entity.delete.confirmation", {
+ entity: t("common.state").toLowerCase(),
+ identifier: state?.name ? `"${state.name}"` : "",
+ })}
/>