Compare commits

...

10 Commits

Author SHA1 Message Date
Henry
3636676913 chore: build translations 2025-10-02 22:08:36 +01:00
Henry
9d9b5ed7d1 feat: consistent font size for search placeholder 2025-10-02 22:04:51 +01:00
Henry
e526ad3bda fix: prevent no results flickering 2025-10-02 22:02:42 +01:00
Henry
962aba8ccf feat: add keyboard shortcuts 2025-10-02 21:41:40 +01:00
Henry
c75dcb2f20 feat: add search button to collapsed menu 2025-10-02 21:38:33 +01:00
Henry
f8475b77f1 feat: add fuzzy search 2025-10-01 23:13:22 +01:00
Henry
bd691017ad feat: add icons for search results 2025-10-01 22:40:12 +01:00
Henry
468bd8afec feat: add keyboard navigation 2025-10-01 22:15:09 +01:00
Henry
6904bce96b feat: use placeholder data in search results 2025-10-01 21:42:56 +01:00
Henry
e07a462184 feat: set up command pallette and search endpoint 2025-09-29 22:33:36 +01:00
22 changed files with 3631 additions and 319 deletions

View File

@@ -235,6 +235,7 @@ checksums:
Important/singular: 4cf0e8fc8e4e7c5c9b9458059a172a2b Important/singular: 4cf0e8fc8e4e7c5c9b9458059a172a2b
Importing%20from%20Trello/singular: 1e3a46fb9bd8ce8c7d632f9555b5bd7c Importing%20from%20Trello/singular: 1e3a46fb9bd8ce8c7d632f9555b5bd7c
Importing%20your%20Trello%20boards%20into%20Kan%20is%20easy.%20You%20can%20follow%20our%20step-by-step%20guide%20%3C0%3Ehere%3C%2F0%3E./singular: ca88dc22801fef08fee1ecfb1bf6914e Importing%20your%20Trello%20boards%20into%20Kan%20is%20easy.%20You%20can%20follow%20our%20step-by-step%20guide%20%3C0%3Ehere%3C%2F0%3E./singular: ca88dc22801fef08fee1ecfb1bf6914e
in/singular: 1f06ad6763244d5e9927853e65cc6274
In%20Progress/singular: 3de9afebcb9d4ce8ac42e14995f79ffd In%20Progress/singular: 3de9afebcb9d4ce8ac42e14995f79ffd
Individuals/singular: 83bfc81f20e60556c44ec80c7d0603ec Individuals/singular: 83bfc81f20e60556c44ec80c7d0603ec
Integrations/singular: 0ccce343287704cd90150c32e2fcad36 Integrations/singular: 0ccce343287704cd90150c32e2fcad36
@@ -244,6 +245,7 @@ checksums:
Invite/singular: 181884cea804cbde665f160811ee7ad0 Invite/singular: 181884cea804cbde665f160811ee7ad0
Invite%20link%20copied/singular: 4046f23a78e1cd5166671c3fb8a7ea6e Invite%20link%20copied/singular: 4046f23a78e1cd5166671c3fb8a7ea6e
Invite%20link%20copied%20to%20clipboard/singular: 6fc055a0ea0ed1aa58c5e0c502efe17f Invite%20link%20copied%20to%20clipboard/singular: 6fc055a0ea0ed1aa58c5e0c502efe17f
Invite%20links%20require%20a%20Team%20or%20Pro%20subscription.%20Please%20upgrade%20your%20workspace./singular: 18db646fc55f99789572c8df0539ee69
Invite%20member/singular: ade922db1be6b26bc979565ce5de2bc7 Invite%20member/singular: ade922db1be6b26bc979565ce5de2bc7
Inviting%20members%20requires%20a%20Team%20Plan.%20You'll%20be%20redirected%20to%20upgrade%20your%20workspace./singular: 03eeed2d715e770259f722ba48a61ab3 Inviting%20members%20requires%20a%20Team%20Plan.%20You'll%20be%20redirected%20to%20upgrade%20your%20workspace./singular: 03eeed2d715e770259f722ba48a61ab3
Join%20workspace/singular: f5d035df672b05abd760bd022309c719 Join%20workspace/singular: f5d035df672b05abd760bd022309c719
@@ -299,6 +301,7 @@ checksums:
No%20boards%20found/singular: e044088d2c51b6bdf660fafa86ee1e17 No%20boards%20found/singular: e044088d2c51b6bdf660fafa86ee1e17
No%20credit%20card%20required/singular: 2090aa4171dc0b60735069f89b592883 No%20credit%20card%20required/singular: 2090aa4171dc0b60735069f89b592883
No%20lists/singular: cedf633d99c77ff4356e089f2d98c0a6 No%20lists/singular: cedf633d99c77ff4356e089f2d98c0a6
No%20results%20found%20for%20%22%7BdebouncedQuery%7D%22./singular: 5db6294712528cd897b15ae36f4fd834
Offer/singular: 82b4e0c9a3f5b4bd93590847de7c32a1 Offer/singular: 82b4e0c9a3f5b4bd93590847de7c32a1
Onboarding/singular: 52b23f9c62ff199d4c09920e7641829e Onboarding/singular: 52b23f9c62ff199d4c09920e7641829e
Once%20you%20delete%20your%20account%2C%20there%20is%20no%20going%20back.%20This%20action%20cannot%20be%20undone./singular: 9cf7aa6ef30890e5124e266c081bae1c Once%20you%20delete%20your%20account%2C%20there%20is%20no%20going%20back.%20This%20action%20cannot%20be%20undone./singular: 9cf7aa6ef30890e5124e266c081bae1c
@@ -358,6 +361,7 @@ checksums:
Save/singular: f7a2929f33bc420195e59ac5a8bcd454 Save/singular: f7a2929f33bc420195e59ac5a8bcd454
Save%20time%20with%20reusable%20board%20templates./singular: d0f2d7d0fd682ceaf4ca12c6353fd75a Save%20time%20with%20reusable%20board%20templates./singular: d0f2d7d0fd682ceaf4ca12c6353fd75a
Screening/singular: 0327bfb25db87bdacf00d4dc297f8b26 Screening/singular: 0327bfb25db87bdacf00d4dc297f8b26
Search%20boards%20and%20cards.../singular: 137017b2b3e885c4894ca8c899af5bc2
Select%20all/singular: eedc7cdb02de467c15dc418a066a77f2 Select%20all/singular: eedc7cdb02de467c15dc418a066a77f2
Select%20source/singular: c7b0ec447415ff62856803a4d7838bd6 Select%20source/singular: c7b0ec447415ff62856803a4d7838bd6
Self%20Host/singular: 43fbce2027548b712002e489a20a621a Self%20Host/singular: 43fbce2027548b712002e489a20a621a
@@ -383,6 +387,7 @@ checksums:
Social%20Media/singular: 2227508afb0d38a027e323207e47d4a2 Social%20Media/singular: 2227508afb0d38a027e323207e47d4a2
Software%20Development/singular: 67659097ef6bcb194839858b2c4f3a3c Software%20Development/singular: 67659097ef6bcb194839858b2c4f3a3c
Star%20on%20Github/singular: e5cb0428f1ac6485688f120d78742875 Star%20on%20Github/singular: e5cb0428f1ac6485688f120d78742875
Subscription%20Required/singular: 05f2b4abfc36def17756a6969983cf86
Success/singular: c43827becada6750f7a25890905f38b9 Success/singular: c43827becada6750f7a25890905f38b9
Supercharge%20your%20workspace%20for%20just%20%2429%2Fmonth.%20Here's%20what%20you'll%20get%3A/singular: 21af8119141afcce5f12da489f34db6a Supercharge%20your%20workspace%20for%20just%20%2429%2Fmonth.%20Here's%20what%20you'll%20get%3A/singular: 21af8119141afcce5f12da489f34db6a
Support/singular: 55aab5fd0f31a9cb055a2edeeedfaf63 Support/singular: 55aab5fd0f31a9cb055a2edeeedfaf63

View File

@@ -0,0 +1,193 @@
import { useRouter } from "next/router";
import {
Combobox,
ComboboxInput,
ComboboxOption,
ComboboxOptions,
Dialog,
DialogBackdrop,
DialogPanel,
} from "@headlessui/react";
import { t } from "@lingui/macro";
import { useState } from "react";
import { HiDocumentText, HiFolder, HiMagnifyingGlass } from "react-icons/hi2";
import { useDebounce } from "~/hooks/useDebounce";
import { useWorkspace } from "~/providers/workspace";
import { api } from "~/utils/api";
type SearchResult =
| {
publicId: string;
title: string;
description: string | null;
slug: string;
updatedAt: Date | null;
createdAt: Date;
type: "board";
}
| {
publicId: string;
title: string;
description: string | null;
boardPublicId: string;
boardName: string;
listName: string;
updatedAt: Date | null;
createdAt: Date;
type: "card";
};
export default function CommandPallette({
isOpen,
onClose,
}: {
isOpen: boolean;
onClose: () => void;
}) {
const [query, setQuery] = useState("");
const { workspace } = useWorkspace();
const router = useRouter();
// Debounce to avoid too many reqs
const [debouncedQuery] = useDebounce(query, 300);
const {
data: searchResults,
isLoading,
isFetched,
isPlaceholderData,
} = api.workspace.search.useQuery(
{
workspacePublicId: workspace.publicId,
query: debouncedQuery,
},
{
enabled: Boolean(workspace.publicId && debouncedQuery.trim().length > 0),
placeholderData: (previousData) => previousData,
},
);
// Clear results when query is empty, otherwise show search results
const results =
debouncedQuery.trim().length === 0
? []
: ((searchResults ?? []) as SearchResult[]);
const hasSearched = Boolean(debouncedQuery.trim().length > 0);
return (
<Dialog
className="relative z-50"
open={isOpen}
onClose={() => {
onClose();
setQuery("");
}}
>
<DialogBackdrop
transition
className="data-closed:opacity-0 data-enter:duration-300 data-enter:ease-out data-leave:duration-200 data-leave:ease-in fixed inset-0 bg-light-50 bg-opacity-40 transition-opacity dark:bg-dark-50 dark:bg-opacity-40"
/>
<div className="fixed inset-0 z-50 w-screen overflow-y-auto">
<div className="flex min-h-full items-start justify-center p-4 text-center sm:items-start sm:p-0">
<DialogPanel
transition
className="data-closed:opacity-0 data-closed:translate-y-4 data-closed:sm:translate-y-0 data-closed:sm:scale-95 data-enter:duration-300 data-enter:ease-out data-leave:duration-200 data-leave:ease-in relative mt-[25vh] w-full max-w-[550px] transform divide-y divide-gray-100 overflow-hidden rounded-lg border border-light-600 bg-white/90 shadow-3xl-light backdrop-blur-[6px] transition-all dark:divide-white/10 dark:border-dark-600 dark:bg-dark-100/90 dark:shadow-3xl-dark"
>
<Combobox>
<div className="grid grid-cols-1">
<ComboboxInput
autoFocus
className="col-start-1 row-start-1 h-12 w-full border-0 bg-transparent pl-11 pr-4 text-sm text-light-900 placeholder:text-light-700 focus:outline-none focus:ring-0 dark:text-dark-900 dark:placeholder:text-dark-700"
placeholder={t`Search boards and cards...`}
value={query}
onChange={(event) => setQuery(event.target.value)}
onKeyDown={(event) => {
if (event.key === "Enter" && results.length > 0) {
event.preventDefault();
// Find the active option or fallback to first option
const targetOption =
document.querySelector(
'[data-headlessui-state*="active"][role="option"]',
) ?? document.querySelector('[role="option"]');
if (targetOption) {
(targetOption as HTMLElement).click();
}
}
}}
/>
<HiMagnifyingGlass
className="pointer-events-none col-start-1 row-start-1 ml-4 size-5 self-center text-light-700 dark:text-dark-700"
aria-hidden="true"
/>
</div>
{results.length > 0 && (
<ComboboxOptions
static
className={`max-h-72 scroll-py-2 overflow-y-auto py-2 ${
isPlaceholderData ? "opacity-75" : ""
}`}
>
{results.map((result) => {
const url =
result.type === "board"
? `/boards/${result.publicId}`
: `/cards/${result.publicId}`;
return (
<ComboboxOption
key={`${result.type}-${result.publicId}`}
value={result}
className="cursor-pointer select-none px-4 py-3 data-[focus]:bg-light-200 hover:bg-light-200 focus:outline-none dark:data-[focus]:bg-dark-200 dark:hover:bg-dark-200"
onClick={() => {
console.log("clicked", url);
void router.push(url);
onClose();
setQuery("");
}}
>
<div className="flex items-start gap-3">
<div className="mt-0.5 flex-shrink-0">
{result.type === "board" ? (
<HiFolder className="h-4 w-4 text-light-600 dark:text-dark-600" />
) : (
<HiDocumentText className="h-4 w-4 text-light-600 dark:text-dark-600" />
)}
</div>
<div className="min-w-0 flex-1 text-left">
<div className="truncate text-sm font-bold text-light-900 dark:text-dark-900">
{result.title}
</div>
{result.type === "card" && (
<div className="truncate text-xs text-light-700 dark:text-dark-700">
{`${t`in`} ${result.boardName}${result.listName}`}
</div>
)}
</div>
</div>
</ComboboxOption>
);
})}
</ComboboxOptions>
)}
{hasSearched &&
!isLoading &&
searchResults !== undefined &&
results.length === 0 && (
<div className="p-4 text-sm text-light-950 dark:text-dark-950">
{t`No results found for "${debouncedQuery}".`}
</div>
)}
</Combobox>
</DialogPanel>
</div>
</div>
</Dialog>
);
}

View File

@@ -1,11 +1,12 @@
import { Menu, Transition } from "@headlessui/react"; import { Button, Menu, Transition } from "@headlessui/react";
import { t } from "@lingui/core/macro"; import { t } from "@lingui/core/macro";
import { Fragment } from "react"; import { Fragment, useEffect, useState } from "react";
import { HiCheck } from "react-icons/hi2"; import { HiCheck, HiMagnifyingGlass } from "react-icons/hi2";
import { twMerge } from "tailwind-merge"; import { twMerge } from "tailwind-merge";
import { useModal } from "~/providers/modal"; import { useModal } from "~/providers/modal";
import { useWorkspace } from "~/providers/workspace"; import { useWorkspace } from "~/providers/workspace";
import CommandPallette from "./CommandPallette";
export default function WorkspaceMenu({ export default function WorkspaceMenu({
isCollapsed = false, isCollapsed = false,
@@ -15,110 +16,143 @@ export default function WorkspaceMenu({
const { workspace, isLoading, availableWorkspaces, switchWorkspace } = const { workspace, isLoading, availableWorkspaces, switchWorkspace } =
useWorkspace(); useWorkspace();
const { openModal } = useModal(); const { openModal } = useModal();
const [isOpen, setIsOpen] = useState(false);
useEffect(() => {
const handleKeyDown = (event: KeyboardEvent) => {
if ((event.metaKey || event.ctrlKey) && event.key === "k") {
event.preventDefault();
setIsOpen(true);
}
};
document.addEventListener("keydown", handleKeyDown);
return () => document.removeEventListener("keydown", handleKeyDown);
}, []);
return ( return (
<Menu as="div" className="relative inline-block w-full pb-3 text-left"> <>
<div> <CommandPallette isOpen={isOpen} onClose={() => setIsOpen(false)} />
{isLoading ? ( <Menu as="div" className="relative inline-block w-full pb-3 text-left">
<div className={twMerge("mb-1 flex", isCollapsed && "md:p-1.5")}> <div>
<div className="h-6 w-6 animate-pulse rounded-md bg-light-200 dark:bg-dark-200" /> {isLoading ? (
<div <div className={twMerge("mb-1 flex", isCollapsed && "md:p-1.5")}>
className={twMerge( <div className="h-6 w-6 animate-pulse rounded-md bg-light-200 dark:bg-dark-200" />
"ml-2 h-6 w-[150px] animate-pulse rounded-md bg-light-200 dark:bg-dark-200", <div
isCollapsed && "md:hidden",
)}
/>
</div>
) : (
<Menu.Button
className={twMerge(
"mb-1 flex h-[34px] w-full items-center rounded-md p-1.5 hover:bg-light-200 dark:hover:bg-dark-200",
isCollapsed && "md:mb-1.5 md:h-9 md:p-1",
)}
title={isCollapsed ? workspace.name : undefined}
>
<span className="inline-flex h-6 w-6 items-center justify-center rounded-md bg-indigo-700">
<span className="text-xs font-bold leading-none text-white">
{workspace.name.charAt(0).toUpperCase()}
</span>
</span>
<span
className={twMerge(
"ml-2 truncate text-sm font-bold text-neutral-900 dark:text-dark-1000",
isCollapsed && "md:hidden",
)}
>
{workspace.name}
</span>
{workspace.plan === "pro" && (
<span
className={twMerge( className={twMerge(
"ml-2 inline-flex items-center rounded-md bg-indigo-100 px-2 py-1 text-[10px] font-medium text-indigo-700", "ml-2 h-6 w-[150px] animate-pulse rounded-md bg-light-200 dark:bg-dark-200",
isCollapsed && "md:hidden", isCollapsed && "md:hidden",
)} )}
/>
</div>
) : (
<div
className={twMerge(
"flex items-center gap-1",
isCollapsed && "md:flex-col-reverse md:items-stretch",
)}
>
<Menu.Button
className={twMerge(
"mb-1 flex h-[34px] flex-1 items-center rounded-md p-1.5 hover:bg-light-200 dark:hover:bg-dark-200",
isCollapsed &&
"md:mb-1.5 md:h-9 md:w-9 md:flex-none md:justify-center md:p-0",
)}
title={isCollapsed ? workspace.name : undefined}
> >
Pro <span className="inline-flex h-6 w-6 items-center justify-center rounded-md bg-indigo-700">
</span> <span className="text-xs font-bold leading-none text-white">
)} {workspace.name.charAt(0).toUpperCase()}
</Menu.Button> </span>
)} </span>
</div> <span
className={twMerge(
<Transition "ml-2 truncate text-sm font-bold text-neutral-900 dark:text-dark-1000",
as={Fragment} isCollapsed && "md:hidden",
enter="transition ease-out duration-100" )}
enterFrom="transform opacity-0 scale-95" >
enterTo="transform opacity-100 scale-100" {workspace.name}
leave="transition ease-in duration-75" </span>
leaveFrom="transform opacity-100 scale-100" {workspace.plan === "pro" && (
leaveTo="transform opacity-0 scale-95" <span
> className={twMerge(
<Menu.Items "ml-2 inline-flex items-center rounded-md bg-indigo-100 px-2 py-1 text-[10px] font-medium text-indigo-700",
className={twMerge( isCollapsed && "md:hidden",
"absolute left-0 z-10 origin-top-left rounded-md border border-light-600 bg-light-50 shadow-lg ring-1 ring-black ring-opacity-5 focus:outline-none dark:border-dark-600 dark:bg-dark-300",
isCollapsed ? "w-48" : "w-full",
)}
>
<div className="p-1">
{availableWorkspaces.map((availableWorkspace) => (
<div key={availableWorkspace.publicId} className="flex">
<Menu.Item>
<button
onClick={() => switchWorkspace(availableWorkspace)}
className="flex w-full items-center justify-between rounded-[5px] px-3 py-2 text-left text-sm text-neutral-900 hover:bg-light-200 dark:text-dark-1000 dark:hover:bg-dark-400"
>
<div className="flex min-w-0 flex-1 items-center">
<span className="inline-flex h-5 w-5 flex-shrink-0 items-center justify-center rounded-[5px] bg-indigo-700">
<span className="text-xs font-medium leading-none text-white">
{availableWorkspace.name.charAt(0).toUpperCase()}
</span>
</span>
<span className="ml-2 truncate text-xs font-medium">
{availableWorkspace.name}
</span>
</div>
{workspace.publicId === availableWorkspace.publicId && (
<span>
<HiCheck className="h-4 w-4" aria-hidden="true" />
</span>
)} )}
</button> >
</Menu.Item> Pro
</div> </span>
))} )}
</div> </Menu.Button>
<div className="border-t-[1px] border-light-600 p-1 dark:border-dark-500"> <Button
<Menu.Item> className={twMerge(
<button "mb-1 h-[34px] w-[34px] flex-shrink-0 rounded-lg bg-light-200 p-2 hover:bg-light-300 focus:outline-none dark:bg-dark-200 dark:hover:bg-dark-300",
onClick={() => openModal("NEW_WORKSPACE")} isCollapsed && "md:mb-2 md:h-9 md:w-9 md:self-center",
className="flex w-full items-center justify-between rounded-[5px] px-3 py-2 text-left text-xs text-neutral-900 hover:bg-light-200 dark:text-dark-1000 dark:hover:bg-dark-400" )}
onClick={() => setIsOpen(true)}
> >
{t`Create workspace`} <HiMagnifyingGlass className="h-4 w-4" aria-hidden="true" />
</button> </Button>
</Menu.Item> </div>
</div> )}
</Menu.Items> </div>
</Transition>
</Menu> <Transition
as={Fragment}
enter="transition ease-out duration-100"
enterFrom="transform opacity-0 scale-95"
enterTo="transform opacity-100 scale-100"
leave="transition ease-in duration-75"
leaveFrom="transform opacity-100 scale-100"
leaveTo="transform opacity-0 scale-95"
>
<Menu.Items
className={twMerge(
"absolute left-0 z-10 origin-top-left rounded-md border border-light-600 bg-light-50 shadow-lg ring-1 ring-black ring-opacity-5 focus:outline-none dark:border-dark-600 dark:bg-dark-300",
isCollapsed ? "w-48" : "w-full",
)}
>
<div className="p-1">
{availableWorkspaces.map((availableWorkspace) => (
<div key={availableWorkspace.publicId} className="flex">
<Menu.Item>
<button
onClick={() => switchWorkspace(availableWorkspace)}
className="flex w-full items-center justify-between rounded-[5px] px-3 py-2 text-left text-sm text-neutral-900 hover:bg-light-200 dark:text-dark-1000 dark:hover:bg-dark-400"
>
<div className="flex min-w-0 flex-1 items-center">
<span className="inline-flex h-5 w-5 flex-shrink-0 items-center justify-center rounded-[5px] bg-indigo-700">
<span className="text-xs font-medium leading-none text-white">
{availableWorkspace.name.charAt(0).toUpperCase()}
</span>
</span>
<span className="ml-2 truncate text-xs font-medium">
{availableWorkspace.name}
</span>
</div>
{workspace.publicId === availableWorkspace.publicId && (
<span>
<HiCheck className="h-4 w-4" aria-hidden="true" />
</span>
)}
</button>
</Menu.Item>
</div>
))}
</div>
<div className="border-t-[1px] border-light-600 p-1 dark:border-dark-500">
<Menu.Item>
<button
onClick={() => openModal("NEW_WORKSPACE")}
className="flex w-full items-center justify-between rounded-[5px] px-3 py-2 text-left text-xs text-neutral-900 hover:bg-light-200 dark:text-dark-1000 dark:hover:bg-dark-400"
>
{t`Create workspace`}
</button>
</Menu.Item>
</div>
</Menu.Items>
</Transition>
</Menu>
</>
); );
} }

View File

@@ -36,12 +36,12 @@ msgstr "{0} Labels"
msgid "{boardCount, plural, one {Import board (1)} other {Import boards ({boardCount})}}" msgid "{boardCount, plural, one {Import board (1)} other {Import boards ({boardCount})}}"
msgstr "{boardCount, plural, one {Board importieren (1)} other {Boards importieren ({boardCount})}}" msgstr "{boardCount, plural, one {Board importieren (1)} other {Boards importieren ({boardCount})}}"
#: src/views/members/components/InviteMemberForm.tsx:148 #: src/views/members/components/InviteMemberForm.tsx:158
#: src/views/members/components/InviteMemberForm.tsx:160 #: src/views/members/components/InviteMemberForm.tsx:170
msgid "$10/month" msgid "$10/month"
msgstr "$10/Monat" msgstr "$10/Monat"
#: src/views/members/components/InviteMemberForm.tsx:160 #: src/views/members/components/InviteMemberForm.tsx:170
msgid "$8/month" msgid "$8/month"
msgstr "$8/Monat" msgstr "$8/Monat"
@@ -101,7 +101,7 @@ msgid "Add label"
msgstr "Label hinzufügen" msgstr "Label hinzufügen"
#: src/views/card/components/MemberSelector.tsx:130 #: src/views/card/components/MemberSelector.tsx:130
#: src/views/members/components/InviteMemberForm.tsx:240 #: src/views/members/components/InviteMemberForm.tsx:250
msgid "Add member" msgid "Add member"
msgstr "Mitglied hinzufügen" msgstr "Mitglied hinzufügen"
@@ -136,7 +136,7 @@ msgstr "hat Checklistenelement <0>{0}</0> hinzugefügt"
msgid "added label <0>{0}</0>" msgid "added label <0>{0}</0>"
msgstr "hat Label <0>{0}</0> hinzugefügt" msgstr "hat Label <0>{0}</0> hinzugefügt"
#: src/views/members/components/InviteMemberForm.tsx:310 #: src/views/members/components/InviteMemberForm.tsx:320
msgid "Adding a new member will cost an additional {price} ({billingType}) per seat." msgid "Adding a new member will cost an additional {price} ({billingType}) per seat."
msgstr "Das Hinzufügen eines neuen Mitglieds kostet zusätzlich {price} ({billingType}) pro Platz." msgstr "Das Hinzufügen eines neuen Mitglieds kostet zusätzlich {price} ({billingType}) pro Platz."
@@ -164,7 +164,7 @@ msgstr "Beim Trennen deines Trello-Kontos ist ein Fehler aufgetreten."
msgid "An unexpected error occurred. Please try again later." msgid "An unexpected error occurred. Please try again later."
msgstr "Ein unerwarteter Fehler ist aufgetreten. Bitte versuchen Sie es später erneut." msgstr "Ein unerwarteter Fehler ist aufgetreten. Bitte versuchen Sie es später erneut."
#: src/views/members/components/InviteMemberForm.tsx:294 #: src/views/members/components/InviteMemberForm.tsx:304
msgid "Anyone with this link can join your workspace" msgid "Anyone with this link can join your workspace"
msgstr "Jeder mit diesem Link kann deinem Arbeitsbereich beitreten" msgstr "Jeder mit diesem Link kann deinem Arbeitsbereich beitreten"
@@ -250,11 +250,11 @@ msgstr "Backlog"
msgid "Basic Kanban" msgid "Basic Kanban"
msgstr "Einfaches Kanban" msgstr "Einfaches Kanban"
#: src/views/members/components/InviteMemberForm.tsx:161 #: src/views/members/components/InviteMemberForm.tsx:171
msgid "billed annually" msgid "billed annually"
msgstr "jährlich abgerechnet" msgstr "jährlich abgerechnet"
#: src/views/members/components/InviteMemberForm.tsx:161 #: src/views/members/components/InviteMemberForm.tsx:171
msgid "billed monthly" msgid "billed monthly"
msgstr "monatlich abgerechnet" msgstr "monatlich abgerechnet"
@@ -498,7 +498,7 @@ msgstr "Karte erstellen"
msgid "Create checklist" msgid "Create checklist"
msgstr "Checkliste erstellen" msgstr "Checkliste erstellen"
#: src/views/members/components/InviteMemberForm.tsx:334 #: src/views/members/components/InviteMemberForm.tsx:342
msgid "Create invite link" msgid "Create invite link"
msgstr "Einladungslink erstellen" msgstr "Einladungslink erstellen"
@@ -528,7 +528,7 @@ msgid "Create new list"
msgstr "Neue Liste erstellen" msgstr "Neue Liste erstellen"
#: src/components/NewWorkspaceForm.tsx:384 #: src/components/NewWorkspaceForm.tsx:384
#: src/components/WorkspaceMenu.tsx:116 #: src/components/WorkspaceMenu.tsx:149
msgid "Create workspace" msgid "Create workspace"
msgstr "Arbeitsbereich erstellen" msgstr "Arbeitsbereich erstellen"
@@ -569,7 +569,7 @@ msgstr "Kundensupport"
msgid "Dark" msgid "Dark"
msgstr "Dunkel" msgstr "Dunkel"
#: src/views/members/components/InviteMemberForm.tsx:333 #: src/views/members/components/InviteMemberForm.tsx:341
msgid "Deactivate invite link" msgid "Deactivate invite link"
msgstr "Einladungslink deaktivieren" msgstr "Einladungslink deaktivieren"
@@ -709,7 +709,7 @@ msgstr "Bearbeitung"
msgid "email" msgid "email"
msgstr "E-Mail" msgstr "E-Mail"
#: src/views/members/components/InviteMemberForm.tsx:255 #: src/views/members/components/InviteMemberForm.tsx:265
msgid "Email" msgid "Email"
msgstr "E-Mail" msgstr "E-Mail"
@@ -741,7 +741,7 @@ msgstr "Geben Sie Ihr neues Passwort ein"
msgid "Enter your password" msgid "Enter your password"
msgstr "Gib dein Passwort ein" msgstr "Gib dein Passwort ein"
#: src/views/members/components/InviteMemberForm.tsx:198 #: src/views/members/components/InviteMemberForm.tsx:208
msgid "Error" msgid "Error"
msgstr "Fehler" msgstr "Fehler"
@@ -749,11 +749,11 @@ msgstr "Fehler"
msgid "Error Changing Password" msgid "Error Changing Password"
msgstr "Fehler beim Ändern des Passworts" msgstr "Fehler beim Ändern des Passworts"
#: src/views/members/components/InviteMemberForm.tsx:119 #: src/views/members/components/InviteMemberForm.tsx:128
msgid "Error creating invite link" msgid "Error creating invite link"
msgstr "Fehler beim Erstellen des Einladungslinks" msgstr "Fehler beim Erstellen des Einladungslinks"
#: src/views/members/components/InviteMemberForm.tsx:134 #: src/views/members/components/InviteMemberForm.tsx:144
msgid "Error deactivating invite link" msgid "Error deactivating invite link"
msgstr "Fehler beim Deaktivieren des Einladungslinks" msgstr "Fehler beim Deaktivieren des Einladungslinks"
@@ -798,7 +798,7 @@ msgstr "Fehler beim Aktualisieren des Arbeitsbereichsnamens"
msgid "Error updating workspace URL" msgid "Error updating workspace URL"
msgstr "Fehler beim Aktualisieren der Workspace-URL" msgstr "Fehler beim Aktualisieren der Workspace-URL"
#: src/views/members/components/InviteMemberForm.tsx:223 #: src/views/members/components/InviteMemberForm.tsx:233
#: src/views/settings/components/UpgradeToProConfirmation.tsx:41 #: src/views/settings/components/UpgradeToProConfirmation.tsx:41
msgid "Error upgrading subscription" msgid "Error upgrading subscription"
msgstr "Fehler beim Upgrade des Abonnements" msgstr "Fehler beim Upgrade des Abonnements"
@@ -828,7 +828,7 @@ msgstr "Ausführung"
msgid "Failed to accept invitation. Please try again later, or contact customer support." msgid "Failed to accept invitation. Please try again later, or contact customer support."
msgstr "Einladung konnte nicht angenommen werden. Bitte versuche es später erneut oder kontaktiere den Kundensupport." msgstr "Einladung konnte nicht angenommen werden. Bitte versuche es später erneut oder kontaktiere den Kundensupport."
#: src/views/members/components/InviteMemberForm.tsx:199 #: src/views/members/components/InviteMemberForm.tsx:209
msgid "Failed to copy invite link" msgid "Failed to copy invite link"
msgstr "Einladungslink konnte nicht kopiert werden" msgstr "Einladungslink konnte nicht kopiert werden"
@@ -881,7 +881,7 @@ msgstr "Für langfristige Nachhaltigkeit erkennen wir an, dass alle guten Open-S
msgid "Free" msgid "Free"
msgstr "Kostenlos" msgstr "Kostenlos"
#: src/views/members/components/InviteMemberForm.tsx:316 #: src/views/members/components/InviteMemberForm.tsx:326
#: src/views/members/index.tsx:209 #: src/views/members/index.tsx:209
msgid "Free Plan" msgid "Free Plan"
msgstr "Kostenloser Plan" msgstr "Kostenloser Plan"
@@ -1024,6 +1024,10 @@ msgstr "Import von Trello"
msgid "Importing your Trello boards into Kan is easy. You can follow our step-by-step guide <0>here</0>." msgid "Importing your Trello boards into Kan is easy. You can follow our step-by-step guide <0>here</0>."
msgstr "Der Import Ihrer Trello-Boards in Kan ist einfach. Sie können unserer Schritt-für-Schritt-Anleitung <0>hier</0> folgen." msgstr "Der Import Ihrer Trello-Boards in Kan ist einfach. Sie können unserer Schritt-für-Schritt-Anleitung <0>hier</0> folgen."
#: src/components/CommandPallette.tsx:168
msgid "in"
msgstr "in"
#: src/views/boards/components/TemplateBoards.tsx:16 #: src/views/boards/components/TemplateBoards.tsx:16
#: src/views/boards/components/TemplateBoards.tsx:22 #: src/views/boards/components/TemplateBoards.tsx:22
#: src/views/boards/components/TemplateBoards.tsx:45 #: src/views/boards/components/TemplateBoards.tsx:45
@@ -1055,20 +1059,24 @@ msgstr "Ungültige Einladung"
msgid "Invite" msgid "Invite"
msgstr "Einladen" msgstr "Einladen"
#: src/views/members/components/InviteMemberForm.tsx:192 #: src/views/members/components/InviteMemberForm.tsx:202
msgid "Invite link copied" msgid "Invite link copied"
msgstr "Einladungslink kopiert" msgstr "Einladungslink kopiert"
#: src/views/members/components/InviteMemberForm.tsx:193 #: src/views/members/components/InviteMemberForm.tsx:203
msgid "Invite link copied to clipboard" msgid "Invite link copied to clipboard"
msgstr "Einladungslink in die Zwischenablage kopiert" msgstr "Einladungslink in die Zwischenablage kopiert"
#: src/views/members/components/InviteMemberForm.tsx:123
msgid "Invite links require a Team or Pro subscription. Please upgrade your workspace."
msgstr "Einladungslinks erfordern ein Team- oder Pro-Abonnement. Bitte upgraden Sie Ihren Workspace."
#: src/views/card/components/MemberSelector.tsx:111 #: src/views/card/components/MemberSelector.tsx:111
#: src/views/members/components/InviteMemberForm.tsx:353 #: src/views/members/components/InviteMemberForm.tsx:365
msgid "Invite member" msgid "Invite member"
msgstr "Mitglied einladen" msgstr "Mitglied einladen"
#: src/views/members/components/InviteMemberForm.tsx:319 #: src/views/members/components/InviteMemberForm.tsx:329
msgid "Inviting members requires a Team Plan. You'll be redirected to upgrade your workspace." msgid "Inviting members requires a Team Plan. You'll be redirected to upgrade your workspace."
msgstr "Das Einladen von Mitgliedern erfordert einen Team-Plan. Sie werden weitergeleitet, um Ihren Workspace zu upgraden." msgstr "Das Einladen von Mitgliedern erfordert einen Team-Plan. Sie werden weitergeleitet, um Ihren Workspace zu upgraden."
@@ -1203,7 +1211,7 @@ msgstr "Mitglieder | {0}"
msgid "Monthly" msgid "Monthly"
msgstr "Monatlich" msgstr "Monatlich"
#: src/views/members/components/InviteMemberForm.tsx:149 #: src/views/members/components/InviteMemberForm.tsx:159
msgid "monthly billing" msgid "monthly billing"
msgstr "monatliche Abrechnung" msgstr "monatliche Abrechnung"
@@ -1299,6 +1307,10 @@ msgstr "Keine Kreditkarte erforderlich"
msgid "No lists" msgid "No lists"
msgstr "Keine Listen" msgstr "Keine Listen"
#: src/components/CommandPallette.tsx:184
msgid "No results found for \"{debouncedQuery}\"."
msgstr "Keine Ergebnisse gefunden für \"{debouncedQuery}\"."
#: src/views/boards/components/TemplateBoards.tsx:65 #: src/views/boards/components/TemplateBoards.tsx:65
msgid "Offer" msgid "Offer"
msgstr "Angebot" msgstr "Angebot"
@@ -1422,7 +1434,7 @@ msgstr "Bitte wähle eine Datei zum Hochladen aus."
#: src/views/card/index.tsx:173 #: src/views/card/index.tsx:173
#: src/views/members/components/DeleteMemberConfirmation.tsx:28 #: src/views/members/components/DeleteMemberConfirmation.tsx:28
#: src/views/members/components/InviteMemberForm.tsx:104 #: src/views/members/components/InviteMemberForm.tsx:104
#: src/views/members/components/InviteMemberForm.tsx:224 #: src/views/members/components/InviteMemberForm.tsx:234
#: src/views/settings/components/Avatar.tsx:78 #: src/views/settings/components/Avatar.tsx:78
#: src/views/settings/components/Avatar.tsx:219 #: src/views/settings/components/Avatar.tsx:219
#: src/views/settings/components/DeleteAccountConfirmation.tsx:40 #: src/views/settings/components/DeleteAccountConfirmation.tsx:40
@@ -1435,8 +1447,8 @@ msgstr "Bitte wähle eine Datei zum Hochladen aus."
msgid "Please try again later, or contact customer support." msgid "Please try again later, or contact customer support."
msgstr "Bitte versuche es später noch einmal oder kontaktiere den Kundensupport." msgstr "Bitte versuche es später noch einmal oder kontaktiere den Kundensupport."
#: src/views/members/components/InviteMemberForm.tsx:120 #: src/views/members/components/InviteMemberForm.tsx:129
#: src/views/members/components/InviteMemberForm.tsx:135 #: src/views/members/components/InviteMemberForm.tsx:145
msgid "Please try again later." msgid "Please try again later."
msgstr "Bitte versuche es später erneut." msgstr "Bitte versuche es später erneut."
@@ -1463,7 +1475,7 @@ msgstr "Privat"
msgid "Pro Plan" msgid "Pro Plan"
msgstr "Pro-Plan" msgstr "Pro-Plan"
#: src/views/members/components/InviteMemberForm.tsx:305 #: src/views/members/components/InviteMemberForm.tsx:315
msgid "Pro Plan ∞" msgid "Pro Plan ∞"
msgstr "Pro-Plan ∞" msgstr "Pro-Plan ∞"
@@ -1580,6 +1592,10 @@ msgstr "Spare Zeit mit wiederverwendbaren Board-Vorlagen."
msgid "Screening" msgid "Screening"
msgstr "Vorauswahl" msgstr "Vorauswahl"
#: src/components/CommandPallette.tsx:104
msgid "Search boards and cards..."
msgstr "Boards und Karten durchsuchen..."
#: src/views/boards/components/ImportBoardsForm.tsx:274 #: src/views/boards/components/ImportBoardsForm.tsx:274
msgid "Select all" msgid "Select all"
msgstr "Alle auswählen" msgstr "Alle auswählen"
@@ -1683,6 +1699,10 @@ msgstr "Softwareentwicklung"
msgid "Star on Github" msgid "Star on Github"
msgstr "Stern auf Github" msgstr "Stern auf Github"
#: src/views/members/components/InviteMemberForm.tsx:122
msgid "Subscription Required"
msgstr "Abonnement erforderlich"
#: src/components/AuthForm.tsx:212 #: src/components/AuthForm.tsx:212
#: src/components/AuthForm.tsx:229 #: src/components/AuthForm.tsx:229
msgid "Success" msgid "Success"
@@ -1704,7 +1724,7 @@ msgstr "Unterstütze die Entwicklung des Projekts"
msgid "System" msgid "System"
msgstr "System" msgstr "System"
#: src/views/members/components/InviteMemberForm.tsx:305 #: src/views/members/components/InviteMemberForm.tsx:315
#: src/views/members/index.tsx:208 #: src/views/members/index.tsx:208
msgid "Team Plan" msgid "Team Plan"
msgstr "Team-Plan" msgstr "Team-Plan"
@@ -1988,7 +2008,7 @@ msgstr "Upgrade auf Pro"
msgid "Upgrade to Pro ($29/month)" msgid "Upgrade to Pro ($29/month)"
msgstr "Upgrade auf Pro ($29/Monat)" msgstr "Upgrade auf Pro ($29/Monat)"
#: src/views/members/components/InviteMemberForm.tsx:345 #: src/views/members/components/InviteMemberForm.tsx:357
msgid "Upgrade to Team Plan" msgid "Upgrade to Team Plan"
msgstr "Upgrade auf Team-Plan" msgstr "Upgrade auf Team-Plan"
@@ -2187,7 +2207,7 @@ msgstr "Sie haben sich erfolgreich angemeldet."
msgid "You have been signed up successfully." msgid "You have been signed up successfully."
msgstr "Sie haben sich erfolgreich registriert." msgstr "Sie haben sich erfolgreich registriert."
#: src/views/members/components/InviteMemberForm.tsx:309 #: src/views/members/components/InviteMemberForm.tsx:319
msgid "You have unlimited seats with your Pro Plan. There is no additional charge for new members!" msgid "You have unlimited seats with your Pro Plan. There is no additional charge for new members!"
msgstr "Sie haben unbegrenzte Plätze mit Ihrem Pro-Plan. Für neue Mitglieder fallen keine zusätzlichen Kosten an!" msgstr "Sie haben unbegrenzte Plätze mit Ihrem Pro-Plan. Für neue Mitglieder fallen keine zusätzlichen Kosten an!"

File diff suppressed because one or more lines are too long

View File

@@ -40,12 +40,12 @@ msgstr "{boardCount, plural, one {Import board (1)} other {Import boards ({board
#~ msgid "#1 Hacker News" #~ msgid "#1 Hacker News"
#~ msgstr "#1 Hacker News" #~ msgstr "#1 Hacker News"
#: src/views/members/components/InviteMemberForm.tsx:148 #: src/views/members/components/InviteMemberForm.tsx:158
#: src/views/members/components/InviteMemberForm.tsx:160 #: src/views/members/components/InviteMemberForm.tsx:170
msgid "$10/month" msgid "$10/month"
msgstr "$10/month" msgstr "$10/month"
#: src/views/members/components/InviteMemberForm.tsx:160 #: src/views/members/components/InviteMemberForm.tsx:170
msgid "$8/month" msgid "$8/month"
msgstr "$8/month" msgstr "$8/month"
@@ -117,7 +117,7 @@ msgid "Add label"
msgstr "Add label" msgstr "Add label"
#: src/views/card/components/MemberSelector.tsx:130 #: src/views/card/components/MemberSelector.tsx:130
#: src/views/members/components/InviteMemberForm.tsx:240 #: src/views/members/components/InviteMemberForm.tsx:250
msgid "Add member" msgid "Add member"
msgstr "Add member" msgstr "Add member"
@@ -156,7 +156,7 @@ msgstr "added label <0>{0}</0>"
#~ msgid "added label <0>{label}</0>" #~ msgid "added label <0>{label}</0>"
#~ msgstr "added label <0>{label}</0>" #~ msgstr "added label <0>{label}</0>"
#: src/views/members/components/InviteMemberForm.tsx:310 #: src/views/members/components/InviteMemberForm.tsx:320
msgid "Adding a new member will cost an additional {price} ({billingType}) per seat." msgid "Adding a new member will cost an additional {price} ({billingType}) per seat."
msgstr "Adding a new member will cost an additional {price} ({billingType}) per seat." msgstr "Adding a new member will cost an additional {price} ({billingType}) per seat."
@@ -188,7 +188,7 @@ msgstr "An error occurred while disconnecting your Trello account."
msgid "An unexpected error occurred. Please try again later." msgid "An unexpected error occurred. Please try again later."
msgstr "An unexpected error occurred. Please try again later." msgstr "An unexpected error occurred. Please try again later."
#: src/views/members/components/InviteMemberForm.tsx:294 #: src/views/members/components/InviteMemberForm.tsx:304
msgid "Anyone with this link can join your workspace" msgid "Anyone with this link can join your workspace"
msgstr "Anyone with this link can join your workspace" msgstr "Anyone with this link can join your workspace"
@@ -286,11 +286,11 @@ msgstr "Backlog"
msgid "Basic Kanban" msgid "Basic Kanban"
msgstr "Basic Kanban" msgstr "Basic Kanban"
#: src/views/members/components/InviteMemberForm.tsx:161 #: src/views/members/components/InviteMemberForm.tsx:171
msgid "billed annually" msgid "billed annually"
msgstr "billed annually" msgstr "billed annually"
#: src/views/members/components/InviteMemberForm.tsx:161 #: src/views/members/components/InviteMemberForm.tsx:171
msgid "billed monthly" msgid "billed monthly"
msgstr "billed monthly" msgstr "billed monthly"
@@ -559,7 +559,7 @@ msgstr "Create card"
msgid "Create checklist" msgid "Create checklist"
msgstr "Create checklist" msgstr "Create checklist"
#: src/views/members/components/InviteMemberForm.tsx:334 #: src/views/members/components/InviteMemberForm.tsx:342
msgid "Create invite link" msgid "Create invite link"
msgstr "Create invite link" msgstr "Create invite link"
@@ -593,7 +593,7 @@ msgstr "Create new list"
#~ msgstr "Create Pro workspace" #~ msgstr "Create Pro workspace"
#: src/components/NewWorkspaceForm.tsx:384 #: src/components/NewWorkspaceForm.tsx:384
#: src/components/WorkspaceMenu.tsx:116 #: src/components/WorkspaceMenu.tsx:149
msgid "Create workspace" msgid "Create workspace"
msgstr "Create workspace" msgstr "Create workspace"
@@ -642,7 +642,7 @@ msgstr "Customer Support"
msgid "Dark" msgid "Dark"
msgstr "Dark" msgstr "Dark"
#: src/views/members/components/InviteMemberForm.tsx:333 #: src/views/members/components/InviteMemberForm.tsx:341
msgid "Deactivate invite link" msgid "Deactivate invite link"
msgstr "Deactivate invite link" msgstr "Deactivate invite link"
@@ -782,7 +782,7 @@ msgstr "Editing"
msgid "email" msgid "email"
msgstr "email" msgstr "email"
#: src/views/members/components/InviteMemberForm.tsx:255 #: src/views/members/components/InviteMemberForm.tsx:265
msgid "Email" msgid "Email"
msgstr "Email" msgstr "Email"
@@ -814,7 +814,7 @@ msgstr "Enter your new password"
msgid "Enter your password" msgid "Enter your password"
msgstr "Enter your password" msgstr "Enter your password"
#: src/views/members/components/InviteMemberForm.tsx:198 #: src/views/members/components/InviteMemberForm.tsx:208
msgid "Error" msgid "Error"
msgstr "Error" msgstr "Error"
@@ -822,11 +822,11 @@ msgstr "Error"
msgid "Error Changing Password" msgid "Error Changing Password"
msgstr "Error Changing Password" msgstr "Error Changing Password"
#: src/views/members/components/InviteMemberForm.tsx:119 #: src/views/members/components/InviteMemberForm.tsx:128
msgid "Error creating invite link" msgid "Error creating invite link"
msgstr "Error creating invite link" msgstr "Error creating invite link"
#: src/views/members/components/InviteMemberForm.tsx:134 #: src/views/members/components/InviteMemberForm.tsx:144
msgid "Error deactivating invite link" msgid "Error deactivating invite link"
msgstr "Error deactivating invite link" msgstr "Error deactivating invite link"
@@ -871,7 +871,7 @@ msgstr "Error updating workspace name"
msgid "Error updating workspace URL" msgid "Error updating workspace URL"
msgstr "Error updating workspace URL" msgstr "Error updating workspace URL"
#: src/views/members/components/InviteMemberForm.tsx:223 #: src/views/members/components/InviteMemberForm.tsx:233
#: src/views/settings/components/UpgradeToProConfirmation.tsx:41 #: src/views/settings/components/UpgradeToProConfirmation.tsx:41
msgid "Error upgrading subscription" msgid "Error upgrading subscription"
msgstr "Error upgrading subscription" msgstr "Error upgrading subscription"
@@ -901,7 +901,7 @@ msgstr "Execution"
msgid "Failed to accept invitation. Please try again later, or contact customer support." msgid "Failed to accept invitation. Please try again later, or contact customer support."
msgstr "Failed to accept invitation. Please try again later, or contact customer support." msgstr "Failed to accept invitation. Please try again later, or contact customer support."
#: src/views/members/components/InviteMemberForm.tsx:199 #: src/views/members/components/InviteMemberForm.tsx:209
msgid "Failed to copy invite link" msgid "Failed to copy invite link"
msgstr "Failed to copy invite link" msgstr "Failed to copy invite link"
@@ -955,7 +955,7 @@ msgstr "For long-term sustainability, we recognise all good open source projects
msgid "Free" msgid "Free"
msgstr "Free" msgstr "Free"
#: src/views/members/components/InviteMemberForm.tsx:316 #: src/views/members/components/InviteMemberForm.tsx:326
#: src/views/members/index.tsx:209 #: src/views/members/index.tsx:209
msgid "Free Plan" msgid "Free Plan"
msgstr "Free Plan" msgstr "Free Plan"
@@ -1102,6 +1102,10 @@ msgstr "Importing from Trello"
msgid "Importing your Trello boards into Kan is easy. You can follow our step-by-step guide <0>here</0>." msgid "Importing your Trello boards into Kan is easy. You can follow our step-by-step guide <0>here</0>."
msgstr "Importing your Trello boards into Kan is easy. You can follow our step-by-step guide <0>here</0>." msgstr "Importing your Trello boards into Kan is easy. You can follow our step-by-step guide <0>here</0>."
#: src/components/CommandPallette.tsx:168
msgid "in"
msgstr "in"
#: src/views/boards/components/TemplateBoards.tsx:16 #: src/views/boards/components/TemplateBoards.tsx:16
#: src/views/boards/components/TemplateBoards.tsx:22 #: src/views/boards/components/TemplateBoards.tsx:22
#: src/views/boards/components/TemplateBoards.tsx:45 #: src/views/boards/components/TemplateBoards.tsx:45
@@ -1137,20 +1141,24 @@ msgstr "Invite"
#~ msgid "Invite another" #~ msgid "Invite another"
#~ msgstr "Invite another" #~ msgstr "Invite another"
#: src/views/members/components/InviteMemberForm.tsx:192 #: src/views/members/components/InviteMemberForm.tsx:202
msgid "Invite link copied" msgid "Invite link copied"
msgstr "Invite link copied" msgstr "Invite link copied"
#: src/views/members/components/InviteMemberForm.tsx:193 #: src/views/members/components/InviteMemberForm.tsx:203
msgid "Invite link copied to clipboard" msgid "Invite link copied to clipboard"
msgstr "Invite link copied to clipboard" msgstr "Invite link copied to clipboard"
#: src/views/members/components/InviteMemberForm.tsx:123
msgid "Invite links require a Team or Pro subscription. Please upgrade your workspace."
msgstr "Invite links require a Team or Pro subscription. Please upgrade your workspace."
#: src/views/card/components/MemberSelector.tsx:111 #: src/views/card/components/MemberSelector.tsx:111
#: src/views/members/components/InviteMemberForm.tsx:353 #: src/views/members/components/InviteMemberForm.tsx:365
msgid "Invite member" msgid "Invite member"
msgstr "Invite member" msgstr "Invite member"
#: src/views/members/components/InviteMemberForm.tsx:319 #: src/views/members/components/InviteMemberForm.tsx:329
msgid "Inviting members requires a Team Plan. You'll be redirected to upgrade your workspace." msgid "Inviting members requires a Team Plan. You'll be redirected to upgrade your workspace."
msgstr "Inviting members requires a Team Plan. You'll be redirected to upgrade your workspace." msgstr "Inviting members requires a Team Plan. You'll be redirected to upgrade your workspace."
@@ -1285,7 +1293,7 @@ msgstr "Members | {0}"
msgid "Monthly" msgid "Monthly"
msgstr "Monthly" msgstr "Monthly"
#: src/views/members/components/InviteMemberForm.tsx:149 #: src/views/members/components/InviteMemberForm.tsx:159
msgid "monthly billing" msgid "monthly billing"
msgstr "monthly billing" msgstr "monthly billing"
@@ -1393,6 +1401,10 @@ msgstr "No credit card required"
msgid "No lists" msgid "No lists"
msgstr "No lists" msgstr "No lists"
#: src/components/CommandPallette.tsx:184
msgid "No results found for \"{debouncedQuery}\"."
msgstr "No results found for \"{debouncedQuery}\"."
#: src/views/boards/components/TemplateBoards.tsx:65 #: src/views/boards/components/TemplateBoards.tsx:65
msgid "Offer" msgid "Offer"
msgstr "Offer" msgstr "Offer"
@@ -1516,7 +1528,7 @@ msgstr "Please select a file to upload."
#: src/views/card/index.tsx:173 #: src/views/card/index.tsx:173
#: src/views/members/components/DeleteMemberConfirmation.tsx:28 #: src/views/members/components/DeleteMemberConfirmation.tsx:28
#: src/views/members/components/InviteMemberForm.tsx:104 #: src/views/members/components/InviteMemberForm.tsx:104
#: src/views/members/components/InviteMemberForm.tsx:224 #: src/views/members/components/InviteMemberForm.tsx:234
#: src/views/settings/components/Avatar.tsx:78 #: src/views/settings/components/Avatar.tsx:78
#: src/views/settings/components/Avatar.tsx:219 #: src/views/settings/components/Avatar.tsx:219
#: src/views/settings/components/DeleteAccountConfirmation.tsx:40 #: src/views/settings/components/DeleteAccountConfirmation.tsx:40
@@ -1529,8 +1541,8 @@ msgstr "Please select a file to upload."
msgid "Please try again later, or contact customer support." msgid "Please try again later, or contact customer support."
msgstr "Please try again later, or contact customer support." msgstr "Please try again later, or contact customer support."
#: src/views/members/components/InviteMemberForm.tsx:120 #: src/views/members/components/InviteMemberForm.tsx:129
#: src/views/members/components/InviteMemberForm.tsx:135 #: src/views/members/components/InviteMemberForm.tsx:145
msgid "Please try again later." msgid "Please try again later."
msgstr "Please try again later." msgstr "Please try again later."
@@ -1557,7 +1569,7 @@ msgstr "Private"
msgid "Pro Plan" msgid "Pro Plan"
msgstr "Pro Plan" msgstr "Pro Plan"
#: src/views/members/components/InviteMemberForm.tsx:305 #: src/views/members/components/InviteMemberForm.tsx:315
msgid "Pro Plan ∞" msgid "Pro Plan ∞"
msgstr "Pro Plan ∞" msgstr "Pro Plan ∞"
@@ -1682,6 +1694,10 @@ msgstr "Save time with reusable board templates."
msgid "Screening" msgid "Screening"
msgstr "Screening" msgstr "Screening"
#: src/components/CommandPallette.tsx:104
msgid "Search boards and cards..."
msgstr "Search boards and cards..."
#: src/views/boards/components/ImportBoardsForm.tsx:274 #: src/views/boards/components/ImportBoardsForm.tsx:274
msgid "Select all" msgid "Select all"
msgstr "Select all" msgstr "Select all"
@@ -1797,6 +1813,10 @@ msgstr "Software Development"
msgid "Star on Github" msgid "Star on Github"
msgstr "Star on Github" msgstr "Star on Github"
#: src/views/members/components/InviteMemberForm.tsx:122
msgid "Subscription Required"
msgstr "Subscription Required"
#: src/components/AuthForm.tsx:212 #: src/components/AuthForm.tsx:212
#: src/components/AuthForm.tsx:229 #: src/components/AuthForm.tsx:229
msgid "Success" msgid "Success"
@@ -1818,7 +1838,7 @@ msgstr "Support the development of the project"
msgid "System" msgid "System"
msgstr "System" msgstr "System"
#: src/views/members/components/InviteMemberForm.tsx:305 #: src/views/members/components/InviteMemberForm.tsx:315
#: src/views/members/index.tsx:208 #: src/views/members/index.tsx:208
msgid "Team Plan" msgid "Team Plan"
msgstr "Team Plan" msgstr "Team Plan"
@@ -2114,7 +2134,7 @@ msgstr "Upgrade to Pro"
msgid "Upgrade to Pro ($29/month)" msgid "Upgrade to Pro ($29/month)"
msgstr "Upgrade to Pro ($29/month)" msgstr "Upgrade to Pro ($29/month)"
#: src/views/members/components/InviteMemberForm.tsx:345 #: src/views/members/components/InviteMemberForm.tsx:357
msgid "Upgrade to Team Plan" msgid "Upgrade to Team Plan"
msgstr "Upgrade to Team Plan" msgstr "Upgrade to Team Plan"
@@ -2317,7 +2337,7 @@ msgstr "You have been logged in successfully."
msgid "You have been signed up successfully." msgid "You have been signed up successfully."
msgstr "You have been signed up successfully." msgstr "You have been signed up successfully."
#: src/views/members/components/InviteMemberForm.tsx:309 #: src/views/members/components/InviteMemberForm.tsx:319
msgid "You have unlimited seats with your Pro Plan. There is no additional charge for new members!" msgid "You have unlimited seats with your Pro Plan. There is no additional charge for new members!"
msgstr "You have unlimited seats with your Pro Plan. There is no additional charge for new members!" msgstr "You have unlimited seats with your Pro Plan. There is no additional charge for new members!"

File diff suppressed because one or more lines are too long

View File

@@ -36,12 +36,12 @@ msgstr "{0} etiquetas"
msgid "{boardCount, plural, one {Import board (1)} other {Import boards ({boardCount})}}" msgid "{boardCount, plural, one {Import board (1)} other {Import boards ({boardCount})}}"
msgstr "{boardCount, plural, one {Importar tablero (1)} other {Importar tableros ({boardCount})}}" msgstr "{boardCount, plural, one {Importar tablero (1)} other {Importar tableros ({boardCount})}}"
#: src/views/members/components/InviteMemberForm.tsx:148 #: src/views/members/components/InviteMemberForm.tsx:158
#: src/views/members/components/InviteMemberForm.tsx:160 #: src/views/members/components/InviteMemberForm.tsx:170
msgid "$10/month" msgid "$10/month"
msgstr "$10/mes" msgstr "$10/mes"
#: src/views/members/components/InviteMemberForm.tsx:160 #: src/views/members/components/InviteMemberForm.tsx:170
msgid "$8/month" msgid "$8/month"
msgstr "$8/mes" msgstr "$8/mes"
@@ -101,7 +101,7 @@ msgid "Add label"
msgstr "Añadir etiqueta" msgstr "Añadir etiqueta"
#: src/views/card/components/MemberSelector.tsx:130 #: src/views/card/components/MemberSelector.tsx:130
#: src/views/members/components/InviteMemberForm.tsx:240 #: src/views/members/components/InviteMemberForm.tsx:250
msgid "Add member" msgid "Add member"
msgstr "Añadir miembro" msgstr "Añadir miembro"
@@ -136,7 +136,7 @@ msgstr "añadió el elemento <0>{0}</0> a la lista de verificación"
msgid "added label <0>{0}</0>" msgid "added label <0>{0}</0>"
msgstr "añadió la etiqueta <0>{0}</0>" msgstr "añadió la etiqueta <0>{0}</0>"
#: src/views/members/components/InviteMemberForm.tsx:310 #: src/views/members/components/InviteMemberForm.tsx:320
msgid "Adding a new member will cost an additional {price} ({billingType}) per seat." msgid "Adding a new member will cost an additional {price} ({billingType}) per seat."
msgstr "Añadir un nuevo miembro costará {price} adicionales ({billingType}) por asiento." msgstr "Añadir un nuevo miembro costará {price} adicionales ({billingType}) por asiento."
@@ -164,7 +164,7 @@ msgstr "Ocurrió un error al desconectar tu cuenta de Trello."
msgid "An unexpected error occurred. Please try again later." msgid "An unexpected error occurred. Please try again later."
msgstr "Ha ocurrido un error inesperado. Por favor, inténtalo de nuevo más tarde." msgstr "Ha ocurrido un error inesperado. Por favor, inténtalo de nuevo más tarde."
#: src/views/members/components/InviteMemberForm.tsx:294 #: src/views/members/components/InviteMemberForm.tsx:304
msgid "Anyone with this link can join your workspace" msgid "Anyone with this link can join your workspace"
msgstr "Cualquier persona con este enlace puede unirse a tu espacio de trabajo" msgstr "Cualquier persona con este enlace puede unirse a tu espacio de trabajo"
@@ -250,11 +250,11 @@ msgstr "Pendientes"
msgid "Basic Kanban" msgid "Basic Kanban"
msgstr "Kanban básico" msgstr "Kanban básico"
#: src/views/members/components/InviteMemberForm.tsx:161 #: src/views/members/components/InviteMemberForm.tsx:171
msgid "billed annually" msgid "billed annually"
msgstr "facturado anualmente" msgstr "facturado anualmente"
#: src/views/members/components/InviteMemberForm.tsx:161 #: src/views/members/components/InviteMemberForm.tsx:171
msgid "billed monthly" msgid "billed monthly"
msgstr "facturado mensualmente" msgstr "facturado mensualmente"
@@ -498,7 +498,7 @@ msgstr "Crear tarjeta"
msgid "Create checklist" msgid "Create checklist"
msgstr "Crear lista de verificación" msgstr "Crear lista de verificación"
#: src/views/members/components/InviteMemberForm.tsx:334 #: src/views/members/components/InviteMemberForm.tsx:342
msgid "Create invite link" msgid "Create invite link"
msgstr "Crear enlace de invitación" msgstr "Crear enlace de invitación"
@@ -528,7 +528,7 @@ msgid "Create new list"
msgstr "Crear nueva lista" msgstr "Crear nueva lista"
#: src/components/NewWorkspaceForm.tsx:384 #: src/components/NewWorkspaceForm.tsx:384
#: src/components/WorkspaceMenu.tsx:116 #: src/components/WorkspaceMenu.tsx:149
msgid "Create workspace" msgid "Create workspace"
msgstr "Crear espacio de trabajo" msgstr "Crear espacio de trabajo"
@@ -569,7 +569,7 @@ msgstr "Atención al cliente"
msgid "Dark" msgid "Dark"
msgstr "Oscuro" msgstr "Oscuro"
#: src/views/members/components/InviteMemberForm.tsx:333 #: src/views/members/components/InviteMemberForm.tsx:341
msgid "Deactivate invite link" msgid "Deactivate invite link"
msgstr "Desactivar enlace de invitación" msgstr "Desactivar enlace de invitación"
@@ -709,7 +709,7 @@ msgstr "Editando"
msgid "email" msgid "email"
msgstr "correo electrónico" msgstr "correo electrónico"
#: src/views/members/components/InviteMemberForm.tsx:255 #: src/views/members/components/InviteMemberForm.tsx:265
msgid "Email" msgid "Email"
msgstr "Correo electrónico" msgstr "Correo electrónico"
@@ -741,7 +741,7 @@ msgstr "Introduce tu nueva contraseña"
msgid "Enter your password" msgid "Enter your password"
msgstr "Introduce tu contraseña" msgstr "Introduce tu contraseña"
#: src/views/members/components/InviteMemberForm.tsx:198 #: src/views/members/components/InviteMemberForm.tsx:208
msgid "Error" msgid "Error"
msgstr "Error" msgstr "Error"
@@ -749,11 +749,11 @@ msgstr "Error"
msgid "Error Changing Password" msgid "Error Changing Password"
msgstr "Error al cambiar la contraseña" msgstr "Error al cambiar la contraseña"
#: src/views/members/components/InviteMemberForm.tsx:119 #: src/views/members/components/InviteMemberForm.tsx:128
msgid "Error creating invite link" msgid "Error creating invite link"
msgstr "Error al crear el enlace de invitación" msgstr "Error al crear el enlace de invitación"
#: src/views/members/components/InviteMemberForm.tsx:134 #: src/views/members/components/InviteMemberForm.tsx:144
msgid "Error deactivating invite link" msgid "Error deactivating invite link"
msgstr "Error al desactivar el enlace de invitación" msgstr "Error al desactivar el enlace de invitación"
@@ -798,7 +798,7 @@ msgstr "Error al actualizar el nombre del espacio de trabajo"
msgid "Error updating workspace URL" msgid "Error updating workspace URL"
msgstr "Error al actualizar la URL del espacio de trabajo" msgstr "Error al actualizar la URL del espacio de trabajo"
#: src/views/members/components/InviteMemberForm.tsx:223 #: src/views/members/components/InviteMemberForm.tsx:233
#: src/views/settings/components/UpgradeToProConfirmation.tsx:41 #: src/views/settings/components/UpgradeToProConfirmation.tsx:41
msgid "Error upgrading subscription" msgid "Error upgrading subscription"
msgstr "Error al actualizar la suscripción" msgstr "Error al actualizar la suscripción"
@@ -828,7 +828,7 @@ msgstr "Ejecución"
msgid "Failed to accept invitation. Please try again later, or contact customer support." msgid "Failed to accept invitation. Please try again later, or contact customer support."
msgstr "No se pudo aceptar la invitación. Por favor, inténtalo de nuevo más tarde o contacta con atención al cliente." msgstr "No se pudo aceptar la invitación. Por favor, inténtalo de nuevo más tarde o contacta con atención al cliente."
#: src/views/members/components/InviteMemberForm.tsx:199 #: src/views/members/components/InviteMemberForm.tsx:209
msgid "Failed to copy invite link" msgid "Failed to copy invite link"
msgstr "No se pudo copiar el enlace de invitación" msgstr "No se pudo copiar el enlace de invitación"
@@ -881,7 +881,7 @@ msgstr "Para la sostenibilidad a largo plazo, reconocemos que todos los buenos p
msgid "Free" msgid "Free"
msgstr "Gratis" msgstr "Gratis"
#: src/views/members/components/InviteMemberForm.tsx:316 #: src/views/members/components/InviteMemberForm.tsx:326
#: src/views/members/index.tsx:209 #: src/views/members/index.tsx:209
msgid "Free Plan" msgid "Free Plan"
msgstr "Plan gratuito" msgstr "Plan gratuito"
@@ -1024,6 +1024,10 @@ msgstr "Importando desde Trello"
msgid "Importing your Trello boards into Kan is easy. You can follow our step-by-step guide <0>here</0>." msgid "Importing your Trello boards into Kan is easy. You can follow our step-by-step guide <0>here</0>."
msgstr "Importar tus tableros de Trello a Kan es fácil. Puedes seguir nuestra guía paso a paso <0>aquí</0>." msgstr "Importar tus tableros de Trello a Kan es fácil. Puedes seguir nuestra guía paso a paso <0>aquí</0>."
#: src/components/CommandPallette.tsx:168
msgid "in"
msgstr "en"
#: src/views/boards/components/TemplateBoards.tsx:16 #: src/views/boards/components/TemplateBoards.tsx:16
#: src/views/boards/components/TemplateBoards.tsx:22 #: src/views/boards/components/TemplateBoards.tsx:22
#: src/views/boards/components/TemplateBoards.tsx:45 #: src/views/boards/components/TemplateBoards.tsx:45
@@ -1055,20 +1059,24 @@ msgstr "Invitación inválida"
msgid "Invite" msgid "Invite"
msgstr "Invitar" msgstr "Invitar"
#: src/views/members/components/InviteMemberForm.tsx:192 #: src/views/members/components/InviteMemberForm.tsx:202
msgid "Invite link copied" msgid "Invite link copied"
msgstr "Enlace de invitación copiado" msgstr "Enlace de invitación copiado"
#: src/views/members/components/InviteMemberForm.tsx:193 #: src/views/members/components/InviteMemberForm.tsx:203
msgid "Invite link copied to clipboard" msgid "Invite link copied to clipboard"
msgstr "Enlace de invitación copiado al portapapeles" msgstr "Enlace de invitación copiado al portapapeles"
#: src/views/members/components/InviteMemberForm.tsx:123
msgid "Invite links require a Team or Pro subscription. Please upgrade your workspace."
msgstr "Los enlaces de invitación requieren una suscripción de Equipo o Pro. Por favor, actualiza tu espacio de trabajo."
#: src/views/card/components/MemberSelector.tsx:111 #: src/views/card/components/MemberSelector.tsx:111
#: src/views/members/components/InviteMemberForm.tsx:353 #: src/views/members/components/InviteMemberForm.tsx:365
msgid "Invite member" msgid "Invite member"
msgstr "Invitar miembro" msgstr "Invitar miembro"
#: src/views/members/components/InviteMemberForm.tsx:319 #: src/views/members/components/InviteMemberForm.tsx:329
msgid "Inviting members requires a Team Plan. You'll be redirected to upgrade your workspace." msgid "Inviting members requires a Team Plan. You'll be redirected to upgrade your workspace."
msgstr "Invitar miembros requiere un Plan de Equipo. Serás redirigido para actualizar tu espacio de trabajo." msgstr "Invitar miembros requiere un Plan de Equipo. Serás redirigido para actualizar tu espacio de trabajo."
@@ -1203,7 +1211,7 @@ msgstr "Miembros | {0}"
msgid "Monthly" msgid "Monthly"
msgstr "Mensual" msgstr "Mensual"
#: src/views/members/components/InviteMemberForm.tsx:149 #: src/views/members/components/InviteMemberForm.tsx:159
msgid "monthly billing" msgid "monthly billing"
msgstr "facturación mensual" msgstr "facturación mensual"
@@ -1299,6 +1307,10 @@ msgstr "No se requiere tarjeta de crédito"
msgid "No lists" msgid "No lists"
msgstr "Sin listas" msgstr "Sin listas"
#: src/components/CommandPallette.tsx:184
msgid "No results found for \"{debouncedQuery}\"."
msgstr "No se encontraron resultados para \"{debouncedQuery}\"."
#: src/views/boards/components/TemplateBoards.tsx:65 #: src/views/boards/components/TemplateBoards.tsx:65
msgid "Offer" msgid "Offer"
msgstr "Oferta" msgstr "Oferta"
@@ -1422,7 +1434,7 @@ msgstr "Por favor selecciona un archivo para subir."
#: src/views/card/index.tsx:173 #: src/views/card/index.tsx:173
#: src/views/members/components/DeleteMemberConfirmation.tsx:28 #: src/views/members/components/DeleteMemberConfirmation.tsx:28
#: src/views/members/components/InviteMemberForm.tsx:104 #: src/views/members/components/InviteMemberForm.tsx:104
#: src/views/members/components/InviteMemberForm.tsx:224 #: src/views/members/components/InviteMemberForm.tsx:234
#: src/views/settings/components/Avatar.tsx:78 #: src/views/settings/components/Avatar.tsx:78
#: src/views/settings/components/Avatar.tsx:219 #: src/views/settings/components/Avatar.tsx:219
#: src/views/settings/components/DeleteAccountConfirmation.tsx:40 #: src/views/settings/components/DeleteAccountConfirmation.tsx:40
@@ -1435,8 +1447,8 @@ msgstr "Por favor selecciona un archivo para subir."
msgid "Please try again later, or contact customer support." msgid "Please try again later, or contact customer support."
msgstr "Por favor, inténtalo de nuevo más tarde o contacta con atención al cliente." msgstr "Por favor, inténtalo de nuevo más tarde o contacta con atención al cliente."
#: src/views/members/components/InviteMemberForm.tsx:120 #: src/views/members/components/InviteMemberForm.tsx:129
#: src/views/members/components/InviteMemberForm.tsx:135 #: src/views/members/components/InviteMemberForm.tsx:145
msgid "Please try again later." msgid "Please try again later."
msgstr "Por favor, inténtalo de nuevo más tarde." msgstr "Por favor, inténtalo de nuevo más tarde."
@@ -1463,7 +1475,7 @@ msgstr "Privado"
msgid "Pro Plan" msgid "Pro Plan"
msgstr "Plan Pro" msgstr "Plan Pro"
#: src/views/members/components/InviteMemberForm.tsx:305 #: src/views/members/components/InviteMemberForm.tsx:315
msgid "Pro Plan ∞" msgid "Pro Plan ∞"
msgstr "Plan Pro ∞" msgstr "Plan Pro ∞"
@@ -1580,6 +1592,10 @@ msgstr "Ahorra tiempo con plantillas de tableros reutilizables."
msgid "Screening" msgid "Screening"
msgstr "Preselección" msgstr "Preselección"
#: src/components/CommandPallette.tsx:104
msgid "Search boards and cards..."
msgstr "Buscar tableros y tarjetas..."
#: src/views/boards/components/ImportBoardsForm.tsx:274 #: src/views/boards/components/ImportBoardsForm.tsx:274
msgid "Select all" msgid "Select all"
msgstr "Seleccionar todo" msgstr "Seleccionar todo"
@@ -1683,6 +1699,10 @@ msgstr "Desarrollo de software"
msgid "Star on Github" msgid "Star on Github"
msgstr "Estrella en Github" msgstr "Estrella en Github"
#: src/views/members/components/InviteMemberForm.tsx:122
msgid "Subscription Required"
msgstr "Suscripción requerida"
#: src/components/AuthForm.tsx:212 #: src/components/AuthForm.tsx:212
#: src/components/AuthForm.tsx:229 #: src/components/AuthForm.tsx:229
msgid "Success" msgid "Success"
@@ -1704,7 +1724,7 @@ msgstr "Apoya el desarrollo del proyecto"
msgid "System" msgid "System"
msgstr "Sistema" msgstr "Sistema"
#: src/views/members/components/InviteMemberForm.tsx:305 #: src/views/members/components/InviteMemberForm.tsx:315
#: src/views/members/index.tsx:208 #: src/views/members/index.tsx:208
msgid "Team Plan" msgid "Team Plan"
msgstr "Plan de Equipo" msgstr "Plan de Equipo"
@@ -1988,7 +2008,7 @@ msgstr "Actualizar a Pro"
msgid "Upgrade to Pro ($29/month)" msgid "Upgrade to Pro ($29/month)"
msgstr "Actualizar a Pro ($29/mes)" msgstr "Actualizar a Pro ($29/mes)"
#: src/views/members/components/InviteMemberForm.tsx:345 #: src/views/members/components/InviteMemberForm.tsx:357
msgid "Upgrade to Team Plan" msgid "Upgrade to Team Plan"
msgstr "Actualizar al Plan de Equipo" msgstr "Actualizar al Plan de Equipo"
@@ -2187,7 +2207,7 @@ msgstr "Has iniciado sesión correctamente."
msgid "You have been signed up successfully." msgid "You have been signed up successfully."
msgstr "Te has registrado correctamente." msgstr "Te has registrado correctamente."
#: src/views/members/components/InviteMemberForm.tsx:309 #: src/views/members/components/InviteMemberForm.tsx:319
msgid "You have unlimited seats with your Pro Plan. There is no additional charge for new members!" msgid "You have unlimited seats with your Pro Plan. There is no additional charge for new members!"
msgstr "Tienes plazas ilimitadas con tu Plan Pro. ¡No hay cargos adicionales por nuevos miembros!" msgstr "Tienes plazas ilimitadas con tu Plan Pro. ¡No hay cargos adicionales por nuevos miembros!"

File diff suppressed because one or more lines are too long

View File

@@ -36,12 +36,12 @@ msgstr "{0} étiquettes"
msgid "{boardCount, plural, one {Import board (1)} other {Import boards ({boardCount})}}" msgid "{boardCount, plural, one {Import board (1)} other {Import boards ({boardCount})}}"
msgstr "{boardCount, plural, one {Importer le tableau (1)} other {Importer les tableaux ({boardCount})}}" msgstr "{boardCount, plural, one {Importer le tableau (1)} other {Importer les tableaux ({boardCount})}}"
#: src/views/members/components/InviteMemberForm.tsx:148 #: src/views/members/components/InviteMemberForm.tsx:158
#: src/views/members/components/InviteMemberForm.tsx:160 #: src/views/members/components/InviteMemberForm.tsx:170
msgid "$10/month" msgid "$10/month"
msgstr "10 $/mois" msgstr "10 $/mois"
#: src/views/members/components/InviteMemberForm.tsx:160 #: src/views/members/components/InviteMemberForm.tsx:170
msgid "$8/month" msgid "$8/month"
msgstr "8 $/mois" msgstr "8 $/mois"
@@ -101,7 +101,7 @@ msgid "Add label"
msgstr "Ajouter une étiquette" msgstr "Ajouter une étiquette"
#: src/views/card/components/MemberSelector.tsx:130 #: src/views/card/components/MemberSelector.tsx:130
#: src/views/members/components/InviteMemberForm.tsx:240 #: src/views/members/components/InviteMemberForm.tsx:250
msgid "Add member" msgid "Add member"
msgstr "Ajouter un membre" msgstr "Ajouter un membre"
@@ -136,7 +136,7 @@ msgstr "a ajouté l'élément <0>{0}</0> à la checklist"
msgid "added label <0>{0}</0>" msgid "added label <0>{0}</0>"
msgstr "a ajouté l'étiquette <0>{0}</0>" msgstr "a ajouté l'étiquette <0>{0}</0>"
#: src/views/members/components/InviteMemberForm.tsx:310 #: src/views/members/components/InviteMemberForm.tsx:320
msgid "Adding a new member will cost an additional {price} ({billingType}) per seat." msgid "Adding a new member will cost an additional {price} ({billingType}) per seat."
msgstr "L'ajout d'un nouveau membre coûtera {price} supplémentaires ({billingType}) par siège." msgstr "L'ajout d'un nouveau membre coûtera {price} supplémentaires ({billingType}) par siège."
@@ -164,7 +164,7 @@ msgstr "Une erreur s'est produite lors de la déconnexion de votre compte Trello
msgid "An unexpected error occurred. Please try again later." msgid "An unexpected error occurred. Please try again later."
msgstr "Une erreur inattendue s'est produite. Veuillez réessayer plus tard." msgstr "Une erreur inattendue s'est produite. Veuillez réessayer plus tard."
#: src/views/members/components/InviteMemberForm.tsx:294 #: src/views/members/components/InviteMemberForm.tsx:304
msgid "Anyone with this link can join your workspace" msgid "Anyone with this link can join your workspace"
msgstr "Toute personne disposant de ce lien peut rejoindre votre espace de travail" msgstr "Toute personne disposant de ce lien peut rejoindre votre espace de travail"
@@ -250,11 +250,11 @@ msgstr "Backlog"
msgid "Basic Kanban" msgid "Basic Kanban"
msgstr "Kanban basique" msgstr "Kanban basique"
#: src/views/members/components/InviteMemberForm.tsx:161 #: src/views/members/components/InviteMemberForm.tsx:171
msgid "billed annually" msgid "billed annually"
msgstr "facturation annuelle" msgstr "facturation annuelle"
#: src/views/members/components/InviteMemberForm.tsx:161 #: src/views/members/components/InviteMemberForm.tsx:171
msgid "billed monthly" msgid "billed monthly"
msgstr "facturation mensuelle" msgstr "facturation mensuelle"
@@ -498,7 +498,7 @@ msgstr "Créer une carte"
msgid "Create checklist" msgid "Create checklist"
msgstr "Créer une checklist" msgstr "Créer une checklist"
#: src/views/members/components/InviteMemberForm.tsx:334 #: src/views/members/components/InviteMemberForm.tsx:342
msgid "Create invite link" msgid "Create invite link"
msgstr "Créer un lien d'invitation" msgstr "Créer un lien d'invitation"
@@ -528,7 +528,7 @@ msgid "Create new list"
msgstr "Créer une nouvelle liste" msgstr "Créer une nouvelle liste"
#: src/components/NewWorkspaceForm.tsx:384 #: src/components/NewWorkspaceForm.tsx:384
#: src/components/WorkspaceMenu.tsx:116 #: src/components/WorkspaceMenu.tsx:149
msgid "Create workspace" msgid "Create workspace"
msgstr "Créer un espace de travail" msgstr "Créer un espace de travail"
@@ -569,7 +569,7 @@ msgstr "Support client"
msgid "Dark" msgid "Dark"
msgstr "Sombre" msgstr "Sombre"
#: src/views/members/components/InviteMemberForm.tsx:333 #: src/views/members/components/InviteMemberForm.tsx:341
msgid "Deactivate invite link" msgid "Deactivate invite link"
msgstr "Désactiver le lien d'invitation" msgstr "Désactiver le lien d'invitation"
@@ -709,7 +709,7 @@ msgstr "Édition"
msgid "email" msgid "email"
msgstr "e-mail" msgstr "e-mail"
#: src/views/members/components/InviteMemberForm.tsx:255 #: src/views/members/components/InviteMemberForm.tsx:265
msgid "Email" msgid "Email"
msgstr "E-mail" msgstr "E-mail"
@@ -741,7 +741,7 @@ msgstr "Saisissez votre nouveau mot de passe"
msgid "Enter your password" msgid "Enter your password"
msgstr "Saisissez votre mot de passe" msgstr "Saisissez votre mot de passe"
#: src/views/members/components/InviteMemberForm.tsx:198 #: src/views/members/components/InviteMemberForm.tsx:208
msgid "Error" msgid "Error"
msgstr "Erreur" msgstr "Erreur"
@@ -749,11 +749,11 @@ msgstr "Erreur"
msgid "Error Changing Password" msgid "Error Changing Password"
msgstr "Erreur lors du changement de mot de passe" msgstr "Erreur lors du changement de mot de passe"
#: src/views/members/components/InviteMemberForm.tsx:119 #: src/views/members/components/InviteMemberForm.tsx:128
msgid "Error creating invite link" msgid "Error creating invite link"
msgstr "Erreur lors de la création du lien d'invitation" msgstr "Erreur lors de la création du lien d'invitation"
#: src/views/members/components/InviteMemberForm.tsx:134 #: src/views/members/components/InviteMemberForm.tsx:144
msgid "Error deactivating invite link" msgid "Error deactivating invite link"
msgstr "Erreur lors de la désactivation du lien d'invitation" msgstr "Erreur lors de la désactivation du lien d'invitation"
@@ -798,7 +798,7 @@ msgstr "Erreur lors de la mise à jour du nom de l'espace de travail"
msgid "Error updating workspace URL" msgid "Error updating workspace URL"
msgstr "Erreur lors de la mise à jour de l'URL de l'espace de travail" msgstr "Erreur lors de la mise à jour de l'URL de l'espace de travail"
#: src/views/members/components/InviteMemberForm.tsx:223 #: src/views/members/components/InviteMemberForm.tsx:233
#: src/views/settings/components/UpgradeToProConfirmation.tsx:41 #: src/views/settings/components/UpgradeToProConfirmation.tsx:41
msgid "Error upgrading subscription" msgid "Error upgrading subscription"
msgstr "Erreur lors de la mise à niveau de l'abonnement" msgstr "Erreur lors de la mise à niveau de l'abonnement"
@@ -828,7 +828,7 @@ msgstr "Exécution"
msgid "Failed to accept invitation. Please try again later, or contact customer support." msgid "Failed to accept invitation. Please try again later, or contact customer support."
msgstr "Échec de l'acceptation de l'invitation. Veuillez réessayer plus tard ou contacter le service client." msgstr "Échec de l'acceptation de l'invitation. Veuillez réessayer plus tard ou contacter le service client."
#: src/views/members/components/InviteMemberForm.tsx:199 #: src/views/members/components/InviteMemberForm.tsx:209
msgid "Failed to copy invite link" msgid "Failed to copy invite link"
msgstr "Échec de la copie du lien d'invitation" msgstr "Échec de la copie du lien d'invitation"
@@ -881,7 +881,7 @@ msgstr "Pour une durabilité à long terme, nous reconnaissons que tous les bons
msgid "Free" msgid "Free"
msgstr "Gratuit" msgstr "Gratuit"
#: src/views/members/components/InviteMemberForm.tsx:316 #: src/views/members/components/InviteMemberForm.tsx:326
#: src/views/members/index.tsx:209 #: src/views/members/index.tsx:209
msgid "Free Plan" msgid "Free Plan"
msgstr "Forfait gratuit" msgstr "Forfait gratuit"
@@ -1024,6 +1024,10 @@ msgstr "Importation depuis Trello"
msgid "Importing your Trello boards into Kan is easy. You can follow our step-by-step guide <0>here</0>." msgid "Importing your Trello boards into Kan is easy. You can follow our step-by-step guide <0>here</0>."
msgstr "L'importation de vos tableaux Trello dans Kan est simple. Vous pouvez suivre notre guide étape par étape <0>ici</0>." msgstr "L'importation de vos tableaux Trello dans Kan est simple. Vous pouvez suivre notre guide étape par étape <0>ici</0>."
#: src/components/CommandPallette.tsx:168
msgid "in"
msgstr "dans"
#: src/views/boards/components/TemplateBoards.tsx:16 #: src/views/boards/components/TemplateBoards.tsx:16
#: src/views/boards/components/TemplateBoards.tsx:22 #: src/views/boards/components/TemplateBoards.tsx:22
#: src/views/boards/components/TemplateBoards.tsx:45 #: src/views/boards/components/TemplateBoards.tsx:45
@@ -1055,20 +1059,24 @@ msgstr "Invitation invalide"
msgid "Invite" msgid "Invite"
msgstr "Inviter" msgstr "Inviter"
#: src/views/members/components/InviteMemberForm.tsx:192 #: src/views/members/components/InviteMemberForm.tsx:202
msgid "Invite link copied" msgid "Invite link copied"
msgstr "Lien d'invitation copié" msgstr "Lien d'invitation copié"
#: src/views/members/components/InviteMemberForm.tsx:193 #: src/views/members/components/InviteMemberForm.tsx:203
msgid "Invite link copied to clipboard" msgid "Invite link copied to clipboard"
msgstr "Lien d'invitation copié dans le presse-papiers" msgstr "Lien d'invitation copié dans le presse-papiers"
#: src/views/members/components/InviteMemberForm.tsx:123
msgid "Invite links require a Team or Pro subscription. Please upgrade your workspace."
msgstr "Les liens d'invitation nécessitent un abonnement Team ou Pro. Veuillez mettre à niveau votre espace de travail."
#: src/views/card/components/MemberSelector.tsx:111 #: src/views/card/components/MemberSelector.tsx:111
#: src/views/members/components/InviteMemberForm.tsx:353 #: src/views/members/components/InviteMemberForm.tsx:365
msgid "Invite member" msgid "Invite member"
msgstr "Inviter un membre" msgstr "Inviter un membre"
#: src/views/members/components/InviteMemberForm.tsx:319 #: src/views/members/components/InviteMemberForm.tsx:329
msgid "Inviting members requires a Team Plan. You'll be redirected to upgrade your workspace." msgid "Inviting members requires a Team Plan. You'll be redirected to upgrade your workspace."
msgstr "L'invitation de membres nécessite un forfait d'équipe. Vous serez redirigé pour mettre à niveau votre espace de travail." msgstr "L'invitation de membres nécessite un forfait d'équipe. Vous serez redirigé pour mettre à niveau votre espace de travail."
@@ -1203,7 +1211,7 @@ msgstr "Membres | {0}"
msgid "Monthly" msgid "Monthly"
msgstr "Mensuel" msgstr "Mensuel"
#: src/views/members/components/InviteMemberForm.tsx:149 #: src/views/members/components/InviteMemberForm.tsx:159
msgid "monthly billing" msgid "monthly billing"
msgstr "facturation mensuelle" msgstr "facturation mensuelle"
@@ -1299,6 +1307,10 @@ msgstr "Aucune carte de crédit requise"
msgid "No lists" msgid "No lists"
msgstr "Aucune liste" msgstr "Aucune liste"
#: src/components/CommandPallette.tsx:184
msgid "No results found for \"{debouncedQuery}\"."
msgstr "Aucun résultat trouvé pour \"{debouncedQuery}\"."
#: src/views/boards/components/TemplateBoards.tsx:65 #: src/views/boards/components/TemplateBoards.tsx:65
msgid "Offer" msgid "Offer"
msgstr "Offre" msgstr "Offre"
@@ -1422,7 +1434,7 @@ msgstr "Veuillez sélectionner un fichier à télécharger."
#: src/views/card/index.tsx:173 #: src/views/card/index.tsx:173
#: src/views/members/components/DeleteMemberConfirmation.tsx:28 #: src/views/members/components/DeleteMemberConfirmation.tsx:28
#: src/views/members/components/InviteMemberForm.tsx:104 #: src/views/members/components/InviteMemberForm.tsx:104
#: src/views/members/components/InviteMemberForm.tsx:224 #: src/views/members/components/InviteMemberForm.tsx:234
#: src/views/settings/components/Avatar.tsx:78 #: src/views/settings/components/Avatar.tsx:78
#: src/views/settings/components/Avatar.tsx:219 #: src/views/settings/components/Avatar.tsx:219
#: src/views/settings/components/DeleteAccountConfirmation.tsx:40 #: src/views/settings/components/DeleteAccountConfirmation.tsx:40
@@ -1435,8 +1447,8 @@ msgstr "Veuillez sélectionner un fichier à télécharger."
msgid "Please try again later, or contact customer support." msgid "Please try again later, or contact customer support."
msgstr "Veuillez réessayer plus tard ou contacter le service client." msgstr "Veuillez réessayer plus tard ou contacter le service client."
#: src/views/members/components/InviteMemberForm.tsx:120 #: src/views/members/components/InviteMemberForm.tsx:129
#: src/views/members/components/InviteMemberForm.tsx:135 #: src/views/members/components/InviteMemberForm.tsx:145
msgid "Please try again later." msgid "Please try again later."
msgstr "Veuillez réessayer plus tard." msgstr "Veuillez réessayer plus tard."
@@ -1463,7 +1475,7 @@ msgstr "Privé"
msgid "Pro Plan" msgid "Pro Plan"
msgstr "Plan Pro" msgstr "Plan Pro"
#: src/views/members/components/InviteMemberForm.tsx:305 #: src/views/members/components/InviteMemberForm.tsx:315
msgid "Pro Plan ∞" msgid "Pro Plan ∞"
msgstr "Plan Pro ∞" msgstr "Plan Pro ∞"
@@ -1580,6 +1592,10 @@ msgstr "Gagnez du temps avec des modèles de tableaux réutilisables."
msgid "Screening" msgid "Screening"
msgstr "Présélection" msgstr "Présélection"
#: src/components/CommandPallette.tsx:104
msgid "Search boards and cards..."
msgstr "Rechercher des tableaux et des cartes..."
#: src/views/boards/components/ImportBoardsForm.tsx:274 #: src/views/boards/components/ImportBoardsForm.tsx:274
msgid "Select all" msgid "Select all"
msgstr "Sélectionner tout" msgstr "Sélectionner tout"
@@ -1683,6 +1699,10 @@ msgstr "Développement logiciel"
msgid "Star on Github" msgid "Star on Github"
msgstr "Étoile sur Github" msgstr "Étoile sur Github"
#: src/views/members/components/InviteMemberForm.tsx:122
msgid "Subscription Required"
msgstr "Abonnement requis"
#: src/components/AuthForm.tsx:212 #: src/components/AuthForm.tsx:212
#: src/components/AuthForm.tsx:229 #: src/components/AuthForm.tsx:229
msgid "Success" msgid "Success"
@@ -1704,7 +1724,7 @@ msgstr "Soutenir le développement du projet"
msgid "System" msgid "System"
msgstr "Système" msgstr "Système"
#: src/views/members/components/InviteMemberForm.tsx:305 #: src/views/members/components/InviteMemberForm.tsx:315
#: src/views/members/index.tsx:208 #: src/views/members/index.tsx:208
msgid "Team Plan" msgid "Team Plan"
msgstr "Forfait d'équipe" msgstr "Forfait d'équipe"
@@ -1988,7 +2008,7 @@ msgstr "Passer à Pro"
msgid "Upgrade to Pro ($29/month)" msgid "Upgrade to Pro ($29/month)"
msgstr "Passer à Pro (29 $/mois)" msgstr "Passer à Pro (29 $/mois)"
#: src/views/members/components/InviteMemberForm.tsx:345 #: src/views/members/components/InviteMemberForm.tsx:357
msgid "Upgrade to Team Plan" msgid "Upgrade to Team Plan"
msgstr "Passer au forfait d'équipe" msgstr "Passer au forfait d'équipe"
@@ -2187,7 +2207,7 @@ msgstr "Vous vous êtes connecté avec succès."
msgid "You have been signed up successfully." msgid "You have been signed up successfully."
msgstr "Vous vous êtes inscrit avec succès." msgstr "Vous vous êtes inscrit avec succès."
#: src/views/members/components/InviteMemberForm.tsx:309 #: src/views/members/components/InviteMemberForm.tsx:319
msgid "You have unlimited seats with your Pro Plan. There is no additional charge for new members!" msgid "You have unlimited seats with your Pro Plan. There is no additional charge for new members!"
msgstr "Vous disposez de places illimitées avec votre Plan Pro. Il n'y a pas de frais supplémentaires pour les nouveaux membres !" msgstr "Vous disposez de places illimitées avec votre Plan Pro. Il n'y a pas de frais supplémentaires pour les nouveaux membres !"

File diff suppressed because one or more lines are too long

View File

@@ -36,12 +36,12 @@ msgstr "{0} etichette"
msgid "{boardCount, plural, one {Import board (1)} other {Import boards ({boardCount})}}" msgid "{boardCount, plural, one {Import board (1)} other {Import boards ({boardCount})}}"
msgstr "{boardCount, plural, one {Importa bacheca (1)} other {Importa bacheche ({boardCount})}}" msgstr "{boardCount, plural, one {Importa bacheca (1)} other {Importa bacheche ({boardCount})}}"
#: src/views/members/components/InviteMemberForm.tsx:148 #: src/views/members/components/InviteMemberForm.tsx:158
#: src/views/members/components/InviteMemberForm.tsx:160 #: src/views/members/components/InviteMemberForm.tsx:170
msgid "$10/month" msgid "$10/month"
msgstr "$10/mese" msgstr "$10/mese"
#: src/views/members/components/InviteMemberForm.tsx:160 #: src/views/members/components/InviteMemberForm.tsx:170
msgid "$8/month" msgid "$8/month"
msgstr "$8/mese" msgstr "$8/mese"
@@ -101,7 +101,7 @@ msgid "Add label"
msgstr "Aggiungi etichetta" msgstr "Aggiungi etichetta"
#: src/views/card/components/MemberSelector.tsx:130 #: src/views/card/components/MemberSelector.tsx:130
#: src/views/members/components/InviteMemberForm.tsx:240 #: src/views/members/components/InviteMemberForm.tsx:250
msgid "Add member" msgid "Add member"
msgstr "Aggiungi membro" msgstr "Aggiungi membro"
@@ -136,7 +136,7 @@ msgstr "ha aggiunto l'elemento <0>{0}</0> alla checklist"
msgid "added label <0>{0}</0>" msgid "added label <0>{0}</0>"
msgstr "ha aggiunto l'etichetta <0>{0}</0>" msgstr "ha aggiunto l'etichetta <0>{0}</0>"
#: src/views/members/components/InviteMemberForm.tsx:310 #: src/views/members/components/InviteMemberForm.tsx:320
msgid "Adding a new member will cost an additional {price} ({billingType}) per seat." msgid "Adding a new member will cost an additional {price} ({billingType}) per seat."
msgstr "L'aggiunta di un nuovo membro costerà un supplemento di {price} ({billingType}) per posto." msgstr "L'aggiunta di un nuovo membro costerà un supplemento di {price} ({billingType}) per posto."
@@ -164,7 +164,7 @@ msgstr "Si è verificato un errore durante la disconnessione del tuo account Tre
msgid "An unexpected error occurred. Please try again later." msgid "An unexpected error occurred. Please try again later."
msgstr "Si è verificato un errore imprevisto. Riprova più tardi." msgstr "Si è verificato un errore imprevisto. Riprova più tardi."
#: src/views/members/components/InviteMemberForm.tsx:294 #: src/views/members/components/InviteMemberForm.tsx:304
msgid "Anyone with this link can join your workspace" msgid "Anyone with this link can join your workspace"
msgstr "Chiunque abbia questo link può unirsi al tuo spazio di lavoro" msgstr "Chiunque abbia questo link può unirsi al tuo spazio di lavoro"
@@ -250,11 +250,11 @@ msgstr "Backlog"
msgid "Basic Kanban" msgid "Basic Kanban"
msgstr "Kanban base" msgstr "Kanban base"
#: src/views/members/components/InviteMemberForm.tsx:161 #: src/views/members/components/InviteMemberForm.tsx:171
msgid "billed annually" msgid "billed annually"
msgstr "fatturato annualmente" msgstr "fatturato annualmente"
#: src/views/members/components/InviteMemberForm.tsx:161 #: src/views/members/components/InviteMemberForm.tsx:171
msgid "billed monthly" msgid "billed monthly"
msgstr "fatturato mensilmente" msgstr "fatturato mensilmente"
@@ -498,7 +498,7 @@ msgstr "Crea carta"
msgid "Create checklist" msgid "Create checklist"
msgstr "Crea checklist" msgstr "Crea checklist"
#: src/views/members/components/InviteMemberForm.tsx:334 #: src/views/members/components/InviteMemberForm.tsx:342
msgid "Create invite link" msgid "Create invite link"
msgstr "Crea link di invito" msgstr "Crea link di invito"
@@ -528,7 +528,7 @@ msgid "Create new list"
msgstr "Crea nuova lista" msgstr "Crea nuova lista"
#: src/components/NewWorkspaceForm.tsx:384 #: src/components/NewWorkspaceForm.tsx:384
#: src/components/WorkspaceMenu.tsx:116 #: src/components/WorkspaceMenu.tsx:149
msgid "Create workspace" msgid "Create workspace"
msgstr "Crea spazio di lavoro" msgstr "Crea spazio di lavoro"
@@ -569,7 +569,7 @@ msgstr "Assistenza clienti"
msgid "Dark" msgid "Dark"
msgstr "Scuro" msgstr "Scuro"
#: src/views/members/components/InviteMemberForm.tsx:333 #: src/views/members/components/InviteMemberForm.tsx:341
msgid "Deactivate invite link" msgid "Deactivate invite link"
msgstr "Disattiva link di invito" msgstr "Disattiva link di invito"
@@ -709,7 +709,7 @@ msgstr "Modifica"
msgid "email" msgid "email"
msgstr "email" msgstr "email"
#: src/views/members/components/InviteMemberForm.tsx:255 #: src/views/members/components/InviteMemberForm.tsx:265
msgid "Email" msgid "Email"
msgstr "Email" msgstr "Email"
@@ -741,7 +741,7 @@ msgstr "Inserisci la tua nuova password"
msgid "Enter your password" msgid "Enter your password"
msgstr "Inserisci la tua password" msgstr "Inserisci la tua password"
#: src/views/members/components/InviteMemberForm.tsx:198 #: src/views/members/components/InviteMemberForm.tsx:208
msgid "Error" msgid "Error"
msgstr "Errore" msgstr "Errore"
@@ -749,11 +749,11 @@ msgstr "Errore"
msgid "Error Changing Password" msgid "Error Changing Password"
msgstr "Errore durante il cambio della password" msgstr "Errore durante il cambio della password"
#: src/views/members/components/InviteMemberForm.tsx:119 #: src/views/members/components/InviteMemberForm.tsx:128
msgid "Error creating invite link" msgid "Error creating invite link"
msgstr "Errore durante la creazione del link di invito" msgstr "Errore durante la creazione del link di invito"
#: src/views/members/components/InviteMemberForm.tsx:134 #: src/views/members/components/InviteMemberForm.tsx:144
msgid "Error deactivating invite link" msgid "Error deactivating invite link"
msgstr "Errore durante la disattivazione del link di invito" msgstr "Errore durante la disattivazione del link di invito"
@@ -798,7 +798,7 @@ msgstr "Errore durante l'aggiornamento del nome dell'area di lavoro"
msgid "Error updating workspace URL" msgid "Error updating workspace URL"
msgstr "Errore durante l'aggiornamento dell'URL dell'area di lavoro" msgstr "Errore durante l'aggiornamento dell'URL dell'area di lavoro"
#: src/views/members/components/InviteMemberForm.tsx:223 #: src/views/members/components/InviteMemberForm.tsx:233
#: src/views/settings/components/UpgradeToProConfirmation.tsx:41 #: src/views/settings/components/UpgradeToProConfirmation.tsx:41
msgid "Error upgrading subscription" msgid "Error upgrading subscription"
msgstr "Errore nell'aggiornamento dell'abbonamento" msgstr "Errore nell'aggiornamento dell'abbonamento"
@@ -828,7 +828,7 @@ msgstr "Esecuzione"
msgid "Failed to accept invitation. Please try again later, or contact customer support." msgid "Failed to accept invitation. Please try again later, or contact customer support."
msgstr "Impossibile accettare l'invito. Riprova più tardi o contatta l'assistenza clienti." msgstr "Impossibile accettare l'invito. Riprova più tardi o contatta l'assistenza clienti."
#: src/views/members/components/InviteMemberForm.tsx:199 #: src/views/members/components/InviteMemberForm.tsx:209
msgid "Failed to copy invite link" msgid "Failed to copy invite link"
msgstr "Impossibile copiare il link di invito" msgstr "Impossibile copiare il link di invito"
@@ -881,7 +881,7 @@ msgstr "Per la sostenibilità a lungo termine, riconosciamo che tutti i buoni pr
msgid "Free" msgid "Free"
msgstr "Gratuito" msgstr "Gratuito"
#: src/views/members/components/InviteMemberForm.tsx:316 #: src/views/members/components/InviteMemberForm.tsx:326
#: src/views/members/index.tsx:209 #: src/views/members/index.tsx:209
msgid "Free Plan" msgid "Free Plan"
msgstr "Piano gratuito" msgstr "Piano gratuito"
@@ -1024,6 +1024,10 @@ msgstr "Importazione da Trello"
msgid "Importing your Trello boards into Kan is easy. You can follow our step-by-step guide <0>here</0>." msgid "Importing your Trello boards into Kan is easy. You can follow our step-by-step guide <0>here</0>."
msgstr "Importare le tue bacheche Trello in Kan è facile. Puoi seguire la nostra guida passo-passo <0>qui</0>." msgstr "Importare le tue bacheche Trello in Kan è facile. Puoi seguire la nostra guida passo-passo <0>qui</0>."
#: src/components/CommandPallette.tsx:168
msgid "in"
msgstr "in"
#: src/views/boards/components/TemplateBoards.tsx:16 #: src/views/boards/components/TemplateBoards.tsx:16
#: src/views/boards/components/TemplateBoards.tsx:22 #: src/views/boards/components/TemplateBoards.tsx:22
#: src/views/boards/components/TemplateBoards.tsx:45 #: src/views/boards/components/TemplateBoards.tsx:45
@@ -1055,20 +1059,24 @@ msgstr "Invito non valido"
msgid "Invite" msgid "Invite"
msgstr "Invita" msgstr "Invita"
#: src/views/members/components/InviteMemberForm.tsx:192 #: src/views/members/components/InviteMemberForm.tsx:202
msgid "Invite link copied" msgid "Invite link copied"
msgstr "Link di invito copiato" msgstr "Link di invito copiato"
#: src/views/members/components/InviteMemberForm.tsx:193 #: src/views/members/components/InviteMemberForm.tsx:203
msgid "Invite link copied to clipboard" msgid "Invite link copied to clipboard"
msgstr "Link di invito copiato negli appunti" msgstr "Link di invito copiato negli appunti"
#: src/views/members/components/InviteMemberForm.tsx:123
msgid "Invite links require a Team or Pro subscription. Please upgrade your workspace."
msgstr "I link di invito richiedono un abbonamento Team o Pro. Per favore aggiorna il tuo spazio di lavoro."
#: src/views/card/components/MemberSelector.tsx:111 #: src/views/card/components/MemberSelector.tsx:111
#: src/views/members/components/InviteMemberForm.tsx:353 #: src/views/members/components/InviteMemberForm.tsx:365
msgid "Invite member" msgid "Invite member"
msgstr "Invita membro" msgstr "Invita membro"
#: src/views/members/components/InviteMemberForm.tsx:319 #: src/views/members/components/InviteMemberForm.tsx:329
msgid "Inviting members requires a Team Plan. You'll be redirected to upgrade your workspace." msgid "Inviting members requires a Team Plan. You'll be redirected to upgrade your workspace."
msgstr "L'invito di membri richiede un Piano Team. Sarai reindirizzato per aggiornare il tuo spazio di lavoro." msgstr "L'invito di membri richiede un Piano Team. Sarai reindirizzato per aggiornare il tuo spazio di lavoro."
@@ -1203,7 +1211,7 @@ msgstr "Membri | {0}"
msgid "Monthly" msgid "Monthly"
msgstr "Mensile" msgstr "Mensile"
#: src/views/members/components/InviteMemberForm.tsx:149 #: src/views/members/components/InviteMemberForm.tsx:159
msgid "monthly billing" msgid "monthly billing"
msgstr "fatturazione mensile" msgstr "fatturazione mensile"
@@ -1299,6 +1307,10 @@ msgstr "Nessuna carta di credito richiesta"
msgid "No lists" msgid "No lists"
msgstr "Nessuna lista" msgstr "Nessuna lista"
#: src/components/CommandPallette.tsx:184
msgid "No results found for \"{debouncedQuery}\"."
msgstr "Nessun risultato trovato per \"{debouncedQuery}\"."
#: src/views/boards/components/TemplateBoards.tsx:65 #: src/views/boards/components/TemplateBoards.tsx:65
msgid "Offer" msgid "Offer"
msgstr "Offerta" msgstr "Offerta"
@@ -1422,7 +1434,7 @@ msgstr "Seleziona un file da caricare."
#: src/views/card/index.tsx:173 #: src/views/card/index.tsx:173
#: src/views/members/components/DeleteMemberConfirmation.tsx:28 #: src/views/members/components/DeleteMemberConfirmation.tsx:28
#: src/views/members/components/InviteMemberForm.tsx:104 #: src/views/members/components/InviteMemberForm.tsx:104
#: src/views/members/components/InviteMemberForm.tsx:224 #: src/views/members/components/InviteMemberForm.tsx:234
#: src/views/settings/components/Avatar.tsx:78 #: src/views/settings/components/Avatar.tsx:78
#: src/views/settings/components/Avatar.tsx:219 #: src/views/settings/components/Avatar.tsx:219
#: src/views/settings/components/DeleteAccountConfirmation.tsx:40 #: src/views/settings/components/DeleteAccountConfirmation.tsx:40
@@ -1435,8 +1447,8 @@ msgstr "Seleziona un file da caricare."
msgid "Please try again later, or contact customer support." msgid "Please try again later, or contact customer support."
msgstr "Riprova più tardi o contatta l'assistenza clienti." msgstr "Riprova più tardi o contatta l'assistenza clienti."
#: src/views/members/components/InviteMemberForm.tsx:120 #: src/views/members/components/InviteMemberForm.tsx:129
#: src/views/members/components/InviteMemberForm.tsx:135 #: src/views/members/components/InviteMemberForm.tsx:145
msgid "Please try again later." msgid "Please try again later."
msgstr "Riprova più tardi." msgstr "Riprova più tardi."
@@ -1463,7 +1475,7 @@ msgstr "Privato"
msgid "Pro Plan" msgid "Pro Plan"
msgstr "Piano Pro" msgstr "Piano Pro"
#: src/views/members/components/InviteMemberForm.tsx:305 #: src/views/members/components/InviteMemberForm.tsx:315
msgid "Pro Plan ∞" msgid "Pro Plan ∞"
msgstr "Piano Pro ∞" msgstr "Piano Pro ∞"
@@ -1580,6 +1592,10 @@ msgstr "Risparmia tempo con modelli di bacheca riutilizzabili."
msgid "Screening" msgid "Screening"
msgstr "Selezione" msgstr "Selezione"
#: src/components/CommandPallette.tsx:104
msgid "Search boards and cards..."
msgstr "Cerca bacheche e schede..."
#: src/views/boards/components/ImportBoardsForm.tsx:274 #: src/views/boards/components/ImportBoardsForm.tsx:274
msgid "Select all" msgid "Select all"
msgstr "Seleziona tutto" msgstr "Seleziona tutto"
@@ -1683,6 +1699,10 @@ msgstr "Sviluppo software"
msgid "Star on Github" msgid "Star on Github"
msgstr "Metti una stella su Github" msgstr "Metti una stella su Github"
#: src/views/members/components/InviteMemberForm.tsx:122
msgid "Subscription Required"
msgstr "Abbonamento richiesto"
#: src/components/AuthForm.tsx:212 #: src/components/AuthForm.tsx:212
#: src/components/AuthForm.tsx:229 #: src/components/AuthForm.tsx:229
msgid "Success" msgid "Success"
@@ -1704,7 +1724,7 @@ msgstr "Sostieni lo sviluppo del progetto"
msgid "System" msgid "System"
msgstr "Sistema" msgstr "Sistema"
#: src/views/members/components/InviteMemberForm.tsx:305 #: src/views/members/components/InviteMemberForm.tsx:315
#: src/views/members/index.tsx:208 #: src/views/members/index.tsx:208
msgid "Team Plan" msgid "Team Plan"
msgstr "Piano Team" msgstr "Piano Team"
@@ -1988,7 +2008,7 @@ msgstr "Passa a Pro"
msgid "Upgrade to Pro ($29/month)" msgid "Upgrade to Pro ($29/month)"
msgstr "Passa a Pro ($29/mese)" msgstr "Passa a Pro ($29/mese)"
#: src/views/members/components/InviteMemberForm.tsx:345 #: src/views/members/components/InviteMemberForm.tsx:357
msgid "Upgrade to Team Plan" msgid "Upgrade to Team Plan"
msgstr "Passa al Piano Team" msgstr "Passa al Piano Team"
@@ -2187,7 +2207,7 @@ msgstr "Hai effettuato l'accesso con successo."
msgid "You have been signed up successfully." msgid "You have been signed up successfully."
msgstr "Ti sei registrato con successo." msgstr "Ti sei registrato con successo."
#: src/views/members/components/InviteMemberForm.tsx:309 #: src/views/members/components/InviteMemberForm.tsx:319
msgid "You have unlimited seats with your Pro Plan. There is no additional charge for new members!" msgid "You have unlimited seats with your Pro Plan. There is no additional charge for new members!"
msgstr "Hai posti illimitati con il tuo Piano Pro. Non ci sono costi aggiuntivi per i nuovi membri!" msgstr "Hai posti illimitati con il tuo Piano Pro. Non ci sono costi aggiuntivi per i nuovi membri!"

File diff suppressed because one or more lines are too long

View File

@@ -36,12 +36,12 @@ msgstr "{0} labels"
msgid "{boardCount, plural, one {Import board (1)} other {Import boards ({boardCount})}}" msgid "{boardCount, plural, one {Import board (1)} other {Import boards ({boardCount})}}"
msgstr "{boardCount, plural, one {Bord importeren (1)} other {Borden importeren ({boardCount})}}" msgstr "{boardCount, plural, one {Bord importeren (1)} other {Borden importeren ({boardCount})}}"
#: src/views/members/components/InviteMemberForm.tsx:148 #: src/views/members/components/InviteMemberForm.tsx:158
#: src/views/members/components/InviteMemberForm.tsx:160 #: src/views/members/components/InviteMemberForm.tsx:170
msgid "$10/month" msgid "$10/month"
msgstr "$10/maand" msgstr "$10/maand"
#: src/views/members/components/InviteMemberForm.tsx:160 #: src/views/members/components/InviteMemberForm.tsx:170
msgid "$8/month" msgid "$8/month"
msgstr "$8/maand" msgstr "$8/maand"
@@ -101,7 +101,7 @@ msgid "Add label"
msgstr "Label toevoegen" msgstr "Label toevoegen"
#: src/views/card/components/MemberSelector.tsx:130 #: src/views/card/components/MemberSelector.tsx:130
#: src/views/members/components/InviteMemberForm.tsx:240 #: src/views/members/components/InviteMemberForm.tsx:250
msgid "Add member" msgid "Add member"
msgstr "Lid toevoegen" msgstr "Lid toevoegen"
@@ -136,7 +136,7 @@ msgstr "heeft checklistitem <0>{0}</0> toegevoegd"
msgid "added label <0>{0}</0>" msgid "added label <0>{0}</0>"
msgstr "heeft label <0>{0}</0> toegevoegd" msgstr "heeft label <0>{0}</0> toegevoegd"
#: src/views/members/components/InviteMemberForm.tsx:310 #: src/views/members/components/InviteMemberForm.tsx:320
msgid "Adding a new member will cost an additional {price} ({billingType}) per seat." msgid "Adding a new member will cost an additional {price} ({billingType}) per seat."
msgstr "Het toevoegen van een nieuw lid kost een extra {price} ({billingType}) per plaats." msgstr "Het toevoegen van een nieuw lid kost een extra {price} ({billingType}) per plaats."
@@ -164,7 +164,7 @@ msgstr "Er is een fout opgetreden bij het verbreken van de verbinding met je Tre
msgid "An unexpected error occurred. Please try again later." msgid "An unexpected error occurred. Please try again later."
msgstr "Er is een onverwachte fout opgetreden. Probeer het later opnieuw." msgstr "Er is een onverwachte fout opgetreden. Probeer het later opnieuw."
#: src/views/members/components/InviteMemberForm.tsx:294 #: src/views/members/components/InviteMemberForm.tsx:304
msgid "Anyone with this link can join your workspace" msgid "Anyone with this link can join your workspace"
msgstr "Iedereen met deze link kan deelnemen aan je werkruimte" msgstr "Iedereen met deze link kan deelnemen aan je werkruimte"
@@ -250,11 +250,11 @@ msgstr "Backlog"
msgid "Basic Kanban" msgid "Basic Kanban"
msgstr "Basis kanban" msgstr "Basis kanban"
#: src/views/members/components/InviteMemberForm.tsx:161 #: src/views/members/components/InviteMemberForm.tsx:171
msgid "billed annually" msgid "billed annually"
msgstr "jaarlijks gefactureerd" msgstr "jaarlijks gefactureerd"
#: src/views/members/components/InviteMemberForm.tsx:161 #: src/views/members/components/InviteMemberForm.tsx:171
msgid "billed monthly" msgid "billed monthly"
msgstr "maandelijks gefactureerd" msgstr "maandelijks gefactureerd"
@@ -498,7 +498,7 @@ msgstr "Maak kaart"
msgid "Create checklist" msgid "Create checklist"
msgstr "Checklist maken" msgstr "Checklist maken"
#: src/views/members/components/InviteMemberForm.tsx:334 #: src/views/members/components/InviteMemberForm.tsx:342
msgid "Create invite link" msgid "Create invite link"
msgstr "Uitnodigingslink maken" msgstr "Uitnodigingslink maken"
@@ -528,7 +528,7 @@ msgid "Create new list"
msgstr "Maak nieuwe lijst" msgstr "Maak nieuwe lijst"
#: src/components/NewWorkspaceForm.tsx:384 #: src/components/NewWorkspaceForm.tsx:384
#: src/components/WorkspaceMenu.tsx:116 #: src/components/WorkspaceMenu.tsx:149
msgid "Create workspace" msgid "Create workspace"
msgstr "Werkruimte maken" msgstr "Werkruimte maken"
@@ -569,7 +569,7 @@ msgstr "Klantenservice"
msgid "Dark" msgid "Dark"
msgstr "Donker" msgstr "Donker"
#: src/views/members/components/InviteMemberForm.tsx:333 #: src/views/members/components/InviteMemberForm.tsx:341
msgid "Deactivate invite link" msgid "Deactivate invite link"
msgstr "Uitnodigingslink deactiveren" msgstr "Uitnodigingslink deactiveren"
@@ -709,7 +709,7 @@ msgstr "Bewerken"
msgid "email" msgid "email"
msgstr "e-mail" msgstr "e-mail"
#: src/views/members/components/InviteMemberForm.tsx:255 #: src/views/members/components/InviteMemberForm.tsx:265
msgid "Email" msgid "Email"
msgstr "E-mail" msgstr "E-mail"
@@ -741,7 +741,7 @@ msgstr "Voer je nieuwe wachtwoord in"
msgid "Enter your password" msgid "Enter your password"
msgstr "Voer je wachtwoord in" msgstr "Voer je wachtwoord in"
#: src/views/members/components/InviteMemberForm.tsx:198 #: src/views/members/components/InviteMemberForm.tsx:208
msgid "Error" msgid "Error"
msgstr "Fout" msgstr "Fout"
@@ -749,11 +749,11 @@ msgstr "Fout"
msgid "Error Changing Password" msgid "Error Changing Password"
msgstr "Fout bij wijzigen wachtwoord" msgstr "Fout bij wijzigen wachtwoord"
#: src/views/members/components/InviteMemberForm.tsx:119 #: src/views/members/components/InviteMemberForm.tsx:128
msgid "Error creating invite link" msgid "Error creating invite link"
msgstr "Fout bij het maken van uitnodigingslink" msgstr "Fout bij het maken van uitnodigingslink"
#: src/views/members/components/InviteMemberForm.tsx:134 #: src/views/members/components/InviteMemberForm.tsx:144
msgid "Error deactivating invite link" msgid "Error deactivating invite link"
msgstr "Fout bij het deactiveren van uitnodigingslink" msgstr "Fout bij het deactiveren van uitnodigingslink"
@@ -798,7 +798,7 @@ msgstr "Fout bij bijwerken naam werkruimte"
msgid "Error updating workspace URL" msgid "Error updating workspace URL"
msgstr "Fout bij het bijwerken van werkruimte-URL" msgstr "Fout bij het bijwerken van werkruimte-URL"
#: src/views/members/components/InviteMemberForm.tsx:223 #: src/views/members/components/InviteMemberForm.tsx:233
#: src/views/settings/components/UpgradeToProConfirmation.tsx:41 #: src/views/settings/components/UpgradeToProConfirmation.tsx:41
msgid "Error upgrading subscription" msgid "Error upgrading subscription"
msgstr "Fout bij het upgraden van abonnement" msgstr "Fout bij het upgraden van abonnement"
@@ -828,7 +828,7 @@ msgstr "Uitvoering"
msgid "Failed to accept invitation. Please try again later, or contact customer support." msgid "Failed to accept invitation. Please try again later, or contact customer support."
msgstr "Uitnodiging accepteren mislukt. Probeer het later opnieuw of neem contact op met de klantenservice." msgstr "Uitnodiging accepteren mislukt. Probeer het later opnieuw of neem contact op met de klantenservice."
#: src/views/members/components/InviteMemberForm.tsx:199 #: src/views/members/components/InviteMemberForm.tsx:209
msgid "Failed to copy invite link" msgid "Failed to copy invite link"
msgstr "Kopiëren van uitnodigingslink mislukt" msgstr "Kopiëren van uitnodigingslink mislukt"
@@ -881,7 +881,7 @@ msgstr "Voor duurzaamheid op lange termijn erkennen we dat alle goede open sourc
msgid "Free" msgid "Free"
msgstr "Gratis" msgstr "Gratis"
#: src/views/members/components/InviteMemberForm.tsx:316 #: src/views/members/components/InviteMemberForm.tsx:326
#: src/views/members/index.tsx:209 #: src/views/members/index.tsx:209
msgid "Free Plan" msgid "Free Plan"
msgstr "Gratis plan" msgstr "Gratis plan"
@@ -1024,6 +1024,10 @@ msgstr "Importeren vanuit Trello"
msgid "Importing your Trello boards into Kan is easy. You can follow our step-by-step guide <0>here</0>." msgid "Importing your Trello boards into Kan is easy. You can follow our step-by-step guide <0>here</0>."
msgstr "Het importeren van je Trello-borden naar Kan is eenvoudig. Je kunt onze stap-voor-stap handleiding <0>hier</0> volgen." msgstr "Het importeren van je Trello-borden naar Kan is eenvoudig. Je kunt onze stap-voor-stap handleiding <0>hier</0> volgen."
#: src/components/CommandPallette.tsx:168
msgid "in"
msgstr "in"
#: src/views/boards/components/TemplateBoards.tsx:16 #: src/views/boards/components/TemplateBoards.tsx:16
#: src/views/boards/components/TemplateBoards.tsx:22 #: src/views/boards/components/TemplateBoards.tsx:22
#: src/views/boards/components/TemplateBoards.tsx:45 #: src/views/boards/components/TemplateBoards.tsx:45
@@ -1055,20 +1059,24 @@ msgstr "Ongeldige uitnodiging"
msgid "Invite" msgid "Invite"
msgstr "Uitnodigen" msgstr "Uitnodigen"
#: src/views/members/components/InviteMemberForm.tsx:192 #: src/views/members/components/InviteMemberForm.tsx:202
msgid "Invite link copied" msgid "Invite link copied"
msgstr "Uitnodigingslink gekopieerd" msgstr "Uitnodigingslink gekopieerd"
#: src/views/members/components/InviteMemberForm.tsx:193 #: src/views/members/components/InviteMemberForm.tsx:203
msgid "Invite link copied to clipboard" msgid "Invite link copied to clipboard"
msgstr "Uitnodigingslink gekopieerd naar klembord" msgstr "Uitnodigingslink gekopieerd naar klembord"
#: src/views/members/components/InviteMemberForm.tsx:123
msgid "Invite links require a Team or Pro subscription. Please upgrade your workspace."
msgstr "Uitnodigingslinks vereisen een Team- of Pro-abonnement. Upgrade je werkruimte."
#: src/views/card/components/MemberSelector.tsx:111 #: src/views/card/components/MemberSelector.tsx:111
#: src/views/members/components/InviteMemberForm.tsx:353 #: src/views/members/components/InviteMemberForm.tsx:365
msgid "Invite member" msgid "Invite member"
msgstr "Lid uitnodigen" msgstr "Lid uitnodigen"
#: src/views/members/components/InviteMemberForm.tsx:319 #: src/views/members/components/InviteMemberForm.tsx:329
msgid "Inviting members requires a Team Plan. You'll be redirected to upgrade your workspace." msgid "Inviting members requires a Team Plan. You'll be redirected to upgrade your workspace."
msgstr "Voor het uitnodigen van leden is een teamplan vereist. Je wordt doorgestuurd om je werkruimte te upgraden." msgstr "Voor het uitnodigen van leden is een teamplan vereist. Je wordt doorgestuurd om je werkruimte te upgraden."
@@ -1203,7 +1211,7 @@ msgstr "Leden | {0}"
msgid "Monthly" msgid "Monthly"
msgstr "Maandelijks" msgstr "Maandelijks"
#: src/views/members/components/InviteMemberForm.tsx:149 #: src/views/members/components/InviteMemberForm.tsx:159
msgid "monthly billing" msgid "monthly billing"
msgstr "maandelijkse facturering" msgstr "maandelijkse facturering"
@@ -1299,6 +1307,10 @@ msgstr "Geen creditcard vereist"
msgid "No lists" msgid "No lists"
msgstr "Geen lijsten" msgstr "Geen lijsten"
#: src/components/CommandPallette.tsx:184
msgid "No results found for \"{debouncedQuery}\"."
msgstr "Geen resultaten gevonden voor \"{debouncedQuery}\"."
#: src/views/boards/components/TemplateBoards.tsx:65 #: src/views/boards/components/TemplateBoards.tsx:65
msgid "Offer" msgid "Offer"
msgstr "Aanbod" msgstr "Aanbod"
@@ -1422,7 +1434,7 @@ msgstr "Selecteer een bestand om te uploaden."
#: src/views/card/index.tsx:173 #: src/views/card/index.tsx:173
#: src/views/members/components/DeleteMemberConfirmation.tsx:28 #: src/views/members/components/DeleteMemberConfirmation.tsx:28
#: src/views/members/components/InviteMemberForm.tsx:104 #: src/views/members/components/InviteMemberForm.tsx:104
#: src/views/members/components/InviteMemberForm.tsx:224 #: src/views/members/components/InviteMemberForm.tsx:234
#: src/views/settings/components/Avatar.tsx:78 #: src/views/settings/components/Avatar.tsx:78
#: src/views/settings/components/Avatar.tsx:219 #: src/views/settings/components/Avatar.tsx:219
#: src/views/settings/components/DeleteAccountConfirmation.tsx:40 #: src/views/settings/components/DeleteAccountConfirmation.tsx:40
@@ -1435,8 +1447,8 @@ msgstr "Selecteer een bestand om te uploaden."
msgid "Please try again later, or contact customer support." msgid "Please try again later, or contact customer support."
msgstr "Probeer het later opnieuw of neem contact op met de klantenservice." msgstr "Probeer het later opnieuw of neem contact op met de klantenservice."
#: src/views/members/components/InviteMemberForm.tsx:120 #: src/views/members/components/InviteMemberForm.tsx:129
#: src/views/members/components/InviteMemberForm.tsx:135 #: src/views/members/components/InviteMemberForm.tsx:145
msgid "Please try again later." msgid "Please try again later."
msgstr "Probeer het later opnieuw." msgstr "Probeer het later opnieuw."
@@ -1463,7 +1475,7 @@ msgstr "Privé"
msgid "Pro Plan" msgid "Pro Plan"
msgstr "Pro Plan" msgstr "Pro Plan"
#: src/views/members/components/InviteMemberForm.tsx:305 #: src/views/members/components/InviteMemberForm.tsx:315
msgid "Pro Plan ∞" msgid "Pro Plan ∞"
msgstr "Pro Plan ∞" msgstr "Pro Plan ∞"
@@ -1580,6 +1592,10 @@ msgstr "Bespaar tijd met herbruikbare bordsjablonen."
msgid "Screening" msgid "Screening"
msgstr "Screening" msgstr "Screening"
#: src/components/CommandPallette.tsx:104
msgid "Search boards and cards..."
msgstr "Zoek in borden en kaarten..."
#: src/views/boards/components/ImportBoardsForm.tsx:274 #: src/views/boards/components/ImportBoardsForm.tsx:274
msgid "Select all" msgid "Select all"
msgstr "Alles selecteren" msgstr "Alles selecteren"
@@ -1683,6 +1699,10 @@ msgstr "Softwareontwikkeling"
msgid "Star on Github" msgid "Star on Github"
msgstr "Star op Github" msgstr "Star op Github"
#: src/views/members/components/InviteMemberForm.tsx:122
msgid "Subscription Required"
msgstr "Abonnement vereist"
#: src/components/AuthForm.tsx:212 #: src/components/AuthForm.tsx:212
#: src/components/AuthForm.tsx:229 #: src/components/AuthForm.tsx:229
msgid "Success" msgid "Success"
@@ -1704,7 +1724,7 @@ msgstr "Ondersteun de ontwikkeling van het project"
msgid "System" msgid "System"
msgstr "Systeem" msgstr "Systeem"
#: src/views/members/components/InviteMemberForm.tsx:305 #: src/views/members/components/InviteMemberForm.tsx:315
#: src/views/members/index.tsx:208 #: src/views/members/index.tsx:208
msgid "Team Plan" msgid "Team Plan"
msgstr "Teamplan" msgstr "Teamplan"
@@ -1988,7 +2008,7 @@ msgstr "Upgraden naar Pro"
msgid "Upgrade to Pro ($29/month)" msgid "Upgrade to Pro ($29/month)"
msgstr "Upgrade naar Pro ($29/maand)" msgstr "Upgrade naar Pro ($29/maand)"
#: src/views/members/components/InviteMemberForm.tsx:345 #: src/views/members/components/InviteMemberForm.tsx:357
msgid "Upgrade to Team Plan" msgid "Upgrade to Team Plan"
msgstr "Upgraden naar teamplan" msgstr "Upgraden naar teamplan"
@@ -2187,7 +2207,7 @@ msgstr "Je bent succesvol ingelogd."
msgid "You have been signed up successfully." msgid "You have been signed up successfully."
msgstr "Je bent succesvol geregistreerd." msgstr "Je bent succesvol geregistreerd."
#: src/views/members/components/InviteMemberForm.tsx:309 #: src/views/members/components/InviteMemberForm.tsx:319
msgid "You have unlimited seats with your Pro Plan. There is no additional charge for new members!" msgid "You have unlimited seats with your Pro Plan. There is no additional charge for new members!"
msgstr "Je hebt onbeperkte plaatsen met je Pro Plan. Er zijn geen extra kosten voor nieuwe leden!" msgstr "Je hebt onbeperkte plaatsen met je Pro Plan. Er zijn geen extra kosten voor nieuwe leden!"

File diff suppressed because one or more lines are too long

View File

@@ -36,12 +36,12 @@ msgstr "{0} метки"
msgid "{boardCount, plural, one {Import board (1)} other {Import boards ({boardCount})}}" msgid "{boardCount, plural, one {Import board (1)} other {Import boards ({boardCount})}}"
msgstr "{boardCount, plural, one {Импортировать доску (1)} other {Импортировать доски ({boardCount})}}" msgstr "{boardCount, plural, one {Импортировать доску (1)} other {Импортировать доски ({boardCount})}}"
#: src/views/members/components/InviteMemberForm.tsx:148 #: src/views/members/components/InviteMemberForm.tsx:158
#: src/views/members/components/InviteMemberForm.tsx:160 #: src/views/members/components/InviteMemberForm.tsx:170
msgid "$10/month" msgid "$10/month"
msgstr "$10/месяц" msgstr "$10/месяц"
#: src/views/members/components/InviteMemberForm.tsx:160 #: src/views/members/components/InviteMemberForm.tsx:170
msgid "$8/month" msgid "$8/month"
msgstr "$8/месяц" msgstr "$8/месяц"
@@ -101,7 +101,7 @@ msgid "Add label"
msgstr "Добавить метку" msgstr "Добавить метку"
#: src/views/card/components/MemberSelector.tsx:130 #: src/views/card/components/MemberSelector.tsx:130
#: src/views/members/components/InviteMemberForm.tsx:240 #: src/views/members/components/InviteMemberForm.tsx:250
msgid "Add member" msgid "Add member"
msgstr "Добавить участника" msgstr "Добавить участника"
@@ -136,7 +136,7 @@ msgstr "добавлен элемент контрольного списка <0
msgid "added label <0>{0}</0>" msgid "added label <0>{0}</0>"
msgstr "добавлена метка <0>{0}</0>" msgstr "добавлена метка <0>{0}</0>"
#: src/views/members/components/InviteMemberForm.tsx:310 #: src/views/members/components/InviteMemberForm.tsx:320
msgid "Adding a new member will cost an additional {price} ({billingType}) per seat." msgid "Adding a new member will cost an additional {price} ({billingType}) per seat."
msgstr "Добавление нового участника будет стоить дополнительно {price} ({billingType}) за место." msgstr "Добавление нового участника будет стоить дополнительно {price} ({billingType}) за место."
@@ -164,7 +164,7 @@ msgstr "Произошла ошибка при отключении вашего
msgid "An unexpected error occurred. Please try again later." msgid "An unexpected error occurred. Please try again later."
msgstr "Произошла непредвиденная ошибка. Пожалуйста, попробуйте позже." msgstr "Произошла непредвиденная ошибка. Пожалуйста, попробуйте позже."
#: src/views/members/components/InviteMemberForm.tsx:294 #: src/views/members/components/InviteMemberForm.tsx:304
msgid "Anyone with this link can join your workspace" msgid "Anyone with this link can join your workspace"
msgstr "Любой, у кого есть эта ссылка, может присоединиться к вашему рабочему пространству" msgstr "Любой, у кого есть эта ссылка, может присоединиться к вашему рабочему пространству"
@@ -250,11 +250,11 @@ msgstr "Бэклог"
msgid "Basic Kanban" msgid "Basic Kanban"
msgstr "Базовый Канбан" msgstr "Базовый Канбан"
#: src/views/members/components/InviteMemberForm.tsx:161 #: src/views/members/components/InviteMemberForm.tsx:171
msgid "billed annually" msgid "billed annually"
msgstr "выставляется счет ежегодно" msgstr "выставляется счет ежегодно"
#: src/views/members/components/InviteMemberForm.tsx:161 #: src/views/members/components/InviteMemberForm.tsx:171
msgid "billed monthly" msgid "billed monthly"
msgstr "выставляется счет ежемесячно" msgstr "выставляется счет ежемесячно"
@@ -498,7 +498,7 @@ msgstr "Создать карточку"
msgid "Create checklist" msgid "Create checklist"
msgstr "Создать чек-лист" msgstr "Создать чек-лист"
#: src/views/members/components/InviteMemberForm.tsx:334 #: src/views/members/components/InviteMemberForm.tsx:342
msgid "Create invite link" msgid "Create invite link"
msgstr "Создать ссылку-приглашение" msgstr "Создать ссылку-приглашение"
@@ -528,7 +528,7 @@ msgid "Create new list"
msgstr "Создать новый список" msgstr "Создать новый список"
#: src/components/NewWorkspaceForm.tsx:384 #: src/components/NewWorkspaceForm.tsx:384
#: src/components/WorkspaceMenu.tsx:116 #: src/components/WorkspaceMenu.tsx:149
msgid "Create workspace" msgid "Create workspace"
msgstr "Создать рабочее пространство" msgstr "Создать рабочее пространство"
@@ -569,7 +569,7 @@ msgstr "Служба поддержки"
msgid "Dark" msgid "Dark"
msgstr "Тёмный" msgstr "Тёмный"
#: src/views/members/components/InviteMemberForm.tsx:333 #: src/views/members/components/InviteMemberForm.tsx:341
msgid "Deactivate invite link" msgid "Deactivate invite link"
msgstr "Деактивировать ссылку-приглашение" msgstr "Деактивировать ссылку-приглашение"
@@ -709,7 +709,7 @@ msgstr "Редактирование"
msgid "email" msgid "email"
msgstr "email" msgstr "email"
#: src/views/members/components/InviteMemberForm.tsx:255 #: src/views/members/components/InviteMemberForm.tsx:265
msgid "Email" msgid "Email"
msgstr "Email" msgstr "Email"
@@ -741,7 +741,7 @@ msgstr "Введите ваш новый пароль"
msgid "Enter your password" msgid "Enter your password"
msgstr "Введите ваш пароль" msgstr "Введите ваш пароль"
#: src/views/members/components/InviteMemberForm.tsx:198 #: src/views/members/components/InviteMemberForm.tsx:208
msgid "Error" msgid "Error"
msgstr "Ошибка" msgstr "Ошибка"
@@ -749,11 +749,11 @@ msgstr "Ошибка"
msgid "Error Changing Password" msgid "Error Changing Password"
msgstr "Ошибка при изменении пароля" msgstr "Ошибка при изменении пароля"
#: src/views/members/components/InviteMemberForm.tsx:119 #: src/views/members/components/InviteMemberForm.tsx:128
msgid "Error creating invite link" msgid "Error creating invite link"
msgstr "Ошибка при создании ссылки приглашения" msgstr "Ошибка при создании ссылки приглашения"
#: src/views/members/components/InviteMemberForm.tsx:134 #: src/views/members/components/InviteMemberForm.tsx:144
msgid "Error deactivating invite link" msgid "Error deactivating invite link"
msgstr "Ошибка при деактивации ссылки приглашения" msgstr "Ошибка при деактивации ссылки приглашения"
@@ -798,7 +798,7 @@ msgstr "Ошибка при обновлении имени рабочей об
msgid "Error updating workspace URL" msgid "Error updating workspace URL"
msgstr "Ошибка при обновлении URL рабочей области" msgstr "Ошибка при обновлении URL рабочей области"
#: src/views/members/components/InviteMemberForm.tsx:223 #: src/views/members/components/InviteMemberForm.tsx:233
#: src/views/settings/components/UpgradeToProConfirmation.tsx:41 #: src/views/settings/components/UpgradeToProConfirmation.tsx:41
msgid "Error upgrading subscription" msgid "Error upgrading subscription"
msgstr "Ошибка при обновлении подписки" msgstr "Ошибка при обновлении подписки"
@@ -828,7 +828,7 @@ msgstr "Выполнение"
msgid "Failed to accept invitation. Please try again later, or contact customer support." msgid "Failed to accept invitation. Please try again later, or contact customer support."
msgstr "Не удалось принять приглашение. Пожалуйста, попробуйте позже или свяжитесь со службой поддержки." msgstr "Не удалось принять приглашение. Пожалуйста, попробуйте позже или свяжитесь со службой поддержки."
#: src/views/members/components/InviteMemberForm.tsx:199 #: src/views/members/components/InviteMemberForm.tsx:209
msgid "Failed to copy invite link" msgid "Failed to copy invite link"
msgstr "Не удалось скопировать ссылку приглашения" msgstr "Не удалось скопировать ссылку приглашения"
@@ -881,7 +881,7 @@ msgstr "Для долгосрочной устойчивости мы призн
msgid "Free" msgid "Free"
msgstr "Бесплатно" msgstr "Бесплатно"
#: src/views/members/components/InviteMemberForm.tsx:316 #: src/views/members/components/InviteMemberForm.tsx:326
#: src/views/members/index.tsx:209 #: src/views/members/index.tsx:209
msgid "Free Plan" msgid "Free Plan"
msgstr "Бесплатный план" msgstr "Бесплатный план"
@@ -1024,6 +1024,10 @@ msgstr "Импорт из Trello"
msgid "Importing your Trello boards into Kan is easy. You can follow our step-by-step guide <0>here</0>." msgid "Importing your Trello boards into Kan is easy. You can follow our step-by-step guide <0>here</0>."
msgstr "Импортировать ваши доски Trello в Kan легко. Вы можете следовать нашему пошаговому руководству <0>здесь</0>." msgstr "Импортировать ваши доски Trello в Kan легко. Вы можете следовать нашему пошаговому руководству <0>здесь</0>."
#: src/components/CommandPallette.tsx:168
msgid "in"
msgstr "в"
#: src/views/boards/components/TemplateBoards.tsx:16 #: src/views/boards/components/TemplateBoards.tsx:16
#: src/views/boards/components/TemplateBoards.tsx:22 #: src/views/boards/components/TemplateBoards.tsx:22
#: src/views/boards/components/TemplateBoards.tsx:45 #: src/views/boards/components/TemplateBoards.tsx:45
@@ -1055,20 +1059,24 @@ msgstr "Недействительное приглашение"
msgid "Invite" msgid "Invite"
msgstr "Пригласить" msgstr "Пригласить"
#: src/views/members/components/InviteMemberForm.tsx:192 #: src/views/members/components/InviteMemberForm.tsx:202
msgid "Invite link copied" msgid "Invite link copied"
msgstr "Ссылка приглашения скопирована" msgstr "Ссылка приглашения скопирована"
#: src/views/members/components/InviteMemberForm.tsx:193 #: src/views/members/components/InviteMemberForm.tsx:203
msgid "Invite link copied to clipboard" msgid "Invite link copied to clipboard"
msgstr "Ссылка приглашения скопирована в буфер обмена" msgstr "Ссылка приглашения скопирована в буфер обмена"
#: src/views/members/components/InviteMemberForm.tsx:123
msgid "Invite links require a Team or Pro subscription. Please upgrade your workspace."
msgstr "Ссылки для приглашений требуют подписки Team или Pro. Пожалуйста, обновите ваше рабочее пространство."
#: src/views/card/components/MemberSelector.tsx:111 #: src/views/card/components/MemberSelector.tsx:111
#: src/views/members/components/InviteMemberForm.tsx:353 #: src/views/members/components/InviteMemberForm.tsx:365
msgid "Invite member" msgid "Invite member"
msgstr "Пригласить участника" msgstr "Пригласить участника"
#: src/views/members/components/InviteMemberForm.tsx:319 #: src/views/members/components/InviteMemberForm.tsx:329
msgid "Inviting members requires a Team Plan. You'll be redirected to upgrade your workspace." msgid "Inviting members requires a Team Plan. You'll be redirected to upgrade your workspace."
msgstr "Для приглашения участников необходим командный план. Вы будете перенаправлены для обновления вашего рабочего пространства." msgstr "Для приглашения участников необходим командный план. Вы будете перенаправлены для обновления вашего рабочего пространства."
@@ -1203,7 +1211,7 @@ msgstr "Участники | {0}"
msgid "Monthly" msgid "Monthly"
msgstr "Ежемесячно" msgstr "Ежемесячно"
#: src/views/members/components/InviteMemberForm.tsx:149 #: src/views/members/components/InviteMemberForm.tsx:159
msgid "monthly billing" msgid "monthly billing"
msgstr "ежемесячная оплата" msgstr "ежемесячная оплата"
@@ -1299,6 +1307,10 @@ msgstr "Кредитная карта не требуется"
msgid "No lists" msgid "No lists"
msgstr "Нет списков" msgstr "Нет списков"
#: src/components/CommandPallette.tsx:184
msgid "No results found for \"{debouncedQuery}\"."
msgstr "Результаты для запроса \"{debouncedQuery}\" не найдены."
#: src/views/boards/components/TemplateBoards.tsx:65 #: src/views/boards/components/TemplateBoards.tsx:65
msgid "Offer" msgid "Offer"
msgstr "Предложение" msgstr "Предложение"
@@ -1422,7 +1434,7 @@ msgstr "Пожалуйста, выберите файл для загрузки.
#: src/views/card/index.tsx:173 #: src/views/card/index.tsx:173
#: src/views/members/components/DeleteMemberConfirmation.tsx:28 #: src/views/members/components/DeleteMemberConfirmation.tsx:28
#: src/views/members/components/InviteMemberForm.tsx:104 #: src/views/members/components/InviteMemberForm.tsx:104
#: src/views/members/components/InviteMemberForm.tsx:224 #: src/views/members/components/InviteMemberForm.tsx:234
#: src/views/settings/components/Avatar.tsx:78 #: src/views/settings/components/Avatar.tsx:78
#: src/views/settings/components/Avatar.tsx:219 #: src/views/settings/components/Avatar.tsx:219
#: src/views/settings/components/DeleteAccountConfirmation.tsx:40 #: src/views/settings/components/DeleteAccountConfirmation.tsx:40
@@ -1435,8 +1447,8 @@ msgstr "Пожалуйста, выберите файл для загрузки.
msgid "Please try again later, or contact customer support." msgid "Please try again later, or contact customer support."
msgstr "Пожалуйста, попробуйте позже или свяжитесь со службой поддержки." msgstr "Пожалуйста, попробуйте позже или свяжитесь со службой поддержки."
#: src/views/members/components/InviteMemberForm.tsx:120 #: src/views/members/components/InviteMemberForm.tsx:129
#: src/views/members/components/InviteMemberForm.tsx:135 #: src/views/members/components/InviteMemberForm.tsx:145
msgid "Please try again later." msgid "Please try again later."
msgstr "Пожалуйста, попробуйте позже." msgstr "Пожалуйста, попробуйте позже."
@@ -1463,7 +1475,7 @@ msgstr "Личное"
msgid "Pro Plan" msgid "Pro Plan"
msgstr "Профессиональный план" msgstr "Профессиональный план"
#: src/views/members/components/InviteMemberForm.tsx:305 #: src/views/members/components/InviteMemberForm.tsx:315
msgid "Pro Plan ∞" msgid "Pro Plan ∞"
msgstr "Профессиональный план ∞" msgstr "Профессиональный план ∞"
@@ -1580,6 +1592,10 @@ msgstr "Экономьте время с помощью шаблонов дос
msgid "Screening" msgid "Screening"
msgstr "Отбор" msgstr "Отбор"
#: src/components/CommandPallette.tsx:104
msgid "Search boards and cards..."
msgstr "Поиск досок и карточек..."
#: src/views/boards/components/ImportBoardsForm.tsx:274 #: src/views/boards/components/ImportBoardsForm.tsx:274
msgid "Select all" msgid "Select all"
msgstr "Выбрать все" msgstr "Выбрать все"
@@ -1683,6 +1699,10 @@ msgstr "Разработка программного обеспечения"
msgid "Star on Github" msgid "Star on Github"
msgstr "Поставить звезду на Github" msgstr "Поставить звезду на Github"
#: src/views/members/components/InviteMemberForm.tsx:122
msgid "Subscription Required"
msgstr "Требуется подписка"
#: src/components/AuthForm.tsx:212 #: src/components/AuthForm.tsx:212
#: src/components/AuthForm.tsx:229 #: src/components/AuthForm.tsx:229
msgid "Success" msgid "Success"
@@ -1704,7 +1724,7 @@ msgstr "Поддержите развитие проекта"
msgid "System" msgid "System"
msgstr "Система" msgstr "Система"
#: src/views/members/components/InviteMemberForm.tsx:305 #: src/views/members/components/InviteMemberForm.tsx:315
#: src/views/members/index.tsx:208 #: src/views/members/index.tsx:208
msgid "Team Plan" msgid "Team Plan"
msgstr "Командный план" msgstr "Командный план"
@@ -1988,7 +2008,7 @@ msgstr "Обновить до Pro"
msgid "Upgrade to Pro ($29/month)" msgid "Upgrade to Pro ($29/month)"
msgstr "Обновить до Pro ($29/месяц)" msgstr "Обновить до Pro ($29/месяц)"
#: src/views/members/components/InviteMemberForm.tsx:345 #: src/views/members/components/InviteMemberForm.tsx:357
msgid "Upgrade to Team Plan" msgid "Upgrade to Team Plan"
msgstr "Обновить до командного плана" msgstr "Обновить до командного плана"
@@ -2187,7 +2207,7 @@ msgstr "Вы успешно вошли в систему."
msgid "You have been signed up successfully." msgid "You have been signed up successfully."
msgstr "Вы успешно зарегистрировались." msgstr "Вы успешно зарегистрировались."
#: src/views/members/components/InviteMemberForm.tsx:309 #: src/views/members/components/InviteMemberForm.tsx:319
msgid "You have unlimited seats with your Pro Plan. There is no additional charge for new members!" msgid "You have unlimited seats with your Pro Plan. There is no additional charge for new members!"
msgstr "В вашем профессиональном плане неограниченное количество мест. За новых участников дополнительная плата не взимается!" msgstr "В вашем профессиональном плане неограниченное количество мест. За новых участников дополнительная плата не взимается!"

File diff suppressed because one or more lines are too long

View File

@@ -409,4 +409,80 @@ export const workspaceRouter = createTRPCRouter({
isReserved: workspaceSlug?.type === "reserved", isReserved: workspaceSlug?.type === "reserved",
}; };
}), }),
search: protectedProcedure
.meta({
openapi: {
summary: "Search boards and cards in a workspace",
method: "GET",
path: "/workspaces/{workspacePublicId}/search",
description:
"Searches for boards and cards by title within a workspace",
tags: ["Workspaces"],
protect: true,
},
})
.input(
z.object({
workspacePublicId: z.string().min(12),
query: z.string().min(1).max(100),
limit: z.number().min(1).max(50).optional().default(20),
}),
)
.output(
z.array(
z.discriminatedUnion("type", [
z.object({
publicId: z.string(),
title: z.string(),
description: z.string().nullable(),
slug: z.string(),
updatedAt: z.date().nullable(),
createdAt: z.date(),
type: z.literal("board"),
}),
z.object({
publicId: z.string(),
title: z.string(),
description: z.string().nullable(),
boardPublicId: z.string(),
boardName: z.string(),
listName: z.string(),
updatedAt: z.date().nullable(),
createdAt: z.date(),
type: z.literal("card"),
}),
]),
),
)
.query(async ({ ctx, input }) => {
const userId = ctx.user?.id;
if (!userId)
throw new TRPCError({
message: `User not authenticated`,
code: "UNAUTHORIZED",
});
const workspace = await workspaceRepo.getByPublicId(
ctx.db,
input.workspacePublicId,
);
if (!workspace)
throw new TRPCError({
message: `Workspace not found`,
code: "NOT_FOUND",
});
await assertUserInWorkspace(ctx.db, userId, workspace.id);
const result = await workspaceRepo.searchBoardsAndCards(
ctx.db,
workspace.id,
input.query,
input.limit,
);
return result;
}),
}); });

View File

@@ -0,0 +1,4 @@
CREATE EXTENSION IF NOT EXISTS pg_trgm; --> statement-breakpoint
CREATE INDEX IF NOT EXISTS boards_name_trgm_idx ON board USING gin (name gin_trgm_ops);
--> statement-breakpoint
CREATE INDEX IF NOT EXISTS cards_title_trgm_idx ON card USING gin (title gin_trgm_ops);

File diff suppressed because it is too large Load Diff

View File

@@ -113,6 +113,13 @@
"when": 1758662398166, "when": 1758662398166,
"tag": "20250923211958_AddWorkspaceInviteLinks", "tag": "20250923211958_AddWorkspaceInviteLinks",
"breakpoints": true "breakpoints": true
},
{
"idx": 16,
"version": "7",
"when": 1759356096392,
"tag": "20251001220136_AddFuzzySearchSupport",
"breakpoints": true
} }
] ]
} }

View File

@@ -1,7 +1,13 @@
import { and, eq, inArray, isNull } from "drizzle-orm"; import { and, desc, eq, ilike, inArray, isNull, or, sql } from "drizzle-orm";
import type { dbClient } from "@kan/db/client"; import type { dbClient } from "@kan/db/client";
import { boards, workspaceMembers, workspaces } from "@kan/db/schema"; import {
boards,
cards,
lists,
workspaceMembers,
workspaces,
} from "@kan/db/schema";
import { generateUID } from "@kan/shared/utils"; import { generateUID } from "@kan/shared/utils";
export const create = async ( export const create = async (
@@ -274,3 +280,84 @@ export const isUserInWorkspace = async (
return result?.id !== undefined; return result?.id !== undefined;
}; };
export const searchBoardsAndCards = async (
db: dbClient,
workspaceId: number,
query: string,
limit = 20,
) => {
const searchQuery = `%${query}%`;
// Search for boards
const boardResults = await db
.select({
publicId: boards.publicId,
title: boards.name,
description: boards.description,
slug: boards.slug,
updatedAt: boards.updatedAt,
createdAt: boards.createdAt,
})
.from(boards)
.where(
and(
eq(boards.workspaceId, workspaceId),
// Combine exact and fuzzy matching
or(
ilike(boards.name, `%${query}%`), // Exact substring match
sql`similarity(${boards.name}, ${query}) > 0.2`, // Fuzzy match
),
isNull(boards.deletedAt),
),
)
.orderBy(
sql`CASE WHEN ${boards.name} ILIKE ${`%${query}%`} THEN 1 ELSE 0 END DESC`,
sql`similarity(${boards.name}, ${query}) DESC`,
desc(boards.updatedAt),
)
.limit(Math.ceil(limit * 0.4));
// Search for cards
const cardResults = await db
.select({
publicId: cards.publicId,
title: cards.title,
description: cards.description,
boardPublicId: boards.publicId,
boardName: boards.name,
listName: lists.name,
updatedAt: cards.updatedAt,
createdAt: cards.createdAt,
})
.from(cards)
.innerJoin(lists, eq(cards.listId, lists.id))
.innerJoin(boards, eq(lists.boardId, boards.id))
.where(
and(
eq(boards.workspaceId, workspaceId),
or(
ilike(cards.title, searchQuery),
sql`similarity(${cards.title}, ${query}) > 0.2`,
),
isNull(cards.deletedAt),
isNull(lists.deletedAt),
isNull(boards.deletedAt),
),
)
.orderBy(
sql`CASE WHEN ${cards.title} ILIKE ${searchQuery} THEN 1 ELSE 0 END DESC`,
sql`similarity(${cards.title}, ${query}) DESC`,
desc(cards.updatedAt),
)
.limit(Math.floor(limit * 0.6));
// Combine results
const allResults = [
...boardResults.map((board) => ({ ...board, type: "board" as const })),
...cardResults.map((card) => ({ ...card, type: "card" as const })),
];
// Ensure we don't exceed the total limit
return allResults.slice(0, limit);
};