Compare commits
10 Commits
feat/searc
...
feat/invit
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b00c47952c | ||
|
|
aa931ddcbe | ||
|
|
73b9ac7cb5 | ||
|
|
01e0140e6a | ||
|
|
f22a0332ab | ||
|
|
bd97362d90 | ||
|
|
3b3b4f89ba | ||
|
|
17f876160d | ||
|
|
dd1bd9b7cc | ||
|
|
7d9746be20 |
@@ -1,6 +1,6 @@
|
|||||||
# https://github.com/kanbn/kan?tab=readme-ov-file#environment-variables-)
|
# https://github.com/kanbn/kan?tab=readme-ov-file#environment-variables-)
|
||||||
|
|
||||||
# Required environment variables
|
# Required environment variables
|
||||||
NEXT_PUBLIC_BASE_URL= # e.g. https://kan.bn
|
NEXT_PUBLIC_BASE_URL= # e.g. https://kan.bn
|
||||||
BETTER_AUTH_SECRET= # Random 32+ char string (can gen with: openssl rand -base64 24 | tr -dc 'a-zA-Z0-9' | head -c 32)
|
BETTER_AUTH_SECRET= # Random 32+ char string (can gen with: openssl rand -base64 24 | tr -dc 'a-zA-Z0-9' | head -c 32)
|
||||||
|
|
||||||
@@ -18,9 +18,6 @@ SMTP_PASSWORD=
|
|||||||
EMAIL_FROM= # e.g. "Kan <hello@mail.kan.bn>"
|
EMAIL_FROM= # e.g. "Kan <hello@mail.kan.bn>"
|
||||||
SMTP_SECURE= # set to "false" to use port 587
|
SMTP_SECURE= # set to "false" to use port 587
|
||||||
|
|
||||||
# Switch email features off entirely (optional)
|
|
||||||
NEXT_PUBLIC_DISABLE_EMAIL=
|
|
||||||
|
|
||||||
# S3 storage (optional)
|
# S3 storage (optional)
|
||||||
S3_REGION=
|
S3_REGION=
|
||||||
S3_ENDPOINT=
|
S3_ENDPOINT=
|
||||||
|
|||||||
@@ -147,7 +147,6 @@ pnpm dev
|
|||||||
| `SMTP_USER` | SMTP username/email | No | `resend` |
|
| `SMTP_USER` | SMTP username/email | No | `resend` |
|
||||||
| `SMTP_PASSWORD` | SMTP password/token | No | `re_xxxx` |
|
| `SMTP_PASSWORD` | SMTP password/token | No | `re_xxxx` |
|
||||||
| `SMTP_SECURE` | Use secure SMTP connection (defaults to true if not set) | For Email | `true` |
|
| `SMTP_SECURE` | Use secure SMTP connection (defaults to true if not set) | For Email | `true` |
|
||||||
| `NEXT_PUBLIC_DISABLE_EMAIL` | To disable all email features | For Email | `true` |
|
|
||||||
| `NEXT_PUBLIC_BASE_URL` | Base URL of your installation | Yes | `http://localhost:3000` |
|
| `NEXT_PUBLIC_BASE_URL` | Base URL of your installation | Yes | `http://localhost:3000` |
|
||||||
| `BETTER_AUTH_SECRET` | Auth encryption secret | Yes | Random 32+ char string |
|
| `BETTER_AUTH_SECRET` | Auth encryption secret | Yes | Random 32+ char string |
|
||||||
| `BETTER_AUTH_TRUSTED_ORIGINS` | Allowed callback origins | No | `http://localhost:3000,http://localhost:3001` |
|
| `BETTER_AUTH_TRUSTED_ORIGINS` | Allowed callback origins | No | `http://localhost:3000,http://localhost:3001` |
|
||||||
|
|||||||
@@ -112,7 +112,6 @@ checksums:
|
|||||||
Create%20board/singular: 155b62818bfab0e34f0089e1b34a32f3
|
Create%20board/singular: 155b62818bfab0e34f0089e1b34a32f3
|
||||||
Create%20card/singular: 32792935dd5837a9433909b04021c22b
|
Create%20card/singular: 32792935dd5837a9433909b04021c22b
|
||||||
Create%20checklist/singular: 5cbca15a7004558c4e6d381f83a34da2
|
Create%20checklist/singular: 5cbca15a7004558c4e6d381f83a34da2
|
||||||
Create%20invite%20link/singular: bef23fe786978f7abf78dece49a35a26
|
|
||||||
Create%20label/singular: c64e8180fa956f005edc1fd9b8e65abb
|
Create%20label/singular: c64e8180fa956f005edc1fd9b8e65abb
|
||||||
Create%20list/singular: 858c3d514aa95765ec82114393199144
|
Create%20list/singular: 858c3d514aa95765ec82114393199144
|
||||||
Create%20new%20board/singular: cbb87b1f4cc46b336ad9510c9f19407c
|
Create%20new%20board/singular: cbb87b1f4cc46b336ad9510c9f19407c
|
||||||
@@ -129,7 +128,6 @@ checksums:
|
|||||||
Custom%20workspace%20URL/singular: 7ba841d0946eb04fa3d17d74365be37b
|
Custom%20workspace%20URL/singular: 7ba841d0946eb04fa3d17d74365be37b
|
||||||
Customer%20Support/singular: 50e3c77e22e41061ca85ea2f02625a2e
|
Customer%20Support/singular: 50e3c77e22e41061ca85ea2f02625a2e
|
||||||
Dark/singular: 73e6e208ba628b26e90fcf6dce15e1b2
|
Dark/singular: 73e6e208ba628b26e90fcf6dce15e1b2
|
||||||
Deactivate%20invite%20link/singular: 8cf4bf82e153e4dc82d026448cb4dd10
|
|
||||||
Delete/singular: 8bcf303dd10a645b5baacb02b47d72c9
|
Delete/singular: 8bcf303dd10a645b5baacb02b47d72c9
|
||||||
Delete%20account/singular: a9d11113f1a1d7e20582bdcc9633bcef
|
Delete%20account/singular: a9d11113f1a1d7e20582bdcc9633bcef
|
||||||
Delete%20board/singular: e915cd160651ad4b61a67e8da0737c23
|
Delete%20board/singular: e915cd160651ad4b61a67e8da0737c23
|
||||||
@@ -235,7 +233,6 @@ checksums:
|
|||||||
Important/singular: 4cf0e8fc8e4e7c5c9b9458059a172a2b
|
Important/singular: 4cf0e8fc8e4e7c5c9b9458059a172a2b
|
||||||
Importing%20from%20Trello/singular: 1e3a46fb9bd8ce8c7d632f9555b5bd7c
|
Importing%20from%20Trello/singular: 1e3a46fb9bd8ce8c7d632f9555b5bd7c
|
||||||
Importing%20your%20Trello%20boards%20into%20Kan%20is%20easy.%20You%20can%20follow%20our%20step-by-step%20guide%20%3C0%3Ehere%3C%2F0%3E./singular: ca88dc22801fef08fee1ecfb1bf6914e
|
Importing%20your%20Trello%20boards%20into%20Kan%20is%20easy.%20You%20can%20follow%20our%20step-by-step%20guide%20%3C0%3Ehere%3C%2F0%3E./singular: ca88dc22801fef08fee1ecfb1bf6914e
|
||||||
in/singular: 1f06ad6763244d5e9927853e65cc6274
|
|
||||||
In%20Progress/singular: 3de9afebcb9d4ce8ac42e14995f79ffd
|
In%20Progress/singular: 3de9afebcb9d4ce8ac42e14995f79ffd
|
||||||
Individuals/singular: 83bfc81f20e60556c44ec80c7d0603ec
|
Individuals/singular: 83bfc81f20e60556c44ec80c7d0603ec
|
||||||
Integrations/singular: 0ccce343287704cd90150c32e2fcad36
|
Integrations/singular: 0ccce343287704cd90150c32e2fcad36
|
||||||
@@ -245,7 +242,6 @@ checksums:
|
|||||||
Invite/singular: 181884cea804cbde665f160811ee7ad0
|
Invite/singular: 181884cea804cbde665f160811ee7ad0
|
||||||
Invite%20link%20copied/singular: 4046f23a78e1cd5166671c3fb8a7ea6e
|
Invite%20link%20copied/singular: 4046f23a78e1cd5166671c3fb8a7ea6e
|
||||||
Invite%20link%20copied%20to%20clipboard/singular: 6fc055a0ea0ed1aa58c5e0c502efe17f
|
Invite%20link%20copied%20to%20clipboard/singular: 6fc055a0ea0ed1aa58c5e0c502efe17f
|
||||||
Invite%20links%20require%20a%20Team%20or%20Pro%20subscription.%20Please%20upgrade%20your%20workspace./singular: 18db646fc55f99789572c8df0539ee69
|
|
||||||
Invite%20member/singular: ade922db1be6b26bc979565ce5de2bc7
|
Invite%20member/singular: ade922db1be6b26bc979565ce5de2bc7
|
||||||
Inviting%20members%20requires%20a%20Team%20Plan.%20You'll%20be%20redirected%20to%20upgrade%20your%20workspace./singular: 03eeed2d715e770259f722ba48a61ab3
|
Inviting%20members%20requires%20a%20Team%20Plan.%20You'll%20be%20redirected%20to%20upgrade%20your%20workspace./singular: 03eeed2d715e770259f722ba48a61ab3
|
||||||
Join%20workspace/singular: f5d035df672b05abd760bd022309c719
|
Join%20workspace/singular: f5d035df672b05abd760bd022309c719
|
||||||
@@ -301,7 +297,6 @@ checksums:
|
|||||||
No%20boards%20found/singular: e044088d2c51b6bdf660fafa86ee1e17
|
No%20boards%20found/singular: e044088d2c51b6bdf660fafa86ee1e17
|
||||||
No%20credit%20card%20required/singular: 2090aa4171dc0b60735069f89b592883
|
No%20credit%20card%20required/singular: 2090aa4171dc0b60735069f89b592883
|
||||||
No%20lists/singular: cedf633d99c77ff4356e089f2d98c0a6
|
No%20lists/singular: cedf633d99c77ff4356e089f2d98c0a6
|
||||||
No%20results%20found%20for%20%22%7BdebouncedQuery%7D%22./singular: 5db6294712528cd897b15ae36f4fd834
|
|
||||||
Offer/singular: 82b4e0c9a3f5b4bd93590847de7c32a1
|
Offer/singular: 82b4e0c9a3f5b4bd93590847de7c32a1
|
||||||
Onboarding/singular: 52b23f9c62ff199d4c09920e7641829e
|
Onboarding/singular: 52b23f9c62ff199d4c09920e7641829e
|
||||||
Once%20you%20delete%20your%20account%2C%20there%20is%20no%20going%20back.%20This%20action%20cannot%20be%20undone./singular: 9cf7aa6ef30890e5124e266c081bae1c
|
Once%20you%20delete%20your%20account%2C%20there%20is%20no%20going%20back.%20This%20action%20cannot%20be%20undone./singular: 9cf7aa6ef30890e5124e266c081bae1c
|
||||||
@@ -311,8 +306,6 @@ checksums:
|
|||||||
Own%20your%20data/singular: cc2178dac4bdf6b07f030cfc2a7510e6
|
Own%20your%20data/singular: cc2178dac4bdf6b07f030cfc2a7510e6
|
||||||
Part-time/singular: 213d63da450f35dabb3ab0e35e29feed
|
Part-time/singular: 213d63da450f35dabb3ab0e35e29feed
|
||||||
Password%20Changed/singular: 1fcebe9ddb46f722a57f195efddc695d
|
Password%20Changed/singular: 1fcebe9ddb46f722a57f195efddc695d
|
||||||
Password%20is%20required%20to%20login./singular: a09c76294ca7b27b38658b34618a7119
|
|
||||||
Password%20is%20required%20to%20sign%20up./singular: 3fa1abbf2e6ac8ac4d18c215191bdbcc
|
|
||||||
Password%20must%20be%20at%20least%208%20characters/singular: 4c30501d085eaccea47af34212bb26a7
|
Password%20must%20be%20at%20least%208%20characters/singular: 4c30501d085eaccea47af34212bb26a7
|
||||||
Passwords%20do%20not%20match/singular: 37ca1f4e0afc9a0b8e9617f767103c92
|
Passwords%20do%20not%20match/singular: 37ca1f4e0afc9a0b8e9617f767103c92
|
||||||
Paused/singular: edb1f7b7219e1c9b7aa67159090d6991
|
Paused/singular: edb1f7b7219e1c9b7aa67159090d6991
|
||||||
@@ -361,7 +354,6 @@ checksums:
|
|||||||
Save/singular: f7a2929f33bc420195e59ac5a8bcd454
|
Save/singular: f7a2929f33bc420195e59ac5a8bcd454
|
||||||
Save%20time%20with%20reusable%20board%20templates./singular: d0f2d7d0fd682ceaf4ca12c6353fd75a
|
Save%20time%20with%20reusable%20board%20templates./singular: d0f2d7d0fd682ceaf4ca12c6353fd75a
|
||||||
Screening/singular: 0327bfb25db87bdacf00d4dc297f8b26
|
Screening/singular: 0327bfb25db87bdacf00d4dc297f8b26
|
||||||
Search%20boards%20and%20cards.../singular: 137017b2b3e885c4894ca8c899af5bc2
|
|
||||||
Select%20all/singular: eedc7cdb02de467c15dc418a066a77f2
|
Select%20all/singular: eedc7cdb02de467c15dc418a066a77f2
|
||||||
Select%20source/singular: c7b0ec447415ff62856803a4d7838bd6
|
Select%20source/singular: c7b0ec447415ff62856803a4d7838bd6
|
||||||
Self%20Host/singular: 43fbce2027548b712002e489a20a621a
|
Self%20Host/singular: 43fbce2027548b712002e489a20a621a
|
||||||
@@ -375,6 +367,7 @@ checksums:
|
|||||||
Settings%20%7C%20Billing/singular: e44cba741d5414035a0b499c5766c203
|
Settings%20%7C%20Billing/singular: e44cba741d5414035a0b499c5766c203
|
||||||
Settings%20%7C%20Integrations/singular: d04992e28016452f6d3d7dcc0b592415
|
Settings%20%7C%20Integrations/singular: d04992e28016452f6d3d7dcc0b592415
|
||||||
Settings%20%7C%20Workspace/singular: 5d0bacf7ff696da940f232df45edfd39
|
Settings%20%7C%20Workspace/singular: 5d0bacf7ff696da940f232df45edfd39
|
||||||
|
Share%20invite%20link/singular: ec5081a1f4e49fd9d782e770438f703b
|
||||||
Sign%20in/singular: cb8757c7450e17de1e226e82fb0fa4a2
|
Sign%20in/singular: cb8757c7450e17de1e226e82fb0fa4a2
|
||||||
Sign%20In/singular: ec7b8f314fe9bc6591006707484ede61
|
Sign%20In/singular: ec7b8f314fe9bc6591006707484ede61
|
||||||
Sign%20Up/singular: 0dd2ae69be4618c1f9e615774a4509ca
|
Sign%20Up/singular: 0dd2ae69be4618c1f9e615774a4509ca
|
||||||
@@ -387,7 +380,6 @@ checksums:
|
|||||||
Social%20Media/singular: 2227508afb0d38a027e323207e47d4a2
|
Social%20Media/singular: 2227508afb0d38a027e323207e47d4a2
|
||||||
Software%20Development/singular: 67659097ef6bcb194839858b2c4f3a3c
|
Software%20Development/singular: 67659097ef6bcb194839858b2c4f3a3c
|
||||||
Star%20on%20Github/singular: e5cb0428f1ac6485688f120d78742875
|
Star%20on%20Github/singular: e5cb0428f1ac6485688f120d78742875
|
||||||
Subscription%20Required/singular: 05f2b4abfc36def17756a6969983cf86
|
|
||||||
Success/singular: c43827becada6750f7a25890905f38b9
|
Success/singular: c43827becada6750f7a25890905f38b9
|
||||||
Supercharge%20your%20workspace%20for%20just%20%2429%2Fmonth.%20Here's%20what%20you'll%20get%3A/singular: 21af8119141afcce5f12da489f34db6a
|
Supercharge%20your%20workspace%20for%20just%20%2429%2Fmonth.%20Here's%20what%20you'll%20get%3A/singular: 21af8119141afcce5f12da489f34db6a
|
||||||
Support/singular: 55aab5fd0f31a9cb055a2edeeedfaf63
|
Support/singular: 55aab5fd0f31a9cb055a2edeeedfaf63
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import { t } from "@lingui/core/macro";
|
|||||||
import { Trans } from "@lingui/react/macro";
|
import { Trans } from "@lingui/react/macro";
|
||||||
import { useQuery } from "@tanstack/react-query";
|
import { useQuery } from "@tanstack/react-query";
|
||||||
import { env } from "next-runtime-env";
|
import { env } from "next-runtime-env";
|
||||||
import { useEffect, useMemo, useRef, useState } from "react";
|
import { useEffect, useState } from "react";
|
||||||
import { useForm } from "react-hook-form";
|
import { useForm } from "react-hook-form";
|
||||||
import {
|
import {
|
||||||
FaApple,
|
FaApple,
|
||||||
@@ -156,12 +156,10 @@ export function Auth({ setIsMagicLinkSent, isSignUp }: AuthProps) {
|
|||||||
const [isLoginWithProviderPending, setIsLoginWithProviderPending] =
|
const [isLoginWithProviderPending, setIsLoginWithProviderPending] =
|
||||||
useState<null | AuthProvider>(null);
|
useState<null | AuthProvider>(null);
|
||||||
const [isCredentialsEnabled, setIsCredentialsEnabled] = useState(false);
|
const [isCredentialsEnabled, setIsCredentialsEnabled] = useState(false);
|
||||||
const [isEmailSendingEnabled, setIsEmailSendingEnabled] = useState(false);
|
|
||||||
const [isLoginWithEmailPending, setIsLoginWithEmailPending] = useState(false);
|
const [isLoginWithEmailPending, setIsLoginWithEmailPending] = useState(false);
|
||||||
const [loginError, setLoginError] = useState<string | null>(null);
|
const [loginError, setLoginError] = useState<string | null>(null);
|
||||||
const { showPopup } = usePopup();
|
const { showPopup } = usePopup();
|
||||||
const oidcProviderName = "OIDC";
|
const oidcProviderName = "OIDC";
|
||||||
const passwordRef = useRef<HTMLInputElement | null>(null);
|
|
||||||
|
|
||||||
const redirect = useSearchParams().get("next");
|
const redirect = useSearchParams().get("next");
|
||||||
const callbackURL = redirect ?? "/boards";
|
const callbackURL = redirect ?? "/boards";
|
||||||
@@ -170,9 +168,6 @@ export function Auth({ setIsMagicLinkSent, isSignUp }: AuthProps) {
|
|||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const credentialsAllowed =
|
const credentialsAllowed =
|
||||||
env("NEXT_PUBLIC_ALLOW_CREDENTIALS")?.toLowerCase() === "true";
|
env("NEXT_PUBLIC_ALLOW_CREDENTIALS")?.toLowerCase() === "true";
|
||||||
const emailSendingEnabled =
|
|
||||||
env("NEXT_PUBLIC_DISABLE_EMAIL")?.toLowerCase() !== "true";
|
|
||||||
setIsEmailSendingEnabled(emailSendingEnabled);
|
|
||||||
setIsCredentialsEnabled(credentialsAllowed);
|
setIsCredentialsEnabled(credentialsAllowed);
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
@@ -192,7 +187,7 @@ export function Auth({ setIsMagicLinkSent, isSignUp }: AuthProps) {
|
|||||||
|
|
||||||
const handleLoginWithEmail = async (
|
const handleLoginWithEmail = async (
|
||||||
email: string,
|
email: string,
|
||||||
password?: string | null,
|
password?: string,
|
||||||
name?: string,
|
name?: string,
|
||||||
) => {
|
) => {
|
||||||
setIsLoginWithEmailPending(true);
|
setIsLoginWithEmailPending(true);
|
||||||
@@ -235,26 +230,16 @@ export function Auth({ setIsMagicLinkSent, isSignUp }: AuthProps) {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// Only allow magic link if email sending is enabled and not in sign up mode
|
await authClient.signIn.magicLink(
|
||||||
if (isEmailSendingEnabled && !isSignUp) {
|
{
|
||||||
await authClient.signIn.magicLink(
|
email,
|
||||||
{
|
callbackURL,
|
||||||
email,
|
},
|
||||||
callbackURL,
|
{
|
||||||
},
|
onSuccess: () => setIsMagicLinkSent(true, email),
|
||||||
{
|
onError: ({ error }) => setLoginError(error.message),
|
||||||
onSuccess: () => setIsMagicLinkSent(true, email),
|
},
|
||||||
onError: ({ error }) => setLoginError(error.message),
|
);
|
||||||
},
|
|
||||||
);
|
|
||||||
} else {
|
|
||||||
// Provide a clear error feedback when password omitted but magic link unavailable
|
|
||||||
setLoginError(
|
|
||||||
isSignUp
|
|
||||||
? t`Password is required to sign up.`
|
|
||||||
: t`Password is required to login.`,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
setIsLoginWithEmailPending(false);
|
setIsLoginWithEmailPending(false);
|
||||||
@@ -291,43 +276,11 @@ export function Auth({ setIsMagicLinkSent, isSignUp }: AuthProps) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const onSubmit = async (values: FormValues) => {
|
const onSubmit = async (values: FormValues) => {
|
||||||
// Treat empty password string as undefined to trigger magic link path
|
await handleLoginWithEmail(values.email, values.password, values.name);
|
||||||
const sanitizedPassword = values.password?.trim()
|
|
||||||
? values.password
|
|
||||||
: undefined;
|
|
||||||
await handleLoginWithEmail(values.email, sanitizedPassword, values.name);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const password = watch("password");
|
const password = watch("password");
|
||||||
|
|
||||||
// Determine if we should operate in magic link mode for current form state (login only)
|
|
||||||
const isMagicLinkMode = useMemo(() => {
|
|
||||||
// Magic link only viable when email sending enabled AND not sign up.
|
|
||||||
if (!isEmailSendingEnabled || isSignUp) return false;
|
|
||||||
// If credentials disabled we always default to magic link.
|
|
||||||
if (!isCredentialsEnabled) return true;
|
|
||||||
// Credentials enabled: user chooses magic link by leaving password blank.
|
|
||||||
return !password;
|
|
||||||
}, [isEmailSendingEnabled, isSignUp, isCredentialsEnabled, password]);
|
|
||||||
|
|
||||||
// Auto-focus password field when an error indicates it's required
|
|
||||||
useEffect(() => {
|
|
||||||
if (!isCredentialsEnabled) return;
|
|
||||||
// Focus when: sign up and missing password; login error requiring password; validation error on password.
|
|
||||||
const pwdEmpty = (password ?? "").length === 0;
|
|
||||||
let needsPassword = false;
|
|
||||||
if (isSignUp && pwdEmpty) {
|
|
||||||
needsPassword = true;
|
|
||||||
} else if (loginError?.toLowerCase().includes("password")) {
|
|
||||||
needsPassword = true;
|
|
||||||
} else if (errors.password) {
|
|
||||||
needsPassword = true;
|
|
||||||
}
|
|
||||||
if (needsPassword && passwordRef.current) {
|
|
||||||
passwordRef.current.focus();
|
|
||||||
}
|
|
||||||
}, [isSignUp, password, loginError, errors.password, isCredentialsEnabled]);
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="space-y-6">
|
<div className="space-y-6">
|
||||||
{socialProviders?.length !== 0 && (
|
{socialProviders?.length !== 0 && (
|
||||||
@@ -398,7 +351,7 @@ export function Auth({ setIsMagicLinkSent, isSignUp }: AuthProps) {
|
|||||||
/>
|
/>
|
||||||
{errors.password && (
|
{errors.password && (
|
||||||
<p className="mt-2 text-xs text-red-400">
|
<p className="mt-2 text-xs text-red-400">
|
||||||
{errors.password.message ?? t`Please enter a valid password`}
|
{t`Please enter a valid password`}
|
||||||
</p>
|
</p>
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
@@ -415,7 +368,9 @@ export function Auth({ setIsMagicLinkSent, isSignUp }: AuthProps) {
|
|||||||
variant="secondary"
|
variant="secondary"
|
||||||
>
|
>
|
||||||
{isSignUp ? t`Sign up with ` : t`Continue with `}
|
{isSignUp ? t`Sign up with ` : t`Continue with `}
|
||||||
{isMagicLinkMode ? t`magic link` : t`email`}
|
{!isCredentialsEnabled || (password && password.length !== 0)
|
||||||
|
? t`email`
|
||||||
|
: t`magic link`}
|
||||||
</Button>
|
</Button>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
|||||||
@@ -1,193 +0,0 @@
|
|||||||
import { useRouter } from "next/router";
|
|
||||||
import {
|
|
||||||
Combobox,
|
|
||||||
ComboboxInput,
|
|
||||||
ComboboxOption,
|
|
||||||
ComboboxOptions,
|
|
||||||
Dialog,
|
|
||||||
DialogBackdrop,
|
|
||||||
DialogPanel,
|
|
||||||
} from "@headlessui/react";
|
|
||||||
import { t } from "@lingui/macro";
|
|
||||||
import { useState } from "react";
|
|
||||||
import { HiDocumentText, HiFolder, HiMagnifyingGlass } from "react-icons/hi2";
|
|
||||||
|
|
||||||
import { useDebounce } from "~/hooks/useDebounce";
|
|
||||||
import { useWorkspace } from "~/providers/workspace";
|
|
||||||
import { api } from "~/utils/api";
|
|
||||||
|
|
||||||
type SearchResult =
|
|
||||||
| {
|
|
||||||
publicId: string;
|
|
||||||
title: string;
|
|
||||||
description: string | null;
|
|
||||||
slug: string;
|
|
||||||
updatedAt: Date | null;
|
|
||||||
createdAt: Date;
|
|
||||||
type: "board";
|
|
||||||
}
|
|
||||||
| {
|
|
||||||
publicId: string;
|
|
||||||
title: string;
|
|
||||||
description: string | null;
|
|
||||||
boardPublicId: string;
|
|
||||||
boardName: string;
|
|
||||||
listName: string;
|
|
||||||
updatedAt: Date | null;
|
|
||||||
createdAt: Date;
|
|
||||||
type: "card";
|
|
||||||
};
|
|
||||||
|
|
||||||
export default function CommandPallette({
|
|
||||||
isOpen,
|
|
||||||
onClose,
|
|
||||||
}: {
|
|
||||||
isOpen: boolean;
|
|
||||||
onClose: () => void;
|
|
||||||
}) {
|
|
||||||
const [query, setQuery] = useState("");
|
|
||||||
const { workspace } = useWorkspace();
|
|
||||||
const router = useRouter();
|
|
||||||
|
|
||||||
// Debounce to avoid too many reqs
|
|
||||||
const [debouncedQuery] = useDebounce(query, 300);
|
|
||||||
|
|
||||||
const {
|
|
||||||
data: searchResults,
|
|
||||||
isLoading,
|
|
||||||
isFetched,
|
|
||||||
isPlaceholderData,
|
|
||||||
} = api.workspace.search.useQuery(
|
|
||||||
{
|
|
||||||
workspacePublicId: workspace.publicId,
|
|
||||||
query: debouncedQuery,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
enabled: Boolean(workspace.publicId && debouncedQuery.trim().length > 0),
|
|
||||||
placeholderData: (previousData) => previousData,
|
|
||||||
},
|
|
||||||
);
|
|
||||||
|
|
||||||
// Clear results when query is empty, otherwise show search results
|
|
||||||
const results =
|
|
||||||
debouncedQuery.trim().length === 0
|
|
||||||
? []
|
|
||||||
: ((searchResults ?? []) as SearchResult[]);
|
|
||||||
|
|
||||||
const hasSearched = Boolean(debouncedQuery.trim().length > 0);
|
|
||||||
|
|
||||||
return (
|
|
||||||
<Dialog
|
|
||||||
className="relative z-50"
|
|
||||||
open={isOpen}
|
|
||||||
onClose={() => {
|
|
||||||
onClose();
|
|
||||||
setQuery("");
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
<DialogBackdrop
|
|
||||||
transition
|
|
||||||
className="data-closed:opacity-0 data-enter:duration-300 data-enter:ease-out data-leave:duration-200 data-leave:ease-in fixed inset-0 bg-light-50 bg-opacity-40 transition-opacity dark:bg-dark-50 dark:bg-opacity-40"
|
|
||||||
/>
|
|
||||||
|
|
||||||
<div className="fixed inset-0 z-50 w-screen overflow-y-auto">
|
|
||||||
<div className="flex min-h-full items-start justify-center p-4 text-center sm:items-start sm:p-0">
|
|
||||||
<DialogPanel
|
|
||||||
transition
|
|
||||||
className="data-closed:opacity-0 data-closed:translate-y-4 data-closed:sm:translate-y-0 data-closed:sm:scale-95 data-enter:duration-300 data-enter:ease-out data-leave:duration-200 data-leave:ease-in relative mt-[25vh] w-full max-w-[550px] transform divide-y divide-gray-100 overflow-hidden rounded-lg border border-light-600 bg-white/90 shadow-3xl-light backdrop-blur-[6px] transition-all dark:divide-white/10 dark:border-dark-600 dark:bg-dark-100/90 dark:shadow-3xl-dark"
|
|
||||||
>
|
|
||||||
<Combobox>
|
|
||||||
<div className="grid grid-cols-1">
|
|
||||||
<ComboboxInput
|
|
||||||
autoFocus
|
|
||||||
className="col-start-1 row-start-1 h-12 w-full border-0 bg-transparent pl-11 pr-4 text-sm text-light-900 placeholder:text-light-700 focus:outline-none focus:ring-0 dark:text-dark-900 dark:placeholder:text-dark-700"
|
|
||||||
placeholder={t`Search boards and cards...`}
|
|
||||||
value={query}
|
|
||||||
onChange={(event) => setQuery(event.target.value)}
|
|
||||||
onKeyDown={(event) => {
|
|
||||||
if (event.key === "Enter" && results.length > 0) {
|
|
||||||
event.preventDefault();
|
|
||||||
|
|
||||||
// Find the active option or fallback to first option
|
|
||||||
const targetOption =
|
|
||||||
document.querySelector(
|
|
||||||
'[data-headlessui-state*="active"][role="option"]',
|
|
||||||
) ?? document.querySelector('[role="option"]');
|
|
||||||
|
|
||||||
if (targetOption) {
|
|
||||||
(targetOption as HTMLElement).click();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}}
|
|
||||||
/>
|
|
||||||
<HiMagnifyingGlass
|
|
||||||
className="pointer-events-none col-start-1 row-start-1 ml-4 size-5 self-center text-light-700 dark:text-dark-700"
|
|
||||||
aria-hidden="true"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
{results.length > 0 && (
|
|
||||||
<ComboboxOptions
|
|
||||||
static
|
|
||||||
className={`max-h-72 scroll-py-2 overflow-y-auto py-2 ${
|
|
||||||
isPlaceholderData ? "opacity-75" : ""
|
|
||||||
}`}
|
|
||||||
>
|
|
||||||
{results.map((result) => {
|
|
||||||
const url =
|
|
||||||
result.type === "board"
|
|
||||||
? `/boards/${result.publicId}`
|
|
||||||
: `/cards/${result.publicId}`;
|
|
||||||
|
|
||||||
return (
|
|
||||||
<ComboboxOption
|
|
||||||
key={`${result.type}-${result.publicId}`}
|
|
||||||
value={result}
|
|
||||||
className="cursor-pointer select-none px-4 py-3 data-[focus]:bg-light-200 hover:bg-light-200 focus:outline-none dark:data-[focus]:bg-dark-200 dark:hover:bg-dark-200"
|
|
||||||
onClick={() => {
|
|
||||||
console.log("clicked", url);
|
|
||||||
void router.push(url);
|
|
||||||
onClose();
|
|
||||||
setQuery("");
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
<div className="flex items-start gap-3">
|
|
||||||
<div className="mt-0.5 flex-shrink-0">
|
|
||||||
{result.type === "board" ? (
|
|
||||||
<HiFolder className="h-4 w-4 text-light-600 dark:text-dark-600" />
|
|
||||||
) : (
|
|
||||||
<HiDocumentText className="h-4 w-4 text-light-600 dark:text-dark-600" />
|
|
||||||
)}
|
|
||||||
</div>
|
|
||||||
<div className="min-w-0 flex-1 text-left">
|
|
||||||
<div className="truncate text-sm font-bold text-light-900 dark:text-dark-900">
|
|
||||||
{result.title}
|
|
||||||
</div>
|
|
||||||
{result.type === "card" && (
|
|
||||||
<div className="truncate text-xs text-light-700 dark:text-dark-700">
|
|
||||||
{`${t`in`} ${result.boardName} → ${result.listName}`}
|
|
||||||
</div>
|
|
||||||
)}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</ComboboxOption>
|
|
||||||
);
|
|
||||||
})}
|
|
||||||
</ComboboxOptions>
|
|
||||||
)}
|
|
||||||
|
|
||||||
{hasSearched &&
|
|
||||||
!isLoading &&
|
|
||||||
searchResults !== undefined &&
|
|
||||||
results.length === 0 && (
|
|
||||||
<div className="p-4 text-sm text-light-950 dark:text-dark-950">
|
|
||||||
{t`No results found for "${debouncedQuery}".`}
|
|
||||||
</div>
|
|
||||||
)}
|
|
||||||
</Combobox>
|
|
||||||
</DialogPanel>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</Dialog>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
@@ -5,12 +5,10 @@ const Toggle = ({
|
|||||||
isChecked,
|
isChecked,
|
||||||
onChange,
|
onChange,
|
||||||
label,
|
label,
|
||||||
disabled,
|
|
||||||
}: {
|
}: {
|
||||||
isChecked: boolean;
|
isChecked: boolean;
|
||||||
onChange: () => void;
|
onChange: () => void;
|
||||||
label: string;
|
label: string;
|
||||||
disabled?: boolean;
|
|
||||||
}) => (
|
}) => (
|
||||||
<div className="mr-4 flex items-center justify-end">
|
<div className="mr-4 flex items-center justify-end">
|
||||||
<span className="mr-2 text-xs text-light-900 dark:text-dark-900">
|
<span className="mr-2 text-xs text-light-900 dark:text-dark-900">
|
||||||
@@ -19,7 +17,6 @@ const Toggle = ({
|
|||||||
<Switch
|
<Switch
|
||||||
checked={isChecked}
|
checked={isChecked}
|
||||||
onChange={onChange}
|
onChange={onChange}
|
||||||
disabled={disabled}
|
|
||||||
className={twMerge(
|
className={twMerge(
|
||||||
"relative inline-flex h-4 w-6 flex-shrink-0 cursor-pointer rounded-full border-2 border-transparent bg-light-800 transition-colors duration-200 ease-in-out focus:outline-none dark:bg-dark-800",
|
"relative inline-flex h-4 w-6 flex-shrink-0 cursor-pointer rounded-full border-2 border-transparent bg-light-800 transition-colors duration-200 ease-in-out focus:outline-none dark:bg-dark-800",
|
||||||
isChecked && "bg-indigo-600 dark:bg-indigo-600",
|
isChecked && "bg-indigo-600 dark:bg-indigo-600",
|
||||||
|
|||||||
@@ -1,12 +1,11 @@
|
|||||||
import { Button, Menu, Transition } from "@headlessui/react";
|
import { Menu, Transition } from "@headlessui/react";
|
||||||
import { t } from "@lingui/core/macro";
|
import { t } from "@lingui/core/macro";
|
||||||
import { Fragment, useEffect, useState } from "react";
|
import { Fragment } from "react";
|
||||||
import { HiCheck, HiMagnifyingGlass } from "react-icons/hi2";
|
import { HiCheck } from "react-icons/hi2";
|
||||||
import { twMerge } from "tailwind-merge";
|
import { twMerge } from "tailwind-merge";
|
||||||
|
|
||||||
import { useModal } from "~/providers/modal";
|
import { useModal } from "~/providers/modal";
|
||||||
import { useWorkspace } from "~/providers/workspace";
|
import { useWorkspace } from "~/providers/workspace";
|
||||||
import CommandPallette from "./CommandPallette";
|
|
||||||
|
|
||||||
export default function WorkspaceMenu({
|
export default function WorkspaceMenu({
|
||||||
isCollapsed = false,
|
isCollapsed = false,
|
||||||
@@ -16,143 +15,110 @@ export default function WorkspaceMenu({
|
|||||||
const { workspace, isLoading, availableWorkspaces, switchWorkspace } =
|
const { workspace, isLoading, availableWorkspaces, switchWorkspace } =
|
||||||
useWorkspace();
|
useWorkspace();
|
||||||
const { openModal } = useModal();
|
const { openModal } = useModal();
|
||||||
const [isOpen, setIsOpen] = useState(false);
|
|
||||||
|
|
||||||
useEffect(() => {
|
|
||||||
const handleKeyDown = (event: KeyboardEvent) => {
|
|
||||||
if ((event.metaKey || event.ctrlKey) && event.key === "k") {
|
|
||||||
event.preventDefault();
|
|
||||||
setIsOpen(true);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
document.addEventListener("keydown", handleKeyDown);
|
|
||||||
return () => document.removeEventListener("keydown", handleKeyDown);
|
|
||||||
}, []);
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<Menu as="div" className="relative inline-block w-full pb-3 text-left">
|
||||||
<CommandPallette isOpen={isOpen} onClose={() => setIsOpen(false)} />
|
<div>
|
||||||
<Menu as="div" className="relative inline-block w-full pb-3 text-left">
|
{isLoading ? (
|
||||||
<div>
|
<div className={twMerge("mb-1 flex", isCollapsed && "md:p-1.5")}>
|
||||||
{isLoading ? (
|
<div className="h-6 w-6 animate-pulse rounded-md bg-light-200 dark:bg-dark-200" />
|
||||||
<div className={twMerge("mb-1 flex", isCollapsed && "md:p-1.5")}>
|
|
||||||
<div className="h-6 w-6 animate-pulse rounded-md bg-light-200 dark:bg-dark-200" />
|
|
||||||
<div
|
|
||||||
className={twMerge(
|
|
||||||
"ml-2 h-6 w-[150px] animate-pulse rounded-md bg-light-200 dark:bg-dark-200",
|
|
||||||
isCollapsed && "md:hidden",
|
|
||||||
)}
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
) : (
|
|
||||||
<div
|
<div
|
||||||
className={twMerge(
|
className={twMerge(
|
||||||
"flex items-center gap-1",
|
"ml-2 h-6 w-[150px] animate-pulse rounded-md bg-light-200 dark:bg-dark-200",
|
||||||
isCollapsed && "md:flex-col-reverse md:items-stretch",
|
isCollapsed && "md:hidden",
|
||||||
|
)}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
) : (
|
||||||
|
<Menu.Button
|
||||||
|
className={twMerge(
|
||||||
|
"mb-1 flex h-[34px] w-full items-center rounded-md p-1.5 hover:bg-light-200 dark:hover:bg-dark-200",
|
||||||
|
isCollapsed && "md:mb-1.5 md:h-9 md:p-1",
|
||||||
|
)}
|
||||||
|
title={isCollapsed ? workspace.name : undefined}
|
||||||
|
>
|
||||||
|
<span className="inline-flex h-6 w-6 items-center justify-center rounded-md bg-indigo-700">
|
||||||
|
<span className="text-xs font-bold leading-none text-white">
|
||||||
|
{workspace.name.charAt(0).toUpperCase()}
|
||||||
|
</span>
|
||||||
|
</span>
|
||||||
|
<span
|
||||||
|
className={twMerge(
|
||||||
|
"ml-2 truncate text-sm font-bold text-neutral-900 dark:text-dark-1000",
|
||||||
|
isCollapsed && "md:hidden",
|
||||||
)}
|
)}
|
||||||
>
|
>
|
||||||
<Menu.Button
|
{workspace.name}
|
||||||
|
</span>
|
||||||
|
{workspace.plan === "pro" && (
|
||||||
|
<span
|
||||||
className={twMerge(
|
className={twMerge(
|
||||||
"mb-1 flex h-[34px] flex-1 items-center rounded-md p-1.5 hover:bg-light-200 dark:hover:bg-dark-200",
|
"ml-2 inline-flex items-center rounded-md bg-indigo-100 px-2 py-1 text-[10px] font-medium text-indigo-700",
|
||||||
isCollapsed &&
|
isCollapsed && "md:hidden",
|
||||||
"md:mb-1.5 md:h-9 md:w-9 md:flex-none md:justify-center md:p-0",
|
|
||||||
)}
|
)}
|
||||||
title={isCollapsed ? workspace.name : undefined}
|
|
||||||
>
|
>
|
||||||
<span className="inline-flex h-6 w-6 items-center justify-center rounded-md bg-indigo-700">
|
Pro
|
||||||
<span className="text-xs font-bold leading-none text-white">
|
</span>
|
||||||
{workspace.name.charAt(0).toUpperCase()}
|
|
||||||
</span>
|
|
||||||
</span>
|
|
||||||
<span
|
|
||||||
className={twMerge(
|
|
||||||
"ml-2 truncate text-sm font-bold text-neutral-900 dark:text-dark-1000",
|
|
||||||
isCollapsed && "md:hidden",
|
|
||||||
)}
|
|
||||||
>
|
|
||||||
{workspace.name}
|
|
||||||
</span>
|
|
||||||
{workspace.plan === "pro" && (
|
|
||||||
<span
|
|
||||||
className={twMerge(
|
|
||||||
"ml-2 inline-flex items-center rounded-md bg-indigo-100 px-2 py-1 text-[10px] font-medium text-indigo-700",
|
|
||||||
isCollapsed && "md:hidden",
|
|
||||||
)}
|
|
||||||
>
|
|
||||||
Pro
|
|
||||||
</span>
|
|
||||||
)}
|
|
||||||
</Menu.Button>
|
|
||||||
<Button
|
|
||||||
className={twMerge(
|
|
||||||
"mb-1 h-[34px] w-[34px] flex-shrink-0 rounded-lg bg-light-200 p-2 hover:bg-light-300 focus:outline-none dark:bg-dark-200 dark:hover:bg-dark-300",
|
|
||||||
isCollapsed && "md:mb-2 md:h-9 md:w-9 md:self-center",
|
|
||||||
)}
|
|
||||||
onClick={() => setIsOpen(true)}
|
|
||||||
>
|
|
||||||
<HiMagnifyingGlass className="h-4 w-4" aria-hidden="true" />
|
|
||||||
</Button>
|
|
||||||
</div>
|
|
||||||
)}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<Transition
|
|
||||||
as={Fragment}
|
|
||||||
enter="transition ease-out duration-100"
|
|
||||||
enterFrom="transform opacity-0 scale-95"
|
|
||||||
enterTo="transform opacity-100 scale-100"
|
|
||||||
leave="transition ease-in duration-75"
|
|
||||||
leaveFrom="transform opacity-100 scale-100"
|
|
||||||
leaveTo="transform opacity-0 scale-95"
|
|
||||||
>
|
|
||||||
<Menu.Items
|
|
||||||
className={twMerge(
|
|
||||||
"absolute left-0 z-10 origin-top-left rounded-md border border-light-600 bg-light-50 shadow-lg ring-1 ring-black ring-opacity-5 focus:outline-none dark:border-dark-600 dark:bg-dark-300",
|
|
||||||
isCollapsed ? "w-48" : "w-full",
|
|
||||||
)}
|
)}
|
||||||
>
|
</Menu.Button>
|
||||||
<div className="p-1">
|
)}
|
||||||
{availableWorkspaces.map((availableWorkspace) => (
|
</div>
|
||||||
<div key={availableWorkspace.publicId} className="flex">
|
|
||||||
<Menu.Item>
|
<Transition
|
||||||
<button
|
as={Fragment}
|
||||||
onClick={() => switchWorkspace(availableWorkspace)}
|
enter="transition ease-out duration-100"
|
||||||
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"
|
enterFrom="transform opacity-0 scale-95"
|
||||||
>
|
enterTo="transform opacity-100 scale-100"
|
||||||
<div className="flex min-w-0 flex-1 items-center">
|
leave="transition ease-in duration-75"
|
||||||
<span className="inline-flex h-5 w-5 flex-shrink-0 items-center justify-center rounded-[5px] bg-indigo-700">
|
leaveFrom="transform opacity-100 scale-100"
|
||||||
<span className="text-xs font-medium leading-none text-white">
|
leaveTo="transform opacity-0 scale-95"
|
||||||
{availableWorkspace.name.charAt(0).toUpperCase()}
|
>
|
||||||
</span>
|
<Menu.Items
|
||||||
|
className={twMerge(
|
||||||
|
"absolute left-0 z-10 origin-top-left rounded-md border border-light-600 bg-light-50 shadow-lg ring-1 ring-black ring-opacity-5 focus:outline-none dark:border-dark-600 dark:bg-dark-300",
|
||||||
|
isCollapsed ? "w-48" : "w-full",
|
||||||
|
)}
|
||||||
|
>
|
||||||
|
<div className="p-1">
|
||||||
|
{availableWorkspaces.map((availableWorkspace) => (
|
||||||
|
<div key={availableWorkspace.publicId} className="flex">
|
||||||
|
<Menu.Item>
|
||||||
|
<button
|
||||||
|
onClick={() => switchWorkspace(availableWorkspace)}
|
||||||
|
className="flex w-full items-center justify-between rounded-[5px] px-3 py-2 text-left text-sm text-neutral-900 hover:bg-light-200 dark:text-dark-1000 dark:hover:bg-dark-400"
|
||||||
|
>
|
||||||
|
<div className="flex min-w-0 flex-1 items-center">
|
||||||
|
<span className="inline-flex h-5 w-5 flex-shrink-0 items-center justify-center rounded-[5px] bg-indigo-700">
|
||||||
|
<span className="text-xs font-medium leading-none text-white">
|
||||||
|
{availableWorkspace.name.charAt(0).toUpperCase()}
|
||||||
</span>
|
</span>
|
||||||
<span className="ml-2 truncate text-xs font-medium">
|
</span>
|
||||||
{availableWorkspace.name}
|
<span className="ml-2 truncate text-xs font-medium">
|
||||||
</span>
|
{availableWorkspace.name}
|
||||||
</div>
|
</span>
|
||||||
{workspace.publicId === availableWorkspace.publicId && (
|
</div>
|
||||||
<span>
|
{workspace.publicId === availableWorkspace.publicId && (
|
||||||
<HiCheck className="h-4 w-4" aria-hidden="true" />
|
<span>
|
||||||
</span>
|
<HiCheck className="h-4 w-4" aria-hidden="true" />
|
||||||
)}
|
</span>
|
||||||
</button>
|
)}
|
||||||
</Menu.Item>
|
</button>
|
||||||
</div>
|
</Menu.Item>
|
||||||
))}
|
</div>
|
||||||
</div>
|
))}
|
||||||
<div className="border-t-[1px] border-light-600 p-1 dark:border-dark-500">
|
</div>
|
||||||
<Menu.Item>
|
<div className="border-t-[1px] border-light-600 p-1 dark:border-dark-500">
|
||||||
<button
|
<Menu.Item>
|
||||||
onClick={() => openModal("NEW_WORKSPACE")}
|
<button
|
||||||
className="flex w-full items-center justify-between rounded-[5px] px-3 py-2 text-left text-xs text-neutral-900 hover:bg-light-200 dark:text-dark-1000 dark:hover:bg-dark-400"
|
onClick={() => openModal("NEW_WORKSPACE")}
|
||||||
>
|
className="flex w-full items-center justify-between rounded-[5px] px-3 py-2 text-left text-xs text-neutral-900 hover:bg-light-200 dark:text-dark-1000 dark:hover:bg-dark-400"
|
||||||
{t`Create workspace`}
|
>
|
||||||
</button>
|
{t`Create workspace`}
|
||||||
</Menu.Item>
|
</button>
|
||||||
</div>
|
</Menu.Item>
|
||||||
</Menu.Items>
|
</div>
|
||||||
</Transition>
|
</Menu.Items>
|
||||||
</Menu>
|
</Transition>
|
||||||
</>
|
</Menu>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -36,12 +36,12 @@ msgstr "{0} Labels"
|
|||||||
msgid "{boardCount, plural, one {Import board (1)} other {Import boards ({boardCount})}}"
|
msgid "{boardCount, plural, one {Import board (1)} other {Import boards ({boardCount})}}"
|
||||||
msgstr "{boardCount, plural, one {Board importieren (1)} other {Boards importieren ({boardCount})}}"
|
msgstr "{boardCount, plural, one {Board importieren (1)} other {Boards importieren ({boardCount})}}"
|
||||||
|
|
||||||
|
#: src/views/members/components/InviteMemberForm.tsx:146
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:158
|
#: src/views/members/components/InviteMemberForm.tsx:158
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:170
|
|
||||||
msgid "$10/month"
|
msgid "$10/month"
|
||||||
msgstr "$10/Monat"
|
msgstr "$10/Monat"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:170
|
#: src/views/members/components/InviteMemberForm.tsx:158
|
||||||
msgid "$8/month"
|
msgid "$8/month"
|
||||||
msgstr "$8/Monat"
|
msgstr "$8/Monat"
|
||||||
|
|
||||||
@@ -101,7 +101,7 @@ msgid "Add label"
|
|||||||
msgstr "Label hinzufügen"
|
msgstr "Label hinzufügen"
|
||||||
|
|
||||||
#: src/views/card/components/MemberSelector.tsx:130
|
#: src/views/card/components/MemberSelector.tsx:130
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:250
|
#: src/views/members/components/InviteMemberForm.tsx:238
|
||||||
msgid "Add member"
|
msgid "Add member"
|
||||||
msgstr "Mitglied hinzufügen"
|
msgstr "Mitglied hinzufügen"
|
||||||
|
|
||||||
@@ -136,7 +136,7 @@ msgstr "hat Checklistenelement <0>{0}</0> hinzugefügt"
|
|||||||
msgid "added label <0>{0}</0>"
|
msgid "added label <0>{0}</0>"
|
||||||
msgstr "hat Label <0>{0}</0> hinzugefügt"
|
msgstr "hat Label <0>{0}</0> hinzugefügt"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:320
|
#: src/views/members/components/InviteMemberForm.tsx:306
|
||||||
msgid "Adding a new member will cost an additional {price} ({billingType}) per seat."
|
msgid "Adding a new member will cost an additional {price} ({billingType}) per seat."
|
||||||
msgstr "Das Hinzufügen eines neuen Mitglieds kostet zusätzlich {price} ({billingType}) pro Platz."
|
msgstr "Das Hinzufügen eines neuen Mitglieds kostet zusätzlich {price} ({billingType}) pro Platz."
|
||||||
|
|
||||||
@@ -164,7 +164,7 @@ msgstr "Beim Trennen deines Trello-Kontos ist ein Fehler aufgetreten."
|
|||||||
msgid "An unexpected error occurred. Please try again later."
|
msgid "An unexpected error occurred. Please try again later."
|
||||||
msgstr "Ein unerwarteter Fehler ist aufgetreten. Bitte versuchen Sie es später erneut."
|
msgstr "Ein unerwarteter Fehler ist aufgetreten. Bitte versuchen Sie es später erneut."
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:304
|
#: src/views/members/components/InviteMemberForm.tsx:290
|
||||||
msgid "Anyone with this link can join your workspace"
|
msgid "Anyone with this link can join your workspace"
|
||||||
msgstr "Jeder mit diesem Link kann deinem Arbeitsbereich beitreten"
|
msgstr "Jeder mit diesem Link kann deinem Arbeitsbereich beitreten"
|
||||||
|
|
||||||
@@ -250,11 +250,11 @@ msgstr "Backlog"
|
|||||||
msgid "Basic Kanban"
|
msgid "Basic Kanban"
|
||||||
msgstr "Einfaches Kanban"
|
msgstr "Einfaches Kanban"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:171
|
#: src/views/members/components/InviteMemberForm.tsx:159
|
||||||
msgid "billed annually"
|
msgid "billed annually"
|
||||||
msgstr "jährlich abgerechnet"
|
msgstr "jährlich abgerechnet"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:171
|
#: src/views/members/components/InviteMemberForm.tsx:159
|
||||||
msgid "billed monthly"
|
msgid "billed monthly"
|
||||||
msgstr "monatlich abgerechnet"
|
msgstr "monatlich abgerechnet"
|
||||||
|
|
||||||
@@ -463,12 +463,12 @@ msgstr "Kontaktiere uns"
|
|||||||
msgid "Content Creation"
|
msgid "Content Creation"
|
||||||
msgstr "Content-Erstellung"
|
msgstr "Content-Erstellung"
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:417
|
#: src/components/AuthForm.tsx:370
|
||||||
msgid "Continue with "
|
msgid "Continue with "
|
||||||
msgstr "Fortfahren mit "
|
msgstr "Fortfahren mit "
|
||||||
|
|
||||||
#. placeholder {0}: key === "oidc" ? oidcProviderName : provider.name
|
#. placeholder {0}: key === "oidc" ? oidcProviderName : provider.name
|
||||||
#: src/components/AuthForm.tsx:348
|
#: src/components/AuthForm.tsx:301
|
||||||
msgid "Continue with {0}"
|
msgid "Continue with {0}"
|
||||||
msgstr "Fortfahren mit {0}"
|
msgstr "Fortfahren mit {0}"
|
||||||
|
|
||||||
@@ -498,10 +498,6 @@ msgstr "Karte erstellen"
|
|||||||
msgid "Create checklist"
|
msgid "Create checklist"
|
||||||
msgstr "Checkliste erstellen"
|
msgstr "Checkliste erstellen"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:342
|
|
||||||
msgid "Create invite link"
|
|
||||||
msgstr "Einladungslink erstellen"
|
|
||||||
|
|
||||||
#: src/components/LabelForm.tsx:238
|
#: src/components/LabelForm.tsx:238
|
||||||
msgid "Create label"
|
msgid "Create label"
|
||||||
msgstr "Label erstellen"
|
msgstr "Label erstellen"
|
||||||
@@ -528,7 +524,7 @@ msgid "Create new list"
|
|||||||
msgstr "Neue Liste erstellen"
|
msgstr "Neue Liste erstellen"
|
||||||
|
|
||||||
#: src/components/NewWorkspaceForm.tsx:384
|
#: src/components/NewWorkspaceForm.tsx:384
|
||||||
#: src/components/WorkspaceMenu.tsx:149
|
#: src/components/WorkspaceMenu.tsx:116
|
||||||
msgid "Create workspace"
|
msgid "Create workspace"
|
||||||
msgstr "Arbeitsbereich erstellen"
|
msgstr "Arbeitsbereich erstellen"
|
||||||
|
|
||||||
@@ -569,10 +565,6 @@ msgstr "Kundensupport"
|
|||||||
msgid "Dark"
|
msgid "Dark"
|
||||||
msgstr "Dunkel"
|
msgstr "Dunkel"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:341
|
|
||||||
msgid "Deactivate invite link"
|
|
||||||
msgstr "Einladungslink deaktivieren"
|
|
||||||
|
|
||||||
#: src/components/DeleteLabelConfirmation.tsx:51
|
#: src/components/DeleteLabelConfirmation.tsx:51
|
||||||
#: src/components/LabelForm.tsx:228
|
#: src/components/LabelForm.tsx:228
|
||||||
#: src/views/card/components/DeleteCardConfirmation.tsx:92
|
#: src/views/card/components/DeleteCardConfirmation.tsx:92
|
||||||
@@ -705,11 +697,11 @@ msgstr "Workspace-URL bearbeiten"
|
|||||||
msgid "Editing"
|
msgid "Editing"
|
||||||
msgstr "Bearbeitung"
|
msgstr "Bearbeitung"
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:418
|
#: src/components/AuthForm.tsx:372
|
||||||
msgid "email"
|
msgid "email"
|
||||||
msgstr "E-Mail"
|
msgstr "E-Mail"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:265
|
#: src/views/members/components/InviteMemberForm.tsx:252
|
||||||
msgid "Email"
|
msgid "Email"
|
||||||
msgstr "E-Mail"
|
msgstr "E-Mail"
|
||||||
|
|
||||||
@@ -725,11 +717,11 @@ msgstr "Geben Sie Ihr aktuelles Passwort ein"
|
|||||||
msgid "Enter your current password and choose a new secure password."
|
msgid "Enter your current password and choose a new secure password."
|
||||||
msgstr "Geben Sie Ihr aktuelles Passwort ein und wählen Sie ein neues sicheres Passwort."
|
msgstr "Geben Sie Ihr aktuelles Passwort ein und wählen Sie ein neues sicheres Passwort."
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:384
|
#: src/components/AuthForm.tsx:337
|
||||||
msgid "Enter your email address"
|
msgid "Enter your email address"
|
||||||
msgstr "Gib deine E-Mail-Adresse ein"
|
msgstr "Gib deine E-Mail-Adresse ein"
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:372
|
#: src/components/AuthForm.tsx:325
|
||||||
msgid "Enter your name"
|
msgid "Enter your name"
|
||||||
msgstr "Gib deinen Namen ein"
|
msgstr "Gib deinen Namen ein"
|
||||||
|
|
||||||
@@ -737,11 +729,11 @@ msgstr "Gib deinen Namen ein"
|
|||||||
msgid "Enter your new password"
|
msgid "Enter your new password"
|
||||||
msgstr "Geben Sie Ihr neues Passwort ein"
|
msgstr "Geben Sie Ihr neues Passwort ein"
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:397
|
#: src/components/AuthForm.tsx:350
|
||||||
msgid "Enter your password"
|
msgid "Enter your password"
|
||||||
msgstr "Gib dein Passwort ein"
|
msgstr "Gib dein Passwort ein"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:208
|
#: src/views/members/components/InviteMemberForm.tsx:196
|
||||||
msgid "Error"
|
msgid "Error"
|
||||||
msgstr "Fehler"
|
msgstr "Fehler"
|
||||||
|
|
||||||
@@ -749,11 +741,11 @@ msgstr "Fehler"
|
|||||||
msgid "Error Changing Password"
|
msgid "Error Changing Password"
|
||||||
msgstr "Fehler beim Ändern des Passworts"
|
msgstr "Fehler beim Ändern des Passworts"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:128
|
#: src/views/members/components/InviteMemberForm.tsx:117
|
||||||
msgid "Error creating invite link"
|
msgid "Error creating invite link"
|
||||||
msgstr "Fehler beim Erstellen des Einladungslinks"
|
msgstr "Fehler beim Erstellen des Einladungslinks"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:144
|
#: src/views/members/components/InviteMemberForm.tsx:132
|
||||||
msgid "Error deactivating invite link"
|
msgid "Error deactivating invite link"
|
||||||
msgstr "Fehler beim Deaktivieren des Einladungslinks"
|
msgstr "Fehler beim Deaktivieren des Einladungslinks"
|
||||||
|
|
||||||
@@ -773,8 +765,8 @@ msgstr "Fehler beim Löschen des Arbeitsbereichs"
|
|||||||
msgid "Error disconnecting Trello"
|
msgid "Error disconnecting Trello"
|
||||||
msgstr "Fehler beim Trennen von Trello"
|
msgstr "Fehler beim Trennen von Trello"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:97
|
#: src/views/members/components/InviteMemberForm.tsx:95
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:103
|
#: src/views/members/components/InviteMemberForm.tsx:101
|
||||||
msgid "Error inviting member"
|
msgid "Error inviting member"
|
||||||
msgstr "Fehler beim Einladen des Mitglieds"
|
msgstr "Fehler beim Einladen des Mitglieds"
|
||||||
|
|
||||||
@@ -798,7 +790,7 @@ msgstr "Fehler beim Aktualisieren des Arbeitsbereichsnamens"
|
|||||||
msgid "Error updating workspace URL"
|
msgid "Error updating workspace URL"
|
||||||
msgstr "Fehler beim Aktualisieren der Workspace-URL"
|
msgstr "Fehler beim Aktualisieren der Workspace-URL"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:233
|
#: src/views/members/components/InviteMemberForm.tsx:221
|
||||||
#: src/views/settings/components/UpgradeToProConfirmation.tsx:41
|
#: src/views/settings/components/UpgradeToProConfirmation.tsx:41
|
||||||
msgid "Error upgrading subscription"
|
msgid "Error upgrading subscription"
|
||||||
msgstr "Fehler beim Upgrade des Abonnements"
|
msgstr "Fehler beim Upgrade des Abonnements"
|
||||||
@@ -828,12 +820,12 @@ msgstr "Ausführung"
|
|||||||
msgid "Failed to accept invitation. Please try again later, or contact customer support."
|
msgid "Failed to accept invitation. Please try again later, or contact customer support."
|
||||||
msgstr "Einladung konnte nicht angenommen werden. Bitte versuche es später erneut oder kontaktiere den Kundensupport."
|
msgstr "Einladung konnte nicht angenommen werden. Bitte versuche es später erneut oder kontaktiere den Kundensupport."
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:209
|
#: src/views/members/components/InviteMemberForm.tsx:197
|
||||||
msgid "Failed to copy invite link"
|
msgid "Failed to copy invite link"
|
||||||
msgstr "Einladungslink konnte nicht kopiert werden"
|
msgstr "Einladungslink konnte nicht kopiert werden"
|
||||||
|
|
||||||
#. placeholder {0}: provider.at(0)?.toUpperCase() + provider.slice(1)
|
#. placeholder {0}: provider.at(0)?.toUpperCase() + provider.slice(1)
|
||||||
#: src/components/AuthForm.tsx:288
|
#: src/components/AuthForm.tsx:273
|
||||||
msgid "Failed to login with {0}. Please try again."
|
msgid "Failed to login with {0}. Please try again."
|
||||||
msgstr "Anmeldung mit {0} fehlgeschlagen. Bitte versuche es erneut."
|
msgstr "Anmeldung mit {0} fehlgeschlagen. Bitte versuche es erneut."
|
||||||
|
|
||||||
@@ -881,8 +873,8 @@ msgstr "Für langfristige Nachhaltigkeit erkennen wir an, dass alle guten Open-S
|
|||||||
msgid "Free"
|
msgid "Free"
|
||||||
msgstr "Kostenlos"
|
msgstr "Kostenlos"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:326
|
#: src/views/members/components/InviteMemberForm.tsx:312
|
||||||
#: src/views/members/index.tsx:209
|
#: src/views/members/index.tsx:208
|
||||||
msgid "Free Plan"
|
msgid "Free Plan"
|
||||||
msgstr "Kostenloser Plan"
|
msgstr "Kostenloser Plan"
|
||||||
|
|
||||||
@@ -1024,10 +1016,6 @@ msgstr "Import von Trello"
|
|||||||
msgid "Importing your Trello boards into Kan is easy. You can follow our step-by-step guide <0>here</0>."
|
msgid "Importing your Trello boards into Kan is easy. You can follow our step-by-step guide <0>here</0>."
|
||||||
msgstr "Der Import Ihrer Trello-Boards in Kan ist einfach. Sie können unserer Schritt-für-Schritt-Anleitung <0>hier</0> folgen."
|
msgstr "Der Import Ihrer Trello-Boards in Kan ist einfach. Sie können unserer Schritt-für-Schritt-Anleitung <0>hier</0> folgen."
|
||||||
|
|
||||||
#: src/components/CommandPallette.tsx:168
|
|
||||||
msgid "in"
|
|
||||||
msgstr "in"
|
|
||||||
|
|
||||||
#: src/views/boards/components/TemplateBoards.tsx:16
|
#: src/views/boards/components/TemplateBoards.tsx:16
|
||||||
#: src/views/boards/components/TemplateBoards.tsx:22
|
#: src/views/boards/components/TemplateBoards.tsx:22
|
||||||
#: src/views/boards/components/TemplateBoards.tsx:45
|
#: src/views/boards/components/TemplateBoards.tsx:45
|
||||||
@@ -1047,7 +1035,7 @@ msgstr "Integrationen"
|
|||||||
msgid "Interviewing"
|
msgid "Interviewing"
|
||||||
msgstr "Vorstellungsgespräch"
|
msgstr "Vorstellungsgespräch"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:51
|
#: src/views/members/components/InviteMemberForm.tsx:49
|
||||||
msgid "Invalid email address"
|
msgid "Invalid email address"
|
||||||
msgstr "Ungültige E-Mail-Adresse"
|
msgstr "Ungültige E-Mail-Adresse"
|
||||||
|
|
||||||
@@ -1055,28 +1043,24 @@ msgstr "Ungültige E-Mail-Adresse"
|
|||||||
msgid "Invalid invitation"
|
msgid "Invalid invitation"
|
||||||
msgstr "Ungültige Einladung"
|
msgstr "Ungültige Einladung"
|
||||||
|
|
||||||
#: src/views/members/index.tsx:222
|
#: src/views/members/index.tsx:221
|
||||||
msgid "Invite"
|
msgid "Invite"
|
||||||
msgstr "Einladen"
|
msgstr "Einladen"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:202
|
#: src/views/members/components/InviteMemberForm.tsx:190
|
||||||
msgid "Invite link copied"
|
msgid "Invite link copied"
|
||||||
msgstr "Einladungslink kopiert"
|
msgstr "Einladungslink kopiert"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:203
|
#: src/views/members/components/InviteMemberForm.tsx:191
|
||||||
msgid "Invite link copied to clipboard"
|
msgid "Invite link copied to clipboard"
|
||||||
msgstr "Einladungslink in die Zwischenablage kopiert"
|
msgstr "Einladungslink in die Zwischenablage kopiert"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:123
|
|
||||||
msgid "Invite links require a Team or Pro subscription. Please upgrade your workspace."
|
|
||||||
msgstr "Einladungslinks erfordern ein Team- oder Pro-Abonnement. Bitte upgraden Sie Ihren Workspace."
|
|
||||||
|
|
||||||
#: src/views/card/components/MemberSelector.tsx:111
|
#: src/views/card/components/MemberSelector.tsx:111
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:365
|
#: src/views/members/components/InviteMemberForm.tsx:350
|
||||||
msgid "Invite member"
|
msgid "Invite member"
|
||||||
msgstr "Mitglied einladen"
|
msgstr "Mitglied einladen"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:329
|
#: src/views/members/components/InviteMemberForm.tsx:315
|
||||||
msgid "Inviting members requires a Team Plan. You'll be redirected to upgrade your workspace."
|
msgid "Inviting members requires a Team Plan. You'll be redirected to upgrade your workspace."
|
||||||
msgstr "Das Einladen von Mitgliedern erfordert einen Team-Plan. Sie werden weitergeleitet, um Ihren Workspace zu upgraden."
|
msgstr "Das Einladen von Mitgliedern erfordert einen Team-Plan. Sie werden weitergeleitet, um Ihren Workspace zu upgraden."
|
||||||
|
|
||||||
@@ -1125,7 +1109,7 @@ msgstr "Sprache"
|
|||||||
msgid "Launch offer"
|
msgid "Launch offer"
|
||||||
msgstr "Einführungsangebot"
|
msgstr "Einführungsangebot"
|
||||||
|
|
||||||
#: src/views/members/index.tsx:192
|
#: src/views/members/index.tsx:191
|
||||||
msgid "Launch offer: Get unlimited members with Pro"
|
msgid "Launch offer: Get unlimited members with Pro"
|
||||||
msgstr "Einführungsangebot: Erhalten Sie unbegrenzte Mitglieder mit Pro"
|
msgstr "Einführungsangebot: Erhalten Sie unbegrenzte Mitglieder mit Pro"
|
||||||
|
|
||||||
@@ -1177,7 +1161,7 @@ msgstr "Langfristig"
|
|||||||
msgid "Low Priority"
|
msgid "Low Priority"
|
||||||
msgstr "Niedrige Priorität"
|
msgstr "Niedrige Priorität"
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:418
|
#: src/components/AuthForm.tsx:373
|
||||||
msgid "magic link"
|
msgid "magic link"
|
||||||
msgstr "Magic Link"
|
msgstr "Magic Link"
|
||||||
|
|
||||||
@@ -1198,12 +1182,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:179
|
#: 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:174
|
#: src/views/members/index.tsx:173
|
||||||
msgid "Members | {0}"
|
msgid "Members | {0}"
|
||||||
msgstr "Mitglieder | {0}"
|
msgstr "Mitglieder | {0}"
|
||||||
|
|
||||||
@@ -1211,7 +1195,7 @@ msgstr "Mitglieder | {0}"
|
|||||||
msgid "Monthly"
|
msgid "Monthly"
|
||||||
msgstr "Monatlich"
|
msgstr "Monatlich"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:159
|
#: src/views/members/components/InviteMemberForm.tsx:147
|
||||||
msgid "monthly billing"
|
msgid "monthly billing"
|
||||||
msgstr "monatliche Abrechnung"
|
msgstr "monatliche Abrechnung"
|
||||||
|
|
||||||
@@ -1307,10 +1291,6 @@ msgstr "Keine Kreditkarte erforderlich"
|
|||||||
msgid "No lists"
|
msgid "No lists"
|
||||||
msgstr "Keine Listen"
|
msgstr "Keine Listen"
|
||||||
|
|
||||||
#: src/components/CommandPallette.tsx:184
|
|
||||||
msgid "No results found for \"{debouncedQuery}\"."
|
|
||||||
msgstr "Keine Ergebnisse gefunden für \"{debouncedQuery}\"."
|
|
||||||
|
|
||||||
#: src/views/boards/components/TemplateBoards.tsx:65
|
#: src/views/boards/components/TemplateBoards.tsx:65
|
||||||
msgid "Offer"
|
msgid "Offer"
|
||||||
msgstr "Angebot"
|
msgstr "Angebot"
|
||||||
@@ -1327,7 +1307,7 @@ msgstr "Sobald Sie Ihr Konto löschen, gibt es kein Zurück mehr. Diese Aktion k
|
|||||||
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."
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:362
|
#: src/components/AuthForm.tsx:315
|
||||||
msgid "or"
|
msgid "or"
|
||||||
msgstr "oder"
|
msgstr "oder"
|
||||||
|
|
||||||
@@ -1347,14 +1327,6 @@ msgstr "Teilzeit"
|
|||||||
msgid "Password Changed"
|
msgid "Password Changed"
|
||||||
msgstr "Passwort geändert"
|
msgstr "Passwort geändert"
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:255
|
|
||||||
msgid "Password is required to login."
|
|
||||||
msgstr "Passwort ist für die Anmeldung erforderlich."
|
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:254
|
|
||||||
msgid "Password is required to sign up."
|
|
||||||
msgstr "Passwort ist für die Registrierung erforderlich."
|
|
||||||
|
|
||||||
#: src/views/settings/components/ChangePasswordConfirmation.tsx:22
|
#: src/views/settings/components/ChangePasswordConfirmation.tsx:22
|
||||||
msgid "Password must be at least 8 characters"
|
msgid "Password must be at least 8 characters"
|
||||||
msgstr "Passwort muss mindestens 8 Zeichen lang sein"
|
msgstr "Passwort muss mindestens 8 Zeichen lang sein"
|
||||||
@@ -1363,7 +1335,7 @@ 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/members/index.tsx:135
|
#: src/views/members/index.tsx:134
|
||||||
msgid "Paused"
|
msgid "Paused"
|
||||||
msgstr "Pausiert"
|
msgstr "Pausiert"
|
||||||
|
|
||||||
@@ -1371,7 +1343,7 @@ msgstr "Pausiert"
|
|||||||
msgid "Payment frequency"
|
msgid "Payment frequency"
|
||||||
msgstr "Zahlungshäufigkeit"
|
msgstr "Zahlungshäufigkeit"
|
||||||
|
|
||||||
#: src/views/members/index.tsx:135
|
#: src/views/members/index.tsx:134
|
||||||
msgid "Pending"
|
msgid "Pending"
|
||||||
msgstr "Ausstehend"
|
msgstr "Ausstehend"
|
||||||
|
|
||||||
@@ -1392,15 +1364,15 @@ msgstr "Planung"
|
|||||||
msgid "Please confirm your new password"
|
msgid "Please confirm your new password"
|
||||||
msgstr "Bitte bestätigen Sie Ihr neues Passwort"
|
msgstr "Bitte bestätigen Sie Ihr neues Passwort"
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:388
|
#: src/components/AuthForm.tsx:341
|
||||||
msgid "Please enter a valid email address"
|
msgid "Please enter a valid email address"
|
||||||
msgstr "Bitte gib eine gültige E-Mail-Adresse ein"
|
msgstr "Bitte gib eine gültige E-Mail-Adresse ein"
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:376
|
#: src/components/AuthForm.tsx:329
|
||||||
msgid "Please enter a valid name"
|
msgid "Please enter a valid name"
|
||||||
msgstr "Bitte gib einen gültigen Namen ein"
|
msgstr "Bitte gib einen gültigen Namen ein"
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:401
|
#: src/components/AuthForm.tsx:354
|
||||||
msgid "Please enter a valid password"
|
msgid "Please enter a valid password"
|
||||||
msgstr "Bitte gib ein gültiges Passwort ein"
|
msgstr "Bitte gib ein gültiges Passwort ein"
|
||||||
|
|
||||||
@@ -1433,8 +1405,8 @@ msgstr "Bitte wähle eine Datei zum Hochladen aus."
|
|||||||
#: src/views/card/components/NewCommentForm.tsx:31
|
#: src/views/card/components/NewCommentForm.tsx:31
|
||||||
#: src/views/card/index.tsx:173
|
#: src/views/card/index.tsx:173
|
||||||
#: src/views/members/components/DeleteMemberConfirmation.tsx:28
|
#: src/views/members/components/DeleteMemberConfirmation.tsx:28
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:104
|
#: src/views/members/components/InviteMemberForm.tsx:102
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:234
|
#: src/views/members/components/InviteMemberForm.tsx:222
|
||||||
#: src/views/settings/components/Avatar.tsx:78
|
#: src/views/settings/components/Avatar.tsx:78
|
||||||
#: src/views/settings/components/Avatar.tsx:219
|
#: src/views/settings/components/Avatar.tsx:219
|
||||||
#: src/views/settings/components/DeleteAccountConfirmation.tsx:40
|
#: src/views/settings/components/DeleteAccountConfirmation.tsx:40
|
||||||
@@ -1447,8 +1419,8 @@ msgstr "Bitte wähle eine Datei zum Hochladen aus."
|
|||||||
msgid "Please try again later, or contact customer support."
|
msgid "Please try again later, or contact customer support."
|
||||||
msgstr "Bitte versuche es später noch einmal oder kontaktiere den Kundensupport."
|
msgstr "Bitte versuche es später noch einmal oder kontaktiere den Kundensupport."
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:129
|
#: src/views/members/components/InviteMemberForm.tsx:118
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:145
|
#: src/views/members/components/InviteMemberForm.tsx:133
|
||||||
msgid "Please try again later."
|
msgid "Please try again later."
|
||||||
msgstr "Bitte versuche es später erneut."
|
msgstr "Bitte versuche es später erneut."
|
||||||
|
|
||||||
@@ -1471,11 +1443,11 @@ msgstr "Datenschutzrichtlinie"
|
|||||||
msgid "Private"
|
msgid "Private"
|
||||||
msgstr "Privat"
|
msgstr "Privat"
|
||||||
|
|
||||||
#: src/views/members/index.tsx:206
|
#: src/views/members/index.tsx:205
|
||||||
msgid "Pro Plan"
|
msgid "Pro Plan"
|
||||||
msgstr "Pro-Plan"
|
msgstr "Pro-Plan"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:315
|
#: src/views/members/components/InviteMemberForm.tsx:301
|
||||||
msgid "Pro Plan ∞"
|
msgid "Pro Plan ∞"
|
||||||
msgstr "Pro-Plan ∞"
|
msgstr "Pro-Plan ∞"
|
||||||
|
|
||||||
@@ -1519,7 +1491,7 @@ msgstr "Remote"
|
|||||||
msgid "Remove"
|
msgid "Remove"
|
||||||
msgstr "Entfernen"
|
msgstr "Entfernen"
|
||||||
|
|
||||||
#: src/views/members/index.tsx:149
|
#: src/views/members/index.tsx:148
|
||||||
msgid "Remove member"
|
msgid "Remove member"
|
||||||
msgstr "Mitglied entfernen"
|
msgstr "Mitglied entfernen"
|
||||||
|
|
||||||
@@ -1571,7 +1543,7 @@ msgstr "Überprüfung"
|
|||||||
msgid "Roadmap"
|
msgid "Roadmap"
|
||||||
msgstr "Roadmap"
|
msgstr "Roadmap"
|
||||||
|
|
||||||
#: src/views/members/index.tsx:244
|
#: src/views/members/index.tsx:243
|
||||||
msgid "Role"
|
msgid "Role"
|
||||||
msgstr "Rolle"
|
msgstr "Rolle"
|
||||||
|
|
||||||
@@ -1592,10 +1564,6 @@ msgstr "Spare Zeit mit wiederverwendbaren Board-Vorlagen."
|
|||||||
msgid "Screening"
|
msgid "Screening"
|
||||||
msgstr "Vorauswahl"
|
msgstr "Vorauswahl"
|
||||||
|
|
||||||
#: src/components/CommandPallette.tsx:104
|
|
||||||
msgid "Search boards and cards..."
|
|
||||||
msgstr "Boards und Karten durchsuchen..."
|
|
||||||
|
|
||||||
#: src/views/boards/components/ImportBoardsForm.tsx:274
|
#: src/views/boards/components/ImportBoardsForm.tsx:274
|
||||||
msgid "Select all"
|
msgid "Select all"
|
||||||
msgstr "Alle auswählen"
|
msgstr "Alle auswählen"
|
||||||
@@ -1649,6 +1617,10 @@ msgstr "Einstellungen | Integrationen"
|
|||||||
msgid "Settings | Workspace"
|
msgid "Settings | Workspace"
|
||||||
msgstr "Einstellungen | Arbeitsbereich"
|
msgstr "Einstellungen | Arbeitsbereich"
|
||||||
|
|
||||||
|
#: src/views/members/components/InviteMemberForm.tsx:327
|
||||||
|
msgid "Share invite link"
|
||||||
|
msgstr "Einladungslink teilen"
|
||||||
|
|
||||||
#: src/views/home/components/Header.tsx:100
|
#: src/views/home/components/Header.tsx:100
|
||||||
#: src/views/home/components/Header.tsx:138
|
#: src/views/home/components/Header.tsx:138
|
||||||
msgid "Sign in"
|
msgid "Sign in"
|
||||||
@@ -1675,7 +1647,7 @@ msgstr "Registrierung deaktiviert"
|
|||||||
msgid "Sign up is currently disabled. Please try again later."
|
msgid "Sign up is currently disabled. Please try again later."
|
||||||
msgstr "Die Registrierung ist derzeit deaktiviert. Bitte versuche es später erneut."
|
msgstr "Die Registrierung ist derzeit deaktiviert. Bitte versuche es später erneut."
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:417
|
#: src/components/AuthForm.tsx:370
|
||||||
msgid "Sign up with "
|
msgid "Sign up with "
|
||||||
msgstr "Registrieren mit "
|
msgstr "Registrieren mit "
|
||||||
|
|
||||||
@@ -1699,12 +1671,8 @@ msgstr "Softwareentwicklung"
|
|||||||
msgid "Star on Github"
|
msgid "Star on Github"
|
||||||
msgstr "Stern auf Github"
|
msgstr "Stern auf Github"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:122
|
#: src/components/AuthForm.tsx:207
|
||||||
msgid "Subscription Required"
|
#: src/components/AuthForm.tsx:224
|
||||||
msgstr "Abonnement erforderlich"
|
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:212
|
|
||||||
#: src/components/AuthForm.tsx:229
|
|
||||||
msgid "Success"
|
msgid "Success"
|
||||||
msgstr "Erfolg"
|
msgstr "Erfolg"
|
||||||
|
|
||||||
@@ -1724,8 +1692,8 @@ msgstr "Unterstütze die Entwicklung des Projekts"
|
|||||||
msgid "System"
|
msgid "System"
|
||||||
msgstr "System"
|
msgstr "System"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:315
|
#: src/views/members/components/InviteMemberForm.tsx:301
|
||||||
#: src/views/members/index.tsx:208
|
#: src/views/members/index.tsx:207
|
||||||
msgid "Team Plan"
|
msgid "Team Plan"
|
||||||
msgstr "Team-Plan"
|
msgstr "Team-Plan"
|
||||||
|
|
||||||
@@ -2008,7 +1976,7 @@ msgstr "Upgrade auf Pro"
|
|||||||
msgid "Upgrade to Pro ($29/month)"
|
msgid "Upgrade to Pro ($29/month)"
|
||||||
msgstr "Upgrade auf Pro ($29/Monat)"
|
msgstr "Upgrade auf Pro ($29/Monat)"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:357
|
#: src/views/members/components/InviteMemberForm.tsx:341
|
||||||
msgid "Upgrade to Team Plan"
|
msgid "Upgrade to Team Plan"
|
||||||
msgstr "Upgrade auf Team-Plan"
|
msgstr "Upgrade auf Team-Plan"
|
||||||
|
|
||||||
@@ -2036,11 +2004,11 @@ 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:238
|
#: src/views/members/index.tsx:237
|
||||||
msgid "User"
|
msgid "User"
|
||||||
msgstr "Benutzer"
|
msgstr "Benutzer"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:98
|
#: src/views/members/components/InviteMemberForm.tsx:96
|
||||||
msgid "User is already a member of this workspace"
|
msgid "User is already a member of this workspace"
|
||||||
msgstr "Benutzer ist bereits Mitglied dieses Arbeitsbereichs"
|
msgstr "Benutzer ist bereits Mitglied dieses Arbeitsbereichs"
|
||||||
|
|
||||||
@@ -2199,15 +2167,15 @@ msgstr "Du kannst teammitglieder einladen, indem du auf die schaltfläche \"Einl
|
|||||||
msgid "You can self-host by following the instructions in our <0>repo</0>."
|
msgid "You can self-host by following the instructions in our <0>repo</0>."
|
||||||
msgstr "Sie können selbst hosten, indem sie den anweisungen in unserem <0>repo</0> folgen."
|
msgstr "Sie können selbst hosten, indem sie den anweisungen in unserem <0>repo</0> folgen."
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:230
|
#: src/components/AuthForm.tsx:225
|
||||||
msgid "You have been logged in successfully."
|
msgid "You have been logged in successfully."
|
||||||
msgstr "Sie haben sich erfolgreich angemeldet."
|
msgstr "Sie haben sich erfolgreich angemeldet."
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:213
|
#: src/components/AuthForm.tsx:208
|
||||||
msgid "You have been signed up successfully."
|
msgid "You have been signed up successfully."
|
||||||
msgstr "Sie haben sich erfolgreich registriert."
|
msgstr "Sie haben sich erfolgreich registriert."
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:319
|
#: src/views/members/components/InviteMemberForm.tsx:305
|
||||||
msgid "You have unlimited seats with your Pro Plan. There is no additional charge for new members!"
|
msgid "You have unlimited seats with your Pro Plan. There is no additional charge for new members!"
|
||||||
msgstr "Sie haben unbegrenzte Plätze mit Ihrem Pro-Plan. Für neue Mitglieder fallen keine zusätzlichen Kosten an!"
|
msgstr "Sie haben unbegrenzte Plätze mit Ihrem Pro-Plan. Für neue Mitglieder fallen keine zusätzlichen Kosten an!"
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -40,12 +40,12 @@ msgstr "{boardCount, plural, one {Import board (1)} other {Import boards ({board
|
|||||||
#~ msgid "#1 Hacker News"
|
#~ msgid "#1 Hacker News"
|
||||||
#~ msgstr "#1 Hacker News"
|
#~ msgstr "#1 Hacker News"
|
||||||
|
|
||||||
|
#: src/views/members/components/InviteMemberForm.tsx:146
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:158
|
#: src/views/members/components/InviteMemberForm.tsx:158
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:170
|
|
||||||
msgid "$10/month"
|
msgid "$10/month"
|
||||||
msgstr "$10/month"
|
msgstr "$10/month"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:170
|
#: src/views/members/components/InviteMemberForm.tsx:158
|
||||||
msgid "$8/month"
|
msgid "$8/month"
|
||||||
msgstr "$8/month"
|
msgstr "$8/month"
|
||||||
|
|
||||||
@@ -117,7 +117,7 @@ msgid "Add label"
|
|||||||
msgstr "Add label"
|
msgstr "Add label"
|
||||||
|
|
||||||
#: src/views/card/components/MemberSelector.tsx:130
|
#: src/views/card/components/MemberSelector.tsx:130
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:250
|
#: src/views/members/components/InviteMemberForm.tsx:238
|
||||||
msgid "Add member"
|
msgid "Add member"
|
||||||
msgstr "Add member"
|
msgstr "Add member"
|
||||||
|
|
||||||
@@ -156,7 +156,7 @@ msgstr "added label <0>{0}</0>"
|
|||||||
#~ msgid "added label <0>{label}</0>"
|
#~ msgid "added label <0>{label}</0>"
|
||||||
#~ msgstr "added label <0>{label}</0>"
|
#~ msgstr "added label <0>{label}</0>"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:320
|
#: src/views/members/components/InviteMemberForm.tsx:306
|
||||||
msgid "Adding a new member will cost an additional {price} ({billingType}) per seat."
|
msgid "Adding a new member will cost an additional {price} ({billingType}) per seat."
|
||||||
msgstr "Adding a new member will cost an additional {price} ({billingType}) per seat."
|
msgstr "Adding a new member will cost an additional {price} ({billingType}) per seat."
|
||||||
|
|
||||||
@@ -188,7 +188,7 @@ msgstr "An error occurred while disconnecting your Trello account."
|
|||||||
msgid "An unexpected error occurred. Please try again later."
|
msgid "An unexpected error occurred. Please try again later."
|
||||||
msgstr "An unexpected error occurred. Please try again later."
|
msgstr "An unexpected error occurred. Please try again later."
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:304
|
#: src/views/members/components/InviteMemberForm.tsx:290
|
||||||
msgid "Anyone with this link can join your workspace"
|
msgid "Anyone with this link can join your workspace"
|
||||||
msgstr "Anyone with this link can join your workspace"
|
msgstr "Anyone with this link can join your workspace"
|
||||||
|
|
||||||
@@ -286,11 +286,11 @@ msgstr "Backlog"
|
|||||||
msgid "Basic Kanban"
|
msgid "Basic Kanban"
|
||||||
msgstr "Basic Kanban"
|
msgstr "Basic Kanban"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:171
|
#: src/views/members/components/InviteMemberForm.tsx:159
|
||||||
msgid "billed annually"
|
msgid "billed annually"
|
||||||
msgstr "billed annually"
|
msgstr "billed annually"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:171
|
#: src/views/members/components/InviteMemberForm.tsx:159
|
||||||
msgid "billed monthly"
|
msgid "billed monthly"
|
||||||
msgstr "billed monthly"
|
msgstr "billed monthly"
|
||||||
|
|
||||||
@@ -520,12 +520,12 @@ msgstr "Contact us"
|
|||||||
msgid "Content Creation"
|
msgid "Content Creation"
|
||||||
msgstr "Content Creation"
|
msgstr "Content Creation"
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:417
|
#: src/components/AuthForm.tsx:370
|
||||||
msgid "Continue with "
|
msgid "Continue with "
|
||||||
msgstr "Continue with "
|
msgstr "Continue with "
|
||||||
|
|
||||||
#. placeholder {0}: key === "oidc" ? oidcProviderName : provider.name
|
#. placeholder {0}: key === "oidc" ? oidcProviderName : provider.name
|
||||||
#: src/components/AuthForm.tsx:348
|
#: src/components/AuthForm.tsx:301
|
||||||
msgid "Continue with {0}"
|
msgid "Continue with {0}"
|
||||||
msgstr "Continue with {0}"
|
msgstr "Continue with {0}"
|
||||||
|
|
||||||
@@ -559,10 +559,6 @@ msgstr "Create card"
|
|||||||
msgid "Create checklist"
|
msgid "Create checklist"
|
||||||
msgstr "Create checklist"
|
msgstr "Create checklist"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:342
|
|
||||||
msgid "Create invite link"
|
|
||||||
msgstr "Create invite link"
|
|
||||||
|
|
||||||
#: src/components/LabelForm.tsx:238
|
#: src/components/LabelForm.tsx:238
|
||||||
msgid "Create label"
|
msgid "Create label"
|
||||||
msgstr "Create label"
|
msgstr "Create label"
|
||||||
@@ -593,7 +589,7 @@ msgstr "Create new list"
|
|||||||
#~ msgstr "Create Pro workspace"
|
#~ msgstr "Create Pro workspace"
|
||||||
|
|
||||||
#: src/components/NewWorkspaceForm.tsx:384
|
#: src/components/NewWorkspaceForm.tsx:384
|
||||||
#: src/components/WorkspaceMenu.tsx:149
|
#: src/components/WorkspaceMenu.tsx:116
|
||||||
msgid "Create workspace"
|
msgid "Create workspace"
|
||||||
msgstr "Create workspace"
|
msgstr "Create workspace"
|
||||||
|
|
||||||
@@ -642,10 +638,6 @@ msgstr "Customer Support"
|
|||||||
msgid "Dark"
|
msgid "Dark"
|
||||||
msgstr "Dark"
|
msgstr "Dark"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:341
|
|
||||||
msgid "Deactivate invite link"
|
|
||||||
msgstr "Deactivate invite link"
|
|
||||||
|
|
||||||
#: src/components/DeleteLabelConfirmation.tsx:51
|
#: src/components/DeleteLabelConfirmation.tsx:51
|
||||||
#: src/components/LabelForm.tsx:228
|
#: src/components/LabelForm.tsx:228
|
||||||
#: src/views/card/components/DeleteCardConfirmation.tsx:92
|
#: src/views/card/components/DeleteCardConfirmation.tsx:92
|
||||||
@@ -778,11 +770,11 @@ msgstr "Edit workspace URL"
|
|||||||
msgid "Editing"
|
msgid "Editing"
|
||||||
msgstr "Editing"
|
msgstr "Editing"
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:418
|
#: src/components/AuthForm.tsx:372
|
||||||
msgid "email"
|
msgid "email"
|
||||||
msgstr "email"
|
msgstr "email"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:265
|
#: src/views/members/components/InviteMemberForm.tsx:252
|
||||||
msgid "Email"
|
msgid "Email"
|
||||||
msgstr "Email"
|
msgstr "Email"
|
||||||
|
|
||||||
@@ -798,11 +790,11 @@ msgstr "Enter your current password"
|
|||||||
msgid "Enter your current password and choose a new secure password."
|
msgid "Enter your current password and choose a new secure password."
|
||||||
msgstr "Enter your current password and choose a new secure password."
|
msgstr "Enter your current password and choose a new secure password."
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:384
|
#: src/components/AuthForm.tsx:337
|
||||||
msgid "Enter your email address"
|
msgid "Enter your email address"
|
||||||
msgstr "Enter your email address"
|
msgstr "Enter your email address"
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:372
|
#: src/components/AuthForm.tsx:325
|
||||||
msgid "Enter your name"
|
msgid "Enter your name"
|
||||||
msgstr "Enter your name"
|
msgstr "Enter your name"
|
||||||
|
|
||||||
@@ -810,11 +802,11 @@ msgstr "Enter your name"
|
|||||||
msgid "Enter your new password"
|
msgid "Enter your new password"
|
||||||
msgstr "Enter your new password"
|
msgstr "Enter your new password"
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:397
|
#: src/components/AuthForm.tsx:350
|
||||||
msgid "Enter your password"
|
msgid "Enter your password"
|
||||||
msgstr "Enter your password"
|
msgstr "Enter your password"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:208
|
#: src/views/members/components/InviteMemberForm.tsx:196
|
||||||
msgid "Error"
|
msgid "Error"
|
||||||
msgstr "Error"
|
msgstr "Error"
|
||||||
|
|
||||||
@@ -822,11 +814,11 @@ msgstr "Error"
|
|||||||
msgid "Error Changing Password"
|
msgid "Error Changing Password"
|
||||||
msgstr "Error Changing Password"
|
msgstr "Error Changing Password"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:128
|
#: src/views/members/components/InviteMemberForm.tsx:117
|
||||||
msgid "Error creating invite link"
|
msgid "Error creating invite link"
|
||||||
msgstr "Error creating invite link"
|
msgstr "Error creating invite link"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:144
|
#: src/views/members/components/InviteMemberForm.tsx:132
|
||||||
msgid "Error deactivating invite link"
|
msgid "Error deactivating invite link"
|
||||||
msgstr "Error deactivating invite link"
|
msgstr "Error deactivating invite link"
|
||||||
|
|
||||||
@@ -846,8 +838,8 @@ msgstr "Error deleting workspace"
|
|||||||
msgid "Error disconnecting Trello"
|
msgid "Error disconnecting Trello"
|
||||||
msgstr "Error disconnecting Trello"
|
msgstr "Error disconnecting Trello"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:97
|
#: src/views/members/components/InviteMemberForm.tsx:95
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:103
|
#: src/views/members/components/InviteMemberForm.tsx:101
|
||||||
msgid "Error inviting member"
|
msgid "Error inviting member"
|
||||||
msgstr "Error inviting member"
|
msgstr "Error inviting member"
|
||||||
|
|
||||||
@@ -871,7 +863,7 @@ msgstr "Error updating workspace name"
|
|||||||
msgid "Error updating workspace URL"
|
msgid "Error updating workspace URL"
|
||||||
msgstr "Error updating workspace URL"
|
msgstr "Error updating workspace URL"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:233
|
#: src/views/members/components/InviteMemberForm.tsx:221
|
||||||
#: src/views/settings/components/UpgradeToProConfirmation.tsx:41
|
#: src/views/settings/components/UpgradeToProConfirmation.tsx:41
|
||||||
msgid "Error upgrading subscription"
|
msgid "Error upgrading subscription"
|
||||||
msgstr "Error upgrading subscription"
|
msgstr "Error upgrading subscription"
|
||||||
@@ -901,12 +893,12 @@ msgstr "Execution"
|
|||||||
msgid "Failed to accept invitation. Please try again later, or contact customer support."
|
msgid "Failed to accept invitation. Please try again later, or contact customer support."
|
||||||
msgstr "Failed to accept invitation. Please try again later, or contact customer support."
|
msgstr "Failed to accept invitation. Please try again later, or contact customer support."
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:209
|
#: src/views/members/components/InviteMemberForm.tsx:197
|
||||||
msgid "Failed to copy invite link"
|
msgid "Failed to copy invite link"
|
||||||
msgstr "Failed to copy invite link"
|
msgstr "Failed to copy invite link"
|
||||||
|
|
||||||
#. placeholder {0}: provider.at(0)?.toUpperCase() + provider.slice(1)
|
#. placeholder {0}: provider.at(0)?.toUpperCase() + provider.slice(1)
|
||||||
#: src/components/AuthForm.tsx:288
|
#: src/components/AuthForm.tsx:273
|
||||||
msgid "Failed to login with {0}. Please try again."
|
msgid "Failed to login with {0}. Please try again."
|
||||||
msgstr "Failed to login with {0}. Please try again."
|
msgstr "Failed to login with {0}. Please try again."
|
||||||
|
|
||||||
@@ -955,8 +947,8 @@ msgstr "For long-term sustainability, we recognise all good open source projects
|
|||||||
msgid "Free"
|
msgid "Free"
|
||||||
msgstr "Free"
|
msgstr "Free"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:326
|
#: src/views/members/components/InviteMemberForm.tsx:312
|
||||||
#: src/views/members/index.tsx:209
|
#: src/views/members/index.tsx:208
|
||||||
msgid "Free Plan"
|
msgid "Free Plan"
|
||||||
msgstr "Free Plan"
|
msgstr "Free Plan"
|
||||||
|
|
||||||
@@ -1102,10 +1094,6 @@ msgstr "Importing from Trello"
|
|||||||
msgid "Importing your Trello boards into Kan is easy. You can follow our step-by-step guide <0>here</0>."
|
msgid "Importing your Trello boards into Kan is easy. You can follow our step-by-step guide <0>here</0>."
|
||||||
msgstr "Importing your Trello boards into Kan is easy. You can follow our step-by-step guide <0>here</0>."
|
msgstr "Importing your Trello boards into Kan is easy. You can follow our step-by-step guide <0>here</0>."
|
||||||
|
|
||||||
#: src/components/CommandPallette.tsx:168
|
|
||||||
msgid "in"
|
|
||||||
msgstr "in"
|
|
||||||
|
|
||||||
#: src/views/boards/components/TemplateBoards.tsx:16
|
#: src/views/boards/components/TemplateBoards.tsx:16
|
||||||
#: src/views/boards/components/TemplateBoards.tsx:22
|
#: src/views/boards/components/TemplateBoards.tsx:22
|
||||||
#: src/views/boards/components/TemplateBoards.tsx:45
|
#: src/views/boards/components/TemplateBoards.tsx:45
|
||||||
@@ -1125,7 +1113,7 @@ msgstr "Integrations"
|
|||||||
msgid "Interviewing"
|
msgid "Interviewing"
|
||||||
msgstr "Interviewing"
|
msgstr "Interviewing"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:51
|
#: src/views/members/components/InviteMemberForm.tsx:49
|
||||||
msgid "Invalid email address"
|
msgid "Invalid email address"
|
||||||
msgstr "Invalid email address"
|
msgstr "Invalid email address"
|
||||||
|
|
||||||
@@ -1133,7 +1121,7 @@ msgstr "Invalid email address"
|
|||||||
msgid "Invalid invitation"
|
msgid "Invalid invitation"
|
||||||
msgstr "Invalid invitation"
|
msgstr "Invalid invitation"
|
||||||
|
|
||||||
#: src/views/members/index.tsx:222
|
#: src/views/members/index.tsx:221
|
||||||
msgid "Invite"
|
msgid "Invite"
|
||||||
msgstr "Invite"
|
msgstr "Invite"
|
||||||
|
|
||||||
@@ -1141,24 +1129,20 @@ msgstr "Invite"
|
|||||||
#~ msgid "Invite another"
|
#~ msgid "Invite another"
|
||||||
#~ msgstr "Invite another"
|
#~ msgstr "Invite another"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:202
|
#: src/views/members/components/InviteMemberForm.tsx:190
|
||||||
msgid "Invite link copied"
|
msgid "Invite link copied"
|
||||||
msgstr "Invite link copied"
|
msgstr "Invite link copied"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:203
|
#: src/views/members/components/InviteMemberForm.tsx:191
|
||||||
msgid "Invite link copied to clipboard"
|
msgid "Invite link copied to clipboard"
|
||||||
msgstr "Invite link copied to clipboard"
|
msgstr "Invite link copied to clipboard"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:123
|
|
||||||
msgid "Invite links require a Team or Pro subscription. Please upgrade your workspace."
|
|
||||||
msgstr "Invite links require a Team or Pro subscription. Please upgrade your workspace."
|
|
||||||
|
|
||||||
#: src/views/card/components/MemberSelector.tsx:111
|
#: src/views/card/components/MemberSelector.tsx:111
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:365
|
#: src/views/members/components/InviteMemberForm.tsx:350
|
||||||
msgid "Invite member"
|
msgid "Invite member"
|
||||||
msgstr "Invite member"
|
msgstr "Invite member"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:329
|
#: src/views/members/components/InviteMemberForm.tsx:315
|
||||||
msgid "Inviting members requires a Team Plan. You'll be redirected to upgrade your workspace."
|
msgid "Inviting members requires a Team Plan. You'll be redirected to upgrade your workspace."
|
||||||
msgstr "Inviting members requires a Team Plan. You'll be redirected to upgrade your workspace."
|
msgstr "Inviting members requires a Team Plan. You'll be redirected to upgrade your workspace."
|
||||||
|
|
||||||
@@ -1207,7 +1191,7 @@ msgstr "Language"
|
|||||||
msgid "Launch offer"
|
msgid "Launch offer"
|
||||||
msgstr "Launch offer"
|
msgstr "Launch offer"
|
||||||
|
|
||||||
#: src/views/members/index.tsx:192
|
#: src/views/members/index.tsx:191
|
||||||
msgid "Launch offer: Get unlimited members with Pro"
|
msgid "Launch offer: Get unlimited members with Pro"
|
||||||
msgstr "Launch offer: Get unlimited members with Pro"
|
msgstr "Launch offer: Get unlimited members with Pro"
|
||||||
|
|
||||||
@@ -1259,7 +1243,7 @@ msgstr "Long-term"
|
|||||||
msgid "Low Priority"
|
msgid "Low Priority"
|
||||||
msgstr "Low Priority"
|
msgstr "Low Priority"
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:418
|
#: src/components/AuthForm.tsx:373
|
||||||
msgid "magic link"
|
msgid "magic link"
|
||||||
msgstr "magic link"
|
msgstr "magic link"
|
||||||
|
|
||||||
@@ -1280,12 +1264,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:179
|
#: 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:174
|
#: src/views/members/index.tsx:173
|
||||||
msgid "Members | {0}"
|
msgid "Members | {0}"
|
||||||
msgstr "Members | {0}"
|
msgstr "Members | {0}"
|
||||||
|
|
||||||
@@ -1293,7 +1277,7 @@ msgstr "Members | {0}"
|
|||||||
msgid "Monthly"
|
msgid "Monthly"
|
||||||
msgstr "Monthly"
|
msgstr "Monthly"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:159
|
#: src/views/members/components/InviteMemberForm.tsx:147
|
||||||
msgid "monthly billing"
|
msgid "monthly billing"
|
||||||
msgstr "monthly billing"
|
msgstr "monthly billing"
|
||||||
|
|
||||||
@@ -1401,10 +1385,6 @@ msgstr "No credit card required"
|
|||||||
msgid "No lists"
|
msgid "No lists"
|
||||||
msgstr "No lists"
|
msgstr "No lists"
|
||||||
|
|
||||||
#: src/components/CommandPallette.tsx:184
|
|
||||||
msgid "No results found for \"{debouncedQuery}\"."
|
|
||||||
msgstr "No results found for \"{debouncedQuery}\"."
|
|
||||||
|
|
||||||
#: src/views/boards/components/TemplateBoards.tsx:65
|
#: src/views/boards/components/TemplateBoards.tsx:65
|
||||||
msgid "Offer"
|
msgid "Offer"
|
||||||
msgstr "Offer"
|
msgstr "Offer"
|
||||||
@@ -1421,7 +1401,7 @@ msgstr "Once you delete your account, there is no going back. This action cannot
|
|||||||
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."
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:362
|
#: src/components/AuthForm.tsx:315
|
||||||
msgid "or"
|
msgid "or"
|
||||||
msgstr "or"
|
msgstr "or"
|
||||||
|
|
||||||
@@ -1441,14 +1421,6 @@ msgstr "Part-time"
|
|||||||
msgid "Password Changed"
|
msgid "Password Changed"
|
||||||
msgstr "Password Changed"
|
msgstr "Password Changed"
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:255
|
|
||||||
msgid "Password is required to login."
|
|
||||||
msgstr "Password is required to login."
|
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:254
|
|
||||||
msgid "Password is required to sign up."
|
|
||||||
msgstr "Password is required to sign up."
|
|
||||||
|
|
||||||
#: src/views/settings/components/ChangePasswordConfirmation.tsx:22
|
#: src/views/settings/components/ChangePasswordConfirmation.tsx:22
|
||||||
msgid "Password must be at least 8 characters"
|
msgid "Password must be at least 8 characters"
|
||||||
msgstr "Password must be at least 8 characters"
|
msgstr "Password must be at least 8 characters"
|
||||||
@@ -1457,7 +1429,7 @@ 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/members/index.tsx:135
|
#: src/views/members/index.tsx:134
|
||||||
msgid "Paused"
|
msgid "Paused"
|
||||||
msgstr "Paused"
|
msgstr "Paused"
|
||||||
|
|
||||||
@@ -1465,7 +1437,7 @@ msgstr "Paused"
|
|||||||
msgid "Payment frequency"
|
msgid "Payment frequency"
|
||||||
msgstr "Payment frequency"
|
msgstr "Payment frequency"
|
||||||
|
|
||||||
#: src/views/members/index.tsx:135
|
#: src/views/members/index.tsx:134
|
||||||
msgid "Pending"
|
msgid "Pending"
|
||||||
msgstr "Pending"
|
msgstr "Pending"
|
||||||
|
|
||||||
@@ -1486,15 +1458,15 @@ msgstr "Planning"
|
|||||||
msgid "Please confirm your new password"
|
msgid "Please confirm your new password"
|
||||||
msgstr "Please confirm your new password"
|
msgstr "Please confirm your new password"
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:388
|
#: src/components/AuthForm.tsx:341
|
||||||
msgid "Please enter a valid email address"
|
msgid "Please enter a valid email address"
|
||||||
msgstr "Please enter a valid email address"
|
msgstr "Please enter a valid email address"
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:376
|
#: src/components/AuthForm.tsx:329
|
||||||
msgid "Please enter a valid name"
|
msgid "Please enter a valid name"
|
||||||
msgstr "Please enter a valid name"
|
msgstr "Please enter a valid name"
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:401
|
#: src/components/AuthForm.tsx:354
|
||||||
msgid "Please enter a valid password"
|
msgid "Please enter a valid password"
|
||||||
msgstr "Please enter a valid password"
|
msgstr "Please enter a valid password"
|
||||||
|
|
||||||
@@ -1527,8 +1499,8 @@ msgstr "Please select a file to upload."
|
|||||||
#: src/views/card/components/NewCommentForm.tsx:31
|
#: src/views/card/components/NewCommentForm.tsx:31
|
||||||
#: src/views/card/index.tsx:173
|
#: src/views/card/index.tsx:173
|
||||||
#: src/views/members/components/DeleteMemberConfirmation.tsx:28
|
#: src/views/members/components/DeleteMemberConfirmation.tsx:28
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:104
|
#: src/views/members/components/InviteMemberForm.tsx:102
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:234
|
#: src/views/members/components/InviteMemberForm.tsx:222
|
||||||
#: src/views/settings/components/Avatar.tsx:78
|
#: src/views/settings/components/Avatar.tsx:78
|
||||||
#: src/views/settings/components/Avatar.tsx:219
|
#: src/views/settings/components/Avatar.tsx:219
|
||||||
#: src/views/settings/components/DeleteAccountConfirmation.tsx:40
|
#: src/views/settings/components/DeleteAccountConfirmation.tsx:40
|
||||||
@@ -1541,8 +1513,8 @@ msgstr "Please select a file to upload."
|
|||||||
msgid "Please try again later, or contact customer support."
|
msgid "Please try again later, or contact customer support."
|
||||||
msgstr "Please try again later, or contact customer support."
|
msgstr "Please try again later, or contact customer support."
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:129
|
#: src/views/members/components/InviteMemberForm.tsx:118
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:145
|
#: src/views/members/components/InviteMemberForm.tsx:133
|
||||||
msgid "Please try again later."
|
msgid "Please try again later."
|
||||||
msgstr "Please try again later."
|
msgstr "Please try again later."
|
||||||
|
|
||||||
@@ -1565,11 +1537,11 @@ msgstr "Privacy policy"
|
|||||||
msgid "Private"
|
msgid "Private"
|
||||||
msgstr "Private"
|
msgstr "Private"
|
||||||
|
|
||||||
#: src/views/members/index.tsx:206
|
#: src/views/members/index.tsx:205
|
||||||
msgid "Pro Plan"
|
msgid "Pro Plan"
|
||||||
msgstr "Pro Plan"
|
msgstr "Pro Plan"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:315
|
#: src/views/members/components/InviteMemberForm.tsx:301
|
||||||
msgid "Pro Plan ∞"
|
msgid "Pro Plan ∞"
|
||||||
msgstr "Pro Plan ∞"
|
msgstr "Pro Plan ∞"
|
||||||
|
|
||||||
@@ -1613,7 +1585,7 @@ msgstr "Remote"
|
|||||||
msgid "Remove"
|
msgid "Remove"
|
||||||
msgstr "Remove"
|
msgstr "Remove"
|
||||||
|
|
||||||
#: src/views/members/index.tsx:149
|
#: src/views/members/index.tsx:148
|
||||||
msgid "Remove member"
|
msgid "Remove member"
|
||||||
msgstr "Remove member"
|
msgstr "Remove member"
|
||||||
|
|
||||||
@@ -1673,7 +1645,7 @@ msgstr "Review"
|
|||||||
msgid "Roadmap"
|
msgid "Roadmap"
|
||||||
msgstr "Roadmap"
|
msgstr "Roadmap"
|
||||||
|
|
||||||
#: src/views/members/index.tsx:244
|
#: src/views/members/index.tsx:243
|
||||||
msgid "Role"
|
msgid "Role"
|
||||||
msgstr "Role"
|
msgstr "Role"
|
||||||
|
|
||||||
@@ -1694,10 +1666,6 @@ msgstr "Save time with reusable board templates."
|
|||||||
msgid "Screening"
|
msgid "Screening"
|
||||||
msgstr "Screening"
|
msgstr "Screening"
|
||||||
|
|
||||||
#: src/components/CommandPallette.tsx:104
|
|
||||||
msgid "Search boards and cards..."
|
|
||||||
msgstr "Search boards and cards..."
|
|
||||||
|
|
||||||
#: src/views/boards/components/ImportBoardsForm.tsx:274
|
#: src/views/boards/components/ImportBoardsForm.tsx:274
|
||||||
msgid "Select all"
|
msgid "Select all"
|
||||||
msgstr "Select all"
|
msgstr "Select all"
|
||||||
@@ -1760,8 +1728,8 @@ msgid "Settings | Workspace"
|
|||||||
msgstr "Settings | Workspace"
|
msgstr "Settings | Workspace"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:327
|
#: src/views/members/components/InviteMemberForm.tsx:327
|
||||||
#~ msgid "Share invite link"
|
msgid "Share invite link"
|
||||||
#~ msgstr "Share invite link"
|
msgstr "Share invite link"
|
||||||
|
|
||||||
#: src/views/home/components/Header.tsx:100
|
#: src/views/home/components/Header.tsx:100
|
||||||
#: src/views/home/components/Header.tsx:138
|
#: src/views/home/components/Header.tsx:138
|
||||||
@@ -1789,7 +1757,7 @@ msgstr "Sign up disabled"
|
|||||||
msgid "Sign up is currently disabled. Please try again later."
|
msgid "Sign up is currently disabled. Please try again later."
|
||||||
msgstr "Sign up is currently disabled. Please try again later."
|
msgstr "Sign up is currently disabled. Please try again later."
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:417
|
#: src/components/AuthForm.tsx:370
|
||||||
msgid "Sign up with "
|
msgid "Sign up with "
|
||||||
msgstr "Sign up with "
|
msgstr "Sign up with "
|
||||||
|
|
||||||
@@ -1813,12 +1781,8 @@ msgstr "Software Development"
|
|||||||
msgid "Star on Github"
|
msgid "Star on Github"
|
||||||
msgstr "Star on Github"
|
msgstr "Star on Github"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:122
|
#: src/components/AuthForm.tsx:207
|
||||||
msgid "Subscription Required"
|
#: src/components/AuthForm.tsx:224
|
||||||
msgstr "Subscription Required"
|
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:212
|
|
||||||
#: src/components/AuthForm.tsx:229
|
|
||||||
msgid "Success"
|
msgid "Success"
|
||||||
msgstr "Success"
|
msgstr "Success"
|
||||||
|
|
||||||
@@ -1838,8 +1802,8 @@ msgstr "Support the development of the project"
|
|||||||
msgid "System"
|
msgid "System"
|
||||||
msgstr "System"
|
msgstr "System"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:315
|
#: src/views/members/components/InviteMemberForm.tsx:301
|
||||||
#: src/views/members/index.tsx:208
|
#: src/views/members/index.tsx:207
|
||||||
msgid "Team Plan"
|
msgid "Team Plan"
|
||||||
msgstr "Team Plan"
|
msgstr "Team Plan"
|
||||||
|
|
||||||
@@ -2134,7 +2098,7 @@ msgstr "Upgrade to Pro"
|
|||||||
msgid "Upgrade to Pro ($29/month)"
|
msgid "Upgrade to Pro ($29/month)"
|
||||||
msgstr "Upgrade to Pro ($29/month)"
|
msgstr "Upgrade to Pro ($29/month)"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:357
|
#: src/views/members/components/InviteMemberForm.tsx:341
|
||||||
msgid "Upgrade to Team Plan"
|
msgid "Upgrade to Team Plan"
|
||||||
msgstr "Upgrade to Team Plan"
|
msgstr "Upgrade to Team Plan"
|
||||||
|
|
||||||
@@ -2162,11 +2126,11 @@ 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:238
|
#: src/views/members/index.tsx:237
|
||||||
msgid "User"
|
msgid "User"
|
||||||
msgstr "User"
|
msgstr "User"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:98
|
#: src/views/members/components/InviteMemberForm.tsx:96
|
||||||
msgid "User is already a member of this workspace"
|
msgid "User is already a member of this workspace"
|
||||||
msgstr "User is already a member of this workspace"
|
msgstr "User is already a member of this workspace"
|
||||||
|
|
||||||
@@ -2329,15 +2293,15 @@ msgstr "You can invite team members by clicking the \"Invite\" button in the top
|
|||||||
msgid "You can self-host by following the instructions in our <0>repo</0>."
|
msgid "You can self-host by following the instructions in our <0>repo</0>."
|
||||||
msgstr "You can self-host by following the instructions in our <0>repo</0>."
|
msgstr "You can self-host by following the instructions in our <0>repo</0>."
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:230
|
#: src/components/AuthForm.tsx:225
|
||||||
msgid "You have been logged in successfully."
|
msgid "You have been logged in successfully."
|
||||||
msgstr "You have been logged in successfully."
|
msgstr "You have been logged in successfully."
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:213
|
#: src/components/AuthForm.tsx:208
|
||||||
msgid "You have been signed up successfully."
|
msgid "You have been signed up successfully."
|
||||||
msgstr "You have been signed up successfully."
|
msgstr "You have been signed up successfully."
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:319
|
#: src/views/members/components/InviteMemberForm.tsx:305
|
||||||
msgid "You have unlimited seats with your Pro Plan. There is no additional charge for new members!"
|
msgid "You have unlimited seats with your Pro Plan. There is no additional charge for new members!"
|
||||||
msgstr "You have unlimited seats with your Pro Plan. There is no additional charge for new members!"
|
msgstr "You have unlimited seats with your Pro Plan. There is no additional charge for new members!"
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -36,12 +36,12 @@ msgstr "{0} etiquetas"
|
|||||||
msgid "{boardCount, plural, one {Import board (1)} other {Import boards ({boardCount})}}"
|
msgid "{boardCount, plural, one {Import board (1)} other {Import boards ({boardCount})}}"
|
||||||
msgstr "{boardCount, plural, one {Importar tablero (1)} other {Importar tableros ({boardCount})}}"
|
msgstr "{boardCount, plural, one {Importar tablero (1)} other {Importar tableros ({boardCount})}}"
|
||||||
|
|
||||||
|
#: src/views/members/components/InviteMemberForm.tsx:146
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:158
|
#: src/views/members/components/InviteMemberForm.tsx:158
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:170
|
|
||||||
msgid "$10/month"
|
msgid "$10/month"
|
||||||
msgstr "$10/mes"
|
msgstr "$10/mes"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:170
|
#: src/views/members/components/InviteMemberForm.tsx:158
|
||||||
msgid "$8/month"
|
msgid "$8/month"
|
||||||
msgstr "$8/mes"
|
msgstr "$8/mes"
|
||||||
|
|
||||||
@@ -101,7 +101,7 @@ msgid "Add label"
|
|||||||
msgstr "Añadir etiqueta"
|
msgstr "Añadir etiqueta"
|
||||||
|
|
||||||
#: src/views/card/components/MemberSelector.tsx:130
|
#: src/views/card/components/MemberSelector.tsx:130
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:250
|
#: src/views/members/components/InviteMemberForm.tsx:238
|
||||||
msgid "Add member"
|
msgid "Add member"
|
||||||
msgstr "Añadir miembro"
|
msgstr "Añadir miembro"
|
||||||
|
|
||||||
@@ -136,7 +136,7 @@ msgstr "añadió el elemento <0>{0}</0> a la lista de verificación"
|
|||||||
msgid "added label <0>{0}</0>"
|
msgid "added label <0>{0}</0>"
|
||||||
msgstr "añadió la etiqueta <0>{0}</0>"
|
msgstr "añadió la etiqueta <0>{0}</0>"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:320
|
#: src/views/members/components/InviteMemberForm.tsx:306
|
||||||
msgid "Adding a new member will cost an additional {price} ({billingType}) per seat."
|
msgid "Adding a new member will cost an additional {price} ({billingType}) per seat."
|
||||||
msgstr "Añadir un nuevo miembro costará {price} adicionales ({billingType}) por asiento."
|
msgstr "Añadir un nuevo miembro costará {price} adicionales ({billingType}) por asiento."
|
||||||
|
|
||||||
@@ -164,7 +164,7 @@ msgstr "Ocurrió un error al desconectar tu cuenta de Trello."
|
|||||||
msgid "An unexpected error occurred. Please try again later."
|
msgid "An unexpected error occurred. Please try again later."
|
||||||
msgstr "Ha ocurrido un error inesperado. Por favor, inténtalo de nuevo más tarde."
|
msgstr "Ha ocurrido un error inesperado. Por favor, inténtalo de nuevo más tarde."
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:304
|
#: src/views/members/components/InviteMemberForm.tsx:290
|
||||||
msgid "Anyone with this link can join your workspace"
|
msgid "Anyone with this link can join your workspace"
|
||||||
msgstr "Cualquier persona con este enlace puede unirse a tu espacio de trabajo"
|
msgstr "Cualquier persona con este enlace puede unirse a tu espacio de trabajo"
|
||||||
|
|
||||||
@@ -250,11 +250,11 @@ msgstr "Pendientes"
|
|||||||
msgid "Basic Kanban"
|
msgid "Basic Kanban"
|
||||||
msgstr "Kanban básico"
|
msgstr "Kanban básico"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:171
|
#: src/views/members/components/InviteMemberForm.tsx:159
|
||||||
msgid "billed annually"
|
msgid "billed annually"
|
||||||
msgstr "facturado anualmente"
|
msgstr "facturado anualmente"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:171
|
#: src/views/members/components/InviteMemberForm.tsx:159
|
||||||
msgid "billed monthly"
|
msgid "billed monthly"
|
||||||
msgstr "facturado mensualmente"
|
msgstr "facturado mensualmente"
|
||||||
|
|
||||||
@@ -463,12 +463,12 @@ msgstr "Contáctanos"
|
|||||||
msgid "Content Creation"
|
msgid "Content Creation"
|
||||||
msgstr "Creación de contenido"
|
msgstr "Creación de contenido"
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:417
|
#: src/components/AuthForm.tsx:370
|
||||||
msgid "Continue with "
|
msgid "Continue with "
|
||||||
msgstr "Continuar con "
|
msgstr "Continuar con "
|
||||||
|
|
||||||
#. placeholder {0}: key === "oidc" ? oidcProviderName : provider.name
|
#. placeholder {0}: key === "oidc" ? oidcProviderName : provider.name
|
||||||
#: src/components/AuthForm.tsx:348
|
#: src/components/AuthForm.tsx:301
|
||||||
msgid "Continue with {0}"
|
msgid "Continue with {0}"
|
||||||
msgstr "Continuar con {0}"
|
msgstr "Continuar con {0}"
|
||||||
|
|
||||||
@@ -498,10 +498,6 @@ msgstr "Crear tarjeta"
|
|||||||
msgid "Create checklist"
|
msgid "Create checklist"
|
||||||
msgstr "Crear lista de verificación"
|
msgstr "Crear lista de verificación"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:342
|
|
||||||
msgid "Create invite link"
|
|
||||||
msgstr "Crear enlace de invitación"
|
|
||||||
|
|
||||||
#: src/components/LabelForm.tsx:238
|
#: src/components/LabelForm.tsx:238
|
||||||
msgid "Create label"
|
msgid "Create label"
|
||||||
msgstr "Crear etiqueta"
|
msgstr "Crear etiqueta"
|
||||||
@@ -528,7 +524,7 @@ msgid "Create new list"
|
|||||||
msgstr "Crear nueva lista"
|
msgstr "Crear nueva lista"
|
||||||
|
|
||||||
#: src/components/NewWorkspaceForm.tsx:384
|
#: src/components/NewWorkspaceForm.tsx:384
|
||||||
#: src/components/WorkspaceMenu.tsx:149
|
#: src/components/WorkspaceMenu.tsx:116
|
||||||
msgid "Create workspace"
|
msgid "Create workspace"
|
||||||
msgstr "Crear espacio de trabajo"
|
msgstr "Crear espacio de trabajo"
|
||||||
|
|
||||||
@@ -569,10 +565,6 @@ msgstr "Atención al cliente"
|
|||||||
msgid "Dark"
|
msgid "Dark"
|
||||||
msgstr "Oscuro"
|
msgstr "Oscuro"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:341
|
|
||||||
msgid "Deactivate invite link"
|
|
||||||
msgstr "Desactivar enlace de invitación"
|
|
||||||
|
|
||||||
#: src/components/DeleteLabelConfirmation.tsx:51
|
#: src/components/DeleteLabelConfirmation.tsx:51
|
||||||
#: src/components/LabelForm.tsx:228
|
#: src/components/LabelForm.tsx:228
|
||||||
#: src/views/card/components/DeleteCardConfirmation.tsx:92
|
#: src/views/card/components/DeleteCardConfirmation.tsx:92
|
||||||
@@ -705,11 +697,11 @@ msgstr "Editar URL del espacio de trabajo"
|
|||||||
msgid "Editing"
|
msgid "Editing"
|
||||||
msgstr "Editando"
|
msgstr "Editando"
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:418
|
#: src/components/AuthForm.tsx:372
|
||||||
msgid "email"
|
msgid "email"
|
||||||
msgstr "correo electrónico"
|
msgstr "correo electrónico"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:265
|
#: src/views/members/components/InviteMemberForm.tsx:252
|
||||||
msgid "Email"
|
msgid "Email"
|
||||||
msgstr "Correo electrónico"
|
msgstr "Correo electrónico"
|
||||||
|
|
||||||
@@ -725,11 +717,11 @@ msgstr "Introduce tu contraseña actual"
|
|||||||
msgid "Enter your current password and choose a new secure password."
|
msgid "Enter your current password and choose a new secure password."
|
||||||
msgstr "Introduce tu contraseña actual y elige una nueva contraseña segura."
|
msgstr "Introduce tu contraseña actual y elige una nueva contraseña segura."
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:384
|
#: src/components/AuthForm.tsx:337
|
||||||
msgid "Enter your email address"
|
msgid "Enter your email address"
|
||||||
msgstr "Introduce tu dirección de correo electrónico"
|
msgstr "Introduce tu dirección de correo electrónico"
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:372
|
#: src/components/AuthForm.tsx:325
|
||||||
msgid "Enter your name"
|
msgid "Enter your name"
|
||||||
msgstr "Introduce tu nombre"
|
msgstr "Introduce tu nombre"
|
||||||
|
|
||||||
@@ -737,11 +729,11 @@ msgstr "Introduce tu nombre"
|
|||||||
msgid "Enter your new password"
|
msgid "Enter your new password"
|
||||||
msgstr "Introduce tu nueva contraseña"
|
msgstr "Introduce tu nueva contraseña"
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:397
|
#: src/components/AuthForm.tsx:350
|
||||||
msgid "Enter your password"
|
msgid "Enter your password"
|
||||||
msgstr "Introduce tu contraseña"
|
msgstr "Introduce tu contraseña"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:208
|
#: src/views/members/components/InviteMemberForm.tsx:196
|
||||||
msgid "Error"
|
msgid "Error"
|
||||||
msgstr "Error"
|
msgstr "Error"
|
||||||
|
|
||||||
@@ -749,11 +741,11 @@ msgstr "Error"
|
|||||||
msgid "Error Changing Password"
|
msgid "Error Changing Password"
|
||||||
msgstr "Error al cambiar la contraseña"
|
msgstr "Error al cambiar la contraseña"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:128
|
#: src/views/members/components/InviteMemberForm.tsx:117
|
||||||
msgid "Error creating invite link"
|
msgid "Error creating invite link"
|
||||||
msgstr "Error al crear el enlace de invitación"
|
msgstr "Error al crear el enlace de invitación"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:144
|
#: src/views/members/components/InviteMemberForm.tsx:132
|
||||||
msgid "Error deactivating invite link"
|
msgid "Error deactivating invite link"
|
||||||
msgstr "Error al desactivar el enlace de invitación"
|
msgstr "Error al desactivar el enlace de invitación"
|
||||||
|
|
||||||
@@ -773,8 +765,8 @@ msgstr "Error al eliminar el espacio de trabajo"
|
|||||||
msgid "Error disconnecting Trello"
|
msgid "Error disconnecting Trello"
|
||||||
msgstr "Error al desconectar Trello"
|
msgstr "Error al desconectar Trello"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:97
|
#: src/views/members/components/InviteMemberForm.tsx:95
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:103
|
#: src/views/members/components/InviteMemberForm.tsx:101
|
||||||
msgid "Error inviting member"
|
msgid "Error inviting member"
|
||||||
msgstr "Error al invitar al miembro"
|
msgstr "Error al invitar al miembro"
|
||||||
|
|
||||||
@@ -798,7 +790,7 @@ msgstr "Error al actualizar el nombre del espacio de trabajo"
|
|||||||
msgid "Error updating workspace URL"
|
msgid "Error updating workspace URL"
|
||||||
msgstr "Error al actualizar la URL del espacio de trabajo"
|
msgstr "Error al actualizar la URL del espacio de trabajo"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:233
|
#: src/views/members/components/InviteMemberForm.tsx:221
|
||||||
#: src/views/settings/components/UpgradeToProConfirmation.tsx:41
|
#: src/views/settings/components/UpgradeToProConfirmation.tsx:41
|
||||||
msgid "Error upgrading subscription"
|
msgid "Error upgrading subscription"
|
||||||
msgstr "Error al actualizar la suscripción"
|
msgstr "Error al actualizar la suscripción"
|
||||||
@@ -828,12 +820,12 @@ msgstr "Ejecución"
|
|||||||
msgid "Failed to accept invitation. Please try again later, or contact customer support."
|
msgid "Failed to accept invitation. Please try again later, or contact customer support."
|
||||||
msgstr "No se pudo aceptar la invitación. Por favor, inténtalo de nuevo más tarde o contacta con atención al cliente."
|
msgstr "No se pudo aceptar la invitación. Por favor, inténtalo de nuevo más tarde o contacta con atención al cliente."
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:209
|
#: src/views/members/components/InviteMemberForm.tsx:197
|
||||||
msgid "Failed to copy invite link"
|
msgid "Failed to copy invite link"
|
||||||
msgstr "No se pudo copiar el enlace de invitación"
|
msgstr "No se pudo copiar el enlace de invitación"
|
||||||
|
|
||||||
#. placeholder {0}: provider.at(0)?.toUpperCase() + provider.slice(1)
|
#. placeholder {0}: provider.at(0)?.toUpperCase() + provider.slice(1)
|
||||||
#: src/components/AuthForm.tsx:288
|
#: src/components/AuthForm.tsx:273
|
||||||
msgid "Failed to login with {0}. Please try again."
|
msgid "Failed to login with {0}. Please try again."
|
||||||
msgstr "Error al iniciar sesión con {0}. Por favor, inténtalo de nuevo."
|
msgstr "Error al iniciar sesión con {0}. Por favor, inténtalo de nuevo."
|
||||||
|
|
||||||
@@ -881,8 +873,8 @@ msgstr "Para la sostenibilidad a largo plazo, reconocemos que todos los buenos p
|
|||||||
msgid "Free"
|
msgid "Free"
|
||||||
msgstr "Gratis"
|
msgstr "Gratis"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:326
|
#: src/views/members/components/InviteMemberForm.tsx:312
|
||||||
#: src/views/members/index.tsx:209
|
#: src/views/members/index.tsx:208
|
||||||
msgid "Free Plan"
|
msgid "Free Plan"
|
||||||
msgstr "Plan gratuito"
|
msgstr "Plan gratuito"
|
||||||
|
|
||||||
@@ -1024,10 +1016,6 @@ msgstr "Importando desde Trello"
|
|||||||
msgid "Importing your Trello boards into Kan is easy. You can follow our step-by-step guide <0>here</0>."
|
msgid "Importing your Trello boards into Kan is easy. You can follow our step-by-step guide <0>here</0>."
|
||||||
msgstr "Importar tus tableros de Trello a Kan es fácil. Puedes seguir nuestra guía paso a paso <0>aquí</0>."
|
msgstr "Importar tus tableros de Trello a Kan es fácil. Puedes seguir nuestra guía paso a paso <0>aquí</0>."
|
||||||
|
|
||||||
#: src/components/CommandPallette.tsx:168
|
|
||||||
msgid "in"
|
|
||||||
msgstr "en"
|
|
||||||
|
|
||||||
#: src/views/boards/components/TemplateBoards.tsx:16
|
#: src/views/boards/components/TemplateBoards.tsx:16
|
||||||
#: src/views/boards/components/TemplateBoards.tsx:22
|
#: src/views/boards/components/TemplateBoards.tsx:22
|
||||||
#: src/views/boards/components/TemplateBoards.tsx:45
|
#: src/views/boards/components/TemplateBoards.tsx:45
|
||||||
@@ -1047,36 +1035,32 @@ msgstr "Integraciones"
|
|||||||
msgid "Interviewing"
|
msgid "Interviewing"
|
||||||
msgstr "Entrevistando"
|
msgstr "Entrevistando"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:51
|
#: src/views/members/components/InviteMemberForm.tsx:49
|
||||||
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/invite/index.tsx:105
|
#: src/views/invite/index.tsx:105
|
||||||
msgid "Invalid invitation"
|
msgid "Invalid invitation"
|
||||||
msgstr "Invitación inválida"
|
msgstr "Invitación no válida"
|
||||||
|
|
||||||
#: src/views/members/index.tsx:222
|
#: src/views/members/index.tsx:221
|
||||||
msgid "Invite"
|
msgid "Invite"
|
||||||
msgstr "Invitar"
|
msgstr "Invitar"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:202
|
#: src/views/members/components/InviteMemberForm.tsx:190
|
||||||
msgid "Invite link copied"
|
msgid "Invite link copied"
|
||||||
msgstr "Enlace de invitación copiado"
|
msgstr "Enlace de invitación copiado"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:203
|
#: src/views/members/components/InviteMemberForm.tsx:191
|
||||||
msgid "Invite link copied to clipboard"
|
msgid "Invite link copied to clipboard"
|
||||||
msgstr "Enlace de invitación copiado al portapapeles"
|
msgstr "Enlace de invitación copiado al portapapeles"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:123
|
|
||||||
msgid "Invite links require a Team or Pro subscription. Please upgrade your workspace."
|
|
||||||
msgstr "Los enlaces de invitación requieren una suscripción de Equipo o Pro. Por favor, actualiza tu espacio de trabajo."
|
|
||||||
|
|
||||||
#: src/views/card/components/MemberSelector.tsx:111
|
#: src/views/card/components/MemberSelector.tsx:111
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:365
|
#: src/views/members/components/InviteMemberForm.tsx:350
|
||||||
msgid "Invite member"
|
msgid "Invite member"
|
||||||
msgstr "Invitar miembro"
|
msgstr "Invitar miembro"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:329
|
#: src/views/members/components/InviteMemberForm.tsx:315
|
||||||
msgid "Inviting members requires a Team Plan. You'll be redirected to upgrade your workspace."
|
msgid "Inviting members requires a Team Plan. You'll be redirected to upgrade your workspace."
|
||||||
msgstr "Invitar miembros requiere un Plan de Equipo. Serás redirigido para actualizar tu espacio de trabajo."
|
msgstr "Invitar miembros requiere un Plan de Equipo. Serás redirigido para actualizar tu espacio de trabajo."
|
||||||
|
|
||||||
@@ -1125,7 +1109,7 @@ msgstr "Idioma"
|
|||||||
msgid "Launch offer"
|
msgid "Launch offer"
|
||||||
msgstr "Oferta de lanzamiento"
|
msgstr "Oferta de lanzamiento"
|
||||||
|
|
||||||
#: src/views/members/index.tsx:192
|
#: src/views/members/index.tsx:191
|
||||||
msgid "Launch offer: Get unlimited members with Pro"
|
msgid "Launch offer: Get unlimited members with Pro"
|
||||||
msgstr "Oferta de lanzamiento: Obtén miembros ilimitados con Pro"
|
msgstr "Oferta de lanzamiento: Obtén miembros ilimitados con Pro"
|
||||||
|
|
||||||
@@ -1177,7 +1161,7 @@ msgstr "Largo plazo"
|
|||||||
msgid "Low Priority"
|
msgid "Low Priority"
|
||||||
msgstr "Prioridad baja"
|
msgstr "Prioridad baja"
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:418
|
#: src/components/AuthForm.tsx:373
|
||||||
msgid "magic link"
|
msgid "magic link"
|
||||||
msgstr "enlace mágico"
|
msgstr "enlace mágico"
|
||||||
|
|
||||||
@@ -1198,12 +1182,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:179
|
#: 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:174
|
#: src/views/members/index.tsx:173
|
||||||
msgid "Members | {0}"
|
msgid "Members | {0}"
|
||||||
msgstr "Miembros | {0}"
|
msgstr "Miembros | {0}"
|
||||||
|
|
||||||
@@ -1211,7 +1195,7 @@ msgstr "Miembros | {0}"
|
|||||||
msgid "Monthly"
|
msgid "Monthly"
|
||||||
msgstr "Mensual"
|
msgstr "Mensual"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:159
|
#: src/views/members/components/InviteMemberForm.tsx:147
|
||||||
msgid "monthly billing"
|
msgid "monthly billing"
|
||||||
msgstr "facturación mensual"
|
msgstr "facturación mensual"
|
||||||
|
|
||||||
@@ -1307,10 +1291,6 @@ msgstr "No se requiere tarjeta de crédito"
|
|||||||
msgid "No lists"
|
msgid "No lists"
|
||||||
msgstr "Sin listas"
|
msgstr "Sin listas"
|
||||||
|
|
||||||
#: src/components/CommandPallette.tsx:184
|
|
||||||
msgid "No results found for \"{debouncedQuery}\"."
|
|
||||||
msgstr "No se encontraron resultados para \"{debouncedQuery}\"."
|
|
||||||
|
|
||||||
#: src/views/boards/components/TemplateBoards.tsx:65
|
#: src/views/boards/components/TemplateBoards.tsx:65
|
||||||
msgid "Offer"
|
msgid "Offer"
|
||||||
msgstr "Oferta"
|
msgstr "Oferta"
|
||||||
@@ -1327,7 +1307,7 @@ msgstr "Una vez que elimines tu cuenta, no hay vuelta atrás. Esta acción no se
|
|||||||
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."
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:362
|
#: src/components/AuthForm.tsx:315
|
||||||
msgid "or"
|
msgid "or"
|
||||||
msgstr "o"
|
msgstr "o"
|
||||||
|
|
||||||
@@ -1347,14 +1327,6 @@ msgstr "Tiempo parcial"
|
|||||||
msgid "Password Changed"
|
msgid "Password Changed"
|
||||||
msgstr "Contraseña cambiada"
|
msgstr "Contraseña cambiada"
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:255
|
|
||||||
msgid "Password is required to login."
|
|
||||||
msgstr "Se requiere contraseña para iniciar sesión."
|
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:254
|
|
||||||
msgid "Password is required to sign up."
|
|
||||||
msgstr "Se requiere contraseña para registrarse."
|
|
||||||
|
|
||||||
#: src/views/settings/components/ChangePasswordConfirmation.tsx:22
|
#: src/views/settings/components/ChangePasswordConfirmation.tsx:22
|
||||||
msgid "Password must be at least 8 characters"
|
msgid "Password must be at least 8 characters"
|
||||||
msgstr "La contraseña debe tener al menos 8 caracteres"
|
msgstr "La contraseña debe tener al menos 8 caracteres"
|
||||||
@@ -1363,7 +1335,7 @@ 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/members/index.tsx:135
|
#: src/views/members/index.tsx:134
|
||||||
msgid "Paused"
|
msgid "Paused"
|
||||||
msgstr "Pausado"
|
msgstr "Pausado"
|
||||||
|
|
||||||
@@ -1371,7 +1343,7 @@ msgstr "Pausado"
|
|||||||
msgid "Payment frequency"
|
msgid "Payment frequency"
|
||||||
msgstr "Frecuencia de pago"
|
msgstr "Frecuencia de pago"
|
||||||
|
|
||||||
#: src/views/members/index.tsx:135
|
#: src/views/members/index.tsx:134
|
||||||
msgid "Pending"
|
msgid "Pending"
|
||||||
msgstr "Pendiente"
|
msgstr "Pendiente"
|
||||||
|
|
||||||
@@ -1392,15 +1364,15 @@ msgstr "Planificación"
|
|||||||
msgid "Please confirm your new password"
|
msgid "Please confirm your new password"
|
||||||
msgstr "Por favor, confirma tu nueva contraseña"
|
msgstr "Por favor, confirma tu nueva contraseña"
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:388
|
#: src/components/AuthForm.tsx:341
|
||||||
msgid "Please enter a valid email address"
|
msgid "Please enter a valid email address"
|
||||||
msgstr "Por favor, introduce una dirección de correo electrónico válida"
|
msgstr "Por favor, introduce una dirección de correo electrónico válida"
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:376
|
#: src/components/AuthForm.tsx:329
|
||||||
msgid "Please enter a valid name"
|
msgid "Please enter a valid name"
|
||||||
msgstr "Por favor, introduce un nombre válido"
|
msgstr "Por favor, introduce un nombre válido"
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:401
|
#: src/components/AuthForm.tsx:354
|
||||||
msgid "Please enter a valid password"
|
msgid "Please enter a valid password"
|
||||||
msgstr "Por favor, introduce una contraseña válida"
|
msgstr "Por favor, introduce una contraseña válida"
|
||||||
|
|
||||||
@@ -1433,8 +1405,8 @@ msgstr "Por favor selecciona un archivo para subir."
|
|||||||
#: src/views/card/components/NewCommentForm.tsx:31
|
#: src/views/card/components/NewCommentForm.tsx:31
|
||||||
#: src/views/card/index.tsx:173
|
#: src/views/card/index.tsx:173
|
||||||
#: src/views/members/components/DeleteMemberConfirmation.tsx:28
|
#: src/views/members/components/DeleteMemberConfirmation.tsx:28
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:104
|
#: src/views/members/components/InviteMemberForm.tsx:102
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:234
|
#: src/views/members/components/InviteMemberForm.tsx:222
|
||||||
#: src/views/settings/components/Avatar.tsx:78
|
#: src/views/settings/components/Avatar.tsx:78
|
||||||
#: src/views/settings/components/Avatar.tsx:219
|
#: src/views/settings/components/Avatar.tsx:219
|
||||||
#: src/views/settings/components/DeleteAccountConfirmation.tsx:40
|
#: src/views/settings/components/DeleteAccountConfirmation.tsx:40
|
||||||
@@ -1447,8 +1419,8 @@ msgstr "Por favor selecciona un archivo para subir."
|
|||||||
msgid "Please try again later, or contact customer support."
|
msgid "Please try again later, or contact customer support."
|
||||||
msgstr "Por favor, inténtalo de nuevo más tarde o contacta con atención al cliente."
|
msgstr "Por favor, inténtalo de nuevo más tarde o contacta con atención al cliente."
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:129
|
#: src/views/members/components/InviteMemberForm.tsx:118
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:145
|
#: src/views/members/components/InviteMemberForm.tsx:133
|
||||||
msgid "Please try again later."
|
msgid "Please try again later."
|
||||||
msgstr "Por favor, inténtalo de nuevo más tarde."
|
msgstr "Por favor, inténtalo de nuevo más tarde."
|
||||||
|
|
||||||
@@ -1471,11 +1443,11 @@ msgstr "Política de privacidad"
|
|||||||
msgid "Private"
|
msgid "Private"
|
||||||
msgstr "Privado"
|
msgstr "Privado"
|
||||||
|
|
||||||
#: src/views/members/index.tsx:206
|
#: src/views/members/index.tsx:205
|
||||||
msgid "Pro Plan"
|
msgid "Pro Plan"
|
||||||
msgstr "Plan Pro"
|
msgstr "Plan Pro"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:315
|
#: src/views/members/components/InviteMemberForm.tsx:301
|
||||||
msgid "Pro Plan ∞"
|
msgid "Pro Plan ∞"
|
||||||
msgstr "Plan Pro ∞"
|
msgstr "Plan Pro ∞"
|
||||||
|
|
||||||
@@ -1519,7 +1491,7 @@ msgstr "Remoto"
|
|||||||
msgid "Remove"
|
msgid "Remove"
|
||||||
msgstr "Eliminar"
|
msgstr "Eliminar"
|
||||||
|
|
||||||
#: src/views/members/index.tsx:149
|
#: src/views/members/index.tsx:148
|
||||||
msgid "Remove member"
|
msgid "Remove member"
|
||||||
msgstr "Eliminar miembro"
|
msgstr "Eliminar miembro"
|
||||||
|
|
||||||
@@ -1571,7 +1543,7 @@ msgstr "Revisión"
|
|||||||
msgid "Roadmap"
|
msgid "Roadmap"
|
||||||
msgstr "Hoja de ruta"
|
msgstr "Hoja de ruta"
|
||||||
|
|
||||||
#: src/views/members/index.tsx:244
|
#: src/views/members/index.tsx:243
|
||||||
msgid "Role"
|
msgid "Role"
|
||||||
msgstr "Rol"
|
msgstr "Rol"
|
||||||
|
|
||||||
@@ -1592,10 +1564,6 @@ msgstr "Ahorra tiempo con plantillas de tableros reutilizables."
|
|||||||
msgid "Screening"
|
msgid "Screening"
|
||||||
msgstr "Preselección"
|
msgstr "Preselección"
|
||||||
|
|
||||||
#: src/components/CommandPallette.tsx:104
|
|
||||||
msgid "Search boards and cards..."
|
|
||||||
msgstr "Buscar tableros y tarjetas..."
|
|
||||||
|
|
||||||
#: src/views/boards/components/ImportBoardsForm.tsx:274
|
#: src/views/boards/components/ImportBoardsForm.tsx:274
|
||||||
msgid "Select all"
|
msgid "Select all"
|
||||||
msgstr "Seleccionar todo"
|
msgstr "Seleccionar todo"
|
||||||
@@ -1649,6 +1617,10 @@ msgstr "Configuración | Integraciones"
|
|||||||
msgid "Settings | Workspace"
|
msgid "Settings | Workspace"
|
||||||
msgstr "Configuración | Espacio de trabajo"
|
msgstr "Configuración | Espacio de trabajo"
|
||||||
|
|
||||||
|
#: src/views/members/components/InviteMemberForm.tsx:327
|
||||||
|
msgid "Share invite link"
|
||||||
|
msgstr "Compartir enlace de invitación"
|
||||||
|
|
||||||
#: src/views/home/components/Header.tsx:100
|
#: src/views/home/components/Header.tsx:100
|
||||||
#: src/views/home/components/Header.tsx:138
|
#: src/views/home/components/Header.tsx:138
|
||||||
msgid "Sign in"
|
msgid "Sign in"
|
||||||
@@ -1675,7 +1647,7 @@ msgstr "Registro deshabilitado"
|
|||||||
msgid "Sign up is currently disabled. Please try again later."
|
msgid "Sign up is currently disabled. Please try again later."
|
||||||
msgstr "El registro está actualmente deshabilitado. Por favor, inténtalo de nuevo más tarde."
|
msgstr "El registro está actualmente deshabilitado. Por favor, inténtalo de nuevo más tarde."
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:417
|
#: src/components/AuthForm.tsx:370
|
||||||
msgid "Sign up with "
|
msgid "Sign up with "
|
||||||
msgstr "Registrarse con "
|
msgstr "Registrarse con "
|
||||||
|
|
||||||
@@ -1699,12 +1671,8 @@ msgstr "Desarrollo de software"
|
|||||||
msgid "Star on Github"
|
msgid "Star on Github"
|
||||||
msgstr "Estrella en Github"
|
msgstr "Estrella en Github"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:122
|
#: src/components/AuthForm.tsx:207
|
||||||
msgid "Subscription Required"
|
#: src/components/AuthForm.tsx:224
|
||||||
msgstr "Suscripción requerida"
|
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:212
|
|
||||||
#: src/components/AuthForm.tsx:229
|
|
||||||
msgid "Success"
|
msgid "Success"
|
||||||
msgstr "Éxito"
|
msgstr "Éxito"
|
||||||
|
|
||||||
@@ -1724,8 +1692,8 @@ msgstr "Apoya el desarrollo del proyecto"
|
|||||||
msgid "System"
|
msgid "System"
|
||||||
msgstr "Sistema"
|
msgstr "Sistema"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:315
|
#: src/views/members/components/InviteMemberForm.tsx:301
|
||||||
#: src/views/members/index.tsx:208
|
#: src/views/members/index.tsx:207
|
||||||
msgid "Team Plan"
|
msgid "Team Plan"
|
||||||
msgstr "Plan de Equipo"
|
msgstr "Plan de Equipo"
|
||||||
|
|
||||||
@@ -2008,7 +1976,7 @@ msgstr "Actualizar a Pro"
|
|||||||
msgid "Upgrade to Pro ($29/month)"
|
msgid "Upgrade to Pro ($29/month)"
|
||||||
msgstr "Actualizar a Pro ($29/mes)"
|
msgstr "Actualizar a Pro ($29/mes)"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:357
|
#: src/views/members/components/InviteMemberForm.tsx:341
|
||||||
msgid "Upgrade to Team Plan"
|
msgid "Upgrade to Team Plan"
|
||||||
msgstr "Actualizar al Plan de Equipo"
|
msgstr "Actualizar al Plan de Equipo"
|
||||||
|
|
||||||
@@ -2036,11 +2004,11 @@ 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:238
|
#: src/views/members/index.tsx:237
|
||||||
msgid "User"
|
msgid "User"
|
||||||
msgstr "Usuario"
|
msgstr "Usuario"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:98
|
#: src/views/members/components/InviteMemberForm.tsx:96
|
||||||
msgid "User is already a member of this workspace"
|
msgid "User is already a member of this workspace"
|
||||||
msgstr "El usuario ya es miembro de este espacio de trabajo"
|
msgstr "El usuario ya es miembro de este espacio de trabajo"
|
||||||
|
|
||||||
@@ -2199,15 +2167,15 @@ msgstr "Puedes invitar a miembros del equipo haciendo clic en el botón \"Invita
|
|||||||
msgid "You can self-host by following the instructions in our <0>repo</0>."
|
msgid "You can self-host by following the instructions in our <0>repo</0>."
|
||||||
msgstr "Puedes autoalojar siguiendo las instrucciones en nuestro <0>repositorio</0>."
|
msgstr "Puedes autoalojar siguiendo las instrucciones en nuestro <0>repositorio</0>."
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:230
|
#: src/components/AuthForm.tsx:225
|
||||||
msgid "You have been logged in successfully."
|
msgid "You have been logged in successfully."
|
||||||
msgstr "Has iniciado sesión correctamente."
|
msgstr "Has iniciado sesión correctamente."
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:213
|
#: src/components/AuthForm.tsx:208
|
||||||
msgid "You have been signed up successfully."
|
msgid "You have been signed up successfully."
|
||||||
msgstr "Te has registrado correctamente."
|
msgstr "Te has registrado correctamente."
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:319
|
#: src/views/members/components/InviteMemberForm.tsx:305
|
||||||
msgid "You have unlimited seats with your Pro Plan. There is no additional charge for new members!"
|
msgid "You have unlimited seats with your Pro Plan. There is no additional charge for new members!"
|
||||||
msgstr "Tienes plazas ilimitadas con tu Plan Pro. ¡No hay cargos adicionales por nuevos miembros!"
|
msgstr "Tienes plazas ilimitadas con tu Plan Pro. ¡No hay cargos adicionales por nuevos miembros!"
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -36,12 +36,12 @@ msgstr "{0} étiquettes"
|
|||||||
msgid "{boardCount, plural, one {Import board (1)} other {Import boards ({boardCount})}}"
|
msgid "{boardCount, plural, one {Import board (1)} other {Import boards ({boardCount})}}"
|
||||||
msgstr "{boardCount, plural, one {Importer le tableau (1)} other {Importer les tableaux ({boardCount})}}"
|
msgstr "{boardCount, plural, one {Importer le tableau (1)} other {Importer les tableaux ({boardCount})}}"
|
||||||
|
|
||||||
|
#: src/views/members/components/InviteMemberForm.tsx:146
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:158
|
#: src/views/members/components/InviteMemberForm.tsx:158
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:170
|
|
||||||
msgid "$10/month"
|
msgid "$10/month"
|
||||||
msgstr "10 $/mois"
|
msgstr "10 $/mois"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:170
|
#: src/views/members/components/InviteMemberForm.tsx:158
|
||||||
msgid "$8/month"
|
msgid "$8/month"
|
||||||
msgstr "8 $/mois"
|
msgstr "8 $/mois"
|
||||||
|
|
||||||
@@ -101,7 +101,7 @@ msgid "Add label"
|
|||||||
msgstr "Ajouter une étiquette"
|
msgstr "Ajouter une étiquette"
|
||||||
|
|
||||||
#: src/views/card/components/MemberSelector.tsx:130
|
#: src/views/card/components/MemberSelector.tsx:130
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:250
|
#: src/views/members/components/InviteMemberForm.tsx:238
|
||||||
msgid "Add member"
|
msgid "Add member"
|
||||||
msgstr "Ajouter un membre"
|
msgstr "Ajouter un membre"
|
||||||
|
|
||||||
@@ -136,7 +136,7 @@ msgstr "a ajouté l'élément <0>{0}</0> à la checklist"
|
|||||||
msgid "added label <0>{0}</0>"
|
msgid "added label <0>{0}</0>"
|
||||||
msgstr "a ajouté l'étiquette <0>{0}</0>"
|
msgstr "a ajouté l'étiquette <0>{0}</0>"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:320
|
#: src/views/members/components/InviteMemberForm.tsx:306
|
||||||
msgid "Adding a new member will cost an additional {price} ({billingType}) per seat."
|
msgid "Adding a new member will cost an additional {price} ({billingType}) per seat."
|
||||||
msgstr "L'ajout d'un nouveau membre coûtera {price} supplémentaires ({billingType}) par siège."
|
msgstr "L'ajout d'un nouveau membre coûtera {price} supplémentaires ({billingType}) par siège."
|
||||||
|
|
||||||
@@ -164,7 +164,7 @@ msgstr "Une erreur s'est produite lors de la déconnexion de votre compte Trello
|
|||||||
msgid "An unexpected error occurred. Please try again later."
|
msgid "An unexpected error occurred. Please try again later."
|
||||||
msgstr "Une erreur inattendue s'est produite. Veuillez réessayer plus tard."
|
msgstr "Une erreur inattendue s'est produite. Veuillez réessayer plus tard."
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:304
|
#: src/views/members/components/InviteMemberForm.tsx:290
|
||||||
msgid "Anyone with this link can join your workspace"
|
msgid "Anyone with this link can join your workspace"
|
||||||
msgstr "Toute personne disposant de ce lien peut rejoindre votre espace de travail"
|
msgstr "Toute personne disposant de ce lien peut rejoindre votre espace de travail"
|
||||||
|
|
||||||
@@ -250,11 +250,11 @@ msgstr "Backlog"
|
|||||||
msgid "Basic Kanban"
|
msgid "Basic Kanban"
|
||||||
msgstr "Kanban basique"
|
msgstr "Kanban basique"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:171
|
#: src/views/members/components/InviteMemberForm.tsx:159
|
||||||
msgid "billed annually"
|
msgid "billed annually"
|
||||||
msgstr "facturation annuelle"
|
msgstr "facturation annuelle"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:171
|
#: src/views/members/components/InviteMemberForm.tsx:159
|
||||||
msgid "billed monthly"
|
msgid "billed monthly"
|
||||||
msgstr "facturation mensuelle"
|
msgstr "facturation mensuelle"
|
||||||
|
|
||||||
@@ -463,12 +463,12 @@ msgstr "Contactez-nous"
|
|||||||
msgid "Content Creation"
|
msgid "Content Creation"
|
||||||
msgstr "Création de contenu"
|
msgstr "Création de contenu"
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:417
|
#: src/components/AuthForm.tsx:370
|
||||||
msgid "Continue with "
|
msgid "Continue with "
|
||||||
msgstr "Continuer avec "
|
msgstr "Continuer avec "
|
||||||
|
|
||||||
#. placeholder {0}: key === "oidc" ? oidcProviderName : provider.name
|
#. placeholder {0}: key === "oidc" ? oidcProviderName : provider.name
|
||||||
#: src/components/AuthForm.tsx:348
|
#: src/components/AuthForm.tsx:301
|
||||||
msgid "Continue with {0}"
|
msgid "Continue with {0}"
|
||||||
msgstr "Continuer avec {0}"
|
msgstr "Continuer avec {0}"
|
||||||
|
|
||||||
@@ -498,10 +498,6 @@ msgstr "Créer une carte"
|
|||||||
msgid "Create checklist"
|
msgid "Create checklist"
|
||||||
msgstr "Créer une checklist"
|
msgstr "Créer une checklist"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:342
|
|
||||||
msgid "Create invite link"
|
|
||||||
msgstr "Créer un lien d'invitation"
|
|
||||||
|
|
||||||
#: src/components/LabelForm.tsx:238
|
#: src/components/LabelForm.tsx:238
|
||||||
msgid "Create label"
|
msgid "Create label"
|
||||||
msgstr "Créer une étiquette"
|
msgstr "Créer une étiquette"
|
||||||
@@ -528,7 +524,7 @@ msgid "Create new list"
|
|||||||
msgstr "Créer une nouvelle liste"
|
msgstr "Créer une nouvelle liste"
|
||||||
|
|
||||||
#: src/components/NewWorkspaceForm.tsx:384
|
#: src/components/NewWorkspaceForm.tsx:384
|
||||||
#: src/components/WorkspaceMenu.tsx:149
|
#: 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"
|
||||||
|
|
||||||
@@ -569,10 +565,6 @@ msgstr "Support client"
|
|||||||
msgid "Dark"
|
msgid "Dark"
|
||||||
msgstr "Sombre"
|
msgstr "Sombre"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:341
|
|
||||||
msgid "Deactivate invite link"
|
|
||||||
msgstr "Désactiver le lien d'invitation"
|
|
||||||
|
|
||||||
#: src/components/DeleteLabelConfirmation.tsx:51
|
#: src/components/DeleteLabelConfirmation.tsx:51
|
||||||
#: src/components/LabelForm.tsx:228
|
#: src/components/LabelForm.tsx:228
|
||||||
#: src/views/card/components/DeleteCardConfirmation.tsx:92
|
#: src/views/card/components/DeleteCardConfirmation.tsx:92
|
||||||
@@ -705,11 +697,11 @@ msgstr "Modifier l'URL de l'espace de travail"
|
|||||||
msgid "Editing"
|
msgid "Editing"
|
||||||
msgstr "Édition"
|
msgstr "Édition"
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:418
|
#: src/components/AuthForm.tsx:372
|
||||||
msgid "email"
|
msgid "email"
|
||||||
msgstr "e-mail"
|
msgstr "e-mail"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:265
|
#: src/views/members/components/InviteMemberForm.tsx:252
|
||||||
msgid "Email"
|
msgid "Email"
|
||||||
msgstr "E-mail"
|
msgstr "E-mail"
|
||||||
|
|
||||||
@@ -725,11 +717,11 @@ msgstr "Saisissez votre mot de passe actuel"
|
|||||||
msgid "Enter your current password and choose a new secure password."
|
msgid "Enter your current password and choose a new secure password."
|
||||||
msgstr "Saisissez votre mot de passe actuel et choisissez un nouveau mot de passe sécurisé."
|
msgstr "Saisissez votre mot de passe actuel et choisissez un nouveau mot de passe sécurisé."
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:384
|
#: src/components/AuthForm.tsx:337
|
||||||
msgid "Enter your email address"
|
msgid "Enter your email address"
|
||||||
msgstr "Saisissez votre adresse e-mail"
|
msgstr "Saisissez votre adresse e-mail"
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:372
|
#: src/components/AuthForm.tsx:325
|
||||||
msgid "Enter your name"
|
msgid "Enter your name"
|
||||||
msgstr "Saisissez votre nom"
|
msgstr "Saisissez votre nom"
|
||||||
|
|
||||||
@@ -737,11 +729,11 @@ msgstr "Saisissez votre nom"
|
|||||||
msgid "Enter your new password"
|
msgid "Enter your new password"
|
||||||
msgstr "Saisissez votre nouveau mot de passe"
|
msgstr "Saisissez votre nouveau mot de passe"
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:397
|
#: src/components/AuthForm.tsx:350
|
||||||
msgid "Enter your password"
|
msgid "Enter your password"
|
||||||
msgstr "Saisissez votre mot de passe"
|
msgstr "Saisissez votre mot de passe"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:208
|
#: src/views/members/components/InviteMemberForm.tsx:196
|
||||||
msgid "Error"
|
msgid "Error"
|
||||||
msgstr "Erreur"
|
msgstr "Erreur"
|
||||||
|
|
||||||
@@ -749,11 +741,11 @@ msgstr "Erreur"
|
|||||||
msgid "Error Changing Password"
|
msgid "Error Changing Password"
|
||||||
msgstr "Erreur lors du changement de mot de passe"
|
msgstr "Erreur lors du changement de mot de passe"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:128
|
#: src/views/members/components/InviteMemberForm.tsx:117
|
||||||
msgid "Error creating invite link"
|
msgid "Error creating invite link"
|
||||||
msgstr "Erreur lors de la création du lien d'invitation"
|
msgstr "Erreur lors de la création du lien d'invitation"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:144
|
#: src/views/members/components/InviteMemberForm.tsx:132
|
||||||
msgid "Error deactivating invite link"
|
msgid "Error deactivating invite link"
|
||||||
msgstr "Erreur lors de la désactivation du lien d'invitation"
|
msgstr "Erreur lors de la désactivation du lien d'invitation"
|
||||||
|
|
||||||
@@ -773,8 +765,8 @@ msgstr "Erreur lors de la suppression de l'espace de travail"
|
|||||||
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"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:97
|
#: src/views/members/components/InviteMemberForm.tsx:95
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:103
|
#: src/views/members/components/InviteMemberForm.tsx:101
|
||||||
msgid "Error inviting member"
|
msgid "Error inviting member"
|
||||||
msgstr "Erreur lors de l'invitation du membre"
|
msgstr "Erreur lors de l'invitation du membre"
|
||||||
|
|
||||||
@@ -798,7 +790,7 @@ msgstr "Erreur lors de la mise à jour du nom de l'espace de travail"
|
|||||||
msgid "Error updating workspace URL"
|
msgid "Error updating workspace URL"
|
||||||
msgstr "Erreur lors de la mise à jour de l'URL de l'espace de travail"
|
msgstr "Erreur lors de la mise à jour de l'URL de l'espace de travail"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:233
|
#: src/views/members/components/InviteMemberForm.tsx:221
|
||||||
#: src/views/settings/components/UpgradeToProConfirmation.tsx:41
|
#: src/views/settings/components/UpgradeToProConfirmation.tsx:41
|
||||||
msgid "Error upgrading subscription"
|
msgid "Error upgrading subscription"
|
||||||
msgstr "Erreur lors de la mise à niveau de l'abonnement"
|
msgstr "Erreur lors de la mise à niveau de l'abonnement"
|
||||||
@@ -828,12 +820,12 @@ msgstr "Exécution"
|
|||||||
msgid "Failed to accept invitation. Please try again later, or contact customer support."
|
msgid "Failed to accept invitation. Please try again later, or contact customer support."
|
||||||
msgstr "Échec de l'acceptation de l'invitation. Veuillez réessayer plus tard ou contacter le service client."
|
msgstr "Échec de l'acceptation de l'invitation. Veuillez réessayer plus tard ou contacter le service client."
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:209
|
#: src/views/members/components/InviteMemberForm.tsx:197
|
||||||
msgid "Failed to copy invite link"
|
msgid "Failed to copy invite link"
|
||||||
msgstr "Échec de la copie du lien d'invitation"
|
msgstr "Échec de la copie du lien d'invitation"
|
||||||
|
|
||||||
#. placeholder {0}: provider.at(0)?.toUpperCase() + provider.slice(1)
|
#. placeholder {0}: provider.at(0)?.toUpperCase() + provider.slice(1)
|
||||||
#: src/components/AuthForm.tsx:288
|
#: src/components/AuthForm.tsx:273
|
||||||
msgid "Failed to login with {0}. Please try again."
|
msgid "Failed to login with {0}. Please try again."
|
||||||
msgstr "Échec de connexion avec {0}. Veuillez réessayer."
|
msgstr "Échec de connexion avec {0}. Veuillez réessayer."
|
||||||
|
|
||||||
@@ -881,8 +873,8 @@ msgstr "Pour une durabilité à long terme, nous reconnaissons que tous les bons
|
|||||||
msgid "Free"
|
msgid "Free"
|
||||||
msgstr "Gratuit"
|
msgstr "Gratuit"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:326
|
#: src/views/members/components/InviteMemberForm.tsx:312
|
||||||
#: src/views/members/index.tsx:209
|
#: src/views/members/index.tsx:208
|
||||||
msgid "Free Plan"
|
msgid "Free Plan"
|
||||||
msgstr "Forfait gratuit"
|
msgstr "Forfait gratuit"
|
||||||
|
|
||||||
@@ -1024,10 +1016,6 @@ msgstr "Importation depuis Trello"
|
|||||||
msgid "Importing your Trello boards into Kan is easy. You can follow our step-by-step guide <0>here</0>."
|
msgid "Importing your Trello boards into Kan is easy. You can follow our step-by-step guide <0>here</0>."
|
||||||
msgstr "L'importation de vos tableaux Trello dans Kan est simple. Vous pouvez suivre notre guide étape par étape <0>ici</0>."
|
msgstr "L'importation de vos tableaux Trello dans Kan est simple. Vous pouvez suivre notre guide étape par étape <0>ici</0>."
|
||||||
|
|
||||||
#: src/components/CommandPallette.tsx:168
|
|
||||||
msgid "in"
|
|
||||||
msgstr "dans"
|
|
||||||
|
|
||||||
#: src/views/boards/components/TemplateBoards.tsx:16
|
#: src/views/boards/components/TemplateBoards.tsx:16
|
||||||
#: src/views/boards/components/TemplateBoards.tsx:22
|
#: src/views/boards/components/TemplateBoards.tsx:22
|
||||||
#: src/views/boards/components/TemplateBoards.tsx:45
|
#: src/views/boards/components/TemplateBoards.tsx:45
|
||||||
@@ -1047,36 +1035,32 @@ msgstr "Intégrations"
|
|||||||
msgid "Interviewing"
|
msgid "Interviewing"
|
||||||
msgstr "Entretien"
|
msgstr "Entretien"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:51
|
#: src/views/members/components/InviteMemberForm.tsx:49
|
||||||
msgid "Invalid email address"
|
msgid "Invalid email address"
|
||||||
msgstr "Adresse e-mail invalide"
|
msgstr "Adresse e-mail invalide"
|
||||||
|
|
||||||
#: src/views/invite/index.tsx:105
|
#: src/views/invite/index.tsx:105
|
||||||
msgid "Invalid invitation"
|
msgid "Invalid invitation"
|
||||||
msgstr "Invitation invalide"
|
msgstr "Invitation non valide"
|
||||||
|
|
||||||
#: src/views/members/index.tsx:222
|
#: src/views/members/index.tsx:221
|
||||||
msgid "Invite"
|
msgid "Invite"
|
||||||
msgstr "Inviter"
|
msgstr "Inviter"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:202
|
#: src/views/members/components/InviteMemberForm.tsx:190
|
||||||
msgid "Invite link copied"
|
msgid "Invite link copied"
|
||||||
msgstr "Lien d'invitation copié"
|
msgstr "Lien d'invitation copié"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:203
|
#: src/views/members/components/InviteMemberForm.tsx:191
|
||||||
msgid "Invite link copied to clipboard"
|
msgid "Invite link copied to clipboard"
|
||||||
msgstr "Lien d'invitation copié dans le presse-papiers"
|
msgstr "Lien d'invitation copié dans le presse-papiers"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:123
|
|
||||||
msgid "Invite links require a Team or Pro subscription. Please upgrade your workspace."
|
|
||||||
msgstr "Les liens d'invitation nécessitent un abonnement Team ou Pro. Veuillez mettre à niveau votre espace de travail."
|
|
||||||
|
|
||||||
#: src/views/card/components/MemberSelector.tsx:111
|
#: src/views/card/components/MemberSelector.tsx:111
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:365
|
#: src/views/members/components/InviteMemberForm.tsx:350
|
||||||
msgid "Invite member"
|
msgid "Invite member"
|
||||||
msgstr "Inviter un membre"
|
msgstr "Inviter un membre"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:329
|
#: src/views/members/components/InviteMemberForm.tsx:315
|
||||||
msgid "Inviting members requires a Team Plan. You'll be redirected to upgrade your workspace."
|
msgid "Inviting members requires a Team Plan. You'll be redirected to upgrade your workspace."
|
||||||
msgstr "L'invitation de membres nécessite un forfait d'équipe. Vous serez redirigé pour mettre à niveau votre espace de travail."
|
msgstr "L'invitation de membres nécessite un forfait d'équipe. Vous serez redirigé pour mettre à niveau votre espace de travail."
|
||||||
|
|
||||||
@@ -1125,7 +1109,7 @@ msgstr "Langue"
|
|||||||
msgid "Launch offer"
|
msgid "Launch offer"
|
||||||
msgstr "Offre de lancement"
|
msgstr "Offre de lancement"
|
||||||
|
|
||||||
#: src/views/members/index.tsx:192
|
#: src/views/members/index.tsx:191
|
||||||
msgid "Launch offer: Get unlimited members with Pro"
|
msgid "Launch offer: Get unlimited members with Pro"
|
||||||
msgstr "Offre de lancement : obtenez des membres illimités avec Pro"
|
msgstr "Offre de lancement : obtenez des membres illimités avec Pro"
|
||||||
|
|
||||||
@@ -1177,7 +1161,7 @@ msgstr "Long terme"
|
|||||||
msgid "Low Priority"
|
msgid "Low Priority"
|
||||||
msgstr "Priorité basse"
|
msgstr "Priorité basse"
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:418
|
#: src/components/AuthForm.tsx:373
|
||||||
msgid "magic link"
|
msgid "magic link"
|
||||||
msgstr "lien magique"
|
msgstr "lien magique"
|
||||||
|
|
||||||
@@ -1198,12 +1182,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:179
|
#: 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:174
|
#: src/views/members/index.tsx:173
|
||||||
msgid "Members | {0}"
|
msgid "Members | {0}"
|
||||||
msgstr "Membres | {0}"
|
msgstr "Membres | {0}"
|
||||||
|
|
||||||
@@ -1211,7 +1195,7 @@ msgstr "Membres | {0}"
|
|||||||
msgid "Monthly"
|
msgid "Monthly"
|
||||||
msgstr "Mensuel"
|
msgstr "Mensuel"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:159
|
#: src/views/members/components/InviteMemberForm.tsx:147
|
||||||
msgid "monthly billing"
|
msgid "monthly billing"
|
||||||
msgstr "facturation mensuelle"
|
msgstr "facturation mensuelle"
|
||||||
|
|
||||||
@@ -1307,10 +1291,6 @@ msgstr "Aucune carte de crédit requise"
|
|||||||
msgid "No lists"
|
msgid "No lists"
|
||||||
msgstr "Aucune liste"
|
msgstr "Aucune liste"
|
||||||
|
|
||||||
#: src/components/CommandPallette.tsx:184
|
|
||||||
msgid "No results found for \"{debouncedQuery}\"."
|
|
||||||
msgstr "Aucun résultat trouvé pour \"{debouncedQuery}\"."
|
|
||||||
|
|
||||||
#: src/views/boards/components/TemplateBoards.tsx:65
|
#: src/views/boards/components/TemplateBoards.tsx:65
|
||||||
msgid "Offer"
|
msgid "Offer"
|
||||||
msgstr "Offre"
|
msgstr "Offre"
|
||||||
@@ -1327,7 +1307,7 @@ msgstr "Une fois que vous supprimez votre compte, il n'y a pas de retour possibl
|
|||||||
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."
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:362
|
#: src/components/AuthForm.tsx:315
|
||||||
msgid "or"
|
msgid "or"
|
||||||
msgstr "ou"
|
msgstr "ou"
|
||||||
|
|
||||||
@@ -1347,14 +1327,6 @@ msgstr "Temps partiel"
|
|||||||
msgid "Password Changed"
|
msgid "Password Changed"
|
||||||
msgstr "Mot de passe modifié"
|
msgstr "Mot de passe modifié"
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:255
|
|
||||||
msgid "Password is required to login."
|
|
||||||
msgstr "Le mot de passe est requis pour se connecter."
|
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:254
|
|
||||||
msgid "Password is required to sign up."
|
|
||||||
msgstr "Le mot de passe est requis pour s'inscrire."
|
|
||||||
|
|
||||||
#: src/views/settings/components/ChangePasswordConfirmation.tsx:22
|
#: src/views/settings/components/ChangePasswordConfirmation.tsx:22
|
||||||
msgid "Password must be at least 8 characters"
|
msgid "Password must be at least 8 characters"
|
||||||
msgstr "Le mot de passe doit comporter au moins 8 caractères"
|
msgstr "Le mot de passe doit comporter au moins 8 caractères"
|
||||||
@@ -1363,7 +1335,7 @@ 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/members/index.tsx:135
|
#: src/views/members/index.tsx:134
|
||||||
msgid "Paused"
|
msgid "Paused"
|
||||||
msgstr "En pause"
|
msgstr "En pause"
|
||||||
|
|
||||||
@@ -1371,7 +1343,7 @@ msgstr "En pause"
|
|||||||
msgid "Payment frequency"
|
msgid "Payment frequency"
|
||||||
msgstr "Fréquence de paiement"
|
msgstr "Fréquence de paiement"
|
||||||
|
|
||||||
#: src/views/members/index.tsx:135
|
#: src/views/members/index.tsx:134
|
||||||
msgid "Pending"
|
msgid "Pending"
|
||||||
msgstr "En attente"
|
msgstr "En attente"
|
||||||
|
|
||||||
@@ -1392,15 +1364,15 @@ msgstr "Planification"
|
|||||||
msgid "Please confirm your new password"
|
msgid "Please confirm your new password"
|
||||||
msgstr "Veuillez confirmer votre nouveau mot de passe"
|
msgstr "Veuillez confirmer votre nouveau mot de passe"
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:388
|
#: src/components/AuthForm.tsx:341
|
||||||
msgid "Please enter a valid email address"
|
msgid "Please enter a valid email address"
|
||||||
msgstr "Veuillez saisir une adresse e-mail valide"
|
msgstr "Veuillez saisir une adresse e-mail valide"
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:376
|
#: src/components/AuthForm.tsx:329
|
||||||
msgid "Please enter a valid name"
|
msgid "Please enter a valid name"
|
||||||
msgstr "Veuillez saisir un nom valide"
|
msgstr "Veuillez saisir un nom valide"
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:401
|
#: src/components/AuthForm.tsx:354
|
||||||
msgid "Please enter a valid password"
|
msgid "Please enter a valid password"
|
||||||
msgstr "Veuillez saisir un mot de passe valide"
|
msgstr "Veuillez saisir un mot de passe valide"
|
||||||
|
|
||||||
@@ -1433,8 +1405,8 @@ msgstr "Veuillez sélectionner un fichier à télécharger."
|
|||||||
#: src/views/card/components/NewCommentForm.tsx:31
|
#: src/views/card/components/NewCommentForm.tsx:31
|
||||||
#: src/views/card/index.tsx:173
|
#: src/views/card/index.tsx:173
|
||||||
#: src/views/members/components/DeleteMemberConfirmation.tsx:28
|
#: src/views/members/components/DeleteMemberConfirmation.tsx:28
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:104
|
#: src/views/members/components/InviteMemberForm.tsx:102
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:234
|
#: src/views/members/components/InviteMemberForm.tsx:222
|
||||||
#: src/views/settings/components/Avatar.tsx:78
|
#: src/views/settings/components/Avatar.tsx:78
|
||||||
#: src/views/settings/components/Avatar.tsx:219
|
#: src/views/settings/components/Avatar.tsx:219
|
||||||
#: src/views/settings/components/DeleteAccountConfirmation.tsx:40
|
#: src/views/settings/components/DeleteAccountConfirmation.tsx:40
|
||||||
@@ -1447,8 +1419,8 @@ msgstr "Veuillez sélectionner un fichier à télécharger."
|
|||||||
msgid "Please try again later, or contact customer support."
|
msgid "Please try again later, or contact customer support."
|
||||||
msgstr "Veuillez réessayer plus tard ou contacter le service client."
|
msgstr "Veuillez réessayer plus tard ou contacter le service client."
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:129
|
#: src/views/members/components/InviteMemberForm.tsx:118
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:145
|
#: src/views/members/components/InviteMemberForm.tsx:133
|
||||||
msgid "Please try again later."
|
msgid "Please try again later."
|
||||||
msgstr "Veuillez réessayer plus tard."
|
msgstr "Veuillez réessayer plus tard."
|
||||||
|
|
||||||
@@ -1471,11 +1443,11 @@ msgstr "Politique de confidentialité"
|
|||||||
msgid "Private"
|
msgid "Private"
|
||||||
msgstr "Privé"
|
msgstr "Privé"
|
||||||
|
|
||||||
#: src/views/members/index.tsx:206
|
#: src/views/members/index.tsx:205
|
||||||
msgid "Pro Plan"
|
msgid "Pro Plan"
|
||||||
msgstr "Plan Pro"
|
msgstr "Plan Pro"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:315
|
#: src/views/members/components/InviteMemberForm.tsx:301
|
||||||
msgid "Pro Plan ∞"
|
msgid "Pro Plan ∞"
|
||||||
msgstr "Plan Pro ∞"
|
msgstr "Plan Pro ∞"
|
||||||
|
|
||||||
@@ -1519,7 +1491,7 @@ msgstr "À distance"
|
|||||||
msgid "Remove"
|
msgid "Remove"
|
||||||
msgstr "Supprimer"
|
msgstr "Supprimer"
|
||||||
|
|
||||||
#: src/views/members/index.tsx:149
|
#: src/views/members/index.tsx:148
|
||||||
msgid "Remove member"
|
msgid "Remove member"
|
||||||
msgstr "Supprimer le membre"
|
msgstr "Supprimer le membre"
|
||||||
|
|
||||||
@@ -1571,7 +1543,7 @@ msgstr "Révision"
|
|||||||
msgid "Roadmap"
|
msgid "Roadmap"
|
||||||
msgstr "Feuille de route"
|
msgstr "Feuille de route"
|
||||||
|
|
||||||
#: src/views/members/index.tsx:244
|
#: src/views/members/index.tsx:243
|
||||||
msgid "Role"
|
msgid "Role"
|
||||||
msgstr "Rôle"
|
msgstr "Rôle"
|
||||||
|
|
||||||
@@ -1592,10 +1564,6 @@ msgstr "Gagnez du temps avec des modèles de tableaux réutilisables."
|
|||||||
msgid "Screening"
|
msgid "Screening"
|
||||||
msgstr "Présélection"
|
msgstr "Présélection"
|
||||||
|
|
||||||
#: src/components/CommandPallette.tsx:104
|
|
||||||
msgid "Search boards and cards..."
|
|
||||||
msgstr "Rechercher des tableaux et des cartes..."
|
|
||||||
|
|
||||||
#: src/views/boards/components/ImportBoardsForm.tsx:274
|
#: src/views/boards/components/ImportBoardsForm.tsx:274
|
||||||
msgid "Select all"
|
msgid "Select all"
|
||||||
msgstr "Sélectionner tout"
|
msgstr "Sélectionner tout"
|
||||||
@@ -1649,6 +1617,10 @@ msgstr "Paramètres | Intégrations"
|
|||||||
msgid "Settings | Workspace"
|
msgid "Settings | Workspace"
|
||||||
msgstr "Paramètres | Espace de travail"
|
msgstr "Paramètres | Espace de travail"
|
||||||
|
|
||||||
|
#: src/views/members/components/InviteMemberForm.tsx:327
|
||||||
|
msgid "Share invite link"
|
||||||
|
msgstr "Partager le lien d'invitation"
|
||||||
|
|
||||||
#: src/views/home/components/Header.tsx:100
|
#: src/views/home/components/Header.tsx:100
|
||||||
#: src/views/home/components/Header.tsx:138
|
#: src/views/home/components/Header.tsx:138
|
||||||
msgid "Sign in"
|
msgid "Sign in"
|
||||||
@@ -1675,7 +1647,7 @@ msgstr "Inscription désactivée"
|
|||||||
msgid "Sign up is currently disabled. Please try again later."
|
msgid "Sign up is currently disabled. Please try again later."
|
||||||
msgstr "L'inscription est actuellement désactivée. Veuillez réessayer plus tard."
|
msgstr "L'inscription est actuellement désactivée. Veuillez réessayer plus tard."
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:417
|
#: src/components/AuthForm.tsx:370
|
||||||
msgid "Sign up with "
|
msgid "Sign up with "
|
||||||
msgstr "S'inscrire avec "
|
msgstr "S'inscrire avec "
|
||||||
|
|
||||||
@@ -1699,12 +1671,8 @@ msgstr "Développement logiciel"
|
|||||||
msgid "Star on Github"
|
msgid "Star on Github"
|
||||||
msgstr "Étoile sur Github"
|
msgstr "Étoile sur Github"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:122
|
#: src/components/AuthForm.tsx:207
|
||||||
msgid "Subscription Required"
|
#: src/components/AuthForm.tsx:224
|
||||||
msgstr "Abonnement requis"
|
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:212
|
|
||||||
#: src/components/AuthForm.tsx:229
|
|
||||||
msgid "Success"
|
msgid "Success"
|
||||||
msgstr "Succès"
|
msgstr "Succès"
|
||||||
|
|
||||||
@@ -1724,8 +1692,8 @@ msgstr "Soutenir le développement du projet"
|
|||||||
msgid "System"
|
msgid "System"
|
||||||
msgstr "Système"
|
msgstr "Système"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:315
|
#: src/views/members/components/InviteMemberForm.tsx:301
|
||||||
#: src/views/members/index.tsx:208
|
#: src/views/members/index.tsx:207
|
||||||
msgid "Team Plan"
|
msgid "Team Plan"
|
||||||
msgstr "Forfait d'équipe"
|
msgstr "Forfait d'équipe"
|
||||||
|
|
||||||
@@ -2008,7 +1976,7 @@ msgstr "Passer à Pro"
|
|||||||
msgid "Upgrade to Pro ($29/month)"
|
msgid "Upgrade to Pro ($29/month)"
|
||||||
msgstr "Passer à Pro (29 $/mois)"
|
msgstr "Passer à Pro (29 $/mois)"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:357
|
#: src/views/members/components/InviteMemberForm.tsx:341
|
||||||
msgid "Upgrade to Team Plan"
|
msgid "Upgrade to Team Plan"
|
||||||
msgstr "Passer au forfait d'équipe"
|
msgstr "Passer au forfait d'équipe"
|
||||||
|
|
||||||
@@ -2036,11 +2004,11 @@ 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:238
|
#: src/views/members/index.tsx:237
|
||||||
msgid "User"
|
msgid "User"
|
||||||
msgstr "Utilisateur"
|
msgstr "Utilisateur"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:98
|
#: src/views/members/components/InviteMemberForm.tsx:96
|
||||||
msgid "User is already a member of this workspace"
|
msgid "User is already a member of this workspace"
|
||||||
msgstr "L'utilisateur est déjà membre de cet espace de travail"
|
msgstr "L'utilisateur est déjà membre de cet espace de travail"
|
||||||
|
|
||||||
@@ -2199,15 +2167,15 @@ msgstr "Vous pouvez inviter des membres de l'équipe en cliquant sur le bouton \
|
|||||||
msgid "You can self-host by following the instructions in our <0>repo</0>."
|
msgid "You can self-host by following the instructions in our <0>repo</0>."
|
||||||
msgstr "Vous pouvez auto-héberger en suivant les instructions dans notre <0>dépôt</0>."
|
msgstr "Vous pouvez auto-héberger en suivant les instructions dans notre <0>dépôt</0>."
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:230
|
#: src/components/AuthForm.tsx:225
|
||||||
msgid "You have been logged in successfully."
|
msgid "You have been logged in successfully."
|
||||||
msgstr "Vous vous êtes connecté avec succès."
|
msgstr "Vous vous êtes connecté avec succès."
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:213
|
#: src/components/AuthForm.tsx:208
|
||||||
msgid "You have been signed up successfully."
|
msgid "You have been signed up successfully."
|
||||||
msgstr "Vous vous êtes inscrit avec succès."
|
msgstr "Vous vous êtes inscrit avec succès."
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:319
|
#: src/views/members/components/InviteMemberForm.tsx:305
|
||||||
msgid "You have unlimited seats with your Pro Plan. There is no additional charge for new members!"
|
msgid "You have unlimited seats with your Pro Plan. There is no additional charge for new members!"
|
||||||
msgstr "Vous disposez de places illimitées avec votre Plan Pro. Il n'y a pas de frais supplémentaires pour les nouveaux membres !"
|
msgstr "Vous disposez de places illimitées avec votre Plan Pro. Il n'y a pas de frais supplémentaires pour les nouveaux membres !"
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -36,12 +36,12 @@ msgstr "{0} etichette"
|
|||||||
msgid "{boardCount, plural, one {Import board (1)} other {Import boards ({boardCount})}}"
|
msgid "{boardCount, plural, one {Import board (1)} other {Import boards ({boardCount})}}"
|
||||||
msgstr "{boardCount, plural, one {Importa bacheca (1)} other {Importa bacheche ({boardCount})}}"
|
msgstr "{boardCount, plural, one {Importa bacheca (1)} other {Importa bacheche ({boardCount})}}"
|
||||||
|
|
||||||
|
#: src/views/members/components/InviteMemberForm.tsx:146
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:158
|
#: src/views/members/components/InviteMemberForm.tsx:158
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:170
|
|
||||||
msgid "$10/month"
|
msgid "$10/month"
|
||||||
msgstr "$10/mese"
|
msgstr "$10/mese"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:170
|
#: src/views/members/components/InviteMemberForm.tsx:158
|
||||||
msgid "$8/month"
|
msgid "$8/month"
|
||||||
msgstr "$8/mese"
|
msgstr "$8/mese"
|
||||||
|
|
||||||
@@ -101,7 +101,7 @@ msgid "Add label"
|
|||||||
msgstr "Aggiungi etichetta"
|
msgstr "Aggiungi etichetta"
|
||||||
|
|
||||||
#: src/views/card/components/MemberSelector.tsx:130
|
#: src/views/card/components/MemberSelector.tsx:130
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:250
|
#: src/views/members/components/InviteMemberForm.tsx:238
|
||||||
msgid "Add member"
|
msgid "Add member"
|
||||||
msgstr "Aggiungi membro"
|
msgstr "Aggiungi membro"
|
||||||
|
|
||||||
@@ -136,7 +136,7 @@ msgstr "ha aggiunto l'elemento <0>{0}</0> alla checklist"
|
|||||||
msgid "added label <0>{0}</0>"
|
msgid "added label <0>{0}</0>"
|
||||||
msgstr "ha aggiunto l'etichetta <0>{0}</0>"
|
msgstr "ha aggiunto l'etichetta <0>{0}</0>"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:320
|
#: src/views/members/components/InviteMemberForm.tsx:306
|
||||||
msgid "Adding a new member will cost an additional {price} ({billingType}) per seat."
|
msgid "Adding a new member will cost an additional {price} ({billingType}) per seat."
|
||||||
msgstr "L'aggiunta di un nuovo membro costerà un supplemento di {price} ({billingType}) per posto."
|
msgstr "L'aggiunta di un nuovo membro costerà un supplemento di {price} ({billingType}) per posto."
|
||||||
|
|
||||||
@@ -164,7 +164,7 @@ msgstr "Si è verificato un errore durante la disconnessione del tuo account Tre
|
|||||||
msgid "An unexpected error occurred. Please try again later."
|
msgid "An unexpected error occurred. Please try again later."
|
||||||
msgstr "Si è verificato un errore imprevisto. Riprova più tardi."
|
msgstr "Si è verificato un errore imprevisto. Riprova più tardi."
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:304
|
#: src/views/members/components/InviteMemberForm.tsx:290
|
||||||
msgid "Anyone with this link can join your workspace"
|
msgid "Anyone with this link can join your workspace"
|
||||||
msgstr "Chiunque abbia questo link può unirsi al tuo spazio di lavoro"
|
msgstr "Chiunque abbia questo link può unirsi al tuo spazio di lavoro"
|
||||||
|
|
||||||
@@ -250,11 +250,11 @@ msgstr "Backlog"
|
|||||||
msgid "Basic Kanban"
|
msgid "Basic Kanban"
|
||||||
msgstr "Kanban base"
|
msgstr "Kanban base"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:171
|
#: src/views/members/components/InviteMemberForm.tsx:159
|
||||||
msgid "billed annually"
|
msgid "billed annually"
|
||||||
msgstr "fatturato annualmente"
|
msgstr "fatturato annualmente"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:171
|
#: src/views/members/components/InviteMemberForm.tsx:159
|
||||||
msgid "billed monthly"
|
msgid "billed monthly"
|
||||||
msgstr "fatturato mensilmente"
|
msgstr "fatturato mensilmente"
|
||||||
|
|
||||||
@@ -463,12 +463,12 @@ msgstr "Contattaci"
|
|||||||
msgid "Content Creation"
|
msgid "Content Creation"
|
||||||
msgstr "Creazione contenuti"
|
msgstr "Creazione contenuti"
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:417
|
#: src/components/AuthForm.tsx:370
|
||||||
msgid "Continue with "
|
msgid "Continue with "
|
||||||
msgstr "Continua con "
|
msgstr "Continua con "
|
||||||
|
|
||||||
#. placeholder {0}: key === "oidc" ? oidcProviderName : provider.name
|
#. placeholder {0}: key === "oidc" ? oidcProviderName : provider.name
|
||||||
#: src/components/AuthForm.tsx:348
|
#: src/components/AuthForm.tsx:301
|
||||||
msgid "Continue with {0}"
|
msgid "Continue with {0}"
|
||||||
msgstr "Continua con {0}"
|
msgstr "Continua con {0}"
|
||||||
|
|
||||||
@@ -498,10 +498,6 @@ msgstr "Crea carta"
|
|||||||
msgid "Create checklist"
|
msgid "Create checklist"
|
||||||
msgstr "Crea checklist"
|
msgstr "Crea checklist"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:342
|
|
||||||
msgid "Create invite link"
|
|
||||||
msgstr "Crea link di invito"
|
|
||||||
|
|
||||||
#: src/components/LabelForm.tsx:238
|
#: src/components/LabelForm.tsx:238
|
||||||
msgid "Create label"
|
msgid "Create label"
|
||||||
msgstr "Crea etichetta"
|
msgstr "Crea etichetta"
|
||||||
@@ -528,7 +524,7 @@ msgid "Create new list"
|
|||||||
msgstr "Crea nuova lista"
|
msgstr "Crea nuova lista"
|
||||||
|
|
||||||
#: src/components/NewWorkspaceForm.tsx:384
|
#: src/components/NewWorkspaceForm.tsx:384
|
||||||
#: src/components/WorkspaceMenu.tsx:149
|
#: src/components/WorkspaceMenu.tsx:116
|
||||||
msgid "Create workspace"
|
msgid "Create workspace"
|
||||||
msgstr "Crea spazio di lavoro"
|
msgstr "Crea spazio di lavoro"
|
||||||
|
|
||||||
@@ -569,10 +565,6 @@ msgstr "Assistenza clienti"
|
|||||||
msgid "Dark"
|
msgid "Dark"
|
||||||
msgstr "Scuro"
|
msgstr "Scuro"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:341
|
|
||||||
msgid "Deactivate invite link"
|
|
||||||
msgstr "Disattiva link di invito"
|
|
||||||
|
|
||||||
#: src/components/DeleteLabelConfirmation.tsx:51
|
#: src/components/DeleteLabelConfirmation.tsx:51
|
||||||
#: src/components/LabelForm.tsx:228
|
#: src/components/LabelForm.tsx:228
|
||||||
#: src/views/card/components/DeleteCardConfirmation.tsx:92
|
#: src/views/card/components/DeleteCardConfirmation.tsx:92
|
||||||
@@ -705,11 +697,11 @@ msgstr "Modifica URL dell'area di lavoro"
|
|||||||
msgid "Editing"
|
msgid "Editing"
|
||||||
msgstr "Modifica"
|
msgstr "Modifica"
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:418
|
#: src/components/AuthForm.tsx:372
|
||||||
msgid "email"
|
msgid "email"
|
||||||
msgstr "email"
|
msgstr "email"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:265
|
#: src/views/members/components/InviteMemberForm.tsx:252
|
||||||
msgid "Email"
|
msgid "Email"
|
||||||
msgstr "Email"
|
msgstr "Email"
|
||||||
|
|
||||||
@@ -725,11 +717,11 @@ msgstr "Inserisci la tua password attuale"
|
|||||||
msgid "Enter your current password and choose a new secure password."
|
msgid "Enter your current password and choose a new secure password."
|
||||||
msgstr "Inserisci la tua password attuale e scegli una nuova password sicura."
|
msgstr "Inserisci la tua password attuale e scegli una nuova password sicura."
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:384
|
#: src/components/AuthForm.tsx:337
|
||||||
msgid "Enter your email address"
|
msgid "Enter your email address"
|
||||||
msgstr "Inserisci il tuo indirizzo email"
|
msgstr "Inserisci il tuo indirizzo email"
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:372
|
#: src/components/AuthForm.tsx:325
|
||||||
msgid "Enter your name"
|
msgid "Enter your name"
|
||||||
msgstr "Inserisci il tuo nome"
|
msgstr "Inserisci il tuo nome"
|
||||||
|
|
||||||
@@ -737,11 +729,11 @@ msgstr "Inserisci il tuo nome"
|
|||||||
msgid "Enter your new password"
|
msgid "Enter your new password"
|
||||||
msgstr "Inserisci la tua nuova password"
|
msgstr "Inserisci la tua nuova password"
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:397
|
#: src/components/AuthForm.tsx:350
|
||||||
msgid "Enter your password"
|
msgid "Enter your password"
|
||||||
msgstr "Inserisci la tua password"
|
msgstr "Inserisci la tua password"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:208
|
#: src/views/members/components/InviteMemberForm.tsx:196
|
||||||
msgid "Error"
|
msgid "Error"
|
||||||
msgstr "Errore"
|
msgstr "Errore"
|
||||||
|
|
||||||
@@ -749,11 +741,11 @@ msgstr "Errore"
|
|||||||
msgid "Error Changing Password"
|
msgid "Error Changing Password"
|
||||||
msgstr "Errore durante il cambio della password"
|
msgstr "Errore durante il cambio della password"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:128
|
#: src/views/members/components/InviteMemberForm.tsx:117
|
||||||
msgid "Error creating invite link"
|
msgid "Error creating invite link"
|
||||||
msgstr "Errore durante la creazione del link di invito"
|
msgstr "Errore durante la creazione del link di invito"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:144
|
#: src/views/members/components/InviteMemberForm.tsx:132
|
||||||
msgid "Error deactivating invite link"
|
msgid "Error deactivating invite link"
|
||||||
msgstr "Errore durante la disattivazione del link di invito"
|
msgstr "Errore durante la disattivazione del link di invito"
|
||||||
|
|
||||||
@@ -773,8 +765,8 @@ msgstr "Errore durante l'eliminazione dell'area di lavoro"
|
|||||||
msgid "Error disconnecting Trello"
|
msgid "Error disconnecting Trello"
|
||||||
msgstr "Errore durante la disconnessione da Trello"
|
msgstr "Errore durante la disconnessione da Trello"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:97
|
#: src/views/members/components/InviteMemberForm.tsx:95
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:103
|
#: src/views/members/components/InviteMemberForm.tsx:101
|
||||||
msgid "Error inviting member"
|
msgid "Error inviting member"
|
||||||
msgstr "Errore durante l'invito del membro"
|
msgstr "Errore durante l'invito del membro"
|
||||||
|
|
||||||
@@ -798,7 +790,7 @@ msgstr "Errore durante l'aggiornamento del nome dell'area di lavoro"
|
|||||||
msgid "Error updating workspace URL"
|
msgid "Error updating workspace URL"
|
||||||
msgstr "Errore durante l'aggiornamento dell'URL dell'area di lavoro"
|
msgstr "Errore durante l'aggiornamento dell'URL dell'area di lavoro"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:233
|
#: src/views/members/components/InviteMemberForm.tsx:221
|
||||||
#: src/views/settings/components/UpgradeToProConfirmation.tsx:41
|
#: src/views/settings/components/UpgradeToProConfirmation.tsx:41
|
||||||
msgid "Error upgrading subscription"
|
msgid "Error upgrading subscription"
|
||||||
msgstr "Errore nell'aggiornamento dell'abbonamento"
|
msgstr "Errore nell'aggiornamento dell'abbonamento"
|
||||||
@@ -828,12 +820,12 @@ msgstr "Esecuzione"
|
|||||||
msgid "Failed to accept invitation. Please try again later, or contact customer support."
|
msgid "Failed to accept invitation. Please try again later, or contact customer support."
|
||||||
msgstr "Impossibile accettare l'invito. Riprova più tardi o contatta l'assistenza clienti."
|
msgstr "Impossibile accettare l'invito. Riprova più tardi o contatta l'assistenza clienti."
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:209
|
#: src/views/members/components/InviteMemberForm.tsx:197
|
||||||
msgid "Failed to copy invite link"
|
msgid "Failed to copy invite link"
|
||||||
msgstr "Impossibile copiare il link di invito"
|
msgstr "Impossibile copiare il link di invito"
|
||||||
|
|
||||||
#. placeholder {0}: provider.at(0)?.toUpperCase() + provider.slice(1)
|
#. placeholder {0}: provider.at(0)?.toUpperCase() + provider.slice(1)
|
||||||
#: src/components/AuthForm.tsx:288
|
#: src/components/AuthForm.tsx:273
|
||||||
msgid "Failed to login with {0}. Please try again."
|
msgid "Failed to login with {0}. Please try again."
|
||||||
msgstr "Accesso con {0} fallito. Riprova."
|
msgstr "Accesso con {0} fallito. Riprova."
|
||||||
|
|
||||||
@@ -881,8 +873,8 @@ msgstr "Per la sostenibilità a lungo termine, riconosciamo che tutti i buoni pr
|
|||||||
msgid "Free"
|
msgid "Free"
|
||||||
msgstr "Gratuito"
|
msgstr "Gratuito"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:326
|
#: src/views/members/components/InviteMemberForm.tsx:312
|
||||||
#: src/views/members/index.tsx:209
|
#: src/views/members/index.tsx:208
|
||||||
msgid "Free Plan"
|
msgid "Free Plan"
|
||||||
msgstr "Piano gratuito"
|
msgstr "Piano gratuito"
|
||||||
|
|
||||||
@@ -1024,10 +1016,6 @@ msgstr "Importazione da Trello"
|
|||||||
msgid "Importing your Trello boards into Kan is easy. You can follow our step-by-step guide <0>here</0>."
|
msgid "Importing your Trello boards into Kan is easy. You can follow our step-by-step guide <0>here</0>."
|
||||||
msgstr "Importare le tue bacheche Trello in Kan è facile. Puoi seguire la nostra guida passo-passo <0>qui</0>."
|
msgstr "Importare le tue bacheche Trello in Kan è facile. Puoi seguire la nostra guida passo-passo <0>qui</0>."
|
||||||
|
|
||||||
#: src/components/CommandPallette.tsx:168
|
|
||||||
msgid "in"
|
|
||||||
msgstr "in"
|
|
||||||
|
|
||||||
#: src/views/boards/components/TemplateBoards.tsx:16
|
#: src/views/boards/components/TemplateBoards.tsx:16
|
||||||
#: src/views/boards/components/TemplateBoards.tsx:22
|
#: src/views/boards/components/TemplateBoards.tsx:22
|
||||||
#: src/views/boards/components/TemplateBoards.tsx:45
|
#: src/views/boards/components/TemplateBoards.tsx:45
|
||||||
@@ -1047,7 +1035,7 @@ msgstr "Integrazioni"
|
|||||||
msgid "Interviewing"
|
msgid "Interviewing"
|
||||||
msgstr "Colloquio"
|
msgstr "Colloquio"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:51
|
#: src/views/members/components/InviteMemberForm.tsx:49
|
||||||
msgid "Invalid email address"
|
msgid "Invalid email address"
|
||||||
msgstr "Indirizzo email non valido"
|
msgstr "Indirizzo email non valido"
|
||||||
|
|
||||||
@@ -1055,28 +1043,24 @@ msgstr "Indirizzo email non valido"
|
|||||||
msgid "Invalid invitation"
|
msgid "Invalid invitation"
|
||||||
msgstr "Invito non valido"
|
msgstr "Invito non valido"
|
||||||
|
|
||||||
#: src/views/members/index.tsx:222
|
#: src/views/members/index.tsx:221
|
||||||
msgid "Invite"
|
msgid "Invite"
|
||||||
msgstr "Invita"
|
msgstr "Invita"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:202
|
#: src/views/members/components/InviteMemberForm.tsx:190
|
||||||
msgid "Invite link copied"
|
msgid "Invite link copied"
|
||||||
msgstr "Link di invito copiato"
|
msgstr "Link di invito copiato"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:203
|
#: src/views/members/components/InviteMemberForm.tsx:191
|
||||||
msgid "Invite link copied to clipboard"
|
msgid "Invite link copied to clipboard"
|
||||||
msgstr "Link di invito copiato negli appunti"
|
msgstr "Link di invito copiato negli appunti"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:123
|
|
||||||
msgid "Invite links require a Team or Pro subscription. Please upgrade your workspace."
|
|
||||||
msgstr "I link di invito richiedono un abbonamento Team o Pro. Per favore aggiorna il tuo spazio di lavoro."
|
|
||||||
|
|
||||||
#: src/views/card/components/MemberSelector.tsx:111
|
#: src/views/card/components/MemberSelector.tsx:111
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:365
|
#: src/views/members/components/InviteMemberForm.tsx:350
|
||||||
msgid "Invite member"
|
msgid "Invite member"
|
||||||
msgstr "Invita membro"
|
msgstr "Invita membro"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:329
|
#: src/views/members/components/InviteMemberForm.tsx:315
|
||||||
msgid "Inviting members requires a Team Plan. You'll be redirected to upgrade your workspace."
|
msgid "Inviting members requires a Team Plan. You'll be redirected to upgrade your workspace."
|
||||||
msgstr "L'invito di membri richiede un Piano Team. Sarai reindirizzato per aggiornare il tuo spazio di lavoro."
|
msgstr "L'invito di membri richiede un Piano Team. Sarai reindirizzato per aggiornare il tuo spazio di lavoro."
|
||||||
|
|
||||||
@@ -1125,7 +1109,7 @@ msgstr "Lingua"
|
|||||||
msgid "Launch offer"
|
msgid "Launch offer"
|
||||||
msgstr "Offerta di lancio"
|
msgstr "Offerta di lancio"
|
||||||
|
|
||||||
#: src/views/members/index.tsx:192
|
#: src/views/members/index.tsx:191
|
||||||
msgid "Launch offer: Get unlimited members with Pro"
|
msgid "Launch offer: Get unlimited members with Pro"
|
||||||
msgstr "Offerta di lancio: ottieni membri illimitati con Pro"
|
msgstr "Offerta di lancio: ottieni membri illimitati con Pro"
|
||||||
|
|
||||||
@@ -1177,7 +1161,7 @@ msgstr "A lungo termine"
|
|||||||
msgid "Low Priority"
|
msgid "Low Priority"
|
||||||
msgstr "Bassa priorità"
|
msgstr "Bassa priorità"
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:418
|
#: src/components/AuthForm.tsx:373
|
||||||
msgid "magic link"
|
msgid "magic link"
|
||||||
msgstr "link magico"
|
msgstr "link magico"
|
||||||
|
|
||||||
@@ -1198,12 +1182,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:179
|
#: 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:174
|
#: src/views/members/index.tsx:173
|
||||||
msgid "Members | {0}"
|
msgid "Members | {0}"
|
||||||
msgstr "Membri | {0}"
|
msgstr "Membri | {0}"
|
||||||
|
|
||||||
@@ -1211,7 +1195,7 @@ msgstr "Membri | {0}"
|
|||||||
msgid "Monthly"
|
msgid "Monthly"
|
||||||
msgstr "Mensile"
|
msgstr "Mensile"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:159
|
#: src/views/members/components/InviteMemberForm.tsx:147
|
||||||
msgid "monthly billing"
|
msgid "monthly billing"
|
||||||
msgstr "fatturazione mensile"
|
msgstr "fatturazione mensile"
|
||||||
|
|
||||||
@@ -1307,10 +1291,6 @@ msgstr "Nessuna carta di credito richiesta"
|
|||||||
msgid "No lists"
|
msgid "No lists"
|
||||||
msgstr "Nessuna lista"
|
msgstr "Nessuna lista"
|
||||||
|
|
||||||
#: src/components/CommandPallette.tsx:184
|
|
||||||
msgid "No results found for \"{debouncedQuery}\"."
|
|
||||||
msgstr "Nessun risultato trovato per \"{debouncedQuery}\"."
|
|
||||||
|
|
||||||
#: src/views/boards/components/TemplateBoards.tsx:65
|
#: src/views/boards/components/TemplateBoards.tsx:65
|
||||||
msgid "Offer"
|
msgid "Offer"
|
||||||
msgstr "Offerta"
|
msgstr "Offerta"
|
||||||
@@ -1327,7 +1307,7 @@ msgstr "Una volta eliminato il tuo account, non si può tornare indietro. Questa
|
|||||||
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."
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:362
|
#: src/components/AuthForm.tsx:315
|
||||||
msgid "or"
|
msgid "or"
|
||||||
msgstr "o"
|
msgstr "o"
|
||||||
|
|
||||||
@@ -1347,14 +1327,6 @@ msgstr "Part-time"
|
|||||||
msgid "Password Changed"
|
msgid "Password Changed"
|
||||||
msgstr "Password modificata"
|
msgstr "Password modificata"
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:255
|
|
||||||
msgid "Password is required to login."
|
|
||||||
msgstr "La password è necessaria per accedere."
|
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:254
|
|
||||||
msgid "Password is required to sign up."
|
|
||||||
msgstr "La password è necessaria per registrarsi."
|
|
||||||
|
|
||||||
#: src/views/settings/components/ChangePasswordConfirmation.tsx:22
|
#: src/views/settings/components/ChangePasswordConfirmation.tsx:22
|
||||||
msgid "Password must be at least 8 characters"
|
msgid "Password must be at least 8 characters"
|
||||||
msgstr "La password deve contenere almeno 8 caratteri"
|
msgstr "La password deve contenere almeno 8 caratteri"
|
||||||
@@ -1363,7 +1335,7 @@ 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/members/index.tsx:135
|
#: src/views/members/index.tsx:134
|
||||||
msgid "Paused"
|
msgid "Paused"
|
||||||
msgstr "In pausa"
|
msgstr "In pausa"
|
||||||
|
|
||||||
@@ -1371,7 +1343,7 @@ msgstr "In pausa"
|
|||||||
msgid "Payment frequency"
|
msgid "Payment frequency"
|
||||||
msgstr "Frequenza di pagamento"
|
msgstr "Frequenza di pagamento"
|
||||||
|
|
||||||
#: src/views/members/index.tsx:135
|
#: src/views/members/index.tsx:134
|
||||||
msgid "Pending"
|
msgid "Pending"
|
||||||
msgstr "In attesa"
|
msgstr "In attesa"
|
||||||
|
|
||||||
@@ -1392,15 +1364,15 @@ msgstr "Pianificazione"
|
|||||||
msgid "Please confirm your new password"
|
msgid "Please confirm your new password"
|
||||||
msgstr "Conferma la tua nuova password"
|
msgstr "Conferma la tua nuova password"
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:388
|
#: src/components/AuthForm.tsx:341
|
||||||
msgid "Please enter a valid email address"
|
msgid "Please enter a valid email address"
|
||||||
msgstr "Inserisci un indirizzo email valido"
|
msgstr "Inserisci un indirizzo email valido"
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:376
|
#: src/components/AuthForm.tsx:329
|
||||||
msgid "Please enter a valid name"
|
msgid "Please enter a valid name"
|
||||||
msgstr "Inserisci un nome valido"
|
msgstr "Inserisci un nome valido"
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:401
|
#: src/components/AuthForm.tsx:354
|
||||||
msgid "Please enter a valid password"
|
msgid "Please enter a valid password"
|
||||||
msgstr "Inserisci una password valida"
|
msgstr "Inserisci una password valida"
|
||||||
|
|
||||||
@@ -1433,8 +1405,8 @@ msgstr "Seleziona un file da caricare."
|
|||||||
#: src/views/card/components/NewCommentForm.tsx:31
|
#: src/views/card/components/NewCommentForm.tsx:31
|
||||||
#: src/views/card/index.tsx:173
|
#: src/views/card/index.tsx:173
|
||||||
#: src/views/members/components/DeleteMemberConfirmation.tsx:28
|
#: src/views/members/components/DeleteMemberConfirmation.tsx:28
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:104
|
#: src/views/members/components/InviteMemberForm.tsx:102
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:234
|
#: src/views/members/components/InviteMemberForm.tsx:222
|
||||||
#: src/views/settings/components/Avatar.tsx:78
|
#: src/views/settings/components/Avatar.tsx:78
|
||||||
#: src/views/settings/components/Avatar.tsx:219
|
#: src/views/settings/components/Avatar.tsx:219
|
||||||
#: src/views/settings/components/DeleteAccountConfirmation.tsx:40
|
#: src/views/settings/components/DeleteAccountConfirmation.tsx:40
|
||||||
@@ -1447,8 +1419,8 @@ msgstr "Seleziona un file da caricare."
|
|||||||
msgid "Please try again later, or contact customer support."
|
msgid "Please try again later, or contact customer support."
|
||||||
msgstr "Riprova più tardi o contatta l'assistenza clienti."
|
msgstr "Riprova più tardi o contatta l'assistenza clienti."
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:129
|
#: src/views/members/components/InviteMemberForm.tsx:118
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:145
|
#: src/views/members/components/InviteMemberForm.tsx:133
|
||||||
msgid "Please try again later."
|
msgid "Please try again later."
|
||||||
msgstr "Riprova più tardi."
|
msgstr "Riprova più tardi."
|
||||||
|
|
||||||
@@ -1471,11 +1443,11 @@ msgstr "Informativa sulla privacy"
|
|||||||
msgid "Private"
|
msgid "Private"
|
||||||
msgstr "Privato"
|
msgstr "Privato"
|
||||||
|
|
||||||
#: src/views/members/index.tsx:206
|
#: src/views/members/index.tsx:205
|
||||||
msgid "Pro Plan"
|
msgid "Pro Plan"
|
||||||
msgstr "Piano Pro"
|
msgstr "Piano Pro"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:315
|
#: src/views/members/components/InviteMemberForm.tsx:301
|
||||||
msgid "Pro Plan ∞"
|
msgid "Pro Plan ∞"
|
||||||
msgstr "Piano Pro ∞"
|
msgstr "Piano Pro ∞"
|
||||||
|
|
||||||
@@ -1519,7 +1491,7 @@ msgstr "Remoto"
|
|||||||
msgid "Remove"
|
msgid "Remove"
|
||||||
msgstr "Rimuovi"
|
msgstr "Rimuovi"
|
||||||
|
|
||||||
#: src/views/members/index.tsx:149
|
#: src/views/members/index.tsx:148
|
||||||
msgid "Remove member"
|
msgid "Remove member"
|
||||||
msgstr "Rimuovi membro"
|
msgstr "Rimuovi membro"
|
||||||
|
|
||||||
@@ -1571,7 +1543,7 @@ msgstr "Revisione"
|
|||||||
msgid "Roadmap"
|
msgid "Roadmap"
|
||||||
msgstr "Roadmap"
|
msgstr "Roadmap"
|
||||||
|
|
||||||
#: src/views/members/index.tsx:244
|
#: src/views/members/index.tsx:243
|
||||||
msgid "Role"
|
msgid "Role"
|
||||||
msgstr "Ruolo"
|
msgstr "Ruolo"
|
||||||
|
|
||||||
@@ -1592,10 +1564,6 @@ msgstr "Risparmia tempo con modelli di bacheca riutilizzabili."
|
|||||||
msgid "Screening"
|
msgid "Screening"
|
||||||
msgstr "Selezione"
|
msgstr "Selezione"
|
||||||
|
|
||||||
#: src/components/CommandPallette.tsx:104
|
|
||||||
msgid "Search boards and cards..."
|
|
||||||
msgstr "Cerca bacheche e schede..."
|
|
||||||
|
|
||||||
#: src/views/boards/components/ImportBoardsForm.tsx:274
|
#: src/views/boards/components/ImportBoardsForm.tsx:274
|
||||||
msgid "Select all"
|
msgid "Select all"
|
||||||
msgstr "Seleziona tutto"
|
msgstr "Seleziona tutto"
|
||||||
@@ -1649,6 +1617,10 @@ msgstr "Impostazioni | Integrazioni"
|
|||||||
msgid "Settings | Workspace"
|
msgid "Settings | Workspace"
|
||||||
msgstr "Impostazioni | Area di lavoro"
|
msgstr "Impostazioni | Area di lavoro"
|
||||||
|
|
||||||
|
#: src/views/members/components/InviteMemberForm.tsx:327
|
||||||
|
msgid "Share invite link"
|
||||||
|
msgstr "Condividi link di invito"
|
||||||
|
|
||||||
#: src/views/home/components/Header.tsx:100
|
#: src/views/home/components/Header.tsx:100
|
||||||
#: src/views/home/components/Header.tsx:138
|
#: src/views/home/components/Header.tsx:138
|
||||||
msgid "Sign in"
|
msgid "Sign in"
|
||||||
@@ -1675,7 +1647,7 @@ msgstr "Registrazione disabilitata"
|
|||||||
msgid "Sign up is currently disabled. Please try again later."
|
msgid "Sign up is currently disabled. Please try again later."
|
||||||
msgstr "La registrazione è attualmente disabilitata. Riprova più tardi."
|
msgstr "La registrazione è attualmente disabilitata. Riprova più tardi."
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:417
|
#: src/components/AuthForm.tsx:370
|
||||||
msgid "Sign up with "
|
msgid "Sign up with "
|
||||||
msgstr "Registrati con "
|
msgstr "Registrati con "
|
||||||
|
|
||||||
@@ -1699,12 +1671,8 @@ msgstr "Sviluppo software"
|
|||||||
msgid "Star on Github"
|
msgid "Star on Github"
|
||||||
msgstr "Metti una stella su Github"
|
msgstr "Metti una stella su Github"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:122
|
#: src/components/AuthForm.tsx:207
|
||||||
msgid "Subscription Required"
|
#: src/components/AuthForm.tsx:224
|
||||||
msgstr "Abbonamento richiesto"
|
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:212
|
|
||||||
#: src/components/AuthForm.tsx:229
|
|
||||||
msgid "Success"
|
msgid "Success"
|
||||||
msgstr "Operazione riuscita"
|
msgstr "Operazione riuscita"
|
||||||
|
|
||||||
@@ -1724,8 +1692,8 @@ msgstr "Sostieni lo sviluppo del progetto"
|
|||||||
msgid "System"
|
msgid "System"
|
||||||
msgstr "Sistema"
|
msgstr "Sistema"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:315
|
#: src/views/members/components/InviteMemberForm.tsx:301
|
||||||
#: src/views/members/index.tsx:208
|
#: src/views/members/index.tsx:207
|
||||||
msgid "Team Plan"
|
msgid "Team Plan"
|
||||||
msgstr "Piano Team"
|
msgstr "Piano Team"
|
||||||
|
|
||||||
@@ -2008,7 +1976,7 @@ msgstr "Passa a Pro"
|
|||||||
msgid "Upgrade to Pro ($29/month)"
|
msgid "Upgrade to Pro ($29/month)"
|
||||||
msgstr "Passa a Pro ($29/mese)"
|
msgstr "Passa a Pro ($29/mese)"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:357
|
#: src/views/members/components/InviteMemberForm.tsx:341
|
||||||
msgid "Upgrade to Team Plan"
|
msgid "Upgrade to Team Plan"
|
||||||
msgstr "Passa al Piano Team"
|
msgstr "Passa al Piano Team"
|
||||||
|
|
||||||
@@ -2036,11 +2004,11 @@ 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:238
|
#: src/views/members/index.tsx:237
|
||||||
msgid "User"
|
msgid "User"
|
||||||
msgstr "Utente"
|
msgstr "Utente"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:98
|
#: src/views/members/components/InviteMemberForm.tsx:96
|
||||||
msgid "User is already a member of this workspace"
|
msgid "User is already a member of this workspace"
|
||||||
msgstr "L'utente è già membro di questo spazio di lavoro"
|
msgstr "L'utente è già membro di questo spazio di lavoro"
|
||||||
|
|
||||||
@@ -2199,15 +2167,15 @@ msgstr "Puoi invitare i membri del team cliccando sul pulsante \"Invita\" nell'a
|
|||||||
msgid "You can self-host by following the instructions in our <0>repo</0>."
|
msgid "You can self-host by following the instructions in our <0>repo</0>."
|
||||||
msgstr "Puoi effettuare il self-hosting seguendo le istruzioni nel nostro <0>repo</0>."
|
msgstr "Puoi effettuare il self-hosting seguendo le istruzioni nel nostro <0>repo</0>."
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:230
|
#: src/components/AuthForm.tsx:225
|
||||||
msgid "You have been logged in successfully."
|
msgid "You have been logged in successfully."
|
||||||
msgstr "Hai effettuato l'accesso con successo."
|
msgstr "Hai effettuato l'accesso con successo."
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:213
|
#: src/components/AuthForm.tsx:208
|
||||||
msgid "You have been signed up successfully."
|
msgid "You have been signed up successfully."
|
||||||
msgstr "Ti sei registrato con successo."
|
msgstr "Ti sei registrato con successo."
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:319
|
#: src/views/members/components/InviteMemberForm.tsx:305
|
||||||
msgid "You have unlimited seats with your Pro Plan. There is no additional charge for new members!"
|
msgid "You have unlimited seats with your Pro Plan. There is no additional charge for new members!"
|
||||||
msgstr "Hai posti illimitati con il tuo Piano Pro. Non ci sono costi aggiuntivi per i nuovi membri!"
|
msgstr "Hai posti illimitati con il tuo Piano Pro. Non ci sono costi aggiuntivi per i nuovi membri!"
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -36,12 +36,12 @@ msgstr "{0} labels"
|
|||||||
msgid "{boardCount, plural, one {Import board (1)} other {Import boards ({boardCount})}}"
|
msgid "{boardCount, plural, one {Import board (1)} other {Import boards ({boardCount})}}"
|
||||||
msgstr "{boardCount, plural, one {Bord importeren (1)} other {Borden importeren ({boardCount})}}"
|
msgstr "{boardCount, plural, one {Bord importeren (1)} other {Borden importeren ({boardCount})}}"
|
||||||
|
|
||||||
|
#: src/views/members/components/InviteMemberForm.tsx:146
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:158
|
#: src/views/members/components/InviteMemberForm.tsx:158
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:170
|
|
||||||
msgid "$10/month"
|
msgid "$10/month"
|
||||||
msgstr "$10/maand"
|
msgstr "$10/maand"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:170
|
#: src/views/members/components/InviteMemberForm.tsx:158
|
||||||
msgid "$8/month"
|
msgid "$8/month"
|
||||||
msgstr "$8/maand"
|
msgstr "$8/maand"
|
||||||
|
|
||||||
@@ -101,7 +101,7 @@ msgid "Add label"
|
|||||||
msgstr "Label toevoegen"
|
msgstr "Label toevoegen"
|
||||||
|
|
||||||
#: src/views/card/components/MemberSelector.tsx:130
|
#: src/views/card/components/MemberSelector.tsx:130
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:250
|
#: src/views/members/components/InviteMemberForm.tsx:238
|
||||||
msgid "Add member"
|
msgid "Add member"
|
||||||
msgstr "Lid toevoegen"
|
msgstr "Lid toevoegen"
|
||||||
|
|
||||||
@@ -136,7 +136,7 @@ msgstr "heeft checklistitem <0>{0}</0> toegevoegd"
|
|||||||
msgid "added label <0>{0}</0>"
|
msgid "added label <0>{0}</0>"
|
||||||
msgstr "heeft label <0>{0}</0> toegevoegd"
|
msgstr "heeft label <0>{0}</0> toegevoegd"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:320
|
#: src/views/members/components/InviteMemberForm.tsx:306
|
||||||
msgid "Adding a new member will cost an additional {price} ({billingType}) per seat."
|
msgid "Adding a new member will cost an additional {price} ({billingType}) per seat."
|
||||||
msgstr "Het toevoegen van een nieuw lid kost een extra {price} ({billingType}) per plaats."
|
msgstr "Het toevoegen van een nieuw lid kost een extra {price} ({billingType}) per plaats."
|
||||||
|
|
||||||
@@ -164,7 +164,7 @@ msgstr "Er is een fout opgetreden bij het verbreken van de verbinding met je Tre
|
|||||||
msgid "An unexpected error occurred. Please try again later."
|
msgid "An unexpected error occurred. Please try again later."
|
||||||
msgstr "Er is een onverwachte fout opgetreden. Probeer het later opnieuw."
|
msgstr "Er is een onverwachte fout opgetreden. Probeer het later opnieuw."
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:304
|
#: src/views/members/components/InviteMemberForm.tsx:290
|
||||||
msgid "Anyone with this link can join your workspace"
|
msgid "Anyone with this link can join your workspace"
|
||||||
msgstr "Iedereen met deze link kan deelnemen aan je werkruimte"
|
msgstr "Iedereen met deze link kan deelnemen aan je werkruimte"
|
||||||
|
|
||||||
@@ -250,11 +250,11 @@ msgstr "Backlog"
|
|||||||
msgid "Basic Kanban"
|
msgid "Basic Kanban"
|
||||||
msgstr "Basis kanban"
|
msgstr "Basis kanban"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:171
|
#: src/views/members/components/InviteMemberForm.tsx:159
|
||||||
msgid "billed annually"
|
msgid "billed annually"
|
||||||
msgstr "jaarlijks gefactureerd"
|
msgstr "jaarlijks gefactureerd"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:171
|
#: src/views/members/components/InviteMemberForm.tsx:159
|
||||||
msgid "billed monthly"
|
msgid "billed monthly"
|
||||||
msgstr "maandelijks gefactureerd"
|
msgstr "maandelijks gefactureerd"
|
||||||
|
|
||||||
@@ -463,12 +463,12 @@ msgstr "Neem contact op"
|
|||||||
msgid "Content Creation"
|
msgid "Content Creation"
|
||||||
msgstr "Content creatie"
|
msgstr "Content creatie"
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:417
|
#: src/components/AuthForm.tsx:370
|
||||||
msgid "Continue with "
|
msgid "Continue with "
|
||||||
msgstr "Doorgaan met "
|
msgstr "Doorgaan met "
|
||||||
|
|
||||||
#. placeholder {0}: key === "oidc" ? oidcProviderName : provider.name
|
#. placeholder {0}: key === "oidc" ? oidcProviderName : provider.name
|
||||||
#: src/components/AuthForm.tsx:348
|
#: src/components/AuthForm.tsx:301
|
||||||
msgid "Continue with {0}"
|
msgid "Continue with {0}"
|
||||||
msgstr "Doorgaan met {0}"
|
msgstr "Doorgaan met {0}"
|
||||||
|
|
||||||
@@ -498,10 +498,6 @@ msgstr "Maak kaart"
|
|||||||
msgid "Create checklist"
|
msgid "Create checklist"
|
||||||
msgstr "Checklist maken"
|
msgstr "Checklist maken"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:342
|
|
||||||
msgid "Create invite link"
|
|
||||||
msgstr "Uitnodigingslink maken"
|
|
||||||
|
|
||||||
#: src/components/LabelForm.tsx:238
|
#: src/components/LabelForm.tsx:238
|
||||||
msgid "Create label"
|
msgid "Create label"
|
||||||
msgstr "Maak label"
|
msgstr "Maak label"
|
||||||
@@ -528,7 +524,7 @@ msgid "Create new list"
|
|||||||
msgstr "Maak nieuwe lijst"
|
msgstr "Maak nieuwe lijst"
|
||||||
|
|
||||||
#: src/components/NewWorkspaceForm.tsx:384
|
#: src/components/NewWorkspaceForm.tsx:384
|
||||||
#: src/components/WorkspaceMenu.tsx:149
|
#: src/components/WorkspaceMenu.tsx:116
|
||||||
msgid "Create workspace"
|
msgid "Create workspace"
|
||||||
msgstr "Werkruimte maken"
|
msgstr "Werkruimte maken"
|
||||||
|
|
||||||
@@ -569,10 +565,6 @@ msgstr "Klantenservice"
|
|||||||
msgid "Dark"
|
msgid "Dark"
|
||||||
msgstr "Donker"
|
msgstr "Donker"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:341
|
|
||||||
msgid "Deactivate invite link"
|
|
||||||
msgstr "Uitnodigingslink deactiveren"
|
|
||||||
|
|
||||||
#: src/components/DeleteLabelConfirmation.tsx:51
|
#: src/components/DeleteLabelConfirmation.tsx:51
|
||||||
#: src/components/LabelForm.tsx:228
|
#: src/components/LabelForm.tsx:228
|
||||||
#: src/views/card/components/DeleteCardConfirmation.tsx:92
|
#: src/views/card/components/DeleteCardConfirmation.tsx:92
|
||||||
@@ -705,11 +697,11 @@ msgstr "Werkruimte-URL bewerken"
|
|||||||
msgid "Editing"
|
msgid "Editing"
|
||||||
msgstr "Bewerken"
|
msgstr "Bewerken"
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:418
|
#: src/components/AuthForm.tsx:372
|
||||||
msgid "email"
|
msgid "email"
|
||||||
msgstr "e-mail"
|
msgstr "e-mail"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:265
|
#: src/views/members/components/InviteMemberForm.tsx:252
|
||||||
msgid "Email"
|
msgid "Email"
|
||||||
msgstr "E-mail"
|
msgstr "E-mail"
|
||||||
|
|
||||||
@@ -725,11 +717,11 @@ msgstr "Voer je huidige wachtwoord in"
|
|||||||
msgid "Enter your current password and choose a new secure password."
|
msgid "Enter your current password and choose a new secure password."
|
||||||
msgstr "Voer je huidige wachtwoord in en kies een nieuw veilig wachtwoord."
|
msgstr "Voer je huidige wachtwoord in en kies een nieuw veilig wachtwoord."
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:384
|
#: src/components/AuthForm.tsx:337
|
||||||
msgid "Enter your email address"
|
msgid "Enter your email address"
|
||||||
msgstr "Voer je e-mailadres in"
|
msgstr "Voer je e-mailadres in"
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:372
|
#: src/components/AuthForm.tsx:325
|
||||||
msgid "Enter your name"
|
msgid "Enter your name"
|
||||||
msgstr "Voer je naam in"
|
msgstr "Voer je naam in"
|
||||||
|
|
||||||
@@ -737,11 +729,11 @@ msgstr "Voer je naam in"
|
|||||||
msgid "Enter your new password"
|
msgid "Enter your new password"
|
||||||
msgstr "Voer je nieuwe wachtwoord in"
|
msgstr "Voer je nieuwe wachtwoord in"
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:397
|
#: src/components/AuthForm.tsx:350
|
||||||
msgid "Enter your password"
|
msgid "Enter your password"
|
||||||
msgstr "Voer je wachtwoord in"
|
msgstr "Voer je wachtwoord in"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:208
|
#: src/views/members/components/InviteMemberForm.tsx:196
|
||||||
msgid "Error"
|
msgid "Error"
|
||||||
msgstr "Fout"
|
msgstr "Fout"
|
||||||
|
|
||||||
@@ -749,11 +741,11 @@ msgstr "Fout"
|
|||||||
msgid "Error Changing Password"
|
msgid "Error Changing Password"
|
||||||
msgstr "Fout bij wijzigen wachtwoord"
|
msgstr "Fout bij wijzigen wachtwoord"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:128
|
#: src/views/members/components/InviteMemberForm.tsx:117
|
||||||
msgid "Error creating invite link"
|
msgid "Error creating invite link"
|
||||||
msgstr "Fout bij het maken van uitnodigingslink"
|
msgstr "Fout bij het maken van uitnodigingslink"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:144
|
#: src/views/members/components/InviteMemberForm.tsx:132
|
||||||
msgid "Error deactivating invite link"
|
msgid "Error deactivating invite link"
|
||||||
msgstr "Fout bij het deactiveren van uitnodigingslink"
|
msgstr "Fout bij het deactiveren van uitnodigingslink"
|
||||||
|
|
||||||
@@ -773,8 +765,8 @@ msgstr "Fout bij verwijderen werkruimte"
|
|||||||
msgid "Error disconnecting Trello"
|
msgid "Error disconnecting Trello"
|
||||||
msgstr "Fout bij ontkoppelen van Trello"
|
msgstr "Fout bij ontkoppelen van Trello"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:97
|
#: src/views/members/components/InviteMemberForm.tsx:95
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:103
|
#: src/views/members/components/InviteMemberForm.tsx:101
|
||||||
msgid "Error inviting member"
|
msgid "Error inviting member"
|
||||||
msgstr "Fout bij het uitnodigen van lid"
|
msgstr "Fout bij het uitnodigen van lid"
|
||||||
|
|
||||||
@@ -798,7 +790,7 @@ msgstr "Fout bij bijwerken naam werkruimte"
|
|||||||
msgid "Error updating workspace URL"
|
msgid "Error updating workspace URL"
|
||||||
msgstr "Fout bij het bijwerken van werkruimte-URL"
|
msgstr "Fout bij het bijwerken van werkruimte-URL"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:233
|
#: src/views/members/components/InviteMemberForm.tsx:221
|
||||||
#: src/views/settings/components/UpgradeToProConfirmation.tsx:41
|
#: src/views/settings/components/UpgradeToProConfirmation.tsx:41
|
||||||
msgid "Error upgrading subscription"
|
msgid "Error upgrading subscription"
|
||||||
msgstr "Fout bij het upgraden van abonnement"
|
msgstr "Fout bij het upgraden van abonnement"
|
||||||
@@ -828,12 +820,12 @@ msgstr "Uitvoering"
|
|||||||
msgid "Failed to accept invitation. Please try again later, or contact customer support."
|
msgid "Failed to accept invitation. Please try again later, or contact customer support."
|
||||||
msgstr "Uitnodiging accepteren mislukt. Probeer het later opnieuw of neem contact op met de klantenservice."
|
msgstr "Uitnodiging accepteren mislukt. Probeer het later opnieuw of neem contact op met de klantenservice."
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:209
|
#: src/views/members/components/InviteMemberForm.tsx:197
|
||||||
msgid "Failed to copy invite link"
|
msgid "Failed to copy invite link"
|
||||||
msgstr "Kopiëren van uitnodigingslink mislukt"
|
msgstr "Kopiëren van uitnodigingslink mislukt"
|
||||||
|
|
||||||
#. placeholder {0}: provider.at(0)?.toUpperCase() + provider.slice(1)
|
#. placeholder {0}: provider.at(0)?.toUpperCase() + provider.slice(1)
|
||||||
#: src/components/AuthForm.tsx:288
|
#: src/components/AuthForm.tsx:273
|
||||||
msgid "Failed to login with {0}. Please try again."
|
msgid "Failed to login with {0}. Please try again."
|
||||||
msgstr "Inloggen met {0} is mislukt. Probeer het opnieuw."
|
msgstr "Inloggen met {0} is mislukt. Probeer het opnieuw."
|
||||||
|
|
||||||
@@ -881,8 +873,8 @@ msgstr "Voor duurzaamheid op lange termijn erkennen we dat alle goede open sourc
|
|||||||
msgid "Free"
|
msgid "Free"
|
||||||
msgstr "Gratis"
|
msgstr "Gratis"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:326
|
#: src/views/members/components/InviteMemberForm.tsx:312
|
||||||
#: src/views/members/index.tsx:209
|
#: src/views/members/index.tsx:208
|
||||||
msgid "Free Plan"
|
msgid "Free Plan"
|
||||||
msgstr "Gratis plan"
|
msgstr "Gratis plan"
|
||||||
|
|
||||||
@@ -1024,10 +1016,6 @@ msgstr "Importeren vanuit Trello"
|
|||||||
msgid "Importing your Trello boards into Kan is easy. You can follow our step-by-step guide <0>here</0>."
|
msgid "Importing your Trello boards into Kan is easy. You can follow our step-by-step guide <0>here</0>."
|
||||||
msgstr "Het importeren van je Trello-borden naar Kan is eenvoudig. Je kunt onze stap-voor-stap handleiding <0>hier</0> volgen."
|
msgstr "Het importeren van je Trello-borden naar Kan is eenvoudig. Je kunt onze stap-voor-stap handleiding <0>hier</0> volgen."
|
||||||
|
|
||||||
#: src/components/CommandPallette.tsx:168
|
|
||||||
msgid "in"
|
|
||||||
msgstr "in"
|
|
||||||
|
|
||||||
#: src/views/boards/components/TemplateBoards.tsx:16
|
#: src/views/boards/components/TemplateBoards.tsx:16
|
||||||
#: src/views/boards/components/TemplateBoards.tsx:22
|
#: src/views/boards/components/TemplateBoards.tsx:22
|
||||||
#: src/views/boards/components/TemplateBoards.tsx:45
|
#: src/views/boards/components/TemplateBoards.tsx:45
|
||||||
@@ -1047,7 +1035,7 @@ msgstr "Integraties"
|
|||||||
msgid "Interviewing"
|
msgid "Interviewing"
|
||||||
msgstr "Interviewen"
|
msgstr "Interviewen"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:51
|
#: src/views/members/components/InviteMemberForm.tsx:49
|
||||||
msgid "Invalid email address"
|
msgid "Invalid email address"
|
||||||
msgstr "Ongeldig e-mailadres"
|
msgstr "Ongeldig e-mailadres"
|
||||||
|
|
||||||
@@ -1055,28 +1043,24 @@ msgstr "Ongeldig e-mailadres"
|
|||||||
msgid "Invalid invitation"
|
msgid "Invalid invitation"
|
||||||
msgstr "Ongeldige uitnodiging"
|
msgstr "Ongeldige uitnodiging"
|
||||||
|
|
||||||
#: src/views/members/index.tsx:222
|
#: src/views/members/index.tsx:221
|
||||||
msgid "Invite"
|
msgid "Invite"
|
||||||
msgstr "Uitnodigen"
|
msgstr "Uitnodigen"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:202
|
#: src/views/members/components/InviteMemberForm.tsx:190
|
||||||
msgid "Invite link copied"
|
msgid "Invite link copied"
|
||||||
msgstr "Uitnodigingslink gekopieerd"
|
msgstr "Uitnodigingslink gekopieerd"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:203
|
#: src/views/members/components/InviteMemberForm.tsx:191
|
||||||
msgid "Invite link copied to clipboard"
|
msgid "Invite link copied to clipboard"
|
||||||
msgstr "Uitnodigingslink gekopieerd naar klembord"
|
msgstr "Uitnodigingslink gekopieerd naar klembord"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:123
|
|
||||||
msgid "Invite links require a Team or Pro subscription. Please upgrade your workspace."
|
|
||||||
msgstr "Uitnodigingslinks vereisen een Team- of Pro-abonnement. Upgrade je werkruimte."
|
|
||||||
|
|
||||||
#: src/views/card/components/MemberSelector.tsx:111
|
#: src/views/card/components/MemberSelector.tsx:111
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:365
|
#: src/views/members/components/InviteMemberForm.tsx:350
|
||||||
msgid "Invite member"
|
msgid "Invite member"
|
||||||
msgstr "Lid uitnodigen"
|
msgstr "Lid uitnodigen"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:329
|
#: src/views/members/components/InviteMemberForm.tsx:315
|
||||||
msgid "Inviting members requires a Team Plan. You'll be redirected to upgrade your workspace."
|
msgid "Inviting members requires a Team Plan. You'll be redirected to upgrade your workspace."
|
||||||
msgstr "Voor het uitnodigen van leden is een teamplan vereist. Je wordt doorgestuurd om je werkruimte te upgraden."
|
msgstr "Voor het uitnodigen van leden is een teamplan vereist. Je wordt doorgestuurd om je werkruimte te upgraden."
|
||||||
|
|
||||||
@@ -1125,7 +1109,7 @@ msgstr "Taal"
|
|||||||
msgid "Launch offer"
|
msgid "Launch offer"
|
||||||
msgstr "Introductieaanbieding"
|
msgstr "Introductieaanbieding"
|
||||||
|
|
||||||
#: src/views/members/index.tsx:192
|
#: src/views/members/index.tsx:191
|
||||||
msgid "Launch offer: Get unlimited members with Pro"
|
msgid "Launch offer: Get unlimited members with Pro"
|
||||||
msgstr "Lanceringsaanbieding: krijg onbeperkt aantal leden met Pro"
|
msgstr "Lanceringsaanbieding: krijg onbeperkt aantal leden met Pro"
|
||||||
|
|
||||||
@@ -1177,7 +1161,7 @@ msgstr "Lange termijn"
|
|||||||
msgid "Low Priority"
|
msgid "Low Priority"
|
||||||
msgstr "Lage prioriteit"
|
msgstr "Lage prioriteit"
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:418
|
#: src/components/AuthForm.tsx:373
|
||||||
msgid "magic link"
|
msgid "magic link"
|
||||||
msgstr "magische link"
|
msgstr "magische link"
|
||||||
|
|
||||||
@@ -1198,12 +1182,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:179
|
#: 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:174
|
#: src/views/members/index.tsx:173
|
||||||
msgid "Members | {0}"
|
msgid "Members | {0}"
|
||||||
msgstr "Leden | {0}"
|
msgstr "Leden | {0}"
|
||||||
|
|
||||||
@@ -1211,7 +1195,7 @@ msgstr "Leden | {0}"
|
|||||||
msgid "Monthly"
|
msgid "Monthly"
|
||||||
msgstr "Maandelijks"
|
msgstr "Maandelijks"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:159
|
#: src/views/members/components/InviteMemberForm.tsx:147
|
||||||
msgid "monthly billing"
|
msgid "monthly billing"
|
||||||
msgstr "maandelijkse facturering"
|
msgstr "maandelijkse facturering"
|
||||||
|
|
||||||
@@ -1307,10 +1291,6 @@ msgstr "Geen creditcard vereist"
|
|||||||
msgid "No lists"
|
msgid "No lists"
|
||||||
msgstr "Geen lijsten"
|
msgstr "Geen lijsten"
|
||||||
|
|
||||||
#: src/components/CommandPallette.tsx:184
|
|
||||||
msgid "No results found for \"{debouncedQuery}\"."
|
|
||||||
msgstr "Geen resultaten gevonden voor \"{debouncedQuery}\"."
|
|
||||||
|
|
||||||
#: src/views/boards/components/TemplateBoards.tsx:65
|
#: src/views/boards/components/TemplateBoards.tsx:65
|
||||||
msgid "Offer"
|
msgid "Offer"
|
||||||
msgstr "Aanbod"
|
msgstr "Aanbod"
|
||||||
@@ -1327,7 +1307,7 @@ msgstr "Zodra je je account verwijdert, is er geen weg terug. Deze actie kan nie
|
|||||||
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."
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:362
|
#: src/components/AuthForm.tsx:315
|
||||||
msgid "or"
|
msgid "or"
|
||||||
msgstr "of"
|
msgstr "of"
|
||||||
|
|
||||||
@@ -1347,14 +1327,6 @@ msgstr "Deeltijd"
|
|||||||
msgid "Password Changed"
|
msgid "Password Changed"
|
||||||
msgstr "Wachtwoord gewijzigd"
|
msgstr "Wachtwoord gewijzigd"
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:255
|
|
||||||
msgid "Password is required to login."
|
|
||||||
msgstr "Wachtwoord is vereist om in te loggen."
|
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:254
|
|
||||||
msgid "Password is required to sign up."
|
|
||||||
msgstr "Wachtwoord is vereist om je aan te melden."
|
|
||||||
|
|
||||||
#: src/views/settings/components/ChangePasswordConfirmation.tsx:22
|
#: src/views/settings/components/ChangePasswordConfirmation.tsx:22
|
||||||
msgid "Password must be at least 8 characters"
|
msgid "Password must be at least 8 characters"
|
||||||
msgstr "Wachtwoord moet minimaal 8 tekens bevatten"
|
msgstr "Wachtwoord moet minimaal 8 tekens bevatten"
|
||||||
@@ -1363,7 +1335,7 @@ 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/members/index.tsx:135
|
#: src/views/members/index.tsx:134
|
||||||
msgid "Paused"
|
msgid "Paused"
|
||||||
msgstr "Gepauzeerd"
|
msgstr "Gepauzeerd"
|
||||||
|
|
||||||
@@ -1371,7 +1343,7 @@ msgstr "Gepauzeerd"
|
|||||||
msgid "Payment frequency"
|
msgid "Payment frequency"
|
||||||
msgstr "Betalingsfrequentie"
|
msgstr "Betalingsfrequentie"
|
||||||
|
|
||||||
#: src/views/members/index.tsx:135
|
#: src/views/members/index.tsx:134
|
||||||
msgid "Pending"
|
msgid "Pending"
|
||||||
msgstr "In behandeling"
|
msgstr "In behandeling"
|
||||||
|
|
||||||
@@ -1392,15 +1364,15 @@ msgstr "Planning"
|
|||||||
msgid "Please confirm your new password"
|
msgid "Please confirm your new password"
|
||||||
msgstr "Bevestig je nieuwe wachtwoord"
|
msgstr "Bevestig je nieuwe wachtwoord"
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:388
|
#: src/components/AuthForm.tsx:341
|
||||||
msgid "Please enter a valid email address"
|
msgid "Please enter a valid email address"
|
||||||
msgstr "Voer een geldig e-mailadres in"
|
msgstr "Voer een geldig e-mailadres in"
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:376
|
#: src/components/AuthForm.tsx:329
|
||||||
msgid "Please enter a valid name"
|
msgid "Please enter a valid name"
|
||||||
msgstr "Voer een geldige naam in"
|
msgstr "Voer een geldige naam in"
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:401
|
#: src/components/AuthForm.tsx:354
|
||||||
msgid "Please enter a valid password"
|
msgid "Please enter a valid password"
|
||||||
msgstr "Voer een geldig wachtwoord in"
|
msgstr "Voer een geldig wachtwoord in"
|
||||||
|
|
||||||
@@ -1433,8 +1405,8 @@ msgstr "Selecteer een bestand om te uploaden."
|
|||||||
#: src/views/card/components/NewCommentForm.tsx:31
|
#: src/views/card/components/NewCommentForm.tsx:31
|
||||||
#: src/views/card/index.tsx:173
|
#: src/views/card/index.tsx:173
|
||||||
#: src/views/members/components/DeleteMemberConfirmation.tsx:28
|
#: src/views/members/components/DeleteMemberConfirmation.tsx:28
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:104
|
#: src/views/members/components/InviteMemberForm.tsx:102
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:234
|
#: src/views/members/components/InviteMemberForm.tsx:222
|
||||||
#: src/views/settings/components/Avatar.tsx:78
|
#: src/views/settings/components/Avatar.tsx:78
|
||||||
#: src/views/settings/components/Avatar.tsx:219
|
#: src/views/settings/components/Avatar.tsx:219
|
||||||
#: src/views/settings/components/DeleteAccountConfirmation.tsx:40
|
#: src/views/settings/components/DeleteAccountConfirmation.tsx:40
|
||||||
@@ -1447,8 +1419,8 @@ msgstr "Selecteer een bestand om te uploaden."
|
|||||||
msgid "Please try again later, or contact customer support."
|
msgid "Please try again later, or contact customer support."
|
||||||
msgstr "Probeer het later opnieuw of neem contact op met de klantenservice."
|
msgstr "Probeer het later opnieuw of neem contact op met de klantenservice."
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:129
|
#: src/views/members/components/InviteMemberForm.tsx:118
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:145
|
#: src/views/members/components/InviteMemberForm.tsx:133
|
||||||
msgid "Please try again later."
|
msgid "Please try again later."
|
||||||
msgstr "Probeer het later opnieuw."
|
msgstr "Probeer het later opnieuw."
|
||||||
|
|
||||||
@@ -1471,11 +1443,11 @@ msgstr "Privacybeleid"
|
|||||||
msgid "Private"
|
msgid "Private"
|
||||||
msgstr "Privé"
|
msgstr "Privé"
|
||||||
|
|
||||||
#: src/views/members/index.tsx:206
|
#: src/views/members/index.tsx:205
|
||||||
msgid "Pro Plan"
|
msgid "Pro Plan"
|
||||||
msgstr "Pro Plan"
|
msgstr "Pro Plan"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:315
|
#: src/views/members/components/InviteMemberForm.tsx:301
|
||||||
msgid "Pro Plan ∞"
|
msgid "Pro Plan ∞"
|
||||||
msgstr "Pro Plan ∞"
|
msgstr "Pro Plan ∞"
|
||||||
|
|
||||||
@@ -1519,7 +1491,7 @@ msgstr "Op afstand"
|
|||||||
msgid "Remove"
|
msgid "Remove"
|
||||||
msgstr "Verwijderen"
|
msgstr "Verwijderen"
|
||||||
|
|
||||||
#: src/views/members/index.tsx:149
|
#: src/views/members/index.tsx:148
|
||||||
msgid "Remove member"
|
msgid "Remove member"
|
||||||
msgstr "Lid verwijderen"
|
msgstr "Lid verwijderen"
|
||||||
|
|
||||||
@@ -1571,7 +1543,7 @@ msgstr "Beoordeling"
|
|||||||
msgid "Roadmap"
|
msgid "Roadmap"
|
||||||
msgstr "Roadmap"
|
msgstr "Roadmap"
|
||||||
|
|
||||||
#: src/views/members/index.tsx:244
|
#: src/views/members/index.tsx:243
|
||||||
msgid "Role"
|
msgid "Role"
|
||||||
msgstr "Rol"
|
msgstr "Rol"
|
||||||
|
|
||||||
@@ -1592,10 +1564,6 @@ msgstr "Bespaar tijd met herbruikbare bordsjablonen."
|
|||||||
msgid "Screening"
|
msgid "Screening"
|
||||||
msgstr "Screening"
|
msgstr "Screening"
|
||||||
|
|
||||||
#: src/components/CommandPallette.tsx:104
|
|
||||||
msgid "Search boards and cards..."
|
|
||||||
msgstr "Zoek in borden en kaarten..."
|
|
||||||
|
|
||||||
#: src/views/boards/components/ImportBoardsForm.tsx:274
|
#: src/views/boards/components/ImportBoardsForm.tsx:274
|
||||||
msgid "Select all"
|
msgid "Select all"
|
||||||
msgstr "Alles selecteren"
|
msgstr "Alles selecteren"
|
||||||
@@ -1649,6 +1617,10 @@ msgstr "Instellingen | Integraties"
|
|||||||
msgid "Settings | Workspace"
|
msgid "Settings | Workspace"
|
||||||
msgstr "Instellingen | Werkruimte"
|
msgstr "Instellingen | Werkruimte"
|
||||||
|
|
||||||
|
#: src/views/members/components/InviteMemberForm.tsx:327
|
||||||
|
msgid "Share invite link"
|
||||||
|
msgstr "Uitnodigingslink delen"
|
||||||
|
|
||||||
#: src/views/home/components/Header.tsx:100
|
#: src/views/home/components/Header.tsx:100
|
||||||
#: src/views/home/components/Header.tsx:138
|
#: src/views/home/components/Header.tsx:138
|
||||||
msgid "Sign in"
|
msgid "Sign in"
|
||||||
@@ -1675,7 +1647,7 @@ msgstr "Registreren uitgeschakeld"
|
|||||||
msgid "Sign up is currently disabled. Please try again later."
|
msgid "Sign up is currently disabled. Please try again later."
|
||||||
msgstr "Registreren is momenteel uitgeschakeld. Probeer het later opnieuw."
|
msgstr "Registreren is momenteel uitgeschakeld. Probeer het later opnieuw."
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:417
|
#: src/components/AuthForm.tsx:370
|
||||||
msgid "Sign up with "
|
msgid "Sign up with "
|
||||||
msgstr "Registreren met "
|
msgstr "Registreren met "
|
||||||
|
|
||||||
@@ -1699,12 +1671,8 @@ msgstr "Softwareontwikkeling"
|
|||||||
msgid "Star on Github"
|
msgid "Star on Github"
|
||||||
msgstr "Star op Github"
|
msgstr "Star op Github"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:122
|
#: src/components/AuthForm.tsx:207
|
||||||
msgid "Subscription Required"
|
#: src/components/AuthForm.tsx:224
|
||||||
msgstr "Abonnement vereist"
|
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:212
|
|
||||||
#: src/components/AuthForm.tsx:229
|
|
||||||
msgid "Success"
|
msgid "Success"
|
||||||
msgstr "Geslaagd"
|
msgstr "Geslaagd"
|
||||||
|
|
||||||
@@ -1724,8 +1692,8 @@ msgstr "Ondersteun de ontwikkeling van het project"
|
|||||||
msgid "System"
|
msgid "System"
|
||||||
msgstr "Systeem"
|
msgstr "Systeem"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:315
|
#: src/views/members/components/InviteMemberForm.tsx:301
|
||||||
#: src/views/members/index.tsx:208
|
#: src/views/members/index.tsx:207
|
||||||
msgid "Team Plan"
|
msgid "Team Plan"
|
||||||
msgstr "Teamplan"
|
msgstr "Teamplan"
|
||||||
|
|
||||||
@@ -2008,7 +1976,7 @@ msgstr "Upgraden naar Pro"
|
|||||||
msgid "Upgrade to Pro ($29/month)"
|
msgid "Upgrade to Pro ($29/month)"
|
||||||
msgstr "Upgrade naar Pro ($29/maand)"
|
msgstr "Upgrade naar Pro ($29/maand)"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:357
|
#: src/views/members/components/InviteMemberForm.tsx:341
|
||||||
msgid "Upgrade to Team Plan"
|
msgid "Upgrade to Team Plan"
|
||||||
msgstr "Upgraden naar teamplan"
|
msgstr "Upgraden naar teamplan"
|
||||||
|
|
||||||
@@ -2036,11 +2004,11 @@ 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:238
|
#: src/views/members/index.tsx:237
|
||||||
msgid "User"
|
msgid "User"
|
||||||
msgstr "Gebruiker"
|
msgstr "Gebruiker"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:98
|
#: src/views/members/components/InviteMemberForm.tsx:96
|
||||||
msgid "User is already a member of this workspace"
|
msgid "User is already a member of this workspace"
|
||||||
msgstr "Gebruiker is al lid van deze werkruimte"
|
msgstr "Gebruiker is al lid van deze werkruimte"
|
||||||
|
|
||||||
@@ -2199,15 +2167,15 @@ msgstr "Je kunt teamleden uitnodigen door op de knop \"Uitnodigen\" in de rechte
|
|||||||
msgid "You can self-host by following the instructions in our <0>repo</0>."
|
msgid "You can self-host by following the instructions in our <0>repo</0>."
|
||||||
msgstr "Je kunt zelf hosten door de instructies in onze <0>repo</0> te volgen."
|
msgstr "Je kunt zelf hosten door de instructies in onze <0>repo</0> te volgen."
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:230
|
#: src/components/AuthForm.tsx:225
|
||||||
msgid "You have been logged in successfully."
|
msgid "You have been logged in successfully."
|
||||||
msgstr "Je bent succesvol ingelogd."
|
msgstr "Je bent succesvol ingelogd."
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:213
|
#: src/components/AuthForm.tsx:208
|
||||||
msgid "You have been signed up successfully."
|
msgid "You have been signed up successfully."
|
||||||
msgstr "Je bent succesvol geregistreerd."
|
msgstr "Je bent succesvol geregistreerd."
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:319
|
#: src/views/members/components/InviteMemberForm.tsx:305
|
||||||
msgid "You have unlimited seats with your Pro Plan. There is no additional charge for new members!"
|
msgid "You have unlimited seats with your Pro Plan. There is no additional charge for new members!"
|
||||||
msgstr "Je hebt onbeperkte plaatsen met je Pro Plan. Er zijn geen extra kosten voor nieuwe leden!"
|
msgstr "Je hebt onbeperkte plaatsen met je Pro Plan. Er zijn geen extra kosten voor nieuwe leden!"
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -36,12 +36,12 @@ msgstr "{0} метки"
|
|||||||
msgid "{boardCount, plural, one {Import board (1)} other {Import boards ({boardCount})}}"
|
msgid "{boardCount, plural, one {Import board (1)} other {Import boards ({boardCount})}}"
|
||||||
msgstr "{boardCount, plural, one {Импортировать доску (1)} other {Импортировать доски ({boardCount})}}"
|
msgstr "{boardCount, plural, one {Импортировать доску (1)} other {Импортировать доски ({boardCount})}}"
|
||||||
|
|
||||||
|
#: src/views/members/components/InviteMemberForm.tsx:146
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:158
|
#: src/views/members/components/InviteMemberForm.tsx:158
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:170
|
|
||||||
msgid "$10/month"
|
msgid "$10/month"
|
||||||
msgstr "$10/месяц"
|
msgstr "$10/месяц"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:170
|
#: src/views/members/components/InviteMemberForm.tsx:158
|
||||||
msgid "$8/month"
|
msgid "$8/month"
|
||||||
msgstr "$8/месяц"
|
msgstr "$8/месяц"
|
||||||
|
|
||||||
@@ -101,7 +101,7 @@ msgid "Add label"
|
|||||||
msgstr "Добавить метку"
|
msgstr "Добавить метку"
|
||||||
|
|
||||||
#: src/views/card/components/MemberSelector.tsx:130
|
#: src/views/card/components/MemberSelector.tsx:130
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:250
|
#: src/views/members/components/InviteMemberForm.tsx:238
|
||||||
msgid "Add member"
|
msgid "Add member"
|
||||||
msgstr "Добавить участника"
|
msgstr "Добавить участника"
|
||||||
|
|
||||||
@@ -136,7 +136,7 @@ msgstr "добавлен элемент контрольного списка <0
|
|||||||
msgid "added label <0>{0}</0>"
|
msgid "added label <0>{0}</0>"
|
||||||
msgstr "добавлена метка <0>{0}</0>"
|
msgstr "добавлена метка <0>{0}</0>"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:320
|
#: src/views/members/components/InviteMemberForm.tsx:306
|
||||||
msgid "Adding a new member will cost an additional {price} ({billingType}) per seat."
|
msgid "Adding a new member will cost an additional {price} ({billingType}) per seat."
|
||||||
msgstr "Добавление нового участника будет стоить дополнительно {price} ({billingType}) за место."
|
msgstr "Добавление нового участника будет стоить дополнительно {price} ({billingType}) за место."
|
||||||
|
|
||||||
@@ -164,7 +164,7 @@ msgstr "Произошла ошибка при отключении вашего
|
|||||||
msgid "An unexpected error occurred. Please try again later."
|
msgid "An unexpected error occurred. Please try again later."
|
||||||
msgstr "Произошла непредвиденная ошибка. Пожалуйста, попробуйте позже."
|
msgstr "Произошла непредвиденная ошибка. Пожалуйста, попробуйте позже."
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:304
|
#: src/views/members/components/InviteMemberForm.tsx:290
|
||||||
msgid "Anyone with this link can join your workspace"
|
msgid "Anyone with this link can join your workspace"
|
||||||
msgstr "Любой, у кого есть эта ссылка, может присоединиться к вашему рабочему пространству"
|
msgstr "Любой, у кого есть эта ссылка, может присоединиться к вашему рабочему пространству"
|
||||||
|
|
||||||
@@ -250,11 +250,11 @@ msgstr "Бэклог"
|
|||||||
msgid "Basic Kanban"
|
msgid "Basic Kanban"
|
||||||
msgstr "Базовый Канбан"
|
msgstr "Базовый Канбан"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:171
|
#: src/views/members/components/InviteMemberForm.tsx:159
|
||||||
msgid "billed annually"
|
msgid "billed annually"
|
||||||
msgstr "выставляется счет ежегодно"
|
msgstr "выставляется счет ежегодно"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:171
|
#: src/views/members/components/InviteMemberForm.tsx:159
|
||||||
msgid "billed monthly"
|
msgid "billed monthly"
|
||||||
msgstr "выставляется счет ежемесячно"
|
msgstr "выставляется счет ежемесячно"
|
||||||
|
|
||||||
@@ -463,12 +463,12 @@ msgstr "Свяжитесь с нами"
|
|||||||
msgid "Content Creation"
|
msgid "Content Creation"
|
||||||
msgstr "Создание контента"
|
msgstr "Создание контента"
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:417
|
#: src/components/AuthForm.tsx:370
|
||||||
msgid "Continue with "
|
msgid "Continue with "
|
||||||
msgstr "Продолжить с "
|
msgstr "Продолжить с "
|
||||||
|
|
||||||
#. placeholder {0}: key === "oidc" ? oidcProviderName : provider.name
|
#. placeholder {0}: key === "oidc" ? oidcProviderName : provider.name
|
||||||
#: src/components/AuthForm.tsx:348
|
#: src/components/AuthForm.tsx:301
|
||||||
msgid "Continue with {0}"
|
msgid "Continue with {0}"
|
||||||
msgstr "Продолжить с {0}"
|
msgstr "Продолжить с {0}"
|
||||||
|
|
||||||
@@ -498,10 +498,6 @@ msgstr "Создать карточку"
|
|||||||
msgid "Create checklist"
|
msgid "Create checklist"
|
||||||
msgstr "Создать чек-лист"
|
msgstr "Создать чек-лист"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:342
|
|
||||||
msgid "Create invite link"
|
|
||||||
msgstr "Создать ссылку-приглашение"
|
|
||||||
|
|
||||||
#: src/components/LabelForm.tsx:238
|
#: src/components/LabelForm.tsx:238
|
||||||
msgid "Create label"
|
msgid "Create label"
|
||||||
msgstr "Создать метку"
|
msgstr "Создать метку"
|
||||||
@@ -528,7 +524,7 @@ msgid "Create new list"
|
|||||||
msgstr "Создать новый список"
|
msgstr "Создать новый список"
|
||||||
|
|
||||||
#: src/components/NewWorkspaceForm.tsx:384
|
#: src/components/NewWorkspaceForm.tsx:384
|
||||||
#: src/components/WorkspaceMenu.tsx:149
|
#: src/components/WorkspaceMenu.tsx:116
|
||||||
msgid "Create workspace"
|
msgid "Create workspace"
|
||||||
msgstr "Создать рабочее пространство"
|
msgstr "Создать рабочее пространство"
|
||||||
|
|
||||||
@@ -569,10 +565,6 @@ msgstr "Служба поддержки"
|
|||||||
msgid "Dark"
|
msgid "Dark"
|
||||||
msgstr "Тёмный"
|
msgstr "Тёмный"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:341
|
|
||||||
msgid "Deactivate invite link"
|
|
||||||
msgstr "Деактивировать ссылку-приглашение"
|
|
||||||
|
|
||||||
#: src/components/DeleteLabelConfirmation.tsx:51
|
#: src/components/DeleteLabelConfirmation.tsx:51
|
||||||
#: src/components/LabelForm.tsx:228
|
#: src/components/LabelForm.tsx:228
|
||||||
#: src/views/card/components/DeleteCardConfirmation.tsx:92
|
#: src/views/card/components/DeleteCardConfirmation.tsx:92
|
||||||
@@ -705,11 +697,11 @@ msgstr "Редактировать URL рабочей области"
|
|||||||
msgid "Editing"
|
msgid "Editing"
|
||||||
msgstr "Редактирование"
|
msgstr "Редактирование"
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:418
|
#: src/components/AuthForm.tsx:372
|
||||||
msgid "email"
|
msgid "email"
|
||||||
msgstr "email"
|
msgstr "email"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:265
|
#: src/views/members/components/InviteMemberForm.tsx:252
|
||||||
msgid "Email"
|
msgid "Email"
|
||||||
msgstr "Email"
|
msgstr "Email"
|
||||||
|
|
||||||
@@ -725,11 +717,11 @@ msgstr "Введите ваш текущий пароль"
|
|||||||
msgid "Enter your current password and choose a new secure password."
|
msgid "Enter your current password and choose a new secure password."
|
||||||
msgstr "Введите ваш текущий пароль и выберите новый безопасный пароль."
|
msgstr "Введите ваш текущий пароль и выберите новый безопасный пароль."
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:384
|
#: src/components/AuthForm.tsx:337
|
||||||
msgid "Enter your email address"
|
msgid "Enter your email address"
|
||||||
msgstr "Введите ваш адрес электронной почты"
|
msgstr "Введите ваш адрес электронной почты"
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:372
|
#: src/components/AuthForm.tsx:325
|
||||||
msgid "Enter your name"
|
msgid "Enter your name"
|
||||||
msgstr "Введите ваше имя"
|
msgstr "Введите ваше имя"
|
||||||
|
|
||||||
@@ -737,11 +729,11 @@ msgstr "Введите ваше имя"
|
|||||||
msgid "Enter your new password"
|
msgid "Enter your new password"
|
||||||
msgstr "Введите ваш новый пароль"
|
msgstr "Введите ваш новый пароль"
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:397
|
#: src/components/AuthForm.tsx:350
|
||||||
msgid "Enter your password"
|
msgid "Enter your password"
|
||||||
msgstr "Введите ваш пароль"
|
msgstr "Введите ваш пароль"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:208
|
#: src/views/members/components/InviteMemberForm.tsx:196
|
||||||
msgid "Error"
|
msgid "Error"
|
||||||
msgstr "Ошибка"
|
msgstr "Ошибка"
|
||||||
|
|
||||||
@@ -749,11 +741,11 @@ msgstr "Ошибка"
|
|||||||
msgid "Error Changing Password"
|
msgid "Error Changing Password"
|
||||||
msgstr "Ошибка при изменении пароля"
|
msgstr "Ошибка при изменении пароля"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:128
|
#: src/views/members/components/InviteMemberForm.tsx:117
|
||||||
msgid "Error creating invite link"
|
msgid "Error creating invite link"
|
||||||
msgstr "Ошибка при создании ссылки приглашения"
|
msgstr "Ошибка при создании ссылки приглашения"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:144
|
#: src/views/members/components/InviteMemberForm.tsx:132
|
||||||
msgid "Error deactivating invite link"
|
msgid "Error deactivating invite link"
|
||||||
msgstr "Ошибка при деактивации ссылки приглашения"
|
msgstr "Ошибка при деактивации ссылки приглашения"
|
||||||
|
|
||||||
@@ -773,8 +765,8 @@ msgstr "Ошибка при удалении рабочей области"
|
|||||||
msgid "Error disconnecting Trello"
|
msgid "Error disconnecting Trello"
|
||||||
msgstr "Ошибка при отключении Trello"
|
msgstr "Ошибка при отключении Trello"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:97
|
#: src/views/members/components/InviteMemberForm.tsx:95
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:103
|
#: src/views/members/components/InviteMemberForm.tsx:101
|
||||||
msgid "Error inviting member"
|
msgid "Error inviting member"
|
||||||
msgstr "Ошибка при приглашении участника"
|
msgstr "Ошибка при приглашении участника"
|
||||||
|
|
||||||
@@ -798,7 +790,7 @@ msgstr "Ошибка при обновлении имени рабочей об
|
|||||||
msgid "Error updating workspace URL"
|
msgid "Error updating workspace URL"
|
||||||
msgstr "Ошибка при обновлении URL рабочей области"
|
msgstr "Ошибка при обновлении URL рабочей области"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:233
|
#: src/views/members/components/InviteMemberForm.tsx:221
|
||||||
#: src/views/settings/components/UpgradeToProConfirmation.tsx:41
|
#: src/views/settings/components/UpgradeToProConfirmation.tsx:41
|
||||||
msgid "Error upgrading subscription"
|
msgid "Error upgrading subscription"
|
||||||
msgstr "Ошибка при обновлении подписки"
|
msgstr "Ошибка при обновлении подписки"
|
||||||
@@ -828,12 +820,12 @@ msgstr "Выполнение"
|
|||||||
msgid "Failed to accept invitation. Please try again later, or contact customer support."
|
msgid "Failed to accept invitation. Please try again later, or contact customer support."
|
||||||
msgstr "Не удалось принять приглашение. Пожалуйста, попробуйте позже или свяжитесь со службой поддержки."
|
msgstr "Не удалось принять приглашение. Пожалуйста, попробуйте позже или свяжитесь со службой поддержки."
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:209
|
#: src/views/members/components/InviteMemberForm.tsx:197
|
||||||
msgid "Failed to copy invite link"
|
msgid "Failed to copy invite link"
|
||||||
msgstr "Не удалось скопировать ссылку приглашения"
|
msgstr "Не удалось скопировать ссылку приглашения"
|
||||||
|
|
||||||
#. placeholder {0}: provider.at(0)?.toUpperCase() + provider.slice(1)
|
#. placeholder {0}: provider.at(0)?.toUpperCase() + provider.slice(1)
|
||||||
#: src/components/AuthForm.tsx:288
|
#: src/components/AuthForm.tsx:273
|
||||||
msgid "Failed to login with {0}. Please try again."
|
msgid "Failed to login with {0}. Please try again."
|
||||||
msgstr "Не удалось войти с {0}. Пожалуйста, попробуйте снова."
|
msgstr "Не удалось войти с {0}. Пожалуйста, попробуйте снова."
|
||||||
|
|
||||||
@@ -881,8 +873,8 @@ msgstr "Для долгосрочной устойчивости мы призн
|
|||||||
msgid "Free"
|
msgid "Free"
|
||||||
msgstr "Бесплатно"
|
msgstr "Бесплатно"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:326
|
#: src/views/members/components/InviteMemberForm.tsx:312
|
||||||
#: src/views/members/index.tsx:209
|
#: src/views/members/index.tsx:208
|
||||||
msgid "Free Plan"
|
msgid "Free Plan"
|
||||||
msgstr "Бесплатный план"
|
msgstr "Бесплатный план"
|
||||||
|
|
||||||
@@ -1024,10 +1016,6 @@ msgstr "Импорт из Trello"
|
|||||||
msgid "Importing your Trello boards into Kan is easy. You can follow our step-by-step guide <0>here</0>."
|
msgid "Importing your Trello boards into Kan is easy. You can follow our step-by-step guide <0>here</0>."
|
||||||
msgstr "Импортировать ваши доски Trello в Kan легко. Вы можете следовать нашему пошаговому руководству <0>здесь</0>."
|
msgstr "Импортировать ваши доски Trello в Kan легко. Вы можете следовать нашему пошаговому руководству <0>здесь</0>."
|
||||||
|
|
||||||
#: src/components/CommandPallette.tsx:168
|
|
||||||
msgid "in"
|
|
||||||
msgstr "в"
|
|
||||||
|
|
||||||
#: src/views/boards/components/TemplateBoards.tsx:16
|
#: src/views/boards/components/TemplateBoards.tsx:16
|
||||||
#: src/views/boards/components/TemplateBoards.tsx:22
|
#: src/views/boards/components/TemplateBoards.tsx:22
|
||||||
#: src/views/boards/components/TemplateBoards.tsx:45
|
#: src/views/boards/components/TemplateBoards.tsx:45
|
||||||
@@ -1047,7 +1035,7 @@ msgstr "Интеграции"
|
|||||||
msgid "Interviewing"
|
msgid "Interviewing"
|
||||||
msgstr "Собеседование"
|
msgstr "Собеседование"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:51
|
#: src/views/members/components/InviteMemberForm.tsx:49
|
||||||
msgid "Invalid email address"
|
msgid "Invalid email address"
|
||||||
msgstr "Недействительный адрес электронной почты"
|
msgstr "Недействительный адрес электронной почты"
|
||||||
|
|
||||||
@@ -1055,28 +1043,24 @@ msgstr "Недействительный адрес электронной по
|
|||||||
msgid "Invalid invitation"
|
msgid "Invalid invitation"
|
||||||
msgstr "Недействительное приглашение"
|
msgstr "Недействительное приглашение"
|
||||||
|
|
||||||
#: src/views/members/index.tsx:222
|
#: src/views/members/index.tsx:221
|
||||||
msgid "Invite"
|
msgid "Invite"
|
||||||
msgstr "Пригласить"
|
msgstr "Пригласить"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:202
|
#: src/views/members/components/InviteMemberForm.tsx:190
|
||||||
msgid "Invite link copied"
|
msgid "Invite link copied"
|
||||||
msgstr "Ссылка приглашения скопирована"
|
msgstr "Ссылка приглашения скопирована"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:203
|
#: src/views/members/components/InviteMemberForm.tsx:191
|
||||||
msgid "Invite link copied to clipboard"
|
msgid "Invite link copied to clipboard"
|
||||||
msgstr "Ссылка приглашения скопирована в буфер обмена"
|
msgstr "Ссылка приглашения скопирована в буфер обмена"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:123
|
|
||||||
msgid "Invite links require a Team or Pro subscription. Please upgrade your workspace."
|
|
||||||
msgstr "Ссылки для приглашений требуют подписки Team или Pro. Пожалуйста, обновите ваше рабочее пространство."
|
|
||||||
|
|
||||||
#: src/views/card/components/MemberSelector.tsx:111
|
#: src/views/card/components/MemberSelector.tsx:111
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:365
|
#: src/views/members/components/InviteMemberForm.tsx:350
|
||||||
msgid "Invite member"
|
msgid "Invite member"
|
||||||
msgstr "Пригласить участника"
|
msgstr "Пригласить участника"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:329
|
#: src/views/members/components/InviteMemberForm.tsx:315
|
||||||
msgid "Inviting members requires a Team Plan. You'll be redirected to upgrade your workspace."
|
msgid "Inviting members requires a Team Plan. You'll be redirected to upgrade your workspace."
|
||||||
msgstr "Для приглашения участников необходим командный план. Вы будете перенаправлены для обновления вашего рабочего пространства."
|
msgstr "Для приглашения участников необходим командный план. Вы будете перенаправлены для обновления вашего рабочего пространства."
|
||||||
|
|
||||||
@@ -1125,7 +1109,7 @@ msgstr "Язык"
|
|||||||
msgid "Launch offer"
|
msgid "Launch offer"
|
||||||
msgstr "Стартовое предложение"
|
msgstr "Стартовое предложение"
|
||||||
|
|
||||||
#: src/views/members/index.tsx:192
|
#: src/views/members/index.tsx:191
|
||||||
msgid "Launch offer: Get unlimited members with Pro"
|
msgid "Launch offer: Get unlimited members with Pro"
|
||||||
msgstr "Стартовое предложение: получите неограниченное количество участников с Pro"
|
msgstr "Стартовое предложение: получите неограниченное количество участников с Pro"
|
||||||
|
|
||||||
@@ -1177,7 +1161,7 @@ msgstr "Долгосрочный"
|
|||||||
msgid "Low Priority"
|
msgid "Low Priority"
|
||||||
msgstr "Низкий приоритет"
|
msgstr "Низкий приоритет"
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:418
|
#: src/components/AuthForm.tsx:373
|
||||||
msgid "magic link"
|
msgid "magic link"
|
||||||
msgstr "магическая ссылка"
|
msgstr "магическая ссылка"
|
||||||
|
|
||||||
@@ -1198,12 +1182,12 @@ msgstr "Средний приоритет"
|
|||||||
#: 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:179
|
#: src/views/members/index.tsx:178
|
||||||
msgid "Members"
|
msgid "Members"
|
||||||
msgstr "Участники"
|
msgstr "Участники"
|
||||||
|
|
||||||
#. placeholder {0}: workspace.name ?? "Workspace"
|
#. placeholder {0}: workspace.name ?? "Workspace"
|
||||||
#: src/views/members/index.tsx:174
|
#: src/views/members/index.tsx:173
|
||||||
msgid "Members | {0}"
|
msgid "Members | {0}"
|
||||||
msgstr "Участники | {0}"
|
msgstr "Участники | {0}"
|
||||||
|
|
||||||
@@ -1211,7 +1195,7 @@ msgstr "Участники | {0}"
|
|||||||
msgid "Monthly"
|
msgid "Monthly"
|
||||||
msgstr "Ежемесячно"
|
msgstr "Ежемесячно"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:159
|
#: src/views/members/components/InviteMemberForm.tsx:147
|
||||||
msgid "monthly billing"
|
msgid "monthly billing"
|
||||||
msgstr "ежемесячная оплата"
|
msgstr "ежемесячная оплата"
|
||||||
|
|
||||||
@@ -1307,10 +1291,6 @@ msgstr "Кредитная карта не требуется"
|
|||||||
msgid "No lists"
|
msgid "No lists"
|
||||||
msgstr "Нет списков"
|
msgstr "Нет списков"
|
||||||
|
|
||||||
#: src/components/CommandPallette.tsx:184
|
|
||||||
msgid "No results found for \"{debouncedQuery}\"."
|
|
||||||
msgstr "Результаты для запроса \"{debouncedQuery}\" не найдены."
|
|
||||||
|
|
||||||
#: src/views/boards/components/TemplateBoards.tsx:65
|
#: src/views/boards/components/TemplateBoards.tsx:65
|
||||||
msgid "Offer"
|
msgid "Offer"
|
||||||
msgstr "Предложение"
|
msgstr "Предложение"
|
||||||
@@ -1327,7 +1307,7 @@ msgstr "После удаления аккаунта возврат будет
|
|||||||
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 "После удаления рабочего пространства возврат будет невозможен. Это действие необратимо."
|
msgstr "После удаления рабочего пространства возврат будет невозможен. Это действие необратимо."
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:362
|
#: src/components/AuthForm.tsx:315
|
||||||
msgid "or"
|
msgid "or"
|
||||||
msgstr "или"
|
msgstr "или"
|
||||||
|
|
||||||
@@ -1347,14 +1327,6 @@ msgstr "Частичная занятость"
|
|||||||
msgid "Password Changed"
|
msgid "Password Changed"
|
||||||
msgstr "Пароль изменён"
|
msgstr "Пароль изменён"
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:255
|
|
||||||
msgid "Password is required to login."
|
|
||||||
msgstr "Пароль необходим для входа."
|
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:254
|
|
||||||
msgid "Password is required to sign up."
|
|
||||||
msgstr "Пароль необходим для регистрации."
|
|
||||||
|
|
||||||
#: src/views/settings/components/ChangePasswordConfirmation.tsx:22
|
#: src/views/settings/components/ChangePasswordConfirmation.tsx:22
|
||||||
msgid "Password must be at least 8 characters"
|
msgid "Password must be at least 8 characters"
|
||||||
msgstr "Пароль должен содержать не менее 8 символов"
|
msgstr "Пароль должен содержать не менее 8 символов"
|
||||||
@@ -1363,7 +1335,7 @@ msgstr "Пароль должен содержать не менее 8 симв
|
|||||||
msgid "Passwords do not match"
|
msgid "Passwords do not match"
|
||||||
msgstr "Пароли не совпадают"
|
msgstr "Пароли не совпадают"
|
||||||
|
|
||||||
#: src/views/members/index.tsx:135
|
#: src/views/members/index.tsx:134
|
||||||
msgid "Paused"
|
msgid "Paused"
|
||||||
msgstr "Приостановлено"
|
msgstr "Приостановлено"
|
||||||
|
|
||||||
@@ -1371,7 +1343,7 @@ msgstr "Приостановлено"
|
|||||||
msgid "Payment frequency"
|
msgid "Payment frequency"
|
||||||
msgstr "Частота платежей"
|
msgstr "Частота платежей"
|
||||||
|
|
||||||
#: src/views/members/index.tsx:135
|
#: src/views/members/index.tsx:134
|
||||||
msgid "Pending"
|
msgid "Pending"
|
||||||
msgstr "В ожидании"
|
msgstr "В ожидании"
|
||||||
|
|
||||||
@@ -1392,15 +1364,15 @@ msgstr "Планирование"
|
|||||||
msgid "Please confirm your new password"
|
msgid "Please confirm your new password"
|
||||||
msgstr "Пожалуйста, подтвердите новый пароль"
|
msgstr "Пожалуйста, подтвердите новый пароль"
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:388
|
#: src/components/AuthForm.tsx:341
|
||||||
msgid "Please enter a valid email address"
|
msgid "Please enter a valid email address"
|
||||||
msgstr "Пожалуйста, введите действительный адрес электронной почты"
|
msgstr "Пожалуйста, введите действительный адрес электронной почты"
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:376
|
#: src/components/AuthForm.tsx:329
|
||||||
msgid "Please enter a valid name"
|
msgid "Please enter a valid name"
|
||||||
msgstr "Пожалуйста, введите действительное имя"
|
msgstr "Пожалуйста, введите действительное имя"
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:401
|
#: src/components/AuthForm.tsx:354
|
||||||
msgid "Please enter a valid password"
|
msgid "Please enter a valid password"
|
||||||
msgstr "Пожалуйста, введите действительный пароль"
|
msgstr "Пожалуйста, введите действительный пароль"
|
||||||
|
|
||||||
@@ -1433,8 +1405,8 @@ msgstr "Пожалуйста, выберите файл для загрузки.
|
|||||||
#: src/views/card/components/NewCommentForm.tsx:31
|
#: src/views/card/components/NewCommentForm.tsx:31
|
||||||
#: src/views/card/index.tsx:173
|
#: src/views/card/index.tsx:173
|
||||||
#: src/views/members/components/DeleteMemberConfirmation.tsx:28
|
#: src/views/members/components/DeleteMemberConfirmation.tsx:28
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:104
|
#: src/views/members/components/InviteMemberForm.tsx:102
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:234
|
#: src/views/members/components/InviteMemberForm.tsx:222
|
||||||
#: src/views/settings/components/Avatar.tsx:78
|
#: src/views/settings/components/Avatar.tsx:78
|
||||||
#: src/views/settings/components/Avatar.tsx:219
|
#: src/views/settings/components/Avatar.tsx:219
|
||||||
#: src/views/settings/components/DeleteAccountConfirmation.tsx:40
|
#: src/views/settings/components/DeleteAccountConfirmation.tsx:40
|
||||||
@@ -1447,8 +1419,8 @@ msgstr "Пожалуйста, выберите файл для загрузки.
|
|||||||
msgid "Please try again later, or contact customer support."
|
msgid "Please try again later, or contact customer support."
|
||||||
msgstr "Пожалуйста, попробуйте позже или свяжитесь со службой поддержки."
|
msgstr "Пожалуйста, попробуйте позже или свяжитесь со службой поддержки."
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:129
|
#: src/views/members/components/InviteMemberForm.tsx:118
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:145
|
#: src/views/members/components/InviteMemberForm.tsx:133
|
||||||
msgid "Please try again later."
|
msgid "Please try again later."
|
||||||
msgstr "Пожалуйста, попробуйте позже."
|
msgstr "Пожалуйста, попробуйте позже."
|
||||||
|
|
||||||
@@ -1471,11 +1443,11 @@ msgstr "Политика конфиденциальности"
|
|||||||
msgid "Private"
|
msgid "Private"
|
||||||
msgstr "Личное"
|
msgstr "Личное"
|
||||||
|
|
||||||
#: src/views/members/index.tsx:206
|
#: src/views/members/index.tsx:205
|
||||||
msgid "Pro Plan"
|
msgid "Pro Plan"
|
||||||
msgstr "Профессиональный план"
|
msgstr "Профессиональный план"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:315
|
#: src/views/members/components/InviteMemberForm.tsx:301
|
||||||
msgid "Pro Plan ∞"
|
msgid "Pro Plan ∞"
|
||||||
msgstr "Профессиональный план ∞"
|
msgstr "Профессиональный план ∞"
|
||||||
|
|
||||||
@@ -1519,7 +1491,7 @@ msgstr "Удалённый"
|
|||||||
msgid "Remove"
|
msgid "Remove"
|
||||||
msgstr "Удалить"
|
msgstr "Удалить"
|
||||||
|
|
||||||
#: src/views/members/index.tsx:149
|
#: src/views/members/index.tsx:148
|
||||||
msgid "Remove member"
|
msgid "Remove member"
|
||||||
msgstr "Удалить участника"
|
msgstr "Удалить участника"
|
||||||
|
|
||||||
@@ -1571,7 +1543,7 @@ msgstr "Обзор"
|
|||||||
msgid "Roadmap"
|
msgid "Roadmap"
|
||||||
msgstr "Дорожная карта"
|
msgstr "Дорожная карта"
|
||||||
|
|
||||||
#: src/views/members/index.tsx:244
|
#: src/views/members/index.tsx:243
|
||||||
msgid "Role"
|
msgid "Role"
|
||||||
msgstr "Роль"
|
msgstr "Роль"
|
||||||
|
|
||||||
@@ -1592,10 +1564,6 @@ msgstr "Экономьте время с помощью шаблонов дос
|
|||||||
msgid "Screening"
|
msgid "Screening"
|
||||||
msgstr "Отбор"
|
msgstr "Отбор"
|
||||||
|
|
||||||
#: src/components/CommandPallette.tsx:104
|
|
||||||
msgid "Search boards and cards..."
|
|
||||||
msgstr "Поиск досок и карточек..."
|
|
||||||
|
|
||||||
#: src/views/boards/components/ImportBoardsForm.tsx:274
|
#: src/views/boards/components/ImportBoardsForm.tsx:274
|
||||||
msgid "Select all"
|
msgid "Select all"
|
||||||
msgstr "Выбрать все"
|
msgstr "Выбрать все"
|
||||||
@@ -1649,6 +1617,10 @@ msgstr "Настройки | Интеграции"
|
|||||||
msgid "Settings | Workspace"
|
msgid "Settings | Workspace"
|
||||||
msgstr "Настройки | Рабочая область"
|
msgstr "Настройки | Рабочая область"
|
||||||
|
|
||||||
|
#: src/views/members/components/InviteMemberForm.tsx:327
|
||||||
|
msgid "Share invite link"
|
||||||
|
msgstr "Поделиться ссылкой приглашения"
|
||||||
|
|
||||||
#: src/views/home/components/Header.tsx:100
|
#: src/views/home/components/Header.tsx:100
|
||||||
#: src/views/home/components/Header.tsx:138
|
#: src/views/home/components/Header.tsx:138
|
||||||
msgid "Sign in"
|
msgid "Sign in"
|
||||||
@@ -1675,7 +1647,7 @@ msgstr "Регистрация отключена"
|
|||||||
msgid "Sign up is currently disabled. Please try again later."
|
msgid "Sign up is currently disabled. Please try again later."
|
||||||
msgstr "Регистрация в настоящее время отключена. Пожалуйста, попробуйте позже."
|
msgstr "Регистрация в настоящее время отключена. Пожалуйста, попробуйте позже."
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:417
|
#: src/components/AuthForm.tsx:370
|
||||||
msgid "Sign up with "
|
msgid "Sign up with "
|
||||||
msgstr "Зарегистрироваться с "
|
msgstr "Зарегистрироваться с "
|
||||||
|
|
||||||
@@ -1699,12 +1671,8 @@ msgstr "Разработка программного обеспечения"
|
|||||||
msgid "Star on Github"
|
msgid "Star on Github"
|
||||||
msgstr "Поставить звезду на Github"
|
msgstr "Поставить звезду на Github"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:122
|
#: src/components/AuthForm.tsx:207
|
||||||
msgid "Subscription Required"
|
#: src/components/AuthForm.tsx:224
|
||||||
msgstr "Требуется подписка"
|
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:212
|
|
||||||
#: src/components/AuthForm.tsx:229
|
|
||||||
msgid "Success"
|
msgid "Success"
|
||||||
msgstr "Успех"
|
msgstr "Успех"
|
||||||
|
|
||||||
@@ -1724,8 +1692,8 @@ msgstr "Поддержите развитие проекта"
|
|||||||
msgid "System"
|
msgid "System"
|
||||||
msgstr "Система"
|
msgstr "Система"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:315
|
#: src/views/members/components/InviteMemberForm.tsx:301
|
||||||
#: src/views/members/index.tsx:208
|
#: src/views/members/index.tsx:207
|
||||||
msgid "Team Plan"
|
msgid "Team Plan"
|
||||||
msgstr "Командный план"
|
msgstr "Командный план"
|
||||||
|
|
||||||
@@ -2008,7 +1976,7 @@ msgstr "Обновить до Pro"
|
|||||||
msgid "Upgrade to Pro ($29/month)"
|
msgid "Upgrade to Pro ($29/month)"
|
||||||
msgstr "Обновить до Pro ($29/месяц)"
|
msgstr "Обновить до Pro ($29/месяц)"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:357
|
#: src/views/members/components/InviteMemberForm.tsx:341
|
||||||
msgid "Upgrade to Team Plan"
|
msgid "Upgrade to Team Plan"
|
||||||
msgstr "Обновить до командного плана"
|
msgstr "Обновить до командного плана"
|
||||||
|
|
||||||
@@ -2036,11 +2004,11 @@ msgstr "URL должен содержать не менее 3 символов"
|
|||||||
msgid "Use template"
|
msgid "Use template"
|
||||||
msgstr "Использовать шаблон"
|
msgstr "Использовать шаблон"
|
||||||
|
|
||||||
#: src/views/members/index.tsx:238
|
#: src/views/members/index.tsx:237
|
||||||
msgid "User"
|
msgid "User"
|
||||||
msgstr "Пользователь"
|
msgstr "Пользователь"
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:98
|
#: src/views/members/components/InviteMemberForm.tsx:96
|
||||||
msgid "User is already a member of this workspace"
|
msgid "User is already a member of this workspace"
|
||||||
msgstr "Пользователь уже является участником этого рабочего пространства"
|
msgstr "Пользователь уже является участником этого рабочего пространства"
|
||||||
|
|
||||||
@@ -2199,15 +2167,15 @@ msgstr "Вы можете пригласить участников команд
|
|||||||
msgid "You can self-host by following the instructions in our <0>repo</0>."
|
msgid "You can self-host by following the instructions in our <0>repo</0>."
|
||||||
msgstr "Вы можете развернуть собственный хостинг, следуя инструкциям в нашем <0>репозитории</0>."
|
msgstr "Вы можете развернуть собственный хостинг, следуя инструкциям в нашем <0>репозитории</0>."
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:230
|
#: src/components/AuthForm.tsx:225
|
||||||
msgid "You have been logged in successfully."
|
msgid "You have been logged in successfully."
|
||||||
msgstr "Вы успешно вошли в систему."
|
msgstr "Вы успешно вошли в систему."
|
||||||
|
|
||||||
#: src/components/AuthForm.tsx:213
|
#: src/components/AuthForm.tsx:208
|
||||||
msgid "You have been signed up successfully."
|
msgid "You have been signed up successfully."
|
||||||
msgstr "Вы успешно зарегистрировались."
|
msgstr "Вы успешно зарегистрировались."
|
||||||
|
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:319
|
#: src/views/members/components/InviteMemberForm.tsx:305
|
||||||
msgid "You have unlimited seats with your Pro Plan. There is no additional charge for new members!"
|
msgid "You have unlimited seats with your Pro Plan. There is no additional charge for new members!"
|
||||||
msgstr "В вашем профессиональном плане неограниченное количество мест. За новых участников дополнительная плата не взимается!"
|
msgstr "В вашем профессиональном плане неограниченное количество мест. За новых участников дополнительная плата не взимается!"
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -39,14 +39,12 @@ export function InviteMemberForm({
|
|||||||
const [isShareInviteLinkEnabled, setIsShareInviteLinkEnabled] =
|
const [isShareInviteLinkEnabled, setIsShareInviteLinkEnabled] =
|
||||||
useState(false);
|
useState(false);
|
||||||
const [inviteLink, setInviteLink] = useState<string>("");
|
const [inviteLink, setInviteLink] = useState<string>("");
|
||||||
const [_isLoadingInviteLink, setIsLoadingInviteLink] = useState(false);
|
const [isLoadingInviteLink, setIsLoadingInviteLink] = useState(false);
|
||||||
const [copied, setCopied] = useState(false);
|
const [copied, setCopied] = useState(false);
|
||||||
const { closeModal } = useModal();
|
const { closeModal } = useModal();
|
||||||
const { workspace } = useWorkspace();
|
const { workspace } = useWorkspace();
|
||||||
const { showPopup } = usePopup();
|
const { showPopup } = usePopup();
|
||||||
|
|
||||||
const isEmailEnabled = env("NEXT_PUBLIC_DISABLE_EMAIL") !== "true";
|
|
||||||
|
|
||||||
const InviteMemberSchema = z.object({
|
const InviteMemberSchema = z.object({
|
||||||
email: z.string().email({ message: t`Invalid email address` }),
|
email: z.string().email({ message: t`Invalid email address` }),
|
||||||
workspacePublicId: z.string(),
|
workspacePublicId: z.string(),
|
||||||
@@ -68,7 +66,7 @@ export function InviteMemberForm({
|
|||||||
const refetchBoards = () => utils.board.all.refetch();
|
const refetchBoards = () => utils.board.all.refetch();
|
||||||
|
|
||||||
// Fetch active invite link on component mount
|
// Fetch active invite link on component mount
|
||||||
const { data: activeInviteLink, refetch: _refetchInviteLink } =
|
const { data: activeInviteLink, refetch: refetchInviteLink } =
|
||||||
api.member.getActiveInviteLink.useQuery(
|
api.member.getActiveInviteLink.useQuery(
|
||||||
{ workspacePublicId: workspace.publicId || "" },
|
{ workspacePublicId: workspace.publicId || "" },
|
||||||
{ enabled: !!workspace.publicId },
|
{ enabled: !!workspace.publicId },
|
||||||
@@ -78,7 +76,7 @@ export function InviteMemberForm({
|
|||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (activeInviteLink) {
|
if (activeInviteLink) {
|
||||||
setIsShareInviteLinkEnabled(activeInviteLink.isActive);
|
setIsShareInviteLinkEnabled(activeInviteLink.isActive);
|
||||||
setInviteLink(activeInviteLink.inviteLink ?? "");
|
setInviteLink(activeInviteLink.inviteLink || "");
|
||||||
}
|
}
|
||||||
}, [activeInviteLink]);
|
}, [activeInviteLink]);
|
||||||
|
|
||||||
@@ -113,23 +111,13 @@ export function InviteMemberForm({
|
|||||||
setInviteLink(data.inviteLink);
|
setInviteLink(data.inviteLink);
|
||||||
setIsLoadingInviteLink(false);
|
setIsLoadingInviteLink(false);
|
||||||
},
|
},
|
||||||
onError: (error) => {
|
onError: () => {
|
||||||
setIsLoadingInviteLink(false);
|
setIsLoadingInviteLink(false);
|
||||||
setIsShareInviteLinkEnabled(false);
|
showPopup({
|
||||||
|
header: t`Error creating invite link`,
|
||||||
if (error.data?.code === "FORBIDDEN") {
|
message: t`Please try again later.`,
|
||||||
showPopup({
|
icon: "error",
|
||||||
header: t`Subscription Required`,
|
});
|
||||||
message: t`Invite links require a Team or Pro subscription. Please upgrade your workspace.`,
|
|
||||||
icon: "error",
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
showPopup({
|
|
||||||
header: t`Error creating invite link`,
|
|
||||||
message: t`Please try again later.`,
|
|
||||||
icon: "error",
|
|
||||||
});
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -158,7 +146,7 @@ export function InviteMemberForm({
|
|||||||
let price = t`$10/month`;
|
let price = t`$10/month`;
|
||||||
let billingType = t`monthly billing`;
|
let billingType = t`monthly billing`;
|
||||||
|
|
||||||
if (teamSubscription?.periodStart && teamSubscription.periodEnd) {
|
if (teamSubscription?.periodStart && teamSubscription?.periodEnd) {
|
||||||
const periodStartDate = new Date(teamSubscription.periodStart);
|
const periodStartDate = new Date(teamSubscription.periodStart);
|
||||||
const periodEndDate = new Date(teamSubscription.periodEnd);
|
const periodEndDate = new Date(teamSubscription.periodEnd);
|
||||||
const diffInDays = Math.round(
|
const diffInDays = Math.round(
|
||||||
@@ -203,7 +191,7 @@ export function InviteMemberForm({
|
|||||||
message: t`Invite link copied to clipboard`,
|
message: t`Invite link copied to clipboard`,
|
||||||
icon: "success",
|
icon: "success",
|
||||||
});
|
});
|
||||||
} catch {
|
} catch (error) {
|
||||||
showPopup({
|
showPopup({
|
||||||
header: t`Error`,
|
header: t`Error`,
|
||||||
message: t`Failed to copy invite link`,
|
message: t`Failed to copy invite link`,
|
||||||
@@ -259,26 +247,24 @@ export function InviteMemberForm({
|
|||||||
<HiXMark size={18} className="dark:text-dark-9000 text-light-900" />
|
<HiXMark size={18} className="dark:text-dark-9000 text-light-900" />
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
{isEmailEnabled && (
|
<Input
|
||||||
<Input
|
id="email"
|
||||||
id="email"
|
placeholder={t`Email`}
|
||||||
placeholder={t`Email`}
|
disabled={
|
||||||
disabled={
|
env("NEXT_PUBLIC_KAN_ENV") === "cloud" &&
|
||||||
env("NEXT_PUBLIC_KAN_ENV") === "cloud" &&
|
!hasTeamSubscription &&
|
||||||
!hasTeamSubscription &&
|
!hasProSubscription
|
||||||
!hasProSubscription
|
}
|
||||||
|
{...register("email", { required: true })}
|
||||||
|
onKeyDown={async (e) => {
|
||||||
|
if (e.key === "Enter") {
|
||||||
|
e.preventDefault();
|
||||||
|
await handleSubmit(onSubmit)();
|
||||||
}
|
}
|
||||||
{...register("email", { required: true })}
|
}}
|
||||||
onKeyDown={async (e) => {
|
errorMessage={errors.email?.message}
|
||||||
if (e.key === "Enter") {
|
/>
|
||||||
e.preventDefault();
|
{isShareInviteLinkEnabled && inviteLink && (
|
||||||
await handleSubmit(onSubmit)();
|
|
||||||
}
|
|
||||||
}}
|
|
||||||
errorMessage={errors.email?.message}
|
|
||||||
/>
|
|
||||||
)}
|
|
||||||
{(!isEmailEnabled || (isShareInviteLinkEnabled && inviteLink)) && (
|
|
||||||
<div className="my-4">
|
<div className="my-4">
|
||||||
<div className="relative">
|
<div className="relative">
|
||||||
<Input
|
<Input
|
||||||
@@ -335,32 +321,31 @@ export function InviteMemberForm({
|
|||||||
</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="mt-12 flex items-center justify-end border-t border-light-600 px-5 pb-5 pt-5 dark:border-dark-600">
|
||||||
<Toggle
|
{(hasTeamSubscription || hasProSubscription) &&
|
||||||
label={
|
env("NEXT_PUBLIC_KAN_ENV") === "cloud" && (
|
||||||
isShareInviteLinkEnabled
|
<Toggle
|
||||||
? t`Deactivate invite link`
|
label={t`Share invite link`}
|
||||||
: t`Create invite link`
|
isChecked={isShareInviteLinkEnabled}
|
||||||
}
|
onChange={handleInviteLinkToggle}
|
||||||
isChecked={isShareInviteLinkEnabled}
|
/>
|
||||||
disabled={
|
)}
|
||||||
env("NEXT_PUBLIC_KAN_ENV") === "cloud" &&
|
|
||||||
!hasTeamSubscription &&
|
|
||||||
!hasProSubscription
|
|
||||||
}
|
|
||||||
onChange={handleInviteLinkToggle}
|
|
||||||
/>
|
|
||||||
<div>
|
<div>
|
||||||
{env("NEXT_PUBLIC_KAN_ENV") === "cloud" &&
|
{env("NEXT_PUBLIC_KAN_ENV") === "cloud" &&
|
||||||
!hasTeamSubscription &&
|
!hasTeamSubscription &&
|
||||||
!hasProSubscription ? (
|
!hasProSubscription ? (
|
||||||
<Button type="button" onClick={handleUpgrade}>
|
<Button
|
||||||
|
type="button"
|
||||||
|
onClick={handleUpgrade}
|
||||||
|
className="inline-flex w-full justify-center rounded-md bg-light-1000 px-3 py-2 text-sm font-semibold text-light-50 shadow-sm focus-visible:outline-none dark:bg-dark-1000 dark:text-dark-50"
|
||||||
|
>
|
||||||
{t`Upgrade to Team Plan`}
|
{t`Upgrade to Team Plan`}
|
||||||
</Button>
|
</Button>
|
||||||
) : (
|
) : (
|
||||||
<Button
|
<Button
|
||||||
type="submit"
|
type="submit"
|
||||||
disabled={inviteMember.isPending || !isEmailEnabled}
|
disabled={inviteMember.isPending || isShareInviteLinkEnabled}
|
||||||
isLoading={inviteMember.isPending}
|
isLoading={inviteMember.isPending}
|
||||||
|
className="inline-flex w-full justify-center rounded-md bg-light-1000 px-3 py-2 text-sm font-semibold text-light-50 shadow-sm focus-visible:outline-none dark:bg-dark-1000 dark:text-dark-50"
|
||||||
>
|
>
|
||||||
{t`Invite member`}
|
{t`Invite member`}
|
||||||
</Button>
|
</Button>
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
import Link from "next/link";
|
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 { useEffect, useState } from "react";
|
|
||||||
import {
|
import {
|
||||||
HiBolt,
|
HiBolt,
|
||||||
HiEllipsisHorizontal,
|
HiEllipsisHorizontal,
|
||||||
|
|||||||
@@ -25,9 +25,6 @@ services:
|
|||||||
- SMTP_PASSWORD=${SMTP_PASSWORD}
|
- SMTP_PASSWORD=${SMTP_PASSWORD}
|
||||||
- EMAIL_FROM=${EMAIL_FROM}
|
- EMAIL_FROM=${EMAIL_FROM}
|
||||||
|
|
||||||
# Disable email features entirely (optional)
|
|
||||||
- NEXT_PUBLIC_DISABLE_EMAIL=${NEXT_PUBLIC_DISABLE_EMAIL}
|
|
||||||
|
|
||||||
# S3 storage (optional)
|
# S3 storage (optional)
|
||||||
- S3_ACCESS_KEY_ID=${S3_ACCESS_KEY_ID}
|
- S3_ACCESS_KEY_ID=${S3_ACCESS_KEY_ID}
|
||||||
- S3_SECRET_ACCESS_KEY=${S3_SECRET_ACCESS_KEY}
|
- S3_SECRET_ACCESS_KEY=${S3_SECRET_ACCESS_KEY}
|
||||||
|
|||||||
@@ -362,30 +362,6 @@ export const memberRouter = createTRPCRouter({
|
|||||||
// Check if user is in workspace
|
// Check if user is in workspace
|
||||||
await assertUserInWorkspace(ctx.db, userId, workspace.id, "admin");
|
await assertUserInWorkspace(ctx.db, userId, workspace.id, "admin");
|
||||||
|
|
||||||
// Check subscription for cloud environment
|
|
||||||
if (process.env.NEXT_PUBLIC_KAN_ENV === "cloud") {
|
|
||||||
const subscriptions = await subscriptionRepo.getByReferenceId(
|
|
||||||
ctx.db,
|
|
||||||
workspace.publicId,
|
|
||||||
);
|
|
||||||
|
|
||||||
const activeTeamSubscription = getSubscriptionByPlan(
|
|
||||||
subscriptions,
|
|
||||||
"team",
|
|
||||||
);
|
|
||||||
const activeProSubscription = getSubscriptionByPlan(
|
|
||||||
subscriptions,
|
|
||||||
"pro",
|
|
||||||
);
|
|
||||||
|
|
||||||
if (!activeTeamSubscription && !activeProSubscription) {
|
|
||||||
throw new TRPCError({
|
|
||||||
message: `Invite links require a Team or Pro subscription`,
|
|
||||||
code: "FORBIDDEN",
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Deactivate any existing active invite links
|
// Deactivate any existing active invite links
|
||||||
await inviteLinkRepo.deactivateAllActiveForWorkspace(ctx.db, {
|
await inviteLinkRepo.deactivateAllActiveForWorkspace(ctx.db, {
|
||||||
workspaceId: workspace.id,
|
workspaceId: workspace.id,
|
||||||
|
|||||||
@@ -409,80 +409,4 @@ export const workspaceRouter = createTRPCRouter({
|
|||||||
isReserved: workspaceSlug?.type === "reserved",
|
isReserved: workspaceSlug?.type === "reserved",
|
||||||
};
|
};
|
||||||
}),
|
}),
|
||||||
search: protectedProcedure
|
|
||||||
.meta({
|
|
||||||
openapi: {
|
|
||||||
summary: "Search boards and cards in a workspace",
|
|
||||||
method: "GET",
|
|
||||||
path: "/workspaces/{workspacePublicId}/search",
|
|
||||||
description:
|
|
||||||
"Searches for boards and cards by title within a workspace",
|
|
||||||
tags: ["Workspaces"],
|
|
||||||
protect: true,
|
|
||||||
},
|
|
||||||
})
|
|
||||||
.input(
|
|
||||||
z.object({
|
|
||||||
workspacePublicId: z.string().min(12),
|
|
||||||
query: z.string().min(1).max(100),
|
|
||||||
limit: z.number().min(1).max(50).optional().default(20),
|
|
||||||
}),
|
|
||||||
)
|
|
||||||
.output(
|
|
||||||
z.array(
|
|
||||||
z.discriminatedUnion("type", [
|
|
||||||
z.object({
|
|
||||||
publicId: z.string(),
|
|
||||||
title: z.string(),
|
|
||||||
description: z.string().nullable(),
|
|
||||||
slug: z.string(),
|
|
||||||
updatedAt: z.date().nullable(),
|
|
||||||
createdAt: z.date(),
|
|
||||||
type: z.literal("board"),
|
|
||||||
}),
|
|
||||||
z.object({
|
|
||||||
publicId: z.string(),
|
|
||||||
title: z.string(),
|
|
||||||
description: z.string().nullable(),
|
|
||||||
boardPublicId: z.string(),
|
|
||||||
boardName: z.string(),
|
|
||||||
listName: z.string(),
|
|
||||||
updatedAt: z.date().nullable(),
|
|
||||||
createdAt: z.date(),
|
|
||||||
type: z.literal("card"),
|
|
||||||
}),
|
|
||||||
]),
|
|
||||||
),
|
|
||||||
)
|
|
||||||
.query(async ({ ctx, input }) => {
|
|
||||||
const userId = ctx.user?.id;
|
|
||||||
|
|
||||||
if (!userId)
|
|
||||||
throw new TRPCError({
|
|
||||||
message: `User not authenticated`,
|
|
||||||
code: "UNAUTHORIZED",
|
|
||||||
});
|
|
||||||
|
|
||||||
const workspace = await workspaceRepo.getByPublicId(
|
|
||||||
ctx.db,
|
|
||||||
input.workspacePublicId,
|
|
||||||
);
|
|
||||||
|
|
||||||
if (!workspace)
|
|
||||||
throw new TRPCError({
|
|
||||||
message: `Workspace not found`,
|
|
||||||
code: "NOT_FOUND",
|
|
||||||
});
|
|
||||||
|
|
||||||
await assertUserInWorkspace(ctx.db, userId, workspace.id);
|
|
||||||
|
|
||||||
const result = await workspaceRepo.searchBoardsAndCards(
|
|
||||||
ctx.db,
|
|
||||||
workspace.id,
|
|
||||||
input.query,
|
|
||||||
input.limit,
|
|
||||||
);
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}),
|
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1,4 +0,0 @@
|
|||||||
CREATE EXTENSION IF NOT EXISTS pg_trgm; --> statement-breakpoint
|
|
||||||
CREATE INDEX IF NOT EXISTS boards_name_trgm_idx ON board USING gin (name gin_trgm_ops);
|
|
||||||
--> statement-breakpoint
|
|
||||||
CREATE INDEX IF NOT EXISTS cards_title_trgm_idx ON card USING gin (title gin_trgm_ops);
|
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -113,13 +113,6 @@
|
|||||||
"when": 1758662398166,
|
"when": 1758662398166,
|
||||||
"tag": "20250923211958_AddWorkspaceInviteLinks",
|
"tag": "20250923211958_AddWorkspaceInviteLinks",
|
||||||
"breakpoints": true
|
"breakpoints": true
|
||||||
},
|
|
||||||
{
|
|
||||||
"idx": 16,
|
|
||||||
"version": "7",
|
|
||||||
"when": 1759356096392,
|
|
||||||
"tag": "20251001220136_AddFuzzySearchSupport",
|
|
||||||
"breakpoints": true
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -95,32 +95,9 @@ export const create = async (
|
|||||||
.having(gt(countExpr, 1));
|
.having(gt(countExpr, 1));
|
||||||
|
|
||||||
if (duplicateIndices.length > 0) {
|
if (duplicateIndices.length > 0) {
|
||||||
// Compact indices for this list to sequential values (0..n-1) preserving order
|
throw new Error(
|
||||||
await tx.execute(sql`
|
`Duplicate indices found after creating card ${result[0].id}`,
|
||||||
WITH ordered AS (
|
);
|
||||||
SELECT id, ROW_NUMBER() OVER (ORDER BY "index", id) - 1 AS new_index
|
|
||||||
FROM "card"
|
|
||||||
WHERE "listId" = ${result[0].listId} AND "deletedAt" IS NULL
|
|
||||||
)
|
|
||||||
UPDATE "card" c
|
|
||||||
SET "index" = o.new_index
|
|
||||||
FROM ordered o
|
|
||||||
WHERE c.id = o.id;
|
|
||||||
`);
|
|
||||||
|
|
||||||
// Last resort: verify fix; rollback if duplicates persist
|
|
||||||
const postFixDupes = await tx
|
|
||||||
.select({ index: cards.index, count: countExpr })
|
|
||||||
.from(cards)
|
|
||||||
.where(and(eq(cards.listId, result[0].listId), isNull(cards.deletedAt)))
|
|
||||||
.groupBy(cards.listId, cards.index)
|
|
||||||
.having(gt(countExpr, 1));
|
|
||||||
|
|
||||||
if (postFixDupes.length > 0) {
|
|
||||||
throw new Error(
|
|
||||||
`Invariant violation: duplicate card indices remain after compaction in list ${result[0].listId}`,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return result[0];
|
return result[0];
|
||||||
@@ -242,95 +219,11 @@ export const bulkCreate = async (
|
|||||||
importId?: number;
|
importId?: number;
|
||||||
}[],
|
}[],
|
||||||
) => {
|
) => {
|
||||||
if (cardInput.length === 0) return [];
|
const result = await db.insert(cards).values(cardInput).returning({
|
||||||
|
id: cards.id,
|
||||||
return db.transaction(async (tx) => {
|
|
||||||
// Group incoming cards by list to compute safe, sequential indices per list
|
|
||||||
const byList = new Map<number, typeof cardInput>();
|
|
||||||
for (const item of cardInput) {
|
|
||||||
const arr = byList.get(item.listId) ?? [];
|
|
||||||
arr.push(item);
|
|
||||||
byList.set(item.listId, arr);
|
|
||||||
}
|
|
||||||
|
|
||||||
const allValuesToInsert: {
|
|
||||||
publicId: string;
|
|
||||||
title: string;
|
|
||||||
description: string;
|
|
||||||
createdBy: string;
|
|
||||||
listId: number;
|
|
||||||
index: number;
|
|
||||||
importId?: number;
|
|
||||||
}[] = [];
|
|
||||||
|
|
||||||
// For each list, append incoming cards after current max index, preserving incoming order
|
|
||||||
for (const [listId, items] of byList.entries()) {
|
|
||||||
const last = await tx.query.cards.findFirst({
|
|
||||||
columns: { index: true },
|
|
||||||
where: and(eq(cards.listId, listId), isNull(cards.deletedAt)),
|
|
||||||
orderBy: [desc(cards.index)],
|
|
||||||
});
|
|
||||||
|
|
||||||
let nextIndex = last ? last.index + 1 : 0;
|
|
||||||
const sorted = [...items].sort((a, b) => a.index - b.index);
|
|
||||||
for (const it of sorted) {
|
|
||||||
allValuesToInsert.push({
|
|
||||||
publicId: it.publicId,
|
|
||||||
title: it.title,
|
|
||||||
description: it.description,
|
|
||||||
createdBy: it.createdBy,
|
|
||||||
listId: it.listId,
|
|
||||||
index: nextIndex++,
|
|
||||||
importId: it.importId,
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const inserted = await tx
|
|
||||||
.insert(cards)
|
|
||||||
.values(allValuesToInsert)
|
|
||||||
.returning({ id: cards.id });
|
|
||||||
|
|
||||||
// Post-insert: compact per list if duplicates exist; then verify
|
|
||||||
const countExpr = sql<number>`COUNT(*)`.mapWith(Number);
|
|
||||||
for (const listId of byList.keys()) {
|
|
||||||
const duplicateIndices = await tx
|
|
||||||
.select({ index: cards.index, count: countExpr })
|
|
||||||
.from(cards)
|
|
||||||
.where(and(eq(cards.listId, listId), isNull(cards.deletedAt)))
|
|
||||||
.groupBy(cards.listId, cards.index)
|
|
||||||
.having(gt(countExpr, 1));
|
|
||||||
|
|
||||||
if (duplicateIndices.length > 0) {
|
|
||||||
await tx.execute(sql`
|
|
||||||
WITH ordered AS (
|
|
||||||
SELECT id, ROW_NUMBER() OVER (ORDER BY "index", id) - 1 AS new_index
|
|
||||||
FROM "card"
|
|
||||||
WHERE "listId" = ${listId} AND "deletedAt" IS NULL
|
|
||||||
)
|
|
||||||
UPDATE "card" c
|
|
||||||
SET "index" = o.new_index
|
|
||||||
FROM ordered o
|
|
||||||
WHERE c.id = o.id;
|
|
||||||
`);
|
|
||||||
|
|
||||||
const postFixDupes = await tx
|
|
||||||
.select({ index: cards.index, count: countExpr })
|
|
||||||
.from(cards)
|
|
||||||
.where(and(eq(cards.listId, listId), isNull(cards.deletedAt)))
|
|
||||||
.groupBy(cards.listId, cards.index)
|
|
||||||
.having(gt(countExpr, 1));
|
|
||||||
|
|
||||||
if (postFixDupes.length > 0) {
|
|
||||||
throw new Error(
|
|
||||||
`Invariant violation: duplicate card indices remain after compaction in list ${listId}`,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return inserted;
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
return result;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const createCardLabelRelationship = async (
|
export const createCardLabelRelationship = async (
|
||||||
@@ -713,53 +606,9 @@ export const reorder = async (
|
|||||||
.having(gt(countExpr, 1));
|
.having(gt(countExpr, 1));
|
||||||
|
|
||||||
if (duplicateIndices.length > 0) {
|
if (duplicateIndices.length > 0) {
|
||||||
// Auto-heal by compacting indices for the affected list(s)
|
throw new Error(
|
||||||
const affectedListIds = [currentList.id, newList?.id].filter(
|
`Duplicate indices found after reordering card ${card.id}`,
|
||||||
(id): id is number => id !== undefined,
|
|
||||||
);
|
);
|
||||||
|
|
||||||
if (affectedListIds.length === 1) {
|
|
||||||
await tx.execute(sql`
|
|
||||||
WITH ordered AS (
|
|
||||||
SELECT id, ROW_NUMBER() OVER (ORDER BY "index", id) - 1 AS new_index
|
|
||||||
FROM "card"
|
|
||||||
WHERE "listId" = ${affectedListIds[0]} AND "deletedAt" IS NULL
|
|
||||||
)
|
|
||||||
UPDATE "card" c
|
|
||||||
SET "index" = o.new_index
|
|
||||||
FROM ordered o
|
|
||||||
WHERE c.id = o.id;
|
|
||||||
`);
|
|
||||||
} else if (affectedListIds.length === 2) {
|
|
||||||
await tx.execute(sql`
|
|
||||||
WITH ordered AS (
|
|
||||||
SELECT id,
|
|
||||||
ROW_NUMBER() OVER (PARTITION BY "listId" ORDER BY "index", id) - 1 AS new_index
|
|
||||||
FROM "card"
|
|
||||||
WHERE "listId" IN (${sql.join(affectedListIds, sql`,`)}) AND "deletedAt" IS NULL
|
|
||||||
)
|
|
||||||
UPDATE "card" c
|
|
||||||
SET "index" = o.new_index
|
|
||||||
FROM ordered o
|
|
||||||
WHERE c.id = o.id;
|
|
||||||
`);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Verify fix and rollback if necessary
|
|
||||||
const postFixDupes = await tx
|
|
||||||
.select({ index: cards.index, count: countExpr })
|
|
||||||
.from(cards)
|
|
||||||
.where(
|
|
||||||
and(inArray(cards.listId, affectedListIds), isNull(cards.deletedAt)),
|
|
||||||
)
|
|
||||||
.groupBy(cards.listId, cards.index)
|
|
||||||
.having(gt(countExpr, 1));
|
|
||||||
|
|
||||||
if (postFixDupes.length > 0) {
|
|
||||||
throw new Error(
|
|
||||||
`Invariant violation: duplicate card indices remain after compaction for card ${card.id}`,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const updatedCard = await tx.query.cards.findFirst({
|
const updatedCard = await tx.query.cards.findFirst({
|
||||||
|
|||||||
@@ -1,13 +1,7 @@
|
|||||||
import { and, desc, eq, ilike, inArray, isNull, or, sql } from "drizzle-orm";
|
import { and, eq, inArray, isNull } from "drizzle-orm";
|
||||||
|
|
||||||
import type { dbClient } from "@kan/db/client";
|
import type { dbClient } from "@kan/db/client";
|
||||||
import {
|
import { boards, workspaceMembers, workspaces } from "@kan/db/schema";
|
||||||
boards,
|
|
||||||
cards,
|
|
||||||
lists,
|
|
||||||
workspaceMembers,
|
|
||||||
workspaces,
|
|
||||||
} from "@kan/db/schema";
|
|
||||||
import { generateUID } from "@kan/shared/utils";
|
import { generateUID } from "@kan/shared/utils";
|
||||||
|
|
||||||
export const create = async (
|
export const create = async (
|
||||||
@@ -280,84 +274,3 @@ export const isUserInWorkspace = async (
|
|||||||
|
|
||||||
return result?.id !== undefined;
|
return result?.id !== undefined;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const searchBoardsAndCards = async (
|
|
||||||
db: dbClient,
|
|
||||||
workspaceId: number,
|
|
||||||
query: string,
|
|
||||||
limit = 20,
|
|
||||||
) => {
|
|
||||||
const searchQuery = `%${query}%`;
|
|
||||||
|
|
||||||
// Search for boards
|
|
||||||
const boardResults = await db
|
|
||||||
.select({
|
|
||||||
publicId: boards.publicId,
|
|
||||||
title: boards.name,
|
|
||||||
description: boards.description,
|
|
||||||
slug: boards.slug,
|
|
||||||
updatedAt: boards.updatedAt,
|
|
||||||
createdAt: boards.createdAt,
|
|
||||||
})
|
|
||||||
.from(boards)
|
|
||||||
.where(
|
|
||||||
and(
|
|
||||||
eq(boards.workspaceId, workspaceId),
|
|
||||||
// Combine exact and fuzzy matching
|
|
||||||
or(
|
|
||||||
ilike(boards.name, `%${query}%`), // Exact substring match
|
|
||||||
sql`similarity(${boards.name}, ${query}) > 0.2`, // Fuzzy match
|
|
||||||
),
|
|
||||||
isNull(boards.deletedAt),
|
|
||||||
),
|
|
||||||
)
|
|
||||||
.orderBy(
|
|
||||||
sql`CASE WHEN ${boards.name} ILIKE ${`%${query}%`} THEN 1 ELSE 0 END DESC`,
|
|
||||||
sql`similarity(${boards.name}, ${query}) DESC`,
|
|
||||||
desc(boards.updatedAt),
|
|
||||||
)
|
|
||||||
.limit(Math.ceil(limit * 0.4));
|
|
||||||
|
|
||||||
// Search for cards
|
|
||||||
const cardResults = await db
|
|
||||||
.select({
|
|
||||||
publicId: cards.publicId,
|
|
||||||
title: cards.title,
|
|
||||||
description: cards.description,
|
|
||||||
boardPublicId: boards.publicId,
|
|
||||||
boardName: boards.name,
|
|
||||||
listName: lists.name,
|
|
||||||
updatedAt: cards.updatedAt,
|
|
||||||
createdAt: cards.createdAt,
|
|
||||||
})
|
|
||||||
.from(cards)
|
|
||||||
.innerJoin(lists, eq(cards.listId, lists.id))
|
|
||||||
.innerJoin(boards, eq(lists.boardId, boards.id))
|
|
||||||
.where(
|
|
||||||
and(
|
|
||||||
eq(boards.workspaceId, workspaceId),
|
|
||||||
or(
|
|
||||||
ilike(cards.title, searchQuery),
|
|
||||||
sql`similarity(${cards.title}, ${query}) > 0.2`,
|
|
||||||
),
|
|
||||||
isNull(cards.deletedAt),
|
|
||||||
isNull(lists.deletedAt),
|
|
||||||
isNull(boards.deletedAt),
|
|
||||||
),
|
|
||||||
)
|
|
||||||
.orderBy(
|
|
||||||
sql`CASE WHEN ${cards.title} ILIKE ${searchQuery} THEN 1 ELSE 0 END DESC`,
|
|
||||||
sql`similarity(${cards.title}, ${query}) DESC`,
|
|
||||||
desc(cards.updatedAt),
|
|
||||||
)
|
|
||||||
.limit(Math.floor(limit * 0.6));
|
|
||||||
|
|
||||||
// Combine results
|
|
||||||
const allResults = [
|
|
||||||
...boardResults.map((board) => ({ ...board, type: "board" as const })),
|
|
||||||
...cardResults.map((card) => ({ ...card, type: "card" as const })),
|
|
||||||
];
|
|
||||||
|
|
||||||
// Ensure we don't exceed the total limit
|
|
||||||
return allResults.slice(0, limit);
|
|
||||||
};
|
|
||||||
|
|||||||
@@ -89,7 +89,6 @@
|
|||||||
"APPLE_CLIENT_ID",
|
"APPLE_CLIENT_ID",
|
||||||
"APPLE_CLIENT_SECRET",
|
"APPLE_CLIENT_SECRET",
|
||||||
"APPLE_APP_BUNDLE_IDENTIFIER",
|
"APPLE_APP_BUNDLE_IDENTIFIER",
|
||||||
"NEXT_PUBLIC_DISABLE_EMAIL",
|
|
||||||
"EMAIL_FROM",
|
"EMAIL_FROM",
|
||||||
"SMTP_HOST",
|
"SMTP_HOST",
|
||||||
"SMTP_PORT",
|
"SMTP_PORT",
|
||||||
|
|||||||
Reference in New Issue
Block a user