Compare commits

..

10 Commits

Author SHA1 Message Date
Henry
b00c47952c chore: add translations 2025-09-26 22:11:18 +01:00
Henry
aa931ddcbe feat: only allow admin users to create links 2025-09-26 22:08:52 +01:00
Henry
73b9ac7cb5 feat(cloud): update subscription for cloud 2025-09-26 22:00:20 +01:00
Henry
01e0140e6a refactor: tweak light mode styles 2025-09-26 21:45:49 +01:00
Henry
f22a0332ab feat: switch to workspace on invite success 2025-09-26 21:38:05 +01:00
Henry
bd97362d90 feat: add invite page 2025-09-25 23:11:02 +01:00
Henry
3b3b4f89ba feat: redirect to next param on authentication 2025-09-25 22:06:18 +01:00
Henry
17f876160d feat: add repo funcs and share link toggle 2025-09-23 22:58:59 +01:00
Henry
dd1bd9b7cc feat: update workspace invite schema 2025-09-23 22:51:33 +01:00
Henry
7d9746be20 feat: add workspace invite links schema 2025-09-23 21:42:37 +01:00
23 changed files with 515 additions and 814 deletions

View File

@@ -1,6 +1,6 @@
# 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
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>"
SMTP_SECURE= # set to "false" to use port 587
# Switch email features off entirely (optional)
NEXT_PUBLIC_DISABLE_EMAIL=
# S3 storage (optional)
S3_REGION=
S3_ENDPOINT=

View File

@@ -147,7 +147,6 @@ pnpm dev
| `SMTP_USER` | SMTP username/email | No | `resend` |
| `SMTP_PASSWORD` | SMTP password/token | No | `re_xxxx` |
| `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` |
| `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` |

View File

@@ -112,7 +112,6 @@ checksums:
Create%20board/singular: 155b62818bfab0e34f0089e1b34a32f3
Create%20card/singular: 32792935dd5837a9433909b04021c22b
Create%20checklist/singular: 5cbca15a7004558c4e6d381f83a34da2
Create%20invite%20link/singular: bef23fe786978f7abf78dece49a35a26
Create%20label/singular: c64e8180fa956f005edc1fd9b8e65abb
Create%20list/singular: 858c3d514aa95765ec82114393199144
Create%20new%20board/singular: cbb87b1f4cc46b336ad9510c9f19407c
@@ -129,7 +128,6 @@ checksums:
Custom%20workspace%20URL/singular: 7ba841d0946eb04fa3d17d74365be37b
Customer%20Support/singular: 50e3c77e22e41061ca85ea2f02625a2e
Dark/singular: 73e6e208ba628b26e90fcf6dce15e1b2
Deactivate%20invite%20link/singular: 8cf4bf82e153e4dc82d026448cb4dd10
Delete/singular: 8bcf303dd10a645b5baacb02b47d72c9
Delete%20account/singular: a9d11113f1a1d7e20582bdcc9633bcef
Delete%20board/singular: e915cd160651ad4b61a67e8da0737c23
@@ -308,8 +306,6 @@ checksums:
Own%20your%20data/singular: cc2178dac4bdf6b07f030cfc2a7510e6
Part-time/singular: 213d63da450f35dabb3ab0e35e29feed
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
Passwords%20do%20not%20match/singular: 37ca1f4e0afc9a0b8e9617f767103c92
Paused/singular: edb1f7b7219e1c9b7aa67159090d6991
@@ -371,6 +367,7 @@ checksums:
Settings%20%7C%20Billing/singular: e44cba741d5414035a0b499c5766c203
Settings%20%7C%20Integrations/singular: d04992e28016452f6d3d7dcc0b592415
Settings%20%7C%20Workspace/singular: 5d0bacf7ff696da940f232df45edfd39
Share%20invite%20link/singular: ec5081a1f4e49fd9d782e770438f703b
Sign%20in/singular: cb8757c7450e17de1e226e82fb0fa4a2
Sign%20In/singular: ec7b8f314fe9bc6591006707484ede61
Sign%20Up/singular: 0dd2ae69be4618c1f9e615774a4509ca

View File

@@ -5,7 +5,7 @@ import { t } from "@lingui/core/macro";
import { Trans } from "@lingui/react/macro";
import { useQuery } from "@tanstack/react-query";
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 {
FaApple,
@@ -156,12 +156,10 @@ export function Auth({ setIsMagicLinkSent, isSignUp }: AuthProps) {
const [isLoginWithProviderPending, setIsLoginWithProviderPending] =
useState<null | AuthProvider>(null);
const [isCredentialsEnabled, setIsCredentialsEnabled] = useState(false);
const [isEmailSendingEnabled, setIsEmailSendingEnabled] = useState(false);
const [isLoginWithEmailPending, setIsLoginWithEmailPending] = useState(false);
const [loginError, setLoginError] = useState<string | null>(null);
const { showPopup } = usePopup();
const oidcProviderName = "OIDC";
const passwordRef = useRef<HTMLInputElement | null>(null);
const redirect = useSearchParams().get("next");
const callbackURL = redirect ?? "/boards";
@@ -170,9 +168,6 @@ export function Auth({ setIsMagicLinkSent, isSignUp }: AuthProps) {
useEffect(() => {
const credentialsAllowed =
env("NEXT_PUBLIC_ALLOW_CREDENTIALS")?.toLowerCase() === "true";
const emailSendingEnabled =
env("NEXT_PUBLIC_DISABLE_EMAIL")?.toLowerCase() !== "true";
setIsEmailSendingEnabled(emailSendingEnabled);
setIsCredentialsEnabled(credentialsAllowed);
}, []);
@@ -192,7 +187,7 @@ export function Auth({ setIsMagicLinkSent, isSignUp }: AuthProps) {
const handleLoginWithEmail = async (
email: string,
password?: string | null,
password?: string,
name?: string,
) => {
setIsLoginWithEmailPending(true);
@@ -235,26 +230,16 @@ export function Auth({ setIsMagicLinkSent, isSignUp }: AuthProps) {
);
}
} else {
// Only allow magic link if email sending is enabled and not in sign up mode
if (isEmailSendingEnabled && !isSignUp) {
await authClient.signIn.magicLink(
{
email,
callbackURL,
},
{
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.`,
);
}
await authClient.signIn.magicLink(
{
email,
callbackURL,
},
{
onSuccess: () => setIsMagicLinkSent(true, email),
onError: ({ error }) => setLoginError(error.message),
},
);
}
setIsLoginWithEmailPending(false);
@@ -291,43 +276,11 @@ export function Auth({ setIsMagicLinkSent, isSignUp }: AuthProps) {
};
const onSubmit = async (values: FormValues) => {
// Treat empty password string as undefined to trigger magic link path
const sanitizedPassword = values.password?.trim()
? values.password
: undefined;
await handleLoginWithEmail(values.email, sanitizedPassword, values.name);
await handleLoginWithEmail(values.email, values.password, values.name);
};
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 (
<div className="space-y-6">
{socialProviders?.length !== 0 && (
@@ -398,7 +351,7 @@ export function Auth({ setIsMagicLinkSent, isSignUp }: AuthProps) {
/>
{errors.password && (
<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>
)}
</div>
@@ -415,7 +368,9 @@ export function Auth({ setIsMagicLinkSent, isSignUp }: AuthProps) {
variant="secondary"
>
{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>
</div>
</form>

View File

@@ -36,12 +36,12 @@ msgstr "{0} Labels"
msgid "{boardCount, plural, one {Import board (1)} other {Import boards ({boardCount})}}"
msgstr "{boardCount, plural, one {Board importieren (1)} other {Boards importieren ({boardCount})}}"
#: src/views/members/components/InviteMemberForm.tsx:148
#: src/views/members/components/InviteMemberForm.tsx:160
#: src/views/members/components/InviteMemberForm.tsx:146
#: src/views/members/components/InviteMemberForm.tsx:158
msgid "$10/month"
msgstr "$10/Monat"
#: src/views/members/components/InviteMemberForm.tsx:160
#: src/views/members/components/InviteMemberForm.tsx:158
msgid "$8/month"
msgstr "$8/Monat"
@@ -101,7 +101,7 @@ msgid "Add label"
msgstr "Label hinzufügen"
#: src/views/card/components/MemberSelector.tsx:130
#: src/views/members/components/InviteMemberForm.tsx:240
#: src/views/members/components/InviteMemberForm.tsx:238
msgid "Add member"
msgstr "Mitglied hinzufügen"
@@ -136,7 +136,7 @@ msgstr "hat Checklistenelement <0>{0}</0> hinzugefügt"
msgid "added label <0>{0}</0>"
msgstr "hat Label <0>{0}</0> hinzugefügt"
#: src/views/members/components/InviteMemberForm.tsx:310
#: src/views/members/components/InviteMemberForm.tsx:306
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."
@@ -164,7 +164,7 @@ msgstr "Beim Trennen deines Trello-Kontos ist ein Fehler aufgetreten."
msgid "An unexpected error occurred. Please try again later."
msgstr "Ein unerwarteter Fehler ist aufgetreten. Bitte versuchen Sie es später erneut."
#: src/views/members/components/InviteMemberForm.tsx:294
#: src/views/members/components/InviteMemberForm.tsx:290
msgid "Anyone with this link can join your workspace"
msgstr "Jeder mit diesem Link kann deinem Arbeitsbereich beitreten"
@@ -250,11 +250,11 @@ msgstr "Backlog"
msgid "Basic Kanban"
msgstr "Einfaches Kanban"
#: src/views/members/components/InviteMemberForm.tsx:161
#: src/views/members/components/InviteMemberForm.tsx:159
msgid "billed annually"
msgstr "jährlich abgerechnet"
#: src/views/members/components/InviteMemberForm.tsx:161
#: src/views/members/components/InviteMemberForm.tsx:159
msgid "billed monthly"
msgstr "monatlich abgerechnet"
@@ -463,12 +463,12 @@ msgstr "Kontaktiere uns"
msgid "Content Creation"
msgstr "Content-Erstellung"
#: src/components/AuthForm.tsx:417
#: src/components/AuthForm.tsx:370
msgid "Continue with "
msgstr "Fortfahren mit "
#. placeholder {0}: key === "oidc" ? oidcProviderName : provider.name
#: src/components/AuthForm.tsx:348
#: src/components/AuthForm.tsx:301
msgid "Continue with {0}"
msgstr "Fortfahren mit {0}"
@@ -498,10 +498,6 @@ msgstr "Karte erstellen"
msgid "Create checklist"
msgstr "Checkliste erstellen"
#: src/views/members/components/InviteMemberForm.tsx:334
msgid "Create invite link"
msgstr "Einladungslink erstellen"
#: src/components/LabelForm.tsx:238
msgid "Create label"
msgstr "Label erstellen"
@@ -569,10 +565,6 @@ msgstr "Kundensupport"
msgid "Dark"
msgstr "Dunkel"
#: src/views/members/components/InviteMemberForm.tsx:333
msgid "Deactivate invite link"
msgstr "Einladungslink deaktivieren"
#: src/components/DeleteLabelConfirmation.tsx:51
#: src/components/LabelForm.tsx:228
#: src/views/card/components/DeleteCardConfirmation.tsx:92
@@ -705,11 +697,11 @@ msgstr "Workspace-URL bearbeiten"
msgid "Editing"
msgstr "Bearbeitung"
#: src/components/AuthForm.tsx:418
#: src/components/AuthForm.tsx:372
msgid "email"
msgstr "E-Mail"
#: src/views/members/components/InviteMemberForm.tsx:255
#: src/views/members/components/InviteMemberForm.tsx:252
msgid "Email"
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."
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"
msgstr "Gib deine E-Mail-Adresse ein"
#: src/components/AuthForm.tsx:372
#: src/components/AuthForm.tsx:325
msgid "Enter your name"
msgstr "Gib deinen Namen ein"
@@ -737,11 +729,11 @@ msgstr "Gib deinen Namen ein"
msgid "Enter your new password"
msgstr "Geben Sie Ihr neues Passwort ein"
#: src/components/AuthForm.tsx:397
#: src/components/AuthForm.tsx:350
msgid "Enter your password"
msgstr "Gib dein Passwort ein"
#: src/views/members/components/InviteMemberForm.tsx:198
#: src/views/members/components/InviteMemberForm.tsx:196
msgid "Error"
msgstr "Fehler"
@@ -749,11 +741,11 @@ msgstr "Fehler"
msgid "Error Changing Password"
msgstr "Fehler beim Ändern des Passworts"
#: src/views/members/components/InviteMemberForm.tsx:119
#: src/views/members/components/InviteMemberForm.tsx:117
msgid "Error creating invite link"
msgstr "Fehler beim Erstellen des Einladungslinks"
#: src/views/members/components/InviteMemberForm.tsx:134
#: src/views/members/components/InviteMemberForm.tsx:132
msgid "Error deactivating invite link"
msgstr "Fehler beim Deaktivieren des Einladungslinks"
@@ -773,8 +765,8 @@ msgstr "Fehler beim Löschen des Arbeitsbereichs"
msgid "Error disconnecting Trello"
msgstr "Fehler beim Trennen von Trello"
#: src/views/members/components/InviteMemberForm.tsx:97
#: src/views/members/components/InviteMemberForm.tsx:103
#: src/views/members/components/InviteMemberForm.tsx:95
#: src/views/members/components/InviteMemberForm.tsx:101
msgid "Error inviting member"
msgstr "Fehler beim Einladen des Mitglieds"
@@ -798,7 +790,7 @@ msgstr "Fehler beim Aktualisieren des Arbeitsbereichsnamens"
msgid "Error updating workspace URL"
msgstr "Fehler beim Aktualisieren der Workspace-URL"
#: src/views/members/components/InviteMemberForm.tsx:223
#: src/views/members/components/InviteMemberForm.tsx:221
#: src/views/settings/components/UpgradeToProConfirmation.tsx:41
msgid "Error upgrading subscription"
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."
msgstr "Einladung konnte nicht angenommen werden. Bitte versuche es später erneut oder kontaktiere den Kundensupport."
#: src/views/members/components/InviteMemberForm.tsx:199
#: src/views/members/components/InviteMemberForm.tsx:197
msgid "Failed to copy invite link"
msgstr "Einladungslink konnte nicht kopiert werden"
#. 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."
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"
msgstr "Kostenlos"
#: src/views/members/components/InviteMemberForm.tsx:316
#: src/views/members/index.tsx:209
#: src/views/members/components/InviteMemberForm.tsx:312
#: src/views/members/index.tsx:208
msgid "Free Plan"
msgstr "Kostenloser Plan"
@@ -1043,7 +1035,7 @@ msgstr "Integrationen"
msgid "Interviewing"
msgstr "Vorstellungsgespräch"
#: src/views/members/components/InviteMemberForm.tsx:51
#: src/views/members/components/InviteMemberForm.tsx:49
msgid "Invalid email address"
msgstr "Ungültige E-Mail-Adresse"
@@ -1051,24 +1043,24 @@ msgstr "Ungültige E-Mail-Adresse"
msgid "Invalid invitation"
msgstr "Ungültige Einladung"
#: src/views/members/index.tsx:222
#: src/views/members/index.tsx:221
msgid "Invite"
msgstr "Einladen"
#: src/views/members/components/InviteMemberForm.tsx:192
#: src/views/members/components/InviteMemberForm.tsx:190
msgid "Invite link copied"
msgstr "Einladungslink kopiert"
#: src/views/members/components/InviteMemberForm.tsx:193
#: src/views/members/components/InviteMemberForm.tsx:191
msgid "Invite link copied to clipboard"
msgstr "Einladungslink in die Zwischenablage kopiert"
#: src/views/card/components/MemberSelector.tsx:111
#: src/views/members/components/InviteMemberForm.tsx:353
#: src/views/members/components/InviteMemberForm.tsx:350
msgid "Invite member"
msgstr "Mitglied einladen"
#: src/views/members/components/InviteMemberForm.tsx:319
#: src/views/members/components/InviteMemberForm.tsx:315
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."
@@ -1117,7 +1109,7 @@ msgstr "Sprache"
msgid "Launch offer"
msgstr "Einführungsangebot"
#: src/views/members/index.tsx:192
#: src/views/members/index.tsx:191
msgid "Launch offer: Get unlimited members with Pro"
msgstr "Einführungsangebot: Erhalten Sie unbegrenzte Mitglieder mit Pro"
@@ -1169,7 +1161,7 @@ msgstr "Langfristig"
msgid "Low Priority"
msgstr "Niedrige Priorität"
#: src/components/AuthForm.tsx:418
#: src/components/AuthForm.tsx:373
msgid "magic link"
msgstr "Magic Link"
@@ -1190,12 +1182,12 @@ msgstr "Mittlere Priorität"
#: src/views/board/components/Filters.tsx:93
#: src/views/board/components/NewCardForm.tsx:357
#: src/views/card/index.tsx:125
#: src/views/members/index.tsx:179
#: src/views/members/index.tsx:178
msgid "Members"
msgstr "Mitglieder"
#. placeholder {0}: workspace.name ?? "Workspace"
#: src/views/members/index.tsx:174
#: src/views/members/index.tsx:173
msgid "Members | {0}"
msgstr "Mitglieder | {0}"
@@ -1203,7 +1195,7 @@ msgstr "Mitglieder | {0}"
msgid "Monthly"
msgstr "Monatlich"
#: src/views/members/components/InviteMemberForm.tsx:149
#: src/views/members/components/InviteMemberForm.tsx:147
msgid "monthly billing"
msgstr "monatliche Abrechnung"
@@ -1315,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."
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"
msgstr "oder"
@@ -1335,14 +1327,6 @@ msgstr "Teilzeit"
msgid "Password Changed"
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
msgid "Password must be at least 8 characters"
msgstr "Passwort muss mindestens 8 Zeichen lang sein"
@@ -1351,7 +1335,7 @@ msgstr "Passwort muss mindestens 8 Zeichen lang sein"
msgid "Passwords do not match"
msgstr "Passwörter stimmen nicht überein"
#: src/views/members/index.tsx:135
#: src/views/members/index.tsx:134
msgid "Paused"
msgstr "Pausiert"
@@ -1359,7 +1343,7 @@ msgstr "Pausiert"
msgid "Payment frequency"
msgstr "Zahlungshäufigkeit"
#: src/views/members/index.tsx:135
#: src/views/members/index.tsx:134
msgid "Pending"
msgstr "Ausstehend"
@@ -1380,15 +1364,15 @@ msgstr "Planung"
msgid "Please confirm your new password"
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"
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"
msgstr "Bitte gib einen gültigen Namen ein"
#: src/components/AuthForm.tsx:401
#: src/components/AuthForm.tsx:354
msgid "Please enter a valid password"
msgstr "Bitte gib ein gültiges Passwort ein"
@@ -1421,8 +1405,8 @@ msgstr "Bitte wähle eine Datei zum Hochladen aus."
#: src/views/card/components/NewCommentForm.tsx:31
#: src/views/card/index.tsx:173
#: src/views/members/components/DeleteMemberConfirmation.tsx:28
#: src/views/members/components/InviteMemberForm.tsx:104
#: src/views/members/components/InviteMemberForm.tsx:224
#: src/views/members/components/InviteMemberForm.tsx:102
#: src/views/members/components/InviteMemberForm.tsx:222
#: src/views/settings/components/Avatar.tsx:78
#: src/views/settings/components/Avatar.tsx:219
#: src/views/settings/components/DeleteAccountConfirmation.tsx:40
@@ -1435,8 +1419,8 @@ msgstr "Bitte wähle eine Datei zum Hochladen aus."
msgid "Please try again later, or contact customer support."
msgstr "Bitte versuche es später noch einmal oder kontaktiere den Kundensupport."
#: src/views/members/components/InviteMemberForm.tsx:120
#: src/views/members/components/InviteMemberForm.tsx:135
#: src/views/members/components/InviteMemberForm.tsx:118
#: src/views/members/components/InviteMemberForm.tsx:133
msgid "Please try again later."
msgstr "Bitte versuche es später erneut."
@@ -1459,11 +1443,11 @@ msgstr "Datenschutzrichtlinie"
msgid "Private"
msgstr "Privat"
#: src/views/members/index.tsx:206
#: src/views/members/index.tsx:205
msgid "Pro Plan"
msgstr "Pro-Plan"
#: src/views/members/components/InviteMemberForm.tsx:305
#: src/views/members/components/InviteMemberForm.tsx:301
msgid "Pro Plan ∞"
msgstr "Pro-Plan ∞"
@@ -1507,7 +1491,7 @@ msgstr "Remote"
msgid "Remove"
msgstr "Entfernen"
#: src/views/members/index.tsx:149
#: src/views/members/index.tsx:148
msgid "Remove member"
msgstr "Mitglied entfernen"
@@ -1559,7 +1543,7 @@ msgstr "Überprüfung"
msgid "Roadmap"
msgstr "Roadmap"
#: src/views/members/index.tsx:244
#: src/views/members/index.tsx:243
msgid "Role"
msgstr "Rolle"
@@ -1633,6 +1617,10 @@ msgstr "Einstellungen | Integrationen"
msgid "Settings | Workspace"
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:138
msgid "Sign in"
@@ -1659,7 +1647,7 @@ msgstr "Registrierung deaktiviert"
msgid "Sign up is currently disabled. Please try again later."
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 "
msgstr "Registrieren mit "
@@ -1683,8 +1671,8 @@ msgstr "Softwareentwicklung"
msgid "Star on Github"
msgstr "Stern auf Github"
#: src/components/AuthForm.tsx:212
#: src/components/AuthForm.tsx:229
#: src/components/AuthForm.tsx:207
#: src/components/AuthForm.tsx:224
msgid "Success"
msgstr "Erfolg"
@@ -1704,8 +1692,8 @@ msgstr "Unterstütze die Entwicklung des Projekts"
msgid "System"
msgstr "System"
#: src/views/members/components/InviteMemberForm.tsx:305
#: src/views/members/index.tsx:208
#: src/views/members/components/InviteMemberForm.tsx:301
#: src/views/members/index.tsx:207
msgid "Team Plan"
msgstr "Team-Plan"
@@ -1988,7 +1976,7 @@ msgstr "Upgrade auf Pro"
msgid "Upgrade to Pro ($29/month)"
msgstr "Upgrade auf Pro ($29/Monat)"
#: src/views/members/components/InviteMemberForm.tsx:345
#: src/views/members/components/InviteMemberForm.tsx:341
msgid "Upgrade to Team Plan"
msgstr "Upgrade auf Team-Plan"
@@ -2016,11 +2004,11 @@ msgstr "URL muss mindestens 3 Zeichen lang sein"
msgid "Use template"
msgstr "Vorlage verwenden"
#: src/views/members/index.tsx:238
#: src/views/members/index.tsx:237
msgid "User"
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"
msgstr "Benutzer ist bereits Mitglied dieses Arbeitsbereichs"
@@ -2179,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>."
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."
msgstr "Sie haben sich erfolgreich angemeldet."
#: src/components/AuthForm.tsx:213
#: src/components/AuthForm.tsx:208
msgid "You have been signed up successfully."
msgstr "Sie haben sich erfolgreich registriert."
#: src/views/members/components/InviteMemberForm.tsx:309
#: src/views/members/components/InviteMemberForm.tsx:305
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!"

File diff suppressed because one or more lines are too long

View File

@@ -40,12 +40,12 @@ msgstr "{boardCount, plural, one {Import board (1)} other {Import boards ({board
#~ msgid "#1 Hacker News"
#~ msgstr "#1 Hacker News"
#: src/views/members/components/InviteMemberForm.tsx:148
#: src/views/members/components/InviteMemberForm.tsx:160
#: src/views/members/components/InviteMemberForm.tsx:146
#: src/views/members/components/InviteMemberForm.tsx:158
msgid "$10/month"
msgstr "$10/month"
#: src/views/members/components/InviteMemberForm.tsx:160
#: src/views/members/components/InviteMemberForm.tsx:158
msgid "$8/month"
msgstr "$8/month"
@@ -117,7 +117,7 @@ msgid "Add label"
msgstr "Add label"
#: src/views/card/components/MemberSelector.tsx:130
#: src/views/members/components/InviteMemberForm.tsx:240
#: src/views/members/components/InviteMemberForm.tsx:238
msgid "Add member"
msgstr "Add member"
@@ -156,7 +156,7 @@ msgstr "added label <0>{0}</0>"
#~ msgid "added label <0>{label}</0>"
#~ msgstr "added label <0>{label}</0>"
#: src/views/members/components/InviteMemberForm.tsx:310
#: src/views/members/components/InviteMemberForm.tsx:306
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."
@@ -188,7 +188,7 @@ msgstr "An error occurred while disconnecting your Trello account."
msgid "An unexpected error occurred. Please try again later."
msgstr "An unexpected error occurred. Please try again later."
#: src/views/members/components/InviteMemberForm.tsx:294
#: src/views/members/components/InviteMemberForm.tsx:290
msgid "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"
msgstr "Basic Kanban"
#: src/views/members/components/InviteMemberForm.tsx:161
#: src/views/members/components/InviteMemberForm.tsx:159
msgid "billed annually"
msgstr "billed annually"
#: src/views/members/components/InviteMemberForm.tsx:161
#: src/views/members/components/InviteMemberForm.tsx:159
msgid "billed monthly"
msgstr "billed monthly"
@@ -520,12 +520,12 @@ msgstr "Contact us"
msgid "Content Creation"
msgstr "Content Creation"
#: src/components/AuthForm.tsx:417
#: src/components/AuthForm.tsx:370
msgid "Continue with "
msgstr "Continue with "
#. placeholder {0}: key === "oidc" ? oidcProviderName : provider.name
#: src/components/AuthForm.tsx:348
#: src/components/AuthForm.tsx:301
msgid "Continue with {0}"
msgstr "Continue with {0}"
@@ -559,10 +559,6 @@ msgstr "Create card"
msgid "Create checklist"
msgstr "Create checklist"
#: src/views/members/components/InviteMemberForm.tsx:334
msgid "Create invite link"
msgstr "Create invite link"
#: src/components/LabelForm.tsx:238
msgid "Create label"
msgstr "Create label"
@@ -642,10 +638,6 @@ msgstr "Customer Support"
msgid "Dark"
msgstr "Dark"
#: src/views/members/components/InviteMemberForm.tsx:333
msgid "Deactivate invite link"
msgstr "Deactivate invite link"
#: src/components/DeleteLabelConfirmation.tsx:51
#: src/components/LabelForm.tsx:228
#: src/views/card/components/DeleteCardConfirmation.tsx:92
@@ -778,11 +770,11 @@ msgstr "Edit workspace URL"
msgid "Editing"
msgstr "Editing"
#: src/components/AuthForm.tsx:418
#: src/components/AuthForm.tsx:372
msgid "email"
msgstr "email"
#: src/views/members/components/InviteMemberForm.tsx:255
#: src/views/members/components/InviteMemberForm.tsx:252
msgid "Email"
msgstr "Email"
@@ -798,11 +790,11 @@ msgstr "Enter your current password"
msgid "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"
msgstr "Enter your email address"
#: src/components/AuthForm.tsx:372
#: src/components/AuthForm.tsx:325
msgid "Enter your name"
msgstr "Enter your name"
@@ -810,11 +802,11 @@ msgstr "Enter your name"
msgid "Enter your new password"
msgstr "Enter your new password"
#: src/components/AuthForm.tsx:397
#: src/components/AuthForm.tsx:350
msgid "Enter your password"
msgstr "Enter your password"
#: src/views/members/components/InviteMemberForm.tsx:198
#: src/views/members/components/InviteMemberForm.tsx:196
msgid "Error"
msgstr "Error"
@@ -822,11 +814,11 @@ msgstr "Error"
msgid "Error Changing Password"
msgstr "Error Changing Password"
#: src/views/members/components/InviteMemberForm.tsx:119
#: src/views/members/components/InviteMemberForm.tsx:117
msgid "Error creating invite link"
msgstr "Error creating invite link"
#: src/views/members/components/InviteMemberForm.tsx:134
#: src/views/members/components/InviteMemberForm.tsx:132
msgid "Error deactivating invite link"
msgstr "Error deactivating invite link"
@@ -846,8 +838,8 @@ msgstr "Error deleting workspace"
msgid "Error disconnecting Trello"
msgstr "Error disconnecting Trello"
#: src/views/members/components/InviteMemberForm.tsx:97
#: src/views/members/components/InviteMemberForm.tsx:103
#: src/views/members/components/InviteMemberForm.tsx:95
#: src/views/members/components/InviteMemberForm.tsx:101
msgid "Error inviting member"
msgstr "Error inviting member"
@@ -871,7 +863,7 @@ msgstr "Error updating workspace name"
msgid "Error updating workspace URL"
msgstr "Error updating workspace URL"
#: src/views/members/components/InviteMemberForm.tsx:223
#: src/views/members/components/InviteMemberForm.tsx:221
#: src/views/settings/components/UpgradeToProConfirmation.tsx:41
msgid "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."
msgstr "Failed to accept invitation. Please try again later, or contact customer support."
#: src/views/members/components/InviteMemberForm.tsx:199
#: src/views/members/components/InviteMemberForm.tsx:197
msgid "Failed to copy invite link"
msgstr "Failed to copy invite link"
#. 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."
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"
msgstr "Free"
#: src/views/members/components/InviteMemberForm.tsx:316
#: src/views/members/index.tsx:209
#: src/views/members/components/InviteMemberForm.tsx:312
#: src/views/members/index.tsx:208
msgid "Free Plan"
msgstr "Free Plan"
@@ -1121,7 +1113,7 @@ msgstr "Integrations"
msgid "Interviewing"
msgstr "Interviewing"
#: src/views/members/components/InviteMemberForm.tsx:51
#: src/views/members/components/InviteMemberForm.tsx:49
msgid "Invalid email address"
msgstr "Invalid email address"
@@ -1129,7 +1121,7 @@ msgstr "Invalid email address"
msgid "Invalid invitation"
msgstr "Invalid invitation"
#: src/views/members/index.tsx:222
#: src/views/members/index.tsx:221
msgid "Invite"
msgstr "Invite"
@@ -1137,20 +1129,20 @@ msgstr "Invite"
#~ msgid "Invite another"
#~ msgstr "Invite another"
#: src/views/members/components/InviteMemberForm.tsx:192
#: src/views/members/components/InviteMemberForm.tsx:190
msgid "Invite link copied"
msgstr "Invite link copied"
#: src/views/members/components/InviteMemberForm.tsx:193
#: src/views/members/components/InviteMemberForm.tsx:191
msgid "Invite link copied to clipboard"
msgstr "Invite link copied to clipboard"
#: src/views/card/components/MemberSelector.tsx:111
#: src/views/members/components/InviteMemberForm.tsx:353
#: src/views/members/components/InviteMemberForm.tsx:350
msgid "Invite member"
msgstr "Invite member"
#: src/views/members/components/InviteMemberForm.tsx:319
#: src/views/members/components/InviteMemberForm.tsx:315
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."
@@ -1199,7 +1191,7 @@ msgstr "Language"
msgid "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"
msgstr "Launch offer: Get unlimited members with Pro"
@@ -1251,7 +1243,7 @@ msgstr "Long-term"
msgid "Low Priority"
msgstr "Low Priority"
#: src/components/AuthForm.tsx:418
#: src/components/AuthForm.tsx:373
msgid "magic link"
msgstr "magic link"
@@ -1272,12 +1264,12 @@ msgstr "Medium Priority"
#: src/views/board/components/Filters.tsx:93
#: src/views/board/components/NewCardForm.tsx:357
#: src/views/card/index.tsx:125
#: src/views/members/index.tsx:179
#: src/views/members/index.tsx:178
msgid "Members"
msgstr "Members"
#. placeholder {0}: workspace.name ?? "Workspace"
#: src/views/members/index.tsx:174
#: src/views/members/index.tsx:173
msgid "Members | {0}"
msgstr "Members | {0}"
@@ -1285,7 +1277,7 @@ msgstr "Members | {0}"
msgid "Monthly"
msgstr "Monthly"
#: src/views/members/components/InviteMemberForm.tsx:149
#: src/views/members/components/InviteMemberForm.tsx:147
msgid "monthly billing"
msgstr "monthly billing"
@@ -1409,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."
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"
msgstr "or"
@@ -1429,14 +1421,6 @@ msgstr "Part-time"
msgid "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
msgid "Password must be at least 8 characters"
msgstr "Password must be at least 8 characters"
@@ -1445,7 +1429,7 @@ msgstr "Password must be at least 8 characters"
msgid "Passwords do not match"
msgstr "Passwords do not match"
#: src/views/members/index.tsx:135
#: src/views/members/index.tsx:134
msgid "Paused"
msgstr "Paused"
@@ -1453,7 +1437,7 @@ msgstr "Paused"
msgid "Payment frequency"
msgstr "Payment frequency"
#: src/views/members/index.tsx:135
#: src/views/members/index.tsx:134
msgid "Pending"
msgstr "Pending"
@@ -1474,15 +1458,15 @@ msgstr "Planning"
msgid "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"
msgstr "Please enter a valid email address"
#: src/components/AuthForm.tsx:376
#: src/components/AuthForm.tsx:329
msgid "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"
msgstr "Please enter a valid password"
@@ -1515,8 +1499,8 @@ msgstr "Please select a file to upload."
#: src/views/card/components/NewCommentForm.tsx:31
#: src/views/card/index.tsx:173
#: src/views/members/components/DeleteMemberConfirmation.tsx:28
#: src/views/members/components/InviteMemberForm.tsx:104
#: src/views/members/components/InviteMemberForm.tsx:224
#: src/views/members/components/InviteMemberForm.tsx:102
#: src/views/members/components/InviteMemberForm.tsx:222
#: src/views/settings/components/Avatar.tsx:78
#: src/views/settings/components/Avatar.tsx:219
#: src/views/settings/components/DeleteAccountConfirmation.tsx:40
@@ -1529,8 +1513,8 @@ msgstr "Please select a file to upload."
msgid "Please try again later, or contact customer support."
msgstr "Please try again later, or contact customer support."
#: src/views/members/components/InviteMemberForm.tsx:120
#: src/views/members/components/InviteMemberForm.tsx:135
#: src/views/members/components/InviteMemberForm.tsx:118
#: src/views/members/components/InviteMemberForm.tsx:133
msgid "Please try again later."
msgstr "Please try again later."
@@ -1553,11 +1537,11 @@ msgstr "Privacy policy"
msgid "Private"
msgstr "Private"
#: src/views/members/index.tsx:206
#: src/views/members/index.tsx:205
msgid "Pro Plan"
msgstr "Pro Plan"
#: src/views/members/components/InviteMemberForm.tsx:305
#: src/views/members/components/InviteMemberForm.tsx:301
msgid "Pro Plan ∞"
msgstr "Pro Plan ∞"
@@ -1601,7 +1585,7 @@ msgstr "Remote"
msgid "Remove"
msgstr "Remove"
#: src/views/members/index.tsx:149
#: src/views/members/index.tsx:148
msgid "Remove member"
msgstr "Remove member"
@@ -1661,7 +1645,7 @@ msgstr "Review"
msgid "Roadmap"
msgstr "Roadmap"
#: src/views/members/index.tsx:244
#: src/views/members/index.tsx:243
msgid "Role"
msgstr "Role"
@@ -1744,8 +1728,8 @@ msgid "Settings | Workspace"
msgstr "Settings | Workspace"
#: src/views/members/components/InviteMemberForm.tsx:327
#~ msgid "Share invite link"
#~ msgstr "Share invite link"
msgid "Share invite link"
msgstr "Share invite link"
#: src/views/home/components/Header.tsx:100
#: src/views/home/components/Header.tsx:138
@@ -1773,7 +1757,7 @@ msgstr "Sign up disabled"
msgid "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 "
msgstr "Sign up with "
@@ -1797,8 +1781,8 @@ msgstr "Software Development"
msgid "Star on Github"
msgstr "Star on Github"
#: src/components/AuthForm.tsx:212
#: src/components/AuthForm.tsx:229
#: src/components/AuthForm.tsx:207
#: src/components/AuthForm.tsx:224
msgid "Success"
msgstr "Success"
@@ -1818,8 +1802,8 @@ msgstr "Support the development of the project"
msgid "System"
msgstr "System"
#: src/views/members/components/InviteMemberForm.tsx:305
#: src/views/members/index.tsx:208
#: src/views/members/components/InviteMemberForm.tsx:301
#: src/views/members/index.tsx:207
msgid "Team Plan"
msgstr "Team Plan"
@@ -2114,7 +2098,7 @@ msgstr "Upgrade to Pro"
msgid "Upgrade to Pro ($29/month)"
msgstr "Upgrade to Pro ($29/month)"
#: src/views/members/components/InviteMemberForm.tsx:345
#: src/views/members/components/InviteMemberForm.tsx:341
msgid "Upgrade to Team Plan"
msgstr "Upgrade to Team Plan"
@@ -2142,11 +2126,11 @@ msgstr "URL must be at least 3 characters long"
msgid "Use template"
msgstr "Use template"
#: src/views/members/index.tsx:238
#: src/views/members/index.tsx:237
msgid "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"
msgstr "User is already a member of this workspace"
@@ -2309,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>."
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."
msgstr "You have been logged in successfully."
#: src/components/AuthForm.tsx:213
#: src/components/AuthForm.tsx:208
msgid "You have been signed up successfully."
msgstr "You have been signed up successfully."
#: src/views/members/components/InviteMemberForm.tsx:309
#: src/views/members/components/InviteMemberForm.tsx:305
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!"

File diff suppressed because one or more lines are too long

View File

@@ -36,12 +36,12 @@ msgstr "{0} etiquetas"
msgid "{boardCount, plural, one {Import board (1)} other {Import boards ({boardCount})}}"
msgstr "{boardCount, plural, one {Importar tablero (1)} other {Importar tableros ({boardCount})}}"
#: src/views/members/components/InviteMemberForm.tsx:148
#: src/views/members/components/InviteMemberForm.tsx:160
#: src/views/members/components/InviteMemberForm.tsx:146
#: src/views/members/components/InviteMemberForm.tsx:158
msgid "$10/month"
msgstr "$10/mes"
#: src/views/members/components/InviteMemberForm.tsx:160
#: src/views/members/components/InviteMemberForm.tsx:158
msgid "$8/month"
msgstr "$8/mes"
@@ -101,7 +101,7 @@ msgid "Add label"
msgstr "Añadir etiqueta"
#: src/views/card/components/MemberSelector.tsx:130
#: src/views/members/components/InviteMemberForm.tsx:240
#: src/views/members/components/InviteMemberForm.tsx:238
msgid "Add member"
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>"
msgstr "añadió la etiqueta <0>{0}</0>"
#: src/views/members/components/InviteMemberForm.tsx:310
#: src/views/members/components/InviteMemberForm.tsx:306
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."
@@ -164,7 +164,7 @@ msgstr "Ocurrió un error al desconectar tu cuenta de Trello."
msgid "An unexpected error occurred. Please try again later."
msgstr "Ha ocurrido un error inesperado. Por favor, inténtalo de nuevo más tarde."
#: src/views/members/components/InviteMemberForm.tsx:294
#: src/views/members/components/InviteMemberForm.tsx:290
msgid "Anyone with this link can join your workspace"
msgstr "Cualquier persona con este enlace puede unirse a tu espacio de trabajo"
@@ -250,11 +250,11 @@ msgstr "Pendientes"
msgid "Basic Kanban"
msgstr "Kanban básico"
#: src/views/members/components/InviteMemberForm.tsx:161
#: src/views/members/components/InviteMemberForm.tsx:159
msgid "billed annually"
msgstr "facturado anualmente"
#: src/views/members/components/InviteMemberForm.tsx:161
#: src/views/members/components/InviteMemberForm.tsx:159
msgid "billed monthly"
msgstr "facturado mensualmente"
@@ -463,12 +463,12 @@ msgstr "Contáctanos"
msgid "Content Creation"
msgstr "Creación de contenido"
#: src/components/AuthForm.tsx:417
#: src/components/AuthForm.tsx:370
msgid "Continue with "
msgstr "Continuar con "
#. placeholder {0}: key === "oidc" ? oidcProviderName : provider.name
#: src/components/AuthForm.tsx:348
#: src/components/AuthForm.tsx:301
msgid "Continue with {0}"
msgstr "Continuar con {0}"
@@ -498,10 +498,6 @@ msgstr "Crear tarjeta"
msgid "Create checklist"
msgstr "Crear lista de verificación"
#: src/views/members/components/InviteMemberForm.tsx:334
msgid "Create invite link"
msgstr "Crear enlace de invitación"
#: src/components/LabelForm.tsx:238
msgid "Create label"
msgstr "Crear etiqueta"
@@ -569,10 +565,6 @@ msgstr "Atención al cliente"
msgid "Dark"
msgstr "Oscuro"
#: src/views/members/components/InviteMemberForm.tsx:333
msgid "Deactivate invite link"
msgstr "Desactivar enlace de invitación"
#: src/components/DeleteLabelConfirmation.tsx:51
#: src/components/LabelForm.tsx:228
#: src/views/card/components/DeleteCardConfirmation.tsx:92
@@ -705,11 +697,11 @@ msgstr "Editar URL del espacio de trabajo"
msgid "Editing"
msgstr "Editando"
#: src/components/AuthForm.tsx:418
#: src/components/AuthForm.tsx:372
msgid "email"
msgstr "correo electrónico"
#: src/views/members/components/InviteMemberForm.tsx:255
#: src/views/members/components/InviteMemberForm.tsx:252
msgid "Email"
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."
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"
msgstr "Introduce tu dirección de correo electrónico"
#: src/components/AuthForm.tsx:372
#: src/components/AuthForm.tsx:325
msgid "Enter your name"
msgstr "Introduce tu nombre"
@@ -737,11 +729,11 @@ msgstr "Introduce tu nombre"
msgid "Enter your new password"
msgstr "Introduce tu nueva contraseña"
#: src/components/AuthForm.tsx:397
#: src/components/AuthForm.tsx:350
msgid "Enter your password"
msgstr "Introduce tu contraseña"
#: src/views/members/components/InviteMemberForm.tsx:198
#: src/views/members/components/InviteMemberForm.tsx:196
msgid "Error"
msgstr "Error"
@@ -749,11 +741,11 @@ msgstr "Error"
msgid "Error Changing Password"
msgstr "Error al cambiar la contraseña"
#: src/views/members/components/InviteMemberForm.tsx:119
#: src/views/members/components/InviteMemberForm.tsx:117
msgid "Error creating invite link"
msgstr "Error al crear el enlace de invitación"
#: src/views/members/components/InviteMemberForm.tsx:134
#: src/views/members/components/InviteMemberForm.tsx:132
msgid "Error deactivating invite link"
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"
msgstr "Error al desconectar Trello"
#: src/views/members/components/InviteMemberForm.tsx:97
#: src/views/members/components/InviteMemberForm.tsx:103
#: src/views/members/components/InviteMemberForm.tsx:95
#: src/views/members/components/InviteMemberForm.tsx:101
msgid "Error inviting member"
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"
msgstr "Error al actualizar la URL del espacio de trabajo"
#: src/views/members/components/InviteMemberForm.tsx:223
#: src/views/members/components/InviteMemberForm.tsx:221
#: src/views/settings/components/UpgradeToProConfirmation.tsx:41
msgid "Error upgrading subscription"
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."
msgstr "No se pudo aceptar la invitación. Por favor, inténtalo de nuevo más tarde o contacta con atención al cliente."
#: src/views/members/components/InviteMemberForm.tsx:199
#: src/views/members/components/InviteMemberForm.tsx:197
msgid "Failed to copy invite link"
msgstr "No se pudo copiar el enlace de invitación"
#. 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."
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"
msgstr "Gratis"
#: src/views/members/components/InviteMemberForm.tsx:316
#: src/views/members/index.tsx:209
#: src/views/members/components/InviteMemberForm.tsx:312
#: src/views/members/index.tsx:208
msgid "Free Plan"
msgstr "Plan gratuito"
@@ -1043,32 +1035,32 @@ msgstr "Integraciones"
msgid "Interviewing"
msgstr "Entrevistando"
#: src/views/members/components/InviteMemberForm.tsx:51
#: src/views/members/components/InviteMemberForm.tsx:49
msgid "Invalid email address"
msgstr "Dirección de correo electrónico no válida"
#: src/views/invite/index.tsx:105
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"
msgstr "Invitar"
#: src/views/members/components/InviteMemberForm.tsx:192
#: src/views/members/components/InviteMemberForm.tsx:190
msgid "Invite link copied"
msgstr "Enlace de invitación copiado"
#: src/views/members/components/InviteMemberForm.tsx:193
#: src/views/members/components/InviteMemberForm.tsx:191
msgid "Invite link copied to clipboard"
msgstr "Enlace de invitación copiado al portapapeles"
#: src/views/card/components/MemberSelector.tsx:111
#: src/views/members/components/InviteMemberForm.tsx:353
#: src/views/members/components/InviteMemberForm.tsx:350
msgid "Invite member"
msgstr "Invitar miembro"
#: src/views/members/components/InviteMemberForm.tsx:319
#: src/views/members/components/InviteMemberForm.tsx:315
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."
@@ -1117,7 +1109,7 @@ msgstr "Idioma"
msgid "Launch offer"
msgstr "Oferta de lanzamiento"
#: src/views/members/index.tsx:192
#: src/views/members/index.tsx:191
msgid "Launch offer: Get unlimited members with Pro"
msgstr "Oferta de lanzamiento: Obtén miembros ilimitados con Pro"
@@ -1169,7 +1161,7 @@ msgstr "Largo plazo"
msgid "Low Priority"
msgstr "Prioridad baja"
#: src/components/AuthForm.tsx:418
#: src/components/AuthForm.tsx:373
msgid "magic link"
msgstr "enlace mágico"
@@ -1190,12 +1182,12 @@ msgstr "Prioridad media"
#: src/views/board/components/Filters.tsx:93
#: src/views/board/components/NewCardForm.tsx:357
#: src/views/card/index.tsx:125
#: src/views/members/index.tsx:179
#: src/views/members/index.tsx:178
msgid "Members"
msgstr "Miembros"
#. placeholder {0}: workspace.name ?? "Workspace"
#: src/views/members/index.tsx:174
#: src/views/members/index.tsx:173
msgid "Members | {0}"
msgstr "Miembros | {0}"
@@ -1203,7 +1195,7 @@ msgstr "Miembros | {0}"
msgid "Monthly"
msgstr "Mensual"
#: src/views/members/components/InviteMemberForm.tsx:149
#: src/views/members/components/InviteMemberForm.tsx:147
msgid "monthly billing"
msgstr "facturación mensual"
@@ -1315,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."
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"
msgstr "o"
@@ -1335,14 +1327,6 @@ msgstr "Tiempo parcial"
msgid "Password Changed"
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
msgid "Password must be at least 8 characters"
msgstr "La contraseña debe tener al menos 8 caracteres"
@@ -1351,7 +1335,7 @@ msgstr "La contraseña debe tener al menos 8 caracteres"
msgid "Passwords do not match"
msgstr "Las contraseñas no coinciden"
#: src/views/members/index.tsx:135
#: src/views/members/index.tsx:134
msgid "Paused"
msgstr "Pausado"
@@ -1359,7 +1343,7 @@ msgstr "Pausado"
msgid "Payment frequency"
msgstr "Frecuencia de pago"
#: src/views/members/index.tsx:135
#: src/views/members/index.tsx:134
msgid "Pending"
msgstr "Pendiente"
@@ -1380,15 +1364,15 @@ msgstr "Planificación"
msgid "Please confirm your new password"
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"
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"
msgstr "Por favor, introduce un nombre válido"
#: src/components/AuthForm.tsx:401
#: src/components/AuthForm.tsx:354
msgid "Please enter a valid password"
msgstr "Por favor, introduce una contraseña válida"
@@ -1421,8 +1405,8 @@ msgstr "Por favor selecciona un archivo para subir."
#: src/views/card/components/NewCommentForm.tsx:31
#: src/views/card/index.tsx:173
#: src/views/members/components/DeleteMemberConfirmation.tsx:28
#: src/views/members/components/InviteMemberForm.tsx:104
#: src/views/members/components/InviteMemberForm.tsx:224
#: src/views/members/components/InviteMemberForm.tsx:102
#: src/views/members/components/InviteMemberForm.tsx:222
#: src/views/settings/components/Avatar.tsx:78
#: src/views/settings/components/Avatar.tsx:219
#: src/views/settings/components/DeleteAccountConfirmation.tsx:40
@@ -1435,8 +1419,8 @@ msgstr "Por favor selecciona un archivo para subir."
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."
#: src/views/members/components/InviteMemberForm.tsx:120
#: src/views/members/components/InviteMemberForm.tsx:135
#: src/views/members/components/InviteMemberForm.tsx:118
#: src/views/members/components/InviteMemberForm.tsx:133
msgid "Please try again later."
msgstr "Por favor, inténtalo de nuevo más tarde."
@@ -1459,11 +1443,11 @@ msgstr "Política de privacidad"
msgid "Private"
msgstr "Privado"
#: src/views/members/index.tsx:206
#: src/views/members/index.tsx:205
msgid "Pro Plan"
msgstr "Plan Pro"
#: src/views/members/components/InviteMemberForm.tsx:305
#: src/views/members/components/InviteMemberForm.tsx:301
msgid "Pro Plan ∞"
msgstr "Plan Pro ∞"
@@ -1507,7 +1491,7 @@ msgstr "Remoto"
msgid "Remove"
msgstr "Eliminar"
#: src/views/members/index.tsx:149
#: src/views/members/index.tsx:148
msgid "Remove member"
msgstr "Eliminar miembro"
@@ -1559,7 +1543,7 @@ msgstr "Revisión"
msgid "Roadmap"
msgstr "Hoja de ruta"
#: src/views/members/index.tsx:244
#: src/views/members/index.tsx:243
msgid "Role"
msgstr "Rol"
@@ -1633,6 +1617,10 @@ msgstr "Configuración | Integraciones"
msgid "Settings | Workspace"
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:138
msgid "Sign in"
@@ -1659,7 +1647,7 @@ msgstr "Registro deshabilitado"
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."
#: src/components/AuthForm.tsx:417
#: src/components/AuthForm.tsx:370
msgid "Sign up with "
msgstr "Registrarse con "
@@ -1683,8 +1671,8 @@ msgstr "Desarrollo de software"
msgid "Star on Github"
msgstr "Estrella en Github"
#: src/components/AuthForm.tsx:212
#: src/components/AuthForm.tsx:229
#: src/components/AuthForm.tsx:207
#: src/components/AuthForm.tsx:224
msgid "Success"
msgstr "Éxito"
@@ -1704,8 +1692,8 @@ msgstr "Apoya el desarrollo del proyecto"
msgid "System"
msgstr "Sistema"
#: src/views/members/components/InviteMemberForm.tsx:305
#: src/views/members/index.tsx:208
#: src/views/members/components/InviteMemberForm.tsx:301
#: src/views/members/index.tsx:207
msgid "Team Plan"
msgstr "Plan de Equipo"
@@ -1988,7 +1976,7 @@ msgstr "Actualizar a Pro"
msgid "Upgrade to Pro ($29/month)"
msgstr "Actualizar a Pro ($29/mes)"
#: src/views/members/components/InviteMemberForm.tsx:345
#: src/views/members/components/InviteMemberForm.tsx:341
msgid "Upgrade to Team Plan"
msgstr "Actualizar al Plan de Equipo"
@@ -2016,11 +2004,11 @@ msgstr "La URL debe tener al menos 3 caracteres"
msgid "Use template"
msgstr "Usar plantilla"
#: src/views/members/index.tsx:238
#: src/views/members/index.tsx:237
msgid "User"
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"
msgstr "El usuario ya es miembro de este espacio de trabajo"
@@ -2179,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>."
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."
msgstr "Has iniciado sesión correctamente."
#: src/components/AuthForm.tsx:213
#: src/components/AuthForm.tsx:208
msgid "You have been signed up successfully."
msgstr "Te has registrado correctamente."
#: src/views/members/components/InviteMemberForm.tsx:309
#: src/views/members/components/InviteMemberForm.tsx:305
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!"

File diff suppressed because one or more lines are too long

View File

@@ -36,12 +36,12 @@ msgstr "{0} étiquettes"
msgid "{boardCount, plural, one {Import board (1)} other {Import boards ({boardCount})}}"
msgstr "{boardCount, plural, one {Importer le tableau (1)} other {Importer les tableaux ({boardCount})}}"
#: src/views/members/components/InviteMemberForm.tsx:148
#: src/views/members/components/InviteMemberForm.tsx:160
#: src/views/members/components/InviteMemberForm.tsx:146
#: src/views/members/components/InviteMemberForm.tsx:158
msgid "$10/month"
msgstr "10 $/mois"
#: src/views/members/components/InviteMemberForm.tsx:160
#: src/views/members/components/InviteMemberForm.tsx:158
msgid "$8/month"
msgstr "8 $/mois"
@@ -101,7 +101,7 @@ msgid "Add label"
msgstr "Ajouter une étiquette"
#: src/views/card/components/MemberSelector.tsx:130
#: src/views/members/components/InviteMemberForm.tsx:240
#: src/views/members/components/InviteMemberForm.tsx:238
msgid "Add member"
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>"
msgstr "a ajouté l'étiquette <0>{0}</0>"
#: src/views/members/components/InviteMemberForm.tsx:310
#: src/views/members/components/InviteMemberForm.tsx:306
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."
@@ -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."
msgstr "Une erreur inattendue s'est produite. Veuillez réessayer plus tard."
#: src/views/members/components/InviteMemberForm.tsx:294
#: src/views/members/components/InviteMemberForm.tsx:290
msgid "Anyone with this link can join your workspace"
msgstr "Toute personne disposant de ce lien peut rejoindre votre espace de travail"
@@ -250,11 +250,11 @@ msgstr "Backlog"
msgid "Basic Kanban"
msgstr "Kanban basique"
#: src/views/members/components/InviteMemberForm.tsx:161
#: src/views/members/components/InviteMemberForm.tsx:159
msgid "billed annually"
msgstr "facturation annuelle"
#: src/views/members/components/InviteMemberForm.tsx:161
#: src/views/members/components/InviteMemberForm.tsx:159
msgid "billed monthly"
msgstr "facturation mensuelle"
@@ -463,12 +463,12 @@ msgstr "Contactez-nous"
msgid "Content Creation"
msgstr "Création de contenu"
#: src/components/AuthForm.tsx:417
#: src/components/AuthForm.tsx:370
msgid "Continue with "
msgstr "Continuer avec "
#. placeholder {0}: key === "oidc" ? oidcProviderName : provider.name
#: src/components/AuthForm.tsx:348
#: src/components/AuthForm.tsx:301
msgid "Continue with {0}"
msgstr "Continuer avec {0}"
@@ -498,10 +498,6 @@ msgstr "Créer une carte"
msgid "Create checklist"
msgstr "Créer une checklist"
#: src/views/members/components/InviteMemberForm.tsx:334
msgid "Create invite link"
msgstr "Créer un lien d'invitation"
#: src/components/LabelForm.tsx:238
msgid "Create label"
msgstr "Créer une étiquette"
@@ -569,10 +565,6 @@ msgstr "Support client"
msgid "Dark"
msgstr "Sombre"
#: src/views/members/components/InviteMemberForm.tsx:333
msgid "Deactivate invite link"
msgstr "Désactiver le lien d'invitation"
#: src/components/DeleteLabelConfirmation.tsx:51
#: src/components/LabelForm.tsx:228
#: src/views/card/components/DeleteCardConfirmation.tsx:92
@@ -705,11 +697,11 @@ msgstr "Modifier l'URL de l'espace de travail"
msgid "Editing"
msgstr "Édition"
#: src/components/AuthForm.tsx:418
#: src/components/AuthForm.tsx:372
msgid "email"
msgstr "e-mail"
#: src/views/members/components/InviteMemberForm.tsx:255
#: src/views/members/components/InviteMemberForm.tsx:252
msgid "Email"
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."
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"
msgstr "Saisissez votre adresse e-mail"
#: src/components/AuthForm.tsx:372
#: src/components/AuthForm.tsx:325
msgid "Enter your name"
msgstr "Saisissez votre nom"
@@ -737,11 +729,11 @@ msgstr "Saisissez votre nom"
msgid "Enter your new password"
msgstr "Saisissez votre nouveau mot de passe"
#: src/components/AuthForm.tsx:397
#: src/components/AuthForm.tsx:350
msgid "Enter your password"
msgstr "Saisissez votre mot de passe"
#: src/views/members/components/InviteMemberForm.tsx:198
#: src/views/members/components/InviteMemberForm.tsx:196
msgid "Error"
msgstr "Erreur"
@@ -749,11 +741,11 @@ msgstr "Erreur"
msgid "Error Changing Password"
msgstr "Erreur lors du changement de mot de passe"
#: src/views/members/components/InviteMemberForm.tsx:119
#: src/views/members/components/InviteMemberForm.tsx:117
msgid "Error creating invite link"
msgstr "Erreur lors de la création du lien d'invitation"
#: src/views/members/components/InviteMemberForm.tsx:134
#: src/views/members/components/InviteMemberForm.tsx:132
msgid "Error deactivating invite link"
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"
msgstr "Erreur lors de la déconnexion de Trello"
#: src/views/members/components/InviteMemberForm.tsx:97
#: src/views/members/components/InviteMemberForm.tsx:103
#: src/views/members/components/InviteMemberForm.tsx:95
#: src/views/members/components/InviteMemberForm.tsx:101
msgid "Error inviting member"
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"
msgstr "Erreur lors de la mise à jour de l'URL de l'espace de travail"
#: src/views/members/components/InviteMemberForm.tsx:223
#: src/views/members/components/InviteMemberForm.tsx:221
#: src/views/settings/components/UpgradeToProConfirmation.tsx:41
msgid "Error upgrading subscription"
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."
msgstr "Échec de l'acceptation de l'invitation. Veuillez réessayer plus tard ou contacter le service client."
#: src/views/members/components/InviteMemberForm.tsx:199
#: src/views/members/components/InviteMemberForm.tsx:197
msgid "Failed to copy invite link"
msgstr "Échec de la copie du lien d'invitation"
#. 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."
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"
msgstr "Gratuit"
#: src/views/members/components/InviteMemberForm.tsx:316
#: src/views/members/index.tsx:209
#: src/views/members/components/InviteMemberForm.tsx:312
#: src/views/members/index.tsx:208
msgid "Free Plan"
msgstr "Forfait gratuit"
@@ -1043,32 +1035,32 @@ msgstr "Intégrations"
msgid "Interviewing"
msgstr "Entretien"
#: src/views/members/components/InviteMemberForm.tsx:51
#: src/views/members/components/InviteMemberForm.tsx:49
msgid "Invalid email address"
msgstr "Adresse e-mail invalide"
#: src/views/invite/index.tsx:105
msgid "Invalid invitation"
msgstr "Invitation invalide"
msgstr "Invitation non valide"
#: src/views/members/index.tsx:222
#: src/views/members/index.tsx:221
msgid "Invite"
msgstr "Inviter"
#: src/views/members/components/InviteMemberForm.tsx:192
#: src/views/members/components/InviteMemberForm.tsx:190
msgid "Invite link copied"
msgstr "Lien d'invitation copié"
#: src/views/members/components/InviteMemberForm.tsx:193
#: src/views/members/components/InviteMemberForm.tsx:191
msgid "Invite link copied to clipboard"
msgstr "Lien d'invitation copié dans le presse-papiers"
#: src/views/card/components/MemberSelector.tsx:111
#: src/views/members/components/InviteMemberForm.tsx:353
#: src/views/members/components/InviteMemberForm.tsx:350
msgid "Invite member"
msgstr "Inviter un membre"
#: src/views/members/components/InviteMemberForm.tsx:319
#: src/views/members/components/InviteMemberForm.tsx:315
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."
@@ -1117,7 +1109,7 @@ msgstr "Langue"
msgid "Launch offer"
msgstr "Offre de lancement"
#: src/views/members/index.tsx:192
#: src/views/members/index.tsx:191
msgid "Launch offer: Get unlimited members with Pro"
msgstr "Offre de lancement : obtenez des membres illimités avec Pro"
@@ -1169,7 +1161,7 @@ msgstr "Long terme"
msgid "Low Priority"
msgstr "Priorité basse"
#: src/components/AuthForm.tsx:418
#: src/components/AuthForm.tsx:373
msgid "magic link"
msgstr "lien magique"
@@ -1190,12 +1182,12 @@ msgstr "Priorité moyenne"
#: src/views/board/components/Filters.tsx:93
#: src/views/board/components/NewCardForm.tsx:357
#: src/views/card/index.tsx:125
#: src/views/members/index.tsx:179
#: src/views/members/index.tsx:178
msgid "Members"
msgstr "Membres"
#. placeholder {0}: workspace.name ?? "Workspace"
#: src/views/members/index.tsx:174
#: src/views/members/index.tsx:173
msgid "Members | {0}"
msgstr "Membres | {0}"
@@ -1203,7 +1195,7 @@ msgstr "Membres | {0}"
msgid "Monthly"
msgstr "Mensuel"
#: src/views/members/components/InviteMemberForm.tsx:149
#: src/views/members/components/InviteMemberForm.tsx:147
msgid "monthly billing"
msgstr "facturation mensuelle"
@@ -1315,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."
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"
msgstr "ou"
@@ -1335,14 +1327,6 @@ msgstr "Temps partiel"
msgid "Password Changed"
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
msgid "Password must be at least 8 characters"
msgstr "Le mot de passe doit comporter au moins 8 caractères"
@@ -1351,7 +1335,7 @@ msgstr "Le mot de passe doit comporter au moins 8 caractères"
msgid "Passwords do not match"
msgstr "Les mots de passe ne correspondent pas"
#: src/views/members/index.tsx:135
#: src/views/members/index.tsx:134
msgid "Paused"
msgstr "En pause"
@@ -1359,7 +1343,7 @@ msgstr "En pause"
msgid "Payment frequency"
msgstr "Fréquence de paiement"
#: src/views/members/index.tsx:135
#: src/views/members/index.tsx:134
msgid "Pending"
msgstr "En attente"
@@ -1380,15 +1364,15 @@ msgstr "Planification"
msgid "Please confirm your new password"
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"
msgstr "Veuillez saisir une adresse e-mail valide"
#: src/components/AuthForm.tsx:376
#: src/components/AuthForm.tsx:329
msgid "Please enter a valid name"
msgstr "Veuillez saisir un nom valide"
#: src/components/AuthForm.tsx:401
#: src/components/AuthForm.tsx:354
msgid "Please enter a valid password"
msgstr "Veuillez saisir un mot de passe valide"
@@ -1421,8 +1405,8 @@ msgstr "Veuillez sélectionner un fichier à télécharger."
#: src/views/card/components/NewCommentForm.tsx:31
#: src/views/card/index.tsx:173
#: src/views/members/components/DeleteMemberConfirmation.tsx:28
#: src/views/members/components/InviteMemberForm.tsx:104
#: src/views/members/components/InviteMemberForm.tsx:224
#: src/views/members/components/InviteMemberForm.tsx:102
#: src/views/members/components/InviteMemberForm.tsx:222
#: src/views/settings/components/Avatar.tsx:78
#: src/views/settings/components/Avatar.tsx:219
#: src/views/settings/components/DeleteAccountConfirmation.tsx:40
@@ -1435,8 +1419,8 @@ msgstr "Veuillez sélectionner un fichier à télécharger."
msgid "Please try again later, or contact customer support."
msgstr "Veuillez réessayer plus tard ou contacter le service client."
#: src/views/members/components/InviteMemberForm.tsx:120
#: src/views/members/components/InviteMemberForm.tsx:135
#: src/views/members/components/InviteMemberForm.tsx:118
#: src/views/members/components/InviteMemberForm.tsx:133
msgid "Please try again later."
msgstr "Veuillez réessayer plus tard."
@@ -1459,11 +1443,11 @@ msgstr "Politique de confidentialité"
msgid "Private"
msgstr "Privé"
#: src/views/members/index.tsx:206
#: src/views/members/index.tsx:205
msgid "Pro Plan"
msgstr "Plan Pro"
#: src/views/members/components/InviteMemberForm.tsx:305
#: src/views/members/components/InviteMemberForm.tsx:301
msgid "Pro Plan ∞"
msgstr "Plan Pro ∞"
@@ -1507,7 +1491,7 @@ msgstr "À distance"
msgid "Remove"
msgstr "Supprimer"
#: src/views/members/index.tsx:149
#: src/views/members/index.tsx:148
msgid "Remove member"
msgstr "Supprimer le membre"
@@ -1559,7 +1543,7 @@ msgstr "Révision"
msgid "Roadmap"
msgstr "Feuille de route"
#: src/views/members/index.tsx:244
#: src/views/members/index.tsx:243
msgid "Role"
msgstr "Rôle"
@@ -1633,6 +1617,10 @@ msgstr "Paramètres | Intégrations"
msgid "Settings | Workspace"
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:138
msgid "Sign in"
@@ -1659,7 +1647,7 @@ msgstr "Inscription désactivée"
msgid "Sign up is currently disabled. Please try again later."
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 "
msgstr "S'inscrire avec "
@@ -1683,8 +1671,8 @@ msgstr "Développement logiciel"
msgid "Star on Github"
msgstr "Étoile sur Github"
#: src/components/AuthForm.tsx:212
#: src/components/AuthForm.tsx:229
#: src/components/AuthForm.tsx:207
#: src/components/AuthForm.tsx:224
msgid "Success"
msgstr "Succès"
@@ -1704,8 +1692,8 @@ msgstr "Soutenir le développement du projet"
msgid "System"
msgstr "Système"
#: src/views/members/components/InviteMemberForm.tsx:305
#: src/views/members/index.tsx:208
#: src/views/members/components/InviteMemberForm.tsx:301
#: src/views/members/index.tsx:207
msgid "Team Plan"
msgstr "Forfait d'équipe"
@@ -1988,7 +1976,7 @@ msgstr "Passer à Pro"
msgid "Upgrade to Pro ($29/month)"
msgstr "Passer à Pro (29 $/mois)"
#: src/views/members/components/InviteMemberForm.tsx:345
#: src/views/members/components/InviteMemberForm.tsx:341
msgid "Upgrade to Team Plan"
msgstr "Passer au forfait d'équipe"
@@ -2016,11 +2004,11 @@ msgstr "L'URL doit comporter au moins 3 caractères"
msgid "Use template"
msgstr "Utiliser le modèle"
#: src/views/members/index.tsx:238
#: src/views/members/index.tsx:237
msgid "User"
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"
msgstr "L'utilisateur est déjà membre de cet espace de travail"
@@ -2179,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>."
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."
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."
msgstr "Vous vous êtes inscrit avec succès."
#: src/views/members/components/InviteMemberForm.tsx:309
#: src/views/members/components/InviteMemberForm.tsx:305
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 !"

File diff suppressed because one or more lines are too long

View File

@@ -36,12 +36,12 @@ msgstr "{0} etichette"
msgid "{boardCount, plural, one {Import board (1)} other {Import boards ({boardCount})}}"
msgstr "{boardCount, plural, one {Importa bacheca (1)} other {Importa bacheche ({boardCount})}}"
#: src/views/members/components/InviteMemberForm.tsx:148
#: src/views/members/components/InviteMemberForm.tsx:160
#: src/views/members/components/InviteMemberForm.tsx:146
#: src/views/members/components/InviteMemberForm.tsx:158
msgid "$10/month"
msgstr "$10/mese"
#: src/views/members/components/InviteMemberForm.tsx:160
#: src/views/members/components/InviteMemberForm.tsx:158
msgid "$8/month"
msgstr "$8/mese"
@@ -101,7 +101,7 @@ msgid "Add label"
msgstr "Aggiungi etichetta"
#: src/views/card/components/MemberSelector.tsx:130
#: src/views/members/components/InviteMemberForm.tsx:240
#: src/views/members/components/InviteMemberForm.tsx:238
msgid "Add member"
msgstr "Aggiungi membro"
@@ -136,7 +136,7 @@ msgstr "ha aggiunto l'elemento <0>{0}</0> alla checklist"
msgid "added label <0>{0}</0>"
msgstr "ha aggiunto l'etichetta <0>{0}</0>"
#: src/views/members/components/InviteMemberForm.tsx:310
#: src/views/members/components/InviteMemberForm.tsx:306
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."
@@ -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."
msgstr "Si è verificato un errore imprevisto. Riprova più tardi."
#: src/views/members/components/InviteMemberForm.tsx:294
#: src/views/members/components/InviteMemberForm.tsx:290
msgid "Anyone with this link can join your workspace"
msgstr "Chiunque abbia questo link può unirsi al tuo spazio di lavoro"
@@ -250,11 +250,11 @@ msgstr "Backlog"
msgid "Basic Kanban"
msgstr "Kanban base"
#: src/views/members/components/InviteMemberForm.tsx:161
#: src/views/members/components/InviteMemberForm.tsx:159
msgid "billed annually"
msgstr "fatturato annualmente"
#: src/views/members/components/InviteMemberForm.tsx:161
#: src/views/members/components/InviteMemberForm.tsx:159
msgid "billed monthly"
msgstr "fatturato mensilmente"
@@ -463,12 +463,12 @@ msgstr "Contattaci"
msgid "Content Creation"
msgstr "Creazione contenuti"
#: src/components/AuthForm.tsx:417
#: src/components/AuthForm.tsx:370
msgid "Continue with "
msgstr "Continua con "
#. placeholder {0}: key === "oidc" ? oidcProviderName : provider.name
#: src/components/AuthForm.tsx:348
#: src/components/AuthForm.tsx:301
msgid "Continue with {0}"
msgstr "Continua con {0}"
@@ -498,10 +498,6 @@ msgstr "Crea carta"
msgid "Create checklist"
msgstr "Crea checklist"
#: src/views/members/components/InviteMemberForm.tsx:334
msgid "Create invite link"
msgstr "Crea link di invito"
#: src/components/LabelForm.tsx:238
msgid "Create label"
msgstr "Crea etichetta"
@@ -569,10 +565,6 @@ msgstr "Assistenza clienti"
msgid "Dark"
msgstr "Scuro"
#: src/views/members/components/InviteMemberForm.tsx:333
msgid "Deactivate invite link"
msgstr "Disattiva link di invito"
#: src/components/DeleteLabelConfirmation.tsx:51
#: src/components/LabelForm.tsx:228
#: src/views/card/components/DeleteCardConfirmation.tsx:92
@@ -705,11 +697,11 @@ msgstr "Modifica URL dell'area di lavoro"
msgid "Editing"
msgstr "Modifica"
#: src/components/AuthForm.tsx:418
#: src/components/AuthForm.tsx:372
msgid "email"
msgstr "email"
#: src/views/members/components/InviteMemberForm.tsx:255
#: src/views/members/components/InviteMemberForm.tsx:252
msgid "Email"
msgstr "Email"
@@ -725,11 +717,11 @@ msgstr "Inserisci la tua password attuale"
msgid "Enter your current password and choose a new secure password."
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"
msgstr "Inserisci il tuo indirizzo email"
#: src/components/AuthForm.tsx:372
#: src/components/AuthForm.tsx:325
msgid "Enter your name"
msgstr "Inserisci il tuo nome"
@@ -737,11 +729,11 @@ msgstr "Inserisci il tuo nome"
msgid "Enter your new password"
msgstr "Inserisci la tua nuova password"
#: src/components/AuthForm.tsx:397
#: src/components/AuthForm.tsx:350
msgid "Enter your password"
msgstr "Inserisci la tua password"
#: src/views/members/components/InviteMemberForm.tsx:198
#: src/views/members/components/InviteMemberForm.tsx:196
msgid "Error"
msgstr "Errore"
@@ -749,11 +741,11 @@ msgstr "Errore"
msgid "Error Changing Password"
msgstr "Errore durante il cambio della password"
#: src/views/members/components/InviteMemberForm.tsx:119
#: src/views/members/components/InviteMemberForm.tsx:117
msgid "Error creating invite link"
msgstr "Errore durante la creazione del link di invito"
#: src/views/members/components/InviteMemberForm.tsx:134
#: src/views/members/components/InviteMemberForm.tsx:132
msgid "Error deactivating invite link"
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"
msgstr "Errore durante la disconnessione da Trello"
#: src/views/members/components/InviteMemberForm.tsx:97
#: src/views/members/components/InviteMemberForm.tsx:103
#: src/views/members/components/InviteMemberForm.tsx:95
#: src/views/members/components/InviteMemberForm.tsx:101
msgid "Error inviting member"
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"
msgstr "Errore durante l'aggiornamento dell'URL dell'area di lavoro"
#: src/views/members/components/InviteMemberForm.tsx:223
#: src/views/members/components/InviteMemberForm.tsx:221
#: src/views/settings/components/UpgradeToProConfirmation.tsx:41
msgid "Error upgrading subscription"
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."
msgstr "Impossibile accettare l'invito. Riprova più tardi o contatta l'assistenza clienti."
#: src/views/members/components/InviteMemberForm.tsx:199
#: src/views/members/components/InviteMemberForm.tsx:197
msgid "Failed to copy invite link"
msgstr "Impossibile copiare il link di invito"
#. 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."
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"
msgstr "Gratuito"
#: src/views/members/components/InviteMemberForm.tsx:316
#: src/views/members/index.tsx:209
#: src/views/members/components/InviteMemberForm.tsx:312
#: src/views/members/index.tsx:208
msgid "Free Plan"
msgstr "Piano gratuito"
@@ -1043,7 +1035,7 @@ msgstr "Integrazioni"
msgid "Interviewing"
msgstr "Colloquio"
#: src/views/members/components/InviteMemberForm.tsx:51
#: src/views/members/components/InviteMemberForm.tsx:49
msgid "Invalid email address"
msgstr "Indirizzo email non valido"
@@ -1051,24 +1043,24 @@ msgstr "Indirizzo email non valido"
msgid "Invalid invitation"
msgstr "Invito non valido"
#: src/views/members/index.tsx:222
#: src/views/members/index.tsx:221
msgid "Invite"
msgstr "Invita"
#: src/views/members/components/InviteMemberForm.tsx:192
#: src/views/members/components/InviteMemberForm.tsx:190
msgid "Invite link copied"
msgstr "Link di invito copiato"
#: src/views/members/components/InviteMemberForm.tsx:193
#: src/views/members/components/InviteMemberForm.tsx:191
msgid "Invite link copied to clipboard"
msgstr "Link di invito copiato negli appunti"
#: src/views/card/components/MemberSelector.tsx:111
#: src/views/members/components/InviteMemberForm.tsx:353
#: src/views/members/components/InviteMemberForm.tsx:350
msgid "Invite member"
msgstr "Invita membro"
#: src/views/members/components/InviteMemberForm.tsx:319
#: src/views/members/components/InviteMemberForm.tsx:315
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."
@@ -1117,7 +1109,7 @@ msgstr "Lingua"
msgid "Launch offer"
msgstr "Offerta di lancio"
#: src/views/members/index.tsx:192
#: src/views/members/index.tsx:191
msgid "Launch offer: Get unlimited members with Pro"
msgstr "Offerta di lancio: ottieni membri illimitati con Pro"
@@ -1169,7 +1161,7 @@ msgstr "A lungo termine"
msgid "Low Priority"
msgstr "Bassa priorità"
#: src/components/AuthForm.tsx:418
#: src/components/AuthForm.tsx:373
msgid "magic link"
msgstr "link magico"
@@ -1190,12 +1182,12 @@ msgstr "Media priorità"
#: src/views/board/components/Filters.tsx:93
#: src/views/board/components/NewCardForm.tsx:357
#: src/views/card/index.tsx:125
#: src/views/members/index.tsx:179
#: src/views/members/index.tsx:178
msgid "Members"
msgstr "Membri"
#. placeholder {0}: workspace.name ?? "Workspace"
#: src/views/members/index.tsx:174
#: src/views/members/index.tsx:173
msgid "Members | {0}"
msgstr "Membri | {0}"
@@ -1203,7 +1195,7 @@ msgstr "Membri | {0}"
msgid "Monthly"
msgstr "Mensile"
#: src/views/members/components/InviteMemberForm.tsx:149
#: src/views/members/components/InviteMemberForm.tsx:147
msgid "monthly billing"
msgstr "fatturazione mensile"
@@ -1315,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."
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"
msgstr "o"
@@ -1335,14 +1327,6 @@ msgstr "Part-time"
msgid "Password Changed"
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
msgid "Password must be at least 8 characters"
msgstr "La password deve contenere almeno 8 caratteri"
@@ -1351,7 +1335,7 @@ msgstr "La password deve contenere almeno 8 caratteri"
msgid "Passwords do not match"
msgstr "Le password non corrispondono"
#: src/views/members/index.tsx:135
#: src/views/members/index.tsx:134
msgid "Paused"
msgstr "In pausa"
@@ -1359,7 +1343,7 @@ msgstr "In pausa"
msgid "Payment frequency"
msgstr "Frequenza di pagamento"
#: src/views/members/index.tsx:135
#: src/views/members/index.tsx:134
msgid "Pending"
msgstr "In attesa"
@@ -1380,15 +1364,15 @@ msgstr "Pianificazione"
msgid "Please confirm your new password"
msgstr "Conferma la tua nuova password"
#: src/components/AuthForm.tsx:388
#: src/components/AuthForm.tsx:341
msgid "Please enter a valid email address"
msgstr "Inserisci un indirizzo email valido"
#: src/components/AuthForm.tsx:376
#: src/components/AuthForm.tsx:329
msgid "Please enter a valid name"
msgstr "Inserisci un nome valido"
#: src/components/AuthForm.tsx:401
#: src/components/AuthForm.tsx:354
msgid "Please enter a valid password"
msgstr "Inserisci una password valida"
@@ -1421,8 +1405,8 @@ msgstr "Seleziona un file da caricare."
#: src/views/card/components/NewCommentForm.tsx:31
#: src/views/card/index.tsx:173
#: src/views/members/components/DeleteMemberConfirmation.tsx:28
#: src/views/members/components/InviteMemberForm.tsx:104
#: src/views/members/components/InviteMemberForm.tsx:224
#: src/views/members/components/InviteMemberForm.tsx:102
#: src/views/members/components/InviteMemberForm.tsx:222
#: src/views/settings/components/Avatar.tsx:78
#: src/views/settings/components/Avatar.tsx:219
#: src/views/settings/components/DeleteAccountConfirmation.tsx:40
@@ -1435,8 +1419,8 @@ msgstr "Seleziona un file da caricare."
msgid "Please try again later, or contact customer support."
msgstr "Riprova più tardi o contatta l'assistenza clienti."
#: src/views/members/components/InviteMemberForm.tsx:120
#: src/views/members/components/InviteMemberForm.tsx:135
#: src/views/members/components/InviteMemberForm.tsx:118
#: src/views/members/components/InviteMemberForm.tsx:133
msgid "Please try again later."
msgstr "Riprova più tardi."
@@ -1459,11 +1443,11 @@ msgstr "Informativa sulla privacy"
msgid "Private"
msgstr "Privato"
#: src/views/members/index.tsx:206
#: src/views/members/index.tsx:205
msgid "Pro Plan"
msgstr "Piano Pro"
#: src/views/members/components/InviteMemberForm.tsx:305
#: src/views/members/components/InviteMemberForm.tsx:301
msgid "Pro Plan ∞"
msgstr "Piano Pro ∞"
@@ -1507,7 +1491,7 @@ msgstr "Remoto"
msgid "Remove"
msgstr "Rimuovi"
#: src/views/members/index.tsx:149
#: src/views/members/index.tsx:148
msgid "Remove member"
msgstr "Rimuovi membro"
@@ -1559,7 +1543,7 @@ msgstr "Revisione"
msgid "Roadmap"
msgstr "Roadmap"
#: src/views/members/index.tsx:244
#: src/views/members/index.tsx:243
msgid "Role"
msgstr "Ruolo"
@@ -1633,6 +1617,10 @@ msgstr "Impostazioni | Integrazioni"
msgid "Settings | Workspace"
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:138
msgid "Sign in"
@@ -1659,7 +1647,7 @@ msgstr "Registrazione disabilitata"
msgid "Sign up is currently disabled. Please try again later."
msgstr "La registrazione è attualmente disabilitata. Riprova più tardi."
#: src/components/AuthForm.tsx:417
#: src/components/AuthForm.tsx:370
msgid "Sign up with "
msgstr "Registrati con "
@@ -1683,8 +1671,8 @@ msgstr "Sviluppo software"
msgid "Star on Github"
msgstr "Metti una stella su Github"
#: src/components/AuthForm.tsx:212
#: src/components/AuthForm.tsx:229
#: src/components/AuthForm.tsx:207
#: src/components/AuthForm.tsx:224
msgid "Success"
msgstr "Operazione riuscita"
@@ -1704,8 +1692,8 @@ msgstr "Sostieni lo sviluppo del progetto"
msgid "System"
msgstr "Sistema"
#: src/views/members/components/InviteMemberForm.tsx:305
#: src/views/members/index.tsx:208
#: src/views/members/components/InviteMemberForm.tsx:301
#: src/views/members/index.tsx:207
msgid "Team Plan"
msgstr "Piano Team"
@@ -1988,7 +1976,7 @@ msgstr "Passa a Pro"
msgid "Upgrade to Pro ($29/month)"
msgstr "Passa a Pro ($29/mese)"
#: src/views/members/components/InviteMemberForm.tsx:345
#: src/views/members/components/InviteMemberForm.tsx:341
msgid "Upgrade to Team Plan"
msgstr "Passa al Piano Team"
@@ -2016,11 +2004,11 @@ msgstr "L'URL deve contenere almeno 3 caratteri"
msgid "Use template"
msgstr "Usa template"
#: src/views/members/index.tsx:238
#: src/views/members/index.tsx:237
msgid "User"
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"
msgstr "L'utente è già membro di questo spazio di lavoro"
@@ -2179,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>."
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."
msgstr "Hai effettuato l'accesso con successo."
#: src/components/AuthForm.tsx:213
#: src/components/AuthForm.tsx:208
msgid "You have been signed up successfully."
msgstr "Ti sei registrato con successo."
#: src/views/members/components/InviteMemberForm.tsx:309
#: src/views/members/components/InviteMemberForm.tsx:305
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!"

File diff suppressed because one or more lines are too long

View File

@@ -36,12 +36,12 @@ msgstr "{0} labels"
msgid "{boardCount, plural, one {Import board (1)} other {Import boards ({boardCount})}}"
msgstr "{boardCount, plural, one {Bord importeren (1)} other {Borden importeren ({boardCount})}}"
#: src/views/members/components/InviteMemberForm.tsx:148
#: src/views/members/components/InviteMemberForm.tsx:160
#: src/views/members/components/InviteMemberForm.tsx:146
#: src/views/members/components/InviteMemberForm.tsx:158
msgid "$10/month"
msgstr "$10/maand"
#: src/views/members/components/InviteMemberForm.tsx:160
#: src/views/members/components/InviteMemberForm.tsx:158
msgid "$8/month"
msgstr "$8/maand"
@@ -101,7 +101,7 @@ msgid "Add label"
msgstr "Label toevoegen"
#: src/views/card/components/MemberSelector.tsx:130
#: src/views/members/components/InviteMemberForm.tsx:240
#: src/views/members/components/InviteMemberForm.tsx:238
msgid "Add member"
msgstr "Lid toevoegen"
@@ -136,7 +136,7 @@ msgstr "heeft checklistitem <0>{0}</0> toegevoegd"
msgid "added label <0>{0}</0>"
msgstr "heeft label <0>{0}</0> toegevoegd"
#: src/views/members/components/InviteMemberForm.tsx:310
#: src/views/members/components/InviteMemberForm.tsx:306
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."
@@ -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."
msgstr "Er is een onverwachte fout opgetreden. Probeer het later opnieuw."
#: src/views/members/components/InviteMemberForm.tsx:294
#: src/views/members/components/InviteMemberForm.tsx:290
msgid "Anyone with this link can join your workspace"
msgstr "Iedereen met deze link kan deelnemen aan je werkruimte"
@@ -250,11 +250,11 @@ msgstr "Backlog"
msgid "Basic Kanban"
msgstr "Basis kanban"
#: src/views/members/components/InviteMemberForm.tsx:161
#: src/views/members/components/InviteMemberForm.tsx:159
msgid "billed annually"
msgstr "jaarlijks gefactureerd"
#: src/views/members/components/InviteMemberForm.tsx:161
#: src/views/members/components/InviteMemberForm.tsx:159
msgid "billed monthly"
msgstr "maandelijks gefactureerd"
@@ -463,12 +463,12 @@ msgstr "Neem contact op"
msgid "Content Creation"
msgstr "Content creatie"
#: src/components/AuthForm.tsx:417
#: src/components/AuthForm.tsx:370
msgid "Continue with "
msgstr "Doorgaan met "
#. placeholder {0}: key === "oidc" ? oidcProviderName : provider.name
#: src/components/AuthForm.tsx:348
#: src/components/AuthForm.tsx:301
msgid "Continue with {0}"
msgstr "Doorgaan met {0}"
@@ -498,10 +498,6 @@ msgstr "Maak kaart"
msgid "Create checklist"
msgstr "Checklist maken"
#: src/views/members/components/InviteMemberForm.tsx:334
msgid "Create invite link"
msgstr "Uitnodigingslink maken"
#: src/components/LabelForm.tsx:238
msgid "Create label"
msgstr "Maak label"
@@ -569,10 +565,6 @@ msgstr "Klantenservice"
msgid "Dark"
msgstr "Donker"
#: src/views/members/components/InviteMemberForm.tsx:333
msgid "Deactivate invite link"
msgstr "Uitnodigingslink deactiveren"
#: src/components/DeleteLabelConfirmation.tsx:51
#: src/components/LabelForm.tsx:228
#: src/views/card/components/DeleteCardConfirmation.tsx:92
@@ -705,11 +697,11 @@ msgstr "Werkruimte-URL bewerken"
msgid "Editing"
msgstr "Bewerken"
#: src/components/AuthForm.tsx:418
#: src/components/AuthForm.tsx:372
msgid "email"
msgstr "e-mail"
#: src/views/members/components/InviteMemberForm.tsx:255
#: src/views/members/components/InviteMemberForm.tsx:252
msgid "Email"
msgstr "E-mail"
@@ -725,11 +717,11 @@ msgstr "Voer je huidige wachtwoord in"
msgid "Enter your current password and choose a new secure password."
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"
msgstr "Voer je e-mailadres in"
#: src/components/AuthForm.tsx:372
#: src/components/AuthForm.tsx:325
msgid "Enter your name"
msgstr "Voer je naam in"
@@ -737,11 +729,11 @@ msgstr "Voer je naam in"
msgid "Enter your new password"
msgstr "Voer je nieuwe wachtwoord in"
#: src/components/AuthForm.tsx:397
#: src/components/AuthForm.tsx:350
msgid "Enter your password"
msgstr "Voer je wachtwoord in"
#: src/views/members/components/InviteMemberForm.tsx:198
#: src/views/members/components/InviteMemberForm.tsx:196
msgid "Error"
msgstr "Fout"
@@ -749,11 +741,11 @@ msgstr "Fout"
msgid "Error Changing Password"
msgstr "Fout bij wijzigen wachtwoord"
#: src/views/members/components/InviteMemberForm.tsx:119
#: src/views/members/components/InviteMemberForm.tsx:117
msgid "Error creating invite link"
msgstr "Fout bij het maken van uitnodigingslink"
#: src/views/members/components/InviteMemberForm.tsx:134
#: src/views/members/components/InviteMemberForm.tsx:132
msgid "Error deactivating invite link"
msgstr "Fout bij het deactiveren van uitnodigingslink"
@@ -773,8 +765,8 @@ msgstr "Fout bij verwijderen werkruimte"
msgid "Error disconnecting Trello"
msgstr "Fout bij ontkoppelen van Trello"
#: src/views/members/components/InviteMemberForm.tsx:97
#: src/views/members/components/InviteMemberForm.tsx:103
#: src/views/members/components/InviteMemberForm.tsx:95
#: src/views/members/components/InviteMemberForm.tsx:101
msgid "Error inviting member"
msgstr "Fout bij het uitnodigen van lid"
@@ -798,7 +790,7 @@ msgstr "Fout bij bijwerken naam werkruimte"
msgid "Error updating workspace URL"
msgstr "Fout bij het bijwerken van werkruimte-URL"
#: src/views/members/components/InviteMemberForm.tsx:223
#: src/views/members/components/InviteMemberForm.tsx:221
#: src/views/settings/components/UpgradeToProConfirmation.tsx:41
msgid "Error upgrading subscription"
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."
msgstr "Uitnodiging accepteren mislukt. Probeer het later opnieuw of neem contact op met de klantenservice."
#: src/views/members/components/InviteMemberForm.tsx:199
#: src/views/members/components/InviteMemberForm.tsx:197
msgid "Failed to copy invite link"
msgstr "Kopiëren van uitnodigingslink mislukt"
#. 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."
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"
msgstr "Gratis"
#: src/views/members/components/InviteMemberForm.tsx:316
#: src/views/members/index.tsx:209
#: src/views/members/components/InviteMemberForm.tsx:312
#: src/views/members/index.tsx:208
msgid "Free Plan"
msgstr "Gratis plan"
@@ -1043,7 +1035,7 @@ msgstr "Integraties"
msgid "Interviewing"
msgstr "Interviewen"
#: src/views/members/components/InviteMemberForm.tsx:51
#: src/views/members/components/InviteMemberForm.tsx:49
msgid "Invalid email address"
msgstr "Ongeldig e-mailadres"
@@ -1051,24 +1043,24 @@ msgstr "Ongeldig e-mailadres"
msgid "Invalid invitation"
msgstr "Ongeldige uitnodiging"
#: src/views/members/index.tsx:222
#: src/views/members/index.tsx:221
msgid "Invite"
msgstr "Uitnodigen"
#: src/views/members/components/InviteMemberForm.tsx:192
#: src/views/members/components/InviteMemberForm.tsx:190
msgid "Invite link copied"
msgstr "Uitnodigingslink gekopieerd"
#: src/views/members/components/InviteMemberForm.tsx:193
#: src/views/members/components/InviteMemberForm.tsx:191
msgid "Invite link copied to clipboard"
msgstr "Uitnodigingslink gekopieerd naar klembord"
#: src/views/card/components/MemberSelector.tsx:111
#: src/views/members/components/InviteMemberForm.tsx:353
#: src/views/members/components/InviteMemberForm.tsx:350
msgid "Invite member"
msgstr "Lid uitnodigen"
#: src/views/members/components/InviteMemberForm.tsx:319
#: src/views/members/components/InviteMemberForm.tsx:315
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."
@@ -1117,7 +1109,7 @@ msgstr "Taal"
msgid "Launch offer"
msgstr "Introductieaanbieding"
#: src/views/members/index.tsx:192
#: src/views/members/index.tsx:191
msgid "Launch offer: Get unlimited members with Pro"
msgstr "Lanceringsaanbieding: krijg onbeperkt aantal leden met Pro"
@@ -1169,7 +1161,7 @@ msgstr "Lange termijn"
msgid "Low Priority"
msgstr "Lage prioriteit"
#: src/components/AuthForm.tsx:418
#: src/components/AuthForm.tsx:373
msgid "magic link"
msgstr "magische link"
@@ -1190,12 +1182,12 @@ msgstr "Gemiddelde prioriteit"
#: src/views/board/components/Filters.tsx:93
#: src/views/board/components/NewCardForm.tsx:357
#: src/views/card/index.tsx:125
#: src/views/members/index.tsx:179
#: src/views/members/index.tsx:178
msgid "Members"
msgstr "Leden"
#. placeholder {0}: workspace.name ?? "Workspace"
#: src/views/members/index.tsx:174
#: src/views/members/index.tsx:173
msgid "Members | {0}"
msgstr "Leden | {0}"
@@ -1203,7 +1195,7 @@ msgstr "Leden | {0}"
msgid "Monthly"
msgstr "Maandelijks"
#: src/views/members/components/InviteMemberForm.tsx:149
#: src/views/members/components/InviteMemberForm.tsx:147
msgid "monthly billing"
msgstr "maandelijkse facturering"
@@ -1315,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."
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"
msgstr "of"
@@ -1335,14 +1327,6 @@ msgstr "Deeltijd"
msgid "Password Changed"
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
msgid "Password must be at least 8 characters"
msgstr "Wachtwoord moet minimaal 8 tekens bevatten"
@@ -1351,7 +1335,7 @@ msgstr "Wachtwoord moet minimaal 8 tekens bevatten"
msgid "Passwords do not match"
msgstr "Wachtwoorden komen niet overeen"
#: src/views/members/index.tsx:135
#: src/views/members/index.tsx:134
msgid "Paused"
msgstr "Gepauzeerd"
@@ -1359,7 +1343,7 @@ msgstr "Gepauzeerd"
msgid "Payment frequency"
msgstr "Betalingsfrequentie"
#: src/views/members/index.tsx:135
#: src/views/members/index.tsx:134
msgid "Pending"
msgstr "In behandeling"
@@ -1380,15 +1364,15 @@ msgstr "Planning"
msgid "Please confirm your new password"
msgstr "Bevestig je nieuwe wachtwoord"
#: src/components/AuthForm.tsx:388
#: src/components/AuthForm.tsx:341
msgid "Please enter a valid email address"
msgstr "Voer een geldig e-mailadres in"
#: src/components/AuthForm.tsx:376
#: src/components/AuthForm.tsx:329
msgid "Please enter a valid name"
msgstr "Voer een geldige naam in"
#: src/components/AuthForm.tsx:401
#: src/components/AuthForm.tsx:354
msgid "Please enter a valid password"
msgstr "Voer een geldig wachtwoord in"
@@ -1421,8 +1405,8 @@ msgstr "Selecteer een bestand om te uploaden."
#: src/views/card/components/NewCommentForm.tsx:31
#: src/views/card/index.tsx:173
#: src/views/members/components/DeleteMemberConfirmation.tsx:28
#: src/views/members/components/InviteMemberForm.tsx:104
#: src/views/members/components/InviteMemberForm.tsx:224
#: src/views/members/components/InviteMemberForm.tsx:102
#: src/views/members/components/InviteMemberForm.tsx:222
#: src/views/settings/components/Avatar.tsx:78
#: src/views/settings/components/Avatar.tsx:219
#: src/views/settings/components/DeleteAccountConfirmation.tsx:40
@@ -1435,8 +1419,8 @@ msgstr "Selecteer een bestand om te uploaden."
msgid "Please try again later, or contact customer support."
msgstr "Probeer het later opnieuw of neem contact op met de klantenservice."
#: src/views/members/components/InviteMemberForm.tsx:120
#: src/views/members/components/InviteMemberForm.tsx:135
#: src/views/members/components/InviteMemberForm.tsx:118
#: src/views/members/components/InviteMemberForm.tsx:133
msgid "Please try again later."
msgstr "Probeer het later opnieuw."
@@ -1459,11 +1443,11 @@ msgstr "Privacybeleid"
msgid "Private"
msgstr "Privé"
#: src/views/members/index.tsx:206
#: src/views/members/index.tsx:205
msgid "Pro Plan"
msgstr "Pro Plan"
#: src/views/members/components/InviteMemberForm.tsx:305
#: src/views/members/components/InviteMemberForm.tsx:301
msgid "Pro Plan ∞"
msgstr "Pro Plan ∞"
@@ -1507,7 +1491,7 @@ msgstr "Op afstand"
msgid "Remove"
msgstr "Verwijderen"
#: src/views/members/index.tsx:149
#: src/views/members/index.tsx:148
msgid "Remove member"
msgstr "Lid verwijderen"
@@ -1559,7 +1543,7 @@ msgstr "Beoordeling"
msgid "Roadmap"
msgstr "Roadmap"
#: src/views/members/index.tsx:244
#: src/views/members/index.tsx:243
msgid "Role"
msgstr "Rol"
@@ -1633,6 +1617,10 @@ msgstr "Instellingen | Integraties"
msgid "Settings | Workspace"
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:138
msgid "Sign in"
@@ -1659,7 +1647,7 @@ msgstr "Registreren uitgeschakeld"
msgid "Sign up is currently disabled. Please try again later."
msgstr "Registreren is momenteel uitgeschakeld. Probeer het later opnieuw."
#: src/components/AuthForm.tsx:417
#: src/components/AuthForm.tsx:370
msgid "Sign up with "
msgstr "Registreren met "
@@ -1683,8 +1671,8 @@ msgstr "Softwareontwikkeling"
msgid "Star on Github"
msgstr "Star op Github"
#: src/components/AuthForm.tsx:212
#: src/components/AuthForm.tsx:229
#: src/components/AuthForm.tsx:207
#: src/components/AuthForm.tsx:224
msgid "Success"
msgstr "Geslaagd"
@@ -1704,8 +1692,8 @@ msgstr "Ondersteun de ontwikkeling van het project"
msgid "System"
msgstr "Systeem"
#: src/views/members/components/InviteMemberForm.tsx:305
#: src/views/members/index.tsx:208
#: src/views/members/components/InviteMemberForm.tsx:301
#: src/views/members/index.tsx:207
msgid "Team Plan"
msgstr "Teamplan"
@@ -1988,7 +1976,7 @@ msgstr "Upgraden naar Pro"
msgid "Upgrade to Pro ($29/month)"
msgstr "Upgrade naar Pro ($29/maand)"
#: src/views/members/components/InviteMemberForm.tsx:345
#: src/views/members/components/InviteMemberForm.tsx:341
msgid "Upgrade to Team Plan"
msgstr "Upgraden naar teamplan"
@@ -2016,11 +2004,11 @@ msgstr "URL moet minimaal 3 tekens lang zijn"
msgid "Use template"
msgstr "Sjabloon gebruiken"
#: src/views/members/index.tsx:238
#: src/views/members/index.tsx:237
msgid "User"
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"
msgstr "Gebruiker is al lid van deze werkruimte"
@@ -2179,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>."
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."
msgstr "Je bent succesvol ingelogd."
#: src/components/AuthForm.tsx:213
#: src/components/AuthForm.tsx:208
msgid "You have been signed up successfully."
msgstr "Je bent succesvol geregistreerd."
#: src/views/members/components/InviteMemberForm.tsx:309
#: src/views/members/components/InviteMemberForm.tsx:305
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!"

File diff suppressed because one or more lines are too long

View File

@@ -36,12 +36,12 @@ msgstr "{0} метки"
msgid "{boardCount, plural, one {Import board (1)} other {Import boards ({boardCount})}}"
msgstr "{boardCount, plural, one {Импортировать доску (1)} other {Импортировать доски ({boardCount})}}"
#: src/views/members/components/InviteMemberForm.tsx:148
#: src/views/members/components/InviteMemberForm.tsx:160
#: src/views/members/components/InviteMemberForm.tsx:146
#: src/views/members/components/InviteMemberForm.tsx:158
msgid "$10/month"
msgstr "$10/месяц"
#: src/views/members/components/InviteMemberForm.tsx:160
#: src/views/members/components/InviteMemberForm.tsx:158
msgid "$8/month"
msgstr "$8/месяц"
@@ -101,7 +101,7 @@ msgid "Add label"
msgstr "Добавить метку"
#: src/views/card/components/MemberSelector.tsx:130
#: src/views/members/components/InviteMemberForm.tsx:240
#: src/views/members/components/InviteMemberForm.tsx:238
msgid "Add member"
msgstr "Добавить участника"
@@ -136,7 +136,7 @@ msgstr "добавлен элемент контрольного списка <0
msgid "added label <0>{0}</0>"
msgstr "добавлена метка <0>{0}</0>"
#: src/views/members/components/InviteMemberForm.tsx:310
#: src/views/members/components/InviteMemberForm.tsx:306
msgid "Adding a new member will cost an additional {price} ({billingType}) per seat."
msgstr "Добавление нового участника будет стоить дополнительно {price} ({billingType}) за место."
@@ -164,7 +164,7 @@ msgstr "Произошла ошибка при отключении вашего
msgid "An unexpected error occurred. Please try again later."
msgstr "Произошла непредвиденная ошибка. Пожалуйста, попробуйте позже."
#: src/views/members/components/InviteMemberForm.tsx:294
#: src/views/members/components/InviteMemberForm.tsx:290
msgid "Anyone with this link can join your workspace"
msgstr "Любой, у кого есть эта ссылка, может присоединиться к вашему рабочему пространству"
@@ -250,11 +250,11 @@ msgstr "Бэклог"
msgid "Basic Kanban"
msgstr "Базовый Канбан"
#: src/views/members/components/InviteMemberForm.tsx:161
#: src/views/members/components/InviteMemberForm.tsx:159
msgid "billed annually"
msgstr "выставляется счет ежегодно"
#: src/views/members/components/InviteMemberForm.tsx:161
#: src/views/members/components/InviteMemberForm.tsx:159
msgid "billed monthly"
msgstr "выставляется счет ежемесячно"
@@ -463,12 +463,12 @@ msgstr "Свяжитесь с нами"
msgid "Content Creation"
msgstr "Создание контента"
#: src/components/AuthForm.tsx:417
#: src/components/AuthForm.tsx:370
msgid "Continue with "
msgstr "Продолжить с "
#. placeholder {0}: key === "oidc" ? oidcProviderName : provider.name
#: src/components/AuthForm.tsx:348
#: src/components/AuthForm.tsx:301
msgid "Continue with {0}"
msgstr "Продолжить с {0}"
@@ -498,10 +498,6 @@ msgstr "Создать карточку"
msgid "Create checklist"
msgstr "Создать чек-лист"
#: src/views/members/components/InviteMemberForm.tsx:334
msgid "Create invite link"
msgstr "Создать ссылку-приглашение"
#: src/components/LabelForm.tsx:238
msgid "Create label"
msgstr "Создать метку"
@@ -569,10 +565,6 @@ msgstr "Служба поддержки"
msgid "Dark"
msgstr "Тёмный"
#: src/views/members/components/InviteMemberForm.tsx:333
msgid "Deactivate invite link"
msgstr "Деактивировать ссылку-приглашение"
#: src/components/DeleteLabelConfirmation.tsx:51
#: src/components/LabelForm.tsx:228
#: src/views/card/components/DeleteCardConfirmation.tsx:92
@@ -705,11 +697,11 @@ msgstr "Редактировать URL рабочей области"
msgid "Editing"
msgstr "Редактирование"
#: src/components/AuthForm.tsx:418
#: src/components/AuthForm.tsx:372
msgid "email"
msgstr "email"
#: src/views/members/components/InviteMemberForm.tsx:255
#: src/views/members/components/InviteMemberForm.tsx:252
msgid "Email"
msgstr "Email"
@@ -725,11 +717,11 @@ msgstr "Введите ваш текущий пароль"
msgid "Enter your current password and choose a new secure password."
msgstr "Введите ваш текущий пароль и выберите новый безопасный пароль."
#: src/components/AuthForm.tsx:384
#: src/components/AuthForm.tsx:337
msgid "Enter your email address"
msgstr "Введите ваш адрес электронной почты"
#: src/components/AuthForm.tsx:372
#: src/components/AuthForm.tsx:325
msgid "Enter your name"
msgstr "Введите ваше имя"
@@ -737,11 +729,11 @@ msgstr "Введите ваше имя"
msgid "Enter your new password"
msgstr "Введите ваш новый пароль"
#: src/components/AuthForm.tsx:397
#: src/components/AuthForm.tsx:350
msgid "Enter your password"
msgstr "Введите ваш пароль"
#: src/views/members/components/InviteMemberForm.tsx:198
#: src/views/members/components/InviteMemberForm.tsx:196
msgid "Error"
msgstr "Ошибка"
@@ -749,11 +741,11 @@ msgstr "Ошибка"
msgid "Error Changing Password"
msgstr "Ошибка при изменении пароля"
#: src/views/members/components/InviteMemberForm.tsx:119
#: src/views/members/components/InviteMemberForm.tsx:117
msgid "Error creating invite link"
msgstr "Ошибка при создании ссылки приглашения"
#: src/views/members/components/InviteMemberForm.tsx:134
#: src/views/members/components/InviteMemberForm.tsx:132
msgid "Error deactivating invite link"
msgstr "Ошибка при деактивации ссылки приглашения"
@@ -773,8 +765,8 @@ msgstr "Ошибка при удалении рабочей области"
msgid "Error disconnecting Trello"
msgstr "Ошибка при отключении Trello"
#: src/views/members/components/InviteMemberForm.tsx:97
#: src/views/members/components/InviteMemberForm.tsx:103
#: src/views/members/components/InviteMemberForm.tsx:95
#: src/views/members/components/InviteMemberForm.tsx:101
msgid "Error inviting member"
msgstr "Ошибка при приглашении участника"
@@ -798,7 +790,7 @@ msgstr "Ошибка при обновлении имени рабочей об
msgid "Error updating workspace URL"
msgstr "Ошибка при обновлении URL рабочей области"
#: src/views/members/components/InviteMemberForm.tsx:223
#: src/views/members/components/InviteMemberForm.tsx:221
#: src/views/settings/components/UpgradeToProConfirmation.tsx:41
msgid "Error upgrading subscription"
msgstr "Ошибка при обновлении подписки"
@@ -828,12 +820,12 @@ msgstr "Выполнение"
msgid "Failed to accept invitation. Please try again later, or contact customer support."
msgstr "Не удалось принять приглашение. Пожалуйста, попробуйте позже или свяжитесь со службой поддержки."
#: src/views/members/components/InviteMemberForm.tsx:199
#: src/views/members/components/InviteMemberForm.tsx:197
msgid "Failed to copy invite link"
msgstr "Не удалось скопировать ссылку приглашения"
#. 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."
msgstr "Не удалось войти с {0}. Пожалуйста, попробуйте снова."
@@ -881,8 +873,8 @@ msgstr "Для долгосрочной устойчивости мы призн
msgid "Free"
msgstr "Бесплатно"
#: src/views/members/components/InviteMemberForm.tsx:316
#: src/views/members/index.tsx:209
#: src/views/members/components/InviteMemberForm.tsx:312
#: src/views/members/index.tsx:208
msgid "Free Plan"
msgstr "Бесплатный план"
@@ -1043,7 +1035,7 @@ msgstr "Интеграции"
msgid "Interviewing"
msgstr "Собеседование"
#: src/views/members/components/InviteMemberForm.tsx:51
#: src/views/members/components/InviteMemberForm.tsx:49
msgid "Invalid email address"
msgstr "Недействительный адрес электронной почты"
@@ -1051,24 +1043,24 @@ msgstr "Недействительный адрес электронной по
msgid "Invalid invitation"
msgstr "Недействительное приглашение"
#: src/views/members/index.tsx:222
#: src/views/members/index.tsx:221
msgid "Invite"
msgstr "Пригласить"
#: src/views/members/components/InviteMemberForm.tsx:192
#: src/views/members/components/InviteMemberForm.tsx:190
msgid "Invite link copied"
msgstr "Ссылка приглашения скопирована"
#: src/views/members/components/InviteMemberForm.tsx:193
#: src/views/members/components/InviteMemberForm.tsx:191
msgid "Invite link copied to clipboard"
msgstr "Ссылка приглашения скопирована в буфер обмена"
#: src/views/card/components/MemberSelector.tsx:111
#: src/views/members/components/InviteMemberForm.tsx:353
#: src/views/members/components/InviteMemberForm.tsx:350
msgid "Invite member"
msgstr "Пригласить участника"
#: src/views/members/components/InviteMemberForm.tsx:319
#: src/views/members/components/InviteMemberForm.tsx:315
msgid "Inviting members requires a Team Plan. You'll be redirected to upgrade your workspace."
msgstr "Для приглашения участников необходим командный план. Вы будете перенаправлены для обновления вашего рабочего пространства."
@@ -1117,7 +1109,7 @@ msgstr "Язык"
msgid "Launch offer"
msgstr "Стартовое предложение"
#: src/views/members/index.tsx:192
#: src/views/members/index.tsx:191
msgid "Launch offer: Get unlimited members with Pro"
msgstr "Стартовое предложение: получите неограниченное количество участников с Pro"
@@ -1169,7 +1161,7 @@ msgstr "Долгосрочный"
msgid "Low Priority"
msgstr "Низкий приоритет"
#: src/components/AuthForm.tsx:418
#: src/components/AuthForm.tsx:373
msgid "magic link"
msgstr "магическая ссылка"
@@ -1190,12 +1182,12 @@ msgstr "Средний приоритет"
#: src/views/board/components/Filters.tsx:93
#: src/views/board/components/NewCardForm.tsx:357
#: src/views/card/index.tsx:125
#: src/views/members/index.tsx:179
#: src/views/members/index.tsx:178
msgid "Members"
msgstr "Участники"
#. placeholder {0}: workspace.name ?? "Workspace"
#: src/views/members/index.tsx:174
#: src/views/members/index.tsx:173
msgid "Members | {0}"
msgstr "Участники | {0}"
@@ -1203,7 +1195,7 @@ msgstr "Участники | {0}"
msgid "Monthly"
msgstr "Ежемесячно"
#: src/views/members/components/InviteMemberForm.tsx:149
#: src/views/members/components/InviteMemberForm.tsx:147
msgid "monthly billing"
msgstr "ежемесячная оплата"
@@ -1315,7 +1307,7 @@ msgstr "После удаления аккаунта возврат будет
msgid "Once you delete your workspace, there is no going back. This action cannot be undone."
msgstr "После удаления рабочего пространства возврат будет невозможен. Это действие необратимо."
#: src/components/AuthForm.tsx:362
#: src/components/AuthForm.tsx:315
msgid "or"
msgstr "или"
@@ -1335,14 +1327,6 @@ msgstr "Частичная занятость"
msgid "Password Changed"
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
msgid "Password must be at least 8 characters"
msgstr "Пароль должен содержать не менее 8 символов"
@@ -1351,7 +1335,7 @@ msgstr "Пароль должен содержать не менее 8 симв
msgid "Passwords do not match"
msgstr "Пароли не совпадают"
#: src/views/members/index.tsx:135
#: src/views/members/index.tsx:134
msgid "Paused"
msgstr "Приостановлено"
@@ -1359,7 +1343,7 @@ msgstr "Приостановлено"
msgid "Payment frequency"
msgstr "Частота платежей"
#: src/views/members/index.tsx:135
#: src/views/members/index.tsx:134
msgid "Pending"
msgstr "В ожидании"
@@ -1380,15 +1364,15 @@ msgstr "Планирование"
msgid "Please confirm your new password"
msgstr "Пожалуйста, подтвердите новый пароль"
#: src/components/AuthForm.tsx:388
#: src/components/AuthForm.tsx:341
msgid "Please enter a valid email address"
msgstr "Пожалуйста, введите действительный адрес электронной почты"
#: src/components/AuthForm.tsx:376
#: src/components/AuthForm.tsx:329
msgid "Please enter a valid name"
msgstr "Пожалуйста, введите действительное имя"
#: src/components/AuthForm.tsx:401
#: src/components/AuthForm.tsx:354
msgid "Please enter a valid password"
msgstr "Пожалуйста, введите действительный пароль"
@@ -1421,8 +1405,8 @@ msgstr "Пожалуйста, выберите файл для загрузки.
#: src/views/card/components/NewCommentForm.tsx:31
#: src/views/card/index.tsx:173
#: src/views/members/components/DeleteMemberConfirmation.tsx:28
#: src/views/members/components/InviteMemberForm.tsx:104
#: src/views/members/components/InviteMemberForm.tsx:224
#: src/views/members/components/InviteMemberForm.tsx:102
#: src/views/members/components/InviteMemberForm.tsx:222
#: src/views/settings/components/Avatar.tsx:78
#: src/views/settings/components/Avatar.tsx:219
#: src/views/settings/components/DeleteAccountConfirmation.tsx:40
@@ -1435,8 +1419,8 @@ msgstr "Пожалуйста, выберите файл для загрузки.
msgid "Please try again later, or contact customer support."
msgstr "Пожалуйста, попробуйте позже или свяжитесь со службой поддержки."
#: src/views/members/components/InviteMemberForm.tsx:120
#: src/views/members/components/InviteMemberForm.tsx:135
#: src/views/members/components/InviteMemberForm.tsx:118
#: src/views/members/components/InviteMemberForm.tsx:133
msgid "Please try again later."
msgstr "Пожалуйста, попробуйте позже."
@@ -1459,11 +1443,11 @@ msgstr "Политика конфиденциальности"
msgid "Private"
msgstr "Личное"
#: src/views/members/index.tsx:206
#: src/views/members/index.tsx:205
msgid "Pro Plan"
msgstr "Профессиональный план"
#: src/views/members/components/InviteMemberForm.tsx:305
#: src/views/members/components/InviteMemberForm.tsx:301
msgid "Pro Plan ∞"
msgstr "Профессиональный план ∞"
@@ -1507,7 +1491,7 @@ msgstr "Удалённый"
msgid "Remove"
msgstr "Удалить"
#: src/views/members/index.tsx:149
#: src/views/members/index.tsx:148
msgid "Remove member"
msgstr "Удалить участника"
@@ -1559,7 +1543,7 @@ msgstr "Обзор"
msgid "Roadmap"
msgstr "Дорожная карта"
#: src/views/members/index.tsx:244
#: src/views/members/index.tsx:243
msgid "Role"
msgstr "Роль"
@@ -1633,6 +1617,10 @@ msgstr "Настройки | Интеграции"
msgid "Settings | Workspace"
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:138
msgid "Sign in"
@@ -1659,7 +1647,7 @@ msgstr "Регистрация отключена"
msgid "Sign up is currently disabled. Please try again later."
msgstr "Регистрация в настоящее время отключена. Пожалуйста, попробуйте позже."
#: src/components/AuthForm.tsx:417
#: src/components/AuthForm.tsx:370
msgid "Sign up with "
msgstr "Зарегистрироваться с "
@@ -1683,8 +1671,8 @@ msgstr "Разработка программного обеспечения"
msgid "Star on Github"
msgstr "Поставить звезду на Github"
#: src/components/AuthForm.tsx:212
#: src/components/AuthForm.tsx:229
#: src/components/AuthForm.tsx:207
#: src/components/AuthForm.tsx:224
msgid "Success"
msgstr "Успех"
@@ -1704,8 +1692,8 @@ msgstr "Поддержите развитие проекта"
msgid "System"
msgstr "Система"
#: src/views/members/components/InviteMemberForm.tsx:305
#: src/views/members/index.tsx:208
#: src/views/members/components/InviteMemberForm.tsx:301
#: src/views/members/index.tsx:207
msgid "Team Plan"
msgstr "Командный план"
@@ -1988,7 +1976,7 @@ msgstr "Обновить до Pro"
msgid "Upgrade to Pro ($29/month)"
msgstr "Обновить до Pro ($29/месяц)"
#: src/views/members/components/InviteMemberForm.tsx:345
#: src/views/members/components/InviteMemberForm.tsx:341
msgid "Upgrade to Team Plan"
msgstr "Обновить до командного плана"
@@ -2016,11 +2004,11 @@ msgstr "URL должен содержать не менее 3 символов"
msgid "Use template"
msgstr "Использовать шаблон"
#: src/views/members/index.tsx:238
#: src/views/members/index.tsx:237
msgid "User"
msgstr "Пользователь"
#: src/views/members/components/InviteMemberForm.tsx:98
#: src/views/members/components/InviteMemberForm.tsx:96
msgid "User is already a member of this workspace"
msgstr "Пользователь уже является участником этого рабочего пространства"
@@ -2179,15 +2167,15 @@ msgstr "Вы можете пригласить участников команд
msgid "You can self-host by following the instructions in our <0>repo</0>."
msgstr "Вы можете развернуть собственный хостинг, следуя инструкциям в нашем <0>репозитории</0>."
#: src/components/AuthForm.tsx:230
#: src/components/AuthForm.tsx:225
msgid "You have been logged in successfully."
msgstr "Вы успешно вошли в систему."
#: src/components/AuthForm.tsx:213
#: src/components/AuthForm.tsx:208
msgid "You have been signed up successfully."
msgstr "Вы успешно зарегистрировались."
#: src/views/members/components/InviteMemberForm.tsx:309
#: src/views/members/components/InviteMemberForm.tsx:305
msgid "You have unlimited seats with your Pro Plan. There is no additional charge for new members!"
msgstr "В вашем профессиональном плане неограниченное количество мест. За новых участников дополнительная плата не взимается!"

File diff suppressed because one or more lines are too long

View File

@@ -45,8 +45,6 @@ export function InviteMemberForm({
const { workspace } = useWorkspace();
const { showPopup } = usePopup();
const isEmailEnabled = env("NEXT_PUBLIC_DISABLE_EMAIL") !== "true";
const InviteMemberSchema = z.object({
email: z.string().email({ message: t`Invalid email address` }),
workspacePublicId: z.string(),
@@ -249,26 +247,24 @@ export function InviteMemberForm({
<HiXMark size={18} className="dark:text-dark-9000 text-light-900" />
</button>
</div>
{isEmailEnabled && (
<Input
id="email"
placeholder={t`Email`}
disabled={
env("NEXT_PUBLIC_KAN_ENV") === "cloud" &&
!hasTeamSubscription &&
!hasProSubscription
<Input
id="email"
placeholder={t`Email`}
disabled={
env("NEXT_PUBLIC_KAN_ENV") === "cloud" &&
!hasTeamSubscription &&
!hasProSubscription
}
{...register("email", { required: true })}
onKeyDown={async (e) => {
if (e.key === "Enter") {
e.preventDefault();
await handleSubmit(onSubmit)();
}
{...register("email", { required: true })}
onKeyDown={async (e) => {
if (e.key === "Enter") {
e.preventDefault();
await handleSubmit(onSubmit)();
}
}}
errorMessage={errors.email?.message}
/>
)}
{(!isEmailEnabled || (isShareInviteLinkEnabled && inviteLink)) && (
}}
errorMessage={errors.email?.message}
/>
{isShareInviteLinkEnabled && inviteLink && (
<div className="my-4">
<div className="relative">
<Input
@@ -328,11 +324,7 @@ export function InviteMemberForm({
{(hasTeamSubscription || hasProSubscription) &&
env("NEXT_PUBLIC_KAN_ENV") === "cloud" && (
<Toggle
label={
isShareInviteLinkEnabled
? t`Deactivate invite link`
: t`Create invite link`
}
label={t`Share invite link`}
isChecked={isShareInviteLinkEnabled}
onChange={handleInviteLinkToggle}
/>
@@ -341,14 +333,19 @@ export function InviteMemberForm({
{env("NEXT_PUBLIC_KAN_ENV") === "cloud" &&
!hasTeamSubscription &&
!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`}
</Button>
) : (
<Button
type="submit"
disabled={inviteMember.isPending || !isEmailEnabled}
disabled={inviteMember.isPending || isShareInviteLinkEnabled}
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`}
</Button>

View File

@@ -1,7 +1,6 @@
import Link from "next/link";
import { t } from "@lingui/core/macro";
import { env } from "next-runtime-env";
import { useEffect, useState } from "react";
import {
HiBolt,
HiEllipsisHorizontal,

View File

@@ -25,9 +25,6 @@ services:
- SMTP_PASSWORD=${SMTP_PASSWORD}
- EMAIL_FROM=${EMAIL_FROM}
# Disable email features entirely (optional)
- NEXT_PUBLIC_DISABLE_EMAIL=${NEXT_PUBLIC_DISABLE_EMAIL}
# S3 storage (optional)
- S3_ACCESS_KEY_ID=${S3_ACCESS_KEY_ID}
- S3_SECRET_ACCESS_KEY=${S3_SECRET_ACCESS_KEY}

View File

@@ -95,32 +95,9 @@ export const create = async (
.having(gt(countExpr, 1));
if (duplicateIndices.length > 0) {
// Compact indices for this list to sequential values (0..n-1) preserving order
await tx.execute(sql`
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}`,
);
}
throw new Error(
`Duplicate indices found after creating card ${result[0].id}`,
);
}
return result[0];
@@ -242,95 +219,11 @@ export const bulkCreate = async (
importId?: number;
}[],
) => {
if (cardInput.length === 0) return [];
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;
const result = await db.insert(cards).values(cardInput).returning({
id: cards.id,
});
return result;
};
export const createCardLabelRelationship = async (
@@ -713,53 +606,9 @@ export const reorder = async (
.having(gt(countExpr, 1));
if (duplicateIndices.length > 0) {
// Auto-heal by compacting indices for the affected list(s)
const affectedListIds = [currentList.id, newList?.id].filter(
(id): id is number => id !== undefined,
throw new Error(
`Duplicate indices found after reordering card ${card.id}`,
);
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({

View File

@@ -89,7 +89,6 @@
"APPLE_CLIENT_ID",
"APPLE_CLIENT_SECRET",
"APPLE_APP_BUNDLE_IDENTIFIER",
"NEXT_PUBLIC_DISABLE_EMAIL",
"EMAIL_FROM",
"SMTP_HOST",
"SMTP_PORT",