mirror of
https://github.com/makeplane/plane.git
synced 2025-12-16 20:07:56 +01:00
[WEB-5624] chore: added webhook translations #8312
This commit is contained in:
committed by
GitHub
parent
8e518966c2
commit
906c1b51bb
@@ -2,24 +2,24 @@ import { useState } from "react";
|
|||||||
import { intersection } from "lodash-es";
|
import { intersection } from "lodash-es";
|
||||||
import { observer } from "mobx-react";
|
import { observer } from "mobx-react";
|
||||||
import { Controller, useForm } from "react-hook-form";
|
import { Controller, useForm } from "react-hook-form";
|
||||||
import { Info } from "lucide-react";
|
// import { Info } from "lucide-react";
|
||||||
import {
|
import {
|
||||||
EUserPermissions,
|
EUserPermissions,
|
||||||
EUserPermissionsLevel,
|
EUserPermissionsLevel,
|
||||||
EXPORTERS_LIST,
|
EXPORTERS_LIST,
|
||||||
ISSUE_DISPLAY_FILTERS_BY_PAGE,
|
// ISSUE_DISPLAY_FILTERS_BY_PAGE,
|
||||||
WORKSPACE_SETTINGS_TRACKER_EVENTS,
|
WORKSPACE_SETTINGS_TRACKER_EVENTS,
|
||||||
WORKSPACE_SETTINGS_TRACKER_ELEMENTS,
|
WORKSPACE_SETTINGS_TRACKER_ELEMENTS,
|
||||||
} from "@plane/constants";
|
} from "@plane/constants";
|
||||||
import { useTranslation } from "@plane/i18n";
|
import { useTranslation } from "@plane/i18n";
|
||||||
import { Button } from "@plane/propel/button";
|
import { Button } from "@plane/propel/button";
|
||||||
import { TOAST_TYPE, setToast } from "@plane/propel/toast";
|
import { TOAST_TYPE, setToast } from "@plane/propel/toast";
|
||||||
import { Tooltip } from "@plane/propel/tooltip";
|
// import { Tooltip } from "@plane/propel/tooltip";
|
||||||
import { EIssuesStoreType } from "@plane/types";
|
// import { EIssuesStoreType } from "@plane/types";
|
||||||
import type { TWorkItemFilterExpression } from "@plane/types";
|
import type { TWorkItemFilterExpression } from "@plane/types";
|
||||||
import { CustomSearchSelect, CustomSelect } from "@plane/ui";
|
import { CustomSearchSelect, CustomSelect } from "@plane/ui";
|
||||||
import { WorkspaceLevelWorkItemFiltersHOC } from "@/components/work-item-filters/filters-hoc/workspace-level";
|
// import { WorkspaceLevelWorkItemFiltersHOC } from "@/components/work-item-filters/filters-hoc/workspace-level";
|
||||||
import { WorkItemFiltersRow } from "@/components/work-item-filters/filters-row";
|
// import { WorkItemFiltersRow } from "@/components/work-item-filters/filters-row";
|
||||||
import { captureError, captureSuccess } from "@/helpers/event-tracker.helper";
|
import { captureError, captureSuccess } from "@/helpers/event-tracker.helper";
|
||||||
import { useProject } from "@/hooks/store/use-project";
|
import { useProject } from "@/hooks/store/use-project";
|
||||||
import { useUser, useUserPermissions } from "@/hooks/store/user";
|
import { useUser, useUserPermissions } from "@/hooks/store/user";
|
||||||
@@ -37,15 +37,15 @@ type FormData = {
|
|||||||
filters: TWorkItemFilterExpression;
|
filters: TWorkItemFilterExpression;
|
||||||
};
|
};
|
||||||
|
|
||||||
const initialWorkItemFilters = {
|
// const initialWorkItemFilters = {
|
||||||
richFilters: {},
|
// richFilters: {},
|
||||||
displayFilters: {},
|
// displayFilters: {},
|
||||||
displayProperties: {},
|
// displayProperties: {},
|
||||||
kanbanFilters: {
|
// kanbanFilters: {
|
||||||
group_by: [],
|
// group_by: [],
|
||||||
sub_group_by: [],
|
// sub_group_by: [],
|
||||||
},
|
// },
|
||||||
};
|
// };
|
||||||
|
|
||||||
const projectExportService = new ProjectExportService();
|
const projectExportService = new ProjectExportService();
|
||||||
|
|
||||||
@@ -101,52 +101,57 @@ export const ExportForm = observer(function ExportForm(props: Props) {
|
|||||||
multiple: formData.project.length > 1,
|
multiple: formData.project.length > 1,
|
||||||
rich_filters: formData.filters,
|
rich_filters: formData.filters,
|
||||||
};
|
};
|
||||||
await projectExportService
|
try {
|
||||||
.csvExport(workspaceSlug, payload)
|
await projectExportService.csvExport(workspaceSlug, payload);
|
||||||
.then(() => {
|
mutateServices();
|
||||||
mutateServices();
|
setExportLoading(false);
|
||||||
setExportLoading(false);
|
captureSuccess({
|
||||||
captureSuccess({
|
eventName: WORKSPACE_SETTINGS_TRACKER_EVENTS.csv_exported,
|
||||||
eventName: WORKSPACE_SETTINGS_TRACKER_EVENTS.csv_exported,
|
payload: {
|
||||||
payload: {
|
provider: formData.provider.provider,
|
||||||
provider: formData.provider.provider,
|
},
|
||||||
},
|
|
||||||
});
|
|
||||||
setToast({
|
|
||||||
type: TOAST_TYPE.SUCCESS,
|
|
||||||
title: t("workspace_settings.settings.exports.modal.toasts.success.title"),
|
|
||||||
message: t("workspace_settings.settings.exports.modal.toasts.success.message", {
|
|
||||||
entity:
|
|
||||||
formData.provider.provider === "csv"
|
|
||||||
? "CSV"
|
|
||||||
: formData.provider.provider === "xlsx"
|
|
||||||
? "Excel"
|
|
||||||
: formData.provider.provider === "json"
|
|
||||||
? "JSON"
|
|
||||||
: "",
|
|
||||||
}),
|
|
||||||
});
|
|
||||||
})
|
|
||||||
.catch((error) => {
|
|
||||||
setExportLoading(false);
|
|
||||||
captureError({
|
|
||||||
eventName: WORKSPACE_SETTINGS_TRACKER_EVENTS.csv_exported,
|
|
||||||
payload: {
|
|
||||||
provider: formData.provider.provider,
|
|
||||||
},
|
|
||||||
error: error as Error,
|
|
||||||
});
|
|
||||||
setToast({
|
|
||||||
type: TOAST_TYPE.ERROR,
|
|
||||||
title: t("error"),
|
|
||||||
message: t("workspace_settings.settings.exports.modal.toasts.error.message"),
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
setToast({
|
||||||
|
type: TOAST_TYPE.SUCCESS,
|
||||||
|
title: t("workspace_settings.settings.exports.modal.toasts.success.title"),
|
||||||
|
message: t("workspace_settings.settings.exports.modal.toasts.success.message", {
|
||||||
|
entity:
|
||||||
|
formData.provider.provider === "csv"
|
||||||
|
? "CSV"
|
||||||
|
: formData.provider.provider === "xlsx"
|
||||||
|
? "Excel"
|
||||||
|
: formData.provider.provider === "json"
|
||||||
|
? "JSON"
|
||||||
|
: "",
|
||||||
|
}),
|
||||||
|
});
|
||||||
|
} catch (error) {
|
||||||
|
setExportLoading(false);
|
||||||
|
captureError({
|
||||||
|
eventName: WORKSPACE_SETTINGS_TRACKER_EVENTS.csv_exported,
|
||||||
|
payload: {
|
||||||
|
provider: formData.provider.provider,
|
||||||
|
},
|
||||||
|
error: error as Error,
|
||||||
|
});
|
||||||
|
setToast({
|
||||||
|
type: TOAST_TYPE.ERROR,
|
||||||
|
title: t("error"),
|
||||||
|
message: t("workspace_settings.settings.exports.modal.toasts.error.message"),
|
||||||
|
});
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
setExportLoading(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<form onSubmit={handleSubmit(ExportCSVToMail)} className="flex flex-col gap-4 mt-4">
|
<form
|
||||||
|
onSubmit={(e) => {
|
||||||
|
void handleSubmit(ExportCSVToMail)(e);
|
||||||
|
}}
|
||||||
|
className="flex flex-col gap-4 mt-4"
|
||||||
|
>
|
||||||
<div className="flex gap-4">
|
<div className="flex gap-4">
|
||||||
{/* Project Selector */}
|
{/* Project Selector */}
|
||||||
<div className="w-1/2">
|
<div className="w-1/2">
|
||||||
@@ -210,7 +215,7 @@ export const ExportForm = observer(function ExportForm(props: Props) {
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{/* Rich Filters */}
|
{/* Rich Filters */}
|
||||||
<div className="w-full">
|
{/* <div className="w-full">
|
||||||
<div className="flex items-center gap-2 mb-2">
|
<div className="flex items-center gap-2 mb-2">
|
||||||
<div className="text-sm font-medium text-custom-text-200 leading-tight">{t("common.filters")}</div>
|
<div className="text-sm font-medium text-custom-text-200 leading-tight">{t("common.filters")}</div>
|
||||||
<Tooltip
|
<Tooltip
|
||||||
@@ -251,7 +256,7 @@ export const ExportForm = observer(function ExportForm(props: Props) {
|
|||||||
</WorkspaceLevelWorkItemFiltersHOC>
|
</WorkspaceLevelWorkItemFiltersHOC>
|
||||||
)}
|
)}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div> */}
|
||||||
<div className="flex items-center justify-between">
|
<div className="flex items-center justify-between">
|
||||||
<Button
|
<Button
|
||||||
variant="primary"
|
variant="primary"
|
||||||
|
|||||||
@@ -188,5 +188,10 @@ export default {
|
|||||||
"Generujte bezpečné API tokeny pro připojení vašeho pracovního prostoru s externími systémy a aplikacemi.",
|
"Generujte bezpečné API tokeny pro připojení vašeho pracovního prostoru s externími systémy a aplikacemi.",
|
||||||
cta_primary: "Přidat API token",
|
cta_primary: "Přidat API token",
|
||||||
},
|
},
|
||||||
|
webhooks: {
|
||||||
|
title: "Zatím nebyl přidán žádný Webhook",
|
||||||
|
description: "Automatizujte oznámení externím službám při výskytu událostí projektu.",
|
||||||
|
cta_primary: "Přidat webhook",
|
||||||
|
},
|
||||||
},
|
},
|
||||||
} as const;
|
} as const;
|
||||||
|
|||||||
@@ -198,5 +198,10 @@ export default {
|
|||||||
"Generieren Sie sichere API-Tokens, um Ihren Workspace mit externen Systemen und Anwendungen zu verbinden.",
|
"Generieren Sie sichere API-Tokens, um Ihren Workspace mit externen Systemen und Anwendungen zu verbinden.",
|
||||||
cta_primary: "API-Token hinzufügen",
|
cta_primary: "API-Token hinzufügen",
|
||||||
},
|
},
|
||||||
|
webhooks: {
|
||||||
|
title: "Noch kein Webhook hinzugefügt",
|
||||||
|
description: "Automatisieren Sie Benachrichtigungen an externe Dienste, wenn Projektereignisse auftreten.",
|
||||||
|
cta_primary: "Webhook hinzufügen",
|
||||||
|
},
|
||||||
},
|
},
|
||||||
} as const;
|
} as const;
|
||||||
|
|||||||
@@ -183,5 +183,10 @@ export default {
|
|||||||
description: "Generate secure API tokens to connect your workspace with external systems and applications.",
|
description: "Generate secure API tokens to connect your workspace with external systems and applications.",
|
||||||
cta_primary: "Add API token",
|
cta_primary: "Add API token",
|
||||||
},
|
},
|
||||||
|
webhooks: {
|
||||||
|
title: "No Webhook added yet",
|
||||||
|
description: "Automate notifications to external services when project events occur.",
|
||||||
|
cta_primary: "Add webhook",
|
||||||
|
},
|
||||||
},
|
},
|
||||||
} as const;
|
} as const;
|
||||||
|
|||||||
@@ -192,5 +192,10 @@ export default {
|
|||||||
"Genera tokens API seguros para conectar tu espacio de trabajo con sistemas y aplicaciones externos.",
|
"Genera tokens API seguros para conectar tu espacio de trabajo con sistemas y aplicaciones externos.",
|
||||||
cta_primary: "Agregar token API",
|
cta_primary: "Agregar token API",
|
||||||
},
|
},
|
||||||
|
webhooks: {
|
||||||
|
title: "Aún no se ha agregado ningún Webhook",
|
||||||
|
description: "Automatiza las notificaciones a servicios externos cuando ocurran eventos del proyecto.",
|
||||||
|
cta_primary: "Agregar webhook",
|
||||||
|
},
|
||||||
},
|
},
|
||||||
} as const;
|
} as const;
|
||||||
|
|||||||
@@ -195,5 +195,11 @@ export default {
|
|||||||
"Générez des jetons API sécurisés pour connecter votre espace de travail avec des systèmes et applications externes.",
|
"Générez des jetons API sécurisés pour connecter votre espace de travail avec des systèmes et applications externes.",
|
||||||
cta_primary: "Ajouter un jeton API",
|
cta_primary: "Ajouter un jeton API",
|
||||||
},
|
},
|
||||||
|
webhooks: {
|
||||||
|
title: "Aucun Webhook ajouté pour le moment",
|
||||||
|
description:
|
||||||
|
"Automatisez les notifications vers des services externes lorsque des événements de projet se produisent.",
|
||||||
|
cta_primary: "Ajouter un webhook",
|
||||||
|
},
|
||||||
},
|
},
|
||||||
} as const;
|
} as const;
|
||||||
|
|||||||
@@ -192,5 +192,10 @@ export default {
|
|||||||
"Hasilkan token API yang aman untuk menghubungkan ruang kerja Anda dengan sistem dan aplikasi eksternal.",
|
"Hasilkan token API yang aman untuk menghubungkan ruang kerja Anda dengan sistem dan aplikasi eksternal.",
|
||||||
cta_primary: "Tambahkan token API",
|
cta_primary: "Tambahkan token API",
|
||||||
},
|
},
|
||||||
|
webhooks: {
|
||||||
|
title: "Belum ada Webhook yang ditambahkan",
|
||||||
|
description: "Otomatisasi notifikasi ke layanan eksternal ketika peristiwa proyek terjadi.",
|
||||||
|
cta_primary: "Tambahkan webhook",
|
||||||
|
},
|
||||||
},
|
},
|
||||||
} as const;
|
} as const;
|
||||||
|
|||||||
@@ -192,5 +192,10 @@ export default {
|
|||||||
description: "Genera token API sicuri per connettere il tuo workspace con sistemi e applicazioni esterne.",
|
description: "Genera token API sicuri per connettere il tuo workspace con sistemi e applicazioni esterne.",
|
||||||
cta_primary: "Aggiungi token API",
|
cta_primary: "Aggiungi token API",
|
||||||
},
|
},
|
||||||
|
webhooks: {
|
||||||
|
title: "Nessun Webhook aggiunto ancora",
|
||||||
|
description: "Automatizza le notifiche a servizi esterni quando si verificano eventi del progetto.",
|
||||||
|
cta_primary: "Aggiungi webhook",
|
||||||
|
},
|
||||||
},
|
},
|
||||||
} as const;
|
} as const;
|
||||||
|
|||||||
@@ -182,5 +182,10 @@ export default {
|
|||||||
description: "ワークスペースを外部システムおよびアプリケーションと接続するための安全なAPIトークンを生成します。",
|
description: "ワークスペースを外部システムおよびアプリケーションと接続するための安全なAPIトークンを生成します。",
|
||||||
cta_primary: "APIトークンを追加",
|
cta_primary: "APIトークンを追加",
|
||||||
},
|
},
|
||||||
|
webhooks: {
|
||||||
|
title: "まだWebhookが追加されていません",
|
||||||
|
description: "プロジェクトイベントが発生したときに外部サービスへの通知を自動化します。",
|
||||||
|
cta_primary: "Webhookを追加",
|
||||||
|
},
|
||||||
},
|
},
|
||||||
} as const;
|
} as const;
|
||||||
|
|||||||
@@ -181,5 +181,10 @@ export default {
|
|||||||
description: "작업 공간을 외부 시스템 및 애플리케이션과 연결하기 위한 보안 API 토큰을 생성하세요.",
|
description: "작업 공간을 외부 시스템 및 애플리케이션과 연결하기 위한 보안 API 토큰을 생성하세요.",
|
||||||
cta_primary: "API 토큰 추가",
|
cta_primary: "API 토큰 추가",
|
||||||
},
|
},
|
||||||
|
webhooks: {
|
||||||
|
title: "아직 웹훅이 추가되지 않았습니다",
|
||||||
|
description: "프로젝트 이벤트가 발생할 때 외부 서비스에 대한 알림을 자동화하세요.",
|
||||||
|
cta_primary: "웹훅 추가",
|
||||||
|
},
|
||||||
},
|
},
|
||||||
} as const;
|
} as const;
|
||||||
|
|||||||
@@ -193,5 +193,10 @@ export default {
|
|||||||
"Generuj bezpieczne tokeny API, aby połączyć swój obszar roboczy z zewnętrznymi systemami i aplikacjami.",
|
"Generuj bezpieczne tokeny API, aby połączyć swój obszar roboczy z zewnętrznymi systemami i aplikacjami.",
|
||||||
cta_primary: "Dodaj token API",
|
cta_primary: "Dodaj token API",
|
||||||
},
|
},
|
||||||
|
webhooks: {
|
||||||
|
title: "Nie dodano jeszcze webhooka",
|
||||||
|
description: "Automatyzuj powiadomienia do usług zewnętrznych, gdy wystąpią zdarzenia projektowe.",
|
||||||
|
cta_primary: "Dodaj webhook",
|
||||||
|
},
|
||||||
},
|
},
|
||||||
} as const;
|
} as const;
|
||||||
|
|||||||
@@ -193,5 +193,10 @@ export default {
|
|||||||
"Gere tokens de API seguros para conectar seu espaço de trabalho com sistemas e aplicativos externos.",
|
"Gere tokens de API seguros para conectar seu espaço de trabalho com sistemas e aplicativos externos.",
|
||||||
cta_primary: "Adicionar token de API",
|
cta_primary: "Adicionar token de API",
|
||||||
},
|
},
|
||||||
|
webhooks: {
|
||||||
|
title: "Ainda não foi adicionado nenhum Webhook",
|
||||||
|
description: "Automatize notificações para serviços externos quando ocorrerem eventos do projeto.",
|
||||||
|
cta_primary: "Adicionar webhook",
|
||||||
|
},
|
||||||
},
|
},
|
||||||
} as const;
|
} as const;
|
||||||
|
|||||||
@@ -191,5 +191,10 @@ export default {
|
|||||||
"Generați token-uri API sigure pentru a conecta spațiul dvs. de lucru cu sisteme și aplicații externe.",
|
"Generați token-uri API sigure pentru a conecta spațiul dvs. de lucru cu sisteme și aplicații externe.",
|
||||||
cta_primary: "Adăugați token API",
|
cta_primary: "Adăugați token API",
|
||||||
},
|
},
|
||||||
|
webhooks: {
|
||||||
|
title: "Încă nu s-a adăugat niciun Webhook",
|
||||||
|
description: "Automatizați notificările către servicii externe când apar evenimente ale proiectului.",
|
||||||
|
cta_primary: "Adăugați webhook",
|
||||||
|
},
|
||||||
},
|
},
|
||||||
} as const;
|
} as const;
|
||||||
|
|||||||
@@ -194,5 +194,10 @@ export default {
|
|||||||
"Генерируйте безопасные API-токены для подключения вашего рабочего пространства к внешним системам и приложениям.",
|
"Генерируйте безопасные API-токены для подключения вашего рабочего пространства к внешним системам и приложениям.",
|
||||||
cta_primary: "Добавить API-токен",
|
cta_primary: "Добавить API-токен",
|
||||||
},
|
},
|
||||||
|
webhooks: {
|
||||||
|
title: "Вебхуков пока не добавлено",
|
||||||
|
description: "Автоматизируйте уведомления внешних сервисов при возникновении событий проекта.",
|
||||||
|
cta_primary: "Добавить вебхук",
|
||||||
|
},
|
||||||
},
|
},
|
||||||
} as const;
|
} as const;
|
||||||
|
|||||||
@@ -191,5 +191,10 @@ export default {
|
|||||||
"Generujte bezpečné API tokeny na pripojenie vášho pracovného priestoru s externými systémami a aplikáciami.",
|
"Generujte bezpečné API tokeny na pripojenie vášho pracovného priestoru s externými systémami a aplikáciami.",
|
||||||
cta_primary: "Pridať API token",
|
cta_primary: "Pridať API token",
|
||||||
},
|
},
|
||||||
|
webhooks: {
|
||||||
|
title: "Zatiaľ nebol pridaný žiadny Webhook",
|
||||||
|
description: "Automatizujte oznámenia externým službám pri výskyte udalostí projektu.",
|
||||||
|
cta_primary: "Pridať webhook",
|
||||||
|
},
|
||||||
},
|
},
|
||||||
} as const;
|
} as const;
|
||||||
|
|||||||
@@ -190,5 +190,10 @@ export default {
|
|||||||
"Çalışma alanınızı harici sistemler ve uygulamalarla bağlamak için güvenli API token'ları oluşturun.",
|
"Çalışma alanınızı harici sistemler ve uygulamalarla bağlamak için güvenli API token'ları oluşturun.",
|
||||||
cta_primary: "API token'ı ekle",
|
cta_primary: "API token'ı ekle",
|
||||||
},
|
},
|
||||||
|
webhooks: {
|
||||||
|
title: "Henüz Webhook eklenmedi",
|
||||||
|
description: "Proje olayları gerçekleştiğinde harici hizmetlere bildirimleri otomatikleştirin.",
|
||||||
|
cta_primary: "Webhook ekle",
|
||||||
|
},
|
||||||
},
|
},
|
||||||
} as const;
|
} as const;
|
||||||
|
|||||||
@@ -193,5 +193,10 @@ export default {
|
|||||||
"Генеруйте безпечні API токени для підключення вашого робочого простору до зовнішніх систем та додатків.",
|
"Генеруйте безпечні API токени для підключення вашого робочого простору до зовнішніх систем та додатків.",
|
||||||
cta_primary: "Додати API токен",
|
cta_primary: "Додати API токен",
|
||||||
},
|
},
|
||||||
|
webhooks: {
|
||||||
|
title: "Ще не додано Webhook",
|
||||||
|
description: "Автоматизуйте сповіщення зовнішнім сервісам, коли відбуваються події проєкту.",
|
||||||
|
cta_primary: "Додати webhook",
|
||||||
|
},
|
||||||
},
|
},
|
||||||
} as const;
|
} as const;
|
||||||
|
|||||||
@@ -191,5 +191,10 @@ export default {
|
|||||||
"Tạo token API an toàn để kết nối không gian làm việc của bạn với các hệ thống và ứng dụng bên ngoài.",
|
"Tạo token API an toàn để kết nối không gian làm việc của bạn với các hệ thống và ứng dụng bên ngoài.",
|
||||||
cta_primary: "Thêm token API",
|
cta_primary: "Thêm token API",
|
||||||
},
|
},
|
||||||
|
webhooks: {
|
||||||
|
title: "Chưa thêm Webhook",
|
||||||
|
description: "Tự động hóa thông báo đến các dịch vụ bên ngoài khi sự kiện dự án xảy ra.",
|
||||||
|
cta_primary: "Thêm webhook",
|
||||||
|
},
|
||||||
},
|
},
|
||||||
} as const;
|
} as const;
|
||||||
|
|||||||
@@ -177,5 +177,10 @@ export default {
|
|||||||
description: "生成安全的 API 令牌以将工作空间与外部系统和应用程序连接。",
|
description: "生成安全的 API 令牌以将工作空间与外部系统和应用程序连接。",
|
||||||
cta_primary: "添加 API 令牌",
|
cta_primary: "添加 API 令牌",
|
||||||
},
|
},
|
||||||
|
webhooks: {
|
||||||
|
title: "尚未添加 Webhook",
|
||||||
|
description: "在项目事件发生时自动向外部服务发送通知。",
|
||||||
|
cta_primary: "添加 webhook",
|
||||||
|
},
|
||||||
},
|
},
|
||||||
} as const;
|
} as const;
|
||||||
|
|||||||
@@ -177,5 +177,10 @@ export default {
|
|||||||
description: "產生安全的 API 權杖以將工作區與外部系統和應用程式連線。",
|
description: "產生安全的 API 權杖以將工作區與外部系統和應用程式連線。",
|
||||||
cta_primary: "新增 API 權杖",
|
cta_primary: "新增 API 權杖",
|
||||||
},
|
},
|
||||||
|
webhooks: {
|
||||||
|
title: "尚未新增 Webhook",
|
||||||
|
description: "在專案事件發生時自動向外部服務傳送通知。",
|
||||||
|
cta_primary: "新增 webhook",
|
||||||
|
},
|
||||||
},
|
},
|
||||||
} as const;
|
} as const;
|
||||||
|
|||||||
Reference in New Issue
Block a user