Compare commits

..

6 Commits

Author SHA1 Message Date
Henry
f3bd3684b6 fix: show correct active workspace and truncate name 2025-09-11 23:02:19 +01:00
Henry
c2ccb6b13b fix: prevent card side menu selectors from closing unexpectedly (#174) 2025-09-11 22:48:53 +01:00
Henry
4ee1d6f2d5 fix: prevent new workspace modal from getting stuck in an open state (#173) 2025-09-11 22:29:48 +01:00
Henry
2f88366418 feat: set workspace url when creating a new workspace (#172)
* feat: add migration to remove not null constraint from referenceId on subscriptions

* feat(cloud): write worspace slug availability checks to db

* feat: add migration to add cascade set null to referenceId on subscription

* feat: update workspace and subscripton schema

* feat: add createWorkspaceSlugCheck repo func

* feat: set workspace url on creation

* chore: update translations

* refactor: various tweaks and fixes

* feat: add pro bolt to pricing notice

* feat: toggle pro subscription

* fix: hide pro subscription notice for self hosters

* feat: add pro upgrade message on members page

* feat: hide pro upgrade notice on small viewports

* feat: update workspace url placeholder
2025-09-11 20:32:02 +01:00
Henry
4f7fa1a228 fix: compile translations 2025-09-09 13:42:43 +01:00
Henry
308cb22729 feat(cloud): pro launch features (#170)
* fix: ensure workspace slug is updated on activation

* feat: open upgrade modal if upgrade=pro is in URL params

* fix: show correct skeleton loader for workspace menu when collapsed

* fix: reenable scroll when navigating back to marketing page

* feat: add launch offer notice
2025-09-09 13:07:39 +01:00
37 changed files with 9005 additions and 448 deletions

View File

@@ -55,7 +55,7 @@ checksums:
Billing%20portal/singular: dc3afa14ffe19f5920992a0c9d49d525 Billing%20portal/singular: dc3afa14ffe19f5920992a0c9d49d525
Blog%20Post/singular: 38e027f212be445dc530e427fc642a20 Blog%20Post/singular: 38e027f212be445dc530e427fc642a20
Board/singular: 101ff39aab674c033c15ab978d0d8bac Board/singular: 101ff39aab674c033c15ab978d0d8bac
Board%20analytics%20(coming%20soon)/singular: 3f648e6fe3849ee2ac5cdf410ac9ea06 Board%20analytics/singular: 336a8c70a91adc49c15266167ee84cc0
Board%20name%20cannot%20exceed%20100%20characters/singular: 985c0177744ec56d8dac84f66ec284ca Board%20name%20cannot%20exceed%20100%20characters/singular: 985c0177744ec56d8dac84f66ec284ca
Board%20name%20is%20required/singular: dbd0c6cc945ab19e702fc27f970a023b Board%20name%20is%20required/singular: dbd0c6cc945ab19e702fc27f970a023b
Board%20not%20found/singular: 5af9844595fa8aed5985066620435515 Board%20not%20found/singular: 5af9844595fa8aed5985066620435515
@@ -113,6 +113,7 @@ checksums:
Critical/singular: eb327cd411b50aee954f8d1d215d003a Critical/singular: eb327cd411b50aee954f8d1d215d003a
Current%20password%20is%20required/singular: 72536bca9598680027f2be8ce80ac280 Current%20password%20is%20required/singular: 72536bca9598680027f2be8ce80ac280
Custom%20domain/singular: b09e7a9c187b7163b4a6cfc78042fe42 Custom%20domain/singular: b09e7a9c187b7163b4a6cfc78042fe42
Custom%20URLs%20require%20upgrading%20to%20a%20Pro%20plan/singular: f7275e3b473b8f7b39dab6b37eb26fea
Custom%20workspace%20URL/singular: 7ba841d0946eb04fa3d17d74365be37b Custom%20workspace%20URL/singular: 7ba841d0946eb04fa3d17d74365be37b
Customer%20Support/singular: 50e3c77e22e41061ca85ea2f02625a2e Customer%20Support/singular: 50e3c77e22e41061ca85ea2f02625a2e
Dark/singular: 73e6e208ba628b26e90fcf6dce15e1b2 Dark/singular: 73e6e208ba628b26e90fcf6dce15e1b2
@@ -166,6 +167,7 @@ checksums:
Error%20updating%20workspace%20name/singular: 46025f42a7d5eff689e9cb8bed14a1e4 Error%20updating%20workspace%20name/singular: 46025f42a7d5eff689e9cb8bed14a1e4
Error%20updating%20workspace%20URL/singular: 9da6c012e1b512d8c7fbd812626c4675 Error%20updating%20workspace%20URL/singular: 9da6c012e1b512d8c7fbd812626c4675
Error%20upgrading%20subscription/singular: 57cc47581c7faaffb3b1721b6352b576 Error%20upgrading%20subscription/singular: 57cc47581c7faaffb3b1721b6352b576
Error%20upgrading%20to%20Pro/singular: 934c6867d9bdbe6099b2c0f5a3107f78
Error%20uploading%20profile%20image/singular: 0ba02753a797a74c6ea7b622c9f69c71 Error%20uploading%20profile%20image/singular: 0ba02753a797a74c6ea7b622c9f69c71
Everything%20in%20the%20free%20plan%2C%20plus%3A/singular: 62b44c4973b92b806c69a4b15e0256dc Everything%20in%20the%20free%20plan%2C%20plus%3A/singular: 62b44c4973b92b806c69a4b15e0256dc
Everything%20you%20need%2C%20free%20forever.%20Unlimited%20boards%2C%20unlimited%20lists%2C%20unlimited%20cards.%20Upgrade%20any%20time./singular: fa21632ab1468edf10acda2fe7b71323 Everything%20you%20need%2C%20free%20forever.%20Unlimited%20boards%2C%20unlimited%20lists%2C%20unlimited%20cards.%20Upgrade%20any%20time./singular: fa21632ab1468edf10acda2fe7b71323
@@ -231,6 +233,7 @@ checksums:
Labels%20%26%20Filters/singular: 8f0bdd6084516f8241cb613178114390 Labels%20%26%20Filters/singular: 8f0bdd6084516f8241cb613178114390
Language/singular: 277fd1a41cc237a437cd1d5e4a80463b Language/singular: 277fd1a41cc237a437cd1d5e4a80463b
Launch%20offer/singular: 624592ba2ecf647a3fe60d493c1ee71a Launch%20offer/singular: 624592ba2ecf647a3fe60d493c1ee71a
Launch%20offer%3A%20Get%20unlimited%20members%20with%20Pro/singular: 8c1be80f5b2fcc112922282afbe30287
Launch%20offer%3A%20unlimited%20seats%20for%20just%20%2429%2Fmonth%20with%20Pro/singular: 235d1cda21811c296afdc0dcc438cc24 Launch%20offer%3A%20unlimited%20seats%20for%20just%20%2429%2Fmonth%20with%20Pro/singular: 235d1cda21811c296afdc0dcc438cc24
Learning/singular: 90e91da3f870f065f2da9aa9adf53514 Learning/singular: 90e91da3f870f065f2da9aa9adf53514
Legal/singular: 00d3f08da61a21887009819cf93fb414 Legal/singular: 00d3f08da61a21887009819cf93fb414
@@ -368,6 +371,8 @@ checksums:
This%20board%20URL%20has%20already%20been%20taken/singular: 1d8b40332a031b5b77a3658e48dd51ca This%20board%20URL%20has%20already%20been%20taken/singular: 1d8b40332a031b5b77a3658e48dd51ca
This%20will%20result%20in%20the%20permanent%20deletion%20of%20all%20data%20associated%20with%20this%20workspace./singular: a31141558af793635c1ddd2fa0a33499 This%20will%20result%20in%20the%20permanent%20deletion%20of%20all%20data%20associated%20with%20this%20workspace./singular: a31141558af793635c1ddd2fa0a33499
This%20will%20result%20in%20the%20permanent%20deletion%20of%20all%20data%20associated%20with%20your%20account./singular: b49224632bd6c3b7f5e462912aeb1081 This%20will%20result%20in%20the%20permanent%20deletion%20of%20all%20data%20associated%20with%20your%20account./singular: b49224632bd6c3b7f5e462912aeb1081
This%20workspace%20URL%20has%20already%20been%20taken/singular: b455329e2a71da677acab91d3a00bad6
This%20workspace%20URL%20is%20reserved/singular: 7e47c892b93d4334c1606010c06e875e
This%20workspace%20username%20has%20already%20been%20taken/singular: b7eadb89c615874f416d9658d0428c4c This%20workspace%20username%20has%20already%20been%20taken/singular: b7eadb89c615874f416d9658d0428c4c
To%20Do/singular: d60813ea824f373462471e092d136eed To%20Do/singular: d60813ea824f373462471e092d136eed
Toggle%20menu/singular: 29dea3e0b6238874f8c7a27619df8e36 Toggle%20menu/singular: 29dea3e0b6238874f8c7a27619df8e36
@@ -413,6 +418,7 @@ checksums:
updated%20the%20title%20to%20%3C0%3E%7B0%7D%3C%2F0%3E/singular: aca196d729401d8adc5c8ca9d558840e updated%20the%20title%20to%20%3C0%3E%7B0%7D%3C%2F0%3E/singular: aca196d729401d8adc5c8ca9d558840e
Upgrade/singular: 63c3b52882e0d779859307d672c178c2 Upgrade/singular: 63c3b52882e0d779859307d672c178c2
Upgrade%20to%20Pro/singular: 972773025e763ddf53273df6d37a729a Upgrade%20to%20Pro/singular: 972773025e763ddf53273df6d37a729a
Upgrade%20to%20Pro%20(%2429%2Fmonth)/singular: 9a91ea70f5eb55aac96640bf0fd7feff
Upgrade%20to%20Team%20Plan/singular: 40e2ef151266937f8bbe63b3d361f645 Upgrade%20to%20Team%20Plan/singular: 40e2ef151266937f8bbe63b3d361f645
Urgent/singular: e79afcd4398e52e10e7e8243a7eecabe Urgent/singular: e79afcd4398e52e10e7e8243a7eecabe
URL%20can%20only%20contain%20letters%2C%20numbers%2C%20and%20hyphens/singular: 875d37d2d920f98ef60a314eda8a5d9a URL%20can%20only%20contain%20letters%2C%20numbers%2C%20and%20hyphens/singular: 875d37d2d920f98ef60a314eda8a5d9a
@@ -437,6 +443,7 @@ checksums:
When%20Trello%20launched%20in%202011%2C%20it%20blew%20everyone%20away%20with%20its%20carefully%20designed%20simplicity%2C%20but%20over%20time%20(and%20atlassification)%20it%20lost%20its%20magic%20and%20grew%20into%20something%20closer%20to%20%22Jira%20Lite%22.%20This%20project%20is%20our%20attempt%20to%20recapture%20the%20original%20magic%20of%20Trello's%20simplicity%2C%20in%20open%20source./singular: 60a55e9bd16c3d1beff1a6c7633c5911 When%20Trello%20launched%20in%202011%2C%20it%20blew%20everyone%20away%20with%20its%20carefully%20designed%20simplicity%2C%20but%20over%20time%20(and%20atlassification)%20it%20lost%20its%20magic%20and%20grew%20into%20something%20closer%20to%20%22Jira%20Lite%22.%20This%20project%20is%20our%20attempt%20to%20recapture%20the%20original%20magic%20of%20Trello's%20simplicity%2C%20in%20open%20source./singular: 60a55e9bd16c3d1beff1a6c7633c5911
Why%20make%20an%20open%20source%20Trello%3F/singular: 090833338ba8c64ef7a75e0f2615b34b Why%20make%20an%20open%20source%20Trello%3F/singular: 090833338ba8c64ef7a75e0f2615b34b
Workspace/singular: b63ef0e99ee6f7fef6cbe4971ca6cf0f Workspace/singular: b63ef0e99ee6f7fef6cbe4971ca6cf0f
Workspace%20created%20successfully.%20You%20can%20upgrade%20later%20in%20settings./singular: 8bbaba9f82ff076a08185ada1ee7eb94
Workspace%20deleted/singular: bc5c267ce3f04de94ff1379cf2ca48a3 Workspace%20deleted/singular: bc5c267ce3f04de94ff1379cf2ca48a3
Workspace%20description/singular: 7159d620b7ef5c5afef734989a5be08b Workspace%20description/singular: 7159d620b7ef5c5afef734989a5be08b
Workspace%20description%20cannot%20exceed%20280%20characters/singular: d0e83b9a0304d7c36cf8c85d98783ce2 Workspace%20description%20cannot%20exceed%20280%20characters/singular: d0e83b9a0304d7c36cf8c85d98783ce2
@@ -445,10 +452,12 @@ checksums:
Workspace%20members/singular: 1857292f9567c556c781a23bd7e10544 Workspace%20members/singular: 1857292f9567c556c781a23bd7e10544
Workspace%20name/singular: 855614bbf862fd6a9f6a3e76943f92d4 Workspace%20name/singular: 855614bbf862fd6a9f6a3e76943f92d4
Workspace%20name%20cannot%20exceed%2024%20characters/singular: c8b8f79fb83abf8329cc34c1f51fcfc9 Workspace%20name%20cannot%20exceed%2024%20characters/singular: c8b8f79fb83abf8329cc34c1f51fcfc9
Workspace%20name%20is%20required/singular: b8c5162dd08c4d941bc57f9d0cbee451
Workspace%20name%20must%20be%20at%20least%203%20characters%20long/singular: e448ea97418d44b18b4c21c22b8ba779 Workspace%20name%20must%20be%20at%20least%203%20characters%20long/singular: e448ea97418d44b18b4c21c22b8ba779
Workspace%20name%20updated/singular: 3206ea410ee1ea4182b27ac0d89f92a1 Workspace%20name%20updated/singular: 3206ea410ee1ea4182b27ac0d89f92a1
Workspace%20slug%20updated/singular: 527b92711d38cb35b40741df43aef047 Workspace%20slug%20updated/singular: 527b92711d38cb35b40741df43aef047
Workspace%20URL/singular: f4397a838da0f3a44cbd3ebe408ed6c3 Workspace%20URL/singular: f4397a838da0f3a44cbd3ebe408ed6c3
workspace-url/singular: 2d034732ec536f3a2667f956fa50d394
Writing/singular: 4f5f3ee3320c252921f80c42653c5d49 Writing/singular: 4f5f3ee3320c252921f80c42653c5d49
Yearly/singular: 87f43e016c19cb25860f456549a2f431 Yearly/singular: 87f43e016c19cb25860f456549a2f431
Yes%2C%20we%20offer%20an%20forever%20free%20plan%20for%20individual%20use.%20No%20restrictions%2C%20no%20paywalls%2C%20no%20limits./singular: 963cee303d0ff13c1719f4575e774fe3 Yes%2C%20we%20offer%20an%20forever%20free%20plan%20for%20individual%20use.%20No%20restrictions%2C%20no%20paywalls%2C%20no%20limits./singular: 963cee303d0ff13c1719f4575e774fe3

View File

@@ -1,30 +1,106 @@
import { zodResolver } from "@hookform/resolvers/zod";
import { t } from "@lingui/core/macro"; import { t } from "@lingui/core/macro";
import { useEffect } from "react"; import { env } from "next-runtime-env";
import { useEffect, useState } from "react";
import { useForm } from "react-hook-form"; import { useForm } from "react-hook-form";
import { HiXMark } from "react-icons/hi2"; import {
HiBolt,
HiCheck,
HiCheckBadge,
HiInformationCircle,
HiXMark,
} from "react-icons/hi2";
import { twMerge } from "tailwind-merge";
import { z } from "zod";
import Button from "~/components/Button"; import Button from "~/components/Button";
import Input from "~/components/Input"; import Input from "~/components/Input";
import Toggle from "~/components/Toggle";
import { useDebounce } from "~/hooks/useDebounce";
import { useModal } from "~/providers/modal"; import { useModal } from "~/providers/modal";
import { usePopup } from "~/providers/popup"; import { usePopup } from "~/providers/popup";
import { useWorkspace } from "~/providers/workspace"; import { useWorkspace } from "~/providers/workspace";
import { api } from "~/utils/api"; import { api } from "~/utils/api";
import LoadingSpinner from "./LoadingSpinner";
interface FormValues { const schema = z.object({
name: string; name: z.string().min(1, { message: t`Workspace name is required` }),
} slug: z
.string()
.min(3, {
message: t`URL must be at least 3 characters long`,
})
.max(24, { message: t`URL cannot exceed 24 characters` })
.regex(/^(?![-]+$)[a-zA-Z0-9-]+$/, {
message: t`URL can only contain letters, numbers, and hyphens`,
})
.optional()
.or(z.literal("")),
});
type FormValues = z.infer<typeof schema>;
export function NewWorkspaceForm() { export function NewWorkspaceForm() {
const { closeModal } = useModal(); const { closeModal } = useModal();
const { showPopup } = usePopup(); const { showPopup } = usePopup();
const { switchWorkspace } = useWorkspace(); const { switchWorkspace, availableWorkspaces } = useWorkspace();
const { register, handleSubmit } = useForm<FormValues>(); const {
register,
handleSubmit,
formState: { errors },
watch,
trigger,
clearErrors,
setValue,
} = useForm<FormValues>({
resolver: zodResolver(schema),
defaultValues: {
name: "",
slug: "",
},
mode: "onSubmit",
});
const utils = api.useUtils(); const utils = api.useUtils();
const hasAvailableWorkspaces = availableWorkspaces.length > 0;
const isCloudEnv = env("NEXT_PUBLIC_KAN_ENV") === "cloud";
const slug = watch("slug");
const [debouncedSlug] = useDebounce(slug, 500);
const isTyping = slug !== debouncedSlug;
// Pro toggle state management
const [isProToggleEnabled, setIsProToggleEnabled] = useState(false);
const [lastAvailableSlug, setLastAvailableSlug] = useState<string>("");
// Validate slug only after debounce
useEffect(() => {
if (isTyping) {
// Clear errors while typing
clearErrors("slug");
} else if (debouncedSlug) {
// Validate after debounce
void trigger("slug");
}
}, [isTyping, debouncedSlug, trigger, clearErrors]);
const checkWorkspaceSlugAvailability =
api.workspace.checkSlugAvailability.useQuery(
{
workspaceSlug: debouncedSlug ?? "",
},
{
enabled: !!debouncedSlug && debouncedSlug.length >= 3 && !errors.slug,
},
);
const isWorkspaceSlugAvailable = checkWorkspaceSlugAvailability.data;
const createWorkspace = api.workspace.create.useMutation({ const createWorkspace = api.workspace.create.useMutation({
onSuccess: (values) => { onSuccess: async (values, variables) => {
if (values.publicId && values.name) { if (values.publicId && values.name) {
utils.workspace.all.invalidate(); void utils.workspace.all.invalidate();
switchWorkspace({ switchWorkspace({
publicId: values.publicId, publicId: values.publicId,
name: values.name, name: values.name,
@@ -33,6 +109,43 @@ export function NewWorkspaceForm() {
plan: values.plan, plan: values.plan,
role: "admin", role: "admin",
}); });
// If in cloud and Pro toggle is enabled, create checkout session for pro
if (env("NEXT_PUBLIC_KAN_ENV") === "cloud" && isProToggleEnabled) {
try {
const response = await fetch(
"/api/stripe/create_checkout_session",
{
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({
slug: slug || undefined,
workspacePublicId: values.publicId,
cancelUrl: "/settings?upgrade=pro",
successUrl: "/boards",
}),
},
);
const data = await response.json();
const url = (data as { url: string }).url;
if (url) {
window.location.href = url;
return; // Don't close modal if redirecting to checkout
}
} catch (error) {
console.error("Error creating checkout session:", error);
showPopup({
header: t`Error upgrading to Pro`,
message: t`Workspace created successfully. You can upgrade later in settings.`,
icon: "warning",
});
}
}
closeModal(); closeModal();
} }
}, },
@@ -51,12 +164,74 @@ export function NewWorkspaceForm() {
if (nameElement) nameElement.focus(); if (nameElement) nameElement.focus();
}, []); }, []);
const [shouldShowBenefits, setShouldShowBenefits] = useState(false);
const isValidSlug = slug && slug.length >= 3 && !errors.slug;
useEffect(() => {
if (
isCloudEnv &&
!checkWorkspaceSlugAvailability.isPending &&
isValidSlug
) {
const isAvailable = isWorkspaceSlugAvailable?.isAvailable === true;
setShouldShowBenefits(isAvailable);
// Automatically enable Pro toggle when slug is available
if (isAvailable) {
setIsProToggleEnabled(true);
setLastAvailableSlug(slug);
}
}
}, [
isValidSlug,
isWorkspaceSlugAvailable?.isAvailable,
checkWorkspaceSlugAvailability.isPending,
slug,
isCloudEnv,
]);
// Reset benefits when slug becomes invalid
useEffect(() => {
if (!isValidSlug) {
setShouldShowBenefits(false);
}
}, [isValidSlug]);
// Handle Pro toggle changes
const handleProToggleChange = () => {
if (isProToggleEnabled) {
// Turning off: clear the slug and disable Pro
setValue("slug", "");
setIsProToggleEnabled(false);
} else {
// Turning on: restore the last available slug if we have one
if (lastAvailableSlug) {
setValue("slug", lastAvailableSlug);
}
setIsProToggleEnabled(true);
}
};
const showProBenefits = isProToggleEnabled;
const onSubmit = (values: FormValues) => { const onSubmit = (values: FormValues) => {
// Don't submit if slug is provided but not available
if (values.slug && isWorkspaceSlugAvailable?.isAvailable === false) {
return;
}
createWorkspace.mutate({ createWorkspace.mutate({
name: values.name, name: values.name,
slug: !isCloudEnv && values.slug ? values.slug : undefined,
}); });
}; };
const isSlugAvailable =
isValidSlug &&
isWorkspaceSlugAvailable?.isAvailable &&
!isWorkspaceSlugAvailable?.isReserved;
return ( return (
<form onSubmit={handleSubmit(onSubmit)}> <form onSubmit={handleSubmit(onSubmit)}>
<div className="px-5 pt-5"> <div className="px-5 pt-5">
@@ -66,7 +241,10 @@ export function NewWorkspaceForm() {
</h2> </h2>
<button <button
type="button" type="button"
className="rounded p-1 hover:bg-light-200 focus:outline-none dark:hover:bg-dark-300" className={twMerge(
"rounded p-1 hover:bg-light-200 focus:outline-none dark:hover:bg-dark-300",
!hasAvailableWorkspaces && "invisible",
)}
onClick={(e) => { onClick={(e) => {
e.preventDefault(); e.preventDefault();
closeModal(); closeModal();
@@ -80,6 +258,7 @@ export function NewWorkspaceForm() {
id="workspace-name" id="workspace-name"
placeholder={t`Workspace name`} placeholder={t`Workspace name`}
{...register("name")} {...register("name")}
errorMessage={errors.name?.message}
onKeyDown={async (e) => { onKeyDown={async (e) => {
if (e.key === "Enter") { if (e.key === "Enter") {
e.preventDefault(); e.preventDefault();
@@ -87,10 +266,121 @@ export function NewWorkspaceForm() {
} }
}} }}
/> />
<div className="mt-4">
<Input
id="workspace-slug"
placeholder={t`workspace-url`}
{...register("slug")}
className={`${
isSlugAvailable
? "focus:ring-green-500 dark:focus:ring-green-500"
: ""
}`}
errorMessage={
errors.slug?.message ??
(isWorkspaceSlugAvailable?.isAvailable === false &&
isWorkspaceSlugAvailable?.isReserved === false
? t`This workspace URL has already been taken`
: isWorkspaceSlugAvailable?.isReserved
? t`This workspace URL is reserved`
: undefined)
}
prefix={
env("NEXT_PUBLIC_KAN_ENV") === "cloud"
? "kan.bn/"
: `${env("NEXT_PUBLIC_BASE_URL")}/`
}
iconRight={
slug && slug.length >= 3 && !errors.slug ? (
isWorkspaceSlugAvailable?.isAvailable ? (
<HiCheck className="h-4 w-4 text-green-500" />
) : checkWorkspaceSlugAvailability.isPending || isTyping ? (
<LoadingSpinner />
) : null
) : null
}
onKeyDown={async (e) => {
if (e.key === "Enter") {
e.preventDefault();
await handleSubmit(onSubmit)();
}
}}
/>
{slug && slug.length >= 3 && shouldShowBenefits && (
<div className="mt-2 flex items-center gap-1">
<HiInformationCircle className="h-4 w-4 text-dark-900" />
<p className="text-xs text-gray-500 dark:text-dark-900">
{t`Custom URLs require upgrading to a Pro plan`}
</p>
</div>
)}
</div>
{showProBenefits && (
<div className="mt-6">
<div className="rounded-md bg-light-100 p-3 text-xs text-light-900 dark:bg-dark-200 dark:text-dark-900">
<div className="space-y-3">
<div className="flex items-center space-x-3">
<HiCheckBadge className="h-[18px] w-[18px] flex-shrink-0 text-light-1000 dark:text-dark-950" />
<div className="flex items-center space-x-2">
<span className="text-xs text-neutral-900 dark:text-dark-1000">
{t`Unlimited members`}
</span>
<span className="inline-flex items-center rounded-full bg-emerald-500/10 px-2 py-0.5 text-[10px] font-medium text-emerald-600 ring-1 ring-inset ring-emerald-500/20 dark:text-emerald-400 sm:text-[10px]">
{t`Launch offer`}
</span>
</div>
</div>
<div className="flex items-center space-x-3">
<HiCheckBadge className="h-[18px] w-[18px] flex-shrink-0 text-light-1000 dark:text-dark-950" />
<span className="text-xs text-neutral-900 dark:text-dark-1000">
{t`Custom workspace URL`}
</span>
</div>
<div className="flex items-center space-x-3">
<HiCheckBadge className="h-[18px] w-[18px] flex-shrink-0 text-light-1000 dark:text-dark-950" />
<div className="flex items-center space-x-2">
<span className="text-xs text-neutral-900 dark:text-dark-1000">
{t`Board analytics`}
</span>
<span className="inline-flex items-center rounded-full bg-gray-500/10 px-2 py-0.5 text-[10px] font-medium text-gray-600 ring-1 ring-inset ring-gray-500/20 dark:text-gray-400 sm:text-[10px]">
{t`Coming soon`}
</span>
</div>
</div>
</div>
</div>
</div>
)}
</div> </div>
<div className="mt-12 flex items-center justify-end border-t border-light-600 px-5 pb-5 pt-5 dark:border-dark-600"> <div
className={twMerge(
"mt-6 flex items-center justify-end border-t border-light-600 px-5 pb-5 pt-5 dark:border-dark-600",
!showProBenefits && "mt-12",
)}
>
{/* Pro Toggle - only show in cloud environment */}
{isCloudEnv && (
<Toggle
isChecked={isProToggleEnabled}
onChange={handleProToggleChange}
label={t`Upgrade to Pro ($29/month)`}
/>
)}
<div> <div>
<Button type="submit" isLoading={createWorkspace.isPending}> <Button
type="submit"
isLoading={createWorkspace.isPending}
disabled={
createWorkspace.isPending ||
(!!slug &&
(checkWorkspaceSlugAvailability.isPending ||
isWorkspaceSlugAvailable?.isAvailable === false ||
isTyping))
}
>
{t`Create workspace`} {t`Create workspace`}
</Button> </Button>
</div> </div>

View File

@@ -44,7 +44,7 @@ export default function WorkspaceMenu({
</span> </span>
<span <span
className={twMerge( className={twMerge(
"ml-2 text-sm font-bold text-neutral-900 dark:text-dark-1000", "ml-2 truncate text-sm font-bold text-neutral-900 dark:text-dark-1000",
isCollapsed && "md:hidden", isCollapsed && "md:hidden",
)} )}
> >
@@ -87,17 +87,17 @@ export default function WorkspaceMenu({
onClick={() => switchWorkspace(availableWorkspace)} 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" 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> <div className="flex min-w-0 flex-1 items-center">
<span className="inline-flex h-5 w-5 items-center justify-center rounded-[5px] bg-indigo-700"> <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"> <span className="text-xs font-medium leading-none text-white">
{availableWorkspace.name.charAt(0).toUpperCase()} {availableWorkspace.name.charAt(0).toUpperCase()}
</span> </span>
</span> </span>
<span className="ml-2 text-xs font-medium"> <span className="ml-2 truncate text-xs font-medium">
{availableWorkspace.name} {availableWorkspace.name}
</span> </span>
</div> </div>
{workspace.name === availableWorkspace.name && ( {workspace.publicId === availableWorkspace.publicId && (
<span> <span>
<HiCheck className="h-4 w-4" aria-hidden="true" /> <HiCheck className="h-4 w-4" aria-hidden="true" />
</span> </span>

View File

@@ -148,7 +148,7 @@ msgstr "Alle Systeme funktionieren"
msgid "Already have an account? <0><1>Sign in</1></0>" msgid "Already have an account? <0><1>Sign in</1></0>"
msgstr "Du hast bereits ein Konto? <0><1>Anmelden</1></0>" msgstr "Du hast bereits ein Konto? <0><1>Anmelden</1></0>"
#: src/views/settings/index.tsx:124 #: src/views/settings/index.tsx:127
msgid "An error occurred while disconnecting your Trello account." msgid "An error occurred while disconnecting your Trello account."
msgstr "Beim Trennen deines Trello-Kontos ist ein Fehler aufgetreten." msgstr "Beim Trennen deines Trello-Kontos ist ein Fehler aufgetreten."
@@ -156,7 +156,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/settings/index.tsx:293 #: src/views/settings/index.tsx:296
msgid "API keys" msgid "API keys"
msgstr "API-Schlüssel" msgstr "API-Schlüssel"
@@ -227,11 +227,11 @@ msgid "billed monthly"
msgstr "monatlich abgerechnet" msgstr "monatlich abgerechnet"
#: src/views/boards/components/TemplateBoards.tsx:55 #: src/views/boards/components/TemplateBoards.tsx:55
#: src/views/settings/index.tsx:232 #: src/views/settings/index.tsx:235
msgid "Billing" msgid "Billing"
msgstr "Abrechnung" msgstr "Abrechnung"
#: src/views/settings/index.tsx:242 #: src/views/settings/index.tsx:245
msgid "Billing portal" msgid "Billing portal"
msgstr "Abrechnungsportal" msgstr "Abrechnungsportal"
@@ -243,9 +243,10 @@ msgstr "Blogbeitrag"
msgid "Board" msgid "Board"
msgstr "Board" msgstr "Board"
#: src/views/settings/components/UpgradeToProConfirmation.tsx:80 #: src/components/NewWorkspaceForm.tsx:346
msgid "Board analytics (coming soon)" #: src/views/settings/components/UpgradeToProConfirmation.tsx:81
msgstr "Board-Analytik (demnächst verfügbar)" msgid "Board analytics"
msgstr "Board-Analytik"
#: src/views/boards/components/NewBoardForm.tsx:21 #: src/views/boards/components/NewBoardForm.tsx:21
msgid "Board name cannot exceed 100 characters" msgid "Board name cannot exceed 100 characters"
@@ -315,7 +316,7 @@ msgstr "Fehlerbericht"
#: src/views/settings/components/ChangePasswordConfirmation.tsx:168 #: src/views/settings/components/ChangePasswordConfirmation.tsx:168
#: src/views/settings/components/DeleteAccountConfirmation.tsx:88 #: src/views/settings/components/DeleteAccountConfirmation.tsx:88
#: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:98 #: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:98
#: src/views/settings/components/UpgradeToProConfirmation.tsx:94 #: src/views/settings/components/UpgradeToProConfirmation.tsx:104
msgid "Cancel" msgid "Cancel"
msgstr "Abbrechen" msgstr "Abbrechen"
@@ -329,12 +330,12 @@ msgstr "Kartentitel"
#: src/views/settings/components/ChangePasswordConfirmation.tsx:109 #: src/views/settings/components/ChangePasswordConfirmation.tsx:109
#: src/views/settings/components/ChangePasswordConfirmation.tsx:178 #: src/views/settings/components/ChangePasswordConfirmation.tsx:178
#: src/views/settings/index.tsx:325 #: src/views/settings/index.tsx:328
#: src/views/settings/index.tsx:335 #: src/views/settings/index.tsx:338
msgid "Change Password" msgid "Change Password"
msgstr "Passwort ändern" msgstr "Passwort ändern"
#: src/views/settings/index.tsx:224 #: src/views/settings/index.tsx:227
msgid "Change the language of the app." msgid "Change the language of the app."
msgstr "Ändere die Sprache der App." msgstr "Ändere die Sprache der App."
@@ -364,7 +365,9 @@ msgstr "Code-Review"
msgid "Collaborate seamlessly with your team." msgid "Collaborate seamlessly with your team."
msgstr "Arbeite nahtlos mit deinem Team zusammen." msgstr "Arbeite nahtlos mit deinem Team zusammen."
#: src/components/NewWorkspaceForm.tsx:349
#: src/views/home/components/Features.tsx:66 #: src/views/home/components/Features.tsx:66
#: src/views/settings/components/UpgradeToProConfirmation.tsx:84
msgid "Coming soon" msgid "Coming soon"
msgstr "Demnächst verfügbar" msgstr "Demnächst verfügbar"
@@ -398,7 +401,7 @@ msgid "Confirm your new password"
msgstr "Bestätigen Sie Ihr neues Passwort" msgstr "Bestätigen Sie Ihr neues Passwort"
#: src/views/boards/components/ImportBoardsForm.tsx:157 #: src/views/boards/components/ImportBoardsForm.tsx:157
#: src/views/settings/index.tsx:269 #: src/views/settings/index.tsx:272
msgid "Connect Trello" msgid "Connect Trello"
msgstr "Trello verbinden" msgstr "Trello verbinden"
@@ -406,7 +409,7 @@ msgstr "Trello verbinden"
msgid "Connect your favorite tools to streamline your workflow." msgid "Connect your favorite tools to streamline your workflow."
msgstr "Verbinde deine Lieblingstools, um deinen Arbeitsablauf zu optimieren." msgstr "Verbinde deine Lieblingstools, um deinen Arbeitsablauf zu optimieren."
#: src/views/settings/index.tsx:256 #: src/views/settings/index.tsx:259
msgid "Connect your Trello account to import boards." msgid "Connect your Trello account to import boards."
msgstr "Verbinde dein Trello-Konto, um Boards zu importieren." msgstr "Verbinde dein Trello-Konto, um Boards zu importieren."
@@ -478,7 +481,7 @@ msgstr "Neues Label erstellen"
msgid "Create new list" msgid "Create new list"
msgstr "Neue Liste erstellen" msgstr "Neue Liste erstellen"
#: src/components/NewWorkspaceForm.tsx:94 #: src/components/NewWorkspaceForm.tsx:384
#: src/components/WorkspaceMenu.tsx:116 #: src/components/WorkspaceMenu.tsx:116
msgid "Create workspace" msgid "Create workspace"
msgstr "Arbeitsbereich erstellen" msgstr "Arbeitsbereich erstellen"
@@ -499,6 +502,11 @@ msgstr "Aktuelles Passwort ist erforderlich"
msgid "Custom domain" msgid "Custom domain"
msgstr "Benutzerdefinierte Domain" msgstr "Benutzerdefinierte Domain"
#: src/components/NewWorkspaceForm.tsx:315
msgid "Custom URLs require upgrading to a Pro plan"
msgstr "Benutzerdefinierte URLs erfordern ein Upgrade auf einen Pro-Plan"
#: src/components/NewWorkspaceForm.tsx:339
#: src/views/settings/components/UpgradeToProConfirmation.tsx:74 #: src/views/settings/components/UpgradeToProConfirmation.tsx:74
msgid "Custom workspace URL" msgid "Custom workspace URL"
msgstr "Benutzerdefinierte Workspace-URL" msgstr "Benutzerdefinierte Workspace-URL"
@@ -520,8 +528,8 @@ msgid "Delete"
msgstr "Löschen" msgstr "Löschen"
#: src/views/settings/components/DeleteAccountConfirmation.tsx:96 #: src/views/settings/components/DeleteAccountConfirmation.tsx:96
#: src/views/settings/index.tsx:343 #: src/views/settings/index.tsx:346
#: src/views/settings/index.tsx:353 #: src/views/settings/index.tsx:356
msgid "Delete account" msgid "Delete account"
msgstr "Konto löschen" msgstr "Konto löschen"
@@ -542,8 +550,8 @@ msgid "Delete list"
msgstr "Liste löschen" msgstr "Liste löschen"
#: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:106 #: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:106
#: src/views/settings/index.tsx:306 #: src/views/settings/index.tsx:309
#: src/views/settings/index.tsx:317 #: src/views/settings/index.tsx:320
msgid "Delete workspace" msgid "Delete workspace"
msgstr "Workspace löschen" msgstr "Workspace löschen"
@@ -569,7 +577,7 @@ msgstr "hat Checklistenelement <0>{0}</0> gelöscht"
msgid "Design" msgid "Design"
msgstr "Design" msgstr "Design"
#: src/views/settings/index.tsx:284 #: src/views/settings/index.tsx:287
msgid "Disconnect Trello" msgid "Disconnect Trello"
msgstr "Trello trennen" msgstr "Trello trennen"
@@ -577,7 +585,7 @@ msgstr "Trello trennen"
msgid "Discuss and collaborate on cards." msgid "Discuss and collaborate on cards."
msgstr "Diskutiere und arbeite gemeinsam an Karten." msgstr "Diskutiere und arbeite gemeinsam an Karten."
#: src/views/settings/index.tsx:173 #: src/views/settings/index.tsx:176
msgid "Display name" msgid "Display name"
msgstr "Anzeigename" msgstr "Anzeigename"
@@ -695,7 +703,7 @@ msgstr "Fehler beim Löschen des Labels"
msgid "Error deleting workspace" msgid "Error deleting workspace"
msgstr "Fehler beim Löschen des Arbeitsbereichs" msgstr "Fehler beim Löschen des Arbeitsbereichs"
#: src/views/settings/index.tsx:123 #: src/views/settings/index.tsx:126
msgid "Error disconnecting Trello" msgid "Error disconnecting Trello"
msgstr "Fehler beim Trennen von Trello" msgstr "Fehler beim Trennen von Trello"
@@ -729,6 +737,10 @@ msgstr "Fehler beim Aktualisieren der Workspace-URL"
msgid "Error upgrading subscription" msgid "Error upgrading subscription"
msgstr "Fehler beim Upgrade des Abonnements" msgstr "Fehler beim Upgrade des Abonnements"
#: src/components/NewWorkspaceForm.tsx:142
msgid "Error upgrading to Pro"
msgstr "Fehler beim Upgrade auf Pro"
#: src/views/settings/components/Avatar.tsx:56 #: src/views/settings/components/Avatar.tsx:56
#: src/views/settings/components/Avatar.tsx:97 #: src/views/settings/components/Avatar.tsx:97
msgid "Error uploading profile image" msgid "Error uploading profile image"
@@ -796,7 +808,7 @@ msgid "Free"
msgstr "Kostenlos" msgstr "Kostenlos"
#: src/views/members/components/InviteMemberForm.tsx:193 #: src/views/members/components/InviteMemberForm.tsx:193
#: src/views/members/index.tsx:189 #: src/views/members/index.tsx:208
msgid "Free Plan" msgid "Free Plan"
msgstr "Kostenloser Plan" msgstr "Kostenloser Plan"
@@ -955,7 +967,7 @@ msgstr "Vorstellungsgespräch"
msgid "Invalid email address" msgid "Invalid email address"
msgstr "Ungültige E-Mail-Adresse" msgstr "Ungültige E-Mail-Adresse"
#: src/views/members/index.tsx:201 #: src/views/members/index.tsx:221
msgid "Invite" msgid "Invite"
msgstr "Einladen" msgstr "Einladen"
@@ -999,15 +1011,20 @@ msgstr "Labels"
msgid "Labels & Filters" msgid "Labels & Filters"
msgstr "Labels & Filter" msgstr "Labels & Filter"
#: src/views/settings/index.tsx:221 #: src/views/settings/index.tsx:224
msgid "Language" msgid "Language"
msgstr "Sprache" msgstr "Sprache"
#: src/components/NewWorkspaceForm.tsx:332
#: src/views/settings/components/UpgradeToProConfirmation.tsx:67 #: src/views/settings/components/UpgradeToProConfirmation.tsx:67
msgid "Launch offer" msgid "Launch offer"
msgstr "Einführungsangebot" msgstr "Einführungsangebot"
#: src/views/home/components/Pricing.tsx:98 #: src/views/members/index.tsx:191
msgid "Launch offer: Get unlimited members with Pro"
msgstr "Einführungsangebot: Erhalten Sie unbegrenzte Mitglieder mit Pro"
#: src/views/home/components/Pricing.tsx:99
msgid "Launch offer: unlimited seats for just $29/month with Pro" msgid "Launch offer: unlimited seats for just $29/month with Pro"
msgstr "Einführungsangebot: unbegrenzte Plätze für nur $29/Monat mit Pro" msgstr "Einführungsangebot: unbegrenzte Plätze für nur $29/Monat mit Pro"
@@ -1076,12 +1093,12 @@ msgstr "Mittlere Priorität"
#: src/views/board/components/Filters.tsx:93 #: src/views/board/components/Filters.tsx:93
#: src/views/board/components/NewCardForm.tsx:357 #: src/views/board/components/NewCardForm.tsx:357
#: src/views/card/index.tsx:125 #: src/views/card/index.tsx:125
#: src/views/members/index.tsx:172 #: src/views/members/index.tsx:178
msgid "Members" msgid "Members"
msgstr "Mitglieder" msgstr "Mitglieder"
#. placeholder {0}: workspace.name ?? "Workspace" #. placeholder {0}: workspace.name ?? "Workspace"
#: src/views/members/index.tsx:168 #: src/views/members/index.tsx:173
msgid "Members | {0}" msgid "Members | {0}"
msgstr "Mitglieder | {0}" msgstr "Mitglieder | {0}"
@@ -1153,7 +1170,7 @@ msgstr "Neues Passwort muss sich vom aktuellen Passwort unterscheiden"
msgid "New Ticket" msgid "New Ticket"
msgstr "Neues Ticket" msgstr "Neues Ticket"
#: src/components/NewWorkspaceForm.tsx:65 #: src/components/NewWorkspaceForm.tsx:240
msgid "New workspace" msgid "New workspace"
msgstr "Neuer Workspace" msgstr "Neuer Workspace"
@@ -1189,11 +1206,11 @@ msgstr "Angebot"
msgid "Onboarding" msgid "Onboarding"
msgstr "Einarbeitung" msgstr "Einarbeitung"
#: src/views/settings/index.tsx:346 #: src/views/settings/index.tsx:349
msgid "Once you delete your account, there is no going back. This action cannot be undone." msgid "Once you delete your account, there is no going back. This action cannot be undone."
msgstr "Sobald Sie Ihr Konto löschen, gibt es kein Zurück mehr. Diese Aktion kann nicht rückgängig gemacht werden." msgstr "Sobald Sie Ihr Konto löschen, gibt es kein Zurück mehr. Diese Aktion kann nicht rückgängig gemacht werden."
#: src/views/settings/index.tsx:309 #: src/views/settings/index.tsx:312
msgid "Once you delete your workspace, there is no going back. This action cannot be undone." msgid "Once you delete your workspace, there is no going back. This action cannot be undone."
msgstr "Sobald Sie Ihren Arbeitsbereich löschen, gibt es kein Zurück mehr. Diese Aktion kann nicht rückgängig gemacht werden." msgstr "Sobald Sie Ihren Arbeitsbereich löschen, gibt es kein Zurück mehr. Diese Aktion kann nicht rückgängig gemacht werden."
@@ -1225,11 +1242,11 @@ msgstr "Passwort muss mindestens 8 Zeichen lang sein"
msgid "Passwords do not match" msgid "Passwords do not match"
msgstr "Passwörter stimmen nicht überein" msgstr "Passwörter stimmen nicht überein"
#: src/views/home/components/Pricing.tsx:101 #: src/views/home/components/Pricing.tsx:102
msgid "Payment frequency" msgid "Payment frequency"
msgstr "Zahlungshäufigkeit" msgstr "Zahlungshäufigkeit"
#: src/views/members/index.tsx:129 #: src/views/members/index.tsx:134
msgid "Pending" msgid "Pending"
msgstr "Ausstehend" msgstr "Ausstehend"
@@ -1268,7 +1285,7 @@ msgstr "Bitte wähle eine Datei zum Hochladen aus."
#: src/components/DeleteLabelConfirmation.tsx:26 #: src/components/DeleteLabelConfirmation.tsx:26
#: src/components/FeedbackModal.tsx:41 #: src/components/FeedbackModal.tsx:41
#: src/components/NewWorkspaceForm.tsx:42 #: src/components/NewWorkspaceForm.tsx:155
#: src/views/board/components/NewCardForm.tsx:174 #: src/views/board/components/NewCardForm.tsx:174
#: src/views/board/components/NewListForm.tsx:78 #: src/views/board/components/NewListForm.tsx:78
#: src/views/board/components/UpdateBoardSlugForm.tsx:72 #: src/views/board/components/UpdateBoardSlugForm.tsx:72
@@ -1312,7 +1329,7 @@ msgid "Pricing"
msgstr "Preise" msgstr "Preise"
#: src/views/home/components/Pricing.tsx:56 #: src/views/home/components/Pricing.tsx:56
#: src/views/settings/components/UpgradeToProConfirmation.tsx:86 #: src/views/settings/components/UpgradeToProConfirmation.tsx:91
msgid "Priority email support" msgid "Priority email support"
msgstr "Prioritäts-E-Mail-Support" msgstr "Prioritäts-E-Mail-Support"
@@ -1324,7 +1341,7 @@ msgstr "Datenschutzrichtlinie"
msgid "Private" msgid "Private"
msgstr "Privat" msgstr "Privat"
#: src/views/members/index.tsx:186 #: src/views/members/index.tsx:205
msgid "Pro Plan" msgid "Pro Plan"
msgstr "Pro-Plan" msgstr "Pro-Plan"
@@ -1336,7 +1353,7 @@ msgstr "Pro-Plan ∞"
msgid "Profile image updated" msgid "Profile image updated"
msgstr "Profilbild aktualisiert" msgstr "Profilbild aktualisiert"
#: src/views/settings/index.tsx:168 #: src/views/settings/index.tsx:171
msgid "Profile picture" msgid "Profile picture"
msgstr "Profilbild" msgstr "Profilbild"
@@ -1372,7 +1389,7 @@ msgstr "Remote"
msgid "Remove" msgid "Remove"
msgstr "Entfernen" msgstr "Entfernen"
#: src/views/members/index.tsx:143 #: src/views/members/index.tsx:148
msgid "Remove member" msgid "Remove member"
msgstr "Mitglied entfernen" msgstr "Mitglied entfernen"
@@ -1428,7 +1445,7 @@ msgstr "Widerrufen"
msgid "Roadmap" msgid "Roadmap"
msgstr "Roadmap" msgstr "Roadmap"
#: src/views/members/index.tsx:223 #: src/views/members/index.tsx:243
msgid "Role" msgid "Role"
msgstr "Rolle" msgstr "Rolle"
@@ -1477,12 +1494,12 @@ msgid "Senior"
msgstr "Senior" msgstr "Senior"
#: src/components/SideNavigation.tsx:78 #: src/components/SideNavigation.tsx:78
#: src/views/settings/index.tsx:162 #: src/views/settings/index.tsx:165
msgid "Settings" msgid "Settings"
msgstr "Einstellungen" msgstr "Einstellungen"
#. placeholder {0}: workspace.name ?? "Workspace" #. placeholder {0}: workspace.name ?? "Workspace"
#: src/views/settings/index.tsx:158 #: src/views/settings/index.tsx:161
msgid "Settings | {0}" msgid "Settings | {0}"
msgstr "Einstellungen | {0}" msgstr "Einstellungen | {0}"
@@ -1550,7 +1567,7 @@ msgid "System"
msgstr "System" msgstr "System"
#: src/views/members/components/InviteMemberForm.tsx:182 #: src/views/members/components/InviteMemberForm.tsx:182
#: src/views/members/index.tsx:188 #: src/views/members/index.tsx:207
msgid "Team Plan" msgid "Team Plan"
msgstr "Team-Plan" msgstr "Team-Plan"
@@ -1618,6 +1635,14 @@ msgstr "Dies führt zur permanenten Löschung aller mit diesem Workspace verbund
msgid "This will result in the permanent deletion of all data associated with your account." msgid "This will result in the permanent deletion of all data associated with your account."
msgstr "Dies führt zur permanenten Löschung aller mit deinem Konto verbundenen Daten." msgstr "Dies führt zur permanenten Löschung aller mit deinem Konto verbundenen Daten."
#: src/components/NewWorkspaceForm.tsx:284
msgid "This workspace URL has already been taken"
msgstr "Diese Workspace-URL ist bereits vergeben"
#: src/components/NewWorkspaceForm.tsx:286
msgid "This workspace URL is reserved"
msgstr "Diese Workspace-URL ist reserviert"
#: src/views/settings/components/UpdateWorkspaceUrlForm.tsx:123 #: src/views/settings/components/UpdateWorkspaceUrlForm.tsx:123
msgid "This workspace username has already been taken" msgid "This workspace username has already been taken"
msgstr "Dieser Workspace-Benutzername ist bereits vergeben" msgstr "Dieser Workspace-Benutzername ist bereits vergeben"
@@ -1635,7 +1660,7 @@ msgstr "Menü umschalten"
msgid "Track all card changes with detailed activity history." msgid "Track all card changes with detailed activity history."
msgstr "Verfolge alle kartenänderungen mit detaillierter aktivitätshistorie." msgstr "Verfolge alle kartenänderungen mit detaillierter aktivitätshistorie."
#: src/views/settings/index.tsx:116 #: src/views/settings/index.tsx:119
msgid "Trello disconnected" msgid "Trello disconnected"
msgstr "Trello getrennt" msgstr "Trello getrennt"
@@ -1667,7 +1692,7 @@ msgstr "Checkliste kann nicht erstellt werden"
msgid "Unable to create list" msgid "Unable to create list"
msgstr "Liste konnte nicht erstellt werden" msgstr "Liste konnte nicht erstellt werden"
#: src/components/NewWorkspaceForm.tsx:41 #: src/components/NewWorkspaceForm.tsx:154
msgid "Unable to create workspace" msgid "Unable to create workspace"
msgstr "Workspace konnte nicht erstellt werden" msgstr "Workspace konnte nicht erstellt werden"
@@ -1766,6 +1791,7 @@ msgstr "Unbegrenzte kommentare"
msgid "Unlimited lists" msgid "Unlimited lists"
msgstr "Unbegrenzte listen" msgstr "Unbegrenzte listen"
#: src/components/NewWorkspaceForm.tsx:329
#: src/views/settings/components/UpgradeToProConfirmation.tsx:64 #: src/views/settings/components/UpgradeToProConfirmation.tsx:64
msgid "Unlimited members" msgid "Unlimited members"
msgstr "Unbegrenzte Mitglieder" msgstr "Unbegrenzte Mitglieder"
@@ -1799,15 +1825,19 @@ msgstr "hat den Titel aktualisiert"
msgid "updated the title to <0>{0}</0>" msgid "updated the title to <0>{0}</0>"
msgstr "hat den Titel in <0>{0}</0> geändert" msgstr "hat den Titel in <0>{0}</0> geändert"
#: src/views/settings/components/UpgradeToProConfirmation.tsx:99 #: src/views/settings/components/UpgradeToProConfirmation.tsx:109
msgid "Upgrade" msgid "Upgrade"
msgstr "Upgrade" msgstr "Upgrade"
#: src/views/settings/components/UpgradeToProConfirmation.tsx:52 #: src/views/settings/components/UpgradeToProConfirmation.tsx:52
#: src/views/settings/index.tsx:213 #: src/views/settings/index.tsx:216
msgid "Upgrade to Pro" msgid "Upgrade to Pro"
msgstr "Upgrade auf Pro" msgstr "Upgrade auf Pro"
#: src/components/NewWorkspaceForm.tsx:369
msgid "Upgrade to Pro ($29/month)"
msgstr "Upgrade auf Pro ($29/Monat)"
#: src/views/members/components/InviteMemberForm.tsx:224 #: src/views/members/components/InviteMemberForm.tsx:224
msgid "Upgrade to Team Plan" msgid "Upgrade to Team Plan"
msgstr "Upgrade auf Team-Plan" msgstr "Upgrade auf Team-Plan"
@@ -1817,14 +1847,17 @@ msgstr "Upgrade auf Team-Plan"
msgid "Urgent" msgid "Urgent"
msgstr "Dringend" msgstr "Dringend"
#: src/components/NewWorkspaceForm.tsx:35
#: src/views/settings/components/UpdateWorkspaceUrlForm.tsx:36 #: src/views/settings/components/UpdateWorkspaceUrlForm.tsx:36
msgid "URL can only contain letters, numbers, and hyphens" msgid "URL can only contain letters, numbers, and hyphens"
msgstr "URL darf nur Buchstaben, Zahlen und Bindestriche enthalten" msgstr "URL darf nur Buchstaben, Zahlen und Bindestriche enthalten"
#: src/components/NewWorkspaceForm.tsx:33
#: src/views/settings/components/UpdateWorkspaceUrlForm.tsx:34 #: src/views/settings/components/UpdateWorkspaceUrlForm.tsx:34
msgid "URL cannot exceed 24 characters" msgid "URL cannot exceed 24 characters"
msgstr "URL darf nicht länger als 24 Zeichen sein" msgstr "URL darf nicht länger als 24 Zeichen sein"
#: src/components/NewWorkspaceForm.tsx:31
#: src/views/settings/components/UpdateWorkspaceUrlForm.tsx:32 #: src/views/settings/components/UpdateWorkspaceUrlForm.tsx:32
msgid "URL must be at least 3 characters long" msgid "URL must be at least 3 characters long"
msgstr "URL muss mindestens 3 Zeichen lang sein" msgstr "URL muss mindestens 3 Zeichen lang sein"
@@ -1833,7 +1866,7 @@ msgstr "URL muss mindestens 3 Zeichen lang sein"
msgid "Use template" msgid "Use template"
msgstr "Vorlage verwenden" msgstr "Vorlage verwenden"
#: src/views/members/index.tsx:217 #: src/views/members/index.tsx:237
msgid "User" msgid "User"
msgstr "Benutzer" msgstr "Benutzer"
@@ -1845,11 +1878,11 @@ msgstr "Benutzer ist bereits Mitglied dieses Arbeitsbereichs"
msgid "Video" msgid "Video"
msgstr "Video" msgstr "Video"
#: src/views/settings/index.tsx:296 #: src/views/settings/index.tsx:299
msgid "View and manage your API keys." msgid "View and manage your API keys."
msgstr "API-Schlüssel anzeigen und verwalten." msgstr "API-Schlüssel anzeigen und verwalten."
#: src/views/settings/index.tsx:235 #: src/views/settings/index.tsx:238
msgid "View and manage your billing and subscription." msgid "View and manage your billing and subscription."
msgstr "Verwalte deine Abrechnung und dein Abonnement." msgstr "Verwalte deine Abrechnung und dein Abonnement."
@@ -1905,11 +1938,15 @@ msgstr "Warum ein open source Trello entwickeln?"
msgid "Workspace" msgid "Workspace"
msgstr "Arbeitsbereich" msgstr "Arbeitsbereich"
#: src/components/NewWorkspaceForm.tsx:143
msgid "Workspace created successfully. You can upgrade later in settings."
msgstr "Workspace erfolgreich erstellt. Du kannst später in den Einstellungen upgraden."
#: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:26 #: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:26
msgid "Workspace deleted" msgid "Workspace deleted"
msgstr "Workspace gelöscht" msgstr "Workspace gelöscht"
#: src/views/settings/index.tsx:199 #: src/views/settings/index.tsx:202
msgid "Workspace description" msgid "Workspace description"
msgstr "Workspace-Beschreibung" msgstr "Workspace-Beschreibung"
@@ -1930,8 +1967,8 @@ msgstr "Workspace-Beschreibung aktualisiert"
msgid "Workspace members" msgid "Workspace members"
msgstr "Workspace-mitglieder" msgstr "Workspace-mitglieder"
#: src/components/NewWorkspaceForm.tsx:81 #: src/components/NewWorkspaceForm.tsx:259
#: src/views/settings/index.tsx:180 #: src/views/settings/index.tsx:183
msgid "Workspace name" msgid "Workspace name"
msgstr "Name des Workspaces" msgstr "Name des Workspaces"
@@ -1939,6 +1976,10 @@ msgstr "Name des Workspaces"
msgid "Workspace name cannot exceed 24 characters" msgid "Workspace name cannot exceed 24 characters"
msgstr "Der Workspace-Name darf nicht länger als 24 Zeichen sein" msgstr "Der Workspace-Name darf nicht länger als 24 Zeichen sein"
#: src/components/NewWorkspaceForm.tsx:27
msgid "Workspace name is required"
msgstr "Workspace-Name ist erforderlich"
#: src/views/settings/components/UpdateWorkspaceNameForm.tsx:14 #: src/views/settings/components/UpdateWorkspaceNameForm.tsx:14
msgid "Workspace name must be at least 3 characters long" msgid "Workspace name must be at least 3 characters long"
msgstr "Der Workspace-Name muss mindestens 3 Zeichen lang sein" msgstr "Der Workspace-Name muss mindestens 3 Zeichen lang sein"
@@ -1951,10 +1992,14 @@ msgstr "Workspace-Name aktualisiert"
msgid "Workspace slug updated" msgid "Workspace slug updated"
msgstr "Workspace-Slug aktualisiert" msgstr "Workspace-Slug aktualisiert"
#: src/views/settings/index.tsx:189 #: src/views/settings/index.tsx:192
msgid "Workspace URL" msgid "Workspace URL"
msgstr "Workspace-URL" msgstr "Workspace-URL"
#: src/components/NewWorkspaceForm.tsx:273
msgid "workspace-url"
msgstr "workspace-url"
#: src/views/boards/components/TemplateBoards.tsx:30 #: src/views/boards/components/TemplateBoards.tsx:30
msgid "Writing" msgid "Writing"
msgstr "Schreiben" msgstr "Schreiben"
@@ -1967,7 +2012,7 @@ msgstr "Jährlich"
msgid "Yes, we offer an forever free plan for individual use. No restrictions, no paywalls, no limits." msgid "Yes, we offer an forever free plan for individual use. No restrictions, no paywalls, no limits."
msgstr "Ja, wir bieten einen dauerhaft kostenlosen plan für die individuelle nutzung an. Keine einschränkungen, keine paywalls, keine limits." msgstr "Ja, wir bieten einen dauerhaft kostenlosen plan für die individuelle nutzung an. Keine einschränkungen, keine paywalls, keine limits."
#: src/views/settings/index.tsx:328 #: src/views/settings/index.tsx:331
msgid "You are about to change your password." msgid "You are about to change your password."
msgstr "Sie sind dabei, Ihr Passwort zu ändern." msgstr "Sie sind dabei, Ihr Passwort zu ändern."
@@ -2015,11 +2060,11 @@ msgstr "Ihr Passwort wurde geändert."
msgid "Your profile image has been updated." msgid "Your profile image has been updated."
msgstr "Dein Profilbild wurde aktualisiert." msgstr "Dein Profilbild wurde aktualisiert."
#: src/views/settings/index.tsx:117 #: src/views/settings/index.tsx:120
msgid "Your Trello account has been disconnected." msgid "Your Trello account has been disconnected."
msgstr "Dein Trello-Konto wurde getrennt." msgstr "Dein Trello-Konto wurde getrennt."
#: src/views/settings/index.tsx:278 #: src/views/settings/index.tsx:281
msgid "Your Trello account is connected." msgid "Your Trello account is connected."
msgstr "Dein Trello-Konto ist verbunden." msgstr "Dein Trello-Konto ist verbunden."

File diff suppressed because one or more lines are too long

View File

@@ -172,7 +172,7 @@ msgstr "All systems operational"
msgid "Already have an account? <0><1>Sign in</1></0>" msgid "Already have an account? <0><1>Sign in</1></0>"
msgstr "Already have an account? <0><1>Sign in</1></0>" msgstr "Already have an account? <0><1>Sign in</1></0>"
#: src/views/settings/index.tsx:124 #: src/views/settings/index.tsx:127
msgid "An error occurred while disconnecting your Trello account." msgid "An error occurred while disconnecting your Trello account."
msgstr "An error occurred while disconnecting your Trello account." msgstr "An error occurred while disconnecting your Trello account."
@@ -180,7 +180,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/settings/index.tsx:293 #: src/views/settings/index.tsx:296
msgid "API keys" msgid "API keys"
msgstr "API keys" msgstr "API keys"
@@ -263,11 +263,11 @@ msgid "billed monthly"
msgstr "billed monthly" msgstr "billed monthly"
#: src/views/boards/components/TemplateBoards.tsx:55 #: src/views/boards/components/TemplateBoards.tsx:55
#: src/views/settings/index.tsx:232 #: src/views/settings/index.tsx:235
msgid "Billing" msgid "Billing"
msgstr "Billing" msgstr "Billing"
#: src/views/settings/index.tsx:242 #: src/views/settings/index.tsx:245
msgid "Billing portal" msgid "Billing portal"
msgstr "Billing portal" msgstr "Billing portal"
@@ -279,9 +279,15 @@ msgstr "Blog Post"
msgid "Board" msgid "Board"
msgstr "Board" msgstr "Board"
#: src/components/NewWorkspaceForm.tsx:346
#: src/views/settings/components/UpgradeToProConfirmation.tsx:81
msgid "Board analytics"
msgstr "Board analytics"
#: src/components/NewWorkspaceForm.tsx:310
#: src/views/settings/components/UpgradeToProConfirmation.tsx:80 #: src/views/settings/components/UpgradeToProConfirmation.tsx:80
msgid "Board analytics (coming soon)" #~ msgid "Board analytics (coming soon)"
msgstr "Board analytics (coming soon)" #~ msgstr "Board analytics (coming soon)"
#: src/views/boards/components/NewBoardForm.tsx:21 #: src/views/boards/components/NewBoardForm.tsx:21
msgid "Board name cannot exceed 100 characters" msgid "Board name cannot exceed 100 characters"
@@ -359,7 +365,7 @@ msgstr "Bug Report"
#: src/views/settings/components/ChangePasswordConfirmation.tsx:168 #: src/views/settings/components/ChangePasswordConfirmation.tsx:168
#: src/views/settings/components/DeleteAccountConfirmation.tsx:88 #: src/views/settings/components/DeleteAccountConfirmation.tsx:88
#: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:98 #: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:98
#: src/views/settings/components/UpgradeToProConfirmation.tsx:94 #: src/views/settings/components/UpgradeToProConfirmation.tsx:104
msgid "Cancel" msgid "Cancel"
msgstr "Cancel" msgstr "Cancel"
@@ -373,12 +379,12 @@ msgstr "Card title"
#: src/views/settings/components/ChangePasswordConfirmation.tsx:109 #: src/views/settings/components/ChangePasswordConfirmation.tsx:109
#: src/views/settings/components/ChangePasswordConfirmation.tsx:178 #: src/views/settings/components/ChangePasswordConfirmation.tsx:178
#: src/views/settings/index.tsx:325 #: src/views/settings/index.tsx:328
#: src/views/settings/index.tsx:335 #: src/views/settings/index.tsx:338
msgid "Change Password" msgid "Change Password"
msgstr "Change Password" msgstr "Change Password"
#: src/views/settings/index.tsx:224 #: src/views/settings/index.tsx:227
msgid "Change the language of the app." msgid "Change the language of the app."
msgstr "Change the language of the app." msgstr "Change the language of the app."
@@ -408,7 +414,9 @@ msgstr "Code Review"
msgid "Collaborate seamlessly with your team." msgid "Collaborate seamlessly with your team."
msgstr "Collaborate seamlessly with your team." msgstr "Collaborate seamlessly with your team."
#: src/components/NewWorkspaceForm.tsx:349
#: src/views/home/components/Features.tsx:66 #: src/views/home/components/Features.tsx:66
#: src/views/settings/components/UpgradeToProConfirmation.tsx:84
msgid "Coming soon" msgid "Coming soon"
msgstr "Coming soon" msgstr "Coming soon"
@@ -446,7 +454,7 @@ msgid "Confirm your new password"
msgstr "Confirm your new password" msgstr "Confirm your new password"
#: src/views/boards/components/ImportBoardsForm.tsx:157 #: src/views/boards/components/ImportBoardsForm.tsx:157
#: src/views/settings/index.tsx:269 #: src/views/settings/index.tsx:272
msgid "Connect Trello" msgid "Connect Trello"
msgstr "Connect Trello" msgstr "Connect Trello"
@@ -454,7 +462,7 @@ msgstr "Connect Trello"
msgid "Connect your favorite tools to streamline your workflow." msgid "Connect your favorite tools to streamline your workflow."
msgstr "Connect your favorite tools to streamline your workflow." msgstr "Connect your favorite tools to streamline your workflow."
#: src/views/settings/index.tsx:256 #: src/views/settings/index.tsx:259
msgid "Connect your Trello account to import boards." msgid "Connect your Trello account to import boards."
msgstr "Connect your Trello account to import boards." msgstr "Connect your Trello account to import boards."
@@ -534,7 +542,11 @@ msgstr "Create new label"
msgid "Create new list" msgid "Create new list"
msgstr "Create new list" msgstr "Create new list"
#: src/components/NewWorkspaceForm.tsx:94 #: src/components/NewWorkspaceForm.tsx:337
#~ msgid "Create Pro workspace"
#~ msgstr "Create Pro workspace"
#: src/components/NewWorkspaceForm.tsx:384
#: src/components/WorkspaceMenu.tsx:116 #: src/components/WorkspaceMenu.tsx:116
msgid "Create workspace" msgid "Create workspace"
msgstr "Create workspace" msgstr "Create workspace"
@@ -559,6 +571,15 @@ msgstr "Custom domain"
#~ msgid "Custom URLs are a premium feature. You'll be directed to upgrade your account." #~ msgid "Custom URLs are a premium feature. You'll be directed to upgrade your account."
#~ msgstr "Custom URLs are a premium feature. You'll be directed to upgrade your account." #~ msgstr "Custom URLs are a premium feature. You'll be directed to upgrade your account."
#: src/components/NewWorkspaceForm.tsx:280
#~ msgid "Custom URLs require Pro plan ($29/month)"
#~ msgstr "Custom URLs require Pro plan ($29/month)"
#: src/components/NewWorkspaceForm.tsx:315
msgid "Custom URLs require upgrading to a Pro plan"
msgstr "Custom URLs require upgrading to a Pro plan"
#: src/components/NewWorkspaceForm.tsx:339
#: src/views/settings/components/UpgradeToProConfirmation.tsx:74 #: src/views/settings/components/UpgradeToProConfirmation.tsx:74
msgid "Custom workspace URL" msgid "Custom workspace URL"
msgstr "Custom workspace URL" msgstr "Custom workspace URL"
@@ -580,8 +601,8 @@ msgid "Delete"
msgstr "Delete" msgstr "Delete"
#: src/views/settings/components/DeleteAccountConfirmation.tsx:96 #: src/views/settings/components/DeleteAccountConfirmation.tsx:96
#: src/views/settings/index.tsx:343 #: src/views/settings/index.tsx:346
#: src/views/settings/index.tsx:353 #: src/views/settings/index.tsx:356
msgid "Delete account" msgid "Delete account"
msgstr "Delete account" msgstr "Delete account"
@@ -602,8 +623,8 @@ msgid "Delete list"
msgstr "Delete list" msgstr "Delete list"
#: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:106 #: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:106
#: src/views/settings/index.tsx:306 #: src/views/settings/index.tsx:309
#: src/views/settings/index.tsx:317 #: src/views/settings/index.tsx:320
msgid "Delete workspace" msgid "Delete workspace"
msgstr "Delete workspace" msgstr "Delete workspace"
@@ -629,7 +650,7 @@ msgstr "deleted checklist item <0>{0}</0>"
msgid "Design" msgid "Design"
msgstr "Design" msgstr "Design"
#: src/views/settings/index.tsx:284 #: src/views/settings/index.tsx:287
msgid "Disconnect Trello" msgid "Disconnect Trello"
msgstr "Disconnect Trello" msgstr "Disconnect Trello"
@@ -637,7 +658,7 @@ msgstr "Disconnect Trello"
msgid "Discuss and collaborate on cards." msgid "Discuss and collaborate on cards."
msgstr "Discuss and collaborate on cards." msgstr "Discuss and collaborate on cards."
#: src/views/settings/index.tsx:173 #: src/views/settings/index.tsx:176
msgid "Display name" msgid "Display name"
msgstr "Display name" msgstr "Display name"
@@ -755,7 +776,7 @@ msgstr "Error deleting label"
msgid "Error deleting workspace" msgid "Error deleting workspace"
msgstr "Error deleting workspace" msgstr "Error deleting workspace"
#: src/views/settings/index.tsx:123 #: src/views/settings/index.tsx:126
msgid "Error disconnecting Trello" msgid "Error disconnecting Trello"
msgstr "Error disconnecting Trello" msgstr "Error disconnecting Trello"
@@ -789,6 +810,10 @@ msgstr "Error updating workspace URL"
msgid "Error upgrading subscription" msgid "Error upgrading subscription"
msgstr "Error upgrading subscription" msgstr "Error upgrading subscription"
#: src/components/NewWorkspaceForm.tsx:142
msgid "Error upgrading to Pro"
msgstr "Error upgrading to Pro"
#: src/views/settings/components/Avatar.tsx:56 #: src/views/settings/components/Avatar.tsx:56
#: src/views/settings/components/Avatar.tsx:97 #: src/views/settings/components/Avatar.tsx:97
msgid "Error uploading profile image" msgid "Error uploading profile image"
@@ -857,7 +882,7 @@ msgid "Free"
msgstr "Free" msgstr "Free"
#: src/views/members/components/InviteMemberForm.tsx:193 #: src/views/members/components/InviteMemberForm.tsx:193
#: src/views/members/index.tsx:189 #: src/views/members/index.tsx:208
msgid "Free Plan" msgid "Free Plan"
msgstr "Free Plan" msgstr "Free Plan"
@@ -1020,7 +1045,7 @@ msgstr "Interviewing"
msgid "Invalid email address" msgid "Invalid email address"
msgstr "Invalid email address" msgstr "Invalid email address"
#: src/views/members/index.tsx:201 #: src/views/members/index.tsx:221
msgid "Invite" msgid "Invite"
msgstr "Invite" msgstr "Invite"
@@ -1064,15 +1089,20 @@ msgstr "Labels"
msgid "Labels & Filters" msgid "Labels & Filters"
msgstr "Labels & Filters" msgstr "Labels & Filters"
#: src/views/settings/index.tsx:221 #: src/views/settings/index.tsx:224
msgid "Language" msgid "Language"
msgstr "Language" msgstr "Language"
#: src/components/NewWorkspaceForm.tsx:332
#: src/views/settings/components/UpgradeToProConfirmation.tsx:67 #: src/views/settings/components/UpgradeToProConfirmation.tsx:67
msgid "Launch offer" msgid "Launch offer"
msgstr "Launch offer" msgstr "Launch offer"
#: src/views/home/components/Pricing.tsx:98 #: src/views/members/index.tsx:191
msgid "Launch offer: Get unlimited members with Pro"
msgstr "Launch offer: Get unlimited members with Pro"
#: src/views/home/components/Pricing.tsx:99
msgid "Launch offer: unlimited seats for just $29/month with Pro" msgid "Launch offer: unlimited seats for just $29/month with Pro"
msgstr "Launch offer: unlimited seats for just $29/month with Pro" msgstr "Launch offer: unlimited seats for just $29/month with Pro"
@@ -1141,12 +1171,12 @@ msgstr "Medium Priority"
#: src/views/board/components/Filters.tsx:93 #: src/views/board/components/Filters.tsx:93
#: src/views/board/components/NewCardForm.tsx:357 #: src/views/board/components/NewCardForm.tsx:357
#: src/views/card/index.tsx:125 #: src/views/card/index.tsx:125
#: src/views/members/index.tsx:172 #: src/views/members/index.tsx:178
msgid "Members" msgid "Members"
msgstr "Members" msgstr "Members"
#. placeholder {0}: workspace.name ?? "Workspace" #. placeholder {0}: workspace.name ?? "Workspace"
#: src/views/members/index.tsx:168 #: src/views/members/index.tsx:173
msgid "Members | {0}" msgid "Members | {0}"
msgstr "Members | {0}" msgstr "Members | {0}"
@@ -1172,6 +1202,10 @@ msgstr "moved the card from <0>{0}</0> to<1>{1}</1>"
msgid "moved the card to another list" msgid "moved the card to another list"
msgstr "moved the card to another list" msgstr "moved the card to another list"
#: src/components/NewWorkspaceForm.tsx:273
#~ msgid "my-workspace-name"
#~ msgstr "my-workspace-name"
#: src/components/LabelForm.tsx:135 #: src/components/LabelForm.tsx:135
#: src/views/boards/components/NewBoardForm.tsx:99 #: src/views/boards/components/NewBoardForm.tsx:99
msgid "Name" msgid "Name"
@@ -1226,7 +1260,7 @@ msgstr "New Ticket"
#~ msgid "New Ticket, Triaging, In Progress, Awaiting Customer, Resolution, Done" #~ msgid "New Ticket, Triaging, In Progress, Awaiting Customer, Resolution, Done"
#~ msgstr "New Ticket, Triaging, In Progress, Awaiting Customer, Resolution, Done" #~ msgstr "New Ticket, Triaging, In Progress, Awaiting Customer, Resolution, Done"
#: src/components/NewWorkspaceForm.tsx:65 #: src/components/NewWorkspaceForm.tsx:240
msgid "New workspace" msgid "New workspace"
msgstr "New workspace" msgstr "New workspace"
@@ -1262,11 +1296,11 @@ msgstr "Offer"
msgid "Onboarding" msgid "Onboarding"
msgstr "Onboarding" msgstr "Onboarding"
#: src/views/settings/index.tsx:346 #: src/views/settings/index.tsx:349
msgid "Once you delete your account, there is no going back. This action cannot be undone." msgid "Once you delete your account, there is no going back. This action cannot be undone."
msgstr "Once you delete your account, there is no going back. This action cannot be undone." msgstr "Once you delete your account, there is no going back. This action cannot be undone."
#: src/views/settings/index.tsx:309 #: src/views/settings/index.tsx:312
msgid "Once you delete your workspace, there is no going back. This action cannot be undone." msgid "Once you delete your workspace, there is no going back. This action cannot be undone."
msgstr "Once you delete your workspace, there is no going back. This action cannot be undone." msgstr "Once you delete your workspace, there is no going back. This action cannot be undone."
@@ -1298,11 +1332,11 @@ msgstr "Password must be at least 8 characters"
msgid "Passwords do not match" msgid "Passwords do not match"
msgstr "Passwords do not match" msgstr "Passwords do not match"
#: src/views/home/components/Pricing.tsx:101 #: src/views/home/components/Pricing.tsx:102
msgid "Payment frequency" msgid "Payment frequency"
msgstr "Payment frequency" msgstr "Payment frequency"
#: src/views/members/index.tsx:129 #: src/views/members/index.tsx:134
msgid "Pending" msgid "Pending"
msgstr "Pending" msgstr "Pending"
@@ -1341,7 +1375,7 @@ msgstr "Please select a file to upload."
#: src/components/DeleteLabelConfirmation.tsx:26 #: src/components/DeleteLabelConfirmation.tsx:26
#: src/components/FeedbackModal.tsx:41 #: src/components/FeedbackModal.tsx:41
#: src/components/NewWorkspaceForm.tsx:42 #: src/components/NewWorkspaceForm.tsx:155
#: src/views/board/components/NewCardForm.tsx:174 #: src/views/board/components/NewCardForm.tsx:174
#: src/views/board/components/NewListForm.tsx:78 #: src/views/board/components/NewListForm.tsx:78
#: src/views/board/components/UpdateBoardSlugForm.tsx:72 #: src/views/board/components/UpdateBoardSlugForm.tsx:72
@@ -1385,7 +1419,7 @@ msgid "Pricing"
msgstr "Pricing" msgstr "Pricing"
#: src/views/home/components/Pricing.tsx:56 #: src/views/home/components/Pricing.tsx:56
#: src/views/settings/components/UpgradeToProConfirmation.tsx:86 #: src/views/settings/components/UpgradeToProConfirmation.tsx:91
msgid "Priority email support" msgid "Priority email support"
msgstr "Priority email support" msgstr "Priority email support"
@@ -1397,7 +1431,7 @@ msgstr "Privacy policy"
msgid "Private" msgid "Private"
msgstr "Private" msgstr "Private"
#: src/views/members/index.tsx:186 #: src/views/members/index.tsx:205
msgid "Pro Plan" msgid "Pro Plan"
msgstr "Pro Plan" msgstr "Pro Plan"
@@ -1409,7 +1443,7 @@ msgstr "Pro Plan ∞"
msgid "Profile image updated" msgid "Profile image updated"
msgstr "Profile image updated" msgstr "Profile image updated"
#: src/views/settings/index.tsx:168 #: src/views/settings/index.tsx:171
msgid "Profile picture" msgid "Profile picture"
msgstr "Profile picture" msgstr "Profile picture"
@@ -1445,7 +1479,7 @@ msgstr "Remote"
msgid "Remove" msgid "Remove"
msgstr "Remove" msgstr "Remove"
#: src/views/members/index.tsx:143 #: src/views/members/index.tsx:148
msgid "Remove member" msgid "Remove member"
msgstr "Remove member" msgstr "Remove member"
@@ -1505,7 +1539,7 @@ msgstr "Revoke"
msgid "Roadmap" msgid "Roadmap"
msgstr "Roadmap" msgstr "Roadmap"
#: src/views/members/index.tsx:223 #: src/views/members/index.tsx:243
msgid "Role" msgid "Role"
msgstr "Role" msgstr "Role"
@@ -1558,12 +1592,12 @@ msgid "Senior"
msgstr "Senior" msgstr "Senior"
#: src/components/SideNavigation.tsx:78 #: src/components/SideNavigation.tsx:78
#: src/views/settings/index.tsx:162 #: src/views/settings/index.tsx:165
msgid "Settings" msgid "Settings"
msgstr "Settings" msgstr "Settings"
#. placeholder {0}: workspace.name ?? "Workspace" #. placeholder {0}: workspace.name ?? "Workspace"
#: src/views/settings/index.tsx:158 #: src/views/settings/index.tsx:161
msgid "Settings | {0}" msgid "Settings | {0}"
msgstr "Settings | {0}" msgstr "Settings | {0}"
@@ -1631,7 +1665,7 @@ msgid "System"
msgstr "System" msgstr "System"
#: src/views/members/components/InviteMemberForm.tsx:182 #: src/views/members/components/InviteMemberForm.tsx:182
#: src/views/members/index.tsx:188 #: src/views/members/index.tsx:207
msgid "Team Plan" msgid "Team Plan"
msgstr "Team Plan" msgstr "Team Plan"
@@ -1699,6 +1733,14 @@ msgstr "This will result in the permanent deletion of all data associated with t
msgid "This will result in the permanent deletion of all data associated with your account." msgid "This will result in the permanent deletion of all data associated with your account."
msgstr "This will result in the permanent deletion of all data associated with your account." msgstr "This will result in the permanent deletion of all data associated with your account."
#: src/components/NewWorkspaceForm.tsx:284
msgid "This workspace URL has already been taken"
msgstr "This workspace URL has already been taken"
#: src/components/NewWorkspaceForm.tsx:286
msgid "This workspace URL is reserved"
msgstr "This workspace URL is reserved"
#: src/views/settings/components/UpdateWorkspaceUrlForm.tsx:123 #: src/views/settings/components/UpdateWorkspaceUrlForm.tsx:123
msgid "This workspace username has already been taken" msgid "This workspace username has already been taken"
msgstr "This workspace username has already been taken" msgstr "This workspace username has already been taken"
@@ -1720,7 +1762,7 @@ msgstr "Toggle menu"
msgid "Track all card changes with detailed activity history." msgid "Track all card changes with detailed activity history."
msgstr "Track all card changes with detailed activity history." msgstr "Track all card changes with detailed activity history."
#: src/views/settings/index.tsx:116 #: src/views/settings/index.tsx:119
msgid "Trello disconnected" msgid "Trello disconnected"
msgstr "Trello disconnected" msgstr "Trello disconnected"
@@ -1752,7 +1794,7 @@ msgstr "Unable to create checklist"
msgid "Unable to create list" msgid "Unable to create list"
msgstr "Unable to create list" msgstr "Unable to create list"
#: src/components/NewWorkspaceForm.tsx:41 #: src/components/NewWorkspaceForm.tsx:154
msgid "Unable to create workspace" msgid "Unable to create workspace"
msgstr "Unable to create workspace" msgstr "Unable to create workspace"
@@ -1855,6 +1897,7 @@ msgstr "Unlimited comments"
msgid "Unlimited lists" msgid "Unlimited lists"
msgstr "Unlimited lists" msgstr "Unlimited lists"
#: src/components/NewWorkspaceForm.tsx:329
#: src/views/settings/components/UpgradeToProConfirmation.tsx:64 #: src/views/settings/components/UpgradeToProConfirmation.tsx:64
msgid "Unlimited members" msgid "Unlimited members"
msgstr "Unlimited members" msgstr "Unlimited members"
@@ -1892,15 +1935,19 @@ msgstr "updated the title to <0>{0}</0>"
#~ msgid "updated the title to <0>{toTitle}</0>" #~ msgid "updated the title to <0>{toTitle}</0>"
#~ msgstr "updated the title to <0>{toTitle}</0>" #~ msgstr "updated the title to <0>{toTitle}</0>"
#: src/views/settings/components/UpgradeToProConfirmation.tsx:99 #: src/views/settings/components/UpgradeToProConfirmation.tsx:109
msgid "Upgrade" msgid "Upgrade"
msgstr "Upgrade" msgstr "Upgrade"
#: src/views/settings/components/UpgradeToProConfirmation.tsx:52 #: src/views/settings/components/UpgradeToProConfirmation.tsx:52
#: src/views/settings/index.tsx:213 #: src/views/settings/index.tsx:216
msgid "Upgrade to Pro" msgid "Upgrade to Pro"
msgstr "Upgrade to Pro" msgstr "Upgrade to Pro"
#: src/components/NewWorkspaceForm.tsx:369
msgid "Upgrade to Pro ($29/month)"
msgstr "Upgrade to Pro ($29/month)"
#: src/views/members/components/InviteMemberForm.tsx:224 #: src/views/members/components/InviteMemberForm.tsx:224
msgid "Upgrade to Team Plan" msgid "Upgrade to Team Plan"
msgstr "Upgrade to Team Plan" msgstr "Upgrade to Team Plan"
@@ -1910,14 +1957,17 @@ msgstr "Upgrade to Team Plan"
msgid "Urgent" msgid "Urgent"
msgstr "Urgent" msgstr "Urgent"
#: src/components/NewWorkspaceForm.tsx:35
#: src/views/settings/components/UpdateWorkspaceUrlForm.tsx:36 #: src/views/settings/components/UpdateWorkspaceUrlForm.tsx:36
msgid "URL can only contain letters, numbers, and hyphens" msgid "URL can only contain letters, numbers, and hyphens"
msgstr "URL can only contain letters, numbers, and hyphens" msgstr "URL can only contain letters, numbers, and hyphens"
#: src/components/NewWorkspaceForm.tsx:33
#: src/views/settings/components/UpdateWorkspaceUrlForm.tsx:34 #: src/views/settings/components/UpdateWorkspaceUrlForm.tsx:34
msgid "URL cannot exceed 24 characters" msgid "URL cannot exceed 24 characters"
msgstr "URL cannot exceed 24 characters" msgstr "URL cannot exceed 24 characters"
#: src/components/NewWorkspaceForm.tsx:31
#: src/views/settings/components/UpdateWorkspaceUrlForm.tsx:32 #: src/views/settings/components/UpdateWorkspaceUrlForm.tsx:32
msgid "URL must be at least 3 characters long" msgid "URL must be at least 3 characters long"
msgstr "URL must be at least 3 characters long" msgstr "URL must be at least 3 characters long"
@@ -1926,7 +1976,7 @@ msgstr "URL must be at least 3 characters long"
msgid "Use template" msgid "Use template"
msgstr "Use template" msgstr "Use template"
#: src/views/members/index.tsx:217 #: src/views/members/index.tsx:237
msgid "User" msgid "User"
msgstr "User" msgstr "User"
@@ -1938,11 +1988,11 @@ msgstr "User is already a member of this workspace"
msgid "Video" msgid "Video"
msgstr "Video" msgstr "Video"
#: src/views/settings/index.tsx:296 #: src/views/settings/index.tsx:299
msgid "View and manage your API keys." msgid "View and manage your API keys."
msgstr "View and manage your API keys." msgstr "View and manage your API keys."
#: src/views/settings/index.tsx:235 #: src/views/settings/index.tsx:238
msgid "View and manage your billing and subscription." msgid "View and manage your billing and subscription."
msgstr "View and manage your billing and subscription." msgstr "View and manage your billing and subscription."
@@ -2002,11 +2052,15 @@ msgstr "Why make an open source Trello?"
msgid "Workspace" msgid "Workspace"
msgstr "Workspace" msgstr "Workspace"
#: src/components/NewWorkspaceForm.tsx:143
msgid "Workspace created successfully. You can upgrade later in settings."
msgstr "Workspace created successfully. You can upgrade later in settings."
#: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:26 #: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:26
msgid "Workspace deleted" msgid "Workspace deleted"
msgstr "Workspace deleted" msgstr "Workspace deleted"
#: src/views/settings/index.tsx:199 #: src/views/settings/index.tsx:202
msgid "Workspace description" msgid "Workspace description"
msgstr "Workspace description" msgstr "Workspace description"
@@ -2027,8 +2081,8 @@ msgstr "Workspace description updated"
msgid "Workspace members" msgid "Workspace members"
msgstr "Workspace members" msgstr "Workspace members"
#: src/components/NewWorkspaceForm.tsx:81 #: src/components/NewWorkspaceForm.tsx:259
#: src/views/settings/index.tsx:180 #: src/views/settings/index.tsx:183
msgid "Workspace name" msgid "Workspace name"
msgstr "Workspace name" msgstr "Workspace name"
@@ -2036,6 +2090,10 @@ msgstr "Workspace name"
msgid "Workspace name cannot exceed 24 characters" msgid "Workspace name cannot exceed 24 characters"
msgstr "Workspace name cannot exceed 24 characters" msgstr "Workspace name cannot exceed 24 characters"
#: src/components/NewWorkspaceForm.tsx:27
msgid "Workspace name is required"
msgstr "Workspace name is required"
#: src/views/settings/components/UpdateWorkspaceNameForm.tsx:14 #: src/views/settings/components/UpdateWorkspaceNameForm.tsx:14
msgid "Workspace name must be at least 3 characters long" msgid "Workspace name must be at least 3 characters long"
msgstr "Workspace name must be at least 3 characters long" msgstr "Workspace name must be at least 3 characters long"
@@ -2048,10 +2106,14 @@ msgstr "Workspace name updated"
msgid "Workspace slug updated" msgid "Workspace slug updated"
msgstr "Workspace slug updated" msgstr "Workspace slug updated"
#: src/views/settings/index.tsx:189 #: src/views/settings/index.tsx:192
msgid "Workspace URL" msgid "Workspace URL"
msgstr "Workspace URL" msgstr "Workspace URL"
#: src/components/NewWorkspaceForm.tsx:273
msgid "workspace-url"
msgstr "workspace-url"
#: src/views/boards/components/TemplateBoards.tsx:30 #: src/views/boards/components/TemplateBoards.tsx:30
msgid "Writing" msgid "Writing"
msgstr "Writing" msgstr "Writing"
@@ -2064,7 +2126,7 @@ msgstr "Yearly"
msgid "Yes, we offer an forever free plan for individual use. No restrictions, no paywalls, no limits." msgid "Yes, we offer an forever free plan for individual use. No restrictions, no paywalls, no limits."
msgstr "Yes, we offer an forever free plan for individual use. No restrictions, no paywalls, no limits." msgstr "Yes, we offer an forever free plan for individual use. No restrictions, no paywalls, no limits."
#: src/views/settings/index.tsx:328 #: src/views/settings/index.tsx:331
msgid "You are about to change your password." msgid "You are about to change your password."
msgstr "You are about to change your password." msgstr "You are about to change your password."
@@ -2112,11 +2174,11 @@ msgstr "Your password has been changed."
msgid "Your profile image has been updated." msgid "Your profile image has been updated."
msgstr "Your profile image has been updated." msgstr "Your profile image has been updated."
#: src/views/settings/index.tsx:117 #: src/views/settings/index.tsx:120
msgid "Your Trello account has been disconnected." msgid "Your Trello account has been disconnected."
msgstr "Your Trello account has been disconnected." msgstr "Your Trello account has been disconnected."
#: src/views/settings/index.tsx:278 #: src/views/settings/index.tsx:281
msgid "Your Trello account is connected." msgid "Your Trello account is connected."
msgstr "Your Trello account is connected." msgstr "Your Trello account is connected."

File diff suppressed because one or more lines are too long

View File

@@ -148,7 +148,7 @@ msgstr "Todos los sistemas operativos"
msgid "Already have an account? <0><1>Sign in</1></0>" msgid "Already have an account? <0><1>Sign in</1></0>"
msgstr "¿Ya tienes una cuenta? <0><1>Iniciar sesión</1></0>" msgstr "¿Ya tienes una cuenta? <0><1>Iniciar sesión</1></0>"
#: src/views/settings/index.tsx:124 #: src/views/settings/index.tsx:127
msgid "An error occurred while disconnecting your Trello account." msgid "An error occurred while disconnecting your Trello account."
msgstr "Ocurrió un error al desconectar tu cuenta de Trello." msgstr "Ocurrió un error al desconectar tu cuenta de Trello."
@@ -156,7 +156,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/settings/index.tsx:293 #: src/views/settings/index.tsx:296
msgid "API keys" msgid "API keys"
msgstr "Claves API" msgstr "Claves API"
@@ -227,11 +227,11 @@ msgid "billed monthly"
msgstr "facturado mensualmente" msgstr "facturado mensualmente"
#: src/views/boards/components/TemplateBoards.tsx:55 #: src/views/boards/components/TemplateBoards.tsx:55
#: src/views/settings/index.tsx:232 #: src/views/settings/index.tsx:235
msgid "Billing" msgid "Billing"
msgstr "Facturación" msgstr "Facturación"
#: src/views/settings/index.tsx:242 #: src/views/settings/index.tsx:245
msgid "Billing portal" msgid "Billing portal"
msgstr "Portal de facturación" msgstr "Portal de facturación"
@@ -243,9 +243,10 @@ msgstr "Entrada de blog"
msgid "Board" msgid "Board"
msgstr "Tablero" msgstr "Tablero"
#: src/views/settings/components/UpgradeToProConfirmation.tsx:80 #: src/components/NewWorkspaceForm.tsx:346
msgid "Board analytics (coming soon)" #: src/views/settings/components/UpgradeToProConfirmation.tsx:81
msgstr "Análisis de tableros (próximamente)" msgid "Board analytics"
msgstr "Análisis del tablero"
#: src/views/boards/components/NewBoardForm.tsx:21 #: src/views/boards/components/NewBoardForm.tsx:21
msgid "Board name cannot exceed 100 characters" msgid "Board name cannot exceed 100 characters"
@@ -315,7 +316,7 @@ msgstr "Informe de error"
#: src/views/settings/components/ChangePasswordConfirmation.tsx:168 #: src/views/settings/components/ChangePasswordConfirmation.tsx:168
#: src/views/settings/components/DeleteAccountConfirmation.tsx:88 #: src/views/settings/components/DeleteAccountConfirmation.tsx:88
#: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:98 #: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:98
#: src/views/settings/components/UpgradeToProConfirmation.tsx:94 #: src/views/settings/components/UpgradeToProConfirmation.tsx:104
msgid "Cancel" msgid "Cancel"
msgstr "Cancelar" msgstr "Cancelar"
@@ -329,12 +330,12 @@ msgstr "Título de la tarjeta"
#: src/views/settings/components/ChangePasswordConfirmation.tsx:109 #: src/views/settings/components/ChangePasswordConfirmation.tsx:109
#: src/views/settings/components/ChangePasswordConfirmation.tsx:178 #: src/views/settings/components/ChangePasswordConfirmation.tsx:178
#: src/views/settings/index.tsx:325 #: src/views/settings/index.tsx:328
#: src/views/settings/index.tsx:335 #: src/views/settings/index.tsx:338
msgid "Change Password" msgid "Change Password"
msgstr "Cambiar contraseña" msgstr "Cambiar contraseña"
#: src/views/settings/index.tsx:224 #: src/views/settings/index.tsx:227
msgid "Change the language of the app." msgid "Change the language of the app."
msgstr "Cambiar el idioma de la aplicación." msgstr "Cambiar el idioma de la aplicación."
@@ -364,7 +365,9 @@ msgstr "Revisión de código"
msgid "Collaborate seamlessly with your team." msgid "Collaborate seamlessly with your team."
msgstr "Colabora sin problemas con tu equipo." msgstr "Colabora sin problemas con tu equipo."
#: src/components/NewWorkspaceForm.tsx:349
#: src/views/home/components/Features.tsx:66 #: src/views/home/components/Features.tsx:66
#: src/views/settings/components/UpgradeToProConfirmation.tsx:84
msgid "Coming soon" msgid "Coming soon"
msgstr "Próximamente" msgstr "Próximamente"
@@ -398,7 +401,7 @@ msgid "Confirm your new password"
msgstr "Confirma tu nueva contraseña" msgstr "Confirma tu nueva contraseña"
#: src/views/boards/components/ImportBoardsForm.tsx:157 #: src/views/boards/components/ImportBoardsForm.tsx:157
#: src/views/settings/index.tsx:269 #: src/views/settings/index.tsx:272
msgid "Connect Trello" msgid "Connect Trello"
msgstr "Conectar Trello" msgstr "Conectar Trello"
@@ -406,7 +409,7 @@ msgstr "Conectar Trello"
msgid "Connect your favorite tools to streamline your workflow." msgid "Connect your favorite tools to streamline your workflow."
msgstr "Conecta tus herramientas favoritas para agilizar tu flujo de trabajo." msgstr "Conecta tus herramientas favoritas para agilizar tu flujo de trabajo."
#: src/views/settings/index.tsx:256 #: src/views/settings/index.tsx:259
msgid "Connect your Trello account to import boards." msgid "Connect your Trello account to import boards."
msgstr "Conecta tu cuenta de Trello para importar tableros." msgstr "Conecta tu cuenta de Trello para importar tableros."
@@ -478,7 +481,7 @@ msgstr "Crear nueva etiqueta"
msgid "Create new list" msgid "Create new list"
msgstr "Crear nueva lista" msgstr "Crear nueva lista"
#: src/components/NewWorkspaceForm.tsx:94 #: src/components/NewWorkspaceForm.tsx:384
#: src/components/WorkspaceMenu.tsx:116 #: src/components/WorkspaceMenu.tsx:116
msgid "Create workspace" msgid "Create workspace"
msgstr "Crear espacio de trabajo" msgstr "Crear espacio de trabajo"
@@ -499,6 +502,11 @@ msgstr "Se requiere la contraseña actual"
msgid "Custom domain" msgid "Custom domain"
msgstr "Dominio personalizado" msgstr "Dominio personalizado"
#: src/components/NewWorkspaceForm.tsx:315
msgid "Custom URLs require upgrading to a Pro plan"
msgstr "Las URLs personalizadas requieren actualizar a un plan Pro"
#: src/components/NewWorkspaceForm.tsx:339
#: src/views/settings/components/UpgradeToProConfirmation.tsx:74 #: src/views/settings/components/UpgradeToProConfirmation.tsx:74
msgid "Custom workspace URL" msgid "Custom workspace URL"
msgstr "URL personalizada del espacio de trabajo" msgstr "URL personalizada del espacio de trabajo"
@@ -520,8 +528,8 @@ msgid "Delete"
msgstr "Eliminar" msgstr "Eliminar"
#: src/views/settings/components/DeleteAccountConfirmation.tsx:96 #: src/views/settings/components/DeleteAccountConfirmation.tsx:96
#: src/views/settings/index.tsx:343 #: src/views/settings/index.tsx:346
#: src/views/settings/index.tsx:353 #: src/views/settings/index.tsx:356
msgid "Delete account" msgid "Delete account"
msgstr "Eliminar cuenta" msgstr "Eliminar cuenta"
@@ -542,8 +550,8 @@ msgid "Delete list"
msgstr "Eliminar lista" msgstr "Eliminar lista"
#: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:106 #: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:106
#: src/views/settings/index.tsx:306 #: src/views/settings/index.tsx:309
#: src/views/settings/index.tsx:317 #: src/views/settings/index.tsx:320
msgid "Delete workspace" msgid "Delete workspace"
msgstr "Eliminar espacio de trabajo" msgstr "Eliminar espacio de trabajo"
@@ -569,7 +577,7 @@ msgstr "eliminó el elemento <0>{0}</0> de la lista de verificación"
msgid "Design" msgid "Design"
msgstr "Diseño" msgstr "Diseño"
#: src/views/settings/index.tsx:284 #: src/views/settings/index.tsx:287
msgid "Disconnect Trello" msgid "Disconnect Trello"
msgstr "Desconectar Trello" msgstr "Desconectar Trello"
@@ -577,7 +585,7 @@ msgstr "Desconectar Trello"
msgid "Discuss and collaborate on cards." msgid "Discuss and collaborate on cards."
msgstr "Discute y colabora en las tarjetas." msgstr "Discute y colabora en las tarjetas."
#: src/views/settings/index.tsx:173 #: src/views/settings/index.tsx:176
msgid "Display name" msgid "Display name"
msgstr "Nombre visible" msgstr "Nombre visible"
@@ -695,7 +703,7 @@ msgstr "Error al eliminar la etiqueta"
msgid "Error deleting workspace" msgid "Error deleting workspace"
msgstr "Error al eliminar el espacio de trabajo" msgstr "Error al eliminar el espacio de trabajo"
#: src/views/settings/index.tsx:123 #: src/views/settings/index.tsx:126
msgid "Error disconnecting Trello" msgid "Error disconnecting Trello"
msgstr "Error al desconectar Trello" msgstr "Error al desconectar Trello"
@@ -729,6 +737,10 @@ msgstr "Error al actualizar la URL del espacio de trabajo"
msgid "Error upgrading subscription" msgid "Error upgrading subscription"
msgstr "Error al actualizar la suscripción" msgstr "Error al actualizar la suscripción"
#: src/components/NewWorkspaceForm.tsx:142
msgid "Error upgrading to Pro"
msgstr "Error al actualizar a Pro"
#: src/views/settings/components/Avatar.tsx:56 #: src/views/settings/components/Avatar.tsx:56
#: src/views/settings/components/Avatar.tsx:97 #: src/views/settings/components/Avatar.tsx:97
msgid "Error uploading profile image" msgid "Error uploading profile image"
@@ -796,7 +808,7 @@ msgid "Free"
msgstr "Gratis" msgstr "Gratis"
#: src/views/members/components/InviteMemberForm.tsx:193 #: src/views/members/components/InviteMemberForm.tsx:193
#: src/views/members/index.tsx:189 #: src/views/members/index.tsx:208
msgid "Free Plan" msgid "Free Plan"
msgstr "Plan gratuito" msgstr "Plan gratuito"
@@ -955,7 +967,7 @@ msgstr "Entrevistando"
msgid "Invalid email address" msgid "Invalid email address"
msgstr "Dirección de correo electrónico no válida" msgstr "Dirección de correo electrónico no válida"
#: src/views/members/index.tsx:201 #: src/views/members/index.tsx:221
msgid "Invite" msgid "Invite"
msgstr "Invitar" msgstr "Invitar"
@@ -999,15 +1011,20 @@ msgstr "Etiquetas"
msgid "Labels & Filters" msgid "Labels & Filters"
msgstr "Etiquetas y filtros" msgstr "Etiquetas y filtros"
#: src/views/settings/index.tsx:221 #: src/views/settings/index.tsx:224
msgid "Language" msgid "Language"
msgstr "Idioma" msgstr "Idioma"
#: src/components/NewWorkspaceForm.tsx:332
#: src/views/settings/components/UpgradeToProConfirmation.tsx:67 #: src/views/settings/components/UpgradeToProConfirmation.tsx:67
msgid "Launch offer" msgid "Launch offer"
msgstr "Oferta de lanzamiento" msgstr "Oferta de lanzamiento"
#: src/views/home/components/Pricing.tsx:98 #: src/views/members/index.tsx:191
msgid "Launch offer: Get unlimited members with Pro"
msgstr "Oferta de lanzamiento: Obtén miembros ilimitados con Pro"
#: src/views/home/components/Pricing.tsx:99
msgid "Launch offer: unlimited seats for just $29/month with Pro" msgid "Launch offer: unlimited seats for just $29/month with Pro"
msgstr "Oferta de lanzamiento: asientos ilimitados por solo $29/mes con Pro" msgstr "Oferta de lanzamiento: asientos ilimitados por solo $29/mes con Pro"
@@ -1076,12 +1093,12 @@ msgstr "Prioridad media"
#: src/views/board/components/Filters.tsx:93 #: src/views/board/components/Filters.tsx:93
#: src/views/board/components/NewCardForm.tsx:357 #: src/views/board/components/NewCardForm.tsx:357
#: src/views/card/index.tsx:125 #: src/views/card/index.tsx:125
#: src/views/members/index.tsx:172 #: src/views/members/index.tsx:178
msgid "Members" msgid "Members"
msgstr "Miembros" msgstr "Miembros"
#. placeholder {0}: workspace.name ?? "Workspace" #. placeholder {0}: workspace.name ?? "Workspace"
#: src/views/members/index.tsx:168 #: src/views/members/index.tsx:173
msgid "Members | {0}" msgid "Members | {0}"
msgstr "Miembros | {0}" msgstr "Miembros | {0}"
@@ -1153,7 +1170,7 @@ msgstr "La nueva contraseña debe ser diferente de la contraseña actual"
msgid "New Ticket" msgid "New Ticket"
msgstr "Nuevo ticket" msgstr "Nuevo ticket"
#: src/components/NewWorkspaceForm.tsx:65 #: src/components/NewWorkspaceForm.tsx:240
msgid "New workspace" msgid "New workspace"
msgstr "Nuevo espacio de trabajo" msgstr "Nuevo espacio de trabajo"
@@ -1189,11 +1206,11 @@ msgstr "Oferta"
msgid "Onboarding" msgid "Onboarding"
msgstr "Incorporación" msgstr "Incorporación"
#: src/views/settings/index.tsx:346 #: src/views/settings/index.tsx:349
msgid "Once you delete your account, there is no going back. This action cannot be undone." msgid "Once you delete your account, there is no going back. This action cannot be undone."
msgstr "Una vez que elimines tu cuenta, no hay vuelta atrás. Esta acción no se puede deshacer." msgstr "Una vez que elimines tu cuenta, no hay vuelta atrás. Esta acción no se puede deshacer."
#: src/views/settings/index.tsx:309 #: src/views/settings/index.tsx:312
msgid "Once you delete your workspace, there is no going back. This action cannot be undone." msgid "Once you delete your workspace, there is no going back. This action cannot be undone."
msgstr "Una vez que elimines tu espacio de trabajo, no hay vuelta atrás. Esta acción no se puede deshacer." msgstr "Una vez que elimines tu espacio de trabajo, no hay vuelta atrás. Esta acción no se puede deshacer."
@@ -1225,11 +1242,11 @@ msgstr "La contraseña debe tener al menos 8 caracteres"
msgid "Passwords do not match" msgid "Passwords do not match"
msgstr "Las contraseñas no coinciden" msgstr "Las contraseñas no coinciden"
#: src/views/home/components/Pricing.tsx:101 #: src/views/home/components/Pricing.tsx:102
msgid "Payment frequency" msgid "Payment frequency"
msgstr "Frecuencia de pago" msgstr "Frecuencia de pago"
#: src/views/members/index.tsx:129 #: src/views/members/index.tsx:134
msgid "Pending" msgid "Pending"
msgstr "Pendiente" msgstr "Pendiente"
@@ -1268,7 +1285,7 @@ msgstr "Por favor selecciona un archivo para subir."
#: src/components/DeleteLabelConfirmation.tsx:26 #: src/components/DeleteLabelConfirmation.tsx:26
#: src/components/FeedbackModal.tsx:41 #: src/components/FeedbackModal.tsx:41
#: src/components/NewWorkspaceForm.tsx:42 #: src/components/NewWorkspaceForm.tsx:155
#: src/views/board/components/NewCardForm.tsx:174 #: src/views/board/components/NewCardForm.tsx:174
#: src/views/board/components/NewListForm.tsx:78 #: src/views/board/components/NewListForm.tsx:78
#: src/views/board/components/UpdateBoardSlugForm.tsx:72 #: src/views/board/components/UpdateBoardSlugForm.tsx:72
@@ -1312,7 +1329,7 @@ msgid "Pricing"
msgstr "Precios" msgstr "Precios"
#: src/views/home/components/Pricing.tsx:56 #: src/views/home/components/Pricing.tsx:56
#: src/views/settings/components/UpgradeToProConfirmation.tsx:86 #: src/views/settings/components/UpgradeToProConfirmation.tsx:91
msgid "Priority email support" msgid "Priority email support"
msgstr "Soporte prioritario por email" msgstr "Soporte prioritario por email"
@@ -1324,7 +1341,7 @@ msgstr "Política de privacidad"
msgid "Private" msgid "Private"
msgstr "Privado" msgstr "Privado"
#: src/views/members/index.tsx:186 #: src/views/members/index.tsx:205
msgid "Pro Plan" msgid "Pro Plan"
msgstr "Plan Pro" msgstr "Plan Pro"
@@ -1336,7 +1353,7 @@ msgstr "Plan Pro ∞"
msgid "Profile image updated" msgid "Profile image updated"
msgstr "Imagen de perfil actualizada" msgstr "Imagen de perfil actualizada"
#: src/views/settings/index.tsx:168 #: src/views/settings/index.tsx:171
msgid "Profile picture" msgid "Profile picture"
msgstr "Foto de perfil" msgstr "Foto de perfil"
@@ -1372,7 +1389,7 @@ msgstr "Remoto"
msgid "Remove" msgid "Remove"
msgstr "Eliminar" msgstr "Eliminar"
#: src/views/members/index.tsx:143 #: src/views/members/index.tsx:148
msgid "Remove member" msgid "Remove member"
msgstr "Eliminar miembro" msgstr "Eliminar miembro"
@@ -1428,7 +1445,7 @@ msgstr "Revocar"
msgid "Roadmap" msgid "Roadmap"
msgstr "Hoja de ruta" msgstr "Hoja de ruta"
#: src/views/members/index.tsx:223 #: src/views/members/index.tsx:243
msgid "Role" msgid "Role"
msgstr "Rol" msgstr "Rol"
@@ -1477,12 +1494,12 @@ msgid "Senior"
msgstr "Senior" msgstr "Senior"
#: src/components/SideNavigation.tsx:78 #: src/components/SideNavigation.tsx:78
#: src/views/settings/index.tsx:162 #: src/views/settings/index.tsx:165
msgid "Settings" msgid "Settings"
msgstr "Configuración" msgstr "Configuración"
#. placeholder {0}: workspace.name ?? "Workspace" #. placeholder {0}: workspace.name ?? "Workspace"
#: src/views/settings/index.tsx:158 #: src/views/settings/index.tsx:161
msgid "Settings | {0}" msgid "Settings | {0}"
msgstr "Configuración | {0}" msgstr "Configuración | {0}"
@@ -1550,7 +1567,7 @@ msgid "System"
msgstr "Sistema" msgstr "Sistema"
#: src/views/members/components/InviteMemberForm.tsx:182 #: src/views/members/components/InviteMemberForm.tsx:182
#: src/views/members/index.tsx:188 #: src/views/members/index.tsx:207
msgid "Team Plan" msgid "Team Plan"
msgstr "Plan de Equipo" msgstr "Plan de Equipo"
@@ -1618,6 +1635,14 @@ msgstr "Esto resultará en la eliminación permanente de todos los datos asociad
msgid "This will result in the permanent deletion of all data associated with your account." msgid "This will result in the permanent deletion of all data associated with your account."
msgstr "Esto resultará en la eliminación permanente de todos los datos asociados con tu cuenta." msgstr "Esto resultará en la eliminación permanente de todos los datos asociados con tu cuenta."
#: src/components/NewWorkspaceForm.tsx:284
msgid "This workspace URL has already been taken"
msgstr "Esta URL de espacio de trabajo ya ha sido tomada"
#: src/components/NewWorkspaceForm.tsx:286
msgid "This workspace URL is reserved"
msgstr "Esta URL de espacio de trabajo está reservada"
#: src/views/settings/components/UpdateWorkspaceUrlForm.tsx:123 #: src/views/settings/components/UpdateWorkspaceUrlForm.tsx:123
msgid "This workspace username has already been taken" msgid "This workspace username has already been taken"
msgstr "Este nombre de usuario del espacio de trabajo ya ha sido tomado" msgstr "Este nombre de usuario del espacio de trabajo ya ha sido tomado"
@@ -1635,7 +1660,7 @@ msgstr "Alternar menú"
msgid "Track all card changes with detailed activity history." msgid "Track all card changes with detailed activity history."
msgstr "Rastrea todos los cambios en las tarjetas con un historial de actividad detallado." msgstr "Rastrea todos los cambios en las tarjetas con un historial de actividad detallado."
#: src/views/settings/index.tsx:116 #: src/views/settings/index.tsx:119
msgid "Trello disconnected" msgid "Trello disconnected"
msgstr "Trello desconectado" msgstr "Trello desconectado"
@@ -1667,7 +1692,7 @@ msgstr "No se puede crear la lista de verificación"
msgid "Unable to create list" msgid "Unable to create list"
msgstr "No se puede crear la lista" msgstr "No se puede crear la lista"
#: src/components/NewWorkspaceForm.tsx:41 #: src/components/NewWorkspaceForm.tsx:154
msgid "Unable to create workspace" msgid "Unable to create workspace"
msgstr "No se puede crear el espacio de trabajo" msgstr "No se puede crear el espacio de trabajo"
@@ -1766,6 +1791,7 @@ msgstr "Comentarios ilimitados"
msgid "Unlimited lists" msgid "Unlimited lists"
msgstr "Listas ilimitadas" msgstr "Listas ilimitadas"
#: src/components/NewWorkspaceForm.tsx:329
#: src/views/settings/components/UpgradeToProConfirmation.tsx:64 #: src/views/settings/components/UpgradeToProConfirmation.tsx:64
msgid "Unlimited members" msgid "Unlimited members"
msgstr "Miembros ilimitados" msgstr "Miembros ilimitados"
@@ -1799,15 +1825,19 @@ msgstr "actualizó el título"
msgid "updated the title to <0>{0}</0>" msgid "updated the title to <0>{0}</0>"
msgstr "actualizó el título a <0>{0}</0>" msgstr "actualizó el título a <0>{0}</0>"
#: src/views/settings/components/UpgradeToProConfirmation.tsx:99 #: src/views/settings/components/UpgradeToProConfirmation.tsx:109
msgid "Upgrade" msgid "Upgrade"
msgstr "Actualizar" msgstr "Actualizar"
#: src/views/settings/components/UpgradeToProConfirmation.tsx:52 #: src/views/settings/components/UpgradeToProConfirmation.tsx:52
#: src/views/settings/index.tsx:213 #: src/views/settings/index.tsx:216
msgid "Upgrade to Pro" msgid "Upgrade to Pro"
msgstr "Actualizar a Pro" msgstr "Actualizar a Pro"
#: src/components/NewWorkspaceForm.tsx:369
msgid "Upgrade to Pro ($29/month)"
msgstr "Actualizar a Pro ($29/mes)"
#: src/views/members/components/InviteMemberForm.tsx:224 #: src/views/members/components/InviteMemberForm.tsx:224
msgid "Upgrade to Team Plan" msgid "Upgrade to Team Plan"
msgstr "Actualizar al Plan de Equipo" msgstr "Actualizar al Plan de Equipo"
@@ -1817,14 +1847,17 @@ msgstr "Actualizar al Plan de Equipo"
msgid "Urgent" msgid "Urgent"
msgstr "Urgente" msgstr "Urgente"
#: src/components/NewWorkspaceForm.tsx:35
#: src/views/settings/components/UpdateWorkspaceUrlForm.tsx:36 #: src/views/settings/components/UpdateWorkspaceUrlForm.tsx:36
msgid "URL can only contain letters, numbers, and hyphens" msgid "URL can only contain letters, numbers, and hyphens"
msgstr "La URL solo puede contener letras, números y guiones" msgstr "La URL solo puede contener letras, números y guiones"
#: src/components/NewWorkspaceForm.tsx:33
#: src/views/settings/components/UpdateWorkspaceUrlForm.tsx:34 #: src/views/settings/components/UpdateWorkspaceUrlForm.tsx:34
msgid "URL cannot exceed 24 characters" msgid "URL cannot exceed 24 characters"
msgstr "La URL no puede exceder los 24 caracteres" msgstr "La URL no puede exceder los 24 caracteres"
#: src/components/NewWorkspaceForm.tsx:31
#: src/views/settings/components/UpdateWorkspaceUrlForm.tsx:32 #: src/views/settings/components/UpdateWorkspaceUrlForm.tsx:32
msgid "URL must be at least 3 characters long" msgid "URL must be at least 3 characters long"
msgstr "La URL debe tener al menos 3 caracteres" msgstr "La URL debe tener al menos 3 caracteres"
@@ -1833,7 +1866,7 @@ msgstr "La URL debe tener al menos 3 caracteres"
msgid "Use template" msgid "Use template"
msgstr "Usar plantilla" msgstr "Usar plantilla"
#: src/views/members/index.tsx:217 #: src/views/members/index.tsx:237
msgid "User" msgid "User"
msgstr "Usuario" msgstr "Usuario"
@@ -1845,11 +1878,11 @@ msgstr "El usuario ya es miembro de este espacio de trabajo"
msgid "Video" msgid "Video"
msgstr "Video" msgstr "Video"
#: src/views/settings/index.tsx:296 #: src/views/settings/index.tsx:299
msgid "View and manage your API keys." msgid "View and manage your API keys."
msgstr "Ver y gestionar tus claves API." msgstr "Ver y gestionar tus claves API."
#: src/views/settings/index.tsx:235 #: src/views/settings/index.tsx:238
msgid "View and manage your billing and subscription." msgid "View and manage your billing and subscription."
msgstr "Ver y gestionar tu facturación y suscripción." msgstr "Ver y gestionar tu facturación y suscripción."
@@ -1905,11 +1938,15 @@ msgstr "¿Por qué crear un Trello de código abierto?"
msgid "Workspace" msgid "Workspace"
msgstr "Espacio de trabajo" msgstr "Espacio de trabajo"
#: src/components/NewWorkspaceForm.tsx:143
msgid "Workspace created successfully. You can upgrade later in settings."
msgstr "Espacio de trabajo creado con éxito. Puedes actualizar más tarde en configuración."
#: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:26 #: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:26
msgid "Workspace deleted" msgid "Workspace deleted"
msgstr "Espacio de trabajo eliminado" msgstr "Espacio de trabajo eliminado"
#: src/views/settings/index.tsx:199 #: src/views/settings/index.tsx:202
msgid "Workspace description" msgid "Workspace description"
msgstr "Descripción del espacio de trabajo" msgstr "Descripción del espacio de trabajo"
@@ -1930,8 +1967,8 @@ msgstr "Descripción del espacio de trabajo actualizada"
msgid "Workspace members" msgid "Workspace members"
msgstr "Miembros del espacio de trabajo" msgstr "Miembros del espacio de trabajo"
#: src/components/NewWorkspaceForm.tsx:81 #: src/components/NewWorkspaceForm.tsx:259
#: src/views/settings/index.tsx:180 #: src/views/settings/index.tsx:183
msgid "Workspace name" msgid "Workspace name"
msgstr "Nombre del espacio de trabajo" msgstr "Nombre del espacio de trabajo"
@@ -1939,6 +1976,10 @@ msgstr "Nombre del espacio de trabajo"
msgid "Workspace name cannot exceed 24 characters" msgid "Workspace name cannot exceed 24 characters"
msgstr "El nombre del espacio de trabajo no puede exceder los 24 caracteres" msgstr "El nombre del espacio de trabajo no puede exceder los 24 caracteres"
#: src/components/NewWorkspaceForm.tsx:27
msgid "Workspace name is required"
msgstr "El nombre del espacio de trabajo es obligatorio"
#: src/views/settings/components/UpdateWorkspaceNameForm.tsx:14 #: src/views/settings/components/UpdateWorkspaceNameForm.tsx:14
msgid "Workspace name must be at least 3 characters long" msgid "Workspace name must be at least 3 characters long"
msgstr "El nombre del espacio de trabajo debe tener al menos 3 caracteres" msgstr "El nombre del espacio de trabajo debe tener al menos 3 caracteres"
@@ -1951,10 +1992,14 @@ msgstr "Nombre del espacio de trabajo actualizado"
msgid "Workspace slug updated" msgid "Workspace slug updated"
msgstr "Slug del espacio de trabajo actualizado" msgstr "Slug del espacio de trabajo actualizado"
#: src/views/settings/index.tsx:189 #: src/views/settings/index.tsx:192
msgid "Workspace URL" msgid "Workspace URL"
msgstr "URL del espacio de trabajo" msgstr "URL del espacio de trabajo"
#: src/components/NewWorkspaceForm.tsx:273
msgid "workspace-url"
msgstr "workspace-url"
#: src/views/boards/components/TemplateBoards.tsx:30 #: src/views/boards/components/TemplateBoards.tsx:30
msgid "Writing" msgid "Writing"
msgstr "Escritura" msgstr "Escritura"
@@ -1967,7 +2012,7 @@ msgstr "Anual"
msgid "Yes, we offer an forever free plan for individual use. No restrictions, no paywalls, no limits." msgid "Yes, we offer an forever free plan for individual use. No restrictions, no paywalls, no limits."
msgstr "Sí, ofrecemos un plan gratuito para siempre para uso individual. Sin restricciones, sin muros de pago, sin límites." msgstr "Sí, ofrecemos un plan gratuito para siempre para uso individual. Sin restricciones, sin muros de pago, sin límites."
#: src/views/settings/index.tsx:328 #: src/views/settings/index.tsx:331
msgid "You are about to change your password." msgid "You are about to change your password."
msgstr "Estás a punto de cambiar tu contraseña." msgstr "Estás a punto de cambiar tu contraseña."
@@ -2015,11 +2060,11 @@ msgstr "Tu contraseña ha sido cambiada."
msgid "Your profile image has been updated." msgid "Your profile image has been updated."
msgstr "Tu imagen de perfil ha sido actualizada." msgstr "Tu imagen de perfil ha sido actualizada."
#: src/views/settings/index.tsx:117 #: src/views/settings/index.tsx:120
msgid "Your Trello account has been disconnected." msgid "Your Trello account has been disconnected."
msgstr "Tu cuenta de Trello ha sido desconectada." msgstr "Tu cuenta de Trello ha sido desconectada."
#: src/views/settings/index.tsx:278 #: src/views/settings/index.tsx:281
msgid "Your Trello account is connected." msgid "Your Trello account is connected."
msgstr "Tu cuenta de Trello está conectada." msgstr "Tu cuenta de Trello está conectada."

File diff suppressed because one or more lines are too long

View File

@@ -148,7 +148,7 @@ msgstr "Tous les systèmes opérationnels"
msgid "Already have an account? <0><1>Sign in</1></0>" msgid "Already have an account? <0><1>Sign in</1></0>"
msgstr "Vous avez déjà un compte ? <0><1>Connectez-vous</1></0>" msgstr "Vous avez déjà un compte ? <0><1>Connectez-vous</1></0>"
#: src/views/settings/index.tsx:124 #: src/views/settings/index.tsx:127
msgid "An error occurred while disconnecting your Trello account." msgid "An error occurred while disconnecting your Trello account."
msgstr "Une erreur s'est produite lors de la déconnexion de votre compte Trello." msgstr "Une erreur s'est produite lors de la déconnexion de votre compte Trello."
@@ -156,7 +156,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/settings/index.tsx:293 #: src/views/settings/index.tsx:296
msgid "API keys" msgid "API keys"
msgstr "Clés API" msgstr "Clés API"
@@ -227,11 +227,11 @@ msgid "billed monthly"
msgstr "facturation mensuelle" msgstr "facturation mensuelle"
#: src/views/boards/components/TemplateBoards.tsx:55 #: src/views/boards/components/TemplateBoards.tsx:55
#: src/views/settings/index.tsx:232 #: src/views/settings/index.tsx:235
msgid "Billing" msgid "Billing"
msgstr "Facturation" msgstr "Facturation"
#: src/views/settings/index.tsx:242 #: src/views/settings/index.tsx:245
msgid "Billing portal" msgid "Billing portal"
msgstr "Portail de facturation" msgstr "Portail de facturation"
@@ -243,9 +243,10 @@ msgstr "Article de blog"
msgid "Board" msgid "Board"
msgstr "Tableau" msgstr "Tableau"
#: src/views/settings/components/UpgradeToProConfirmation.tsx:80 #: src/components/NewWorkspaceForm.tsx:346
msgid "Board analytics (coming soon)" #: src/views/settings/components/UpgradeToProConfirmation.tsx:81
msgstr "Analyses de tableau (bientôt disponible)" msgid "Board analytics"
msgstr "Analyses du tableau"
#: src/views/boards/components/NewBoardForm.tsx:21 #: src/views/boards/components/NewBoardForm.tsx:21
msgid "Board name cannot exceed 100 characters" msgid "Board name cannot exceed 100 characters"
@@ -315,7 +316,7 @@ msgstr "Rapport de bug"
#: src/views/settings/components/ChangePasswordConfirmation.tsx:168 #: src/views/settings/components/ChangePasswordConfirmation.tsx:168
#: src/views/settings/components/DeleteAccountConfirmation.tsx:88 #: src/views/settings/components/DeleteAccountConfirmation.tsx:88
#: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:98 #: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:98
#: src/views/settings/components/UpgradeToProConfirmation.tsx:94 #: src/views/settings/components/UpgradeToProConfirmation.tsx:104
msgid "Cancel" msgid "Cancel"
msgstr "Annuler" msgstr "Annuler"
@@ -329,12 +330,12 @@ msgstr "Titre de la carte"
#: src/views/settings/components/ChangePasswordConfirmation.tsx:109 #: src/views/settings/components/ChangePasswordConfirmation.tsx:109
#: src/views/settings/components/ChangePasswordConfirmation.tsx:178 #: src/views/settings/components/ChangePasswordConfirmation.tsx:178
#: src/views/settings/index.tsx:325 #: src/views/settings/index.tsx:328
#: src/views/settings/index.tsx:335 #: src/views/settings/index.tsx:338
msgid "Change Password" msgid "Change Password"
msgstr "Modifier le mot de passe" msgstr "Modifier le mot de passe"
#: src/views/settings/index.tsx:224 #: src/views/settings/index.tsx:227
msgid "Change the language of the app." msgid "Change the language of the app."
msgstr "Changer la langue de l'application." msgstr "Changer la langue de l'application."
@@ -364,7 +365,9 @@ msgstr "Revue de code"
msgid "Collaborate seamlessly with your team." msgid "Collaborate seamlessly with your team."
msgstr "Collaborez en toute fluidité avec votre équipe." msgstr "Collaborez en toute fluidité avec votre équipe."
#: src/components/NewWorkspaceForm.tsx:349
#: src/views/home/components/Features.tsx:66 #: src/views/home/components/Features.tsx:66
#: src/views/settings/components/UpgradeToProConfirmation.tsx:84
msgid "Coming soon" msgid "Coming soon"
msgstr "Bientôt disponible" msgstr "Bientôt disponible"
@@ -398,7 +401,7 @@ msgid "Confirm your new password"
msgstr "Confirmez votre nouveau mot de passe" msgstr "Confirmez votre nouveau mot de passe"
#: src/views/boards/components/ImportBoardsForm.tsx:157 #: src/views/boards/components/ImportBoardsForm.tsx:157
#: src/views/settings/index.tsx:269 #: src/views/settings/index.tsx:272
msgid "Connect Trello" msgid "Connect Trello"
msgstr "Connecter Trello" msgstr "Connecter Trello"
@@ -406,7 +409,7 @@ msgstr "Connecter Trello"
msgid "Connect your favorite tools to streamline your workflow." msgid "Connect your favorite tools to streamline your workflow."
msgstr "Connectez vos outils favoris pour simplifier votre flux de travail." msgstr "Connectez vos outils favoris pour simplifier votre flux de travail."
#: src/views/settings/index.tsx:256 #: src/views/settings/index.tsx:259
msgid "Connect your Trello account to import boards." msgid "Connect your Trello account to import boards."
msgstr "Connectez votre compte Trello pour importer des tableaux." msgstr "Connectez votre compte Trello pour importer des tableaux."
@@ -478,7 +481,7 @@ msgstr "Créer une nouvelle étiquette"
msgid "Create new list" msgid "Create new list"
msgstr "Créer une nouvelle liste" msgstr "Créer une nouvelle liste"
#: src/components/NewWorkspaceForm.tsx:94 #: src/components/NewWorkspaceForm.tsx:384
#: src/components/WorkspaceMenu.tsx:116 #: src/components/WorkspaceMenu.tsx:116
msgid "Create workspace" msgid "Create workspace"
msgstr "Créer un espace de travail" msgstr "Créer un espace de travail"
@@ -499,6 +502,11 @@ msgstr "Le mot de passe actuel est requis"
msgid "Custom domain" msgid "Custom domain"
msgstr "Domaine personnalisé" msgstr "Domaine personnalisé"
#: src/components/NewWorkspaceForm.tsx:315
msgid "Custom URLs require upgrading to a Pro plan"
msgstr "Les URL personnalisées nécessitent une mise à niveau vers un forfait Pro"
#: src/components/NewWorkspaceForm.tsx:339
#: src/views/settings/components/UpgradeToProConfirmation.tsx:74 #: src/views/settings/components/UpgradeToProConfirmation.tsx:74
msgid "Custom workspace URL" msgid "Custom workspace URL"
msgstr "URL d'espace de travail personnalisée" msgstr "URL d'espace de travail personnalisée"
@@ -520,8 +528,8 @@ msgid "Delete"
msgstr "Supprimer" msgstr "Supprimer"
#: src/views/settings/components/DeleteAccountConfirmation.tsx:96 #: src/views/settings/components/DeleteAccountConfirmation.tsx:96
#: src/views/settings/index.tsx:343 #: src/views/settings/index.tsx:346
#: src/views/settings/index.tsx:353 #: src/views/settings/index.tsx:356
msgid "Delete account" msgid "Delete account"
msgstr "Supprimer le compte" msgstr "Supprimer le compte"
@@ -542,8 +550,8 @@ msgid "Delete list"
msgstr "Supprimer la liste" msgstr "Supprimer la liste"
#: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:106 #: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:106
#: src/views/settings/index.tsx:306 #: src/views/settings/index.tsx:309
#: src/views/settings/index.tsx:317 #: src/views/settings/index.tsx:320
msgid "Delete workspace" msgid "Delete workspace"
msgstr "Supprimer l'espace de travail" msgstr "Supprimer l'espace de travail"
@@ -569,7 +577,7 @@ msgstr "a supprimé l'élément <0>{0}</0> de la checklist"
msgid "Design" msgid "Design"
msgstr "Design" msgstr "Design"
#: src/views/settings/index.tsx:284 #: src/views/settings/index.tsx:287
msgid "Disconnect Trello" msgid "Disconnect Trello"
msgstr "Déconnecter Trello" msgstr "Déconnecter Trello"
@@ -577,7 +585,7 @@ msgstr "Déconnecter Trello"
msgid "Discuss and collaborate on cards." msgid "Discuss and collaborate on cards."
msgstr "Discutez et collaborez sur les cartes." msgstr "Discutez et collaborez sur les cartes."
#: src/views/settings/index.tsx:173 #: src/views/settings/index.tsx:176
msgid "Display name" msgid "Display name"
msgstr "Nom d'affichage" msgstr "Nom d'affichage"
@@ -695,7 +703,7 @@ msgstr "Erreur lors de la suppression de l'étiquette"
msgid "Error deleting workspace" msgid "Error deleting workspace"
msgstr "Erreur lors de la suppression de l'espace de travail" msgstr "Erreur lors de la suppression de l'espace de travail"
#: src/views/settings/index.tsx:123 #: src/views/settings/index.tsx:126
msgid "Error disconnecting Trello" msgid "Error disconnecting Trello"
msgstr "Erreur lors de la déconnexion de Trello" msgstr "Erreur lors de la déconnexion de Trello"
@@ -729,6 +737,10 @@ msgstr "Erreur lors de la mise à jour de l'URL de l'espace de travail"
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"
#: src/components/NewWorkspaceForm.tsx:142
msgid "Error upgrading to Pro"
msgstr "Erreur lors de la mise à niveau vers Pro"
#: src/views/settings/components/Avatar.tsx:56 #: src/views/settings/components/Avatar.tsx:56
#: src/views/settings/components/Avatar.tsx:97 #: src/views/settings/components/Avatar.tsx:97
msgid "Error uploading profile image" msgid "Error uploading profile image"
@@ -796,7 +808,7 @@ msgid "Free"
msgstr "Gratuit" msgstr "Gratuit"
#: src/views/members/components/InviteMemberForm.tsx:193 #: src/views/members/components/InviteMemberForm.tsx:193
#: src/views/members/index.tsx:189 #: src/views/members/index.tsx:208
msgid "Free Plan" msgid "Free Plan"
msgstr "Forfait gratuit" msgstr "Forfait gratuit"
@@ -955,7 +967,7 @@ msgstr "Entretien"
msgid "Invalid email address" msgid "Invalid email address"
msgstr "Adresse e-mail invalide" msgstr "Adresse e-mail invalide"
#: src/views/members/index.tsx:201 #: src/views/members/index.tsx:221
msgid "Invite" msgid "Invite"
msgstr "Inviter" msgstr "Inviter"
@@ -999,15 +1011,20 @@ msgstr "Étiquettes"
msgid "Labels & Filters" msgid "Labels & Filters"
msgstr "Étiquettes & filtres" msgstr "Étiquettes & filtres"
#: src/views/settings/index.tsx:221 #: src/views/settings/index.tsx:224
msgid "Language" msgid "Language"
msgstr "Langue" msgstr "Langue"
#: src/components/NewWorkspaceForm.tsx:332
#: src/views/settings/components/UpgradeToProConfirmation.tsx:67 #: src/views/settings/components/UpgradeToProConfirmation.tsx:67
msgid "Launch offer" msgid "Launch offer"
msgstr "Offre de lancement" msgstr "Offre de lancement"
#: src/views/home/components/Pricing.tsx:98 #: src/views/members/index.tsx:191
msgid "Launch offer: Get unlimited members with Pro"
msgstr "Offre de lancement : obtenez des membres illimités avec Pro"
#: src/views/home/components/Pricing.tsx:99
msgid "Launch offer: unlimited seats for just $29/month with Pro" msgid "Launch offer: unlimited seats for just $29/month with Pro"
msgstr "Offre de lancement : sièges illimités pour seulement 29 $/mois avec Pro" msgstr "Offre de lancement : sièges illimités pour seulement 29 $/mois avec Pro"
@@ -1076,12 +1093,12 @@ msgstr "Priorité moyenne"
#: src/views/board/components/Filters.tsx:93 #: src/views/board/components/Filters.tsx:93
#: src/views/board/components/NewCardForm.tsx:357 #: src/views/board/components/NewCardForm.tsx:357
#: src/views/card/index.tsx:125 #: src/views/card/index.tsx:125
#: src/views/members/index.tsx:172 #: src/views/members/index.tsx:178
msgid "Members" msgid "Members"
msgstr "Membres" msgstr "Membres"
#. placeholder {0}: workspace.name ?? "Workspace" #. placeholder {0}: workspace.name ?? "Workspace"
#: src/views/members/index.tsx:168 #: src/views/members/index.tsx:173
msgid "Members | {0}" msgid "Members | {0}"
msgstr "Membres | {0}" msgstr "Membres | {0}"
@@ -1153,7 +1170,7 @@ msgstr "Le nouveau mot de passe doit être différent du mot de passe actuel"
msgid "New Ticket" msgid "New Ticket"
msgstr "Nouveau ticket" msgstr "Nouveau ticket"
#: src/components/NewWorkspaceForm.tsx:65 #: src/components/NewWorkspaceForm.tsx:240
msgid "New workspace" msgid "New workspace"
msgstr "Nouvel espace de travail" msgstr "Nouvel espace de travail"
@@ -1189,11 +1206,11 @@ msgstr "Offre"
msgid "Onboarding" msgid "Onboarding"
msgstr "Intégration" msgstr "Intégration"
#: src/views/settings/index.tsx:346 #: src/views/settings/index.tsx:349
msgid "Once you delete your account, there is no going back. This action cannot be undone." msgid "Once you delete your account, there is no going back. This action cannot be undone."
msgstr "Une fois que vous supprimez votre compte, il n'y a pas de retour possible. Cette action ne peut pas être annulée." msgstr "Une fois que vous supprimez votre compte, il n'y a pas de retour possible. Cette action ne peut pas être annulée."
#: src/views/settings/index.tsx:309 #: src/views/settings/index.tsx:312
msgid "Once you delete your workspace, there is no going back. This action cannot be undone." msgid "Once you delete your workspace, there is no going back. This action cannot be undone."
msgstr "Une fois que vous supprimez votre espace de travail, il n'y a pas de retour possible. Cette action ne peut pas être annulée." msgstr "Une fois que vous supprimez votre espace de travail, il n'y a pas de retour possible. Cette action ne peut pas être annulée."
@@ -1225,11 +1242,11 @@ msgstr "Le mot de passe doit comporter au moins 8 caractères"
msgid "Passwords do not match" msgid "Passwords do not match"
msgstr "Les mots de passe ne correspondent pas" msgstr "Les mots de passe ne correspondent pas"
#: src/views/home/components/Pricing.tsx:101 #: src/views/home/components/Pricing.tsx:102
msgid "Payment frequency" msgid "Payment frequency"
msgstr "Fréquence de paiement" msgstr "Fréquence de paiement"
#: src/views/members/index.tsx:129 #: src/views/members/index.tsx:134
msgid "Pending" msgid "Pending"
msgstr "En attente" msgstr "En attente"
@@ -1268,7 +1285,7 @@ msgstr "Veuillez sélectionner un fichier à télécharger."
#: src/components/DeleteLabelConfirmation.tsx:26 #: src/components/DeleteLabelConfirmation.tsx:26
#: src/components/FeedbackModal.tsx:41 #: src/components/FeedbackModal.tsx:41
#: src/components/NewWorkspaceForm.tsx:42 #: src/components/NewWorkspaceForm.tsx:155
#: src/views/board/components/NewCardForm.tsx:174 #: src/views/board/components/NewCardForm.tsx:174
#: src/views/board/components/NewListForm.tsx:78 #: src/views/board/components/NewListForm.tsx:78
#: src/views/board/components/UpdateBoardSlugForm.tsx:72 #: src/views/board/components/UpdateBoardSlugForm.tsx:72
@@ -1312,7 +1329,7 @@ msgid "Pricing"
msgstr "Tarifs" msgstr "Tarifs"
#: src/views/home/components/Pricing.tsx:56 #: src/views/home/components/Pricing.tsx:56
#: src/views/settings/components/UpgradeToProConfirmation.tsx:86 #: src/views/settings/components/UpgradeToProConfirmation.tsx:91
msgid "Priority email support" msgid "Priority email support"
msgstr "Support par e-mail prioritaire" msgstr "Support par e-mail prioritaire"
@@ -1324,7 +1341,7 @@ msgstr "Politique de confidentialité"
msgid "Private" msgid "Private"
msgstr "Privé" msgstr "Privé"
#: src/views/members/index.tsx:186 #: src/views/members/index.tsx:205
msgid "Pro Plan" msgid "Pro Plan"
msgstr "Plan Pro" msgstr "Plan Pro"
@@ -1336,7 +1353,7 @@ msgstr "Plan Pro ∞"
msgid "Profile image updated" msgid "Profile image updated"
msgstr "Image de profil mise à jour" msgstr "Image de profil mise à jour"
#: src/views/settings/index.tsx:168 #: src/views/settings/index.tsx:171
msgid "Profile picture" msgid "Profile picture"
msgstr "Photo de profil" msgstr "Photo de profil"
@@ -1372,7 +1389,7 @@ msgstr "À distance"
msgid "Remove" msgid "Remove"
msgstr "Supprimer" msgstr "Supprimer"
#: src/views/members/index.tsx:143 #: src/views/members/index.tsx:148
msgid "Remove member" msgid "Remove member"
msgstr "Supprimer le membre" msgstr "Supprimer le membre"
@@ -1428,7 +1445,7 @@ msgstr "Révoquer"
msgid "Roadmap" msgid "Roadmap"
msgstr "Feuille de route" msgstr "Feuille de route"
#: src/views/members/index.tsx:223 #: src/views/members/index.tsx:243
msgid "Role" msgid "Role"
msgstr "Rôle" msgstr "Rôle"
@@ -1477,12 +1494,12 @@ msgid "Senior"
msgstr "Senior" msgstr "Senior"
#: src/components/SideNavigation.tsx:78 #: src/components/SideNavigation.tsx:78
#: src/views/settings/index.tsx:162 #: src/views/settings/index.tsx:165
msgid "Settings" msgid "Settings"
msgstr "Paramètres" msgstr "Paramètres"
#. placeholder {0}: workspace.name ?? "Workspace" #. placeholder {0}: workspace.name ?? "Workspace"
#: src/views/settings/index.tsx:158 #: src/views/settings/index.tsx:161
msgid "Settings | {0}" msgid "Settings | {0}"
msgstr "Paramètres | {0}" msgstr "Paramètres | {0}"
@@ -1550,7 +1567,7 @@ msgid "System"
msgstr "Système" msgstr "Système"
#: src/views/members/components/InviteMemberForm.tsx:182 #: src/views/members/components/InviteMemberForm.tsx:182
#: src/views/members/index.tsx:188 #: src/views/members/index.tsx:207
msgid "Team Plan" msgid "Team Plan"
msgstr "Forfait d'équipe" msgstr "Forfait d'équipe"
@@ -1618,6 +1635,14 @@ msgstr "Cela entraînera la suppression définitive de toutes les données assoc
msgid "This will result in the permanent deletion of all data associated with your account." msgid "This will result in the permanent deletion of all data associated with your account."
msgstr "Cela entraînera la suppression définitive de toutes les données associées à votre compte." msgstr "Cela entraînera la suppression définitive de toutes les données associées à votre compte."
#: src/components/NewWorkspaceForm.tsx:284
msgid "This workspace URL has already been taken"
msgstr "Cette URL d'espace de travail est déjà prise"
#: src/components/NewWorkspaceForm.tsx:286
msgid "This workspace URL is reserved"
msgstr "Cette URL d'espace de travail est réservée"
#: src/views/settings/components/UpdateWorkspaceUrlForm.tsx:123 #: src/views/settings/components/UpdateWorkspaceUrlForm.tsx:123
msgid "This workspace username has already been taken" msgid "This workspace username has already been taken"
msgstr "Ce nom d'utilisateur d'espace de travail est déjà pris" msgstr "Ce nom d'utilisateur d'espace de travail est déjà pris"
@@ -1635,7 +1660,7 @@ msgstr "Basculer le menu"
msgid "Track all card changes with detailed activity history." msgid "Track all card changes with detailed activity history."
msgstr "Suivez tous les changements de cartes avec un historique d'activité détaillé." msgstr "Suivez tous les changements de cartes avec un historique d'activité détaillé."
#: src/views/settings/index.tsx:116 #: src/views/settings/index.tsx:119
msgid "Trello disconnected" msgid "Trello disconnected"
msgstr "Trello déconnecté" msgstr "Trello déconnecté"
@@ -1667,7 +1692,7 @@ msgstr "Impossible de créer la liste de contrôle"
msgid "Unable to create list" msgid "Unable to create list"
msgstr "Impossible de créer une liste" msgstr "Impossible de créer une liste"
#: src/components/NewWorkspaceForm.tsx:41 #: src/components/NewWorkspaceForm.tsx:154
msgid "Unable to create workspace" msgid "Unable to create workspace"
msgstr "Impossible de créer l'espace de travail" msgstr "Impossible de créer l'espace de travail"
@@ -1766,6 +1791,7 @@ msgstr "Commentaires illimités"
msgid "Unlimited lists" msgid "Unlimited lists"
msgstr "Listes illimitées" msgstr "Listes illimitées"
#: src/components/NewWorkspaceForm.tsx:329
#: src/views/settings/components/UpgradeToProConfirmation.tsx:64 #: src/views/settings/components/UpgradeToProConfirmation.tsx:64
msgid "Unlimited members" msgid "Unlimited members"
msgstr "Membres illimités" msgstr "Membres illimités"
@@ -1799,15 +1825,19 @@ msgstr "a mis à jour le titre"
msgid "updated the title to <0>{0}</0>" msgid "updated the title to <0>{0}</0>"
msgstr "a mis à jour le titre en <0>{0}</0>" msgstr "a mis à jour le titre en <0>{0}</0>"
#: src/views/settings/components/UpgradeToProConfirmation.tsx:99 #: src/views/settings/components/UpgradeToProConfirmation.tsx:109
msgid "Upgrade" msgid "Upgrade"
msgstr "Mettre à niveau" msgstr "Mettre à niveau"
#: src/views/settings/components/UpgradeToProConfirmation.tsx:52 #: src/views/settings/components/UpgradeToProConfirmation.tsx:52
#: src/views/settings/index.tsx:213 #: src/views/settings/index.tsx:216
msgid "Upgrade to Pro" msgid "Upgrade to Pro"
msgstr "Passer à Pro" msgstr "Passer à Pro"
#: src/components/NewWorkspaceForm.tsx:369
msgid "Upgrade to Pro ($29/month)"
msgstr "Passer à Pro (29 $/mois)"
#: src/views/members/components/InviteMemberForm.tsx:224 #: src/views/members/components/InviteMemberForm.tsx:224
msgid "Upgrade to Team Plan" msgid "Upgrade to Team Plan"
msgstr "Passer au forfait d'équipe" msgstr "Passer au forfait d'équipe"
@@ -1817,14 +1847,17 @@ msgstr "Passer au forfait d'équipe"
msgid "Urgent" msgid "Urgent"
msgstr "Urgent" msgstr "Urgent"
#: src/components/NewWorkspaceForm.tsx:35
#: src/views/settings/components/UpdateWorkspaceUrlForm.tsx:36 #: src/views/settings/components/UpdateWorkspaceUrlForm.tsx:36
msgid "URL can only contain letters, numbers, and hyphens" msgid "URL can only contain letters, numbers, and hyphens"
msgstr "L'URL ne peut contenir que des lettres, des chiffres et des traits d'union" msgstr "L'URL ne peut contenir que des lettres, des chiffres et des traits d'union"
#: src/components/NewWorkspaceForm.tsx:33
#: src/views/settings/components/UpdateWorkspaceUrlForm.tsx:34 #: src/views/settings/components/UpdateWorkspaceUrlForm.tsx:34
msgid "URL cannot exceed 24 characters" msgid "URL cannot exceed 24 characters"
msgstr "L'URL ne peut pas dépasser 24 caractères" msgstr "L'URL ne peut pas dépasser 24 caractères"
#: src/components/NewWorkspaceForm.tsx:31
#: src/views/settings/components/UpdateWorkspaceUrlForm.tsx:32 #: src/views/settings/components/UpdateWorkspaceUrlForm.tsx:32
msgid "URL must be at least 3 characters long" msgid "URL must be at least 3 characters long"
msgstr "L'URL doit comporter au moins 3 caractères" msgstr "L'URL doit comporter au moins 3 caractères"
@@ -1833,7 +1866,7 @@ msgstr "L'URL doit comporter au moins 3 caractères"
msgid "Use template" msgid "Use template"
msgstr "Utiliser le modèle" msgstr "Utiliser le modèle"
#: src/views/members/index.tsx:217 #: src/views/members/index.tsx:237
msgid "User" msgid "User"
msgstr "Utilisateur" msgstr "Utilisateur"
@@ -1845,11 +1878,11 @@ msgstr "L'utilisateur est déjà membre de cet espace de travail"
msgid "Video" msgid "Video"
msgstr "Vidéo" msgstr "Vidéo"
#: src/views/settings/index.tsx:296 #: src/views/settings/index.tsx:299
msgid "View and manage your API keys." msgid "View and manage your API keys."
msgstr "Consultez et gérez vos clés API." msgstr "Consultez et gérez vos clés API."
#: src/views/settings/index.tsx:235 #: src/views/settings/index.tsx:238
msgid "View and manage your billing and subscription." msgid "View and manage your billing and subscription."
msgstr "Consultez et gérez votre facturation et votre abonnement." msgstr "Consultez et gérez votre facturation et votre abonnement."
@@ -1905,11 +1938,15 @@ msgstr "Pourquoi créer un Trello open source ?"
msgid "Workspace" msgid "Workspace"
msgstr "Espace de travail" msgstr "Espace de travail"
#: src/components/NewWorkspaceForm.tsx:143
msgid "Workspace created successfully. You can upgrade later in settings."
msgstr "Espace de travail créé avec succès. Vous pourrez effectuer la mise à niveau ultérieurement dans les paramètres."
#: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:26 #: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:26
msgid "Workspace deleted" msgid "Workspace deleted"
msgstr "Espace de travail supprimé" msgstr "Espace de travail supprimé"
#: src/views/settings/index.tsx:199 #: src/views/settings/index.tsx:202
msgid "Workspace description" msgid "Workspace description"
msgstr "Description de l'espace de travail" msgstr "Description de l'espace de travail"
@@ -1930,8 +1967,8 @@ msgstr "Description de l'espace de travail mise à jour"
msgid "Workspace members" msgid "Workspace members"
msgstr "Membres de l'espace de travail" msgstr "Membres de l'espace de travail"
#: src/components/NewWorkspaceForm.tsx:81 #: src/components/NewWorkspaceForm.tsx:259
#: src/views/settings/index.tsx:180 #: src/views/settings/index.tsx:183
msgid "Workspace name" msgid "Workspace name"
msgstr "Nom de l'espace de travail" msgstr "Nom de l'espace de travail"
@@ -1939,6 +1976,10 @@ msgstr "Nom de l'espace de travail"
msgid "Workspace name cannot exceed 24 characters" msgid "Workspace name cannot exceed 24 characters"
msgstr "Le nom de l'espace de travail ne peut pas dépasser 24 caractères" msgstr "Le nom de l'espace de travail ne peut pas dépasser 24 caractères"
#: src/components/NewWorkspaceForm.tsx:27
msgid "Workspace name is required"
msgstr "Le nom de l'espace de travail est requis"
#: src/views/settings/components/UpdateWorkspaceNameForm.tsx:14 #: src/views/settings/components/UpdateWorkspaceNameForm.tsx:14
msgid "Workspace name must be at least 3 characters long" msgid "Workspace name must be at least 3 characters long"
msgstr "Le nom de l'espace de travail doit comporter au moins 3 caractères" msgstr "Le nom de l'espace de travail doit comporter au moins 3 caractères"
@@ -1951,10 +1992,14 @@ msgstr "Nom de l'espace de travail mis à jour"
msgid "Workspace slug updated" msgid "Workspace slug updated"
msgstr "Slug de l'espace de travail mis à jour" msgstr "Slug de l'espace de travail mis à jour"
#: src/views/settings/index.tsx:189 #: src/views/settings/index.tsx:192
msgid "Workspace URL" msgid "Workspace URL"
msgstr "URL de l'espace de travail" msgstr "URL de l'espace de travail"
#: src/components/NewWorkspaceForm.tsx:273
msgid "workspace-url"
msgstr "workspace-url"
#: src/views/boards/components/TemplateBoards.tsx:30 #: src/views/boards/components/TemplateBoards.tsx:30
msgid "Writing" msgid "Writing"
msgstr "Écriture" msgstr "Écriture"
@@ -1967,7 +2012,7 @@ msgstr "Annuel"
msgid "Yes, we offer an forever free plan for individual use. No restrictions, no paywalls, no limits." msgid "Yes, we offer an forever free plan for individual use. No restrictions, no paywalls, no limits."
msgstr "Oui, nous proposons un plan gratuit à vie pour un usage individuel. Aucune restriction, aucun paywall, aucune limite." msgstr "Oui, nous proposons un plan gratuit à vie pour un usage individuel. Aucune restriction, aucun paywall, aucune limite."
#: src/views/settings/index.tsx:328 #: src/views/settings/index.tsx:331
msgid "You are about to change your password." msgid "You are about to change your password."
msgstr "Vous êtes sur le point de modifier votre mot de passe." msgstr "Vous êtes sur le point de modifier votre mot de passe."
@@ -2015,11 +2060,11 @@ msgstr "Votre mot de passe a été modifié."
msgid "Your profile image has been updated." msgid "Your profile image has been updated."
msgstr "Votre image de profil a été mise à jour." msgstr "Votre image de profil a été mise à jour."
#: src/views/settings/index.tsx:117 #: src/views/settings/index.tsx:120
msgid "Your Trello account has been disconnected." msgid "Your Trello account has been disconnected."
msgstr "Votre compte Trello a été déconnecté." msgstr "Votre compte Trello a été déconnecté."
#: src/views/settings/index.tsx:278 #: src/views/settings/index.tsx:281
msgid "Your Trello account is connected." msgid "Your Trello account is connected."
msgstr "Votre compte Trello est connecté." msgstr "Votre compte Trello est connecté."

File diff suppressed because one or more lines are too long

View File

@@ -148,7 +148,7 @@ msgstr "Tutti i sistemi operativi"
msgid "Already have an account? <0><1>Sign in</1></0>" msgid "Already have an account? <0><1>Sign in</1></0>"
msgstr "Hai già un account? <0><1>Accedi</1></0>" msgstr "Hai già un account? <0><1>Accedi</1></0>"
#: src/views/settings/index.tsx:124 #: src/views/settings/index.tsx:127
msgid "An error occurred while disconnecting your Trello account." msgid "An error occurred while disconnecting your Trello account."
msgstr "Si è verificato un errore durante la disconnessione del tuo account Trello." msgstr "Si è verificato un errore durante la disconnessione del tuo account Trello."
@@ -156,7 +156,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/settings/index.tsx:293 #: src/views/settings/index.tsx:296
msgid "API keys" msgid "API keys"
msgstr "Chiavi API" msgstr "Chiavi API"
@@ -227,11 +227,11 @@ msgid "billed monthly"
msgstr "fatturato mensilmente" msgstr "fatturato mensilmente"
#: src/views/boards/components/TemplateBoards.tsx:55 #: src/views/boards/components/TemplateBoards.tsx:55
#: src/views/settings/index.tsx:232 #: src/views/settings/index.tsx:235
msgid "Billing" msgid "Billing"
msgstr "Fatturazione" msgstr "Fatturazione"
#: src/views/settings/index.tsx:242 #: src/views/settings/index.tsx:245
msgid "Billing portal" msgid "Billing portal"
msgstr "Portale di fatturazione" msgstr "Portale di fatturazione"
@@ -243,9 +243,10 @@ msgstr "Post del blog"
msgid "Board" msgid "Board"
msgstr "Bacheca" msgstr "Bacheca"
#: src/views/settings/components/UpgradeToProConfirmation.tsx:80 #: src/components/NewWorkspaceForm.tsx:346
msgid "Board analytics (coming soon)" #: src/views/settings/components/UpgradeToProConfirmation.tsx:81
msgstr "Analisi della bacheca (prossimamente)" msgid "Board analytics"
msgstr "Analisi della bacheca"
#: src/views/boards/components/NewBoardForm.tsx:21 #: src/views/boards/components/NewBoardForm.tsx:21
msgid "Board name cannot exceed 100 characters" msgid "Board name cannot exceed 100 characters"
@@ -315,7 +316,7 @@ msgstr "Segnalazione bug"
#: src/views/settings/components/ChangePasswordConfirmation.tsx:168 #: src/views/settings/components/ChangePasswordConfirmation.tsx:168
#: src/views/settings/components/DeleteAccountConfirmation.tsx:88 #: src/views/settings/components/DeleteAccountConfirmation.tsx:88
#: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:98 #: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:98
#: src/views/settings/components/UpgradeToProConfirmation.tsx:94 #: src/views/settings/components/UpgradeToProConfirmation.tsx:104
msgid "Cancel" msgid "Cancel"
msgstr "Annulla" msgstr "Annulla"
@@ -329,12 +330,12 @@ msgstr "Titolo della carta"
#: src/views/settings/components/ChangePasswordConfirmation.tsx:109 #: src/views/settings/components/ChangePasswordConfirmation.tsx:109
#: src/views/settings/components/ChangePasswordConfirmation.tsx:178 #: src/views/settings/components/ChangePasswordConfirmation.tsx:178
#: src/views/settings/index.tsx:325 #: src/views/settings/index.tsx:328
#: src/views/settings/index.tsx:335 #: src/views/settings/index.tsx:338
msgid "Change Password" msgid "Change Password"
msgstr "Cambia password" msgstr "Cambia password"
#: src/views/settings/index.tsx:224 #: src/views/settings/index.tsx:227
msgid "Change the language of the app." msgid "Change the language of the app."
msgstr "Cambia la lingua dell'app." msgstr "Cambia la lingua dell'app."
@@ -364,7 +365,9 @@ msgstr "Revisione del codice"
msgid "Collaborate seamlessly with your team." msgid "Collaborate seamlessly with your team."
msgstr "Collabora senza problemi con il tuo team." msgstr "Collabora senza problemi con il tuo team."
#: src/components/NewWorkspaceForm.tsx:349
#: src/views/home/components/Features.tsx:66 #: src/views/home/components/Features.tsx:66
#: src/views/settings/components/UpgradeToProConfirmation.tsx:84
msgid "Coming soon" msgid "Coming soon"
msgstr "Prossimamente" msgstr "Prossimamente"
@@ -398,7 +401,7 @@ msgid "Confirm your new password"
msgstr "Conferma la tua nuova password" msgstr "Conferma la tua nuova password"
#: src/views/boards/components/ImportBoardsForm.tsx:157 #: src/views/boards/components/ImportBoardsForm.tsx:157
#: src/views/settings/index.tsx:269 #: src/views/settings/index.tsx:272
msgid "Connect Trello" msgid "Connect Trello"
msgstr "Connetti Trello" msgstr "Connetti Trello"
@@ -406,7 +409,7 @@ msgstr "Connetti Trello"
msgid "Connect your favorite tools to streamline your workflow." msgid "Connect your favorite tools to streamline your workflow."
msgstr "Connetti i tuoi strumenti preferiti per semplificare il tuo flusso di lavoro." msgstr "Connetti i tuoi strumenti preferiti per semplificare il tuo flusso di lavoro."
#: src/views/settings/index.tsx:256 #: src/views/settings/index.tsx:259
msgid "Connect your Trello account to import boards." msgid "Connect your Trello account to import boards."
msgstr "Connetti il tuo account Trello per importare le bacheche." msgstr "Connetti il tuo account Trello per importare le bacheche."
@@ -478,7 +481,7 @@ msgstr "Crea nuova etichetta"
msgid "Create new list" msgid "Create new list"
msgstr "Crea nuova lista" msgstr "Crea nuova lista"
#: src/components/NewWorkspaceForm.tsx:94 #: src/components/NewWorkspaceForm.tsx:384
#: src/components/WorkspaceMenu.tsx:116 #: src/components/WorkspaceMenu.tsx:116
msgid "Create workspace" msgid "Create workspace"
msgstr "Crea spazio di lavoro" msgstr "Crea spazio di lavoro"
@@ -499,6 +502,11 @@ msgstr "La password attuale è obbligatoria"
msgid "Custom domain" msgid "Custom domain"
msgstr "Dominio personalizzato" msgstr "Dominio personalizzato"
#: src/components/NewWorkspaceForm.tsx:315
msgid "Custom URLs require upgrading to a Pro plan"
msgstr "Gli URL personalizzati richiedono l'aggiornamento a un piano Pro"
#: src/components/NewWorkspaceForm.tsx:339
#: src/views/settings/components/UpgradeToProConfirmation.tsx:74 #: src/views/settings/components/UpgradeToProConfirmation.tsx:74
msgid "Custom workspace URL" msgid "Custom workspace URL"
msgstr "URL personalizzato dell'area di lavoro" msgstr "URL personalizzato dell'area di lavoro"
@@ -520,8 +528,8 @@ msgid "Delete"
msgstr "Elimina" msgstr "Elimina"
#: src/views/settings/components/DeleteAccountConfirmation.tsx:96 #: src/views/settings/components/DeleteAccountConfirmation.tsx:96
#: src/views/settings/index.tsx:343 #: src/views/settings/index.tsx:346
#: src/views/settings/index.tsx:353 #: src/views/settings/index.tsx:356
msgid "Delete account" msgid "Delete account"
msgstr "Elimina account" msgstr "Elimina account"
@@ -542,8 +550,8 @@ msgid "Delete list"
msgstr "Elimina lista" msgstr "Elimina lista"
#: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:106 #: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:106
#: src/views/settings/index.tsx:306 #: src/views/settings/index.tsx:309
#: src/views/settings/index.tsx:317 #: src/views/settings/index.tsx:320
msgid "Delete workspace" msgid "Delete workspace"
msgstr "Elimina spazio di lavoro" msgstr "Elimina spazio di lavoro"
@@ -569,7 +577,7 @@ msgstr "ha eliminato l'elemento <0>{0}</0> della checklist"
msgid "Design" msgid "Design"
msgstr "Design" msgstr "Design"
#: src/views/settings/index.tsx:284 #: src/views/settings/index.tsx:287
msgid "Disconnect Trello" msgid "Disconnect Trello"
msgstr "Disconnetti Trello" msgstr "Disconnetti Trello"
@@ -577,7 +585,7 @@ msgstr "Disconnetti Trello"
msgid "Discuss and collaborate on cards." msgid "Discuss and collaborate on cards."
msgstr "Discuti e collabora sulle schede." msgstr "Discuti e collabora sulle schede."
#: src/views/settings/index.tsx:173 #: src/views/settings/index.tsx:176
msgid "Display name" msgid "Display name"
msgstr "Nome visualizzato" msgstr "Nome visualizzato"
@@ -695,7 +703,7 @@ msgstr "Errore durante l'eliminazione dell'etichetta"
msgid "Error deleting workspace" msgid "Error deleting workspace"
msgstr "Errore durante l'eliminazione dell'area di lavoro" msgstr "Errore durante l'eliminazione dell'area di lavoro"
#: src/views/settings/index.tsx:123 #: src/views/settings/index.tsx:126
msgid "Error disconnecting Trello" msgid "Error disconnecting Trello"
msgstr "Errore durante la disconnessione da Trello" msgstr "Errore durante la disconnessione da Trello"
@@ -729,6 +737,10 @@ msgstr "Errore durante l'aggiornamento dell'URL dell'area di lavoro"
msgid "Error upgrading subscription" msgid "Error upgrading subscription"
msgstr "Errore nell'aggiornamento dell'abbonamento" msgstr "Errore nell'aggiornamento dell'abbonamento"
#: src/components/NewWorkspaceForm.tsx:142
msgid "Error upgrading to Pro"
msgstr "Errore durante l'aggiornamento a Pro"
#: src/views/settings/components/Avatar.tsx:56 #: src/views/settings/components/Avatar.tsx:56
#: src/views/settings/components/Avatar.tsx:97 #: src/views/settings/components/Avatar.tsx:97
msgid "Error uploading profile image" msgid "Error uploading profile image"
@@ -796,7 +808,7 @@ msgid "Free"
msgstr "Gratuito" msgstr "Gratuito"
#: src/views/members/components/InviteMemberForm.tsx:193 #: src/views/members/components/InviteMemberForm.tsx:193
#: src/views/members/index.tsx:189 #: src/views/members/index.tsx:208
msgid "Free Plan" msgid "Free Plan"
msgstr "Piano gratuito" msgstr "Piano gratuito"
@@ -955,7 +967,7 @@ msgstr "Colloquio"
msgid "Invalid email address" msgid "Invalid email address"
msgstr "Indirizzo email non valido" msgstr "Indirizzo email non valido"
#: src/views/members/index.tsx:201 #: src/views/members/index.tsx:221
msgid "Invite" msgid "Invite"
msgstr "Invita" msgstr "Invita"
@@ -999,15 +1011,20 @@ msgstr "Etichette"
msgid "Labels & Filters" msgid "Labels & Filters"
msgstr "Etichette & Filtri" msgstr "Etichette & Filtri"
#: src/views/settings/index.tsx:221 #: src/views/settings/index.tsx:224
msgid "Language" msgid "Language"
msgstr "Lingua" msgstr "Lingua"
#: src/components/NewWorkspaceForm.tsx:332
#: src/views/settings/components/UpgradeToProConfirmation.tsx:67 #: src/views/settings/components/UpgradeToProConfirmation.tsx:67
msgid "Launch offer" msgid "Launch offer"
msgstr "Offerta di lancio" msgstr "Offerta di lancio"
#: src/views/home/components/Pricing.tsx:98 #: src/views/members/index.tsx:191
msgid "Launch offer: Get unlimited members with Pro"
msgstr "Offerta di lancio: ottieni membri illimitati con Pro"
#: src/views/home/components/Pricing.tsx:99
msgid "Launch offer: unlimited seats for just $29/month with Pro" msgid "Launch offer: unlimited seats for just $29/month with Pro"
msgstr "Offerta di lancio: posti illimitati a soli $29/mese con Pro" msgstr "Offerta di lancio: posti illimitati a soli $29/mese con Pro"
@@ -1076,12 +1093,12 @@ msgstr "Media priorità"
#: src/views/board/components/Filters.tsx:93 #: src/views/board/components/Filters.tsx:93
#: src/views/board/components/NewCardForm.tsx:357 #: src/views/board/components/NewCardForm.tsx:357
#: src/views/card/index.tsx:125 #: src/views/card/index.tsx:125
#: src/views/members/index.tsx:172 #: src/views/members/index.tsx:178
msgid "Members" msgid "Members"
msgstr "Membri" msgstr "Membri"
#. placeholder {0}: workspace.name ?? "Workspace" #. placeholder {0}: workspace.name ?? "Workspace"
#: src/views/members/index.tsx:168 #: src/views/members/index.tsx:173
msgid "Members | {0}" msgid "Members | {0}"
msgstr "Membri | {0}" msgstr "Membri | {0}"
@@ -1153,7 +1170,7 @@ msgstr "La nuova password deve essere diversa dalla password attuale"
msgid "New Ticket" msgid "New Ticket"
msgstr "Nuovo ticket" msgstr "Nuovo ticket"
#: src/components/NewWorkspaceForm.tsx:65 #: src/components/NewWorkspaceForm.tsx:240
msgid "New workspace" msgid "New workspace"
msgstr "Nuovo spazio di lavoro" msgstr "Nuovo spazio di lavoro"
@@ -1189,11 +1206,11 @@ msgstr "Offerta"
msgid "Onboarding" msgid "Onboarding"
msgstr "Inserimento" msgstr "Inserimento"
#: src/views/settings/index.tsx:346 #: src/views/settings/index.tsx:349
msgid "Once you delete your account, there is no going back. This action cannot be undone." msgid "Once you delete your account, there is no going back. This action cannot be undone."
msgstr "Una volta eliminato il tuo account, non si può tornare indietro. Questa azione non può essere annullata." msgstr "Una volta eliminato il tuo account, non si può tornare indietro. Questa azione non può essere annullata."
#: src/views/settings/index.tsx:309 #: src/views/settings/index.tsx:312
msgid "Once you delete your workspace, there is no going back. This action cannot be undone." msgid "Once you delete your workspace, there is no going back. This action cannot be undone."
msgstr "Una volta eliminata l'area di lavoro, non si può tornare indietro. Questa azione non può essere annullata." msgstr "Una volta eliminata l'area di lavoro, non si può tornare indietro. Questa azione non può essere annullata."
@@ -1225,11 +1242,11 @@ msgstr "La password deve contenere almeno 8 caratteri"
msgid "Passwords do not match" msgid "Passwords do not match"
msgstr "Le password non corrispondono" msgstr "Le password non corrispondono"
#: src/views/home/components/Pricing.tsx:101 #: src/views/home/components/Pricing.tsx:102
msgid "Payment frequency" msgid "Payment frequency"
msgstr "Frequenza di pagamento" msgstr "Frequenza di pagamento"
#: src/views/members/index.tsx:129 #: src/views/members/index.tsx:134
msgid "Pending" msgid "Pending"
msgstr "In attesa" msgstr "In attesa"
@@ -1268,7 +1285,7 @@ msgstr "Seleziona un file da caricare."
#: src/components/DeleteLabelConfirmation.tsx:26 #: src/components/DeleteLabelConfirmation.tsx:26
#: src/components/FeedbackModal.tsx:41 #: src/components/FeedbackModal.tsx:41
#: src/components/NewWorkspaceForm.tsx:42 #: src/components/NewWorkspaceForm.tsx:155
#: src/views/board/components/NewCardForm.tsx:174 #: src/views/board/components/NewCardForm.tsx:174
#: src/views/board/components/NewListForm.tsx:78 #: src/views/board/components/NewListForm.tsx:78
#: src/views/board/components/UpdateBoardSlugForm.tsx:72 #: src/views/board/components/UpdateBoardSlugForm.tsx:72
@@ -1312,7 +1329,7 @@ msgid "Pricing"
msgstr "Prezzi" msgstr "Prezzi"
#: src/views/home/components/Pricing.tsx:56 #: src/views/home/components/Pricing.tsx:56
#: src/views/settings/components/UpgradeToProConfirmation.tsx:86 #: src/views/settings/components/UpgradeToProConfirmation.tsx:91
msgid "Priority email support" msgid "Priority email support"
msgstr "Supporto email prioritario" msgstr "Supporto email prioritario"
@@ -1324,7 +1341,7 @@ msgstr "Informativa sulla privacy"
msgid "Private" msgid "Private"
msgstr "Privato" msgstr "Privato"
#: src/views/members/index.tsx:186 #: src/views/members/index.tsx:205
msgid "Pro Plan" msgid "Pro Plan"
msgstr "Piano Pro" msgstr "Piano Pro"
@@ -1336,7 +1353,7 @@ msgstr "Piano Pro ∞"
msgid "Profile image updated" msgid "Profile image updated"
msgstr "Immagine del profilo aggiornata" msgstr "Immagine del profilo aggiornata"
#: src/views/settings/index.tsx:168 #: src/views/settings/index.tsx:171
msgid "Profile picture" msgid "Profile picture"
msgstr "Immagine del profilo" msgstr "Immagine del profilo"
@@ -1372,7 +1389,7 @@ msgstr "Remoto"
msgid "Remove" msgid "Remove"
msgstr "Rimuovi" msgstr "Rimuovi"
#: src/views/members/index.tsx:143 #: src/views/members/index.tsx:148
msgid "Remove member" msgid "Remove member"
msgstr "Rimuovi membro" msgstr "Rimuovi membro"
@@ -1428,7 +1445,7 @@ msgstr "Revoca"
msgid "Roadmap" msgid "Roadmap"
msgstr "Roadmap" msgstr "Roadmap"
#: src/views/members/index.tsx:223 #: src/views/members/index.tsx:243
msgid "Role" msgid "Role"
msgstr "Ruolo" msgstr "Ruolo"
@@ -1477,12 +1494,12 @@ msgid "Senior"
msgstr "Senior" msgstr "Senior"
#: src/components/SideNavigation.tsx:78 #: src/components/SideNavigation.tsx:78
#: src/views/settings/index.tsx:162 #: src/views/settings/index.tsx:165
msgid "Settings" msgid "Settings"
msgstr "Impostazioni" msgstr "Impostazioni"
#. placeholder {0}: workspace.name ?? "Workspace" #. placeholder {0}: workspace.name ?? "Workspace"
#: src/views/settings/index.tsx:158 #: src/views/settings/index.tsx:161
msgid "Settings | {0}" msgid "Settings | {0}"
msgstr "Impostazioni | {0}" msgstr "Impostazioni | {0}"
@@ -1550,7 +1567,7 @@ msgid "System"
msgstr "Sistema" msgstr "Sistema"
#: src/views/members/components/InviteMemberForm.tsx:182 #: src/views/members/components/InviteMemberForm.tsx:182
#: src/views/members/index.tsx:188 #: src/views/members/index.tsx:207
msgid "Team Plan" msgid "Team Plan"
msgstr "Piano Team" msgstr "Piano Team"
@@ -1618,6 +1635,14 @@ msgstr "Questo comporterà l'eliminazione permanente di tutti i dati associati a
msgid "This will result in the permanent deletion of all data associated with your account." msgid "This will result in the permanent deletion of all data associated with your account."
msgstr "Questo comporterà l'eliminazione permanente di tutti i dati associati al tuo account." msgstr "Questo comporterà l'eliminazione permanente di tutti i dati associati al tuo account."
#: src/components/NewWorkspaceForm.tsx:284
msgid "This workspace URL has already been taken"
msgstr "Questo URL dello spazio di lavoro è già stato utilizzato"
#: src/components/NewWorkspaceForm.tsx:286
msgid "This workspace URL is reserved"
msgstr "Questo URL dello spazio di lavoro è riservato"
#: src/views/settings/components/UpdateWorkspaceUrlForm.tsx:123 #: src/views/settings/components/UpdateWorkspaceUrlForm.tsx:123
msgid "This workspace username has already been taken" msgid "This workspace username has already been taken"
msgstr "Questo nome utente dell'area di lavoro è già stato utilizzato" msgstr "Questo nome utente dell'area di lavoro è già stato utilizzato"
@@ -1635,7 +1660,7 @@ msgstr "Attiva/disattiva menu"
msgid "Track all card changes with detailed activity history." msgid "Track all card changes with detailed activity history."
msgstr "Tieni traccia di tutte le modifiche alle schede con una cronologia dettagliata delle attività." msgstr "Tieni traccia di tutte le modifiche alle schede con una cronologia dettagliata delle attività."
#: src/views/settings/index.tsx:116 #: src/views/settings/index.tsx:119
msgid "Trello disconnected" msgid "Trello disconnected"
msgstr "Trello disconnesso" msgstr "Trello disconnesso"
@@ -1667,7 +1692,7 @@ msgstr "Impossibile creare la checklist"
msgid "Unable to create list" msgid "Unable to create list"
msgstr "Impossibile creare la lista" msgstr "Impossibile creare la lista"
#: src/components/NewWorkspaceForm.tsx:41 #: src/components/NewWorkspaceForm.tsx:154
msgid "Unable to create workspace" msgid "Unable to create workspace"
msgstr "Impossibile creare lo spazio di lavoro" msgstr "Impossibile creare lo spazio di lavoro"
@@ -1766,6 +1791,7 @@ msgstr "Commenti illimitati"
msgid "Unlimited lists" msgid "Unlimited lists"
msgstr "Liste illimitate" msgstr "Liste illimitate"
#: src/components/NewWorkspaceForm.tsx:329
#: src/views/settings/components/UpgradeToProConfirmation.tsx:64 #: src/views/settings/components/UpgradeToProConfirmation.tsx:64
msgid "Unlimited members" msgid "Unlimited members"
msgstr "Membri illimitati" msgstr "Membri illimitati"
@@ -1799,15 +1825,19 @@ msgstr "ha aggiornato il titolo"
msgid "updated the title to <0>{0}</0>" msgid "updated the title to <0>{0}</0>"
msgstr "ha aggiornato il titolo in <0>{0}</0>" msgstr "ha aggiornato il titolo in <0>{0}</0>"
#: src/views/settings/components/UpgradeToProConfirmation.tsx:99 #: src/views/settings/components/UpgradeToProConfirmation.tsx:109
msgid "Upgrade" msgid "Upgrade"
msgstr "Aggiorna" msgstr "Aggiorna"
#: src/views/settings/components/UpgradeToProConfirmation.tsx:52 #: src/views/settings/components/UpgradeToProConfirmation.tsx:52
#: src/views/settings/index.tsx:213 #: src/views/settings/index.tsx:216
msgid "Upgrade to Pro" msgid "Upgrade to Pro"
msgstr "Passa a Pro" msgstr "Passa a Pro"
#: src/components/NewWorkspaceForm.tsx:369
msgid "Upgrade to Pro ($29/month)"
msgstr "Passa a Pro ($29/mese)"
#: src/views/members/components/InviteMemberForm.tsx:224 #: src/views/members/components/InviteMemberForm.tsx:224
msgid "Upgrade to Team Plan" msgid "Upgrade to Team Plan"
msgstr "Passa al Piano Team" msgstr "Passa al Piano Team"
@@ -1817,14 +1847,17 @@ msgstr "Passa al Piano Team"
msgid "Urgent" msgid "Urgent"
msgstr "Urgente" msgstr "Urgente"
#: src/components/NewWorkspaceForm.tsx:35
#: src/views/settings/components/UpdateWorkspaceUrlForm.tsx:36 #: src/views/settings/components/UpdateWorkspaceUrlForm.tsx:36
msgid "URL can only contain letters, numbers, and hyphens" msgid "URL can only contain letters, numbers, and hyphens"
msgstr "L'URL può contenere solo lettere, numeri e trattini" msgstr "L'URL può contenere solo lettere, numeri e trattini"
#: src/components/NewWorkspaceForm.tsx:33
#: src/views/settings/components/UpdateWorkspaceUrlForm.tsx:34 #: src/views/settings/components/UpdateWorkspaceUrlForm.tsx:34
msgid "URL cannot exceed 24 characters" msgid "URL cannot exceed 24 characters"
msgstr "L'URL non può superare i 24 caratteri" msgstr "L'URL non può superare i 24 caratteri"
#: src/components/NewWorkspaceForm.tsx:31
#: src/views/settings/components/UpdateWorkspaceUrlForm.tsx:32 #: src/views/settings/components/UpdateWorkspaceUrlForm.tsx:32
msgid "URL must be at least 3 characters long" msgid "URL must be at least 3 characters long"
msgstr "L'URL deve contenere almeno 3 caratteri" msgstr "L'URL deve contenere almeno 3 caratteri"
@@ -1833,7 +1866,7 @@ msgstr "L'URL deve contenere almeno 3 caratteri"
msgid "Use template" msgid "Use template"
msgstr "Usa template" msgstr "Usa template"
#: src/views/members/index.tsx:217 #: src/views/members/index.tsx:237
msgid "User" msgid "User"
msgstr "Utente" msgstr "Utente"
@@ -1845,11 +1878,11 @@ msgstr "L'utente è già membro di questo spazio di lavoro"
msgid "Video" msgid "Video"
msgstr "Video" msgstr "Video"
#: src/views/settings/index.tsx:296 #: src/views/settings/index.tsx:299
msgid "View and manage your API keys." msgid "View and manage your API keys."
msgstr "Visualizza e gestisci le tue chiavi API." msgstr "Visualizza e gestisci le tue chiavi API."
#: src/views/settings/index.tsx:235 #: src/views/settings/index.tsx:238
msgid "View and manage your billing and subscription." msgid "View and manage your billing and subscription."
msgstr "Visualizza e gestisci la tua fatturazione e abbonamento." msgstr "Visualizza e gestisci la tua fatturazione e abbonamento."
@@ -1905,11 +1938,15 @@ msgstr "Perché creare un Trello open source?"
msgid "Workspace" msgid "Workspace"
msgstr "Spazio di lavoro" msgstr "Spazio di lavoro"
#: src/components/NewWorkspaceForm.tsx:143
msgid "Workspace created successfully. You can upgrade later in settings."
msgstr "Spazio di lavoro creato con successo. Puoi effettuare l'aggiornamento più tardi nelle impostazioni."
#: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:26 #: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:26
msgid "Workspace deleted" msgid "Workspace deleted"
msgstr "Spazio di lavoro eliminato" msgstr "Spazio di lavoro eliminato"
#: src/views/settings/index.tsx:199 #: src/views/settings/index.tsx:202
msgid "Workspace description" msgid "Workspace description"
msgstr "Descrizione dello spazio di lavoro" msgstr "Descrizione dello spazio di lavoro"
@@ -1930,8 +1967,8 @@ msgstr "Descrizione dell'area di lavoro aggiornata"
msgid "Workspace members" msgid "Workspace members"
msgstr "Membri del workspace" msgstr "Membri del workspace"
#: src/components/NewWorkspaceForm.tsx:81 #: src/components/NewWorkspaceForm.tsx:259
#: src/views/settings/index.tsx:180 #: src/views/settings/index.tsx:183
msgid "Workspace name" msgid "Workspace name"
msgstr "Nome dello spazio di lavoro" msgstr "Nome dello spazio di lavoro"
@@ -1939,6 +1976,10 @@ msgstr "Nome dello spazio di lavoro"
msgid "Workspace name cannot exceed 24 characters" msgid "Workspace name cannot exceed 24 characters"
msgstr "Il nome dello spazio di lavoro non può superare i 24 caratteri" msgstr "Il nome dello spazio di lavoro non può superare i 24 caratteri"
#: src/components/NewWorkspaceForm.tsx:27
msgid "Workspace name is required"
msgstr "Il nome dello spazio di lavoro è obbligatorio"
#: src/views/settings/components/UpdateWorkspaceNameForm.tsx:14 #: src/views/settings/components/UpdateWorkspaceNameForm.tsx:14
msgid "Workspace name must be at least 3 characters long" msgid "Workspace name must be at least 3 characters long"
msgstr "Il nome dello spazio di lavoro deve contenere almeno 3 caratteri" msgstr "Il nome dello spazio di lavoro deve contenere almeno 3 caratteri"
@@ -1951,10 +1992,14 @@ msgstr "Nome dello spazio di lavoro aggiornato"
msgid "Workspace slug updated" msgid "Workspace slug updated"
msgstr "Slug dell'area di lavoro aggiornato" msgstr "Slug dell'area di lavoro aggiornato"
#: src/views/settings/index.tsx:189 #: src/views/settings/index.tsx:192
msgid "Workspace URL" msgid "Workspace URL"
msgstr "URL dello spazio di lavoro" msgstr "URL dello spazio di lavoro"
#: src/components/NewWorkspaceForm.tsx:273
msgid "workspace-url"
msgstr "workspace-url"
#: src/views/boards/components/TemplateBoards.tsx:30 #: src/views/boards/components/TemplateBoards.tsx:30
msgid "Writing" msgid "Writing"
msgstr "Scrittura" msgstr "Scrittura"
@@ -1967,7 +2012,7 @@ msgstr "Annuale"
msgid "Yes, we offer an forever free plan for individual use. No restrictions, no paywalls, no limits." msgid "Yes, we offer an forever free plan for individual use. No restrictions, no paywalls, no limits."
msgstr "Sì, offriamo un piano gratuito per sempre per uso individuale. Nessuna restrizione, nessun paywall, nessun limite." msgstr "Sì, offriamo un piano gratuito per sempre per uso individuale. Nessuna restrizione, nessun paywall, nessun limite."
#: src/views/settings/index.tsx:328 #: src/views/settings/index.tsx:331
msgid "You are about to change your password." msgid "You are about to change your password."
msgstr "Stai per cambiare la tua password." msgstr "Stai per cambiare la tua password."
@@ -2015,11 +2060,11 @@ msgstr "La tua password è stata modificata."
msgid "Your profile image has been updated." msgid "Your profile image has been updated."
msgstr "La tua immagine del profilo è stata aggiornata." msgstr "La tua immagine del profilo è stata aggiornata."
#: src/views/settings/index.tsx:117 #: src/views/settings/index.tsx:120
msgid "Your Trello account has been disconnected." msgid "Your Trello account has been disconnected."
msgstr "Il tuo account Trello è stato disconnesso." msgstr "Il tuo account Trello è stato disconnesso."
#: src/views/settings/index.tsx:278 #: src/views/settings/index.tsx:281
msgid "Your Trello account is connected." msgid "Your Trello account is connected."
msgstr "Il tuo account Trello è connesso." msgstr "Il tuo account Trello è connesso."

File diff suppressed because one or more lines are too long

View File

@@ -148,7 +148,7 @@ msgstr "Alle systemen operationeel"
msgid "Already have an account? <0><1>Sign in</1></0>" msgid "Already have an account? <0><1>Sign in</1></0>"
msgstr "Heb je al een account? <0><1>Log in</1></0>" msgstr "Heb je al een account? <0><1>Log in</1></0>"
#: src/views/settings/index.tsx:124 #: src/views/settings/index.tsx:127
msgid "An error occurred while disconnecting your Trello account." msgid "An error occurred while disconnecting your Trello account."
msgstr "Er is een fout opgetreden bij het verbreken van de verbinding met je Trello-account." msgstr "Er is een fout opgetreden bij het verbreken van de verbinding met je Trello-account."
@@ -156,7 +156,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/settings/index.tsx:293 #: src/views/settings/index.tsx:296
msgid "API keys" msgid "API keys"
msgstr "API-sleutels" msgstr "API-sleutels"
@@ -227,11 +227,11 @@ msgid "billed monthly"
msgstr "maandelijks gefactureerd" msgstr "maandelijks gefactureerd"
#: src/views/boards/components/TemplateBoards.tsx:55 #: src/views/boards/components/TemplateBoards.tsx:55
#: src/views/settings/index.tsx:232 #: src/views/settings/index.tsx:235
msgid "Billing" msgid "Billing"
msgstr "Facturering" msgstr "Facturering"
#: src/views/settings/index.tsx:242 #: src/views/settings/index.tsx:245
msgid "Billing portal" msgid "Billing portal"
msgstr "Factureringsportaal" msgstr "Factureringsportaal"
@@ -243,9 +243,10 @@ msgstr "Blogbericht"
msgid "Board" msgid "Board"
msgstr "Bord" msgstr "Bord"
#: src/views/settings/components/UpgradeToProConfirmation.tsx:80 #: src/components/NewWorkspaceForm.tsx:346
msgid "Board analytics (coming soon)" #: src/views/settings/components/UpgradeToProConfirmation.tsx:81
msgstr "Bordanalyses (binnenkort beschikbaar)" msgid "Board analytics"
msgstr "Bordanalyses"
#: src/views/boards/components/NewBoardForm.tsx:21 #: src/views/boards/components/NewBoardForm.tsx:21
msgid "Board name cannot exceed 100 characters" msgid "Board name cannot exceed 100 characters"
@@ -315,7 +316,7 @@ msgstr "Bugrapport"
#: src/views/settings/components/ChangePasswordConfirmation.tsx:168 #: src/views/settings/components/ChangePasswordConfirmation.tsx:168
#: src/views/settings/components/DeleteAccountConfirmation.tsx:88 #: src/views/settings/components/DeleteAccountConfirmation.tsx:88
#: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:98 #: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:98
#: src/views/settings/components/UpgradeToProConfirmation.tsx:94 #: src/views/settings/components/UpgradeToProConfirmation.tsx:104
msgid "Cancel" msgid "Cancel"
msgstr "Annuleren" msgstr "Annuleren"
@@ -329,12 +330,12 @@ msgstr "Kaarttitel"
#: src/views/settings/components/ChangePasswordConfirmation.tsx:109 #: src/views/settings/components/ChangePasswordConfirmation.tsx:109
#: src/views/settings/components/ChangePasswordConfirmation.tsx:178 #: src/views/settings/components/ChangePasswordConfirmation.tsx:178
#: src/views/settings/index.tsx:325 #: src/views/settings/index.tsx:328
#: src/views/settings/index.tsx:335 #: src/views/settings/index.tsx:338
msgid "Change Password" msgid "Change Password"
msgstr "Wachtwoord wijzigen" msgstr "Wachtwoord wijzigen"
#: src/views/settings/index.tsx:224 #: src/views/settings/index.tsx:227
msgid "Change the language of the app." msgid "Change the language of the app."
msgstr "Wijzig de taal van de app." msgstr "Wijzig de taal van de app."
@@ -364,7 +365,9 @@ msgstr "Code review"
msgid "Collaborate seamlessly with your team." msgid "Collaborate seamlessly with your team."
msgstr "Werk naadloos samen met je team." msgstr "Werk naadloos samen met je team."
#: src/components/NewWorkspaceForm.tsx:349
#: src/views/home/components/Features.tsx:66 #: src/views/home/components/Features.tsx:66
#: src/views/settings/components/UpgradeToProConfirmation.tsx:84
msgid "Coming soon" msgid "Coming soon"
msgstr "Binnenkort beschikbaar" msgstr "Binnenkort beschikbaar"
@@ -398,7 +401,7 @@ msgid "Confirm your new password"
msgstr "Bevestig je nieuwe wachtwoord" msgstr "Bevestig je nieuwe wachtwoord"
#: src/views/boards/components/ImportBoardsForm.tsx:157 #: src/views/boards/components/ImportBoardsForm.tsx:157
#: src/views/settings/index.tsx:269 #: src/views/settings/index.tsx:272
msgid "Connect Trello" msgid "Connect Trello"
msgstr "Verbind Trello" msgstr "Verbind Trello"
@@ -406,7 +409,7 @@ msgstr "Verbind Trello"
msgid "Connect your favorite tools to streamline your workflow." msgid "Connect your favorite tools to streamline your workflow."
msgstr "Verbind je favoriete tools om je werkstroom te stroomlijnen." msgstr "Verbind je favoriete tools om je werkstroom te stroomlijnen."
#: src/views/settings/index.tsx:256 #: src/views/settings/index.tsx:259
msgid "Connect your Trello account to import boards." msgid "Connect your Trello account to import boards."
msgstr "Verbind je Trello-account om borden te importeren." msgstr "Verbind je Trello-account om borden te importeren."
@@ -478,7 +481,7 @@ msgstr "Maak nieuw label"
msgid "Create new list" msgid "Create new list"
msgstr "Maak nieuwe lijst" msgstr "Maak nieuwe lijst"
#: src/components/NewWorkspaceForm.tsx:94 #: src/components/NewWorkspaceForm.tsx:384
#: src/components/WorkspaceMenu.tsx:116 #: src/components/WorkspaceMenu.tsx:116
msgid "Create workspace" msgid "Create workspace"
msgstr "Werkruimte maken" msgstr "Werkruimte maken"
@@ -499,6 +502,11 @@ msgstr "Huidig wachtwoord is vereist"
msgid "Custom domain" msgid "Custom domain"
msgstr "Aangepast domein" msgstr "Aangepast domein"
#: src/components/NewWorkspaceForm.tsx:315
msgid "Custom URLs require upgrading to a Pro plan"
msgstr "Aangepaste URL's vereisen een upgrade naar een Pro-abonnement"
#: src/components/NewWorkspaceForm.tsx:339
#: src/views/settings/components/UpgradeToProConfirmation.tsx:74 #: src/views/settings/components/UpgradeToProConfirmation.tsx:74
msgid "Custom workspace URL" msgid "Custom workspace URL"
msgstr "Aangepaste werkruimte-URL" msgstr "Aangepaste werkruimte-URL"
@@ -520,8 +528,8 @@ msgid "Delete"
msgstr "Verwijderen" msgstr "Verwijderen"
#: src/views/settings/components/DeleteAccountConfirmation.tsx:96 #: src/views/settings/components/DeleteAccountConfirmation.tsx:96
#: src/views/settings/index.tsx:343 #: src/views/settings/index.tsx:346
#: src/views/settings/index.tsx:353 #: src/views/settings/index.tsx:356
msgid "Delete account" msgid "Delete account"
msgstr "Account verwijderen" msgstr "Account verwijderen"
@@ -542,8 +550,8 @@ msgid "Delete list"
msgstr "Lijst verwijderen" msgstr "Lijst verwijderen"
#: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:106 #: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:106
#: src/views/settings/index.tsx:306 #: src/views/settings/index.tsx:309
#: src/views/settings/index.tsx:317 #: src/views/settings/index.tsx:320
msgid "Delete workspace" msgid "Delete workspace"
msgstr "Werkruimte verwijderen" msgstr "Werkruimte verwijderen"
@@ -569,7 +577,7 @@ msgstr "heeft checklistitem <0>{0}</0> verwijderd"
msgid "Design" msgid "Design"
msgstr "Ontwerp" msgstr "Ontwerp"
#: src/views/settings/index.tsx:284 #: src/views/settings/index.tsx:287
msgid "Disconnect Trello" msgid "Disconnect Trello"
msgstr "Trello ontkoppelen" msgstr "Trello ontkoppelen"
@@ -577,7 +585,7 @@ msgstr "Trello ontkoppelen"
msgid "Discuss and collaborate on cards." msgid "Discuss and collaborate on cards."
msgstr "Bespreek en werk samen aan kaarten." msgstr "Bespreek en werk samen aan kaarten."
#: src/views/settings/index.tsx:173 #: src/views/settings/index.tsx:176
msgid "Display name" msgid "Display name"
msgstr "Weergavenaam" msgstr "Weergavenaam"
@@ -695,7 +703,7 @@ msgstr "Fout bij het verwijderen van label"
msgid "Error deleting workspace" msgid "Error deleting workspace"
msgstr "Fout bij verwijderen werkruimte" msgstr "Fout bij verwijderen werkruimte"
#: src/views/settings/index.tsx:123 #: src/views/settings/index.tsx:126
msgid "Error disconnecting Trello" msgid "Error disconnecting Trello"
msgstr "Fout bij ontkoppelen van Trello" msgstr "Fout bij ontkoppelen van Trello"
@@ -729,6 +737,10 @@ msgstr "Fout bij het bijwerken van werkruimte-URL"
msgid "Error upgrading subscription" msgid "Error upgrading subscription"
msgstr "Fout bij het upgraden van abonnement" msgstr "Fout bij het upgraden van abonnement"
#: src/components/NewWorkspaceForm.tsx:142
msgid "Error upgrading to Pro"
msgstr "Fout bij upgraden naar Pro"
#: src/views/settings/components/Avatar.tsx:56 #: src/views/settings/components/Avatar.tsx:56
#: src/views/settings/components/Avatar.tsx:97 #: src/views/settings/components/Avatar.tsx:97
msgid "Error uploading profile image" msgid "Error uploading profile image"
@@ -796,7 +808,7 @@ msgid "Free"
msgstr "Gratis" msgstr "Gratis"
#: src/views/members/components/InviteMemberForm.tsx:193 #: src/views/members/components/InviteMemberForm.tsx:193
#: src/views/members/index.tsx:189 #: src/views/members/index.tsx:208
msgid "Free Plan" msgid "Free Plan"
msgstr "Gratis plan" msgstr "Gratis plan"
@@ -955,7 +967,7 @@ msgstr "Interviewen"
msgid "Invalid email address" msgid "Invalid email address"
msgstr "Ongeldig e-mailadres" msgstr "Ongeldig e-mailadres"
#: src/views/members/index.tsx:201 #: src/views/members/index.tsx:221
msgid "Invite" msgid "Invite"
msgstr "Uitnodigen" msgstr "Uitnodigen"
@@ -999,15 +1011,20 @@ msgstr "Labels"
msgid "Labels & Filters" msgid "Labels & Filters"
msgstr "Labels & filters" msgstr "Labels & filters"
#: src/views/settings/index.tsx:221 #: src/views/settings/index.tsx:224
msgid "Language" msgid "Language"
msgstr "Taal" msgstr "Taal"
#: src/components/NewWorkspaceForm.tsx:332
#: src/views/settings/components/UpgradeToProConfirmation.tsx:67 #: src/views/settings/components/UpgradeToProConfirmation.tsx:67
msgid "Launch offer" msgid "Launch offer"
msgstr "Introductieaanbieding" msgstr "Introductieaanbieding"
#: src/views/home/components/Pricing.tsx:98 #: src/views/members/index.tsx:191
msgid "Launch offer: Get unlimited members with Pro"
msgstr "Lanceringsaanbieding: krijg onbeperkt aantal leden met Pro"
#: src/views/home/components/Pricing.tsx:99
msgid "Launch offer: unlimited seats for just $29/month with Pro" msgid "Launch offer: unlimited seats for just $29/month with Pro"
msgstr "Introductieaanbieding: onbeperkt aantal gebruikers voor slechts $29/maand met Pro" msgstr "Introductieaanbieding: onbeperkt aantal gebruikers voor slechts $29/maand met Pro"
@@ -1076,12 +1093,12 @@ msgstr "Gemiddelde prioriteit"
#: src/views/board/components/Filters.tsx:93 #: src/views/board/components/Filters.tsx:93
#: src/views/board/components/NewCardForm.tsx:357 #: src/views/board/components/NewCardForm.tsx:357
#: src/views/card/index.tsx:125 #: src/views/card/index.tsx:125
#: src/views/members/index.tsx:172 #: src/views/members/index.tsx:178
msgid "Members" msgid "Members"
msgstr "Leden" msgstr "Leden"
#. placeholder {0}: workspace.name ?? "Workspace" #. placeholder {0}: workspace.name ?? "Workspace"
#: src/views/members/index.tsx:168 #: src/views/members/index.tsx:173
msgid "Members | {0}" msgid "Members | {0}"
msgstr "Leden | {0}" msgstr "Leden | {0}"
@@ -1153,7 +1170,7 @@ msgstr "Nieuw wachtwoord moet verschillen van het huidige wachtwoord"
msgid "New Ticket" msgid "New Ticket"
msgstr "Nieuw ticket" msgstr "Nieuw ticket"
#: src/components/NewWorkspaceForm.tsx:65 #: src/components/NewWorkspaceForm.tsx:240
msgid "New workspace" msgid "New workspace"
msgstr "Nieuwe werkruimte" msgstr "Nieuwe werkruimte"
@@ -1189,11 +1206,11 @@ msgstr "Aanbod"
msgid "Onboarding" msgid "Onboarding"
msgstr "Inwerktraject" msgstr "Inwerktraject"
#: src/views/settings/index.tsx:346 #: src/views/settings/index.tsx:349
msgid "Once you delete your account, there is no going back. This action cannot be undone." msgid "Once you delete your account, there is no going back. This action cannot be undone."
msgstr "Zodra je je account verwijdert, is er geen weg terug. Deze actie kan niet ongedaan worden gemaakt." msgstr "Zodra je je account verwijdert, is er geen weg terug. Deze actie kan niet ongedaan worden gemaakt."
#: src/views/settings/index.tsx:309 #: src/views/settings/index.tsx:312
msgid "Once you delete your workspace, there is no going back. This action cannot be undone." msgid "Once you delete your workspace, there is no going back. This action cannot be undone."
msgstr "Zodra je je werkruimte verwijdert, is er geen weg terug. Deze actie kan niet ongedaan worden gemaakt." msgstr "Zodra je je werkruimte verwijdert, is er geen weg terug. Deze actie kan niet ongedaan worden gemaakt."
@@ -1225,11 +1242,11 @@ msgstr "Wachtwoord moet minimaal 8 tekens bevatten"
msgid "Passwords do not match" msgid "Passwords do not match"
msgstr "Wachtwoorden komen niet overeen" msgstr "Wachtwoorden komen niet overeen"
#: src/views/home/components/Pricing.tsx:101 #: src/views/home/components/Pricing.tsx:102
msgid "Payment frequency" msgid "Payment frequency"
msgstr "Betalingsfrequentie" msgstr "Betalingsfrequentie"
#: src/views/members/index.tsx:129 #: src/views/members/index.tsx:134
msgid "Pending" msgid "Pending"
msgstr "In behandeling" msgstr "In behandeling"
@@ -1268,7 +1285,7 @@ msgstr "Selecteer een bestand om te uploaden."
#: src/components/DeleteLabelConfirmation.tsx:26 #: src/components/DeleteLabelConfirmation.tsx:26
#: src/components/FeedbackModal.tsx:41 #: src/components/FeedbackModal.tsx:41
#: src/components/NewWorkspaceForm.tsx:42 #: src/components/NewWorkspaceForm.tsx:155
#: src/views/board/components/NewCardForm.tsx:174 #: src/views/board/components/NewCardForm.tsx:174
#: src/views/board/components/NewListForm.tsx:78 #: src/views/board/components/NewListForm.tsx:78
#: src/views/board/components/UpdateBoardSlugForm.tsx:72 #: src/views/board/components/UpdateBoardSlugForm.tsx:72
@@ -1312,7 +1329,7 @@ msgid "Pricing"
msgstr "Prijzen" msgstr "Prijzen"
#: src/views/home/components/Pricing.tsx:56 #: src/views/home/components/Pricing.tsx:56
#: src/views/settings/components/UpgradeToProConfirmation.tsx:86 #: src/views/settings/components/UpgradeToProConfirmation.tsx:91
msgid "Priority email support" msgid "Priority email support"
msgstr "Prioriteit e-mailondersteuning" msgstr "Prioriteit e-mailondersteuning"
@@ -1324,7 +1341,7 @@ msgstr "Privacybeleid"
msgid "Private" msgid "Private"
msgstr "Privé" msgstr "Privé"
#: src/views/members/index.tsx:186 #: src/views/members/index.tsx:205
msgid "Pro Plan" msgid "Pro Plan"
msgstr "Pro Plan" msgstr "Pro Plan"
@@ -1336,7 +1353,7 @@ msgstr "Pro Plan ∞"
msgid "Profile image updated" msgid "Profile image updated"
msgstr "Profielafbeelding bijgewerkt" msgstr "Profielafbeelding bijgewerkt"
#: src/views/settings/index.tsx:168 #: src/views/settings/index.tsx:171
msgid "Profile picture" msgid "Profile picture"
msgstr "Profielfoto" msgstr "Profielfoto"
@@ -1372,7 +1389,7 @@ msgstr "Op afstand"
msgid "Remove" msgid "Remove"
msgstr "Verwijderen" msgstr "Verwijderen"
#: src/views/members/index.tsx:143 #: src/views/members/index.tsx:148
msgid "Remove member" msgid "Remove member"
msgstr "Lid verwijderen" msgstr "Lid verwijderen"
@@ -1428,7 +1445,7 @@ msgstr "Intrekken"
msgid "Roadmap" msgid "Roadmap"
msgstr "Roadmap" msgstr "Roadmap"
#: src/views/members/index.tsx:223 #: src/views/members/index.tsx:243
msgid "Role" msgid "Role"
msgstr "Rol" msgstr "Rol"
@@ -1477,12 +1494,12 @@ msgid "Senior"
msgstr "Senior" msgstr "Senior"
#: src/components/SideNavigation.tsx:78 #: src/components/SideNavigation.tsx:78
#: src/views/settings/index.tsx:162 #: src/views/settings/index.tsx:165
msgid "Settings" msgid "Settings"
msgstr "Instellingen" msgstr "Instellingen"
#. placeholder {0}: workspace.name ?? "Workspace" #. placeholder {0}: workspace.name ?? "Workspace"
#: src/views/settings/index.tsx:158 #: src/views/settings/index.tsx:161
msgid "Settings | {0}" msgid "Settings | {0}"
msgstr "Instellingen | {0}" msgstr "Instellingen | {0}"
@@ -1550,7 +1567,7 @@ msgid "System"
msgstr "Systeem" msgstr "Systeem"
#: src/views/members/components/InviteMemberForm.tsx:182 #: src/views/members/components/InviteMemberForm.tsx:182
#: src/views/members/index.tsx:188 #: src/views/members/index.tsx:207
msgid "Team Plan" msgid "Team Plan"
msgstr "Teamplan" msgstr "Teamplan"
@@ -1618,6 +1635,14 @@ msgstr "Dit zal resulteren in het permanent verwijderen van alle gegevens die aa
msgid "This will result in the permanent deletion of all data associated with your account." msgid "This will result in the permanent deletion of all data associated with your account."
msgstr "Dit zal resulteren in het permanent verwijderen van alle gegevens die aan je account zijn gekoppeld." msgstr "Dit zal resulteren in het permanent verwijderen van alle gegevens die aan je account zijn gekoppeld."
#: src/components/NewWorkspaceForm.tsx:284
msgid "This workspace URL has already been taken"
msgstr "Deze werkruimte-URL is al in gebruik"
#: src/components/NewWorkspaceForm.tsx:286
msgid "This workspace URL is reserved"
msgstr "Deze werkruimte-URL is gereserveerd"
#: src/views/settings/components/UpdateWorkspaceUrlForm.tsx:123 #: src/views/settings/components/UpdateWorkspaceUrlForm.tsx:123
msgid "This workspace username has already been taken" msgid "This workspace username has already been taken"
msgstr "Deze werkruimtegebruikersnaam is al in gebruik" msgstr "Deze werkruimtegebruikersnaam is al in gebruik"
@@ -1635,7 +1660,7 @@ msgstr "Menu in-/uitschakelen"
msgid "Track all card changes with detailed activity history." msgid "Track all card changes with detailed activity history."
msgstr "Volg alle kaartwijzigingen met gedetailleerde activiteitengeschiedenis." msgstr "Volg alle kaartwijzigingen met gedetailleerde activiteitengeschiedenis."
#: src/views/settings/index.tsx:116 #: src/views/settings/index.tsx:119
msgid "Trello disconnected" msgid "Trello disconnected"
msgstr "Trello ontkoppeld" msgstr "Trello ontkoppeld"
@@ -1667,7 +1692,7 @@ msgstr "Kan checklist niet maken"
msgid "Unable to create list" msgid "Unable to create list"
msgstr "Kan geen lijst maken" msgstr "Kan geen lijst maken"
#: src/components/NewWorkspaceForm.tsx:41 #: src/components/NewWorkspaceForm.tsx:154
msgid "Unable to create workspace" msgid "Unable to create workspace"
msgstr "Kan werkruimte niet aanmaken" msgstr "Kan werkruimte niet aanmaken"
@@ -1766,6 +1791,7 @@ msgstr "Onbeperkt aantal opmerkingen"
msgid "Unlimited lists" msgid "Unlimited lists"
msgstr "Onbeperkt aantal lijsten" msgstr "Onbeperkt aantal lijsten"
#: src/components/NewWorkspaceForm.tsx:329
#: src/views/settings/components/UpgradeToProConfirmation.tsx:64 #: src/views/settings/components/UpgradeToProConfirmation.tsx:64
msgid "Unlimited members" msgid "Unlimited members"
msgstr "Onbeperkt aantal leden" msgstr "Onbeperkt aantal leden"
@@ -1799,15 +1825,19 @@ msgstr "titel bijgewerkt"
msgid "updated the title to <0>{0}</0>" msgid "updated the title to <0>{0}</0>"
msgstr "titel bijgewerkt naar <0>{0}</0>" msgstr "titel bijgewerkt naar <0>{0}</0>"
#: src/views/settings/components/UpgradeToProConfirmation.tsx:99 #: src/views/settings/components/UpgradeToProConfirmation.tsx:109
msgid "Upgrade" msgid "Upgrade"
msgstr "Upgraden" msgstr "Upgraden"
#: src/views/settings/components/UpgradeToProConfirmation.tsx:52 #: src/views/settings/components/UpgradeToProConfirmation.tsx:52
#: src/views/settings/index.tsx:213 #: src/views/settings/index.tsx:216
msgid "Upgrade to Pro" msgid "Upgrade to Pro"
msgstr "Upgraden naar Pro" msgstr "Upgraden naar Pro"
#: src/components/NewWorkspaceForm.tsx:369
msgid "Upgrade to Pro ($29/month)"
msgstr "Upgrade naar Pro ($29/maand)"
#: src/views/members/components/InviteMemberForm.tsx:224 #: src/views/members/components/InviteMemberForm.tsx:224
msgid "Upgrade to Team Plan" msgid "Upgrade to Team Plan"
msgstr "Upgraden naar teamplan" msgstr "Upgraden naar teamplan"
@@ -1817,14 +1847,17 @@ msgstr "Upgraden naar teamplan"
msgid "Urgent" msgid "Urgent"
msgstr "Urgent" msgstr "Urgent"
#: src/components/NewWorkspaceForm.tsx:35
#: src/views/settings/components/UpdateWorkspaceUrlForm.tsx:36 #: src/views/settings/components/UpdateWorkspaceUrlForm.tsx:36
msgid "URL can only contain letters, numbers, and hyphens" msgid "URL can only contain letters, numbers, and hyphens"
msgstr "URL kan alleen letters, cijfers en koppeltekens bevatten" msgstr "URL kan alleen letters, cijfers en koppeltekens bevatten"
#: src/components/NewWorkspaceForm.tsx:33
#: src/views/settings/components/UpdateWorkspaceUrlForm.tsx:34 #: src/views/settings/components/UpdateWorkspaceUrlForm.tsx:34
msgid "URL cannot exceed 24 characters" msgid "URL cannot exceed 24 characters"
msgstr "URL mag niet langer zijn dan 24 tekens" msgstr "URL mag niet langer zijn dan 24 tekens"
#: src/components/NewWorkspaceForm.tsx:31
#: src/views/settings/components/UpdateWorkspaceUrlForm.tsx:32 #: src/views/settings/components/UpdateWorkspaceUrlForm.tsx:32
msgid "URL must be at least 3 characters long" msgid "URL must be at least 3 characters long"
msgstr "URL moet minimaal 3 tekens lang zijn" msgstr "URL moet minimaal 3 tekens lang zijn"
@@ -1833,7 +1866,7 @@ msgstr "URL moet minimaal 3 tekens lang zijn"
msgid "Use template" msgid "Use template"
msgstr "Sjabloon gebruiken" msgstr "Sjabloon gebruiken"
#: src/views/members/index.tsx:217 #: src/views/members/index.tsx:237
msgid "User" msgid "User"
msgstr "Gebruiker" msgstr "Gebruiker"
@@ -1845,11 +1878,11 @@ msgstr "Gebruiker is al lid van deze werkruimte"
msgid "Video" msgid "Video"
msgstr "Video" msgstr "Video"
#: src/views/settings/index.tsx:296 #: src/views/settings/index.tsx:299
msgid "View and manage your API keys." msgid "View and manage your API keys."
msgstr "Bekijk en beheer je API-sleutels." msgstr "Bekijk en beheer je API-sleutels."
#: src/views/settings/index.tsx:235 #: src/views/settings/index.tsx:238
msgid "View and manage your billing and subscription." msgid "View and manage your billing and subscription."
msgstr "Bekijk en beheer je facturering en abonnement." msgstr "Bekijk en beheer je facturering en abonnement."
@@ -1905,11 +1938,15 @@ msgstr "Waarom een open source Trello maken?"
msgid "Workspace" msgid "Workspace"
msgstr "Werkruimte" msgstr "Werkruimte"
#: src/components/NewWorkspaceForm.tsx:143
msgid "Workspace created successfully. You can upgrade later in settings."
msgstr "Werkruimte succesvol aangemaakt. Je kunt later upgraden in de instellingen."
#: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:26 #: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:26
msgid "Workspace deleted" msgid "Workspace deleted"
msgstr "Werkruimte verwijderd" msgstr "Werkruimte verwijderd"
#: src/views/settings/index.tsx:199 #: src/views/settings/index.tsx:202
msgid "Workspace description" msgid "Workspace description"
msgstr "Werkruimte beschrijving" msgstr "Werkruimte beschrijving"
@@ -1930,8 +1967,8 @@ msgstr "Werkruimtebeschrijving bijgewerkt"
msgid "Workspace members" msgid "Workspace members"
msgstr "Werkruimteleden" msgstr "Werkruimteleden"
#: src/components/NewWorkspaceForm.tsx:81 #: src/components/NewWorkspaceForm.tsx:259
#: src/views/settings/index.tsx:180 #: src/views/settings/index.tsx:183
msgid "Workspace name" msgid "Workspace name"
msgstr "Naam werkruimte" msgstr "Naam werkruimte"
@@ -1939,6 +1976,10 @@ msgstr "Naam werkruimte"
msgid "Workspace name cannot exceed 24 characters" msgid "Workspace name cannot exceed 24 characters"
msgstr "Werkruimtenaam mag niet langer zijn dan 24 tekens" msgstr "Werkruimtenaam mag niet langer zijn dan 24 tekens"
#: src/components/NewWorkspaceForm.tsx:27
msgid "Workspace name is required"
msgstr "Naam van werkruimte is verplicht"
#: src/views/settings/components/UpdateWorkspaceNameForm.tsx:14 #: src/views/settings/components/UpdateWorkspaceNameForm.tsx:14
msgid "Workspace name must be at least 3 characters long" msgid "Workspace name must be at least 3 characters long"
msgstr "Werkruimtenaam moet minimaal 3 tekens lang zijn" msgstr "Werkruimtenaam moet minimaal 3 tekens lang zijn"
@@ -1951,10 +1992,14 @@ msgstr "Werkruimtenaam bijgewerkt"
msgid "Workspace slug updated" msgid "Workspace slug updated"
msgstr "Werkruimte-slug bijgewerkt" msgstr "Werkruimte-slug bijgewerkt"
#: src/views/settings/index.tsx:189 #: src/views/settings/index.tsx:192
msgid "Workspace URL" msgid "Workspace URL"
msgstr "Werkruimte URL" msgstr "Werkruimte URL"
#: src/components/NewWorkspaceForm.tsx:273
msgid "workspace-url"
msgstr "werkruimte-url"
#: src/views/boards/components/TemplateBoards.tsx:30 #: src/views/boards/components/TemplateBoards.tsx:30
msgid "Writing" msgid "Writing"
msgstr "Schrijven" msgstr "Schrijven"
@@ -1967,7 +2012,7 @@ msgstr "Jaarlijks"
msgid "Yes, we offer an forever free plan for individual use. No restrictions, no paywalls, no limits." msgid "Yes, we offer an forever free plan for individual use. No restrictions, no paywalls, no limits."
msgstr "Ja, we bieden een voor altijd gratis plan voor individueel gebruik. Geen beperkingen, geen betaalmuren, geen limieten." msgstr "Ja, we bieden een voor altijd gratis plan voor individueel gebruik. Geen beperkingen, geen betaalmuren, geen limieten."
#: src/views/settings/index.tsx:328 #: src/views/settings/index.tsx:331
msgid "You are about to change your password." msgid "You are about to change your password."
msgstr "Je staat op het punt je wachtwoord te wijzigen." msgstr "Je staat op het punt je wachtwoord te wijzigen."
@@ -2015,11 +2060,11 @@ msgstr "Je wachtwoord is gewijzigd."
msgid "Your profile image has been updated." msgid "Your profile image has been updated."
msgstr "Je profielafbeelding is bijgewerkt." msgstr "Je profielafbeelding is bijgewerkt."
#: src/views/settings/index.tsx:117 #: src/views/settings/index.tsx:120
msgid "Your Trello account has been disconnected." msgid "Your Trello account has been disconnected."
msgstr "Je Trello-account is ontkoppeld." msgstr "Je Trello-account is ontkoppeld."
#: src/views/settings/index.tsx:278 #: src/views/settings/index.tsx:281
msgid "Your Trello account is connected." msgid "Your Trello account is connected."
msgstr "Je Trello-account is verbonden." msgstr "Je Trello-account is verbonden."

File diff suppressed because one or more lines are too long

View File

@@ -1,4 +1,4 @@
import { createContext, useContext, useState } from "react"; import { createContext, useCallback, useContext, useState } from "react";
interface ModalState { interface ModalState {
contentType: string; contentType: string;
@@ -42,57 +42,59 @@ export const ModalProvider: React.FC<Props> = ({ children }) => {
const entityId = currentModal?.entityId || ""; const entityId = currentModal?.entityId || "";
const entityLabel = currentModal?.entityLabel || ""; const entityLabel = currentModal?.entityLabel || "";
const openModal = ( const openModal = useCallback(
contentType: string, (contentType: string, entityId?: string, entityLabel?: string) => {
entityId?: string, const newModal: ModalState = { contentType, entityId, entityLabel };
entityLabel?: string, setModalStack((prev) => [...prev, newModal]);
) => { },
const newModal: ModalState = { contentType, entityId, entityLabel }; [],
setModalStack((prev) => [...prev, newModal]); );
};
const closeModal = () => { const closeModal = useCallback(() => {
setModalStack((prev) => { setModalStack((prev) => {
if (prev.length <= 1) { if (prev.length <= 1) {
return []; return [];
} }
return prev.slice(0, -1); return prev.slice(0, -1);
}); });
}; }, []);
const closeModals = (count: number) => { const closeModals = useCallback((count: number) => {
setModalStack(prev => { setModalStack((prev) => {
const newLength = Math.max(0, prev.length - count); const newLength = Math.max(0, prev.length - count);
return prev.slice(0, newLength); return prev.slice(0, newLength);
}); });
}; }, []);
const clearAllModals = () => { const clearAllModals = useCallback(() => {
setModalStack([]); setModalStack([]);
}; }, []);
const setModalState = (modalType: string, state: any) => { const setModalState = useCallback((modalType: string, state: any) => {
setModalStates((prev) => ({ setModalStates((prev) => ({
...prev, ...prev,
[modalType]: state, [modalType]: state,
})); }));
}; }, []);
const getModalState = (modalType: string) => { const getModalState = useCallback(
return modalStates[modalType]; (modalType: string) => {
}; return modalStates[modalType];
},
[modalStates],
);
const clearModalState = (modalType: string) => { const clearModalState = useCallback((modalType: string) => {
setModalStates((prev) => { setModalStates((prev) => {
const newStates = { ...prev }; const newStates = { ...prev };
delete newStates[modalType]; delete newStates[modalType];
return newStates; return newStates;
}); });
}; }, []);
const clearAllModalStates = () => { const clearAllModalStates = useCallback(() => {
setModalStates({}); setModalStates({});
}; }, []);
return ( return (
<ModalContext.Provider <ModalContext.Provider

View File

@@ -47,12 +47,16 @@ export const WorkspaceProvider: React.FC<{ children: ReactNode }> = ({
const [hasLoaded, setHasLoaded] = useState(false); const [hasLoaded, setHasLoaded] = useState(false);
const { data, isLoading } = api.workspace.all.useQuery(); const { data, isLoading } = api.workspace.all.useQuery();
const utils = api.useUtils();
const switchWorkspace = (_workspace: Workspace) => { const switchWorkspace = (_workspace: Workspace) => {
localStorage.setItem("workspacePublicId", _workspace.publicId); localStorage.setItem("workspacePublicId", _workspace.publicId);
setWorkspace(_workspace); setWorkspace(_workspace);
// Refetch workspace data to ensure availableWorkspaces is up to date
void utils.workspace.all.refetch();
router.push(`/boards`); router.push(`/boards`);
}; };
@@ -66,21 +70,15 @@ export const WorkspaceProvider: React.FC<{ children: ReactNode }> = ({
localStorage.getItem("workspacePublicId"); localStorage.getItem("workspacePublicId");
if (data.length) { if (data.length) {
const workspaces = data const workspaces = data.map(({ workspace, role }) => ({
.map(({ workspace, role }) => { role,
if (!workspace) return; publicId: workspace.publicId,
name: workspace.name,
return { slug: workspace.slug,
role, description: workspace.description,
publicId: workspace.publicId, plan: workspace.plan,
name: workspace.name, hasLoaded: true,
slug: workspace.slug, })) as Workspace[];
description: workspace.description,
plan: workspace.plan,
hasLoaded: true,
};
})
.filter((workspace) => workspace !== null) as Workspace[];
if (workspaces.length) setAvailableWorkspaces(workspaces); if (workspaces.length) setAvailableWorkspaces(workspaces);
} }
@@ -116,7 +114,7 @@ export const WorkspaceProvider: React.FC<{ children: ReactNode }> = ({
role: primaryWorkspaceRole, role: primaryWorkspaceRole,
}); });
} }
}, [data]); }, [data, isLoading]);
return ( return (
<WorkspaceContext.Provider <WorkspaceContext.Provider

View File

@@ -1,4 +1,5 @@
import { t } from "@lingui/core/macro"; import { t } from "@lingui/core/macro";
import { useEffect } from "react";
import { HiArrowDownTray, HiOutlinePlusSmall } from "react-icons/hi2"; import { HiArrowDownTray, HiOutlinePlusSmall } from "react-icons/hi2";
import Button from "~/components/Button"; import Button from "~/components/Button";
@@ -14,9 +15,13 @@ import { NewBoardForm } from "./components/NewBoardForm";
export default function BoardsPage() { export default function BoardsPage() {
const { openModal, modalContentType, isOpen } = useModal(); const { openModal, modalContentType, isOpen } = useModal();
const { workspace, hasLoaded } = useWorkspace(); const { availableWorkspaces, workspace, hasLoaded } = useWorkspace();
if (hasLoaded && !workspace.publicId) openModal("NEW_WORKSPACE"); useEffect(() => {
if (hasLoaded && availableWorkspaces.length === 0) {
openModal("NEW_WORKSPACE");
}
}, [hasLoaded, availableWorkspaces.length, openModal]);
return ( return (
<> <>

View File

@@ -1,4 +1,3 @@
import { Menu } from "@headlessui/react";
import { t } from "@lingui/core/macro"; import { t } from "@lingui/core/macro";
import { HiMiniPlus } from "react-icons/hi2"; import { HiMiniPlus } from "react-icons/hi2";
@@ -101,22 +100,19 @@ export default function LabelSelector({
{selectedLabels.length ? ( {selectedLabels.length ? (
<div className="flex flex-wrap gap-x-0.5"> <div className="flex flex-wrap gap-x-0.5">
{selectedLabels.map((label) => ( {selectedLabels.map((label) => (
<Menu.Button key={label.key}>
<Badge value={label.value} iconLeft={label.leftIcon} />
</Menu.Button>
))}
<Menu.Button>
<Badge <Badge
value={t`Add label`} key={label.key}
iconLeft={<HiMiniPlus size={14} />} value={label.value}
iconLeft={label.leftIcon}
/> />
</Menu.Button> ))}
<Badge value={t`Add label`} iconLeft={<HiMiniPlus size={14} />} />
</div> </div>
) : ( ) : (
<Menu.Button className="flex h-full w-full items-center rounded-[5px] border-[1px] border-light-50 pl-2 text-left text-sm text-neutral-900 hover:border-light-300 hover:bg-light-200 dark:border-dark-50 dark:text-dark-1000 dark:hover:border-dark-200 dark:hover:bg-dark-100"> <div className="flex h-full w-full items-center rounded-[5px] border-[1px] border-light-50 pl-2 text-left text-sm text-neutral-900 hover:border-light-300 hover:bg-light-200 dark:border-dark-50 dark:text-dark-1000 dark:hover:border-dark-200 dark:hover:bg-dark-100">
<HiMiniPlus size={22} className="pr-2" /> <HiMiniPlus size={22} className="pr-2" />
{t`Add label`} {t`Add label`}
</Menu.Button> </div>
)} )}
</CheckboxDropdown> </CheckboxDropdown>
)} )}

View File

@@ -1,4 +1,3 @@
import { Menu } from "@headlessui/react";
import { t } from "@lingui/core/macro"; import { t } from "@lingui/core/macro";
import CheckboxDropdown from "~/components/CheckboxDropdown"; import CheckboxDropdown from "~/components/CheckboxDropdown";
@@ -79,9 +78,9 @@ export default function ListSelector({
}} }}
asChild asChild
> >
<Menu.Button className="flex h-full w-full items-center rounded-[5px] border-[1px] border-light-50 py-1 pl-2 text-left text-sm text-neutral-900 hover:border-light-300 hover:bg-light-200 dark:border-dark-50 dark:text-dark-1000 dark:hover:border-dark-200 dark:hover:bg-dark-100"> <div className="flex h-full w-full items-center rounded-[5px] border-[1px] border-light-50 py-1 pl-2 text-left text-sm text-neutral-900 hover:border-light-300 hover:bg-light-200 dark:border-dark-50 dark:text-dark-1000 dark:hover:border-dark-200 dark:hover:bg-dark-100">
{selectedList?.value} {selectedList?.value}
</Menu.Button> </div>
</CheckboxDropdown> </CheckboxDropdown>
)} )}
</> </>

View File

@@ -1,5 +1,4 @@
import { useRouter } from "next/router"; import { useRouter } from "next/router";
import { Menu } from "@headlessui/react";
import { t } from "@lingui/core/macro"; import { t } from "@lingui/core/macro";
import { HiMiniPlus } from "react-icons/hi2"; import { HiMiniPlus } from "react-icons/hi2";
@@ -112,11 +111,12 @@ export default function MemberSelector({
createNewItemLabel={t`Invite member`} createNewItemLabel={t`Invite member`}
asChild asChild
> >
<Menu.Button className="flex h-full w-full items-center rounded-[5px] border-[1px] border-light-50 py-1 pl-2 text-left text-sm text-neutral-900 hover:border-light-300 hover:bg-light-200 dark:border-dark-50 dark:text-dark-1000 dark:hover:border-dark-200 dark:hover:bg-dark-100"> <div className="flex h-full w-full items-center rounded-[5px] border-[1px] border-light-50 py-1 pl-2 text-left text-sm text-neutral-900 hover:border-light-300 hover:bg-light-200 dark:border-dark-50 dark:text-dark-1000 dark:hover:border-dark-200 dark:hover:bg-dark-100">
{selectedMembers.length ? ( {selectedMembers.length ? (
<div className="isolate flex justify-end -space-x-1 overflow-hidden"> <div className="isolate flex justify-end -space-x-1 overflow-hidden">
{selectedMembers.map(({ value, imageUrl }) => ( {selectedMembers.map(({ value, imageUrl }) => (
<Avatar <Avatar
key={value}
size="sm" size="sm"
name={value} name={value}
imageUrl={imageUrl} imageUrl={imageUrl}
@@ -130,7 +130,7 @@ export default function MemberSelector({
{t`Add member`} {t`Add member`}
</> </>
)} )}
</Menu.Button> </div>
</CheckboxDropdown> </CheckboxDropdown>
)} )}
</> </>

View File

@@ -2,7 +2,7 @@ import Link from "next/link";
import { Radio, RadioGroup } from "@headlessui/react"; import { Radio, RadioGroup } from "@headlessui/react";
import { t } from "@lingui/core/macro"; import { t } from "@lingui/core/macro";
import { useState } from "react"; import { useState } from "react";
import { HiCheckCircle } from "react-icons/hi2"; import { HiBolt, HiCheckCircle } from "react-icons/hi2";
import { twMerge } from "tailwind-merge"; import { twMerge } from "tailwind-merge";
type Frequency = "monthly" | "annually"; type Frequency = "monthly" | "annually";
@@ -94,6 +94,7 @@ const Pricing = () => {
<div className="mt-12 flex flex-col items-center justify-center"> <div className="mt-12 flex flex-col items-center justify-center">
<div className="mb-4 flex items-center gap-2 rounded-full border bg-white px-4 py-1.5 text-center text-xs font-bold text-gray-800 dark:border-dark-300 dark:bg-white dark:text-gray-800 lg:text-sm"> <div className="mb-4 flex items-center gap-2 rounded-full border bg-white px-4 py-1.5 text-center text-xs font-bold text-gray-800 dark:border-dark-300 dark:bg-white dark:text-gray-800 lg:text-sm">
<HiBolt />
<p> <p>
{t`Launch offer: unlimited seats for just $29/month with Pro`} {t`Launch offer: unlimited seats for just $29/month with Pro`}
</p> </p>

View File

@@ -1,6 +1,11 @@
import Link from "next/link";
import { t } from "@lingui/core/macro"; import { t } from "@lingui/core/macro";
import { env } from "next-runtime-env"; import { env } from "next-runtime-env";
import { HiEllipsisHorizontal, HiOutlinePlusSmall } from "react-icons/hi2"; import {
HiBolt,
HiEllipsisHorizontal,
HiOutlinePlusSmall,
} from "react-icons/hi2";
import { twMerge } from "tailwind-merge"; import { twMerge } from "tailwind-merge";
import type { Subscription } from "@kan/shared/utils"; import type { Subscription } from "@kan/shared/utils";
@@ -168,30 +173,45 @@ export default function MembersPage() {
<PageHead title={t`Members | ${workspace.name ?? "Workspace"}`} /> <PageHead title={t`Members | ${workspace.name ?? "Workspace"}`} />
<div className="m-auto h-full max-w-[1100px] p-6 px-5 md:px-28 md:py-12"> <div className="m-auto h-full max-w-[1100px] p-6 px-5 md:px-28 md:py-12">
<div className="mb-8 flex w-full justify-between"> <div className="mb-8 flex w-full justify-between">
<h1 className="font-bold tracking-tight text-neutral-900 dark:text-dark-1000 sm:text-[1.2rem]"> <div className="flex items-center gap-3">
{t`Members`} <h1 className="font-bold tracking-tight text-neutral-900 dark:text-dark-1000 sm:text-[1.2rem]">
</h1> {t`Members`}
</h1>
</div>
<div className="flex items-center gap-3"> <div className="flex items-center gap-3">
{env("NEXT_PUBLIC_KAN_ENV") === "cloud" && ( {env("NEXT_PUBLIC_KAN_ENV") === "cloud" && (
<div <>
className={twMerge( {!proSubscription && (
"flex items-center rounded-full border px-3 py-1 text-center text-xs", <Link
teamSubscription || proSubscription href="/settings?upgrade=pro"
? "border-emerald-300 bg-emerald-50 text-emerald-400 dark:border-emerald-700 dark:bg-emerald-950 dark:text-emerald-400" className="hidden items-center rounded-full border border-emerald-300 bg-emerald-50 px-3 py-1 text-center text-xs text-emerald-400 dark:border-emerald-700 dark:bg-emerald-950 dark:text-emerald-400 lg:flex"
: "border-light-300 bg-light-50 text-light-1000 dark:border-dark-300 dark:bg-dark-50 dark:text-dark-900", >
<HiBolt />
<span className="ml-1 font-medium">
{t`Launch offer: Get unlimited members with Pro`}
</span>
</Link>
)} )}
> <div
<span className="font-medium"> className={twMerge(
{proSubscription "flex items-center rounded-full border px-3 py-1 text-center text-xs",
? t`Pro Plan` teamSubscription || proSubscription
: teamSubscription ? "border-emerald-300 bg-emerald-50 text-emerald-400 dark:border-emerald-700 dark:bg-emerald-950 dark:text-emerald-400"
? t`Team Plan` : "border-light-300 bg-light-50 text-light-1000 dark:border-dark-300 dark:bg-dark-50 dark:text-dark-900",
: t`Free Plan`}
{proSubscription && unlimitedSeats && (
<span className="ml-1 text-xs"></span>
)} )}
</span> >
</div> <span className="font-medium">
{proSubscription
? t`Pro Plan`
: teamSubscription
? t`Team Plan`
: t`Free Plan`}
{proSubscription && unlimitedSeats && (
<span className="ml-1 text-xs"></span>
)}
</span>
</div>
</>
)} )}
<Button <Button
onClick={() => openModal("INVITE_MEMBER")} onClick={() => openModal("INVITE_MEMBER")}

View File

@@ -76,9 +76,14 @@ export function UpgradeToProConfirmation({
</div> </div>
<div className="flex items-center space-x-3"> <div className="flex items-center space-x-3">
<HiCheckBadge className="h-5 w-5 flex-shrink-0 text-light-1000 dark:text-dark-950" /> <HiCheckBadge className="h-5 w-5 flex-shrink-0 text-light-1000 dark:text-dark-950" />
<span className="text-sm text-neutral-900 dark:text-dark-1000"> <div className="flex items-center space-x-2">
{t`Board analytics (coming soon)`} <span className="text-xs text-neutral-900 dark:text-dark-1000">
</span> {t`Board analytics`}
</span>
<span className="inline-flex items-center rounded-full bg-gray-500/10 px-2 py-0.5 text-[10px] font-medium text-gray-600 ring-1 ring-inset ring-gray-500/20 dark:text-gray-400 sm:text-[10px]">
{t`Coming soon`}
</span>
</div>
</div> </div>
<div className="flex items-center space-x-3"> <div className="flex items-center space-x-3">
<HiCheckBadge className="h-5 w-5 flex-shrink-0 text-light-1000 dark:text-dark-950" /> <HiCheckBadge className="h-5 w-5 flex-shrink-0 text-light-1000 dark:text-dark-950" />
@@ -90,7 +95,12 @@ export function UpgradeToProConfirmation({
</div> </div>
</div> </div>
<div className="mt-5 flex justify-end space-x-2 sm:mt-6"> <div className="mt-5 flex justify-end space-x-2 sm:mt-6">
<Button onClick={() => closeModal()} variant="secondary"> <Button
onClick={() => {
closeModal();
}}
variant="secondary"
>
{t`Cancel`} {t`Cancel`}
</Button> </Button>
<Button <Button

View File

@@ -1,7 +1,7 @@
import { useRouter } from "next/router"; import { useRouter } from "next/router";
import { t } from "@lingui/core/macro"; import { t } from "@lingui/core/macro";
import { env } from "next-runtime-env"; import { env } from "next-runtime-env";
import { useEffect, useRef } from "react"; import { useEffect, useRef, useState } from "react";
import { HiBolt, HiMiniArrowTopRightOnSquare } from "react-icons/hi2"; import { HiBolt, HiMiniArrowTopRightOnSquare } from "react-icons/hi2";
import type { Subscription } from "@kan/shared/utils"; import type { Subscription } from "@kan/shared/utils";
@@ -36,6 +36,7 @@ export default function SettingsPage() {
const router = useRouter(); const router = useRouter();
const workspaceUrlSectionRef = useRef<HTMLDivElement>(null); const workspaceUrlSectionRef = useRef<HTMLDivElement>(null);
const scrollContainerRef = useRef<HTMLDivElement>(null); const scrollContainerRef = useRef<HTMLDivElement>(null);
const [hasOpenedUpgradeModal, setHasOpenedUpgradeModal] = useState(false);
const isCredentialsEnabled = const isCredentialsEnabled =
env("NEXT_PUBLIC_ALLOW_CREDENTIALS")?.toLowerCase() === "true"; env("NEXT_PUBLIC_ALLOW_CREDENTIALS")?.toLowerCase() === "true";
const { data } = api.user.getUser.useQuery(); const { data } = api.user.getUser.useQuery();
@@ -100,11 +101,13 @@ export default function SettingsPage() {
if ( if (
router.query.upgrade === "pro" && router.query.upgrade === "pro" &&
env("NEXT_PUBLIC_KAN_ENV") === "cloud" && env("NEXT_PUBLIC_KAN_ENV") === "cloud" &&
!hasActiveSubscription(subscriptions, "pro") !hasActiveSubscription(subscriptions, "pro") &&
!hasOpenedUpgradeModal
) { ) {
openModal("UPGRADE_TO_PRO"); openModal("UPGRADE_TO_PRO");
setHasOpenedUpgradeModal(true);
} }
}, [router.query.upgrade, subscriptions, openModal]); }, [router.query.upgrade, subscriptions, openModal, hasOpenedUpgradeModal]);
const { mutateAsync: disconnectTrello } = const { mutateAsync: disconnectTrello } =
api.integration.disconnect.useMutation({ api.integration.disconnect.useMutation({

View File

@@ -140,6 +140,12 @@ export const workspaceRouter = createTRPCRouter({
.input( .input(
z.object({ z.object({
name: z.string().min(1), name: z.string().min(1),
slug: z
.string()
.min(3)
.max(24)
.regex(/^(?![-]+$)[a-zA-Z0-9-]+$/)
.optional(),
}), }),
) )
.output(z.custom<Awaited<ReturnType<typeof workspaceRepo.create>>>()) .output(z.custom<Awaited<ReturnType<typeof workspaceRepo.create>>>())
@@ -153,12 +159,43 @@ export const workspaceRouter = createTRPCRouter({
code: "UNAUTHORIZED", code: "UNAUTHORIZED",
}); });
// Check if slug is provided in cloud environment
if (input.slug && env("NEXT_PUBLIC_KAN_ENV") === "cloud") {
throw new TRPCError({
message: "Custom URLs are only available for Pro workspaces",
code: "BAD_REQUEST",
});
}
const workspacePublicId = generateUID(); const workspacePublicId = generateUID();
const workspaceSlug = input.slug ?? workspacePublicId;
if (input.slug) {
const reservedOrPremiumWorkspaceSlug =
await workspaceSlugRepo.getWorkspaceSlug(ctx.db, input.slug);
const isWorkspaceSlugAvailable =
await workspaceRepo.isWorkspaceSlugAvailable(ctx.db, input.slug);
if (reservedOrPremiumWorkspaceSlug) {
throw new TRPCError({
message: `Workspace slug '${input.slug}' is reserved or premium`,
code: "BAD_REQUEST",
});
}
if (!isWorkspaceSlugAvailable) {
throw new TRPCError({
message: `Workspace slug '${input.slug}' is already taken`,
code: "BAD_REQUEST",
});
}
}
const result = await workspaceRepo.create(ctx.db, { const result = await workspaceRepo.create(ctx.db, {
publicId: workspacePublicId, publicId: workspacePublicId,
name: input.name, name: input.name,
slug: workspacePublicId, slug: workspaceSlug,
createdBy: userId, createdBy: userId,
createdByEmail: userEmail, createdByEmail: userEmail,
}); });
@@ -334,6 +371,14 @@ export const workspaceRouter = createTRPCRouter({
}), }),
) )
.query(async ({ ctx, input }) => { .query(async ({ ctx, input }) => {
const userId = ctx.user?.id;
if (!userId)
throw new TRPCError({
message: `User not authenticated`,
code: "UNAUTHORIZED",
});
const slug = input.workspaceSlug.toLowerCase(); const slug = input.workspaceSlug.toLowerCase();
// check slug is not reserved // check slug is not reserved
const workspaceSlug = await workspaceSlugRepo.getWorkspaceSlug( const workspaceSlug = await workspaceSlugRepo.getWorkspaceSlug(
@@ -345,6 +390,19 @@ export const workspaceRouter = createTRPCRouter({
const isWorkspaceSlugAvailable = const isWorkspaceSlugAvailable =
await workspaceRepo.isWorkspaceSlugAvailable(ctx.db, slug); await workspaceRepo.isWorkspaceSlugAvailable(ctx.db, slug);
const isAvailable =
isWorkspaceSlugAvailable && workspaceSlug?.type !== "reserved";
const isReserved = workspaceSlug?.type === "reserved";
if (env("NEXT_PUBLIC_KAN_ENV") === "cloud") {
await workspaceSlugRepo.createWorkspaceSlugCheck(ctx.db, {
slug,
userId,
available: isAvailable,
reserved: isReserved,
});
}
return { return {
isAvailable: isAvailable:
isWorkspaceSlugAvailable && workspaceSlug?.type !== "reserved", isWorkspaceSlugAvailable && workspaceSlug?.type !== "reserved",

View File

@@ -0,0 +1 @@
ALTER TABLE "subscription" ALTER COLUMN "referenceId" DROP NOT NULL;

View File

@@ -0,0 +1,22 @@
CREATE TABLE IF NOT EXISTS "workspace_slug_checks" (
"id" bigserial PRIMARY KEY NOT NULL,
"slug" varchar(255) NOT NULL,
"available" boolean NOT NULL,
"reserved" boolean NOT NULL,
"workspaceId" bigint,
"createdBy" uuid,
"createdAt" timestamp DEFAULT now() NOT NULL
);
--> statement-breakpoint
ALTER TABLE "workspace_slug_checks" ENABLE ROW LEVEL SECURITY;--> statement-breakpoint
DO $$ BEGIN
ALTER TABLE "workspace_slug_checks" ADD CONSTRAINT "workspace_slug_checks_workspaceId_workspace_id_fk" FOREIGN KEY ("workspaceId") REFERENCES "public"."workspace"("id") ON DELETE no action ON UPDATE no action;
EXCEPTION
WHEN duplicate_object THEN null;
END $$;
--> statement-breakpoint
DO $$ BEGIN
ALTER TABLE "workspace_slug_checks" ADD CONSTRAINT "workspace_slug_checks_createdBy_user_id_fk" FOREIGN KEY ("createdBy") REFERENCES "public"."user"("id") ON DELETE set null ON UPDATE no action;
EXCEPTION
WHEN duplicate_object THEN null;
END $$;

View File

@@ -0,0 +1,7 @@
ALTER TABLE "subscription" DROP CONSTRAINT "subscription_referenceId_workspace_publicId_fk";
--> statement-breakpoint
DO $$ BEGIN
ALTER TABLE "subscription" ADD CONSTRAINT "subscription_referenceId_workspace_publicId_fk" FOREIGN KEY ("referenceId") REFERENCES "public"."workspace"("publicId") ON DELETE set null ON UPDATE no action;
EXCEPTION
WHEN duplicate_object THEN null;
END $$;

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -78,6 +78,27 @@
"when": 1757271312974, "when": 1757271312974,
"tag": "20250907185512_AddUnlimitedSeatsToSubscription", "tag": "20250907185512_AddUnlimitedSeatsToSubscription",
"breakpoints": true "breakpoints": true
},
{
"idx": 11,
"version": "7",
"when": 1757533858687,
"tag": "20250910195058_RemoveNotNullConstraintFromReferenceIdOnSubsriptions",
"breakpoints": true
},
{
"idx": 12,
"version": "7",
"when": 1757534656098,
"tag": "20250910200416_AddWorkspaceSlugChecks",
"breakpoints": true
},
{
"idx": 13,
"version": "7",
"when": 1757535838766,
"tag": "20250910202358_AddCascadeSetNullToReferenceIdOnSubsriptions",
"breakpoints": true
} }
] ]
} }

View File

@@ -1,7 +1,7 @@
import { eq } from "drizzle-orm"; import { eq } from "drizzle-orm";
import type { dbClient } from "@kan/db/client"; import type { dbClient } from "@kan/db/client";
import { slugs } from "@kan/db/schema"; import { slugChecks, slugs } from "@kan/db/schema";
export const getWorkspaceSlug = (db: dbClient, slug: string) => { export const getWorkspaceSlug = (db: dbClient, slug: string) => {
return db.query.slugs.findFirst({ return db.query.slugs.findFirst({
@@ -12,3 +12,20 @@ export const getWorkspaceSlug = (db: dbClient, slug: string) => {
where: eq(slugs.slug, slug), where: eq(slugs.slug, slug),
}); });
}; };
export const createWorkspaceSlugCheck = (
db: dbClient,
input: {
slug: string;
userId: string;
available: boolean;
reserved: boolean;
},
) => {
return db.insert(slugChecks).values({
slug: input.slug,
available: input.available,
reserved: input.reserved,
createdBy: input.userId,
});
};

View File

@@ -13,9 +13,10 @@ import { workspaces } from "./workspaces";
export const subscription = pgTable("subscription", { export const subscription = pgTable("subscription", {
id: bigserial("id", { mode: "number" }).primaryKey(), id: bigserial("id", { mode: "number" }).primaryKey(),
plan: varchar("plan", { length: 255 }).notNull(), plan: varchar("plan", { length: 255 }).notNull(),
referenceId: varchar("referenceId", { length: 12 }) referenceId: varchar("referenceId", { length: 12 }).references(
.notNull() () => workspaces.publicId,
.references(() => workspaces.publicId), { onDelete: "set null" },
),
stripeCustomerId: varchar("stripeCustomerId", { length: 255 }), stripeCustomerId: varchar("stripeCustomerId", { length: 255 }),
stripeSubscriptionId: varchar("stripeSubscriptionId", { length: 255 }), stripeSubscriptionId: varchar("stripeSubscriptionId", { length: 255 }),
status: varchar("status", { length: 255 }).notNull(), status: varchar("status", { length: 255 }).notNull(),

View File

@@ -2,6 +2,7 @@ import { relations } from "drizzle-orm";
import { import {
bigint, bigint,
bigserial, bigserial,
boolean,
pgEnum, pgEnum,
pgTable, pgTable,
text, text,
@@ -103,3 +104,17 @@ export const slugs = pgTable("workspace_slugs", {
slug: varchar("slug", { length: 255 }).notNull().unique(), slug: varchar("slug", { length: 255 }).notNull().unique(),
type: slugTypeEnum("type").notNull(), type: slugTypeEnum("type").notNull(),
}); });
export const slugChecks = pgTable("workspace_slug_checks", {
id: bigserial("id", { mode: "number" }).primaryKey(),
slug: varchar("slug", { length: 255 }).notNull(),
available: boolean("available").notNull(),
reserved: boolean("reserved").notNull(),
workspaceId: bigint("workspaceId", { mode: "number" }).references(
() => workspaces.id,
),
createdBy: uuid("createdBy").references(() => users.id, {
onDelete: "set null",
}),
createdAt: timestamp("createdAt").defaultNow().notNull(),
}).enableRLS();

View File

@@ -14,7 +14,7 @@ export interface Subscription {
unlimitedSeats: boolean; unlimitedSeats: boolean;
periodStart: Date | null; periodStart: Date | null;
periodEnd: Date | null; periodEnd: Date | null;
referenceId: string; referenceId: string | null;
stripeSubscriptionId: string | null; stripeSubscriptionId: string | null;
stripeCustomerId: string | null; stripeCustomerId: string | null;
createdAt: Date; createdAt: Date;