Compare commits

..

15 Commits

Author SHA1 Message Date
hjball
02b367fcaa chore: update translations 2026-08-12 20:12:18 +00:00
Henry
f9aaebc4b5 fix: prevent maximum update depth exceeded error (#549) 2026-08-12 21:11:05 +01:00
hjball
56af094c50 chore: update translations 2026-08-08 12:38:59 +00:00
Henry
e9ebd06eaa feat(cloud): replace novu for all notification triggers 2026-08-08 13:37:51 +01:00
Henry
b4e9dd3811 feat(cloud): sync subscriber preferences on unsubscribe 2026-08-03 11:53:29 +01:00
Henry
d6aa82e070 feat(cloud): create subscribers 2026-07-31 16:25:25 +01:00
Henry
4291d7bc8c chore: add scripts to gitignore 2026-07-29 12:58:06 +01:00
hjball
5c72968d44 chore: update translations 2026-07-29 11:50:09 +00:00
Henry
5b586f4871 fix(cloud): default to active workspace on upgrade path 2026-07-29 12:49:00 +01:00
Andrey O
fee82e5e73 fix(mcp): map card.comment content field for Kan API (#540)
The MCP add_card_comment and update_card_comment tools send `{ content }`
to Kan API, but the API expects `{ comment }`. This causes a 400 Bad Request
("comment: Required") when trying to add or update card comments.

Fixed by mapping `{ comment: content }` in both tool handlers.

Co-authored-by: Craft Agent <agents-noreply@craft.do>
2026-07-27 21:18:55 +01:00
hjball
03a043784a chore: update translations 2026-07-27 20:16:05 +00:00
Anatoly Rubinshteyn
395dbfae04 fix(editor): guard tippy instance in suggestion handlers (#543)
The popup variable stays undefined when onStart bails out early because
props.clientRect is missing, so popup[0] throws instead of no-oping.
Use optional chaining on the array itself.
2026-07-27 21:14:51 +01:00
hjball
9ec4bedd9a chore: compile translations 2026-07-08 09:55:44 +00:00
hjball
ca694595c7 chore: update translations 2026-07-08 09:55:40 +00:00
Henry
0500d5171d feat: allow submitting comments via keyboard shortcut (#533) 2026-07-08 10:54:16 +01:00
46 changed files with 1184 additions and 1129 deletions

3
.gitignore vendored
View File

@@ -55,4 +55,7 @@ i18n.cache
# pgdata
/apps/web/pgdata
# local scripts
scripts/
.claude

View File

@@ -2395,6 +2395,9 @@ checksums:
uAQUqI/message: 4e1fcce15854d824919b4a582c697c90
uAQUqI/origin/0/0: dc1a240d2d0cccb102c67ca311d4e457
uAQUqI/translation: 4e1fcce15854d824919b4a582c697c90
hQRttt/message: 7c91ef5f747eea9f77a9c4f23e19fb2e
hQRttt/origin/0/0: b1f4eb6768222ea825703105f6014486
hQRttt/translation: 7c91ef5f747eea9f77a9c4f23e19fb2e
WYDptz/message: 05f2b4abfc36def17756a6969983cf86
WYDptz/origin/0/0: 8628ddb6f4ded25c0f17e2cbda8207d3
WYDptz/translation: 05f2b4abfc36def17756a6969983cf86

View File

@@ -27,13 +27,13 @@
"@kan/api": "workspace:*",
"@kan/auth": "workspace:*",
"@kan/db": "workspace:^",
"@kan/email": "workspace:^",
"@kan/logger": "workspace:^",
"@kan/shared": "workspace:^",
"@lingui/babel-preset-react": "^2.9.2",
"@lingui/conf": "^5.3.2",
"@lingui/macro": "^5.3.2",
"@lingui/react": "^5.3.2",
"@novu/api": "^3.11.0",
"@t3-oss/env-nextjs": "^0.11.1",
"@tailwindcss/typography": "^0.5.16",
"@tanstack/react-query": "catalog:",

View File

@@ -180,13 +180,13 @@ const RenderSuggestions = () => {
if (!props.clientRect) return;
popup[0]?.setProps({
popup?.[0]?.setProps({
getReferenceClientRect: props.clientRect,
});
},
onKeyDown(props: SuggestionKeyDownProps): boolean {
if (props.event.key === "Escape") {
popup[0]?.hide();
popup?.[0]?.hide();
return true;
}
@@ -199,7 +199,7 @@ const RenderSuggestions = () => {
);
},
onExit() {
popup[0]?.destroy();
popup?.[0]?.destroy();
reactRenderer.destroy();
},
};
@@ -308,11 +308,11 @@ const renderMentionSuggestions = () => {
onUpdate(props: any) {
reactRenderer.updateProps(props);
if (!props.clientRect) return;
popup[0]?.setProps({ getReferenceClientRect: props.clientRect });
popup?.[0]?.setProps({ getReferenceClientRect: props.clientRect });
},
onKeyDown(props: SuggestionKeyDownProps) {
if (props.event.key === "Escape") {
popup[0]?.hide();
popup?.[0]?.hide();
return true;
}
return (
@@ -324,7 +324,7 @@ const renderMentionSuggestions = () => {
);
},
onExit() {
popup[0]?.destroy();
popup?.[0]?.destroy();
reactRenderer.destroy();
},
};

View File

@@ -4,7 +4,7 @@ import { Button } from "@headlessui/react";
import { t } from "@lingui/core/macro";
import { env } from "next-runtime-env";
import { useTheme } from "next-themes";
import { useEffect, useState } from "react";
import { useEffect, useMemo, useState } from "react";
import { HiBolt } from "react-icons/hi2";
import {
TbLayoutSidebarLeftCollapse,
@@ -92,56 +92,59 @@ export default function SideNavigation({
href: string;
icon: object;
keyboardShortcut: KeyboardShortcut;
}[] = [
{
name: t`Boards`,
href: "/boards",
icon: isDarkMode ? boardsIconDark : boardsIconLight,
keyboardShortcut: {
type: "SEQUENCE",
strokes: [{ key: "G" }, { key: "B" }],
action: () => router.push("/boards"),
group: "NAVIGATION",
description: t`Go to boards`,
}[] = useMemo(
() => [
{
name: t`Boards`,
href: "/boards",
icon: isDarkMode ? boardsIconDark : boardsIconLight,
keyboardShortcut: {
type: "SEQUENCE",
strokes: [{ key: "G" }, { key: "B" }],
action: () => router.push("/boards"),
group: "NAVIGATION",
description: t`Go to boards`,
},
},
},
{
name: t`Templates`,
href: "/templates",
icon: isDarkMode ? templatesIconDark : templatesIconLight,
keyboardShortcut: {
type: "SEQUENCE",
strokes: [{ key: "G" }, { key: "T" }],
action: () => router.push("/templates"),
group: "NAVIGATION",
description: t`Go to templates`,
{
name: t`Templates`,
href: "/templates",
icon: isDarkMode ? templatesIconDark : templatesIconLight,
keyboardShortcut: {
type: "SEQUENCE",
strokes: [{ key: "G" }, { key: "T" }],
action: () => router.push("/templates"),
group: "NAVIGATION",
description: t`Go to templates`,
},
},
},
{
name: t`Members`,
href: "/members",
icon: isDarkMode ? membersIconDark : membersIconLight,
keyboardShortcut: {
type: "SEQUENCE",
strokes: [{ key: "G" }, { key: "M" }],
action: () => router.push("/members"),
group: "NAVIGATION",
description: t`Go to members`,
{
name: t`Members`,
href: "/members",
icon: isDarkMode ? membersIconDark : membersIconLight,
keyboardShortcut: {
type: "SEQUENCE",
strokes: [{ key: "G" }, { key: "M" }],
action: () => router.push("/members"),
group: "NAVIGATION",
description: t`Go to members`,
},
},
},
{
name: t`Settings`,
href: "/settings",
icon: isDarkMode ? settingsIconDark : settingsIconLight,
keyboardShortcut: {
type: "SEQUENCE",
strokes: [{ key: "G" }, { key: "S" }],
action: () => router.push("/settings"),
group: "NAVIGATION",
description: t`Go to settings`,
{
name: t`Settings`,
href: "/settings",
icon: isDarkMode ? settingsIconDark : settingsIconLight,
keyboardShortcut: {
type: "SEQUENCE",
strokes: [{ key: "G" }, { key: "S" }],
action: () => router.push("/settings"),
group: "NAVIGATION",
description: t`Go to settings`,
},
},
},
];
],
[isDarkMode],
);
const toggleCollapse = () => {
setIsCollapsed(!isCollapsed);

View File

@@ -1,6 +1,6 @@
import type { ReactNode } from "react";
import type { Root } from "react-dom/client";
import type { Placement } from "tippy.js";
import type { Placement, Instance as TippyInstance } from "tippy.js";
import { useEffect, useRef } from "react";
import { createRoot } from "react-dom/client";
import tippy from "tippy.js";
@@ -20,16 +20,16 @@ export function Tooltip({
}: TooltipProps) {
const triggerRef = useRef<HTMLDivElement>(null);
const rootRef = useRef<Root | null>(null);
const tippyRef = useRef<TippyInstance | null>(null);
const contentRef = useRef(content);
contentRef.current = content;
useEffect(() => {
if (!triggerRef.current) return;
if (!content) return;
const container = document.createElement("div");
const root = createRoot(container);
rootRef.current = root;
root.render(content);
const instance = tippy(triggerRef.current, {
content: container,
@@ -39,12 +39,33 @@ export function Tooltip({
theme: "tooltip",
touch: false,
});
tippyRef.current = instance;
if (contentRef.current) {
root.render(contentRef.current);
} else {
instance.disable();
}
return () => {
instance.destroy();
rootRef.current?.unmount();
tippyRef.current = null;
root.unmount();
rootRef.current = null;
};
}, [content, placement, delay]);
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [placement, delay]);
useEffect(() => {
if (!content) {
tippyRef.current?.disable();
return;
}
if (tippyRef.current) {
tippyRef.current.enable();
rootRef.current?.render(content);
}
}, [content]);
return (
<div ref={triggerRef} className="inline-flex">

View File

@@ -2,7 +2,7 @@ import { useRouter } from "next/navigation";
import { Button, Menu, Transition } from "@headlessui/react";
import { t } from "@lingui/core/macro";
import { env } from "next-runtime-env";
import { Fragment, useState } from "react";
import { Fragment, useMemo, useState } from "react";
import { HiCheck, HiMagnifyingGlass } from "react-icons/hi2";
import { twMerge } from "tailwind-merge";
@@ -26,17 +26,22 @@ export default function WorkspaceMenu({
const router = useRouter();
const [isOpen, setIsOpen] = useState(false);
const { tooltipContent: commandPaletteShortcutTooltipContent } =
useKeyboardShortcut({
type: "PRESS",
const commandPaletteShortcut = useMemo(
() => ({
type: "PRESS" as const,
stroke: {
key: "k",
modifiers: ["META"],
modifiers: ["META"] as ("META" | "CONTROL" | "ALT" | "SHIFT")[],
},
action: () => setIsOpen(true),
description: t`Open command menu`,
group: "GENERAL",
});
group: "GENERAL" as const,
}),
[],
);
const { tooltipContent: commandPaletteShortcutTooltipContent } =
useKeyboardShortcut(commandPaletteShortcut);
return (
<>

View File

@@ -52,8 +52,9 @@ export const env = createEnv({
VK_CLIENT_SECRET: z.string().optional(),
LINKEDIN_CLIENT_ID: z.string().optional(),
LINKEDIN_CLIENT_SECRET: z.string().optional(),
NOVU_API_KEY: z.string().optional(),
EMAIL_UNSUBSCRIBE_SECRET: z.string().optional(),
SUBSCRIBER_API_URL: z.string().url().optional(),
SUBSCRIBER_API_KEY: z.string().optional(),
SUBSCRIBER_ENVIRONMENT_ID: z.string().optional(),
// Generic OIDC Provider
OIDC_CLIENT_ID: z.string().optional(),
OIDC_CLIENT_SECRET: z.string().optional(),

View File

@@ -1,4 +1,5 @@
import { useEffect } from "react";
import { useCallback, useEffect, useRef } from "react";
import { useModal } from "~/providers/modal";
interface UseModalFormStateOptions<T> {
@@ -12,25 +13,43 @@ export function useModalFormState<T extends Record<string, any>>({
initialValues,
resetOnClose = false,
}: UseModalFormStateOptions<T>) {
const { modalContentType, isOpen, getModalState, setModalState, clearModalState } = useModal();
const {
modalContentType,
isOpen,
getModalState,
setModalState,
clearModalState,
} = useModal();
const isCurrentModal = modalContentType === modalType;
const savedState = getModalState(modalType) as T | undefined;
// get current form state (using the saved values if available, otherwise the initial values)
const formState = savedState || initialValues;
const saveFormState = (state: Partial<T>) => {
if (!isCurrentModal) return;
const currentState = getModalState(modalType) || initialValues;
const newState = { ...currentState, ...state };
setModalState(modalType, newState);
};
// Keep refs so the callbacks below stay stable across re-renders.
const modalTypeRef = useRef(modalType);
const initialValuesRef = useRef(initialValues);
const getModalStateRef = useRef(getModalState);
modalTypeRef.current = modalType;
initialValuesRef.current = initialValues;
getModalStateRef.current = getModalState;
const clearFormState = () => {
clearModalState(modalType);
};
const saveFormState = useCallback(
(state: Partial<T>) => {
const type = modalTypeRef.current;
const currentState =
getModalStateRef.current(type) ?? initialValuesRef.current;
const newState = { ...currentState, ...state };
setModalState(type, newState);
},
// setModalState is stable (useCallback with [] deps in ModalProvider)
[setModalState],
);
const clearFormState = useCallback(() => {
clearModalState(modalTypeRef.current);
}, [clearModalState]);
useEffect(() => {
if (resetOnClose && !isOpen && savedState) {
@@ -45,4 +64,4 @@ export function useModalFormState<T extends Record<string, any>>({
isCurrentModal,
hasSavedState: !!savedState,
};
}
}

View File

@@ -19,7 +19,7 @@
"0": ["isTemplate ? \"Templates\" : \"Boards\""]
},
"comments": [],
"origin": [["src/views/boards/index.tsx", 53]],
"origin": [["src/views/boards/index.tsx", 62]],
"translation": "{0}"
},
"JArWcF": {
@@ -33,7 +33,7 @@
},
"comments": [],
"origin": [
["src/views/boards/index.tsx", 48],
["src/views/boards/index.tsx", 57],
["src/views/card/index.tsx", 321]
],
"translation": "{0} | {1}"
@@ -71,7 +71,7 @@
"0": ["isTemplate ? \"Template\" : \"Board\""]
},
"comments": [],
"origin": [["src/views/board/index.tsx", 565]],
"origin": [["src/views/board/index.tsx", 570]],
"translation": "{0} nicht gefunden"
},
"0xWkkH": {
@@ -220,7 +220,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/boards/index.tsx", 26],
["src/views/boards/index.tsx", 30],
["src/views/settings/components/NewWebhookModal.tsx", 321],
["src/views/settings/components/WebhookList.tsx", 106]
],
@@ -286,7 +286,7 @@
"comments": [],
"origin": [
["src/views/card/components/Comment.tsx", 185],
["src/views/card/components/NewCommentForm.tsx", 68]
["src/views/card/components/NewCommentForm.tsx", 85]
],
"translation": "Kommentar hinzufügen... (/' für Befehle oder @' zum Erwähnen eingeben)"
},
@@ -294,7 +294,7 @@
"message": "Add description... (type '/' to open commands or '@' to mention)",
"placeholders": {},
"comments": [],
"origin": [["src/components/Editor.tsx", 493]],
"origin": [["src/components/Editor.tsx", 499]],
"translation": "Beschreibung hinzufügen... (/' für Befehle oder @' zum Erwähnen eingeben)"
},
"abUZlY": {
@@ -577,7 +577,7 @@
"message": "Annual",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 64]],
"origin": [["src/views/onboarding/select-plan/index.tsx", 68]],
"translation": "Jährlich"
},
"3bqt9U": {
@@ -664,7 +664,7 @@
"message": "Archived",
"placeholders": {},
"comments": [],
"origin": [["src/views/boards/index.tsx", 27]],
"origin": [["src/views/boards/index.tsx", 31]],
"translation": "Archiviert"
},
"lo8xBK": {
@@ -833,7 +833,7 @@
"message": "Best for small teams who want to collaborate and move faster together.",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 87]],
"origin": [["src/views/onboarding/select-plan/index.tsx", 91]],
"translation": "Ideal für kleine Teams, die gemeinsam arbeiten und schneller vorankommen möchten."
},
"qaS+1/": {
@@ -887,7 +887,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/index.tsx", 538],
["src/views/board/index.tsx", 543],
["src/views/card/index.tsx", 321],
["src/views/public/board/index.tsx", 125]
],
@@ -1006,7 +1006,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/components/SideNavigation.tsx", 97],
["src/components/SideNavigation.tsx", 98],
["src/views/pricing/components/FeatureComparisonTable.tsx", 73]
],
"translation": "Boards"
@@ -1294,7 +1294,7 @@
["src/views/card/components/DeleteChecklistConfirmation.tsx", 64],
["src/views/card/components/DeleteCommentConfirmation.tsx", 77],
["src/views/members/components/DeleteMemberConfirmation.tsx", 55],
["src/views/onboarding/select-plan/index.tsx", 236],
["src/views/onboarding/select-plan/index.tsx", 240],
["src/views/settings/components/Avatar.tsx", 287],
["src/views/settings/components/ChangePasswordConfirmation.tsx", 206],
[
@@ -1361,7 +1361,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/index.tsx", 309],
["src/views/board/index.tsx", 314],
["src/views/card/components/Dropdown.tsx", 74],
["src/views/public/board/CardModal.tsx", 38]
],
@@ -1444,7 +1444,7 @@
"message": "Choose a plan",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 149]],
"origin": [["src/views/onboarding/select-plan/index.tsx", 153]],
"translation": "Tarif wählen"
},
"5EMoSo": {
@@ -1626,7 +1626,8 @@
"placeholders": {},
"comments": [],
"origin": [["src/pages/unsubscribe/index.tsx", 81]],
"translation": "Bestätigen Sie Ihre E-Mail-Einstellungen:"
"translation": "Bestätigen Sie Ihre E-Mail-Einstellungen:",
"obsolete": true
},
"479pdJ": {
"message": "Confirm your new password",
@@ -1719,7 +1720,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/onboarding/select-plan/index.tsx", 242],
["src/views/onboarding/select-plan/index.tsx", 246],
["src/views/onboarding/workspace-details/index.tsx", 315]
],
"translation": "Weiter"
@@ -1888,7 +1889,7 @@
"comments": [],
"origin": [
["src/views/boards/components/BoardsList.tsx", 80],
["src/views/boards/index.tsx", 41]
["src/views/boards/index.tsx", 45]
],
"translation": "Neues {0} erstellen"
},
@@ -1914,8 +1915,8 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/index.tsx", 93],
["src/views/board/index.tsx", 679]
["src/views/board/index.tsx", 99],
["src/views/board/index.tsx", 684]
],
"translation": "Neue Liste erstellen"
},
@@ -1939,7 +1940,7 @@
"comments": [],
"origin": [
["src/components/NewWorkspaceForm.tsx", 227],
["src/components/WorkspaceMenu.tsx", 171]
["src/components/WorkspaceMenu.tsx", 176]
],
"translation": "Workspace erstellen"
},
@@ -2294,7 +2295,8 @@
"placeholders": {},
"comments": [],
"origin": [["src/pages/unsubscribe/index.tsx", 78]],
"translation": "Möchten Sie das Abonnement kündigen?"
"translation": "Möchten Sie das Abonnement kündigen?",
"obsolete": true
},
"JyXBgS": {
"message": "docs",
@@ -3016,8 +3018,8 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/onboarding/select-plan/index.tsx", 78],
["src/views/onboarding/select-plan/index.tsx", 79],
["src/views/onboarding/select-plan/index.tsx", 82],
["src/views/onboarding/select-plan/index.tsx", 83],
["src/views/pricing/components/FeatureComparisonTable.tsx", 331],
["src/views/pricing/components/Pricing.tsx", 32],
["src/views/pricing/components/Pricing.tsx", 32],
@@ -3125,7 +3127,7 @@
"message": "Get started by creating a new list",
"placeholders": {},
"comments": [],
"origin": [["src/views/board/index.tsx", 664]],
"origin": [["src/views/board/index.tsx", 669]],
"translation": "Legen Sie los, indem Sie eine neue Liste erstellen"
},
"oW13KZ": {
@@ -3202,7 +3204,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/components/SideNavigation.tsx", 105],
["src/components/SideNavigation.tsx", 106],
["src/pages/404.tsx", 44]
],
"translation": "Zu den Boards"
@@ -3218,28 +3220,28 @@
"message": "Go to members",
"placeholders": {},
"comments": [],
"origin": [["src/components/SideNavigation.tsx", 129]],
"origin": [["src/components/SideNavigation.tsx", 130]],
"translation": "Zu den Mitgliedern"
},
"1WuwiM": {
"message": "Go to settings",
"placeholders": {},
"comments": [],
"origin": [["src/components/SideNavigation.tsx", 141]],
"origin": [["src/components/SideNavigation.tsx", 142]],
"translation": "Zu den Einstellungen"
},
"csFbe+": {
"message": "Go to templates",
"placeholders": {},
"comments": [],
"origin": [["src/components/SideNavigation.tsx", 117]],
"origin": [["src/components/SideNavigation.tsx", 118]],
"translation": "Zu Vorlagen gehen"
},
"SUvm1Y": {
"message": "Good for individuals starting out who just need the essentials.",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 80]],
"origin": [["src/views/onboarding/select-plan/index.tsx", 84]],
"translation": "Gut geeignet für Einsteiger, die nur die wichtigsten Funktionen benötigen."
},
"cdyS7J": {
@@ -3382,7 +3384,7 @@
"message": "Import",
"placeholders": {},
"comments": [],
"origin": [["src/views/boards/index.tsx", 73]],
"origin": [["src/views/boards/index.tsx", 82]],
"translation": "Importieren"
},
"2MPcep": {
@@ -3765,7 +3767,7 @@
"comments": [],
"origin": [
["src/views/board/components/UpdateBoardSlugButton.tsx", 80],
["src/views/board/index.tsx", 307],
["src/views/board/index.tsx", 312],
["src/views/card/components/Dropdown.tsx", 72],
["src/views/public/board/CardModal.tsx", 36],
["src/views/public/board/index.tsx", 77]
@@ -3945,7 +3947,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/components/SideNavigation.tsx", 121],
["src/components/SideNavigation.tsx", 122],
["src/views/board/components/Filters.tsx", 147],
["src/views/board/components/NewCardForm.tsx", 386],
["src/views/card/index.tsx", 143],
@@ -3986,7 +3988,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/onboarding/select-plan/index.tsx", 63],
["src/views/onboarding/select-plan/index.tsx", 67],
["src/views/pricing/components/Pricing.tsx", 14],
["src/views/pricing/index.tsx", 20]
],
@@ -4090,7 +4092,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/boards/index.tsx", 95],
["src/views/boards/index.tsx", 104],
["src/views/home/components/Features.tsx", 73]
],
"translation": "Neu"
@@ -4145,7 +4147,7 @@
"comments": [],
"origin": [
["src/views/board/components/NewListForm.tsx", 113],
["src/views/board/index.tsx", 628]
["src/views/board/index.tsx", 633]
],
"translation": "Neue Liste"
},
@@ -4278,14 +4280,14 @@
"message": "No lists",
"placeholders": {},
"comments": [],
"origin": [["src/views/board/index.tsx", 660]],
"origin": [["src/views/board/index.tsx", 665]],
"translation": "Keine Listen"
},
"fvLNDy": {
"message": "No lists have been created yet",
"placeholders": {},
"comments": [],
"origin": [["src/views/board/index.tsx", 665]],
"origin": [["src/views/board/index.tsx", 670]],
"translation": "Es wurden noch keine Listen erstellt"
},
"i30J2U": {
@@ -4602,7 +4604,7 @@
"message": "Pick a plan to get started. All paid plans include a 14-day free trial.",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 152]],
"origin": [["src/views/onboarding/select-plan/index.tsx", 156]],
"translation": "Wählen Sie einen Tarif, um loszulegen. Alle kostenpflichtigen Tarife beinhalten eine 14-tägige kostenlose Testphase."
},
"GdgCoi": {
@@ -4707,8 +4709,8 @@
["src/views/board/components/NewTemplateForm.tsx", 77],
["src/views/board/components/UpdateBoardSlugForm.tsx", 73],
["src/views/board/components/VisibilityButton.tsx", 57],
["src/views/board/index.tsx", 219],
["src/views/board/index.tsx", 275],
["src/views/board/index.tsx", 224],
["src/views/board/index.tsx", 280],
["src/views/boards/components/ImportBoardsForm.tsx", 243],
["src/views/boards/components/ImportBoardsForm.tsx", 395],
["src/views/card/components/AttachmentThumbnails.tsx", 74],
@@ -4726,7 +4728,7 @@
["src/views/card/components/MemberSelector.tsx", 82],
["src/views/card/components/NewChecklistForm.tsx", 71],
["src/views/card/components/NewChecklistItemForm.tsx", 90],
["src/views/card/components/NewCommentForm.tsx", 37],
["src/views/card/components/NewCommentForm.tsx", 38],
["src/views/card/index.tsx", 236],
["src/views/card/index.tsx", 249],
["src/views/members/components/DeleteMemberConfirmation.tsx", 28],
@@ -4766,7 +4768,7 @@
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 76],
["src/views/board/components/CardContextMoveListModal.tsx", 42],
["src/views/board/index.tsx", 316],
["src/views/board/index.tsx", 321],
["src/views/card/components/Dropdown.tsx", 55],
["src/views/card/components/Dropdown.tsx", 81],
["src/views/card/components/Dropdown.tsx", 100],
@@ -4829,7 +4831,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/onboarding/select-plan/index.tsx", 92],
["src/views/onboarding/select-plan/index.tsx", 96],
["src/views/pricing/components/FeatureComparisonTable.tsx", 333],
["src/views/pricing/components/PricingTiers.tsx", 70]
],
@@ -5359,7 +5361,7 @@
"comments": [],
"origin": [
["src/components/SettingsLayout.tsx", 102],
["src/components/SideNavigation.tsx", 133]
["src/components/SideNavigation.tsx", 134]
],
"translation": "Einstellungen"
},
@@ -5454,7 +5456,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/onboarding/select-plan/index.tsx", 315],
["src/views/onboarding/select-plan/index.tsx", 319],
["src/views/onboarding/workspace-details/index.tsx", 386]
],
"translation": "Abmelden"
@@ -5548,7 +5550,7 @@
"message": "Solo",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 77]],
"origin": [["src/views/onboarding/select-plan/index.tsx", 81]],
"translation": "Solo"
},
"J9+zIR": {
@@ -5595,9 +5597,9 @@
"placeholders": {},
"comments": [],
"origin": [
["src/components/SideNavigation.tsx", 225],
["src/components/SideNavigation.tsx", 226],
["src/components/SideNavigation.tsx", 236]
["src/components/SideNavigation.tsx", 228],
["src/components/SideNavigation.tsx", 229],
["src/components/SideNavigation.tsx", 239]
],
"translation": "Kostenlose Testversion starten"
},
@@ -5615,6 +5617,13 @@
"origin": [["src/views/settings/components/WebhookList.tsx", 232]],
"translation": "Status"
},
"hQRttt": {
"message": "Submit",
"placeholders": {},
"comments": [],
"origin": [["src/views/card/components/NewCommentForm.tsx", 60]],
"translation": "Absenden"
},
"WYDptz": {
"message": "Subscription Required",
"placeholders": {},
@@ -5678,7 +5687,7 @@
"message": "Team",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 84]],
"origin": [["src/views/onboarding/select-plan/index.tsx", 88]],
"translation": "Team"
},
"bff61F": {
@@ -5708,8 +5717,8 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/index.tsx", 538],
["src/views/board/index.tsx", 574]
["src/views/board/index.tsx", 543],
["src/views/board/index.tsx", 579]
],
"translation": "Vorlage"
},
@@ -5746,7 +5755,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/components/SideNavigation.tsx", 109],
["src/components/SideNavigation.tsx", 110],
["src/views/home/components/Features.tsx", 115]
],
"translation": "Vorlagen"
@@ -6147,7 +6156,7 @@
"message": "Unable to add comment",
"placeholders": {},
"comments": [],
"origin": [["src/views/card/components/NewCommentForm.tsx", 36]],
"origin": [["src/views/card/components/NewCommentForm.tsx", 37]],
"translation": "Kommentar konnte nicht hinzugefügt werden"
},
"2Q871c": {
@@ -6176,7 +6185,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/index.tsx", 314],
["src/views/board/index.tsx", 319],
["src/views/card/components/Dropdown.tsx", 79],
["src/views/public/board/CardModal.tsx", 43],
["src/views/public/board/index.tsx", 84]
@@ -6376,7 +6385,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/index.tsx", 274],
["src/views/board/index.tsx", 279],
["src/views/card/index.tsx", 235]
],
"translation": "Karte konnte nicht aktualisiert werden"
@@ -6421,7 +6430,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/index.tsx", 218],
["src/views/board/index.tsx", 223],
["src/views/card/components/ListSelector.tsx", 54]
],
"translation": "Liste konnte nicht aktualisiert werden"
@@ -6574,7 +6583,7 @@
"message": "Unlimited members and a custom workspace username for teams ready to scale.",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 95]],
"origin": [["src/views/onboarding/select-plan/index.tsx", 99]],
"translation": "Unbegrenzte Mitglieder und ein individueller Workspace-Benutzername für Teams, die wachsen möchten."
},
"i5yNAO": {
@@ -6599,7 +6608,8 @@
["src/pages/unsubscribe/index.tsx", 68],
["src/pages/unsubscribe/index.tsx", 93]
],
"translation": "Abmelden"
"translation": "Abmelden",
"obsolete": true
},
"EkH9pt": {
"message": "Update",
@@ -6664,7 +6674,7 @@
"comments": [],
"origin": [
["src/views/members/index.tsx", 295],
["src/views/onboarding/select-plan/index.tsx", 241]
["src/views/onboarding/select-plan/index.tsx", 245]
],
"translation": "Upgrade"
},
@@ -6844,7 +6854,8 @@
"placeholders": {},
"comments": [],
"origin": [["src/pages/unsubscribe/index.tsx", 63]],
"translation": "Wir konnten Ihre Einstellungen nicht aktualisieren. Bitte versuchen Sie es erneut."
"translation": "Wir konnten Ihre Einstellungen nicht aktualisieren. Bitte versuchen Sie es erneut.",
"obsolete": true
},
"7sdSkl": {
"message": "We sent a link to {magicLinkRecipient}",
@@ -6997,8 +7008,8 @@
"comments": [],
"origin": [
["src/components/SettingsLayout.tsx", 47],
["src/views/board/index.tsx", 538],
["src/views/boards/index.tsx", 48],
["src/views/board/index.tsx", 543],
["src/views/boards/index.tsx", 57],
["src/views/members/index.tsx", 278],
["src/views/public/board/index.tsx", 125],
["src/views/public/boards/index.tsx", 75]
@@ -7227,11 +7238,11 @@
["src/views/board/components/List.tsx", 117],
["src/views/board/components/UpdateBoardSlugButton.tsx", 58],
["src/views/board/components/VisibilityButton.tsx", 72],
["src/views/board/index.tsx", 612],
["src/views/board/index.tsx", 670],
["src/views/board/index.tsx", 617],
["src/views/board/index.tsx", 675],
["src/views/boards/components/BoardsList.tsx", 71],
["src/views/boards/index.tsx", 59],
["src/views/boards/index.tsx", 80]
["src/views/boards/index.tsx", 68],
["src/views/boards/index.tsx", 89]
],
"translation": "Sie haben keine Berechtigung"
},
@@ -7254,7 +7265,8 @@
"placeholders": {},
"comments": [],
"origin": [["src/pages/unsubscribe/index.tsx", 98]],
"translation": "Sie wurden abgemeldet!"
"translation": "Sie wurden abgemeldet!",
"obsolete": true
},
"R275Pz": {
"message": "You have unlimited seats with your Pro Plan. There is no additional charge for new members!",
@@ -7323,7 +7335,7 @@
"message": "Your avatar",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 260]],
"origin": [["src/views/onboarding/select-plan/index.tsx", 264]],
"translation": "Ihr Avatar"
},
"evg7+A": {
@@ -7433,7 +7445,8 @@
"placeholders": {},
"comments": [],
"origin": [["src/pages/unsubscribe/index.tsx", 33]],
"translation": "Ihrem Abmelde-Link fehlt ein Token. Bitte öffnen Sie die neueste E-Mail und versuchen Sie es erneut."
"translation": "Ihrem Abmelde-Link fehlt ein Token. Bitte öffnen Sie die neueste E-Mail und versuchen Sie es erneut.",
"obsolete": true
},
"GRAGsB": {
"message": "Your workspace",

File diff suppressed because one or more lines are too long

View File

@@ -34,7 +34,7 @@
"origin": [
[
"src/views/boards/index.tsx",
53
62
]
],
"translation": "{0}"
@@ -55,7 +55,7 @@
"origin": [
[
"src/views/boards/index.tsx",
48
57
],
[
"src/views/card/index.tsx",
@@ -123,7 +123,7 @@
"origin": [
[
"src/views/board/index.tsx",
565
570
]
],
"translation": "{0} not found"
@@ -371,7 +371,7 @@
"origin": [
[
"src/views/boards/index.tsx",
26
30
],
[
"src/views/settings/components/NewWebhookModal.tsx",
@@ -483,7 +483,7 @@
],
[
"src/views/card/components/NewCommentForm.tsx",
68
85
]
],
"translation": "Add comment... (type '/' to open commands or '@' to mention)"
@@ -495,7 +495,7 @@
"origin": [
[
"src/components/Editor.tsx",
493
499
]
],
"translation": "Add description... (type '/' to open commands or '@' to mention)"
@@ -973,7 +973,7 @@
"origin": [
[
"src/views/onboarding/select-plan/index.tsx",
64
68
]
],
"translation": "Annual"
@@ -1121,7 +1121,7 @@
"origin": [
[
"src/views/boards/index.tsx",
27
31
]
],
"translation": "Archived"
@@ -1393,7 +1393,7 @@
"origin": [
[
"src/views/onboarding/select-plan/index.tsx",
87
91
]
],
"translation": "Best for small teams who want to collaborate and move faster together."
@@ -1485,7 +1485,7 @@
"origin": [
[
"src/views/board/index.tsx",
538
543
],
[
"src/views/card/index.tsx",
@@ -1681,7 +1681,7 @@
"origin": [
[
"src/components/SideNavigation.tsx",
97
98
],
[
"src/views/pricing/components/FeatureComparisonTable.tsx",
@@ -2169,7 +2169,7 @@
],
[
"src/views/onboarding/select-plan/index.tsx",
236
240
],
[
"src/views/settings/components/Avatar.tsx",
@@ -2289,7 +2289,7 @@
"origin": [
[
"src/views/board/index.tsx",
309
314
],
[
"src/views/card/components/Dropdown.tsx",
@@ -2437,7 +2437,7 @@
"origin": [
[
"src/views/onboarding/select-plan/index.tsx",
149
153
]
],
"translation": "Choose a plan"
@@ -2732,7 +2732,8 @@
81
]
],
"translation": "Confirm your email preferences:"
"translation": "Confirm your email preferences:",
"obsolete": true
},
"479pdJ": {
"message": "Confirm your new password",
@@ -2885,7 +2886,7 @@
"origin": [
[
"src/views/onboarding/select-plan/index.tsx",
242
246
],
[
"src/views/onboarding/workspace-details/index.tsx",
@@ -3165,7 +3166,7 @@
],
[
"src/views/boards/index.tsx",
41
45
]
],
"translation": "Create new {0}"
@@ -3205,11 +3206,11 @@
"origin": [
[
"src/views/board/index.tsx",
93
99
],
[
"src/views/board/index.tsx",
679
684
]
],
"translation": "Create new list"
@@ -3249,7 +3250,7 @@
],
[
"src/components/WorkspaceMenu.tsx",
171
176
]
],
"translation": "Create workspace"
@@ -3861,7 +3862,8 @@
78
]
],
"translation": "Do you want to unsubscribe?"
"translation": "Do you want to unsubscribe?",
"obsolete": true
},
"JyXBgS": {
"message": "docs",
@@ -5059,11 +5061,11 @@
"origin": [
[
"src/views/onboarding/select-plan/index.tsx",
78
82
],
[
"src/views/onboarding/select-plan/index.tsx",
79
83
],
[
"src/views/pricing/components/FeatureComparisonTable.tsx",
@@ -5263,7 +5265,7 @@
"origin": [
[
"src/views/board/index.tsx",
664
669
]
],
"translation": "Get started by creating a new list"
@@ -5391,7 +5393,7 @@
"origin": [
[
"src/components/SideNavigation.tsx",
105
106
],
[
"src/pages/404.tsx",
@@ -5419,7 +5421,7 @@
"origin": [
[
"src/components/SideNavigation.tsx",
129
130
]
],
"translation": "Go to members"
@@ -5431,7 +5433,7 @@
"origin": [
[
"src/components/SideNavigation.tsx",
141
142
]
],
"translation": "Go to settings"
@@ -5443,7 +5445,7 @@
"origin": [
[
"src/components/SideNavigation.tsx",
117
118
]
],
"translation": "Go to templates"
@@ -5455,7 +5457,7 @@
"origin": [
[
"src/views/onboarding/select-plan/index.tsx",
80
84
]
],
"translation": "Good for individuals starting out who just need the essentials."
@@ -5691,7 +5693,7 @@
"origin": [
[
"src/views/boards/index.tsx",
73
82
]
],
"translation": "Import"
@@ -6333,7 +6335,7 @@
],
[
"src/views/board/index.tsx",
307
312
],
[
"src/views/card/components/Dropdown.tsx",
@@ -6641,7 +6643,7 @@
"origin": [
[
"src/components/SideNavigation.tsx",
121
122
],
[
"src/views/board/components/Filters.tsx",
@@ -6713,7 +6715,7 @@
"origin": [
[
"src/views/onboarding/select-plan/index.tsx",
63
67
],
[
"src/views/pricing/components/Pricing.tsx",
@@ -6900,7 +6902,7 @@
"origin": [
[
"src/views/boards/index.tsx",
95
104
],
[
"src/views/home/components/Features.tsx",
@@ -6996,7 +6998,7 @@
],
[
"src/views/board/index.tsx",
628
633
]
],
"translation": "New list"
@@ -7216,7 +7218,7 @@
"origin": [
[
"src/views/board/index.tsx",
660
665
]
],
"translation": "No lists"
@@ -7228,7 +7230,7 @@
"origin": [
[
"src/views/board/index.tsx",
665
670
]
],
"translation": "No lists have been created yet"
@@ -7748,7 +7750,7 @@
"origin": [
[
"src/views/onboarding/select-plan/index.tsx",
152
156
]
],
"translation": "Pick a plan to get started. All paid plans include a 14-day free trial."
@@ -7940,11 +7942,11 @@
],
[
"src/views/board/index.tsx",
219
224
],
[
"src/views/board/index.tsx",
275
280
],
[
"src/views/boards/components/ImportBoardsForm.tsx",
@@ -8016,7 +8018,7 @@
],
[
"src/views/card/components/NewCommentForm.tsx",
37
38
],
[
"src/views/card/index.tsx",
@@ -8128,7 +8130,7 @@
],
[
"src/views/board/index.tsx",
316
321
],
[
"src/views/card/components/Dropdown.tsx",
@@ -8252,7 +8254,7 @@
"origin": [
[
"src/views/onboarding/select-plan/index.tsx",
92
96
],
[
"src/views/pricing/components/FeatureComparisonTable.tsx",
@@ -9151,7 +9153,7 @@
],
[
"src/components/SideNavigation.tsx",
133
134
]
],
"translation": "Settings"
@@ -9311,7 +9313,7 @@
"origin": [
[
"src/views/onboarding/select-plan/index.tsx",
315
319
],
[
"src/views/onboarding/workspace-details/index.tsx",
@@ -9467,7 +9469,7 @@
"origin": [
[
"src/views/onboarding/select-plan/index.tsx",
77
81
]
],
"translation": "Solo"
@@ -9539,15 +9541,15 @@
"origin": [
[
"src/components/SideNavigation.tsx",
225
228
],
[
"src/components/SideNavigation.tsx",
226
229
],
[
"src/components/SideNavigation.tsx",
236
239
]
],
"translation": "Start free trial"
@@ -9576,6 +9578,18 @@
],
"translation": "Status"
},
"hQRttt": {
"message": "Submit",
"placeholders": {},
"comments": [],
"origin": [
[
"src/views/card/components/NewCommentForm.tsx",
60
]
],
"translation": "Submit"
},
"WYDptz": {
"message": "Subscription Required",
"placeholders": {},
@@ -9675,7 +9689,7 @@
"origin": [
[
"src/views/onboarding/select-plan/index.tsx",
84
88
]
],
"translation": "Team"
@@ -9727,11 +9741,11 @@
"origin": [
[
"src/views/board/index.tsx",
538
543
],
[
"src/views/board/index.tsx",
574
579
]
],
"translation": "Template"
@@ -9791,7 +9805,7 @@
"origin": [
[
"src/components/SideNavigation.tsx",
109
110
],
[
"src/views/home/components/Features.tsx",
@@ -10443,7 +10457,7 @@
"origin": [
[
"src/views/card/components/NewCommentForm.tsx",
36
37
]
],
"translation": "Unable to add comment"
@@ -10491,7 +10505,7 @@
"origin": [
[
"src/views/board/index.tsx",
314
319
],
[
"src/views/card/components/Dropdown.tsx",
@@ -10819,7 +10833,7 @@
"origin": [
[
"src/views/board/index.tsx",
274
279
],
[
"src/views/card/index.tsx",
@@ -10895,7 +10909,7 @@
"origin": [
[
"src/views/board/index.tsx",
218
223
],
[
"src/views/card/components/ListSelector.tsx",
@@ -11171,7 +11185,7 @@
"origin": [
[
"src/views/onboarding/select-plan/index.tsx",
95
99
]
],
"translation": "Unlimited members and a custom workspace username for teams ready to scale."
@@ -11214,7 +11228,8 @@
93
]
],
"translation": "Unsubscribe"
"translation": "Unsubscribe",
"obsolete": true
},
"EkH9pt": {
"message": "Update",
@@ -11331,7 +11346,7 @@
],
[
"src/views/onboarding/select-plan/index.tsx",
241
245
]
],
"translation": "Upgrade"
@@ -11630,7 +11645,8 @@
63
]
],
"translation": "We couldn't update your preferences. Please try again."
"translation": "We couldn't update your preferences. Please try again.",
"obsolete": true
},
"7sdSkl": {
"message": "We sent a link to {magicLinkRecipient}",
@@ -11883,11 +11899,11 @@
],
[
"src/views/board/index.tsx",
538
543
],
[
"src/views/boards/index.tsx",
48
57
],
[
"src/views/members/index.tsx",
@@ -12264,11 +12280,11 @@
],
[
"src/views/board/index.tsx",
612
617
],
[
"src/views/board/index.tsx",
670
675
],
[
"src/views/boards/components/BoardsList.tsx",
@@ -12276,11 +12292,11 @@
],
[
"src/views/boards/index.tsx",
59
68
],
[
"src/views/boards/index.tsx",
80
89
]
],
"translation": "You don't have permission"
@@ -12319,7 +12335,8 @@
98
]
],
"translation": "You have been unsubscribed!"
"translation": "You have been unsubscribed!",
"obsolete": true
},
"R275Pz": {
"message": "You have unlimited seats with your Pro Plan. There is no additional charge for new members!",
@@ -12429,7 +12446,7 @@
"origin": [
[
"src/views/onboarding/select-plan/index.tsx",
260
264
]
],
"translation": "Your avatar"
@@ -12612,7 +12629,8 @@
33
]
],
"translation": "Your unsubscribe link is missing a token. Please open the latest email and try again."
"translation": "Your unsubscribe link is missing a token. Please open the latest email and try again.",
"obsolete": true
},
"GRAGsB": {
"message": "Your workspace",

File diff suppressed because one or more lines are too long

View File

@@ -19,7 +19,7 @@
"0": ["isTemplate ? \"Templates\" : \"Boards\""]
},
"comments": [],
"origin": [["src/views/boards/index.tsx", 53]],
"origin": [["src/views/boards/index.tsx", 62]],
"translation": "{0}"
},
"JArWcF": {
@@ -33,7 +33,7 @@
},
"comments": [],
"origin": [
["src/views/boards/index.tsx", 48],
["src/views/boards/index.tsx", 57],
["src/views/card/index.tsx", 321]
],
"translation": "{0} | {1}"
@@ -71,7 +71,7 @@
"0": ["isTemplate ? \"Template\" : \"Board\""]
},
"comments": [],
"origin": [["src/views/board/index.tsx", 565]],
"origin": [["src/views/board/index.tsx", 570]],
"translation": "{0} no encontrado"
},
"0xWkkH": {
@@ -220,7 +220,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/boards/index.tsx", 26],
["src/views/boards/index.tsx", 30],
["src/views/settings/components/NewWebhookModal.tsx", 321],
["src/views/settings/components/WebhookList.tsx", 106]
],
@@ -286,7 +286,7 @@
"comments": [],
"origin": [
["src/views/card/components/Comment.tsx", 185],
["src/views/card/components/NewCommentForm.tsx", 68]
["src/views/card/components/NewCommentForm.tsx", 85]
],
"translation": "Añadir comentario... (escribe '/' para abrir comandos o '@' para mencionar)"
},
@@ -294,7 +294,7 @@
"message": "Add description... (type '/' to open commands or '@' to mention)",
"placeholders": {},
"comments": [],
"origin": [["src/components/Editor.tsx", 493]],
"origin": [["src/components/Editor.tsx", 499]],
"translation": "Añadir descripción... (escribe '/' para abrir comandos o '@' para mencionar)"
},
"abUZlY": {
@@ -577,7 +577,7 @@
"message": "Annual",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 64]],
"origin": [["src/views/onboarding/select-plan/index.tsx", 68]],
"translation": "Anual"
},
"3bqt9U": {
@@ -664,7 +664,7 @@
"message": "Archived",
"placeholders": {},
"comments": [],
"origin": [["src/views/boards/index.tsx", 27]],
"origin": [["src/views/boards/index.tsx", 31]],
"translation": "Archivado"
},
"lo8xBK": {
@@ -833,7 +833,7 @@
"message": "Best for small teams who want to collaborate and move faster together.",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 87]],
"origin": [["src/views/onboarding/select-plan/index.tsx", 91]],
"translation": "Ideal para equipos pequeños que desean colaborar y avanzar más rápido juntos."
},
"qaS+1/": {
@@ -887,7 +887,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/index.tsx", 538],
["src/views/board/index.tsx", 543],
["src/views/card/index.tsx", 321],
["src/views/public/board/index.tsx", 125]
],
@@ -1006,7 +1006,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/components/SideNavigation.tsx", 97],
["src/components/SideNavigation.tsx", 98],
["src/views/pricing/components/FeatureComparisonTable.tsx", 73]
],
"translation": "Tableros"
@@ -1294,7 +1294,7 @@
["src/views/card/components/DeleteChecklistConfirmation.tsx", 64],
["src/views/card/components/DeleteCommentConfirmation.tsx", 77],
["src/views/members/components/DeleteMemberConfirmation.tsx", 55],
["src/views/onboarding/select-plan/index.tsx", 236],
["src/views/onboarding/select-plan/index.tsx", 240],
["src/views/settings/components/Avatar.tsx", 287],
["src/views/settings/components/ChangePasswordConfirmation.tsx", 206],
[
@@ -1361,7 +1361,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/index.tsx", 309],
["src/views/board/index.tsx", 314],
["src/views/card/components/Dropdown.tsx", 74],
["src/views/public/board/CardModal.tsx", 38]
],
@@ -1444,7 +1444,7 @@
"message": "Choose a plan",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 149]],
"origin": [["src/views/onboarding/select-plan/index.tsx", 153]],
"translation": "Elige un plan"
},
"5EMoSo": {
@@ -1626,7 +1626,8 @@
"placeholders": {},
"comments": [],
"origin": [["src/pages/unsubscribe/index.tsx", 81]],
"translation": "Confirma tus preferencias de correo electrónico:"
"translation": "Confirma tus preferencias de correo electrónico:",
"obsolete": true
},
"479pdJ": {
"message": "Confirm your new password",
@@ -1719,7 +1720,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/onboarding/select-plan/index.tsx", 242],
["src/views/onboarding/select-plan/index.tsx", 246],
["src/views/onboarding/workspace-details/index.tsx", 315]
],
"translation": "Continuar"
@@ -1888,7 +1889,7 @@
"comments": [],
"origin": [
["src/views/boards/components/BoardsList.tsx", 80],
["src/views/boards/index.tsx", 41]
["src/views/boards/index.tsx", 45]
],
"translation": "Crear nuevo {0}"
},
@@ -1914,8 +1915,8 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/index.tsx", 93],
["src/views/board/index.tsx", 679]
["src/views/board/index.tsx", 99],
["src/views/board/index.tsx", 684]
],
"translation": "Crear nueva lista"
},
@@ -1939,7 +1940,7 @@
"comments": [],
"origin": [
["src/components/NewWorkspaceForm.tsx", 227],
["src/components/WorkspaceMenu.tsx", 171]
["src/components/WorkspaceMenu.tsx", 176]
],
"translation": "Crear espacio de trabajo"
},
@@ -2294,7 +2295,8 @@
"placeholders": {},
"comments": [],
"origin": [["src/pages/unsubscribe/index.tsx", 78]],
"translation": "¿Quieres cancelar la suscripción?"
"translation": "¿Quieres cancelar la suscripción?",
"obsolete": true
},
"JyXBgS": {
"message": "docs",
@@ -3016,8 +3018,8 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/onboarding/select-plan/index.tsx", 78],
["src/views/onboarding/select-plan/index.tsx", 79],
["src/views/onboarding/select-plan/index.tsx", 82],
["src/views/onboarding/select-plan/index.tsx", 83],
["src/views/pricing/components/FeatureComparisonTable.tsx", 331],
["src/views/pricing/components/Pricing.tsx", 32],
["src/views/pricing/components/Pricing.tsx", 32],
@@ -3125,7 +3127,7 @@
"message": "Get started by creating a new list",
"placeholders": {},
"comments": [],
"origin": [["src/views/board/index.tsx", 664]],
"origin": [["src/views/board/index.tsx", 669]],
"translation": "Comienza creando una nueva lista"
},
"oW13KZ": {
@@ -3202,7 +3204,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/components/SideNavigation.tsx", 105],
["src/components/SideNavigation.tsx", 106],
["src/pages/404.tsx", 44]
],
"translation": "Ir a tableros"
@@ -3218,28 +3220,28 @@
"message": "Go to members",
"placeholders": {},
"comments": [],
"origin": [["src/components/SideNavigation.tsx", 129]],
"origin": [["src/components/SideNavigation.tsx", 130]],
"translation": "Ir a miembros"
},
"1WuwiM": {
"message": "Go to settings",
"placeholders": {},
"comments": [],
"origin": [["src/components/SideNavigation.tsx", 141]],
"origin": [["src/components/SideNavigation.tsx", 142]],
"translation": "Ir a configuración"
},
"csFbe+": {
"message": "Go to templates",
"placeholders": {},
"comments": [],
"origin": [["src/components/SideNavigation.tsx", 117]],
"origin": [["src/components/SideNavigation.tsx", 118]],
"translation": "Ir a plantillas"
},
"SUvm1Y": {
"message": "Good for individuals starting out who just need the essentials.",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 80]],
"origin": [["src/views/onboarding/select-plan/index.tsx", 84]],
"translation": "Ideal para personas que comienzan y solo necesitan lo esencial."
},
"cdyS7J": {
@@ -3382,7 +3384,7 @@
"message": "Import",
"placeholders": {},
"comments": [],
"origin": [["src/views/boards/index.tsx", 73]],
"origin": [["src/views/boards/index.tsx", 82]],
"translation": "Importar"
},
"2MPcep": {
@@ -3765,7 +3767,7 @@
"comments": [],
"origin": [
["src/views/board/components/UpdateBoardSlugButton.tsx", 80],
["src/views/board/index.tsx", 307],
["src/views/board/index.tsx", 312],
["src/views/card/components/Dropdown.tsx", 72],
["src/views/public/board/CardModal.tsx", 36],
["src/views/public/board/index.tsx", 77]
@@ -3945,7 +3947,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/components/SideNavigation.tsx", 121],
["src/components/SideNavigation.tsx", 122],
["src/views/board/components/Filters.tsx", 147],
["src/views/board/components/NewCardForm.tsx", 386],
["src/views/card/index.tsx", 143],
@@ -3986,7 +3988,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/onboarding/select-plan/index.tsx", 63],
["src/views/onboarding/select-plan/index.tsx", 67],
["src/views/pricing/components/Pricing.tsx", 14],
["src/views/pricing/index.tsx", 20]
],
@@ -4090,7 +4092,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/boards/index.tsx", 95],
["src/views/boards/index.tsx", 104],
["src/views/home/components/Features.tsx", 73]
],
"translation": "Nuevo"
@@ -4145,7 +4147,7 @@
"comments": [],
"origin": [
["src/views/board/components/NewListForm.tsx", 113],
["src/views/board/index.tsx", 628]
["src/views/board/index.tsx", 633]
],
"translation": "Nueva lista"
},
@@ -4278,14 +4280,14 @@
"message": "No lists",
"placeholders": {},
"comments": [],
"origin": [["src/views/board/index.tsx", 660]],
"origin": [["src/views/board/index.tsx", 665]],
"translation": "Sin listas"
},
"fvLNDy": {
"message": "No lists have been created yet",
"placeholders": {},
"comments": [],
"origin": [["src/views/board/index.tsx", 665]],
"origin": [["src/views/board/index.tsx", 670]],
"translation": "Aún no se han creado listas"
},
"i30J2U": {
@@ -4602,7 +4604,7 @@
"message": "Pick a plan to get started. All paid plans include a 14-day free trial.",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 152]],
"origin": [["src/views/onboarding/select-plan/index.tsx", 156]],
"translation": "Elige un plan para comenzar. Todos los planes de pago incluyen una prueba gratuita de 14 días."
},
"GdgCoi": {
@@ -4707,8 +4709,8 @@
["src/views/board/components/NewTemplateForm.tsx", 77],
["src/views/board/components/UpdateBoardSlugForm.tsx", 73],
["src/views/board/components/VisibilityButton.tsx", 57],
["src/views/board/index.tsx", 219],
["src/views/board/index.tsx", 275],
["src/views/board/index.tsx", 224],
["src/views/board/index.tsx", 280],
["src/views/boards/components/ImportBoardsForm.tsx", 243],
["src/views/boards/components/ImportBoardsForm.tsx", 395],
["src/views/card/components/AttachmentThumbnails.tsx", 74],
@@ -4726,7 +4728,7 @@
["src/views/card/components/MemberSelector.tsx", 82],
["src/views/card/components/NewChecklistForm.tsx", 71],
["src/views/card/components/NewChecklistItemForm.tsx", 90],
["src/views/card/components/NewCommentForm.tsx", 37],
["src/views/card/components/NewCommentForm.tsx", 38],
["src/views/card/index.tsx", 236],
["src/views/card/index.tsx", 249],
["src/views/members/components/DeleteMemberConfirmation.tsx", 28],
@@ -4766,7 +4768,7 @@
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 76],
["src/views/board/components/CardContextMoveListModal.tsx", 42],
["src/views/board/index.tsx", 316],
["src/views/board/index.tsx", 321],
["src/views/card/components/Dropdown.tsx", 55],
["src/views/card/components/Dropdown.tsx", 81],
["src/views/card/components/Dropdown.tsx", 100],
@@ -4829,7 +4831,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/onboarding/select-plan/index.tsx", 92],
["src/views/onboarding/select-plan/index.tsx", 96],
["src/views/pricing/components/FeatureComparisonTable.tsx", 333],
["src/views/pricing/components/PricingTiers.tsx", 70]
],
@@ -5359,7 +5361,7 @@
"comments": [],
"origin": [
["src/components/SettingsLayout.tsx", 102],
["src/components/SideNavigation.tsx", 133]
["src/components/SideNavigation.tsx", 134]
],
"translation": "Configuración"
},
@@ -5454,7 +5456,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/onboarding/select-plan/index.tsx", 315],
["src/views/onboarding/select-plan/index.tsx", 319],
["src/views/onboarding/workspace-details/index.tsx", 386]
],
"translation": "Cerrar sesión"
@@ -5548,7 +5550,7 @@
"message": "Solo",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 77]],
"origin": [["src/views/onboarding/select-plan/index.tsx", 81]],
"translation": "Individual"
},
"J9+zIR": {
@@ -5595,9 +5597,9 @@
"placeholders": {},
"comments": [],
"origin": [
["src/components/SideNavigation.tsx", 225],
["src/components/SideNavigation.tsx", 226],
["src/components/SideNavigation.tsx", 236]
["src/components/SideNavigation.tsx", 228],
["src/components/SideNavigation.tsx", 229],
["src/components/SideNavigation.tsx", 239]
],
"translation": "Iniciar prueba gratuita"
},
@@ -5615,6 +5617,13 @@
"origin": [["src/views/settings/components/WebhookList.tsx", 232]],
"translation": "Estado"
},
"hQRttt": {
"message": "Submit",
"placeholders": {},
"comments": [],
"origin": [["src/views/card/components/NewCommentForm.tsx", 60]],
"translation": "Enviar"
},
"WYDptz": {
"message": "Subscription Required",
"placeholders": {},
@@ -5678,7 +5687,7 @@
"message": "Team",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 84]],
"origin": [["src/views/onboarding/select-plan/index.tsx", 88]],
"translation": "Equipo"
},
"bff61F": {
@@ -5708,8 +5717,8 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/index.tsx", 538],
["src/views/board/index.tsx", 574]
["src/views/board/index.tsx", 543],
["src/views/board/index.tsx", 579]
],
"translation": "Plantilla"
},
@@ -5746,7 +5755,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/components/SideNavigation.tsx", 109],
["src/components/SideNavigation.tsx", 110],
["src/views/home/components/Features.tsx", 115]
],
"translation": "Plantillas"
@@ -6147,7 +6156,7 @@
"message": "Unable to add comment",
"placeholders": {},
"comments": [],
"origin": [["src/views/card/components/NewCommentForm.tsx", 36]],
"origin": [["src/views/card/components/NewCommentForm.tsx", 37]],
"translation": "No se pudo agregar el comentario"
},
"2Q871c": {
@@ -6176,7 +6185,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/index.tsx", 314],
["src/views/board/index.tsx", 319],
["src/views/card/components/Dropdown.tsx", 79],
["src/views/public/board/CardModal.tsx", 43],
["src/views/public/board/index.tsx", 84]
@@ -6376,7 +6385,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/index.tsx", 274],
["src/views/board/index.tsx", 279],
["src/views/card/index.tsx", 235]
],
"translation": "No se pudo actualizar la tarjeta"
@@ -6421,7 +6430,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/index.tsx", 218],
["src/views/board/index.tsx", 223],
["src/views/card/components/ListSelector.tsx", 54]
],
"translation": "No se pudo actualizar la lista"
@@ -6574,7 +6583,7 @@
"message": "Unlimited members and a custom workspace username for teams ready to scale.",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 95]],
"origin": [["src/views/onboarding/select-plan/index.tsx", 99]],
"translation": "Miembros ilimitados y un nombre de usuario personalizado para el espacio de trabajo para equipos listos para escalar."
},
"i5yNAO": {
@@ -6599,7 +6608,8 @@
["src/pages/unsubscribe/index.tsx", 68],
["src/pages/unsubscribe/index.tsx", 93]
],
"translation": "Cancelar suscripción"
"translation": "Cancelar suscripción",
"obsolete": true
},
"EkH9pt": {
"message": "Update",
@@ -6664,7 +6674,7 @@
"comments": [],
"origin": [
["src/views/members/index.tsx", 295],
["src/views/onboarding/select-plan/index.tsx", 241]
["src/views/onboarding/select-plan/index.tsx", 245]
],
"translation": "Actualizar"
},
@@ -6844,7 +6854,8 @@
"placeholders": {},
"comments": [],
"origin": [["src/pages/unsubscribe/index.tsx", 63]],
"translation": "No pudimos actualizar tus preferencias. Por favor, inténtalo de nuevo."
"translation": "No pudimos actualizar tus preferencias. Por favor, inténtalo de nuevo.",
"obsolete": true
},
"7sdSkl": {
"message": "We sent a link to {magicLinkRecipient}",
@@ -6997,8 +7008,8 @@
"comments": [],
"origin": [
["src/components/SettingsLayout.tsx", 47],
["src/views/board/index.tsx", 538],
["src/views/boards/index.tsx", 48],
["src/views/board/index.tsx", 543],
["src/views/boards/index.tsx", 57],
["src/views/members/index.tsx", 278],
["src/views/public/board/index.tsx", 125],
["src/views/public/boards/index.tsx", 75]
@@ -7227,11 +7238,11 @@
["src/views/board/components/List.tsx", 117],
["src/views/board/components/UpdateBoardSlugButton.tsx", 58],
["src/views/board/components/VisibilityButton.tsx", 72],
["src/views/board/index.tsx", 612],
["src/views/board/index.tsx", 670],
["src/views/board/index.tsx", 617],
["src/views/board/index.tsx", 675],
["src/views/boards/components/BoardsList.tsx", 71],
["src/views/boards/index.tsx", 59],
["src/views/boards/index.tsx", 80]
["src/views/boards/index.tsx", 68],
["src/views/boards/index.tsx", 89]
],
"translation": "No tienes permiso"
},
@@ -7254,7 +7265,8 @@
"placeholders": {},
"comments": [],
"origin": [["src/pages/unsubscribe/index.tsx", 98]],
"translation": "¡Te has dado de baja!"
"translation": "¡Te has dado de baja!",
"obsolete": true
},
"R275Pz": {
"message": "You have unlimited seats with your Pro Plan. There is no additional charge for new members!",
@@ -7323,7 +7335,7 @@
"message": "Your avatar",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 260]],
"origin": [["src/views/onboarding/select-plan/index.tsx", 264]],
"translation": "Tu avatar"
},
"evg7+A": {
@@ -7433,7 +7445,8 @@
"placeholders": {},
"comments": [],
"origin": [["src/pages/unsubscribe/index.tsx", 33]],
"translation": "Tu enlace de cancelación de suscripción no tiene un token. Por favor, abre el último correo electrónico e inténtalo de nuevo."
"translation": "Tu enlace de cancelación de suscripción no tiene un token. Por favor, abre el último correo electrónico e inténtalo de nuevo.",
"obsolete": true
},
"GRAGsB": {
"message": "Your workspace",

File diff suppressed because one or more lines are too long

View File

@@ -19,7 +19,7 @@
"0": ["isTemplate ? \"Templates\" : \"Boards\""]
},
"comments": [],
"origin": [["src/views/boards/index.tsx", 53]],
"origin": [["src/views/boards/index.tsx", 62]],
"translation": "{0}"
},
"JArWcF": {
@@ -33,7 +33,7 @@
},
"comments": [],
"origin": [
["src/views/boards/index.tsx", 48],
["src/views/boards/index.tsx", 57],
["src/views/card/index.tsx", 321]
],
"translation": "{0} | {1}"
@@ -71,7 +71,7 @@
"0": ["isTemplate ? \"Template\" : \"Board\""]
},
"comments": [],
"origin": [["src/views/board/index.tsx", 565]],
"origin": [["src/views/board/index.tsx", 570]],
"translation": "{0} introuvable"
},
"0xWkkH": {
@@ -220,7 +220,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/boards/index.tsx", 26],
["src/views/boards/index.tsx", 30],
["src/views/settings/components/NewWebhookModal.tsx", 321],
["src/views/settings/components/WebhookList.tsx", 106]
],
@@ -286,7 +286,7 @@
"comments": [],
"origin": [
["src/views/card/components/Comment.tsx", 185],
["src/views/card/components/NewCommentForm.tsx", 68]
["src/views/card/components/NewCommentForm.tsx", 85]
],
"translation": "Ajouter un commentaire... (tapez « / » pour ouvrir les commandes ou « @ » pour mentionner)"
},
@@ -294,7 +294,7 @@
"message": "Add description... (type '/' to open commands or '@' to mention)",
"placeholders": {},
"comments": [],
"origin": [["src/components/Editor.tsx", 493]],
"origin": [["src/components/Editor.tsx", 499]],
"translation": "Ajouter une description... (tapez « / » pour ouvrir les commandes ou « @ » pour mentionner)"
},
"abUZlY": {
@@ -577,7 +577,7 @@
"message": "Annual",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 64]],
"origin": [["src/views/onboarding/select-plan/index.tsx", 68]],
"translation": "Annuel"
},
"3bqt9U": {
@@ -664,7 +664,7 @@
"message": "Archived",
"placeholders": {},
"comments": [],
"origin": [["src/views/boards/index.tsx", 27]],
"origin": [["src/views/boards/index.tsx", 31]],
"translation": "Archivé"
},
"lo8xBK": {
@@ -833,7 +833,7 @@
"message": "Best for small teams who want to collaborate and move faster together.",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 87]],
"origin": [["src/views/onboarding/select-plan/index.tsx", 91]],
"translation": "Idéal pour les petites équipes qui souhaitent collaborer et avancer plus rapidement ensemble."
},
"qaS+1/": {
@@ -887,7 +887,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/index.tsx", 538],
["src/views/board/index.tsx", 543],
["src/views/card/index.tsx", 321],
["src/views/public/board/index.tsx", 125]
],
@@ -1006,7 +1006,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/components/SideNavigation.tsx", 97],
["src/components/SideNavigation.tsx", 98],
["src/views/pricing/components/FeatureComparisonTable.tsx", 73]
],
"translation": "Tableaux"
@@ -1294,7 +1294,7 @@
["src/views/card/components/DeleteChecklistConfirmation.tsx", 64],
["src/views/card/components/DeleteCommentConfirmation.tsx", 77],
["src/views/members/components/DeleteMemberConfirmation.tsx", 55],
["src/views/onboarding/select-plan/index.tsx", 236],
["src/views/onboarding/select-plan/index.tsx", 240],
["src/views/settings/components/Avatar.tsx", 287],
["src/views/settings/components/ChangePasswordConfirmation.tsx", 206],
[
@@ -1361,7 +1361,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/index.tsx", 309],
["src/views/board/index.tsx", 314],
["src/views/card/components/Dropdown.tsx", 74],
["src/views/public/board/CardModal.tsx", 38]
],
@@ -1444,7 +1444,7 @@
"message": "Choose a plan",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 149]],
"origin": [["src/views/onboarding/select-plan/index.tsx", 153]],
"translation": "Choisir un forfait"
},
"5EMoSo": {
@@ -1626,7 +1626,8 @@
"placeholders": {},
"comments": [],
"origin": [["src/pages/unsubscribe/index.tsx", 81]],
"translation": "Confirmez vos préférences d'e-mail :"
"translation": "Confirmez vos préférences d'e-mail :",
"obsolete": true
},
"479pdJ": {
"message": "Confirm your new password",
@@ -1719,7 +1720,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/onboarding/select-plan/index.tsx", 242],
["src/views/onboarding/select-plan/index.tsx", 246],
["src/views/onboarding/workspace-details/index.tsx", 315]
],
"translation": "Continuer"
@@ -1888,7 +1889,7 @@
"comments": [],
"origin": [
["src/views/boards/components/BoardsList.tsx", 80],
["src/views/boards/index.tsx", 41]
["src/views/boards/index.tsx", 45]
],
"translation": "Créer un nouveau {0}"
},
@@ -1914,8 +1915,8 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/index.tsx", 93],
["src/views/board/index.tsx", 679]
["src/views/board/index.tsx", 99],
["src/views/board/index.tsx", 684]
],
"translation": "Créer une nouvelle liste"
},
@@ -1939,7 +1940,7 @@
"comments": [],
"origin": [
["src/components/NewWorkspaceForm.tsx", 227],
["src/components/WorkspaceMenu.tsx", 171]
["src/components/WorkspaceMenu.tsx", 176]
],
"translation": "Créer un espace de travail"
},
@@ -2294,7 +2295,8 @@
"placeholders": {},
"comments": [],
"origin": [["src/pages/unsubscribe/index.tsx", 78]],
"translation": "Voulez-vous vous désabonner ?"
"translation": "Voulez-vous vous désabonner ?",
"obsolete": true
},
"JyXBgS": {
"message": "docs",
@@ -3016,8 +3018,8 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/onboarding/select-plan/index.tsx", 78],
["src/views/onboarding/select-plan/index.tsx", 79],
["src/views/onboarding/select-plan/index.tsx", 82],
["src/views/onboarding/select-plan/index.tsx", 83],
["src/views/pricing/components/FeatureComparisonTable.tsx", 331],
["src/views/pricing/components/Pricing.tsx", 32],
["src/views/pricing/components/Pricing.tsx", 32],
@@ -3125,7 +3127,7 @@
"message": "Get started by creating a new list",
"placeholders": {},
"comments": [],
"origin": [["src/views/board/index.tsx", 664]],
"origin": [["src/views/board/index.tsx", 669]],
"translation": "Commencez en créant une nouvelle liste"
},
"oW13KZ": {
@@ -3202,7 +3204,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/components/SideNavigation.tsx", 105],
["src/components/SideNavigation.tsx", 106],
["src/pages/404.tsx", 44]
],
"translation": "Aller aux tableaux"
@@ -3218,28 +3220,28 @@
"message": "Go to members",
"placeholders": {},
"comments": [],
"origin": [["src/components/SideNavigation.tsx", 129]],
"origin": [["src/components/SideNavigation.tsx", 130]],
"translation": "Aller aux membres"
},
"1WuwiM": {
"message": "Go to settings",
"placeholders": {},
"comments": [],
"origin": [["src/components/SideNavigation.tsx", 141]],
"origin": [["src/components/SideNavigation.tsx", 142]],
"translation": "Aller aux paramètres"
},
"csFbe+": {
"message": "Go to templates",
"placeholders": {},
"comments": [],
"origin": [["src/components/SideNavigation.tsx", 117]],
"origin": [["src/components/SideNavigation.tsx", 118]],
"translation": "Aller aux modèles"
},
"SUvm1Y": {
"message": "Good for individuals starting out who just need the essentials.",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 80]],
"origin": [["src/views/onboarding/select-plan/index.tsx", 84]],
"translation": "Idéal pour les particuliers qui débutent et qui ont simplement besoin de l'essentiel."
},
"cdyS7J": {
@@ -3382,7 +3384,7 @@
"message": "Import",
"placeholders": {},
"comments": [],
"origin": [["src/views/boards/index.tsx", 73]],
"origin": [["src/views/boards/index.tsx", 82]],
"translation": "Importer"
},
"2MPcep": {
@@ -3765,7 +3767,7 @@
"comments": [],
"origin": [
["src/views/board/components/UpdateBoardSlugButton.tsx", 80],
["src/views/board/index.tsx", 307],
["src/views/board/index.tsx", 312],
["src/views/card/components/Dropdown.tsx", 72],
["src/views/public/board/CardModal.tsx", 36],
["src/views/public/board/index.tsx", 77]
@@ -3945,7 +3947,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/components/SideNavigation.tsx", 121],
["src/components/SideNavigation.tsx", 122],
["src/views/board/components/Filters.tsx", 147],
["src/views/board/components/NewCardForm.tsx", 386],
["src/views/card/index.tsx", 143],
@@ -3986,7 +3988,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/onboarding/select-plan/index.tsx", 63],
["src/views/onboarding/select-plan/index.tsx", 67],
["src/views/pricing/components/Pricing.tsx", 14],
["src/views/pricing/index.tsx", 20]
],
@@ -4090,7 +4092,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/boards/index.tsx", 95],
["src/views/boards/index.tsx", 104],
["src/views/home/components/Features.tsx", 73]
],
"translation": "Nouveau"
@@ -4145,7 +4147,7 @@
"comments": [],
"origin": [
["src/views/board/components/NewListForm.tsx", 113],
["src/views/board/index.tsx", 628]
["src/views/board/index.tsx", 633]
],
"translation": "Nouvelle liste"
},
@@ -4278,14 +4280,14 @@
"message": "No lists",
"placeholders": {},
"comments": [],
"origin": [["src/views/board/index.tsx", 660]],
"origin": [["src/views/board/index.tsx", 665]],
"translation": "Aucune liste"
},
"fvLNDy": {
"message": "No lists have been created yet",
"placeholders": {},
"comments": [],
"origin": [["src/views/board/index.tsx", 665]],
"origin": [["src/views/board/index.tsx", 670]],
"translation": "Aucune liste n'a encore été créée"
},
"i30J2U": {
@@ -4602,7 +4604,7 @@
"message": "Pick a plan to get started. All paid plans include a 14-day free trial.",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 152]],
"origin": [["src/views/onboarding/select-plan/index.tsx", 156]],
"translation": "Choisissez un forfait pour commencer. Tous les forfaits payants incluent un essai gratuit de 14 jours."
},
"GdgCoi": {
@@ -4707,8 +4709,8 @@
["src/views/board/components/NewTemplateForm.tsx", 77],
["src/views/board/components/UpdateBoardSlugForm.tsx", 73],
["src/views/board/components/VisibilityButton.tsx", 57],
["src/views/board/index.tsx", 219],
["src/views/board/index.tsx", 275],
["src/views/board/index.tsx", 224],
["src/views/board/index.tsx", 280],
["src/views/boards/components/ImportBoardsForm.tsx", 243],
["src/views/boards/components/ImportBoardsForm.tsx", 395],
["src/views/card/components/AttachmentThumbnails.tsx", 74],
@@ -4726,7 +4728,7 @@
["src/views/card/components/MemberSelector.tsx", 82],
["src/views/card/components/NewChecklistForm.tsx", 71],
["src/views/card/components/NewChecklistItemForm.tsx", 90],
["src/views/card/components/NewCommentForm.tsx", 37],
["src/views/card/components/NewCommentForm.tsx", 38],
["src/views/card/index.tsx", 236],
["src/views/card/index.tsx", 249],
["src/views/members/components/DeleteMemberConfirmation.tsx", 28],
@@ -4766,7 +4768,7 @@
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 76],
["src/views/board/components/CardContextMoveListModal.tsx", 42],
["src/views/board/index.tsx", 316],
["src/views/board/index.tsx", 321],
["src/views/card/components/Dropdown.tsx", 55],
["src/views/card/components/Dropdown.tsx", 81],
["src/views/card/components/Dropdown.tsx", 100],
@@ -4829,7 +4831,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/onboarding/select-plan/index.tsx", 92],
["src/views/onboarding/select-plan/index.tsx", 96],
["src/views/pricing/components/FeatureComparisonTable.tsx", 333],
["src/views/pricing/components/PricingTiers.tsx", 70]
],
@@ -5359,7 +5361,7 @@
"comments": [],
"origin": [
["src/components/SettingsLayout.tsx", 102],
["src/components/SideNavigation.tsx", 133]
["src/components/SideNavigation.tsx", 134]
],
"translation": "Paramètres"
},
@@ -5454,7 +5456,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/onboarding/select-plan/index.tsx", 315],
["src/views/onboarding/select-plan/index.tsx", 319],
["src/views/onboarding/workspace-details/index.tsx", 386]
],
"translation": "Se déconnecter"
@@ -5548,7 +5550,7 @@
"message": "Solo",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 77]],
"origin": [["src/views/onboarding/select-plan/index.tsx", 81]],
"translation": "Solo"
},
"J9+zIR": {
@@ -5595,9 +5597,9 @@
"placeholders": {},
"comments": [],
"origin": [
["src/components/SideNavigation.tsx", 225],
["src/components/SideNavigation.tsx", 226],
["src/components/SideNavigation.tsx", 236]
["src/components/SideNavigation.tsx", 228],
["src/components/SideNavigation.tsx", 229],
["src/components/SideNavigation.tsx", 239]
],
"translation": "Commencer l'essai gratuit"
},
@@ -5615,6 +5617,13 @@
"origin": [["src/views/settings/components/WebhookList.tsx", 232]],
"translation": "Statut"
},
"hQRttt": {
"message": "Submit",
"placeholders": {},
"comments": [],
"origin": [["src/views/card/components/NewCommentForm.tsx", 60]],
"translation": "Soumettre"
},
"WYDptz": {
"message": "Subscription Required",
"placeholders": {},
@@ -5678,7 +5687,7 @@
"message": "Team",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 84]],
"origin": [["src/views/onboarding/select-plan/index.tsx", 88]],
"translation": "Équipe"
},
"bff61F": {
@@ -5708,8 +5717,8 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/index.tsx", 538],
["src/views/board/index.tsx", 574]
["src/views/board/index.tsx", 543],
["src/views/board/index.tsx", 579]
],
"translation": "Modèle"
},
@@ -5746,7 +5755,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/components/SideNavigation.tsx", 109],
["src/components/SideNavigation.tsx", 110],
["src/views/home/components/Features.tsx", 115]
],
"translation": "Modèles"
@@ -6147,7 +6156,7 @@
"message": "Unable to add comment",
"placeholders": {},
"comments": [],
"origin": [["src/views/card/components/NewCommentForm.tsx", 36]],
"origin": [["src/views/card/components/NewCommentForm.tsx", 37]],
"translation": "Impossible d'ajouter le commentaire"
},
"2Q871c": {
@@ -6176,7 +6185,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/index.tsx", 314],
["src/views/board/index.tsx", 319],
["src/views/card/components/Dropdown.tsx", 79],
["src/views/public/board/CardModal.tsx", 43],
["src/views/public/board/index.tsx", 84]
@@ -6376,7 +6385,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/index.tsx", 274],
["src/views/board/index.tsx", 279],
["src/views/card/index.tsx", 235]
],
"translation": "Impossible de mettre à jour la carte"
@@ -6421,7 +6430,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/index.tsx", 218],
["src/views/board/index.tsx", 223],
["src/views/card/components/ListSelector.tsx", 54]
],
"translation": "Impossible de mettre à jour la liste"
@@ -6574,7 +6583,7 @@
"message": "Unlimited members and a custom workspace username for teams ready to scale.",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 95]],
"origin": [["src/views/onboarding/select-plan/index.tsx", 99]],
"translation": "Membres illimités et un nom d'utilisateur d'espace de travail personnalisé pour les équipes prêtes à évoluer."
},
"i5yNAO": {
@@ -6599,7 +6608,8 @@
["src/pages/unsubscribe/index.tsx", 68],
["src/pages/unsubscribe/index.tsx", 93]
],
"translation": "Se désabonner"
"translation": "Se désabonner",
"obsolete": true
},
"EkH9pt": {
"message": "Update",
@@ -6664,7 +6674,7 @@
"comments": [],
"origin": [
["src/views/members/index.tsx", 295],
["src/views/onboarding/select-plan/index.tsx", 241]
["src/views/onboarding/select-plan/index.tsx", 245]
],
"translation": "Mettre à niveau"
},
@@ -6844,7 +6854,8 @@
"placeholders": {},
"comments": [],
"origin": [["src/pages/unsubscribe/index.tsx", 63]],
"translation": "Nous n'avons pas pu mettre à jour vos préférences. Veuillez réessayer."
"translation": "Nous n'avons pas pu mettre à jour vos préférences. Veuillez réessayer.",
"obsolete": true
},
"7sdSkl": {
"message": "We sent a link to {magicLinkRecipient}",
@@ -6997,8 +7008,8 @@
"comments": [],
"origin": [
["src/components/SettingsLayout.tsx", 47],
["src/views/board/index.tsx", 538],
["src/views/boards/index.tsx", 48],
["src/views/board/index.tsx", 543],
["src/views/boards/index.tsx", 57],
["src/views/members/index.tsx", 278],
["src/views/public/board/index.tsx", 125],
["src/views/public/boards/index.tsx", 75]
@@ -7227,11 +7238,11 @@
["src/views/board/components/List.tsx", 117],
["src/views/board/components/UpdateBoardSlugButton.tsx", 58],
["src/views/board/components/VisibilityButton.tsx", 72],
["src/views/board/index.tsx", 612],
["src/views/board/index.tsx", 670],
["src/views/board/index.tsx", 617],
["src/views/board/index.tsx", 675],
["src/views/boards/components/BoardsList.tsx", 71],
["src/views/boards/index.tsx", 59],
["src/views/boards/index.tsx", 80]
["src/views/boards/index.tsx", 68],
["src/views/boards/index.tsx", 89]
],
"translation": "Vous n'avez pas la permission"
},
@@ -7254,7 +7265,8 @@
"placeholders": {},
"comments": [],
"origin": [["src/pages/unsubscribe/index.tsx", 98]],
"translation": "Vous avez été désabonné !"
"translation": "Vous avez été désabonné !",
"obsolete": true
},
"R275Pz": {
"message": "You have unlimited seats with your Pro Plan. There is no additional charge for new members!",
@@ -7323,7 +7335,7 @@
"message": "Your avatar",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 260]],
"origin": [["src/views/onboarding/select-plan/index.tsx", 264]],
"translation": "Votre avatar"
},
"evg7+A": {
@@ -7433,7 +7445,8 @@
"placeholders": {},
"comments": [],
"origin": [["src/pages/unsubscribe/index.tsx", 33]],
"translation": "Votre lien de désinscription ne contient pas de jeton. Veuillez ouvrir le dernier e-mail et réessayer."
"translation": "Votre lien de désinscription ne contient pas de jeton. Veuillez ouvrir le dernier e-mail et réessayer.",
"obsolete": true
},
"GRAGsB": {
"message": "Your workspace",

File diff suppressed because one or more lines are too long

View File

@@ -19,7 +19,7 @@
"0": ["isTemplate ? \"Templates\" : \"Boards\""]
},
"comments": [],
"origin": [["src/views/boards/index.tsx", 53]],
"origin": [["src/views/boards/index.tsx", 62]],
"translation": "{0}"
},
"JArWcF": {
@@ -33,7 +33,7 @@
},
"comments": [],
"origin": [
["src/views/boards/index.tsx", 48],
["src/views/boards/index.tsx", 57],
["src/views/card/index.tsx", 321]
],
"translation": "{0} | {1}"
@@ -71,7 +71,7 @@
"0": ["isTemplate ? \"Template\" : \"Board\""]
},
"comments": [],
"origin": [["src/views/board/index.tsx", 565]],
"origin": [["src/views/board/index.tsx", 570]],
"translation": "{0} non trovato"
},
"0xWkkH": {
@@ -220,7 +220,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/boards/index.tsx", 26],
["src/views/boards/index.tsx", 30],
["src/views/settings/components/NewWebhookModal.tsx", 321],
["src/views/settings/components/WebhookList.tsx", 106]
],
@@ -286,7 +286,7 @@
"comments": [],
"origin": [
["src/views/card/components/Comment.tsx", 185],
["src/views/card/components/NewCommentForm.tsx", 68]
["src/views/card/components/NewCommentForm.tsx", 85]
],
"translation": "Aggiungi commento... (digita '/' per aprire i comandi o '@' per menzionare)"
},
@@ -294,7 +294,7 @@
"message": "Add description... (type '/' to open commands or '@' to mention)",
"placeholders": {},
"comments": [],
"origin": [["src/components/Editor.tsx", 493]],
"origin": [["src/components/Editor.tsx", 499]],
"translation": "Aggiungi descrizione... (digita '/' per aprire i comandi o '@' per menzionare)"
},
"abUZlY": {
@@ -577,7 +577,7 @@
"message": "Annual",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 64]],
"origin": [["src/views/onboarding/select-plan/index.tsx", 68]],
"translation": "Annuale"
},
"3bqt9U": {
@@ -664,7 +664,7 @@
"message": "Archived",
"placeholders": {},
"comments": [],
"origin": [["src/views/boards/index.tsx", 27]],
"origin": [["src/views/boards/index.tsx", 31]],
"translation": "Archiviato"
},
"lo8xBK": {
@@ -833,7 +833,7 @@
"message": "Best for small teams who want to collaborate and move faster together.",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 87]],
"origin": [["src/views/onboarding/select-plan/index.tsx", 91]],
"translation": "Ideale per piccoli team che vogliono collaborare e muoversi più velocemente insieme."
},
"qaS+1/": {
@@ -887,7 +887,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/index.tsx", 538],
["src/views/board/index.tsx", 543],
["src/views/card/index.tsx", 321],
["src/views/public/board/index.tsx", 125]
],
@@ -1006,7 +1006,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/components/SideNavigation.tsx", 97],
["src/components/SideNavigation.tsx", 98],
["src/views/pricing/components/FeatureComparisonTable.tsx", 73]
],
"translation": "Board"
@@ -1294,7 +1294,7 @@
["src/views/card/components/DeleteChecklistConfirmation.tsx", 64],
["src/views/card/components/DeleteCommentConfirmation.tsx", 77],
["src/views/members/components/DeleteMemberConfirmation.tsx", 55],
["src/views/onboarding/select-plan/index.tsx", 236],
["src/views/onboarding/select-plan/index.tsx", 240],
["src/views/settings/components/Avatar.tsx", 287],
["src/views/settings/components/ChangePasswordConfirmation.tsx", 206],
[
@@ -1361,7 +1361,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/index.tsx", 309],
["src/views/board/index.tsx", 314],
["src/views/card/components/Dropdown.tsx", 74],
["src/views/public/board/CardModal.tsx", 38]
],
@@ -1444,7 +1444,7 @@
"message": "Choose a plan",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 149]],
"origin": [["src/views/onboarding/select-plan/index.tsx", 153]],
"translation": "Scegli un piano"
},
"5EMoSo": {
@@ -1626,7 +1626,8 @@
"placeholders": {},
"comments": [],
"origin": [["src/pages/unsubscribe/index.tsx", 81]],
"translation": "Conferma le tue preferenze email:"
"translation": "Conferma le tue preferenze email:",
"obsolete": true
},
"479pdJ": {
"message": "Confirm your new password",
@@ -1719,7 +1720,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/onboarding/select-plan/index.tsx", 242],
["src/views/onboarding/select-plan/index.tsx", 246],
["src/views/onboarding/workspace-details/index.tsx", 315]
],
"translation": "Continua"
@@ -1888,7 +1889,7 @@
"comments": [],
"origin": [
["src/views/boards/components/BoardsList.tsx", 80],
["src/views/boards/index.tsx", 41]
["src/views/boards/index.tsx", 45]
],
"translation": "Crea nuovo {0}"
},
@@ -1914,8 +1915,8 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/index.tsx", 93],
["src/views/board/index.tsx", 679]
["src/views/board/index.tsx", 99],
["src/views/board/index.tsx", 684]
],
"translation": "Crea nuova lista"
},
@@ -1939,7 +1940,7 @@
"comments": [],
"origin": [
["src/components/NewWorkspaceForm.tsx", 227],
["src/components/WorkspaceMenu.tsx", 171]
["src/components/WorkspaceMenu.tsx", 176]
],
"translation": "Crea workspace"
},
@@ -2294,7 +2295,8 @@
"placeholders": {},
"comments": [],
"origin": [["src/pages/unsubscribe/index.tsx", 78]],
"translation": "Vuoi annullare l'iscrizione?"
"translation": "Vuoi annullare l'iscrizione?",
"obsolete": true
},
"JyXBgS": {
"message": "docs",
@@ -3016,8 +3018,8 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/onboarding/select-plan/index.tsx", 78],
["src/views/onboarding/select-plan/index.tsx", 79],
["src/views/onboarding/select-plan/index.tsx", 82],
["src/views/onboarding/select-plan/index.tsx", 83],
["src/views/pricing/components/FeatureComparisonTable.tsx", 331],
["src/views/pricing/components/Pricing.tsx", 32],
["src/views/pricing/components/Pricing.tsx", 32],
@@ -3125,7 +3127,7 @@
"message": "Get started by creating a new list",
"placeholders": {},
"comments": [],
"origin": [["src/views/board/index.tsx", 664]],
"origin": [["src/views/board/index.tsx", 669]],
"translation": "Inizia creando una nuova lista"
},
"oW13KZ": {
@@ -3202,7 +3204,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/components/SideNavigation.tsx", 105],
["src/components/SideNavigation.tsx", 106],
["src/pages/404.tsx", 44]
],
"translation": "Vai alle bacheche"
@@ -3218,28 +3220,28 @@
"message": "Go to members",
"placeholders": {},
"comments": [],
"origin": [["src/components/SideNavigation.tsx", 129]],
"origin": [["src/components/SideNavigation.tsx", 130]],
"translation": "Vai ai membri"
},
"1WuwiM": {
"message": "Go to settings",
"placeholders": {},
"comments": [],
"origin": [["src/components/SideNavigation.tsx", 141]],
"origin": [["src/components/SideNavigation.tsx", 142]],
"translation": "Vai alle impostazioni"
},
"csFbe+": {
"message": "Go to templates",
"placeholders": {},
"comments": [],
"origin": [["src/components/SideNavigation.tsx", 117]],
"origin": [["src/components/SideNavigation.tsx", 118]],
"translation": "Vai ai modelli"
},
"SUvm1Y": {
"message": "Good for individuals starting out who just need the essentials.",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 80]],
"origin": [["src/views/onboarding/select-plan/index.tsx", 84]],
"translation": "Perfetto per chi inizia e ha bisogno solo delle funzionalità essenziali."
},
"cdyS7J": {
@@ -3382,7 +3384,7 @@
"message": "Import",
"placeholders": {},
"comments": [],
"origin": [["src/views/boards/index.tsx", 73]],
"origin": [["src/views/boards/index.tsx", 82]],
"translation": "Importa"
},
"2MPcep": {
@@ -3765,7 +3767,7 @@
"comments": [],
"origin": [
["src/views/board/components/UpdateBoardSlugButton.tsx", 80],
["src/views/board/index.tsx", 307],
["src/views/board/index.tsx", 312],
["src/views/card/components/Dropdown.tsx", 72],
["src/views/public/board/CardModal.tsx", 36],
["src/views/public/board/index.tsx", 77]
@@ -3945,7 +3947,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/components/SideNavigation.tsx", 121],
["src/components/SideNavigation.tsx", 122],
["src/views/board/components/Filters.tsx", 147],
["src/views/board/components/NewCardForm.tsx", 386],
["src/views/card/index.tsx", 143],
@@ -3986,7 +3988,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/onboarding/select-plan/index.tsx", 63],
["src/views/onboarding/select-plan/index.tsx", 67],
["src/views/pricing/components/Pricing.tsx", 14],
["src/views/pricing/index.tsx", 20]
],
@@ -4090,7 +4092,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/boards/index.tsx", 95],
["src/views/boards/index.tsx", 104],
["src/views/home/components/Features.tsx", 73]
],
"translation": "Nuovo"
@@ -4145,7 +4147,7 @@
"comments": [],
"origin": [
["src/views/board/components/NewListForm.tsx", 113],
["src/views/board/index.tsx", 628]
["src/views/board/index.tsx", 633]
],
"translation": "Nuova lista"
},
@@ -4278,14 +4280,14 @@
"message": "No lists",
"placeholders": {},
"comments": [],
"origin": [["src/views/board/index.tsx", 660]],
"origin": [["src/views/board/index.tsx", 665]],
"translation": "Nessuna lista"
},
"fvLNDy": {
"message": "No lists have been created yet",
"placeholders": {},
"comments": [],
"origin": [["src/views/board/index.tsx", 665]],
"origin": [["src/views/board/index.tsx", 670]],
"translation": "Nessuna lista è stata ancora creata"
},
"i30J2U": {
@@ -4602,7 +4604,7 @@
"message": "Pick a plan to get started. All paid plans include a 14-day free trial.",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 152]],
"origin": [["src/views/onboarding/select-plan/index.tsx", 156]],
"translation": "Scegli un piano per iniziare. Tutti i piani a pagamento includono una prova gratuita di 14 giorni."
},
"GdgCoi": {
@@ -4707,8 +4709,8 @@
["src/views/board/components/NewTemplateForm.tsx", 77],
["src/views/board/components/UpdateBoardSlugForm.tsx", 73],
["src/views/board/components/VisibilityButton.tsx", 57],
["src/views/board/index.tsx", 219],
["src/views/board/index.tsx", 275],
["src/views/board/index.tsx", 224],
["src/views/board/index.tsx", 280],
["src/views/boards/components/ImportBoardsForm.tsx", 243],
["src/views/boards/components/ImportBoardsForm.tsx", 395],
["src/views/card/components/AttachmentThumbnails.tsx", 74],
@@ -4726,7 +4728,7 @@
["src/views/card/components/MemberSelector.tsx", 82],
["src/views/card/components/NewChecklistForm.tsx", 71],
["src/views/card/components/NewChecklistItemForm.tsx", 90],
["src/views/card/components/NewCommentForm.tsx", 37],
["src/views/card/components/NewCommentForm.tsx", 38],
["src/views/card/index.tsx", 236],
["src/views/card/index.tsx", 249],
["src/views/members/components/DeleteMemberConfirmation.tsx", 28],
@@ -4766,7 +4768,7 @@
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 76],
["src/views/board/components/CardContextMoveListModal.tsx", 42],
["src/views/board/index.tsx", 316],
["src/views/board/index.tsx", 321],
["src/views/card/components/Dropdown.tsx", 55],
["src/views/card/components/Dropdown.tsx", 81],
["src/views/card/components/Dropdown.tsx", 100],
@@ -4829,7 +4831,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/onboarding/select-plan/index.tsx", 92],
["src/views/onboarding/select-plan/index.tsx", 96],
["src/views/pricing/components/FeatureComparisonTable.tsx", 333],
["src/views/pricing/components/PricingTiers.tsx", 70]
],
@@ -5359,7 +5361,7 @@
"comments": [],
"origin": [
["src/components/SettingsLayout.tsx", 102],
["src/components/SideNavigation.tsx", 133]
["src/components/SideNavigation.tsx", 134]
],
"translation": "Impostazioni"
},
@@ -5454,7 +5456,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/onboarding/select-plan/index.tsx", 315],
["src/views/onboarding/select-plan/index.tsx", 319],
["src/views/onboarding/workspace-details/index.tsx", 386]
],
"translation": "Esci"
@@ -5548,7 +5550,7 @@
"message": "Solo",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 77]],
"origin": [["src/views/onboarding/select-plan/index.tsx", 81]],
"translation": "Solo"
},
"J9+zIR": {
@@ -5595,9 +5597,9 @@
"placeholders": {},
"comments": [],
"origin": [
["src/components/SideNavigation.tsx", 225],
["src/components/SideNavigation.tsx", 226],
["src/components/SideNavigation.tsx", 236]
["src/components/SideNavigation.tsx", 228],
["src/components/SideNavigation.tsx", 229],
["src/components/SideNavigation.tsx", 239]
],
"translation": "Inizia prova gratuita"
},
@@ -5615,6 +5617,13 @@
"origin": [["src/views/settings/components/WebhookList.tsx", 232]],
"translation": "Stato"
},
"hQRttt": {
"message": "Submit",
"placeholders": {},
"comments": [],
"origin": [["src/views/card/components/NewCommentForm.tsx", 60]],
"translation": "Invia"
},
"WYDptz": {
"message": "Subscription Required",
"placeholders": {},
@@ -5678,7 +5687,7 @@
"message": "Team",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 84]],
"origin": [["src/views/onboarding/select-plan/index.tsx", 88]],
"translation": "Team"
},
"bff61F": {
@@ -5708,8 +5717,8 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/index.tsx", 538],
["src/views/board/index.tsx", 574]
["src/views/board/index.tsx", 543],
["src/views/board/index.tsx", 579]
],
"translation": "Template"
},
@@ -5746,7 +5755,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/components/SideNavigation.tsx", 109],
["src/components/SideNavigation.tsx", 110],
["src/views/home/components/Features.tsx", 115]
],
"translation": "Template"
@@ -6147,7 +6156,7 @@
"message": "Unable to add comment",
"placeholders": {},
"comments": [],
"origin": [["src/views/card/components/NewCommentForm.tsx", 36]],
"origin": [["src/views/card/components/NewCommentForm.tsx", 37]],
"translation": "Impossibile aggiungere il commento"
},
"2Q871c": {
@@ -6176,7 +6185,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/index.tsx", 314],
["src/views/board/index.tsx", 319],
["src/views/card/components/Dropdown.tsx", 79],
["src/views/public/board/CardModal.tsx", 43],
["src/views/public/board/index.tsx", 84]
@@ -6376,7 +6385,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/index.tsx", 274],
["src/views/board/index.tsx", 279],
["src/views/card/index.tsx", 235]
],
"translation": "Impossibile aggiornare la card"
@@ -6421,7 +6430,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/index.tsx", 218],
["src/views/board/index.tsx", 223],
["src/views/card/components/ListSelector.tsx", 54]
],
"translation": "Impossibile aggiornare la lista"
@@ -6574,7 +6583,7 @@
"message": "Unlimited members and a custom workspace username for teams ready to scale.",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 95]],
"origin": [["src/views/onboarding/select-plan/index.tsx", 99]],
"translation": "Membri illimitati e un nome utente workspace personalizzato per i team pronti a crescere."
},
"i5yNAO": {
@@ -6599,7 +6608,8 @@
["src/pages/unsubscribe/index.tsx", 68],
["src/pages/unsubscribe/index.tsx", 93]
],
"translation": "Annulla iscrizione"
"translation": "Annulla iscrizione",
"obsolete": true
},
"EkH9pt": {
"message": "Update",
@@ -6664,7 +6674,7 @@
"comments": [],
"origin": [
["src/views/members/index.tsx", 295],
["src/views/onboarding/select-plan/index.tsx", 241]
["src/views/onboarding/select-plan/index.tsx", 245]
],
"translation": "Aggiorna"
},
@@ -6844,7 +6854,8 @@
"placeholders": {},
"comments": [],
"origin": [["src/pages/unsubscribe/index.tsx", 63]],
"translation": "Non è stato possibile aggiornare le tue preferenze. Riprova."
"translation": "Non è stato possibile aggiornare le tue preferenze. Riprova.",
"obsolete": true
},
"7sdSkl": {
"message": "We sent a link to {magicLinkRecipient}",
@@ -6997,8 +7008,8 @@
"comments": [],
"origin": [
["src/components/SettingsLayout.tsx", 47],
["src/views/board/index.tsx", 538],
["src/views/boards/index.tsx", 48],
["src/views/board/index.tsx", 543],
["src/views/boards/index.tsx", 57],
["src/views/members/index.tsx", 278],
["src/views/public/board/index.tsx", 125],
["src/views/public/boards/index.tsx", 75]
@@ -7227,11 +7238,11 @@
["src/views/board/components/List.tsx", 117],
["src/views/board/components/UpdateBoardSlugButton.tsx", 58],
["src/views/board/components/VisibilityButton.tsx", 72],
["src/views/board/index.tsx", 612],
["src/views/board/index.tsx", 670],
["src/views/board/index.tsx", 617],
["src/views/board/index.tsx", 675],
["src/views/boards/components/BoardsList.tsx", 71],
["src/views/boards/index.tsx", 59],
["src/views/boards/index.tsx", 80]
["src/views/boards/index.tsx", 68],
["src/views/boards/index.tsx", 89]
],
"translation": "Non hai i permessi necessari"
},
@@ -7254,7 +7265,8 @@
"placeholders": {},
"comments": [],
"origin": [["src/pages/unsubscribe/index.tsx", 98]],
"translation": "Hai annullato l'iscrizione!"
"translation": "Hai annullato l'iscrizione!",
"obsolete": true
},
"R275Pz": {
"message": "You have unlimited seats with your Pro Plan. There is no additional charge for new members!",
@@ -7323,7 +7335,7 @@
"message": "Your avatar",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 260]],
"origin": [["src/views/onboarding/select-plan/index.tsx", 264]],
"translation": "Il tuo avatar"
},
"evg7+A": {
@@ -7433,7 +7445,8 @@
"placeholders": {},
"comments": [],
"origin": [["src/pages/unsubscribe/index.tsx", 33]],
"translation": "Il tuo link di disiscrizione non contiene un token. Apri l'ultima email e riprova."
"translation": "Il tuo link di disiscrizione non contiene un token. Apri l'ultima email e riprova.",
"obsolete": true
},
"GRAGsB": {
"message": "Your workspace",

File diff suppressed because one or more lines are too long

View File

@@ -19,7 +19,7 @@
"0": ["isTemplate ? \"Templates\" : \"Boards\""]
},
"comments": [],
"origin": [["src/views/boards/index.tsx", 53]],
"origin": [["src/views/boards/index.tsx", 62]],
"translation": "{0}"
},
"JArWcF": {
@@ -33,7 +33,7 @@
},
"comments": [],
"origin": [
["src/views/boards/index.tsx", 48],
["src/views/boards/index.tsx", 57],
["src/views/card/index.tsx", 321]
],
"translation": "{0} | {1}"
@@ -71,7 +71,7 @@
"0": ["isTemplate ? \"Template\" : \"Board\""]
},
"comments": [],
"origin": [["src/views/board/index.tsx", 565]],
"origin": [["src/views/board/index.tsx", 570]],
"translation": "{0} niet gevonden"
},
"0xWkkH": {
@@ -220,7 +220,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/boards/index.tsx", 26],
["src/views/boards/index.tsx", 30],
["src/views/settings/components/NewWebhookModal.tsx", 321],
["src/views/settings/components/WebhookList.tsx", 106]
],
@@ -286,7 +286,7 @@
"comments": [],
"origin": [
["src/views/card/components/Comment.tsx", 185],
["src/views/card/components/NewCommentForm.tsx", 68]
["src/views/card/components/NewCommentForm.tsx", 85]
],
"translation": "Voeg opmerking toe... (typ '/' om commando's te openen of '@' om te vermelden)"
},
@@ -294,7 +294,7 @@
"message": "Add description... (type '/' to open commands or '@' to mention)",
"placeholders": {},
"comments": [],
"origin": [["src/components/Editor.tsx", 493]],
"origin": [["src/components/Editor.tsx", 499]],
"translation": "Voeg beschrijving toe... (typ '/' om commando's te openen of '@' om te vermelden)"
},
"abUZlY": {
@@ -577,7 +577,7 @@
"message": "Annual",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 64]],
"origin": [["src/views/onboarding/select-plan/index.tsx", 68]],
"translation": "Jaarlijks"
},
"3bqt9U": {
@@ -664,7 +664,7 @@
"message": "Archived",
"placeholders": {},
"comments": [],
"origin": [["src/views/boards/index.tsx", 27]],
"origin": [["src/views/boards/index.tsx", 31]],
"translation": "Gearchiveerd"
},
"lo8xBK": {
@@ -833,7 +833,7 @@
"message": "Best for small teams who want to collaborate and move faster together.",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 87]],
"origin": [["src/views/onboarding/select-plan/index.tsx", 91]],
"translation": "Het beste voor kleine teams die willen samenwerken en sneller vooruit willen komen."
},
"qaS+1/": {
@@ -887,7 +887,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/index.tsx", 538],
["src/views/board/index.tsx", 543],
["src/views/card/index.tsx", 321],
["src/views/public/board/index.tsx", 125]
],
@@ -1006,7 +1006,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/components/SideNavigation.tsx", 97],
["src/components/SideNavigation.tsx", 98],
["src/views/pricing/components/FeatureComparisonTable.tsx", 73]
],
"translation": "Boards"
@@ -1294,7 +1294,7 @@
["src/views/card/components/DeleteChecklistConfirmation.tsx", 64],
["src/views/card/components/DeleteCommentConfirmation.tsx", 77],
["src/views/members/components/DeleteMemberConfirmation.tsx", 55],
["src/views/onboarding/select-plan/index.tsx", 236],
["src/views/onboarding/select-plan/index.tsx", 240],
["src/views/settings/components/Avatar.tsx", 287],
["src/views/settings/components/ChangePasswordConfirmation.tsx", 206],
[
@@ -1361,7 +1361,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/index.tsx", 309],
["src/views/board/index.tsx", 314],
["src/views/card/components/Dropdown.tsx", 74],
["src/views/public/board/CardModal.tsx", 38]
],
@@ -1444,7 +1444,7 @@
"message": "Choose a plan",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 149]],
"origin": [["src/views/onboarding/select-plan/index.tsx", 153]],
"translation": "Kies een abonnement"
},
"5EMoSo": {
@@ -1626,7 +1626,8 @@
"placeholders": {},
"comments": [],
"origin": [["src/pages/unsubscribe/index.tsx", 81]],
"translation": "Bevestig je e-mailvoorkeuren:"
"translation": "Bevestig je e-mailvoorkeuren:",
"obsolete": true
},
"479pdJ": {
"message": "Confirm your new password",
@@ -1719,7 +1720,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/onboarding/select-plan/index.tsx", 242],
["src/views/onboarding/select-plan/index.tsx", 246],
["src/views/onboarding/workspace-details/index.tsx", 315]
],
"translation": "Doorgaan"
@@ -1888,7 +1889,7 @@
"comments": [],
"origin": [
["src/views/boards/components/BoardsList.tsx", 80],
["src/views/boards/index.tsx", 41]
["src/views/boards/index.tsx", 45]
],
"translation": "Maak nieuwe {0}"
},
@@ -1914,8 +1915,8 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/index.tsx", 93],
["src/views/board/index.tsx", 679]
["src/views/board/index.tsx", 99],
["src/views/board/index.tsx", 684]
],
"translation": "Maak nieuwe lijst"
},
@@ -1939,7 +1940,7 @@
"comments": [],
"origin": [
["src/components/NewWorkspaceForm.tsx", 227],
["src/components/WorkspaceMenu.tsx", 171]
["src/components/WorkspaceMenu.tsx", 176]
],
"translation": "Maak werkruimte"
},
@@ -2294,7 +2295,8 @@
"placeholders": {},
"comments": [],
"origin": [["src/pages/unsubscribe/index.tsx", 78]],
"translation": "Wil je je uitschrijven?"
"translation": "Wil je je uitschrijven?",
"obsolete": true
},
"JyXBgS": {
"message": "docs",
@@ -3016,8 +3018,8 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/onboarding/select-plan/index.tsx", 78],
["src/views/onboarding/select-plan/index.tsx", 79],
["src/views/onboarding/select-plan/index.tsx", 82],
["src/views/onboarding/select-plan/index.tsx", 83],
["src/views/pricing/components/FeatureComparisonTable.tsx", 331],
["src/views/pricing/components/Pricing.tsx", 32],
["src/views/pricing/components/Pricing.tsx", 32],
@@ -3125,7 +3127,7 @@
"message": "Get started by creating a new list",
"placeholders": {},
"comments": [],
"origin": [["src/views/board/index.tsx", 664]],
"origin": [["src/views/board/index.tsx", 669]],
"translation": "Ga aan de slag door een nieuwe lijst te maken"
},
"oW13KZ": {
@@ -3202,7 +3204,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/components/SideNavigation.tsx", 105],
["src/components/SideNavigation.tsx", 106],
["src/pages/404.tsx", 44]
],
"translation": "Ga naar borden"
@@ -3218,28 +3220,28 @@
"message": "Go to members",
"placeholders": {},
"comments": [],
"origin": [["src/components/SideNavigation.tsx", 129]],
"origin": [["src/components/SideNavigation.tsx", 130]],
"translation": "Ga naar leden"
},
"1WuwiM": {
"message": "Go to settings",
"placeholders": {},
"comments": [],
"origin": [["src/components/SideNavigation.tsx", 141]],
"origin": [["src/components/SideNavigation.tsx", 142]],
"translation": "Ga naar instellingen"
},
"csFbe+": {
"message": "Go to templates",
"placeholders": {},
"comments": [],
"origin": [["src/components/SideNavigation.tsx", 117]],
"origin": [["src/components/SideNavigation.tsx", 118]],
"translation": "Ga naar sjablonen"
},
"SUvm1Y": {
"message": "Good for individuals starting out who just need the essentials.",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 80]],
"origin": [["src/views/onboarding/select-plan/index.tsx", 84]],
"translation": "Geschikt voor individuen die net beginnen en alleen de basisbehoeften hebben."
},
"cdyS7J": {
@@ -3382,7 +3384,7 @@
"message": "Import",
"placeholders": {},
"comments": [],
"origin": [["src/views/boards/index.tsx", 73]],
"origin": [["src/views/boards/index.tsx", 82]],
"translation": "Importeren"
},
"2MPcep": {
@@ -3765,7 +3767,7 @@
"comments": [],
"origin": [
["src/views/board/components/UpdateBoardSlugButton.tsx", 80],
["src/views/board/index.tsx", 307],
["src/views/board/index.tsx", 312],
["src/views/card/components/Dropdown.tsx", 72],
["src/views/public/board/CardModal.tsx", 36],
["src/views/public/board/index.tsx", 77]
@@ -3945,7 +3947,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/components/SideNavigation.tsx", 121],
["src/components/SideNavigation.tsx", 122],
["src/views/board/components/Filters.tsx", 147],
["src/views/board/components/NewCardForm.tsx", 386],
["src/views/card/index.tsx", 143],
@@ -3986,7 +3988,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/onboarding/select-plan/index.tsx", 63],
["src/views/onboarding/select-plan/index.tsx", 67],
["src/views/pricing/components/Pricing.tsx", 14],
["src/views/pricing/index.tsx", 20]
],
@@ -4090,7 +4092,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/boards/index.tsx", 95],
["src/views/boards/index.tsx", 104],
["src/views/home/components/Features.tsx", 73]
],
"translation": "Nieuw"
@@ -4145,7 +4147,7 @@
"comments": [],
"origin": [
["src/views/board/components/NewListForm.tsx", 113],
["src/views/board/index.tsx", 628]
["src/views/board/index.tsx", 633]
],
"translation": "Nieuwe lijst"
},
@@ -4278,14 +4280,14 @@
"message": "No lists",
"placeholders": {},
"comments": [],
"origin": [["src/views/board/index.tsx", 660]],
"origin": [["src/views/board/index.tsx", 665]],
"translation": "Geen lijsten"
},
"fvLNDy": {
"message": "No lists have been created yet",
"placeholders": {},
"comments": [],
"origin": [["src/views/board/index.tsx", 665]],
"origin": [["src/views/board/index.tsx", 670]],
"translation": "Er zijn nog geen lijsten aangemaakt"
},
"i30J2U": {
@@ -4602,7 +4604,7 @@
"message": "Pick a plan to get started. All paid plans include a 14-day free trial.",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 152]],
"origin": [["src/views/onboarding/select-plan/index.tsx", 156]],
"translation": "Kies een abonnement om te beginnen. Alle betaalde abonnementen hebben een gratis proefperiode van 14 dagen."
},
"GdgCoi": {
@@ -4707,8 +4709,8 @@
["src/views/board/components/NewTemplateForm.tsx", 77],
["src/views/board/components/UpdateBoardSlugForm.tsx", 73],
["src/views/board/components/VisibilityButton.tsx", 57],
["src/views/board/index.tsx", 219],
["src/views/board/index.tsx", 275],
["src/views/board/index.tsx", 224],
["src/views/board/index.tsx", 280],
["src/views/boards/components/ImportBoardsForm.tsx", 243],
["src/views/boards/components/ImportBoardsForm.tsx", 395],
["src/views/card/components/AttachmentThumbnails.tsx", 74],
@@ -4726,7 +4728,7 @@
["src/views/card/components/MemberSelector.tsx", 82],
["src/views/card/components/NewChecklistForm.tsx", 71],
["src/views/card/components/NewChecklistItemForm.tsx", 90],
["src/views/card/components/NewCommentForm.tsx", 37],
["src/views/card/components/NewCommentForm.tsx", 38],
["src/views/card/index.tsx", 236],
["src/views/card/index.tsx", 249],
["src/views/members/components/DeleteMemberConfirmation.tsx", 28],
@@ -4766,7 +4768,7 @@
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 76],
["src/views/board/components/CardContextMoveListModal.tsx", 42],
["src/views/board/index.tsx", 316],
["src/views/board/index.tsx", 321],
["src/views/card/components/Dropdown.tsx", 55],
["src/views/card/components/Dropdown.tsx", 81],
["src/views/card/components/Dropdown.tsx", 100],
@@ -4829,7 +4831,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/onboarding/select-plan/index.tsx", 92],
["src/views/onboarding/select-plan/index.tsx", 96],
["src/views/pricing/components/FeatureComparisonTable.tsx", 333],
["src/views/pricing/components/PricingTiers.tsx", 70]
],
@@ -5359,7 +5361,7 @@
"comments": [],
"origin": [
["src/components/SettingsLayout.tsx", 102],
["src/components/SideNavigation.tsx", 133]
["src/components/SideNavigation.tsx", 134]
],
"translation": "Instellingen"
},
@@ -5454,7 +5456,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/onboarding/select-plan/index.tsx", 315],
["src/views/onboarding/select-plan/index.tsx", 319],
["src/views/onboarding/workspace-details/index.tsx", 386]
],
"translation": "Uitloggen"
@@ -5548,7 +5550,7 @@
"message": "Solo",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 77]],
"origin": [["src/views/onboarding/select-plan/index.tsx", 81]],
"translation": "Solo"
},
"J9+zIR": {
@@ -5595,9 +5597,9 @@
"placeholders": {},
"comments": [],
"origin": [
["src/components/SideNavigation.tsx", 225],
["src/components/SideNavigation.tsx", 226],
["src/components/SideNavigation.tsx", 236]
["src/components/SideNavigation.tsx", 228],
["src/components/SideNavigation.tsx", 229],
["src/components/SideNavigation.tsx", 239]
],
"translation": "Start gratis proefperiode"
},
@@ -5615,6 +5617,13 @@
"origin": [["src/views/settings/components/WebhookList.tsx", 232]],
"translation": "Status"
},
"hQRttt": {
"message": "Submit",
"placeholders": {},
"comments": [],
"origin": [["src/views/card/components/NewCommentForm.tsx", 60]],
"translation": "Verzenden"
},
"WYDptz": {
"message": "Subscription Required",
"placeholders": {},
@@ -5678,7 +5687,7 @@
"message": "Team",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 84]],
"origin": [["src/views/onboarding/select-plan/index.tsx", 88]],
"translation": "Team"
},
"bff61F": {
@@ -5708,8 +5717,8 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/index.tsx", 538],
["src/views/board/index.tsx", 574]
["src/views/board/index.tsx", 543],
["src/views/board/index.tsx", 579]
],
"translation": "Sjabloon"
},
@@ -5746,7 +5755,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/components/SideNavigation.tsx", 109],
["src/components/SideNavigation.tsx", 110],
["src/views/home/components/Features.tsx", 115]
],
"translation": "Sjablonen"
@@ -6147,7 +6156,7 @@
"message": "Unable to add comment",
"placeholders": {},
"comments": [],
"origin": [["src/views/card/components/NewCommentForm.tsx", 36]],
"origin": [["src/views/card/components/NewCommentForm.tsx", 37]],
"translation": "Kan opmerking niet toevoegen"
},
"2Q871c": {
@@ -6176,7 +6185,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/index.tsx", 314],
["src/views/board/index.tsx", 319],
["src/views/card/components/Dropdown.tsx", 79],
["src/views/public/board/CardModal.tsx", 43],
["src/views/public/board/index.tsx", 84]
@@ -6376,7 +6385,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/index.tsx", 274],
["src/views/board/index.tsx", 279],
["src/views/card/index.tsx", 235]
],
"translation": "Kan kaart niet bijwerken"
@@ -6421,7 +6430,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/index.tsx", 218],
["src/views/board/index.tsx", 223],
["src/views/card/components/ListSelector.tsx", 54]
],
"translation": "Kan lijst niet bijwerken"
@@ -6574,7 +6583,7 @@
"message": "Unlimited members and a custom workspace username for teams ready to scale.",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 95]],
"origin": [["src/views/onboarding/select-plan/index.tsx", 99]],
"translation": "Onbeperkt aantal leden en een aangepaste werkruimte-URL voor teams die klaar zijn om te groeien."
},
"i5yNAO": {
@@ -6599,7 +6608,8 @@
["src/pages/unsubscribe/index.tsx", 68],
["src/pages/unsubscribe/index.tsx", 93]
],
"translation": "Uitschrijven"
"translation": "Uitschrijven",
"obsolete": true
},
"EkH9pt": {
"message": "Update",
@@ -6664,7 +6674,7 @@
"comments": [],
"origin": [
["src/views/members/index.tsx", 295],
["src/views/onboarding/select-plan/index.tsx", 241]
["src/views/onboarding/select-plan/index.tsx", 245]
],
"translation": "Upgraden"
},
@@ -6844,7 +6854,8 @@
"placeholders": {},
"comments": [],
"origin": [["src/pages/unsubscribe/index.tsx", 63]],
"translation": "We konden je voorkeuren niet bijwerken. Probeer het opnieuw."
"translation": "We konden je voorkeuren niet bijwerken. Probeer het opnieuw.",
"obsolete": true
},
"7sdSkl": {
"message": "We sent a link to {magicLinkRecipient}",
@@ -6997,8 +7008,8 @@
"comments": [],
"origin": [
["src/components/SettingsLayout.tsx", 47],
["src/views/board/index.tsx", 538],
["src/views/boards/index.tsx", 48],
["src/views/board/index.tsx", 543],
["src/views/boards/index.tsx", 57],
["src/views/members/index.tsx", 278],
["src/views/public/board/index.tsx", 125],
["src/views/public/boards/index.tsx", 75]
@@ -7227,11 +7238,11 @@
["src/views/board/components/List.tsx", 117],
["src/views/board/components/UpdateBoardSlugButton.tsx", 58],
["src/views/board/components/VisibilityButton.tsx", 72],
["src/views/board/index.tsx", 612],
["src/views/board/index.tsx", 670],
["src/views/board/index.tsx", 617],
["src/views/board/index.tsx", 675],
["src/views/boards/components/BoardsList.tsx", 71],
["src/views/boards/index.tsx", 59],
["src/views/boards/index.tsx", 80]
["src/views/boards/index.tsx", 68],
["src/views/boards/index.tsx", 89]
],
"translation": "Je hebt geen toestemming"
},
@@ -7254,7 +7265,8 @@
"placeholders": {},
"comments": [],
"origin": [["src/pages/unsubscribe/index.tsx", 98]],
"translation": "Je bent uitgeschreven!"
"translation": "Je bent uitgeschreven!",
"obsolete": true
},
"R275Pz": {
"message": "You have unlimited seats with your Pro Plan. There is no additional charge for new members!",
@@ -7323,7 +7335,7 @@
"message": "Your avatar",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 260]],
"origin": [["src/views/onboarding/select-plan/index.tsx", 264]],
"translation": "Jouw avatar"
},
"evg7+A": {
@@ -7433,7 +7445,8 @@
"placeholders": {},
"comments": [],
"origin": [["src/pages/unsubscribe/index.tsx", 33]],
"translation": "Je afmeldlink mist een token. Open de nieuwste e-mail en probeer het opnieuw."
"translation": "Je afmeldlink mist een token. Open de nieuwste e-mail en probeer het opnieuw.",
"obsolete": true
},
"GRAGsB": {
"message": "Your workspace",

File diff suppressed because one or more lines are too long

View File

@@ -19,7 +19,7 @@
"0": ["isTemplate ? \"Templates\" : \"Boards\""]
},
"comments": [],
"origin": [["src/views/boards/index.tsx", 53]],
"origin": [["src/views/boards/index.tsx", 62]],
"translation": "{0}"
},
"JArWcF": {
@@ -33,7 +33,7 @@
},
"comments": [],
"origin": [
["src/views/boards/index.tsx", 48],
["src/views/boards/index.tsx", 57],
["src/views/card/index.tsx", 321]
],
"translation": "{0} | {1}"
@@ -71,7 +71,7 @@
"0": ["isTemplate ? \"Template\" : \"Board\""]
},
"comments": [],
"origin": [["src/views/board/index.tsx", 565]],
"origin": [["src/views/board/index.tsx", 570]],
"translation": "{0} nie znaleziono"
},
"0xWkkH": {
@@ -220,7 +220,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/boards/index.tsx", 26],
["src/views/boards/index.tsx", 30],
["src/views/settings/components/NewWebhookModal.tsx", 321],
["src/views/settings/components/WebhookList.tsx", 106]
],
@@ -286,7 +286,7 @@
"comments": [],
"origin": [
["src/views/card/components/Comment.tsx", 185],
["src/views/card/components/NewCommentForm.tsx", 68]
["src/views/card/components/NewCommentForm.tsx", 85]
],
"translation": "Dodaj komentarz... (wpisz '/' aby otworzyć polecenia lub '@', aby wspomnieć)"
},
@@ -294,7 +294,7 @@
"message": "Add description... (type '/' to open commands or '@' to mention)",
"placeholders": {},
"comments": [],
"origin": [["src/components/Editor.tsx", 493]],
"origin": [["src/components/Editor.tsx", 499]],
"translation": "Dodaj opis... (wpisz '/' aby otworzyć polecenia lub '@', aby wspomnieć)"
},
"abUZlY": {
@@ -577,7 +577,7 @@
"message": "Annual",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 64]],
"origin": [["src/views/onboarding/select-plan/index.tsx", 68]],
"translation": "Rocznie"
},
"3bqt9U": {
@@ -664,7 +664,7 @@
"message": "Archived",
"placeholders": {},
"comments": [],
"origin": [["src/views/boards/index.tsx", 27]],
"origin": [["src/views/boards/index.tsx", 31]],
"translation": "Zarchiwizowana"
},
"lo8xBK": {
@@ -833,7 +833,7 @@
"message": "Best for small teams who want to collaborate and move faster together.",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 87]],
"origin": [["src/views/onboarding/select-plan/index.tsx", 91]],
"translation": "Najlepszy dla małych zespołów, które chcą współpracować i działać szybciej razem."
},
"qaS+1/": {
@@ -887,7 +887,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/index.tsx", 538],
["src/views/board/index.tsx", 543],
["src/views/card/index.tsx", 321],
["src/views/public/board/index.tsx", 125]
],
@@ -1006,7 +1006,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/components/SideNavigation.tsx", 97],
["src/components/SideNavigation.tsx", 98],
["src/views/pricing/components/FeatureComparisonTable.tsx", 73]
],
"translation": "Tablice"
@@ -1294,7 +1294,7 @@
["src/views/card/components/DeleteChecklistConfirmation.tsx", 64],
["src/views/card/components/DeleteCommentConfirmation.tsx", 77],
["src/views/members/components/DeleteMemberConfirmation.tsx", 55],
["src/views/onboarding/select-plan/index.tsx", 236],
["src/views/onboarding/select-plan/index.tsx", 240],
["src/views/settings/components/Avatar.tsx", 287],
["src/views/settings/components/ChangePasswordConfirmation.tsx", 206],
[
@@ -1361,7 +1361,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/index.tsx", 309],
["src/views/board/index.tsx", 314],
["src/views/card/components/Dropdown.tsx", 74],
["src/views/public/board/CardModal.tsx", 38]
],
@@ -1444,7 +1444,7 @@
"message": "Choose a plan",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 149]],
"origin": [["src/views/onboarding/select-plan/index.tsx", 153]],
"translation": "Wybierz plan"
},
"5EMoSo": {
@@ -1626,7 +1626,8 @@
"placeholders": {},
"comments": [],
"origin": [["src/pages/unsubscribe/index.tsx", 81]],
"translation": "Potwierdź swoje preferencje dotyczące e-maili:"
"translation": "Potwierdź swoje preferencje dotyczące e-maili:",
"obsolete": true
},
"479pdJ": {
"message": "Confirm your new password",
@@ -1719,7 +1720,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/onboarding/select-plan/index.tsx", 242],
["src/views/onboarding/select-plan/index.tsx", 246],
["src/views/onboarding/workspace-details/index.tsx", 315]
],
"translation": "Kontynuuj"
@@ -1888,7 +1889,7 @@
"comments": [],
"origin": [
["src/views/boards/components/BoardsList.tsx", 80],
["src/views/boards/index.tsx", 41]
["src/views/boards/index.tsx", 45]
],
"translation": "Utwórz nową {0}"
},
@@ -1914,8 +1915,8 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/index.tsx", 93],
["src/views/board/index.tsx", 679]
["src/views/board/index.tsx", 99],
["src/views/board/index.tsx", 684]
],
"translation": "Utwórz nową listę"
},
@@ -1939,7 +1940,7 @@
"comments": [],
"origin": [
["src/components/NewWorkspaceForm.tsx", 227],
["src/components/WorkspaceMenu.tsx", 171]
["src/components/WorkspaceMenu.tsx", 176]
],
"translation": "Utwórz workspace"
},
@@ -2294,7 +2295,8 @@
"placeholders": {},
"comments": [],
"origin": [["src/pages/unsubscribe/index.tsx", 78]],
"translation": "Czy chcesz zrezygnować z subskrypcji?"
"translation": "Czy chcesz zrezygnować z subskrypcji?",
"obsolete": true
},
"JyXBgS": {
"message": "docs",
@@ -3016,8 +3018,8 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/onboarding/select-plan/index.tsx", 78],
["src/views/onboarding/select-plan/index.tsx", 79],
["src/views/onboarding/select-plan/index.tsx", 82],
["src/views/onboarding/select-plan/index.tsx", 83],
["src/views/pricing/components/FeatureComparisonTable.tsx", 331],
["src/views/pricing/components/Pricing.tsx", 32],
["src/views/pricing/components/Pricing.tsx", 32],
@@ -3125,7 +3127,7 @@
"message": "Get started by creating a new list",
"placeholders": {},
"comments": [],
"origin": [["src/views/board/index.tsx", 664]],
"origin": [["src/views/board/index.tsx", 669]],
"translation": "Rozpocznij, tworząc nową listę"
},
"oW13KZ": {
@@ -3202,7 +3204,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/components/SideNavigation.tsx", 105],
["src/components/SideNavigation.tsx", 106],
["src/pages/404.tsx", 44]
],
"translation": "Przejdź do tablic"
@@ -3218,28 +3220,28 @@
"message": "Go to members",
"placeholders": {},
"comments": [],
"origin": [["src/components/SideNavigation.tsx", 129]],
"origin": [["src/components/SideNavigation.tsx", 130]],
"translation": "Przejdź do członków"
},
"1WuwiM": {
"message": "Go to settings",
"placeholders": {},
"comments": [],
"origin": [["src/components/SideNavigation.tsx", 141]],
"origin": [["src/components/SideNavigation.tsx", 142]],
"translation": "Przejdź do ustawień"
},
"csFbe+": {
"message": "Go to templates",
"placeholders": {},
"comments": [],
"origin": [["src/components/SideNavigation.tsx", 117]],
"origin": [["src/components/SideNavigation.tsx", 118]],
"translation": "Przejdź do szablonów"
},
"SUvm1Y": {
"message": "Good for individuals starting out who just need the essentials.",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 80]],
"origin": [["src/views/onboarding/select-plan/index.tsx", 84]],
"translation": "Dobry dla osób zaczynających, które potrzebują tylko podstaw."
},
"cdyS7J": {
@@ -3382,7 +3384,7 @@
"message": "Import",
"placeholders": {},
"comments": [],
"origin": [["src/views/boards/index.tsx", 73]],
"origin": [["src/views/boards/index.tsx", 82]],
"translation": "Importuj"
},
"2MPcep": {
@@ -3765,7 +3767,7 @@
"comments": [],
"origin": [
["src/views/board/components/UpdateBoardSlugButton.tsx", 80],
["src/views/board/index.tsx", 307],
["src/views/board/index.tsx", 312],
["src/views/card/components/Dropdown.tsx", 72],
["src/views/public/board/CardModal.tsx", 36],
["src/views/public/board/index.tsx", 77]
@@ -3945,7 +3947,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/components/SideNavigation.tsx", 121],
["src/components/SideNavigation.tsx", 122],
["src/views/board/components/Filters.tsx", 147],
["src/views/board/components/NewCardForm.tsx", 386],
["src/views/card/index.tsx", 143],
@@ -3986,7 +3988,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/onboarding/select-plan/index.tsx", 63],
["src/views/onboarding/select-plan/index.tsx", 67],
["src/views/pricing/components/Pricing.tsx", 14],
["src/views/pricing/index.tsx", 20]
],
@@ -4090,7 +4092,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/boards/index.tsx", 95],
["src/views/boards/index.tsx", 104],
["src/views/home/components/Features.tsx", 73]
],
"translation": "Nowy"
@@ -4145,7 +4147,7 @@
"comments": [],
"origin": [
["src/views/board/components/NewListForm.tsx", 113],
["src/views/board/index.tsx", 628]
["src/views/board/index.tsx", 633]
],
"translation": "Nowa lista"
},
@@ -4278,14 +4280,14 @@
"message": "No lists",
"placeholders": {},
"comments": [],
"origin": [["src/views/board/index.tsx", 660]],
"origin": [["src/views/board/index.tsx", 665]],
"translation": "Brak list"
},
"fvLNDy": {
"message": "No lists have been created yet",
"placeholders": {},
"comments": [],
"origin": [["src/views/board/index.tsx", 665]],
"origin": [["src/views/board/index.tsx", 670]],
"translation": "Nie utworzono jeszcze żadnych list"
},
"i30J2U": {
@@ -4602,7 +4604,7 @@
"message": "Pick a plan to get started. All paid plans include a 14-day free trial.",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 152]],
"origin": [["src/views/onboarding/select-plan/index.tsx", 156]],
"translation": "Wybierz plan, aby rozpocząć. Wszystkie płatne plany zawierają 14-dniowy bezpłatny okres próbny."
},
"GdgCoi": {
@@ -4707,8 +4709,8 @@
["src/views/board/components/NewTemplateForm.tsx", 77],
["src/views/board/components/UpdateBoardSlugForm.tsx", 73],
["src/views/board/components/VisibilityButton.tsx", 57],
["src/views/board/index.tsx", 219],
["src/views/board/index.tsx", 275],
["src/views/board/index.tsx", 224],
["src/views/board/index.tsx", 280],
["src/views/boards/components/ImportBoardsForm.tsx", 243],
["src/views/boards/components/ImportBoardsForm.tsx", 395],
["src/views/card/components/AttachmentThumbnails.tsx", 74],
@@ -4726,7 +4728,7 @@
["src/views/card/components/MemberSelector.tsx", 82],
["src/views/card/components/NewChecklistForm.tsx", 71],
["src/views/card/components/NewChecklistItemForm.tsx", 90],
["src/views/card/components/NewCommentForm.tsx", 37],
["src/views/card/components/NewCommentForm.tsx", 38],
["src/views/card/index.tsx", 236],
["src/views/card/index.tsx", 249],
["src/views/members/components/DeleteMemberConfirmation.tsx", 28],
@@ -4766,7 +4768,7 @@
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 76],
["src/views/board/components/CardContextMoveListModal.tsx", 42],
["src/views/board/index.tsx", 316],
["src/views/board/index.tsx", 321],
["src/views/card/components/Dropdown.tsx", 55],
["src/views/card/components/Dropdown.tsx", 81],
["src/views/card/components/Dropdown.tsx", 100],
@@ -4829,7 +4831,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/onboarding/select-plan/index.tsx", 92],
["src/views/onboarding/select-plan/index.tsx", 96],
["src/views/pricing/components/FeatureComparisonTable.tsx", 333],
["src/views/pricing/components/PricingTiers.tsx", 70]
],
@@ -5359,7 +5361,7 @@
"comments": [],
"origin": [
["src/components/SettingsLayout.tsx", 102],
["src/components/SideNavigation.tsx", 133]
["src/components/SideNavigation.tsx", 134]
],
"translation": "Ustawienia"
},
@@ -5454,7 +5456,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/onboarding/select-plan/index.tsx", 315],
["src/views/onboarding/select-plan/index.tsx", 319],
["src/views/onboarding/workspace-details/index.tsx", 386]
],
"translation": "Wyloguj się"
@@ -5548,7 +5550,7 @@
"message": "Solo",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 77]],
"origin": [["src/views/onboarding/select-plan/index.tsx", 81]],
"translation": "Solo"
},
"J9+zIR": {
@@ -5595,9 +5597,9 @@
"placeholders": {},
"comments": [],
"origin": [
["src/components/SideNavigation.tsx", 225],
["src/components/SideNavigation.tsx", 226],
["src/components/SideNavigation.tsx", 236]
["src/components/SideNavigation.tsx", 228],
["src/components/SideNavigation.tsx", 229],
["src/components/SideNavigation.tsx", 239]
],
"translation": "Rozpocznij bezpłatny okres próbny"
},
@@ -5615,6 +5617,13 @@
"origin": [["src/views/settings/components/WebhookList.tsx", 232]],
"translation": "Status"
},
"hQRttt": {
"message": "Submit",
"placeholders": {},
"comments": [],
"origin": [["src/views/card/components/NewCommentForm.tsx", 60]],
"translation": "Prześlij"
},
"WYDptz": {
"message": "Subscription Required",
"placeholders": {},
@@ -5678,7 +5687,7 @@
"message": "Team",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 84]],
"origin": [["src/views/onboarding/select-plan/index.tsx", 88]],
"translation": "Zespół"
},
"bff61F": {
@@ -5708,8 +5717,8 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/index.tsx", 538],
["src/views/board/index.tsx", 574]
["src/views/board/index.tsx", 543],
["src/views/board/index.tsx", 579]
],
"translation": "Szablon"
},
@@ -5746,7 +5755,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/components/SideNavigation.tsx", 109],
["src/components/SideNavigation.tsx", 110],
["src/views/home/components/Features.tsx", 115]
],
"translation": "Szablony"
@@ -6147,7 +6156,7 @@
"message": "Unable to add comment",
"placeholders": {},
"comments": [],
"origin": [["src/views/card/components/NewCommentForm.tsx", 36]],
"origin": [["src/views/card/components/NewCommentForm.tsx", 37]],
"translation": "Nie można dodać komentarza"
},
"2Q871c": {
@@ -6176,7 +6185,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/index.tsx", 314],
["src/views/board/index.tsx", 319],
["src/views/card/components/Dropdown.tsx", 79],
["src/views/public/board/CardModal.tsx", 43],
["src/views/public/board/index.tsx", 84]
@@ -6376,7 +6385,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/index.tsx", 274],
["src/views/board/index.tsx", 279],
["src/views/card/index.tsx", 235]
],
"translation": "Nie można zaktualizować karty"
@@ -6421,7 +6430,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/index.tsx", 218],
["src/views/board/index.tsx", 223],
["src/views/card/components/ListSelector.tsx", 54]
],
"translation": "Nie można zaktualizować listy"
@@ -6574,7 +6583,7 @@
"message": "Unlimited members and a custom workspace username for teams ready to scale.",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 95]],
"origin": [["src/views/onboarding/select-plan/index.tsx", 99]],
"translation": "Nieograniczona liczba członków i niestandardowa nazwa użytkownika przestrzeni roboczej dla zespołów gotowych do rozwoju."
},
"i5yNAO": {
@@ -6599,7 +6608,8 @@
["src/pages/unsubscribe/index.tsx", 68],
["src/pages/unsubscribe/index.tsx", 93]
],
"translation": "Anuluj subskrypcję"
"translation": "Anuluj subskrypcję",
"obsolete": true
},
"EkH9pt": {
"message": "Update",
@@ -6664,7 +6674,7 @@
"comments": [],
"origin": [
["src/views/members/index.tsx", 295],
["src/views/onboarding/select-plan/index.tsx", 241]
["src/views/onboarding/select-plan/index.tsx", 245]
],
"translation": "Uaktualnij"
},
@@ -6844,7 +6854,8 @@
"placeholders": {},
"comments": [],
"origin": [["src/pages/unsubscribe/index.tsx", 63]],
"translation": "Nie udało się zaktualizować Twoich preferencji. Spróbuj ponownie."
"translation": "Nie udało się zaktualizować Twoich preferencji. Spróbuj ponownie.",
"obsolete": true
},
"7sdSkl": {
"message": "We sent a link to {magicLinkRecipient}",
@@ -6997,8 +7008,8 @@
"comments": [],
"origin": [
["src/components/SettingsLayout.tsx", 47],
["src/views/board/index.tsx", 538],
["src/views/boards/index.tsx", 48],
["src/views/board/index.tsx", 543],
["src/views/boards/index.tsx", 57],
["src/views/members/index.tsx", 278],
["src/views/public/board/index.tsx", 125],
["src/views/public/boards/index.tsx", 75]
@@ -7227,11 +7238,11 @@
["src/views/board/components/List.tsx", 117],
["src/views/board/components/UpdateBoardSlugButton.tsx", 58],
["src/views/board/components/VisibilityButton.tsx", 72],
["src/views/board/index.tsx", 612],
["src/views/board/index.tsx", 670],
["src/views/board/index.tsx", 617],
["src/views/board/index.tsx", 675],
["src/views/boards/components/BoardsList.tsx", 71],
["src/views/boards/index.tsx", 59],
["src/views/boards/index.tsx", 80]
["src/views/boards/index.tsx", 68],
["src/views/boards/index.tsx", 89]
],
"translation": "Nie masz uprawnień"
},
@@ -7254,7 +7265,8 @@
"placeholders": {},
"comments": [],
"origin": [["src/pages/unsubscribe/index.tsx", 98]],
"translation": "Zostałeś wypisany z subskrypcji!"
"translation": "Zostałeś wypisany z subskrypcji!",
"obsolete": true
},
"R275Pz": {
"message": "You have unlimited seats with your Pro Plan. There is no additional charge for new members!",
@@ -7323,7 +7335,7 @@
"message": "Your avatar",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 260]],
"origin": [["src/views/onboarding/select-plan/index.tsx", 264]],
"translation": "Twój awatar"
},
"evg7+A": {
@@ -7433,7 +7445,8 @@
"placeholders": {},
"comments": [],
"origin": [["src/pages/unsubscribe/index.tsx", 33]],
"translation": "Twój link do wypisania się nie zawiera tokena. Otwórz najnowszy e-mail i spróbuj ponownie."
"translation": "Twój link do wypisania się nie zawiera tokena. Otwórz najnowszy e-mail i spróbuj ponownie.",
"obsolete": true
},
"GRAGsB": {
"message": "Your workspace",

File diff suppressed because one or more lines are too long

View File

@@ -19,7 +19,7 @@
"0": ["isTemplate ? \"Templates\" : \"Boards\""]
},
"comments": [],
"origin": [["src/views/boards/index.tsx", 53]],
"origin": [["src/views/boards/index.tsx", 62]],
"translation": "{0}"
},
"JArWcF": {
@@ -33,7 +33,7 @@
},
"comments": [],
"origin": [
["src/views/boards/index.tsx", 48],
["src/views/boards/index.tsx", 57],
["src/views/card/index.tsx", 321]
],
"translation": "{0} | {1}"
@@ -71,7 +71,7 @@
"0": ["isTemplate ? \"Template\" : \"Board\""]
},
"comments": [],
"origin": [["src/views/board/index.tsx", 565]],
"origin": [["src/views/board/index.tsx", 570]],
"translation": "{0} não encontrado"
},
"0xWkkH": {
@@ -220,7 +220,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/boards/index.tsx", 26],
["src/views/boards/index.tsx", 30],
["src/views/settings/components/NewWebhookModal.tsx", 321],
["src/views/settings/components/WebhookList.tsx", 106]
],
@@ -286,7 +286,7 @@
"comments": [],
"origin": [
["src/views/card/components/Comment.tsx", 185],
["src/views/card/components/NewCommentForm.tsx", 68]
["src/views/card/components/NewCommentForm.tsx", 85]
],
"translation": "Adicionar comentário... (digite '/' para abrir comandos ou '@' para mencionar)"
},
@@ -294,7 +294,7 @@
"message": "Add description... (type '/' to open commands or '@' to mention)",
"placeholders": {},
"comments": [],
"origin": [["src/components/Editor.tsx", 493]],
"origin": [["src/components/Editor.tsx", 499]],
"translation": "Adicionar descrição... (digite '/' para abrir comandos ou '@' para mencionar)"
},
"abUZlY": {
@@ -577,7 +577,7 @@
"message": "Annual",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 64]],
"origin": [["src/views/onboarding/select-plan/index.tsx", 68]],
"translation": "Anual"
},
"3bqt9U": {
@@ -664,7 +664,7 @@
"message": "Archived",
"placeholders": {},
"comments": [],
"origin": [["src/views/boards/index.tsx", 27]],
"origin": [["src/views/boards/index.tsx", 31]],
"translation": "Arquivado"
},
"lo8xBK": {
@@ -833,7 +833,7 @@
"message": "Best for small teams who want to collaborate and move faster together.",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 87]],
"origin": [["src/views/onboarding/select-plan/index.tsx", 91]],
"translation": "Ideal para pequenas equipes que desejam colaborar e avançar mais rápido juntas."
},
"qaS+1/": {
@@ -887,7 +887,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/index.tsx", 538],
["src/views/board/index.tsx", 543],
["src/views/card/index.tsx", 321],
["src/views/public/board/index.tsx", 125]
],
@@ -1006,7 +1006,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/components/SideNavigation.tsx", 97],
["src/components/SideNavigation.tsx", 98],
["src/views/pricing/components/FeatureComparisonTable.tsx", 73]
],
"translation": "Quadros"
@@ -1294,7 +1294,7 @@
["src/views/card/components/DeleteChecklistConfirmation.tsx", 64],
["src/views/card/components/DeleteCommentConfirmation.tsx", 77],
["src/views/members/components/DeleteMemberConfirmation.tsx", 55],
["src/views/onboarding/select-plan/index.tsx", 236],
["src/views/onboarding/select-plan/index.tsx", 240],
["src/views/settings/components/Avatar.tsx", 287],
["src/views/settings/components/ChangePasswordConfirmation.tsx", 206],
[
@@ -1361,7 +1361,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/index.tsx", 309],
["src/views/board/index.tsx", 314],
["src/views/card/components/Dropdown.tsx", 74],
["src/views/public/board/CardModal.tsx", 38]
],
@@ -1444,7 +1444,7 @@
"message": "Choose a plan",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 149]],
"origin": [["src/views/onboarding/select-plan/index.tsx", 153]],
"translation": "Escolha um plano"
},
"5EMoSo": {
@@ -1626,7 +1626,8 @@
"placeholders": {},
"comments": [],
"origin": [["src/pages/unsubscribe/index.tsx", 81]],
"translation": "Confirme suas preferências de e-mail:"
"translation": "Confirme suas preferências de e-mail:",
"obsolete": true
},
"479pdJ": {
"message": "Confirm your new password",
@@ -1719,7 +1720,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/onboarding/select-plan/index.tsx", 242],
["src/views/onboarding/select-plan/index.tsx", 246],
["src/views/onboarding/workspace-details/index.tsx", 315]
],
"translation": "Continuar"
@@ -1888,7 +1889,7 @@
"comments": [],
"origin": [
["src/views/boards/components/BoardsList.tsx", 80],
["src/views/boards/index.tsx", 41]
["src/views/boards/index.tsx", 45]
],
"translation": "Criar novo {0}"
},
@@ -1914,8 +1915,8 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/index.tsx", 93],
["src/views/board/index.tsx", 679]
["src/views/board/index.tsx", 99],
["src/views/board/index.tsx", 684]
],
"translation": "Criar nova lista"
},
@@ -1939,7 +1940,7 @@
"comments": [],
"origin": [
["src/components/NewWorkspaceForm.tsx", 227],
["src/components/WorkspaceMenu.tsx", 171]
["src/components/WorkspaceMenu.tsx", 176]
],
"translation": "Criar workspace"
},
@@ -2294,7 +2295,8 @@
"placeholders": {},
"comments": [],
"origin": [["src/pages/unsubscribe/index.tsx", 78]],
"translation": "Você deseja cancelar a assinatura?"
"translation": "Você deseja cancelar a assinatura?",
"obsolete": true
},
"JyXBgS": {
"message": "docs",
@@ -3016,8 +3018,8 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/onboarding/select-plan/index.tsx", 78],
["src/views/onboarding/select-plan/index.tsx", 79],
["src/views/onboarding/select-plan/index.tsx", 82],
["src/views/onboarding/select-plan/index.tsx", 83],
["src/views/pricing/components/FeatureComparisonTable.tsx", 331],
["src/views/pricing/components/Pricing.tsx", 32],
["src/views/pricing/components/Pricing.tsx", 32],
@@ -3125,7 +3127,7 @@
"message": "Get started by creating a new list",
"placeholders": {},
"comments": [],
"origin": [["src/views/board/index.tsx", 664]],
"origin": [["src/views/board/index.tsx", 669]],
"translation": "Comece criando uma nova lista"
},
"oW13KZ": {
@@ -3202,7 +3204,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/components/SideNavigation.tsx", 105],
["src/components/SideNavigation.tsx", 106],
["src/pages/404.tsx", 44]
],
"translation": "Ir para quadros"
@@ -3218,28 +3220,28 @@
"message": "Go to members",
"placeholders": {},
"comments": [],
"origin": [["src/components/SideNavigation.tsx", 129]],
"origin": [["src/components/SideNavigation.tsx", 130]],
"translation": "Ir para membros"
},
"1WuwiM": {
"message": "Go to settings",
"placeholders": {},
"comments": [],
"origin": [["src/components/SideNavigation.tsx", 141]],
"origin": [["src/components/SideNavigation.tsx", 142]],
"translation": "Ir para configurações"
},
"csFbe+": {
"message": "Go to templates",
"placeholders": {},
"comments": [],
"origin": [["src/components/SideNavigation.tsx", 117]],
"origin": [["src/components/SideNavigation.tsx", 118]],
"translation": "Ir para modelos"
},
"SUvm1Y": {
"message": "Good for individuals starting out who just need the essentials.",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 80]],
"origin": [["src/views/onboarding/select-plan/index.tsx", 84]],
"translation": "Bom para indivíduos começando que precisam apenas do essencial."
},
"cdyS7J": {
@@ -3382,7 +3384,7 @@
"message": "Import",
"placeholders": {},
"comments": [],
"origin": [["src/views/boards/index.tsx", 73]],
"origin": [["src/views/boards/index.tsx", 82]],
"translation": "Importar"
},
"2MPcep": {
@@ -3765,7 +3767,7 @@
"comments": [],
"origin": [
["src/views/board/components/UpdateBoardSlugButton.tsx", 80],
["src/views/board/index.tsx", 307],
["src/views/board/index.tsx", 312],
["src/views/card/components/Dropdown.tsx", 72],
["src/views/public/board/CardModal.tsx", 36],
["src/views/public/board/index.tsx", 77]
@@ -3945,7 +3947,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/components/SideNavigation.tsx", 121],
["src/components/SideNavigation.tsx", 122],
["src/views/board/components/Filters.tsx", 147],
["src/views/board/components/NewCardForm.tsx", 386],
["src/views/card/index.tsx", 143],
@@ -3986,7 +3988,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/onboarding/select-plan/index.tsx", 63],
["src/views/onboarding/select-plan/index.tsx", 67],
["src/views/pricing/components/Pricing.tsx", 14],
["src/views/pricing/index.tsx", 20]
],
@@ -4090,7 +4092,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/boards/index.tsx", 95],
["src/views/boards/index.tsx", 104],
["src/views/home/components/Features.tsx", 73]
],
"translation": "Novo"
@@ -4145,7 +4147,7 @@
"comments": [],
"origin": [
["src/views/board/components/NewListForm.tsx", 113],
["src/views/board/index.tsx", 628]
["src/views/board/index.tsx", 633]
],
"translation": "Nova lista"
},
@@ -4278,14 +4280,14 @@
"message": "No lists",
"placeholders": {},
"comments": [],
"origin": [["src/views/board/index.tsx", 660]],
"origin": [["src/views/board/index.tsx", 665]],
"translation": "Nenhuma lista"
},
"fvLNDy": {
"message": "No lists have been created yet",
"placeholders": {},
"comments": [],
"origin": [["src/views/board/index.tsx", 665]],
"origin": [["src/views/board/index.tsx", 670]],
"translation": "Nenhuma lista foi criada ainda"
},
"i30J2U": {
@@ -4602,7 +4604,7 @@
"message": "Pick a plan to get started. All paid plans include a 14-day free trial.",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 152]],
"origin": [["src/views/onboarding/select-plan/index.tsx", 156]],
"translation": "Escolha um plano para começar. Todos os planos pagos incluem 14 dias de teste grátis."
},
"GdgCoi": {
@@ -4707,8 +4709,8 @@
["src/views/board/components/NewTemplateForm.tsx", 77],
["src/views/board/components/UpdateBoardSlugForm.tsx", 73],
["src/views/board/components/VisibilityButton.tsx", 57],
["src/views/board/index.tsx", 219],
["src/views/board/index.tsx", 275],
["src/views/board/index.tsx", 224],
["src/views/board/index.tsx", 280],
["src/views/boards/components/ImportBoardsForm.tsx", 243],
["src/views/boards/components/ImportBoardsForm.tsx", 395],
["src/views/card/components/AttachmentThumbnails.tsx", 74],
@@ -4726,7 +4728,7 @@
["src/views/card/components/MemberSelector.tsx", 82],
["src/views/card/components/NewChecklistForm.tsx", 71],
["src/views/card/components/NewChecklistItemForm.tsx", 90],
["src/views/card/components/NewCommentForm.tsx", 37],
["src/views/card/components/NewCommentForm.tsx", 38],
["src/views/card/index.tsx", 236],
["src/views/card/index.tsx", 249],
["src/views/members/components/DeleteMemberConfirmation.tsx", 28],
@@ -4766,7 +4768,7 @@
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 76],
["src/views/board/components/CardContextMoveListModal.tsx", 42],
["src/views/board/index.tsx", 316],
["src/views/board/index.tsx", 321],
["src/views/card/components/Dropdown.tsx", 55],
["src/views/card/components/Dropdown.tsx", 81],
["src/views/card/components/Dropdown.tsx", 100],
@@ -4829,7 +4831,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/onboarding/select-plan/index.tsx", 92],
["src/views/onboarding/select-plan/index.tsx", 96],
["src/views/pricing/components/FeatureComparisonTable.tsx", 333],
["src/views/pricing/components/PricingTiers.tsx", 70]
],
@@ -5359,7 +5361,7 @@
"comments": [],
"origin": [
["src/components/SettingsLayout.tsx", 102],
["src/components/SideNavigation.tsx", 133]
["src/components/SideNavigation.tsx", 134]
],
"translation": "Configurações"
},
@@ -5454,7 +5456,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/onboarding/select-plan/index.tsx", 315],
["src/views/onboarding/select-plan/index.tsx", 319],
["src/views/onboarding/workspace-details/index.tsx", 386]
],
"translation": "Sair"
@@ -5548,7 +5550,7 @@
"message": "Solo",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 77]],
"origin": [["src/views/onboarding/select-plan/index.tsx", 81]],
"translation": "Solo"
},
"J9+zIR": {
@@ -5595,9 +5597,9 @@
"placeholders": {},
"comments": [],
"origin": [
["src/components/SideNavigation.tsx", 225],
["src/components/SideNavigation.tsx", 226],
["src/components/SideNavigation.tsx", 236]
["src/components/SideNavigation.tsx", 228],
["src/components/SideNavigation.tsx", 229],
["src/components/SideNavigation.tsx", 239]
],
"translation": "Iniciar teste gratuito"
},
@@ -5615,6 +5617,13 @@
"origin": [["src/views/settings/components/WebhookList.tsx", 232]],
"translation": "Status"
},
"hQRttt": {
"message": "Submit",
"placeholders": {},
"comments": [],
"origin": [["src/views/card/components/NewCommentForm.tsx", 60]],
"translation": "Enviar"
},
"WYDptz": {
"message": "Subscription Required",
"placeholders": {},
@@ -5678,7 +5687,7 @@
"message": "Team",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 84]],
"origin": [["src/views/onboarding/select-plan/index.tsx", 88]],
"translation": "Equipe"
},
"bff61F": {
@@ -5708,8 +5717,8 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/index.tsx", 538],
["src/views/board/index.tsx", 574]
["src/views/board/index.tsx", 543],
["src/views/board/index.tsx", 579]
],
"translation": "Modelo"
},
@@ -5746,7 +5755,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/components/SideNavigation.tsx", 109],
["src/components/SideNavigation.tsx", 110],
["src/views/home/components/Features.tsx", 115]
],
"translation": "Templates"
@@ -6147,7 +6156,7 @@
"message": "Unable to add comment",
"placeholders": {},
"comments": [],
"origin": [["src/views/card/components/NewCommentForm.tsx", 36]],
"origin": [["src/views/card/components/NewCommentForm.tsx", 37]],
"translation": "Não foi possível adicionar comentário"
},
"2Q871c": {
@@ -6176,7 +6185,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/index.tsx", 314],
["src/views/board/index.tsx", 319],
["src/views/card/components/Dropdown.tsx", 79],
["src/views/public/board/CardModal.tsx", 43],
["src/views/public/board/index.tsx", 84]
@@ -6376,7 +6385,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/index.tsx", 274],
["src/views/board/index.tsx", 279],
["src/views/card/index.tsx", 235]
],
"translation": "Não foi possível atualizar o cartão"
@@ -6421,7 +6430,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/index.tsx", 218],
["src/views/board/index.tsx", 223],
["src/views/card/components/ListSelector.tsx", 54]
],
"translation": "Não foi possível atualizar a lista"
@@ -6574,7 +6583,7 @@
"message": "Unlimited members and a custom workspace username for teams ready to scale.",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 95]],
"origin": [["src/views/onboarding/select-plan/index.tsx", 99]],
"translation": "Membros ilimitados e um nome de usuário personalizado para equipes prontas para crescer."
},
"i5yNAO": {
@@ -6599,7 +6608,8 @@
["src/pages/unsubscribe/index.tsx", 68],
["src/pages/unsubscribe/index.tsx", 93]
],
"translation": "Cancelar inscrição"
"translation": "Cancelar inscrição",
"obsolete": true
},
"EkH9pt": {
"message": "Update",
@@ -6664,7 +6674,7 @@
"comments": [],
"origin": [
["src/views/members/index.tsx", 295],
["src/views/onboarding/select-plan/index.tsx", 241]
["src/views/onboarding/select-plan/index.tsx", 245]
],
"translation": "Atualizar"
},
@@ -6844,7 +6854,8 @@
"placeholders": {},
"comments": [],
"origin": [["src/pages/unsubscribe/index.tsx", 63]],
"translation": "Não foi possível atualizar suas preferências. Tente novamente."
"translation": "Não foi possível atualizar suas preferências. Tente novamente.",
"obsolete": true
},
"7sdSkl": {
"message": "We sent a link to {magicLinkRecipient}",
@@ -6997,8 +7008,8 @@
"comments": [],
"origin": [
["src/components/SettingsLayout.tsx", 47],
["src/views/board/index.tsx", 538],
["src/views/boards/index.tsx", 48],
["src/views/board/index.tsx", 543],
["src/views/boards/index.tsx", 57],
["src/views/members/index.tsx", 278],
["src/views/public/board/index.tsx", 125],
["src/views/public/boards/index.tsx", 75]
@@ -7227,11 +7238,11 @@
["src/views/board/components/List.tsx", 117],
["src/views/board/components/UpdateBoardSlugButton.tsx", 58],
["src/views/board/components/VisibilityButton.tsx", 72],
["src/views/board/index.tsx", 612],
["src/views/board/index.tsx", 670],
["src/views/board/index.tsx", 617],
["src/views/board/index.tsx", 675],
["src/views/boards/components/BoardsList.tsx", 71],
["src/views/boards/index.tsx", 59],
["src/views/boards/index.tsx", 80]
["src/views/boards/index.tsx", 68],
["src/views/boards/index.tsx", 89]
],
"translation": "Você não tem permissão"
},
@@ -7254,7 +7265,8 @@
"placeholders": {},
"comments": [],
"origin": [["src/pages/unsubscribe/index.tsx", 98]],
"translation": "Você cancelou a inscrição!"
"translation": "Você cancelou a inscrição!",
"obsolete": true
},
"R275Pz": {
"message": "You have unlimited seats with your Pro Plan. There is no additional charge for new members!",
@@ -7323,7 +7335,7 @@
"message": "Your avatar",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 260]],
"origin": [["src/views/onboarding/select-plan/index.tsx", 264]],
"translation": "Seu avatar"
},
"evg7+A": {
@@ -7433,7 +7445,8 @@
"placeholders": {},
"comments": [],
"origin": [["src/pages/unsubscribe/index.tsx", 33]],
"translation": "Seu link de cancelamento de inscrição está sem um token. Por favor, abra o e-mail mais recente e tente novamente."
"translation": "Seu link de cancelamento de inscrição está sem um token. Por favor, abra o e-mail mais recente e tente novamente.",
"obsolete": true
},
"GRAGsB": {
"message": "Your workspace",

File diff suppressed because one or more lines are too long

View File

@@ -19,7 +19,7 @@
"0": ["isTemplate ? \"Templates\" : \"Boards\""]
},
"comments": [],
"origin": [["src/views/boards/index.tsx", 53]],
"origin": [["src/views/boards/index.tsx", 62]],
"translation": "{0}"
},
"JArWcF": {
@@ -33,7 +33,7 @@
},
"comments": [],
"origin": [
["src/views/boards/index.tsx", 48],
["src/views/boards/index.tsx", 57],
["src/views/card/index.tsx", 321]
],
"translation": "{0} | {1}"
@@ -71,7 +71,7 @@
"0": ["isTemplate ? \"Template\" : \"Board\""]
},
"comments": [],
"origin": [["src/views/board/index.tsx", 565]],
"origin": [["src/views/board/index.tsx", 570]],
"translation": "{0} не найдено"
},
"0xWkkH": {
@@ -220,7 +220,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/boards/index.tsx", 26],
["src/views/boards/index.tsx", 30],
["src/views/settings/components/NewWebhookModal.tsx", 321],
["src/views/settings/components/WebhookList.tsx", 106]
],
@@ -286,7 +286,7 @@
"comments": [],
"origin": [
["src/views/card/components/Comment.tsx", 185],
["src/views/card/components/NewCommentForm.tsx", 68]
["src/views/card/components/NewCommentForm.tsx", 85]
],
"translation": "Добавить комментарий... (введите '/' для открытия команд или '@' для упоминания)"
},
@@ -294,7 +294,7 @@
"message": "Add description... (type '/' to open commands or '@' to mention)",
"placeholders": {},
"comments": [],
"origin": [["src/components/Editor.tsx", 493]],
"origin": [["src/components/Editor.tsx", 499]],
"translation": "Добавить описание... (введите '/' для открытия команд или '@' для упоминания)"
},
"abUZlY": {
@@ -577,7 +577,7 @@
"message": "Annual",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 64]],
"origin": [["src/views/onboarding/select-plan/index.tsx", 68]],
"translation": "Ежегодно"
},
"3bqt9U": {
@@ -664,7 +664,7 @@
"message": "Archived",
"placeholders": {},
"comments": [],
"origin": [["src/views/boards/index.tsx", 27]],
"origin": [["src/views/boards/index.tsx", 31]],
"translation": "В архиве"
},
"lo8xBK": {
@@ -833,7 +833,7 @@
"message": "Best for small teams who want to collaborate and move faster together.",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 87]],
"origin": [["src/views/onboarding/select-plan/index.tsx", 91]],
"translation": "Идеально для небольших команд, которые хотят сотрудничать и работать быстрее вместе."
},
"qaS+1/": {
@@ -887,7 +887,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/index.tsx", 538],
["src/views/board/index.tsx", 543],
["src/views/card/index.tsx", 321],
["src/views/public/board/index.tsx", 125]
],
@@ -1006,7 +1006,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/components/SideNavigation.tsx", 97],
["src/components/SideNavigation.tsx", 98],
["src/views/pricing/components/FeatureComparisonTable.tsx", 73]
],
"translation": "Доски"
@@ -1294,7 +1294,7 @@
["src/views/card/components/DeleteChecklistConfirmation.tsx", 64],
["src/views/card/components/DeleteCommentConfirmation.tsx", 77],
["src/views/members/components/DeleteMemberConfirmation.tsx", 55],
["src/views/onboarding/select-plan/index.tsx", 236],
["src/views/onboarding/select-plan/index.tsx", 240],
["src/views/settings/components/Avatar.tsx", 287],
["src/views/settings/components/ChangePasswordConfirmation.tsx", 206],
[
@@ -1361,7 +1361,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/index.tsx", 309],
["src/views/board/index.tsx", 314],
["src/views/card/components/Dropdown.tsx", 74],
["src/views/public/board/CardModal.tsx", 38]
],
@@ -1444,7 +1444,7 @@
"message": "Choose a plan",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 149]],
"origin": [["src/views/onboarding/select-plan/index.tsx", 153]],
"translation": "Выберите тариф"
},
"5EMoSo": {
@@ -1626,7 +1626,8 @@
"placeholders": {},
"comments": [],
"origin": [["src/pages/unsubscribe/index.tsx", 81]],
"translation": "Подтвердите ваши настройки электронной почты:"
"translation": "Подтвердите ваши настройки электронной почты:",
"obsolete": true
},
"479pdJ": {
"message": "Confirm your new password",
@@ -1719,7 +1720,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/onboarding/select-plan/index.tsx", 242],
["src/views/onboarding/select-plan/index.tsx", 246],
["src/views/onboarding/workspace-details/index.tsx", 315]
],
"translation": "Продолжить"
@@ -1888,7 +1889,7 @@
"comments": [],
"origin": [
["src/views/boards/components/BoardsList.tsx", 80],
["src/views/boards/index.tsx", 41]
["src/views/boards/index.tsx", 45]
],
"translation": "Создать новый {0}"
},
@@ -1914,8 +1915,8 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/index.tsx", 93],
["src/views/board/index.tsx", 679]
["src/views/board/index.tsx", 99],
["src/views/board/index.tsx", 684]
],
"translation": "Создать новый список"
},
@@ -1939,7 +1940,7 @@
"comments": [],
"origin": [
["src/components/NewWorkspaceForm.tsx", 227],
["src/components/WorkspaceMenu.tsx", 171]
["src/components/WorkspaceMenu.tsx", 176]
],
"translation": "Создать рабочее пространство"
},
@@ -2294,7 +2295,8 @@
"placeholders": {},
"comments": [],
"origin": [["src/pages/unsubscribe/index.tsx", 78]],
"translation": "Вы хотите отписаться?"
"translation": "Вы хотите отписаться?",
"obsolete": true
},
"JyXBgS": {
"message": "docs",
@@ -3016,8 +3018,8 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/onboarding/select-plan/index.tsx", 78],
["src/views/onboarding/select-plan/index.tsx", 79],
["src/views/onboarding/select-plan/index.tsx", 82],
["src/views/onboarding/select-plan/index.tsx", 83],
["src/views/pricing/components/FeatureComparisonTable.tsx", 331],
["src/views/pricing/components/Pricing.tsx", 32],
["src/views/pricing/components/Pricing.tsx", 32],
@@ -3125,7 +3127,7 @@
"message": "Get started by creating a new list",
"placeholders": {},
"comments": [],
"origin": [["src/views/board/index.tsx", 664]],
"origin": [["src/views/board/index.tsx", 669]],
"translation": "Начните с создания нового списка"
},
"oW13KZ": {
@@ -3202,7 +3204,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/components/SideNavigation.tsx", 105],
["src/components/SideNavigation.tsx", 106],
["src/pages/404.tsx", 44]
],
"translation": "Перейти к доскам"
@@ -3218,28 +3220,28 @@
"message": "Go to members",
"placeholders": {},
"comments": [],
"origin": [["src/components/SideNavigation.tsx", 129]],
"origin": [["src/components/SideNavigation.tsx", 130]],
"translation": "Перейти к участникам"
},
"1WuwiM": {
"message": "Go to settings",
"placeholders": {},
"comments": [],
"origin": [["src/components/SideNavigation.tsx", 141]],
"origin": [["src/components/SideNavigation.tsx", 142]],
"translation": "Перейти к настройкам"
},
"csFbe+": {
"message": "Go to templates",
"placeholders": {},
"comments": [],
"origin": [["src/components/SideNavigation.tsx", 117]],
"origin": [["src/components/SideNavigation.tsx", 118]],
"translation": "Перейти к шаблонам"
},
"SUvm1Y": {
"message": "Good for individuals starting out who just need the essentials.",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 80]],
"origin": [["src/views/onboarding/select-plan/index.tsx", 84]],
"translation": "Подходит для начинающих пользователей, которым нужны только базовые функции."
},
"cdyS7J": {
@@ -3382,7 +3384,7 @@
"message": "Import",
"placeholders": {},
"comments": [],
"origin": [["src/views/boards/index.tsx", 73]],
"origin": [["src/views/boards/index.tsx", 82]],
"translation": "Импорт"
},
"2MPcep": {
@@ -3765,7 +3767,7 @@
"comments": [],
"origin": [
["src/views/board/components/UpdateBoardSlugButton.tsx", 80],
["src/views/board/index.tsx", 307],
["src/views/board/index.tsx", 312],
["src/views/card/components/Dropdown.tsx", 72],
["src/views/public/board/CardModal.tsx", 36],
["src/views/public/board/index.tsx", 77]
@@ -3945,7 +3947,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/components/SideNavigation.tsx", 121],
["src/components/SideNavigation.tsx", 122],
["src/views/board/components/Filters.tsx", 147],
["src/views/board/components/NewCardForm.tsx", 386],
["src/views/card/index.tsx", 143],
@@ -3986,7 +3988,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/onboarding/select-plan/index.tsx", 63],
["src/views/onboarding/select-plan/index.tsx", 67],
["src/views/pricing/components/Pricing.tsx", 14],
["src/views/pricing/index.tsx", 20]
],
@@ -4090,7 +4092,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/boards/index.tsx", 95],
["src/views/boards/index.tsx", 104],
["src/views/home/components/Features.tsx", 73]
],
"translation": "Новый"
@@ -4145,7 +4147,7 @@
"comments": [],
"origin": [
["src/views/board/components/NewListForm.tsx", 113],
["src/views/board/index.tsx", 628]
["src/views/board/index.tsx", 633]
],
"translation": "Новый список"
},
@@ -4278,14 +4280,14 @@
"message": "No lists",
"placeholders": {},
"comments": [],
"origin": [["src/views/board/index.tsx", 660]],
"origin": [["src/views/board/index.tsx", 665]],
"translation": "Нет списков"
},
"fvLNDy": {
"message": "No lists have been created yet",
"placeholders": {},
"comments": [],
"origin": [["src/views/board/index.tsx", 665]],
"origin": [["src/views/board/index.tsx", 670]],
"translation": "Списки ещё не созданы"
},
"i30J2U": {
@@ -4602,7 +4604,7 @@
"message": "Pick a plan to get started. All paid plans include a 14-day free trial.",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 152]],
"origin": [["src/views/onboarding/select-plan/index.tsx", 156]],
"translation": "Выберите тариф, чтобы начать. Все платные тарифы включают 14-дневный бесплатный пробный период."
},
"GdgCoi": {
@@ -4707,8 +4709,8 @@
["src/views/board/components/NewTemplateForm.tsx", 77],
["src/views/board/components/UpdateBoardSlugForm.tsx", 73],
["src/views/board/components/VisibilityButton.tsx", 57],
["src/views/board/index.tsx", 219],
["src/views/board/index.tsx", 275],
["src/views/board/index.tsx", 224],
["src/views/board/index.tsx", 280],
["src/views/boards/components/ImportBoardsForm.tsx", 243],
["src/views/boards/components/ImportBoardsForm.tsx", 395],
["src/views/card/components/AttachmentThumbnails.tsx", 74],
@@ -4726,7 +4728,7 @@
["src/views/card/components/MemberSelector.tsx", 82],
["src/views/card/components/NewChecklistForm.tsx", 71],
["src/views/card/components/NewChecklistItemForm.tsx", 90],
["src/views/card/components/NewCommentForm.tsx", 37],
["src/views/card/components/NewCommentForm.tsx", 38],
["src/views/card/index.tsx", 236],
["src/views/card/index.tsx", 249],
["src/views/members/components/DeleteMemberConfirmation.tsx", 28],
@@ -4766,7 +4768,7 @@
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 76],
["src/views/board/components/CardContextMoveListModal.tsx", 42],
["src/views/board/index.tsx", 316],
["src/views/board/index.tsx", 321],
["src/views/card/components/Dropdown.tsx", 55],
["src/views/card/components/Dropdown.tsx", 81],
["src/views/card/components/Dropdown.tsx", 100],
@@ -4829,7 +4831,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/onboarding/select-plan/index.tsx", 92],
["src/views/onboarding/select-plan/index.tsx", 96],
["src/views/pricing/components/FeatureComparisonTable.tsx", 333],
["src/views/pricing/components/PricingTiers.tsx", 70]
],
@@ -5359,7 +5361,7 @@
"comments": [],
"origin": [
["src/components/SettingsLayout.tsx", 102],
["src/components/SideNavigation.tsx", 133]
["src/components/SideNavigation.tsx", 134]
],
"translation": "Настройки"
},
@@ -5454,7 +5456,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/onboarding/select-plan/index.tsx", 315],
["src/views/onboarding/select-plan/index.tsx", 319],
["src/views/onboarding/workspace-details/index.tsx", 386]
],
"translation": "Выйти"
@@ -5548,7 +5550,7 @@
"message": "Solo",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 77]],
"origin": [["src/views/onboarding/select-plan/index.tsx", 81]],
"translation": "Индивидуальный"
},
"J9+zIR": {
@@ -5595,9 +5597,9 @@
"placeholders": {},
"comments": [],
"origin": [
["src/components/SideNavigation.tsx", 225],
["src/components/SideNavigation.tsx", 226],
["src/components/SideNavigation.tsx", 236]
["src/components/SideNavigation.tsx", 228],
["src/components/SideNavigation.tsx", 229],
["src/components/SideNavigation.tsx", 239]
],
"translation": "Начать бесплатный пробный период"
},
@@ -5615,6 +5617,13 @@
"origin": [["src/views/settings/components/WebhookList.tsx", 232]],
"translation": "Статус"
},
"hQRttt": {
"message": "Submit",
"placeholders": {},
"comments": [],
"origin": [["src/views/card/components/NewCommentForm.tsx", 60]],
"translation": "Отправить"
},
"WYDptz": {
"message": "Subscription Required",
"placeholders": {},
@@ -5678,7 +5687,7 @@
"message": "Team",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 84]],
"origin": [["src/views/onboarding/select-plan/index.tsx", 88]],
"translation": "Команда"
},
"bff61F": {
@@ -5708,8 +5717,8 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/index.tsx", 538],
["src/views/board/index.tsx", 574]
["src/views/board/index.tsx", 543],
["src/views/board/index.tsx", 579]
],
"translation": "Шаблон"
},
@@ -5746,7 +5755,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/components/SideNavigation.tsx", 109],
["src/components/SideNavigation.tsx", 110],
["src/views/home/components/Features.tsx", 115]
],
"translation": "Шаблоны"
@@ -6147,7 +6156,7 @@
"message": "Unable to add comment",
"placeholders": {},
"comments": [],
"origin": [["src/views/card/components/NewCommentForm.tsx", 36]],
"origin": [["src/views/card/components/NewCommentForm.tsx", 37]],
"translation": "Не удалось добавить комментарий"
},
"2Q871c": {
@@ -6176,7 +6185,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/index.tsx", 314],
["src/views/board/index.tsx", 319],
["src/views/card/components/Dropdown.tsx", 79],
["src/views/public/board/CardModal.tsx", 43],
["src/views/public/board/index.tsx", 84]
@@ -6376,7 +6385,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/index.tsx", 274],
["src/views/board/index.tsx", 279],
["src/views/card/index.tsx", 235]
],
"translation": "Не удалось обновить карточку"
@@ -6421,7 +6430,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/index.tsx", 218],
["src/views/board/index.tsx", 223],
["src/views/card/components/ListSelector.tsx", 54]
],
"translation": "Не удалось обновить список"
@@ -6574,7 +6583,7 @@
"message": "Unlimited members and a custom workspace username for teams ready to scale.",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 95]],
"origin": [["src/views/onboarding/select-plan/index.tsx", 99]],
"translation": "Неограниченное количество участников и персональное имя рабочего пространства для команд, готовых к масштабированию."
},
"i5yNAO": {
@@ -6599,7 +6608,8 @@
["src/pages/unsubscribe/index.tsx", 68],
["src/pages/unsubscribe/index.tsx", 93]
],
"translation": "Отписаться"
"translation": "Отписаться",
"obsolete": true
},
"EkH9pt": {
"message": "Update",
@@ -6664,7 +6674,7 @@
"comments": [],
"origin": [
["src/views/members/index.tsx", 295],
["src/views/onboarding/select-plan/index.tsx", 241]
["src/views/onboarding/select-plan/index.tsx", 245]
],
"translation": "Обновить"
},
@@ -6844,7 +6854,8 @@
"placeholders": {},
"comments": [],
"origin": [["src/pages/unsubscribe/index.tsx", 63]],
"translation": "Не удалось обновить ваши настройки. Пожалуйста, попробуйте ещё раз."
"translation": "Не удалось обновить ваши настройки. Пожалуйста, попробуйте ещё раз.",
"obsolete": true
},
"7sdSkl": {
"message": "We sent a link to {magicLinkRecipient}",
@@ -6997,8 +7008,8 @@
"comments": [],
"origin": [
["src/components/SettingsLayout.tsx", 47],
["src/views/board/index.tsx", 538],
["src/views/boards/index.tsx", 48],
["src/views/board/index.tsx", 543],
["src/views/boards/index.tsx", 57],
["src/views/members/index.tsx", 278],
["src/views/public/board/index.tsx", 125],
["src/views/public/boards/index.tsx", 75]
@@ -7227,11 +7238,11 @@
["src/views/board/components/List.tsx", 117],
["src/views/board/components/UpdateBoardSlugButton.tsx", 58],
["src/views/board/components/VisibilityButton.tsx", 72],
["src/views/board/index.tsx", 612],
["src/views/board/index.tsx", 670],
["src/views/board/index.tsx", 617],
["src/views/board/index.tsx", 675],
["src/views/boards/components/BoardsList.tsx", 71],
["src/views/boards/index.tsx", 59],
["src/views/boards/index.tsx", 80]
["src/views/boards/index.tsx", 68],
["src/views/boards/index.tsx", 89]
],
"translation": "У вас нет прав доступа"
},
@@ -7254,7 +7265,8 @@
"placeholders": {},
"comments": [],
"origin": [["src/pages/unsubscribe/index.tsx", 98]],
"translation": "Вы отписались!"
"translation": "Вы отписались!",
"obsolete": true
},
"R275Pz": {
"message": "You have unlimited seats with your Pro Plan. There is no additional charge for new members!",
@@ -7323,7 +7335,7 @@
"message": "Your avatar",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 260]],
"origin": [["src/views/onboarding/select-plan/index.tsx", 264]],
"translation": "Ваш аватар"
},
"evg7+A": {
@@ -7433,7 +7445,8 @@
"placeholders": {},
"comments": [],
"origin": [["src/pages/unsubscribe/index.tsx", 33]],
"translation": "В вашей ссылке для отписки отсутствует токен. Пожалуйста, откройте последнее письмо и попробуйте снова."
"translation": "В вашей ссылке для отписки отсутствует токен. Пожалуйста, откройте последнее письмо и попробуйте снова.",
"obsolete": true
},
"GRAGsB": {
"message": "Your workspace",

File diff suppressed because one or more lines are too long

View File

@@ -1,108 +0,0 @@
import type { NextApiRequest, NextApiResponse } from "next";
import { Novu } from "@novu/api";
import { jwtVerify } from "jose";
import { z } from "zod";
import { withApiLogging } from "@kan/api/utils/apiLogging";
import { withRateLimit } from "@kan/api/utils/rateLimit";
import { env } from "~/env";
const requestSchema = z.object({
token: z.string().min(1),
});
const tokenPayloadSchema = z.object({
subscriberId: z.string(),
});
type ResponseData =
| { success: true }
| { success: false; error: string; code?: string };
const textEncoder = new TextEncoder();
export default withRateLimit(
{ points: 100, duration: 60 },
withApiLogging(
async (req: NextApiRequest, res: NextApiResponse<ResponseData>) => {
if (process.env.NEXT_PUBLIC_KAN_ENV !== "cloud") {
return res.status(404).json({
success: false,
error: "Unsubscribe endpoint is not available.",
code: "UNAVAILABLE",
});
}
if (req.method !== "POST") {
res.setHeader("Allow", "POST");
return res.status(405).json({
success: false,
error: "Method not allowed.",
code: "METHOD_NOT_ALLOWED",
});
}
const parsedBody = requestSchema.safeParse(req.body);
if (!parsedBody.success) {
return res.status(400).json({
success: false,
error: "Invalid request payload.",
code: "BAD_REQUEST",
});
}
if (!env.EMAIL_UNSUBSCRIBE_SECRET || !env.NOVU_API_KEY) {
return res.status(500).json({
success: false,
error: "Unsubscribe service is not configured.",
code: "NOT_CONFIGURED",
});
}
let payload: z.infer<typeof tokenPayloadSchema>;
try {
const verified = await jwtVerify(
parsedBody.data.token,
textEncoder.encode(env.EMAIL_UNSUBSCRIBE_SECRET),
{
// We intentionally do not use exp/iat claims
// tokens are long-lived and validated only by signature + payload.
clockTolerance: "0s",
},
);
payload = tokenPayloadSchema.parse(verified.payload);
} catch {
return res.status(401).json({
success: false,
error: "Your unsubscribe link is invalid or has expired.",
code: "INVALID_TOKEN",
});
}
const novu = new Novu({ secretKey: env.NOVU_API_KEY });
try {
await novu.subscribers.preferences.update(
{
channels: {
email: false,
},
},
payload.subscriberId,
);
} catch (error) {
return res.status(502).json({
success: false,
error:
"We could not update your email preferences right now. Please try again later.",
code: "NOVU_ERROR",
});
}
return res.status(200).json({ success: true });
},
),
);

View File

@@ -1,110 +0,0 @@
import { useRouter } from "next/router";
import { t } from "@lingui/core/macro";
import { useEffect, useState } from "react";
import Button from "~/components/Button";
import { PageHead } from "~/components/PageHead";
import PatternedBackground from "~/components/PatternedBackground";
type UnsubscribeStatus = "idle" | "processing" | "success" | "error";
export default function UnsubscribePage() {
const router = useRouter();
const [token, setToken] = useState("");
const [status, setStatus] = useState<UnsubscribeStatus>("idle");
const [errorMessage, setErrorMessage] = useState<string | null>(null);
useEffect(() => {
if (!router.isReady) return;
const value = router.query.token;
if (typeof value === "string") {
setToken(value);
} else if (Array.isArray(value)) {
setToken(value[0] ?? "");
} else {
setToken("");
}
}, [router.isReady, router.query.token]);
const handleUnsubscribe = async () => {
if (!token) {
setStatus("error");
setErrorMessage(
t`Your unsubscribe link is missing a token. Please open the latest email and try again.`,
);
return;
}
setStatus("processing");
setErrorMessage(null);
try {
const response = await fetch("/api/unsubscribe", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ token }),
});
if (!response.ok) {
const payload = (await response.json().catch(() => null)) as {
error?: string;
} | null;
throw new Error(
payload?.error ??
"We couldn't update your preferences. Please try again.",
);
}
setStatus("success");
} catch (error) {
setStatus("error");
setErrorMessage(
t`We couldn't update your preferences. Please try again.`,
);
}
};
const title = t`Unsubscribe`;
return (
<>
<PageHead title={`${title} | kan.bn`} />
<div className="relative flex min-h-screen items-center justify-center px-4 py-12 sm:px-6 lg:px-8">
<PatternedBackground />
<div className="z-10 w-full max-w-md space-y-6">
<div>
<h1 className="mt-6 text-center text-3xl font-bold tracking-tight text-light-1000 dark:text-dark-1000">
{t`Do you want to unsubscribe?`}
</h1>
<p className="mt-4 text-center text-sm text-light-900 dark:text-dark-800">
{t`Confirm your email preferences:`}
</p>
</div>
<div className="flex justify-center">
<Button
onClick={handleUnsubscribe}
disabled={status === "success"}
isLoading={status === "processing"}
variant="primary"
size="md"
>
{t`Unsubscribe`}
</Button>
</div>
{status === "success" && (
<p className="text-center text-sm text-light-900 dark:text-dark-800">
{t`You have been unsubscribed!`}
</p>
)}
{status === "error" && (
<p className="mx-auto max-w-[300px] text-center text-sm font-medium text-red-600 dark:text-red-400">
{errorMessage}
</p>
)}
</div>
</div>
</>
);
}

View File

@@ -1,4 +1,4 @@
import { createContext, useContext, useState } from "react";
import { createContext, useCallback, useContext, useState } from "react";
interface PopupContextType {
isOpen: boolean;
@@ -25,24 +25,27 @@ export const PopupProvider: React.FC<Props> = ({ children }) => {
const [popupMessage, setPopupMessage] = useState("");
const [popupIcon, setPopupIcon] = useState("");
const showPopup = ({
header,
message,
icon,
}: {
header: string;
message: string;
icon: string;
}) => {
setIsOpen(true);
setPopupHeader(header);
setPopupMessage(message);
setPopupIcon(icon);
};
const showPopup = useCallback(
({
header,
message,
icon,
}: {
header: string;
message: string;
icon: string;
}) => {
setIsOpen(true);
setPopupHeader(header);
setPopupMessage(message);
setPopupIcon(icon);
},
[],
);
const hidePopup = () => {
const hidePopup = useCallback(() => {
setIsOpen(false);
};
}, []);
return (
<PopupContext.Provider

View File

@@ -5,7 +5,7 @@ import { useRouter } from "next/router";
import { t } from "@lingui/core/macro";
import { keepPreviousData } from "@tanstack/react-query";
import { env } from "next-runtime-env";
import { useEffect, useState } from "react";
import { useEffect, useMemo, useState } from "react";
import { DragDropContext, Draggable } from "react-beautiful-dnd";
import { useForm } from "react-hook-form";
import {
@@ -46,10 +46,10 @@ import { CardContextMembersModal } from "./components/CardContextMembersModal";
import { CardContextMenu } from "./components/CardContextMenu";
import { CardContextMoveListModal } from "./components/CardContextMoveListModal";
import { DeleteBoardConfirmation } from "./components/DeleteBoardConfirmation";
import { MoveBoardForm } from "./components/MoveBoardForm";
import { DeleteListConfirmation } from "./components/DeleteListConfirmation";
import Filters from "./components/Filters";
import List from "./components/List";
import { MoveBoardForm } from "./components/MoveBoardForm";
import { NewCardForm } from "./components/NewCardForm";
import { NewListForm } from "./components/NewListForm";
import { NewTemplateForm } from "./components/NewTemplateForm";
@@ -85,21 +85,26 @@ export default function BoardPage({ isTemplate }: { isTemplate?: boolean }) {
const { canCreateList, canEditList, canEditCard, canEditBoard } =
usePermissions();
const { tooltipContent: createListShortcutTooltipContent } =
useKeyboardShortcut({
type: "PRESS",
stroke: { key: "C" },
action: () => boardId && canCreateList && openNewListForm(boardId),
description: t`Create new list`,
group: "ACTIONS",
});
const boardId = params?.boardId
? Array.isArray(params.boardId)
? params.boardId[0]
: params.boardId
: null;
const createListShortcut = useMemo(
() => ({
type: "PRESS" as const,
stroke: { key: "C" },
action: () => boardId && canCreateList && openNewListForm(boardId),
description: t`Create new list`,
group: "ACTIONS" as const,
}),
[boardId, canCreateList],
);
const { tooltipContent: createListShortcutTooltipContent } =
useKeyboardShortcut(createListShortcut);
const updateBoard = api.board.update.useMutation();
const { register, handleSubmit, setValue } = useForm<UpdateBoardInput>({

View File

@@ -5,8 +5,12 @@ import {
ListboxOptions,
} from "@headlessui/react";
import { t } from "@lingui/core/macro";
import { HiArrowDownTray, HiChevronDown, HiOutlinePlusSmall } from "react-icons/hi2";
import { useState } from "react";
import { useMemo, useState } from "react";
import {
HiArrowDownTray,
HiChevronDown,
HiOutlinePlusSmall,
} from "react-icons/hi2";
import Button from "~/components/Button";
import FeedbackModal from "~/components/FeedbackModal";
@@ -33,14 +37,19 @@ export default function BoardsPage({ isTemplate }: { isTemplate?: boolean }) {
const [activeTab, setActiveTab] = useState<"boards" | "archived">("boards");
const { canCreateBoard } = usePermissions();
const { tooltipContent: createModalShortcutTooltipContent } =
useKeyboardShortcut({
type: "PRESS",
const createBoardShortcut = useMemo(
() => ({
type: "PRESS" as const,
stroke: { key: "C" },
action: () => canCreateBoard && openModal("NEW_BOARD"),
description: t`Create new ${isTemplate ? "template" : "board"}`,
group: "ACTIONS",
});
group: "ACTIONS" as const,
}),
[canCreateBoard, isTemplate, openModal],
);
const { tooltipContent: createModalShortcutTooltipContent } =
useKeyboardShortcut(createBoardShortcut);
return (
<>
@@ -137,7 +146,7 @@ export default function BoardsPage({ isTemplate }: { isTemplate?: boolean }) {
onChange={(tab) => setActiveTab(tab)}
>
<div className="relative mb-4">
<ListboxButton className="w-full appearance-none rounded-md border-0 bg-light-50 py-3 pl-3 pr-10 text-left text-sm font-semibold text-light-1000 shadow-sm ring-1 ring-inset ring-light-300 dark:bg-dark-50 dark:text-dark-1000 dark:ring-dark-300 dark:focus:ring-dark-500">
<ListboxButton className="w-full appearance-none rounded-md border-0 bg-light-50 py-3 pl-3 pr-10 text-left text-sm font-semibold text-light-1000 shadow-sm ring-1 ring-inset ring-light-300 dark:bg-dark-50 dark:text-dark-1000 dark:ring-dark-300 dark:focus:ring-dark-500">
{boardsTabs.find((tab) => tab.key === activeTab)?.label ??
"Select a tab"}
<HiChevronDown
@@ -151,9 +160,10 @@ export default function BoardsPage({ isTemplate }: { isTemplate?: boolean }) {
key={tab.key}
value={tab.key}
className={({ selected }) =>
`relative cursor-pointer select-none py-2 pl-3 pr-9 ${selected
? "font-bold text-light-1000 dark:text-dark-1000"
: "font-normal text-light-1000 dark:text-dark-1000"
`relative cursor-pointer select-none py-2 pl-3 pr-9 ${
selected
? "font-bold text-light-1000 dark:text-dark-1000"
: "font-normal text-light-1000 dark:text-dark-1000"
}`
}
>
@@ -175,10 +185,11 @@ export default function BoardsPage({ isTemplate }: { isTemplate?: boolean }) {
key={tab.key}
type="button"
onClick={() => setActiveTab(tab.key)}
className={`whitespace-nowrap px-1 py-0 mt-2 mb-8 text-sm font-semibold transition-colors focus:outline-none ${activeTab === tab.key
? "border-light-1000 text-light-1000 dark:border-dark-1000 dark:text-dark-1000"
: "border-transparent text-light-900 hover:border-light-950 hover:text-light-950 dark:text-dark-900 dark:hover:border-white/20 dark:hover:text-dark-950"
}`}
className={`mb-8 mt-2 whitespace-nowrap px-1 py-0 text-sm font-semibold transition-colors focus:outline-none ${
activeTab === tab.key
? "border-light-1000 text-light-1000 dark:border-dark-1000 dark:text-dark-1000"
: "border-transparent text-light-900 hover:border-light-950 hover:text-light-950 dark:text-dark-900 dark:hover:border-white/20 dark:hover:text-dark-950"
}`}
>
{tab.label}
</button>

View File

@@ -48,7 +48,11 @@ export default function SelectPlanView() {
(searchParams.get("billing") as Billing | null) ?? "annual",
);
const returnUrl = searchParams.get("returnUrl") ?? "/boards";
const workspacePublicId = searchParams.get("workspacePublicId");
const workspacePublicId =
searchParams.get("workspacePublicId") ??
(typeof window !== "undefined"
? localStorage.getItem("workspacePublicId")
: null);
const { data: workspaces } = api.workspace.all.useQuery();
const { data: session } = authClient.useSession();
const { data: user } = api.user.getUser.useQuery(undefined, {

View File

@@ -61,9 +61,9 @@ services:
- SMTP_REJECT_UNAUTHORIZED=${SMTP_REJECT_UNAUTHORIZED}
# Notifications
- NOVU_API_KEY=${NOVU_API_KEY}
- DISCORD_WEBHOOK_URL=${DISCORD_WEBHOOK_URL}
- EMAIL_UNSUBSCRIBE_SECRET=${EMAIL_UNSUBSCRIBE_SECRET}
- SUBSCRIBER_API_URL=${SUBSCRIBER_API_URL}
- SUBSCRIBER_API_KEY=${SUBSCRIBER_API_KEY}
- SUBSCRIBER_ENVIRONMENT_ID=${SUBSCRIBER_ENVIRONMENT_ID}
# S3 storage
- S3_ACCESS_KEY_ID=${S3_ACCESS_KEY_ID}

View File

@@ -1,4 +1,9 @@
import { describe, it, expect, vi, beforeEach } from "vitest";
import { env } from "next-runtime-env";
import { beforeEach, describe, expect, it, vi } from "vitest";
import * as memberRepo from "@kan/db/repository/member.repo";
import { createDatabaseHooks } from "./hooks";
vi.mock("next-runtime-env", () => ({
env: vi.fn(),
@@ -15,11 +20,11 @@ vi.mock("@kan/db/repository/user.repo", () => ({
}));
vi.mock("@kan/email", () => ({
notificationClient: null,
createSubscriber: vi.fn(),
triggerSubscriberWorkflow: vi.fn(),
}));
vi.mock("@kan/shared", () => ({
createEmailUnsubscribeLink: vi.fn(),
createS3Client: vi.fn(),
}));
@@ -27,17 +32,10 @@ vi.mock("@aws-sdk/client-s3", () => ({
PutObjectCommand: vi.fn(),
}));
vi.mock("@novu/api/models/components", () => ({
ChatOrPushProviderEnum: { Discord: "discord" },
}));
import { env } from "next-runtime-env";
import * as memberRepo from "@kan/db/repository/member.repo";
import { createDatabaseHooks } from "./hooks";
const mockEnv = env as ReturnType<typeof vi.fn>;
const mockGetByEmailAndStatus =
memberRepo.getByEmailAndStatus as ReturnType<typeof vi.fn>;
const mockGetByEmailAndStatus = memberRepo.getByEmailAndStatus as ReturnType<
typeof vi.fn
>;
const db = {} as Parameters<typeof createDatabaseHooks>[0];

View File

@@ -1,19 +1,18 @@
import { PutObjectCommand } from "@aws-sdk/client-s3";
import { ChatOrPushProviderEnum } from "@novu/api/models/components";
import { createAuthMiddleware } from "better-auth/api";
import { env } from "next-runtime-env";
import type { dbClient } from "@kan/db/client";
import * as memberRepo from "@kan/db/repository/member.repo";
import * as userRepo from "@kan/db/repository/user.repo";
import { notificationClient } from "@kan/email";
import { createSubscriber, triggerSubscriberWorkflow } from "@kan/email";
import { createLogger } from "@kan/logger";
import { createEmailUnsubscribeLink, createS3Client } from "@kan/shared";
const log = createLogger("auth");
import { createS3Client } from "@kan/shared";
import { downloadImage } from "./utils";
const log = createLogger("auth");
type BetterAuthUser = {
id: string;
createdAt: Date;
@@ -94,53 +93,49 @@ export function createDatabaseHooks(db: dbClient) {
}
}
if (notificationClient) {
try {
const [firstName, ...rest] = (user.name || "")
.split(" ")
.filter(Boolean);
const lastName = rest.length ? rest.join(" ") : undefined;
const avatarUrl = avatarKey
? `${env("NEXT_PUBLIC_STORAGE_URL")}/${env("NEXT_PUBLIC_AVATAR_BUCKET_NAME")}/${avatarKey}`
: undefined;
const [firstName, ...rest] = (user.name || "")
.split(" ")
.filter(Boolean);
const lastName = rest.length ? rest.join(" ") : undefined;
const unsubscribeUrl = await createEmailUnsubscribeLink(user.id);
try {
const avatarUrl = avatarKey
? `${env("NEXT_PUBLIC_STORAGE_URL")}/${env("NEXT_PUBLIC_AVATAR_BUCKET_NAME")}/${avatarKey}`
: undefined;
log.info({ workflowId: "user-signup", userId: user.id, email: user.email }, "Triggering Novu workflow");
await notificationClient.trigger({
to: {
subscriberId: user.id,
firstName: firstName,
lastName: lastName,
email: user.email,
avatar: avatarUrl,
data: {
emailVerified: user.emailVerified,
stripeCustomerId: user.stripeCustomerId,
createdAt: user.createdAt,
updatedAt: user.updatedAt,
},
},
payload: {
emailUnsubscribeUrl: unsubscribeUrl,
},
workflowId: "user-signup",
});
log.info({ workflowId: "user-signup", userId: user.id }, "Novu workflow triggered");
await createSubscriber({
publicId: user.id,
email: user.email,
externalId: user.id,
firstName,
lastName,
name: user.name,
attributes: {
avatarUrl,
emailVerified: user.emailVerified,
stripeCustomerId: user.stripeCustomerId,
createdAt: user.createdAt,
updatedAt: user.updatedAt,
},
});
} catch (error) {
log.error({ err: error }, "Error creating subscriber");
}
await notificationClient.subscribers.credentials.update(
{
providerId: ChatOrPushProviderEnum.Discord,
credentials: {
webhookUrl: env("DISCORD_WEBHOOK_URL"),
},
integrationIdentifier: "discord",
},
user.id,
);
} catch (error) {
log.error({ err: error }, "Error adding user to notification client");
}
try {
log.info(
{ workflowId: "user-signup", userId: user.id, email: user.email },
"Triggering user-signup workflow",
);
await triggerSubscriberWorkflow("user-signup", {
publicId: user.id,
});
log.info(
{ workflowId: "user-signup", userId: user.id },
"user-signup workflow triggered",
);
} catch (error) {
log.error({ err: error }, "Error triggering user-signup workflow");
}
},
},

View File

@@ -3,9 +3,8 @@ import type Stripe from "stripe";
import type { dbClient } from "@kan/db/client";
import * as userRepo from "@kan/db/repository/user.repo";
import { notificationClient } from "@kan/email";
import { triggerSubscriberWorkflow } from "@kan/email";
import { createLogger } from "@kan/logger";
import { createEmailUnsubscribeLink } from "@kan/shared";
const log = createLogger("auth");
@@ -24,30 +23,22 @@ export async function triggerWorkflow(
cancellationDetails?: Stripe.Subscription.CancellationDetails | null,
) {
try {
if (!subscription.stripeCustomerId || !notificationClient) return;
if (!subscription.stripeCustomerId) return;
const user = await userRepo.getByStripeCustomerId(
db,
subscription.stripeCustomerId,
);
if (!user || !notificationClient) return;
if (!user) return;
const unsubscribeUrl = await createEmailUnsubscribeLink(user.id);
log.info({ workflowId, userId: user.id }, "Triggering Novu workflow");
await notificationClient.trigger({
to: {
subscriberId: user.id,
},
payload: {
...subscription,
cancellationDetails,
emailUnsubscribeUrl: unsubscribeUrl,
},
log.info({ workflowId, userId: user.id }, "Triggering workflow");
await triggerSubscriberWorkflow(
workflowId,
});
log.info({ workflowId, userId: user.id }, "Novu workflow triggered");
{ publicId: user.id },
{ ...subscription, cancellationDetails },
);
log.info({ workflowId, userId: user.id }, "Workflow triggered");
} catch (error) {
log.error({ err: error, workflowId }, "Error triggering workflow");
}

View File

@@ -24,7 +24,6 @@
},
"dependencies": {
"@kan/logger": "workspace:^",
"@novu/api": "^3.11.0",
"@react-email/components": "^1.0.1",
"nodemailer": "^7.0.3",
"react-email": "^5.0.6"

View File

@@ -1,4 +1,8 @@
export const name = "email";
export { sendEmail } from "./sendEmail";
export { notificationClient } from "./notificationClient";
export {
createSubscriber,
updateSubscriberPreferences,
triggerSubscriberWorkflow,
} from "./subscriberClient";

View File

@@ -1,6 +0,0 @@
import { Novu } from "@novu/api";
export const notificationClient =
process.env.NEXT_PUBLIC_KAN_ENV === "cloud" && process.env.NOVU_API_KEY
? new Novu({ secretKey: process.env.NOVU_API_KEY })
: null;

View File

@@ -0,0 +1,115 @@
import { createLogger } from "@kan/logger";
const log = createLogger("subscriberClient");
export const subscriberClient =
process.env.NEXT_PUBLIC_KAN_ENV === "cloud" &&
process.env.SUBSCRIBER_API_URL &&
process.env.SUBSCRIBER_API_KEY &&
process.env.SUBSCRIBER_ENVIRONMENT_ID
? {
apiUrl: process.env.SUBSCRIBER_API_URL,
apiKey: process.env.SUBSCRIBER_API_KEY,
environmentId: process.env.SUBSCRIBER_ENVIRONMENT_ID,
}
: null;
async function subscriberRequest(
method: string,
path: string,
body: unknown,
errorMessage: string,
) {
if (!subscriberClient) return;
const url = `${subscriberClient.apiUrl}${path}`;
log.debug({ method, url, body }, "subscriber.dev request");
try {
const response = await fetch(url, {
method,
headers: {
"Content-Type": "application/json",
"X-API-Key": subscriberClient.apiKey,
},
body: JSON.stringify(body),
});
const responseBody = await response.text().catch(() => undefined);
log.debug(
{ method, url, status: response.status, body: responseBody },
"subscriber.dev response",
);
if (!response.ok) {
log.error(
{ status: response.status, body: responseBody },
errorMessage,
);
}
} catch (error) {
log.error({ err: error }, errorMessage);
}
}
interface CreateSubscriberInput {
publicId: string;
email: string;
externalId: string;
firstName?: string;
lastName?: string;
name?: string;
attributes?: Record<string, unknown>;
}
export async function createSubscriber(input: CreateSubscriberInput) {
if (!subscriberClient) return;
await subscriberRequest(
"POST",
`/environments/${subscriberClient.environmentId}/subscribers`,
input,
"Failed to create subscriber.dev subscriber",
);
}
interface UpdateSubscriberPreferencesInput {
email: boolean;
}
export async function updateSubscriberPreferences(
subscriberId: string,
input: UpdateSubscriberPreferencesInput,
) {
if (!subscriberClient) return;
await subscriberRequest(
"PATCH",
`/environments/${subscriberClient.environmentId}/subscribers/${subscriberId}/preferences`,
input,
"Failed to update subscriber preferences",
);
}
interface TriggerWorkflowSubscriberInput {
publicId?: string;
externalId?: string;
email?: string;
}
export async function triggerSubscriberWorkflow(
key: string,
subscriber: TriggerWorkflowSubscriberInput,
payload?: Record<string, unknown>,
) {
if (!subscriberClient) return;
await subscriberRequest(
"POST",
`/environments/${subscriberClient.environmentId}/workflows/trigger`,
{ key, subscriber, payload },
"Failed to trigger subscriber.dev workflow",
);
}

View File

@@ -119,7 +119,7 @@ export function registerCardTools(server: McpServer): void {
content: z.string().describe("Comment text"),
},
async ({ cardPublicId, content }) => {
const data = await kanRequest("POST", `/cards/${cardPublicId}/comments`, { content });
const data = await kanRequest("POST", `/cards/${cardPublicId}/comments`, { comment: content });
return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
},
);
@@ -136,7 +136,7 @@ export function registerCardTools(server: McpServer): void {
const data = await kanRequest(
"PUT",
`/cards/${cardPublicId}/comments/${commentPublicId}`,
{ content },
{ comment: content },
);
return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
},

View File

@@ -1,32 +0,0 @@
import { SignJWT } from "jose";
import { env } from "next-runtime-env";
const encoder = new TextEncoder();
/**
* Creates a longlived unsubscribe link for a given user/subscriber.
*
* `${NEXT_PUBLIC_BASE_URL}/unsubscribe?token=<jwt>`
*
* The JWT payload only contains the subscriberId. There is no expiry
* on purpose unsubscribe links should remain valid indefinitely.
*
*/
export async function createEmailUnsubscribeLink(
userId: string,
): Promise<string | null> {
const baseUrl = env("NEXT_PUBLIC_BASE_URL");
const secret = process.env.EMAIL_UNSUBSCRIBE_SECRET;
if (!baseUrl || !secret) {
// Environment not configured for unsubscribe links.
return null;
}
const token = await new SignJWT({ subscriberId: userId })
.setProtectedHeader({ alg: "HS256" })
// No expiration on purpose; unsubscribe links are longlived.
.sign(encoder.encode(secret));
return `${baseUrl}/unsubscribe?token=${encodeURIComponent(token)}`;
}

View File

@@ -2,7 +2,6 @@ export * from "./generateUID";
export * from "./generateSlug";
export * from "./generateWorkspacePrefix";
export * from "./subscriptions";
export * from "./email";
export * from "./dueDateFilters";
export * from "./s3";
export * from "./mentions";

43
pnpm-lock.yaml generated
View File

@@ -103,6 +103,9 @@ importers:
'@kan/db':
specifier: workspace:^
version: link:../../packages/db
'@kan/email':
specifier: workspace:^
version: link:../../packages/email
'@kan/logger':
specifier: workspace:^
version: link:../../packages/logger
@@ -121,9 +124,6 @@ importers:
'@lingui/react':
specifier: ^5.3.2
version: 5.4.1(@lingui/babel-plugin-lingui-macro@5.4.1(typescript@5.9.2))(react@18.3.1)
'@novu/api':
specifier: ^3.11.0
version: 3.11.0
'@t3-oss/env-nextjs':
specifier: ^0.11.1
version: 0.11.1(typescript@5.9.2)(zod@3.25.76)
@@ -467,9 +467,6 @@ importers:
'@kan/logger':
specifier: workspace:^
version: link:../logger
'@novu/api':
specifier: ^3.11.0
version: 3.11.0
'@react-email/components':
specifier: ^1.0.1
version: 1.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
@@ -1541,11 +1538,11 @@ packages:
'@esbuild-kit/core-utils@3.3.2':
resolution: {integrity: sha512-sPRAnw9CdSsRmEtnsl2WXWdyquogVpB3yZ3dgwJfe8zrOzTsV7cJvmwrKVa+0ma5BoiGJ+BoqkMvawbayKUsqQ==}
deprecated: 'Merged into tsx: https://tsx.is'
deprecated: 'Merged into tsx: https://tsx.hirok.io'
'@esbuild-kit/esm-loader@2.6.5':
resolution: {integrity: sha512-FxEMIkJKnodyA1OaCUoEvbYRkoZlLZ4d/eXFu9Fh8CbBBgP5EmZxrfTRyN0qpXZ4vOvqnE5YdRdcrmUUXuU+dA==}
deprecated: 'Merged into tsx: https://tsx.is'
deprecated: 'Merged into tsx: https://tsx.hirok.io'
'@esbuild/aix-ppc64@0.19.12':
resolution: {integrity: sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==}
@@ -2998,9 +2995,6 @@ packages:
resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
engines: {node: '>= 8'}
'@novu/api@3.11.0':
resolution: {integrity: sha512-8u0mB5VThL7MhdxoN0UoA4CS9eu2k3Xa6iulauMhCHENuJNxUNuirJWq5t8jDoH4bFTQTfMN0VRkC0qodKR2qA==}
'@octokit/auth-token@3.0.4':
resolution: {integrity: sha512-TWFX7cZF2LXoCvdmJWY7XVPi74aSY0+FfBZNSXEXFkMpjcqsQwDSYVv5FhRFaI0V1ECnwbz4j59T/G+rXNWaIQ==}
engines: {node: '>= 14'}
@@ -3097,95 +3091,111 @@ packages:
'@react-email/body@0.2.0':
resolution: {integrity: sha512-9GCWmVmKUAoRfloboCd+RKm6X17xn7eGL7HnpAZUnjBXBilWCxsKnLMTC/ixSHDKS/A/057M1Tx6ZUXd89sVBw==}
deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
peerDependencies:
react: ^18.0 || ^19.0 || ^19.0.0-rc
'@react-email/button@0.2.0':
resolution: {integrity: sha512-8i+v6cMxr2emz4ihCrRiYJPp2/sdYsNNsBzXStlcA+/B9Umpm5Jj3WJKYpgTPM+aeyiqlG/MMI1AucnBm4f1oQ==}
engines: {node: '>=18.0.0'}
deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
peerDependencies:
react: ^18.0 || ^19.0 || ^19.0.0-rc
'@react-email/code-block@0.2.0':
resolution: {integrity: sha512-eIrPW9PIFgDopQU0e/OPpwCW2QWQDtNZDSsiN4sJO8KdMnWWnXJicnRfzrit5rHwFo+Y98i+w/Y5ScnBAFr1dQ==}
engines: {node: '>=22.0.0'}
deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
peerDependencies:
react: ^18.0 || ^19.0 || ^19.0.0-rc
'@react-email/code-inline@0.0.5':
resolution: {integrity: sha512-MmAsOzdJpzsnY2cZoPHFPk6uDO/Ncpb4Kh1hAt9UZc1xOW3fIzpe1Pi9y9p6wwUmpaeeDalJxAxH6/fnTquinA==}
engines: {node: '>=18.0.0'}
deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
peerDependencies:
react: ^18.0 || ^19.0 || ^19.0.0-rc
'@react-email/column@0.0.13':
resolution: {integrity: sha512-Lqq17l7ShzJG/d3b1w/+lVO+gp2FM05ZUo/nW0rjxB8xBICXOVv6PqjDnn3FXKssvhO5qAV20lHM6S+spRhEwQ==}
engines: {node: '>=18.0.0'}
deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
peerDependencies:
react: ^18.0 || ^19.0 || ^19.0.0-rc
'@react-email/components@1.0.1':
resolution: {integrity: sha512-HnL0Y/up61sOBQT2cQg9N/kCoW0bP727gDs2MkFWQYELg6+iIHidMDvENXFC0f1ZE6hTB+4t7sszptvTcJWsDA==}
engines: {node: '>=22.0.0'}
deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
peerDependencies:
react: ^18.0 || ^19.0 || ^19.0.0-rc
'@react-email/container@0.0.15':
resolution: {integrity: sha512-Qo2IQo0ru2kZq47REmHW3iXjAQaKu4tpeq/M8m1zHIVwKduL2vYOBQWbC2oDnMtWPmkBjej6XxgtZByxM6cCFg==}
engines: {node: '>=18.0.0'}
deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
peerDependencies:
react: ^18.0 || ^19.0 || ^19.0.0-rc
'@react-email/font@0.0.9':
resolution: {integrity: sha512-4zjq23oT9APXkerqeslPH3OZWuh5X4crHK6nx82mVHV2SrLba8+8dPEnWbaACWTNjOCbcLIzaC9unk7Wq2MIXw==}
deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
peerDependencies:
react: ^18.0 || ^19.0 || ^19.0.0-rc
'@react-email/head@0.0.12':
resolution: {integrity: sha512-X2Ii6dDFMF+D4niNwMAHbTkeCjlYYnMsd7edXOsi0JByxt9wNyZ9EnhFiBoQdqkE+SMDcu8TlNNttMrf5sJeMA==}
engines: {node: '>=18.0.0'}
deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
peerDependencies:
react: ^18.0 || ^19.0 || ^19.0.0-rc
'@react-email/heading@0.0.15':
resolution: {integrity: sha512-xF2GqsvBrp/HbRHWEfOgSfRFX+Q8I5KBEIG5+Lv3Vb2R/NYr0s8A5JhHHGf2pWBMJdbP4B2WHgj/VUrhy8dkIg==}
engines: {node: '>=18.0.0'}
deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
peerDependencies:
react: ^18.0 || ^19.0 || ^19.0.0-rc
'@react-email/hr@0.0.11':
resolution: {integrity: sha512-S1gZHVhwOsd1Iad5IFhpfICwNPMGPJidG/Uysy1AwmspyoAP5a4Iw3OWEpINFdgh9MHladbxcLKO2AJO+cA9Lw==}
engines: {node: '>=18.0.0'}
deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
peerDependencies:
react: ^18.0 || ^19.0 || ^19.0.0-rc
'@react-email/html@0.0.11':
resolution: {integrity: sha512-qJhbOQy5VW5qzU74AimjAR9FRFQfrMa7dn4gkEXKMB/S9xZN8e1yC1uA9C15jkXI/PzmJ0muDIWmFwatm5/+VA==}
engines: {node: '>=18.0.0'}
deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
peerDependencies:
react: ^18.0 || ^19.0 || ^19.0.0-rc
'@react-email/img@0.0.11':
resolution: {integrity: sha512-aGc8Y6U5C3igoMaqAJKsCpkbm1XjguQ09Acd+YcTKwjnC2+0w3yGUJkjWB2vTx4tN8dCqQCXO8FmdJpMfOA9EQ==}
engines: {node: '>=18.0.0'}
deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
peerDependencies:
react: ^18.0 || ^19.0 || ^19.0.0-rc
'@react-email/link@0.0.12':
resolution: {integrity: sha512-vF+xxQk2fGS1CN7UPQDbzvcBGfffr+GjTPNiWM38fhBfsLv6A/YUfaqxWlmL7zLzVmo0K2cvvV9wxlSyNba1aQ==}
engines: {node: '>=18.0.0'}
deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
peerDependencies:
react: ^18.0 || ^19.0 || ^19.0.0-rc
'@react-email/markdown@0.0.17':
resolution: {integrity: sha512-6op3AfsBC9BJKkhG+eoMFRFWlr0/f3FYbtQrK+VhGzJocEAY0WINIFN+W8xzXr//3IL0K/aKtnH3FtpIuescQQ==}
engines: {node: '>=22.0.0'}
deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
peerDependencies:
react: ^18.0 || ^19.0 || ^19.0.0-rc
'@react-email/preview@0.0.13':
resolution: {integrity: sha512-F7j9FJ0JN/A4d7yr+aw28p4uX7VLWs7hTHtLo7WRyw4G+Lit6Zucq4UWKRxJC8lpsUdzVmG7aBJnKOT+urqs/w==}
engines: {node: '>=18.0.0'}
deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
peerDependencies:
react: ^18.0 || ^19.0 || ^19.0.0-rc
@@ -3199,18 +3209,21 @@ packages:
'@react-email/row@0.0.12':
resolution: {integrity: sha512-HkCdnEjvK3o+n0y0tZKXYhIXUNPDx+2vq1dJTmqappVHXS5tXS6W5JOPZr5j+eoZ8gY3PShI2LWj5rWF7ZEtIQ==}
engines: {node: '>=18.0.0'}
deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
peerDependencies:
react: ^18.0 || ^19.0 || ^19.0.0-rc
'@react-email/section@0.0.16':
resolution: {integrity: sha512-FjqF9xQ8FoeUZYKSdt8sMIKvoT9XF8BrzhT3xiFKdEMwYNbsDflcjfErJe3jb7Wj/es/lKTbV5QR1dnLzGpL3w==}
engines: {node: '>=18.0.0'}
deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
peerDependencies:
react: ^18.0 || ^19.0 || ^19.0.0-rc
'@react-email/tailwind@2.0.1':
resolution: {integrity: sha512-/xq0IDYVY7863xPY7cdI45Xoz7M6CnIQBJcQvbqN7MNVpopfH9f+mhjayV1JGfKaxlGWuxfLKhgi9T2shsnEFg==}
engines: {node: '>=22.0.0'}
deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
peerDependencies:
'@react-email/body': 0.2.0
'@react-email/button': 0.2.0
@@ -3249,6 +3262,7 @@ packages:
'@react-email/text@0.1.5':
resolution: {integrity: sha512-o5PNHFSE085VMXayxH+SJ1LSOtGsTv+RpNKnTiJDrJUwoBu77G3PlKOsZZQHCNyD28WsQpl9v2WcJLbQudqwPg==}
engines: {node: '>=18.0.0'}
deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
peerDependencies:
react: ^18.0 || ^19.0 || ^19.0.0-rc
@@ -4296,6 +4310,7 @@ packages:
'@ungap/structured-clone@1.3.0':
resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==}
deprecated: Potential CWE-502 - Update to 1.3.1 or higher
'@vitest/expect@3.2.4':
resolution: {integrity: sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==}
@@ -4618,6 +4633,7 @@ packages:
basic-ftp@5.0.5:
resolution: {integrity: sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==}
engines: {node: '>=10.0.0'}
deprecated: Security vulnerability fixed in 5.2.1, please upgrade
before-after-hook@2.2.3:
resolution: {integrity: sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==}
@@ -8734,6 +8750,7 @@ packages:
uuid@9.0.1:
resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==}
deprecated: uuid@10 and below is no longer supported. For ESM codebases, update to uuid@latest. For CommonJS codebases, use uuid@11 (but be aware this version will likely be deprecated in 2028).
hasBin: true
uvu@0.5.6:
@@ -11479,10 +11496,6 @@ snapshots:
'@nodelib/fs.scandir': 2.1.5
fastq: 1.19.1
'@novu/api@3.11.0':
dependencies:
zod: 3.25.76
'@octokit/auth-token@3.0.4': {}
'@octokit/core@4.2.4':

View File

@@ -123,7 +123,6 @@
"NEXT_PUBLIC_KAN_ENV",
"NEXT_PUBLIC_WHITE_LABEL_HIDE_POWERED_BY",
"STRIPE_SECRET_KEY",
"DISCORD_WEBHOOK_URL",
"STRIPE_WEBHOOK_SECRET",
"STRIPE_WEBHOOK_SECRET_LEGACY",
"STRIPE_PRO_PLAN_MONTHLY_PRICE_ID",
@@ -148,8 +147,6 @@
"PORT",
"BETTER_AUTH_SECRET",
"BETTER_AUTH_TRUSTED_ORIGINS",
"NOVU_API_KEY",
"EMAIL_UNSUBSCRIBE_SECRET",
"REDIS_URL",
"LOG_LEVEL",
"AXIOM_TOKEN",