Compare commits
10 Commits
fix/api-ke
...
feat/invit
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b00c47952c | ||
|
|
aa931ddcbe | ||
|
|
73b9ac7cb5 | ||
|
|
01e0140e6a | ||
|
|
f22a0332ab | ||
|
|
bd97362d90 | ||
|
|
3b3b4f89ba | ||
|
|
17f876160d | ||
|
|
dd1bd9b7cc | ||
|
|
7d9746be20 |
@@ -36,6 +36,7 @@ checksums:
|
||||
Already%20have%20an%20account%3F%20%3C0%3E%3C1%3ESign%20in%3C%2F1%3E%3C%2F0%3E/singular: 2959fd276248208b65cb27ed46b20135
|
||||
An%20error%20occurred%20while%20disconnecting%20your%20Trello%20account./singular: 0aa3973b860c1faf8d9123aebf567e40
|
||||
An%20unexpected%20error%20occurred.%20Please%20try%20again%20later./singular: 1b5749b0cca6a62d75a577bee6804074
|
||||
Anyone%20with%20this%20link%20can%20join%20your%20workspace/singular: 2366ed295eb2c03c425559c24cb31606
|
||||
API/singular: 01d9819514e27056dcc69463194b63d2
|
||||
API%20key%20created/singular: 8dbb2b60a719b0d120e774d6666c8c45
|
||||
API%20key%20name/singular: 2d8aeb08b2cce3b750a584bbc5ce6d1d
|
||||
@@ -165,7 +166,10 @@ checksums:
|
||||
Enter%20your%20name/singular: cd95fbdd0533f2c2e8edf9d9bd9aa8df
|
||||
Enter%20your%20new%20password/singular: c67251e3002b68bc20a7cf5de23e43ac
|
||||
Enter%20your%20password/singular: ea4fdd034522dead21bae0c0abb52eae
|
||||
Error/singular: 3c95bcb32c2104b99a46f5b3dd015248
|
||||
Error%20Changing%20Password/singular: ebecb5c1b72ba4b063117241f5ba4f2d
|
||||
Error%20creating%20invite%20link/singular: cbedc3f3213dfc4fdc8b7503ae1a5cd6
|
||||
Error%20deactivating%20invite%20link/singular: ccf42cd5aa8481692003e87e836de66c
|
||||
Error%20deleting%20account/singular: d42965a9bc9e5ec4ed57890268924643
|
||||
Error%20deleting%20label/singular: 94387e3a45ec768ae7715701ae00136e
|
||||
Error%20deleting%20workspace/singular: 0aec9bd8170bc84f5ea5c9a47c52ed26
|
||||
@@ -182,6 +186,8 @@ checksums:
|
||||
Everything%20in%20the%20free%20plan%2C%20plus%3A/singular: 62b44c4973b92b806c69a4b15e0256dc
|
||||
Everything%20you%20need%2C%20free%20forever.%20Unlimited%20boards%2C%20unlimited%20lists%2C%20unlimited%20cards.%20Upgrade%20any%20time./singular: fa21632ab1468edf10acda2fe7b71323
|
||||
Execution/singular: cbac4a3c721123cbc6a883560bf29800
|
||||
Failed%20to%20accept%20invitation.%20Please%20try%20again%20later%2C%20or%20contact%20customer%20support./singular: e4505a9df3a81e93a8a8b103c6e3ebc4
|
||||
Failed%20to%20copy%20invite%20link/singular: 635884d5ed8d6ee20b85a003939b4ae7
|
||||
Failed%20to%20login%20with%20%7B0%7D.%20Please%20try%20again./singular: 669a4b4247a73f53fb9b8b16e42d166f
|
||||
FAQs/singular: dc36d7992372ccd419b39ef51cf5b16c
|
||||
Feature/singular: 58f5f3f37862b6312a2f20ec1a1fd0e8
|
||||
@@ -206,6 +212,7 @@ checksums:
|
||||
Get%20started%20on%20Cloud/singular: ed926f526266ad2063283c58e6f4284a
|
||||
Getting%20started/singular: 8e5e7bd026b5bec46bbfdce02ab9e0b8
|
||||
GitHub/singular: 6e1cf3c00fa6fbe24afcc78ea3b5f3e4
|
||||
Go%20Home/singular: 6251589da1964d55afabdfd64c84c335
|
||||
Go%20to%20app/singular: 896d0441384dcd2bfb3b23d61ff1944d
|
||||
High%20Priority/singular: 5d231ff8254aabc875f194c4b4f49c97
|
||||
Hired/singular: e5a9b1bd409b007141fe3d7890022f9a
|
||||
@@ -231,10 +238,14 @@ checksums:
|
||||
Integrations/singular: 0ccce343287704cd90150c32e2fcad36
|
||||
Interviewing/singular: 4ccdcdc784547e925077c3297bddee95
|
||||
Invalid%20email%20address/singular: b2d9f25626f2d15c7c63e0281bccc247
|
||||
Invalid%20invitation/singular: 4b936a8811a2295a5f58b41473c608f3
|
||||
Invite/singular: 181884cea804cbde665f160811ee7ad0
|
||||
Invite%20another/singular: acb543563dab7edbcf46060a53ade3a3
|
||||
Invite%20link%20copied/singular: 4046f23a78e1cd5166671c3fb8a7ea6e
|
||||
Invite%20link%20copied%20to%20clipboard/singular: 6fc055a0ea0ed1aa58c5e0c502efe17f
|
||||
Invite%20member/singular: ade922db1be6b26bc979565ce5de2bc7
|
||||
Inviting%20members%20requires%20a%20Team%20Plan.%20You'll%20be%20redirected%20to%20upgrade%20your%20workspace./singular: 03eeed2d715e770259f722ba48a61ab3
|
||||
Join%20workspace/singular: f5d035df672b05abd760bd022309c719
|
||||
Join%20workspace%20%7C%20kan.bn/singular: 97855216a0e00214b2dcf917e93164f2
|
||||
Junior/singular: ed1bd2c59a824fdcdd56fc8a0660fe9f
|
||||
Kanban%20is%20better%20with%20a%20team.%20Perfect%20for%20small%20and%20growing%20teams%20looking%20to%20collaborate./singular: a77bee43046b260797c8936ad23e9223
|
||||
Kanban%20reimagined/singular: 613ccfdd9f54c66cbf68cfa313498766
|
||||
@@ -309,6 +320,7 @@ checksums:
|
||||
Please%20enter%20a%20valid%20password/singular: 4b32c17e19b79bcbf0bb092c06ba310f
|
||||
Please%20select%20a%20file%20to%20upload./singular: de315bf594047f8ef9307a7fa9285844
|
||||
Please%20try%20again%20later%2C%20or%20contact%20customer%20support./singular: 21ffcf0b00e7cd7b64f7454a95762e1d
|
||||
Please%20try%20again%20later./singular: 325dea6dd0348a27a6818db2c1340c98
|
||||
Pricing/singular: ce27f1aeacccc542a174c4b2bce022b0
|
||||
Priority%20email%20support/singular: 678538c912a770b1e1416ecdb8e299b1
|
||||
Privacy%20policy/singular: 462c6a536b52873e4498785c66dd48c8
|
||||
@@ -355,7 +367,10 @@ 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
|
||||
Sign%20up%20%7C%20kan.bn/singular: f3de2a110c90358e6eac07d0b2f663a6
|
||||
Sign%20up%20disabled/singular: 9581b1f75b404ac0ecb7e603e0d4189c
|
||||
Sign%20up%20is%20currently%20disabled.%20Please%20try%20again%20later./singular: c6cb7c455ec053b351a27029158ff166
|
||||
@@ -385,6 +400,7 @@ checksums:
|
||||
This%20API%20key%20will%20only%20be%20shown%20once.%20Please%20save%20it%20in%20a%20secure%20location./singular: 7df18d2978d317375f780822f8321c4d
|
||||
This%20board%20is%20private%20or%20does%20not%20exist/singular: a217ff3f04463b4df8c86adb6f83c6bc
|
||||
This%20board%20URL%20has%20already%20been%20taken/singular: 1d8b40332a031b5b77a3658e48dd51ca
|
||||
This%20invitation%20link%20is%20invalid%20or%20has%20expired./singular: 11cc7ef8f1512e7e058e1fbbe5644001
|
||||
This%20will%20result%20in%20the%20permanent%20deletion%20of%20all%20data%20associated%20with%20this%20workspace./singular: a31141558af793635c1ddd2fa0a33499
|
||||
This%20will%20result%20in%20the%20permanent%20deletion%20of%20all%20data%20associated%20with%20your%20account./singular: b49224632bd6c3b7f5e462912aeb1081
|
||||
This%20workspace%20URL%20has%20already%20been%20taken/singular: b455329e2a71da677acab91d3a00bad6
|
||||
@@ -485,6 +501,8 @@ checksums:
|
||||
You%20have%20been%20logged%20in%20successfully./singular: ef8fad1dce13ae4112f17c5258655fea
|
||||
You%20have%20been%20signed%20up%20successfully./singular: f614a6e3b45f5ffb9a3b0fb420fef84b
|
||||
You%20have%20unlimited%20seats%20with%20your%20Pro%20Plan.%20There%20is%20no%20additional%20charge%20for%20new%20members!/singular: e3dc59a5ba7211cd3d8516b3a79d85ca
|
||||
You've%20been%20invited%20to%20join%20a%20workspace%20on%20kan.bn./singular: 257b840726f972f384243a72767f880f
|
||||
You've%20been%20invited%20to%20join%20a%20workspace./singular: 24fc6cdc8740f37a83df85f582f03293
|
||||
Your%20account%20has%20been%20deleted./singular: 8c8d944e07388c5877effdb2c2803dcf
|
||||
Your%20boards%20have%20been%20imported./singular: 403972e7a25afc2415762c1c2b1ec868
|
||||
Your%20display%20name%20has%20been%20updated./singular: 15e5fff36c554c16ec5214427fae1bf4
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import type { SocialProvider } from "better-auth/social-providers";
|
||||
import { useSearchParams } from "next/navigation";
|
||||
import { zodResolver } from "@hookform/resolvers/zod";
|
||||
import { t } from "@lingui/core/macro";
|
||||
import { Trans } from "@lingui/react/macro";
|
||||
@@ -160,6 +161,9 @@ export function Auth({ setIsMagicLinkSent, isSignUp }: AuthProps) {
|
||||
const { showPopup } = usePopup();
|
||||
const oidcProviderName = "OIDC";
|
||||
|
||||
const redirect = useSearchParams().get("next");
|
||||
const callbackURL = redirect ?? "/boards";
|
||||
|
||||
// Safely get environment variables on client side to avoid hydration mismatch
|
||||
useEffect(() => {
|
||||
const credentialsAllowed =
|
||||
@@ -195,7 +199,7 @@ export function Auth({ setIsMagicLinkSent, isSignUp }: AuthProps) {
|
||||
name,
|
||||
email,
|
||||
password,
|
||||
callbackURL: "/boards",
|
||||
callbackURL,
|
||||
},
|
||||
{
|
||||
onSuccess: () =>
|
||||
@@ -212,7 +216,7 @@ export function Auth({ setIsMagicLinkSent, isSignUp }: AuthProps) {
|
||||
{
|
||||
email,
|
||||
password,
|
||||
callbackURL: "/boards",
|
||||
callbackURL,
|
||||
},
|
||||
{
|
||||
onSuccess: () =>
|
||||
@@ -229,7 +233,7 @@ export function Auth({ setIsMagicLinkSent, isSignUp }: AuthProps) {
|
||||
await authClient.signIn.magicLink(
|
||||
{
|
||||
email,
|
||||
callbackURL: "/boards",
|
||||
callbackURL,
|
||||
},
|
||||
{
|
||||
onSuccess: () => setIsMagicLinkSent(true, email),
|
||||
@@ -250,14 +254,14 @@ export function Auth({ setIsMagicLinkSent, isSignUp }: AuthProps) {
|
||||
// Use oauth2 signin for OIDC provider
|
||||
const result = await authClient.signIn.oauth2({
|
||||
providerId: "oidc",
|
||||
callbackURL: "/boards",
|
||||
callbackURL,
|
||||
});
|
||||
error = result.error;
|
||||
} else {
|
||||
// Use social signin for traditional social providers
|
||||
const result = await authClient.signIn.social({
|
||||
provider,
|
||||
callbackURL: "/boards",
|
||||
callbackURL,
|
||||
});
|
||||
error = result.error;
|
||||
}
|
||||
|
||||
@@ -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:92
|
||||
#: src/views/members/components/InviteMemberForm.tsx:104
|
||||
#: 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:104
|
||||
#: 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:147
|
||||
#: src/views/members/components/InviteMemberForm.tsx:238
|
||||
msgid "Add member"
|
||||
msgstr "Mitglied hinzufügen"
|
||||
|
||||
@@ -136,11 +136,11 @@ 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:187
|
||||
#: 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."
|
||||
|
||||
#: src/views/settings/components/Avatar.tsx:278
|
||||
#: src/views/settings/components/Avatar.tsx:275
|
||||
msgid "Adjust the square crop to fit your avatar."
|
||||
msgstr "Passe den quadratischen Zuschnitt an deinen Avatar an."
|
||||
|
||||
@@ -152,7 +152,7 @@ msgstr "Administratorrollen"
|
||||
msgid "All systems operational"
|
||||
msgstr "Alle Systeme funktionieren"
|
||||
|
||||
#: src/views/auth/signup/index.tsx:86
|
||||
#: src/views/auth/signup/index.tsx:88
|
||||
msgid "Already have an account? <0><1>Sign in</1></0>"
|
||||
msgstr "Du hast bereits ein Konto? <0><1>Anmelden</1></0>"
|
||||
|
||||
@@ -164,6 +164,10 @@ 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:290
|
||||
msgid "Anyone with this link can join your workspace"
|
||||
msgstr "Jeder mit diesem Link kann deinem Arbeitsbereich beitreten"
|
||||
|
||||
#: src/components/SettingsLayout.tsx:51
|
||||
msgid "API"
|
||||
msgstr "API"
|
||||
@@ -246,11 +250,11 @@ msgstr "Backlog"
|
||||
msgid "Basic Kanban"
|
||||
msgstr "Einfaches Kanban"
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:105
|
||||
#: src/views/members/components/InviteMemberForm.tsx:159
|
||||
msgid "billed annually"
|
||||
msgstr "jährlich abgerechnet"
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:105
|
||||
#: src/views/members/components/InviteMemberForm.tsx:159
|
||||
msgid "billed monthly"
|
||||
msgstr "monatlich abgerechnet"
|
||||
|
||||
@@ -342,7 +346,7 @@ msgstr "Fehlerbericht"
|
||||
#: src/views/card/components/DeleteChecklistConfirmation.tsx:63
|
||||
#: src/views/card/components/DeleteCommentConfirmation.tsx:76
|
||||
#: src/views/members/components/DeleteMemberConfirmation.tsx:55
|
||||
#: src/views/settings/components/Avatar.tsx:309
|
||||
#: src/views/settings/components/Avatar.tsx:306
|
||||
#: src/views/settings/components/ChangePasswordConfirmation.tsx:168
|
||||
#: src/views/settings/components/DeleteAccountConfirmation.tsx:88
|
||||
#: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:98
|
||||
@@ -369,8 +373,8 @@ msgstr "Passwort ändern"
|
||||
msgid "Change your language preferences."
|
||||
msgstr "Ändern Sie Ihre Spracheinstellungen."
|
||||
|
||||
#: src/views/auth/login/index.tsx:41
|
||||
#: src/views/auth/signup/index.tsx:67
|
||||
#: src/views/auth/login/index.tsx:43
|
||||
#: src/views/auth/signup/index.tsx:69
|
||||
msgid "Check your inbox"
|
||||
msgstr "Überprüfe deinen Posteingang"
|
||||
|
||||
@@ -382,8 +386,8 @@ msgstr "Checklistenname"
|
||||
msgid "Clear filters"
|
||||
msgstr "Filter löschen"
|
||||
|
||||
#: src/views/auth/login/index.tsx:46
|
||||
#: src/views/auth/signup/index.tsx:72
|
||||
#: src/views/auth/login/index.tsx:48
|
||||
#: src/views/auth/signup/index.tsx:74
|
||||
msgid "Click on the link we've sent to {magicLinkRecipient} to sign in."
|
||||
msgstr "Klicke auf den Link, den wir an {magicLinkRecipient} gesendet haben, um dich anzumelden."
|
||||
|
||||
@@ -459,12 +463,12 @@ msgstr "Kontaktiere uns"
|
||||
msgid "Content Creation"
|
||||
msgstr "Content-Erstellung"
|
||||
|
||||
#: src/components/AuthForm.tsx:366
|
||||
#: src/components/AuthForm.tsx:370
|
||||
msgid "Continue with "
|
||||
msgstr "Fortfahren mit "
|
||||
|
||||
#. placeholder {0}: key === "oidc" ? oidcProviderName : provider.name
|
||||
#: src/components/AuthForm.tsx:297
|
||||
#: src/components/AuthForm.tsx:301
|
||||
msgid "Continue with {0}"
|
||||
msgstr "Fortfahren mit {0}"
|
||||
|
||||
@@ -532,7 +536,7 @@ msgstr "hat die Karte erstellt"
|
||||
msgid "Critical"
|
||||
msgstr "Kritisch"
|
||||
|
||||
#: src/views/settings/components/Avatar.tsx:275
|
||||
#: src/views/settings/components/Avatar.tsx:272
|
||||
msgid "Crop your avatar"
|
||||
msgstr "Schneide deinen Avatar zu"
|
||||
|
||||
@@ -661,7 +665,7 @@ msgstr "Dokumente"
|
||||
msgid "Documentation"
|
||||
msgstr "Dokumentation"
|
||||
|
||||
#: src/views/auth/login/index.tsx:61
|
||||
#: src/views/auth/login/index.tsx:63
|
||||
msgid "Don't have an account? <0><1>Sign up</1></0>"
|
||||
msgstr "Du hast noch kein Konto? <0><1>Registrieren</1></0>"
|
||||
|
||||
@@ -693,11 +697,11 @@ msgstr "Workspace-URL bearbeiten"
|
||||
msgid "Editing"
|
||||
msgstr "Bearbeitung"
|
||||
|
||||
#: src/components/AuthForm.tsx:368
|
||||
#: src/components/AuthForm.tsx:372
|
||||
msgid "email"
|
||||
msgstr "E-Mail"
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:161
|
||||
#: src/views/members/components/InviteMemberForm.tsx:252
|
||||
msgid "Email"
|
||||
msgstr "E-Mail"
|
||||
|
||||
@@ -713,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:333
|
||||
#: src/components/AuthForm.tsx:337
|
||||
msgid "Enter your email address"
|
||||
msgstr "Gib deine E-Mail-Adresse ein"
|
||||
|
||||
#: src/components/AuthForm.tsx:321
|
||||
#: src/components/AuthForm.tsx:325
|
||||
msgid "Enter your name"
|
||||
msgstr "Gib deinen Namen ein"
|
||||
|
||||
@@ -725,14 +729,26 @@ msgstr "Gib deinen Namen ein"
|
||||
msgid "Enter your new password"
|
||||
msgstr "Geben Sie Ihr neues Passwort ein"
|
||||
|
||||
#: src/components/AuthForm.tsx:346
|
||||
#: src/components/AuthForm.tsx:350
|
||||
msgid "Enter your password"
|
||||
msgstr "Gib dein Passwort ein"
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:196
|
||||
msgid "Error"
|
||||
msgstr "Fehler"
|
||||
|
||||
#: src/views/settings/components/ChangePasswordConfirmation.tsx:89
|
||||
msgid "Error Changing Password"
|
||||
msgstr "Fehler beim Ändern des Passworts"
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:117
|
||||
msgid "Error creating invite link"
|
||||
msgstr "Fehler beim Erstellen des Einladungslinks"
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:132
|
||||
msgid "Error deactivating invite link"
|
||||
msgstr "Fehler beim Deaktivieren des Einladungslinks"
|
||||
|
||||
#: src/views/settings/components/DeleteAccountConfirmation.tsx:39
|
||||
msgid "Error deleting account"
|
||||
msgstr "Fehler beim Löschen des Kontos"
|
||||
@@ -749,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:71
|
||||
#: src/views/members/components/InviteMemberForm.tsx:77
|
||||
#: src/views/members/components/InviteMemberForm.tsx:95
|
||||
#: src/views/members/components/InviteMemberForm.tsx:101
|
||||
msgid "Error inviting member"
|
||||
msgstr "Fehler beim Einladen des Mitglieds"
|
||||
|
||||
@@ -758,7 +774,7 @@ msgstr "Fehler beim Einladen des Mitglieds"
|
||||
msgid "Error updating display name"
|
||||
msgstr "Fehler beim Aktualisieren des Anzeigenamens"
|
||||
|
||||
#: src/views/settings/components/Avatar.tsx:80
|
||||
#: src/views/settings/components/Avatar.tsx:77
|
||||
msgid "Error updating profile image"
|
||||
msgstr "Fehler beim Aktualisieren des Profilbilds"
|
||||
|
||||
@@ -774,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:130
|
||||
#: src/views/members/components/InviteMemberForm.tsx:221
|
||||
#: src/views/settings/components/UpgradeToProConfirmation.tsx:41
|
||||
msgid "Error upgrading subscription"
|
||||
msgstr "Fehler beim Upgrade des Abonnements"
|
||||
@@ -783,8 +799,8 @@ msgstr "Fehler beim Upgrade des Abonnements"
|
||||
msgid "Error upgrading to Pro"
|
||||
msgstr "Fehler beim Upgrade auf Pro"
|
||||
|
||||
#: src/views/settings/components/Avatar.tsx:94
|
||||
#: src/views/settings/components/Avatar.tsx:221
|
||||
#: src/views/settings/components/Avatar.tsx:91
|
||||
#: src/views/settings/components/Avatar.tsx:218
|
||||
msgid "Error uploading profile image"
|
||||
msgstr "Fehler beim Hochladen des Profilbilds"
|
||||
|
||||
@@ -800,8 +816,16 @@ msgstr "Alles was du brauchst, für immer kostenlos. Unbegrenzte Boards, unbegre
|
||||
msgid "Execution"
|
||||
msgstr "Ausführung"
|
||||
|
||||
#: src/views/invite/index.tsx:41
|
||||
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: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:269
|
||||
#: src/components/AuthForm.tsx:273
|
||||
msgid "Failed to login with {0}. Please try again."
|
||||
msgstr "Anmeldung mit {0} fehlgeschlagen. Bitte versuche es erneut."
|
||||
|
||||
@@ -849,7 +873,7 @@ msgstr "Für langfristige Nachhaltigkeit erkennen wir an, dass alle guten Open-S
|
||||
msgid "Free"
|
||||
msgstr "Kostenlos"
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:193
|
||||
#: src/views/members/components/InviteMemberForm.tsx:312
|
||||
#: src/views/members/index.tsx:208
|
||||
msgid "Free Plan"
|
||||
msgstr "Kostenloser Plan"
|
||||
@@ -866,7 +890,7 @@ msgstr "Vollzeit"
|
||||
msgid "Fun"
|
||||
msgstr "Spaß"
|
||||
|
||||
#: src/views/auth/signup/index.tsx:67
|
||||
#: src/views/auth/signup/index.tsx:69
|
||||
#: src/views/home/components/Cta.tsx:61
|
||||
#: src/views/home/components/Header.tsx:102
|
||||
#: src/views/home/components/Header.tsx:141
|
||||
@@ -906,8 +930,13 @@ msgstr "Erste Schritte"
|
||||
msgid "GitHub"
|
||||
msgstr "GitHub"
|
||||
|
||||
#: src/views/invite/index.tsx:113
|
||||
msgid "Go Home"
|
||||
msgstr "Zur Startseite"
|
||||
|
||||
#: src/views/home/components/Header.tsx:96
|
||||
#: src/views/home/components/Header.tsx:133
|
||||
#: src/views/invite/index.tsx:144
|
||||
msgid "Go to app"
|
||||
msgstr "Zur App"
|
||||
|
||||
@@ -1006,27 +1035,44 @@ msgstr "Integrationen"
|
||||
msgid "Interviewing"
|
||||
msgstr "Vorstellungsgespräch"
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:40
|
||||
#: src/views/members/components/InviteMemberForm.tsx:49
|
||||
msgid "Invalid email address"
|
||||
msgstr "Ungültige E-Mail-Adresse"
|
||||
|
||||
#: src/views/invite/index.tsx:105
|
||||
msgid "Invalid invitation"
|
||||
msgstr "Ungültige Einladung"
|
||||
|
||||
#: src/views/members/index.tsx:221
|
||||
msgid "Invite"
|
||||
msgstr "Einladen"
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:208
|
||||
msgid "Invite another"
|
||||
msgstr "Weitere Person einladen"
|
||||
#: src/views/members/components/InviteMemberForm.tsx:190
|
||||
msgid "Invite link copied"
|
||||
msgstr "Einladungslink kopiert"
|
||||
|
||||
#: 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:233
|
||||
#: src/views/members/components/InviteMemberForm.tsx:350
|
||||
msgid "Invite member"
|
||||
msgstr "Mitglied einladen"
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:196
|
||||
#: 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."
|
||||
|
||||
#: src/views/invite/index.tsx:79
|
||||
#: src/views/invite/index.tsx:129
|
||||
msgid "Join workspace"
|
||||
msgstr "Arbeitsbereich beitreten"
|
||||
|
||||
#: src/views/invite/index.tsx:91
|
||||
msgid "Join workspace | kan.bn"
|
||||
msgstr "Arbeitsbereich beitreten | kan.bn"
|
||||
|
||||
#: src/views/boards/components/TemplateBoards.tsx:69
|
||||
msgid "Junior"
|
||||
msgstr "Junior"
|
||||
@@ -1099,7 +1145,7 @@ msgstr "Liste"
|
||||
msgid "List name"
|
||||
msgstr "Listenname"
|
||||
|
||||
#: src/views/auth/login/index.tsx:31
|
||||
#: src/views/auth/login/index.tsx:33
|
||||
msgid "Login | kan.bn"
|
||||
msgstr "Login | kan.bn"
|
||||
|
||||
@@ -1115,7 +1161,7 @@ msgstr "Langfristig"
|
||||
msgid "Low Priority"
|
||||
msgstr "Niedrige Priorität"
|
||||
|
||||
#: src/components/AuthForm.tsx:369
|
||||
#: src/components/AuthForm.tsx:373
|
||||
msgid "magic link"
|
||||
msgstr "Magic Link"
|
||||
|
||||
@@ -1149,7 +1195,7 @@ msgstr "Mitglieder | {0}"
|
||||
msgid "Monthly"
|
||||
msgstr "Monatlich"
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:93
|
||||
#: src/views/members/components/InviteMemberForm.tsx:147
|
||||
msgid "monthly billing"
|
||||
msgstr "monatliche Abrechnung"
|
||||
|
||||
@@ -1261,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:311
|
||||
#: src/components/AuthForm.tsx:315
|
||||
msgid "or"
|
||||
msgstr "oder"
|
||||
|
||||
@@ -1318,19 +1364,19 @@ msgstr "Planung"
|
||||
msgid "Please confirm your new password"
|
||||
msgstr "Bitte bestätigen Sie Ihr neues Passwort"
|
||||
|
||||
#: src/components/AuthForm.tsx:337
|
||||
#: 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:325
|
||||
#: src/components/AuthForm.tsx:329
|
||||
msgid "Please enter a valid name"
|
||||
msgstr "Bitte gib einen gültigen Namen ein"
|
||||
|
||||
#: src/components/AuthForm.tsx:350
|
||||
#: src/components/AuthForm.tsx:354
|
||||
msgid "Please enter a valid password"
|
||||
msgstr "Bitte gib ein gültiges Passwort ein"
|
||||
|
||||
#: src/views/settings/components/Avatar.tsx:95
|
||||
#: src/views/settings/components/Avatar.tsx:92
|
||||
msgid "Please select a file to upload."
|
||||
msgstr "Bitte wähle eine Datei zum Hochladen aus."
|
||||
|
||||
@@ -1359,10 +1405,10 @@ 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:78
|
||||
#: src/views/members/components/InviteMemberForm.tsx:131
|
||||
#: src/views/settings/components/Avatar.tsx:81
|
||||
#: src/views/settings/components/Avatar.tsx:222
|
||||
#: 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
|
||||
#: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:46
|
||||
#: src/views/settings/components/UpdateDisplayNameForm.tsx:55
|
||||
@@ -1373,6 +1419,11 @@ 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:118
|
||||
#: src/views/members/components/InviteMemberForm.tsx:133
|
||||
msgid "Please try again later."
|
||||
msgstr "Bitte versuche es später erneut."
|
||||
|
||||
#: src/views/home/components/Footer.tsx:50
|
||||
#: src/views/home/components/Header.tsx:15
|
||||
#: src/views/home/components/Pricing.tsx:85
|
||||
@@ -1396,11 +1447,11 @@ msgstr "Privat"
|
||||
msgid "Pro Plan"
|
||||
msgstr "Pro-Plan"
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:182
|
||||
#: src/views/members/components/InviteMemberForm.tsx:301
|
||||
msgid "Pro Plan ∞"
|
||||
msgstr "Pro-Plan ∞"
|
||||
|
||||
#: src/views/settings/components/Avatar.tsx:67
|
||||
#: src/views/settings/components/Avatar.tsx:64
|
||||
msgid "Profile image updated"
|
||||
msgstr "Profilbild aktualisiert"
|
||||
|
||||
@@ -1501,7 +1552,7 @@ msgid "Run on your own infrastructure"
|
||||
msgstr "Auf eigener Infrastruktur betreiben"
|
||||
|
||||
#: src/views/card/components/Comment.tsx:165
|
||||
#: src/views/settings/components/Avatar.tsx:312
|
||||
#: src/views/settings/components/Avatar.tsx:309
|
||||
msgid "Save"
|
||||
msgstr "Speichern"
|
||||
|
||||
@@ -1566,25 +1617,37 @@ 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"
|
||||
msgstr "Anmelden"
|
||||
|
||||
#: src/views/auth/signup/index.tsx:32
|
||||
#: src/views/auth/signup/index.tsx:57
|
||||
#: src/views/invite/index.tsx:154
|
||||
msgid "Sign In"
|
||||
msgstr "Anmelden"
|
||||
|
||||
#: src/views/invite/index.tsx:162
|
||||
msgid "Sign Up"
|
||||
msgstr "Registrieren"
|
||||
|
||||
#: src/views/auth/signup/index.tsx:34
|
||||
#: src/views/auth/signup/index.tsx:59
|
||||
msgid "Sign up | kan.bn"
|
||||
msgstr "Registrieren | kan.bn"
|
||||
|
||||
#: src/views/auth/signup/index.tsx:42
|
||||
#: src/views/auth/signup/index.tsx:44
|
||||
msgid "Sign up disabled"
|
||||
msgstr "Registrierung deaktiviert"
|
||||
|
||||
#: src/views/auth/signup/index.tsx:45
|
||||
#: src/views/auth/signup/index.tsx:47
|
||||
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:366
|
||||
#: src/components/AuthForm.tsx:370
|
||||
msgid "Sign up with "
|
||||
msgstr "Registrieren mit "
|
||||
|
||||
@@ -1608,8 +1671,8 @@ msgstr "Softwareentwicklung"
|
||||
msgid "Star on Github"
|
||||
msgstr "Stern auf Github"
|
||||
|
||||
#: src/components/AuthForm.tsx:203
|
||||
#: src/components/AuthForm.tsx:220
|
||||
#: src/components/AuthForm.tsx:207
|
||||
#: src/components/AuthForm.tsx:224
|
||||
msgid "Success"
|
||||
msgstr "Erfolg"
|
||||
|
||||
@@ -1629,7 +1692,7 @@ msgstr "Unterstütze die Entwicklung des Projekts"
|
||||
msgid "System"
|
||||
msgstr "System"
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:182
|
||||
#: src/views/members/components/InviteMemberForm.tsx:301
|
||||
#: src/views/members/index.tsx:207
|
||||
msgid "Team Plan"
|
||||
msgstr "Team-Plan"
|
||||
@@ -1694,6 +1757,10 @@ msgstr "Dieses Board ist privat oder existiert nicht"
|
||||
msgid "This board URL has already been taken"
|
||||
msgstr "Diese Board-URL ist bereits vergeben"
|
||||
|
||||
#: src/views/invite/index.tsx:108
|
||||
msgid "This invitation link is invalid or has expired."
|
||||
msgstr "Dieser Einladungslink ist ungültig oder abgelaufen."
|
||||
|
||||
#: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:70
|
||||
msgid "This will result in the permanent deletion of all data associated with this workspace."
|
||||
msgstr "Dies führt zur permanenten Löschung aller mit diesem Workspace verbundenen Daten."
|
||||
@@ -1909,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:224
|
||||
#: src/views/members/components/InviteMemberForm.tsx:341
|
||||
msgid "Upgrade to Team Plan"
|
||||
msgstr "Upgrade auf Team-Plan"
|
||||
|
||||
@@ -1941,7 +2008,7 @@ msgstr "Vorlage verwenden"
|
||||
msgid "User"
|
||||
msgstr "Benutzer"
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:72
|
||||
#: src/views/members/components/InviteMemberForm.tsx:96
|
||||
msgid "User is already a member of this workspace"
|
||||
msgstr "Benutzer ist bereits Mitglied dieses Arbeitsbereichs"
|
||||
|
||||
@@ -1985,7 +2052,7 @@ msgstr "Wir verwenden die <0>AGPL-3.0 lizenz</0>."
|
||||
msgid "We're just getting started. "
|
||||
msgstr "Wir stehen erst am anfang. "
|
||||
|
||||
#: src/views/auth/login/index.tsx:41
|
||||
#: src/views/auth/login/index.tsx:43
|
||||
msgid "Welcome back"
|
||||
msgstr "Willkommen zurück"
|
||||
|
||||
@@ -2100,18 +2167,26 @@ 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:221
|
||||
#: src/components/AuthForm.tsx:225
|
||||
msgid "You have been logged in successfully."
|
||||
msgstr "Sie haben sich erfolgreich angemeldet."
|
||||
|
||||
#: src/components/AuthForm.tsx:204
|
||||
#: src/components/AuthForm.tsx:208
|
||||
msgid "You have been signed up successfully."
|
||||
msgstr "Sie haben sich erfolgreich registriert."
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:186
|
||||
#: 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!"
|
||||
|
||||
#: src/views/invite/index.tsx:134
|
||||
msgid "You've been invited to join a workspace on kan.bn."
|
||||
msgstr "Du wurdest eingeladen, einem Arbeitsbereich auf kan.bn beizutreten."
|
||||
|
||||
#: src/views/invite/index.tsx:135
|
||||
msgid "You've been invited to join a workspace."
|
||||
msgstr "Du wurdest eingeladen, einem Arbeitsbereich beizutreten."
|
||||
|
||||
#: src/views/settings/components/DeleteAccountConfirmation.tsx:28
|
||||
msgid "Your account has been deleted."
|
||||
msgstr "Dein Konto wurde gelöscht."
|
||||
@@ -2128,7 +2203,7 @@ msgstr "Dein Anzeigename wurde aktualisiert."
|
||||
msgid "Your password has been changed."
|
||||
msgstr "Ihr Passwort wurde geändert."
|
||||
|
||||
#: src/views/settings/components/Avatar.tsx:68
|
||||
#: src/views/settings/components/Avatar.tsx:65
|
||||
msgid "Your profile image has been updated."
|
||||
msgstr "Dein Profilbild wurde aktualisiert."
|
||||
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -40,12 +40,12 @@ msgstr "{boardCount, plural, one {Import board (1)} other {Import boards ({board
|
||||
#~ msgid "#1 Hacker News"
|
||||
#~ msgstr "#1 Hacker News"
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:92
|
||||
#: src/views/members/components/InviteMemberForm.tsx:104
|
||||
#: 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:104
|
||||
#: 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:147
|
||||
#: src/views/members/components/InviteMemberForm.tsx:238
|
||||
msgid "Add member"
|
||||
msgstr "Add member"
|
||||
|
||||
@@ -156,11 +156,11 @@ msgstr "added label <0>{0}</0>"
|
||||
#~ msgid "added label <0>{label}</0>"
|
||||
#~ msgstr "added label <0>{label}</0>"
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:187
|
||||
#: 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."
|
||||
|
||||
#: src/views/settings/components/Avatar.tsx:278
|
||||
#: src/views/settings/components/Avatar.tsx:275
|
||||
msgid "Adjust the square crop to fit your avatar."
|
||||
msgstr "Adjust the square crop to fit your avatar."
|
||||
|
||||
@@ -176,7 +176,7 @@ msgstr "Admin roles"
|
||||
msgid "All systems operational"
|
||||
msgstr "All systems operational"
|
||||
|
||||
#: src/views/auth/signup/index.tsx:86
|
||||
#: src/views/auth/signup/index.tsx:88
|
||||
msgid "Already have an account? <0><1>Sign in</1></0>"
|
||||
msgstr "Already have an account? <0><1>Sign in</1></0>"
|
||||
|
||||
@@ -188,6 +188,10 @@ 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:290
|
||||
msgid "Anyone with this link can join your workspace"
|
||||
msgstr "Anyone with this link can join your workspace"
|
||||
|
||||
#: src/components/SettingsLayout.tsx:51
|
||||
msgid "API"
|
||||
msgstr "API"
|
||||
@@ -282,11 +286,11 @@ msgstr "Backlog"
|
||||
msgid "Basic Kanban"
|
||||
msgstr "Basic Kanban"
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:105
|
||||
#: src/views/members/components/InviteMemberForm.tsx:159
|
||||
msgid "billed annually"
|
||||
msgstr "billed annually"
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:105
|
||||
#: src/views/members/components/InviteMemberForm.tsx:159
|
||||
msgid "billed monthly"
|
||||
msgstr "billed monthly"
|
||||
|
||||
@@ -391,7 +395,7 @@ msgstr "Bug Report"
|
||||
#: src/views/card/components/DeleteChecklistConfirmation.tsx:63
|
||||
#: src/views/card/components/DeleteCommentConfirmation.tsx:76
|
||||
#: src/views/members/components/DeleteMemberConfirmation.tsx:55
|
||||
#: src/views/settings/components/Avatar.tsx:309
|
||||
#: src/views/settings/components/Avatar.tsx:306
|
||||
#: src/views/settings/components/ChangePasswordConfirmation.tsx:168
|
||||
#: src/views/settings/components/DeleteAccountConfirmation.tsx:88
|
||||
#: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:98
|
||||
@@ -422,8 +426,8 @@ msgstr "Change Password"
|
||||
msgid "Change your language preferences."
|
||||
msgstr "Change your language preferences."
|
||||
|
||||
#: src/views/auth/login/index.tsx:41
|
||||
#: src/views/auth/signup/index.tsx:67
|
||||
#: src/views/auth/login/index.tsx:43
|
||||
#: src/views/auth/signup/index.tsx:69
|
||||
msgid "Check your inbox"
|
||||
msgstr "Check your inbox"
|
||||
|
||||
@@ -435,8 +439,8 @@ msgstr "Checklist name"
|
||||
msgid "Clear filters"
|
||||
msgstr "Clear filters"
|
||||
|
||||
#: src/views/auth/login/index.tsx:46
|
||||
#: src/views/auth/signup/index.tsx:72
|
||||
#: src/views/auth/login/index.tsx:48
|
||||
#: src/views/auth/signup/index.tsx:74
|
||||
msgid "Click on the link we've sent to {magicLinkRecipient} to sign in."
|
||||
msgstr "Click on the link we've sent to {magicLinkRecipient} to sign in."
|
||||
|
||||
@@ -516,12 +520,12 @@ msgstr "Contact us"
|
||||
msgid "Content Creation"
|
||||
msgstr "Content Creation"
|
||||
|
||||
#: src/components/AuthForm.tsx:366
|
||||
#: src/components/AuthForm.tsx:370
|
||||
msgid "Continue with "
|
||||
msgstr "Continue with "
|
||||
|
||||
#. placeholder {0}: key === "oidc" ? oidcProviderName : provider.name
|
||||
#: src/components/AuthForm.tsx:297
|
||||
#: src/components/AuthForm.tsx:301
|
||||
msgid "Continue with {0}"
|
||||
msgstr "Continue with {0}"
|
||||
|
||||
@@ -597,7 +601,7 @@ msgstr "created the card"
|
||||
msgid "Critical"
|
||||
msgstr "Critical"
|
||||
|
||||
#: src/views/settings/components/Avatar.tsx:275
|
||||
#: src/views/settings/components/Avatar.tsx:272
|
||||
msgid "Crop your avatar"
|
||||
msgstr "Crop your avatar"
|
||||
|
||||
@@ -734,7 +738,7 @@ msgstr "Docs"
|
||||
msgid "Documentation"
|
||||
msgstr "Documentation"
|
||||
|
||||
#: src/views/auth/login/index.tsx:61
|
||||
#: src/views/auth/login/index.tsx:63
|
||||
msgid "Don't have an account? <0><1>Sign up</1></0>"
|
||||
msgstr "Don't have an account? <0><1>Sign up</1></0>"
|
||||
|
||||
@@ -766,11 +770,11 @@ msgstr "Edit workspace URL"
|
||||
msgid "Editing"
|
||||
msgstr "Editing"
|
||||
|
||||
#: src/components/AuthForm.tsx:368
|
||||
#: src/components/AuthForm.tsx:372
|
||||
msgid "email"
|
||||
msgstr "email"
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:161
|
||||
#: src/views/members/components/InviteMemberForm.tsx:252
|
||||
msgid "Email"
|
||||
msgstr "Email"
|
||||
|
||||
@@ -786,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:333
|
||||
#: src/components/AuthForm.tsx:337
|
||||
msgid "Enter your email address"
|
||||
msgstr "Enter your email address"
|
||||
|
||||
#: src/components/AuthForm.tsx:321
|
||||
#: src/components/AuthForm.tsx:325
|
||||
msgid "Enter your name"
|
||||
msgstr "Enter your name"
|
||||
|
||||
@@ -798,14 +802,26 @@ msgstr "Enter your name"
|
||||
msgid "Enter your new password"
|
||||
msgstr "Enter your new password"
|
||||
|
||||
#: src/components/AuthForm.tsx:346
|
||||
#: src/components/AuthForm.tsx:350
|
||||
msgid "Enter your password"
|
||||
msgstr "Enter your password"
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:196
|
||||
msgid "Error"
|
||||
msgstr "Error"
|
||||
|
||||
#: src/views/settings/components/ChangePasswordConfirmation.tsx:89
|
||||
msgid "Error Changing Password"
|
||||
msgstr "Error Changing Password"
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:117
|
||||
msgid "Error creating invite link"
|
||||
msgstr "Error creating invite link"
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:132
|
||||
msgid "Error deactivating invite link"
|
||||
msgstr "Error deactivating invite link"
|
||||
|
||||
#: src/views/settings/components/DeleteAccountConfirmation.tsx:39
|
||||
msgid "Error deleting account"
|
||||
msgstr "Error deleting account"
|
||||
@@ -822,8 +838,8 @@ msgstr "Error deleting workspace"
|
||||
msgid "Error disconnecting Trello"
|
||||
msgstr "Error disconnecting Trello"
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:71
|
||||
#: src/views/members/components/InviteMemberForm.tsx:77
|
||||
#: src/views/members/components/InviteMemberForm.tsx:95
|
||||
#: src/views/members/components/InviteMemberForm.tsx:101
|
||||
msgid "Error inviting member"
|
||||
msgstr "Error inviting member"
|
||||
|
||||
@@ -831,7 +847,7 @@ msgstr "Error inviting member"
|
||||
msgid "Error updating display name"
|
||||
msgstr "Error updating display name"
|
||||
|
||||
#: src/views/settings/components/Avatar.tsx:80
|
||||
#: src/views/settings/components/Avatar.tsx:77
|
||||
msgid "Error updating profile image"
|
||||
msgstr "Error updating profile image"
|
||||
|
||||
@@ -847,7 +863,7 @@ msgstr "Error updating workspace name"
|
||||
msgid "Error updating workspace URL"
|
||||
msgstr "Error updating workspace URL"
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:130
|
||||
#: src/views/members/components/InviteMemberForm.tsx:221
|
||||
#: src/views/settings/components/UpgradeToProConfirmation.tsx:41
|
||||
msgid "Error upgrading subscription"
|
||||
msgstr "Error upgrading subscription"
|
||||
@@ -856,8 +872,8 @@ msgstr "Error upgrading subscription"
|
||||
msgid "Error upgrading to Pro"
|
||||
msgstr "Error upgrading to Pro"
|
||||
|
||||
#: src/views/settings/components/Avatar.tsx:94
|
||||
#: src/views/settings/components/Avatar.tsx:221
|
||||
#: src/views/settings/components/Avatar.tsx:91
|
||||
#: src/views/settings/components/Avatar.tsx:218
|
||||
msgid "Error uploading profile image"
|
||||
msgstr "Error uploading profile image"
|
||||
|
||||
@@ -873,8 +889,16 @@ msgstr "Everything you need, free forever. Unlimited boards, unlimited lists, un
|
||||
msgid "Execution"
|
||||
msgstr "Execution"
|
||||
|
||||
#: src/views/invite/index.tsx:41
|
||||
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: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:269
|
||||
#: src/components/AuthForm.tsx:273
|
||||
msgid "Failed to login with {0}. Please try again."
|
||||
msgstr "Failed to login with {0}. Please try again."
|
||||
|
||||
@@ -923,7 +947,7 @@ msgstr "For long-term sustainability, we recognise all good open source projects
|
||||
msgid "Free"
|
||||
msgstr "Free"
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:193
|
||||
#: src/views/members/components/InviteMemberForm.tsx:312
|
||||
#: src/views/members/index.tsx:208
|
||||
msgid "Free Plan"
|
||||
msgstr "Free Plan"
|
||||
@@ -940,7 +964,7 @@ msgstr "Full-time"
|
||||
msgid "Fun"
|
||||
msgstr "Fun"
|
||||
|
||||
#: src/views/auth/signup/index.tsx:67
|
||||
#: src/views/auth/signup/index.tsx:69
|
||||
#: src/views/home/components/Cta.tsx:61
|
||||
#: src/views/home/components/Header.tsx:102
|
||||
#: src/views/home/components/Header.tsx:141
|
||||
@@ -980,8 +1004,13 @@ msgstr "Getting started"
|
||||
msgid "GitHub"
|
||||
msgstr "GitHub"
|
||||
|
||||
#: src/views/invite/index.tsx:113
|
||||
msgid "Go Home"
|
||||
msgstr "Go Home"
|
||||
|
||||
#: src/views/home/components/Header.tsx:96
|
||||
#: src/views/home/components/Header.tsx:133
|
||||
#: src/views/invite/index.tsx:144
|
||||
msgid "Go to app"
|
||||
msgstr "Go to app"
|
||||
|
||||
@@ -1084,27 +1113,48 @@ msgstr "Integrations"
|
||||
msgid "Interviewing"
|
||||
msgstr "Interviewing"
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:40
|
||||
#: src/views/members/components/InviteMemberForm.tsx:49
|
||||
msgid "Invalid email address"
|
||||
msgstr "Invalid email address"
|
||||
|
||||
#: src/views/invite/index.tsx:105
|
||||
msgid "Invalid invitation"
|
||||
msgstr "Invalid invitation"
|
||||
|
||||
#: src/views/members/index.tsx:221
|
||||
msgid "Invite"
|
||||
msgstr "Invite"
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:208
|
||||
msgid "Invite another"
|
||||
msgstr "Invite another"
|
||||
#~ msgid "Invite another"
|
||||
#~ msgstr "Invite another"
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:190
|
||||
msgid "Invite link copied"
|
||||
msgstr "Invite link copied"
|
||||
|
||||
#: 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:233
|
||||
#: src/views/members/components/InviteMemberForm.tsx:350
|
||||
msgid "Invite member"
|
||||
msgstr "Invite member"
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:196
|
||||
#: 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."
|
||||
|
||||
#: src/views/invite/index.tsx:79
|
||||
#: src/views/invite/index.tsx:129
|
||||
msgid "Join workspace"
|
||||
msgstr "Join workspace"
|
||||
|
||||
#: src/views/invite/index.tsx:91
|
||||
msgid "Join workspace | kan.bn"
|
||||
msgstr "Join workspace | kan.bn"
|
||||
|
||||
#: src/views/boards/components/TemplateBoards.tsx:69
|
||||
msgid "Junior"
|
||||
msgstr "Junior"
|
||||
@@ -1177,7 +1227,7 @@ msgstr "List"
|
||||
msgid "List name"
|
||||
msgstr "List name"
|
||||
|
||||
#: src/views/auth/login/index.tsx:31
|
||||
#: src/views/auth/login/index.tsx:33
|
||||
msgid "Login | kan.bn"
|
||||
msgstr "Login | kan.bn"
|
||||
|
||||
@@ -1193,7 +1243,7 @@ msgstr "Long-term"
|
||||
msgid "Low Priority"
|
||||
msgstr "Low Priority"
|
||||
|
||||
#: src/components/AuthForm.tsx:369
|
||||
#: src/components/AuthForm.tsx:373
|
||||
msgid "magic link"
|
||||
msgstr "magic link"
|
||||
|
||||
@@ -1227,7 +1277,7 @@ msgstr "Members | {0}"
|
||||
msgid "Monthly"
|
||||
msgstr "Monthly"
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:93
|
||||
#: src/views/members/components/InviteMemberForm.tsx:147
|
||||
msgid "monthly billing"
|
||||
msgstr "monthly billing"
|
||||
|
||||
@@ -1351,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:311
|
||||
#: src/components/AuthForm.tsx:315
|
||||
msgid "or"
|
||||
msgstr "or"
|
||||
|
||||
@@ -1408,19 +1458,19 @@ msgstr "Planning"
|
||||
msgid "Please confirm your new password"
|
||||
msgstr "Please confirm your new password"
|
||||
|
||||
#: src/components/AuthForm.tsx:337
|
||||
#: src/components/AuthForm.tsx:341
|
||||
msgid "Please enter a valid email address"
|
||||
msgstr "Please enter a valid email address"
|
||||
|
||||
#: src/components/AuthForm.tsx:325
|
||||
#: src/components/AuthForm.tsx:329
|
||||
msgid "Please enter a valid name"
|
||||
msgstr "Please enter a valid name"
|
||||
|
||||
#: src/components/AuthForm.tsx:350
|
||||
#: src/components/AuthForm.tsx:354
|
||||
msgid "Please enter a valid password"
|
||||
msgstr "Please enter a valid password"
|
||||
|
||||
#: src/views/settings/components/Avatar.tsx:95
|
||||
#: src/views/settings/components/Avatar.tsx:92
|
||||
msgid "Please select a file to upload."
|
||||
msgstr "Please select a file to upload."
|
||||
|
||||
@@ -1449,10 +1499,10 @@ 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:78
|
||||
#: src/views/members/components/InviteMemberForm.tsx:131
|
||||
#: src/views/settings/components/Avatar.tsx:81
|
||||
#: src/views/settings/components/Avatar.tsx:222
|
||||
#: 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
|
||||
#: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:46
|
||||
#: src/views/settings/components/UpdateDisplayNameForm.tsx:55
|
||||
@@ -1463,6 +1513,11 @@ 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:118
|
||||
#: src/views/members/components/InviteMemberForm.tsx:133
|
||||
msgid "Please try again later."
|
||||
msgstr "Please try again later."
|
||||
|
||||
#: src/views/home/components/Footer.tsx:50
|
||||
#: src/views/home/components/Header.tsx:15
|
||||
#: src/views/home/components/Pricing.tsx:85
|
||||
@@ -1486,11 +1541,11 @@ msgstr "Private"
|
||||
msgid "Pro Plan"
|
||||
msgstr "Pro Plan"
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:182
|
||||
#: src/views/members/components/InviteMemberForm.tsx:301
|
||||
msgid "Pro Plan ∞"
|
||||
msgstr "Pro Plan ∞"
|
||||
|
||||
#: src/views/settings/components/Avatar.tsx:67
|
||||
#: src/views/settings/components/Avatar.tsx:64
|
||||
msgid "Profile image updated"
|
||||
msgstr "Profile image updated"
|
||||
|
||||
@@ -1599,7 +1654,7 @@ msgid "Run on your own infrastructure"
|
||||
msgstr "Run on your own infrastructure"
|
||||
|
||||
#: src/views/card/components/Comment.tsx:165
|
||||
#: src/views/settings/components/Avatar.tsx:312
|
||||
#: src/views/settings/components/Avatar.tsx:309
|
||||
msgid "Save"
|
||||
msgstr "Save"
|
||||
|
||||
@@ -1672,25 +1727,37 @@ msgstr "Settings | Integrations"
|
||||
msgid "Settings | Workspace"
|
||||
msgstr "Settings | Workspace"
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:327
|
||||
msgid "Share invite link"
|
||||
msgstr "Share invite link"
|
||||
|
||||
#: src/views/home/components/Header.tsx:100
|
||||
#: src/views/home/components/Header.tsx:138
|
||||
msgid "Sign in"
|
||||
msgstr "Sign in"
|
||||
|
||||
#: src/views/auth/signup/index.tsx:32
|
||||
#: src/views/auth/signup/index.tsx:57
|
||||
#: src/views/invite/index.tsx:154
|
||||
msgid "Sign In"
|
||||
msgstr "Sign In"
|
||||
|
||||
#: src/views/invite/index.tsx:162
|
||||
msgid "Sign Up"
|
||||
msgstr "Sign Up"
|
||||
|
||||
#: src/views/auth/signup/index.tsx:34
|
||||
#: src/views/auth/signup/index.tsx:59
|
||||
msgid "Sign up | kan.bn"
|
||||
msgstr "Sign up | kan.bn"
|
||||
|
||||
#: src/views/auth/signup/index.tsx:42
|
||||
#: src/views/auth/signup/index.tsx:44
|
||||
msgid "Sign up disabled"
|
||||
msgstr "Sign up disabled"
|
||||
|
||||
#: src/views/auth/signup/index.tsx:45
|
||||
#: src/views/auth/signup/index.tsx:47
|
||||
msgid "Sign up is currently disabled. Please try again later."
|
||||
msgstr "Sign up is currently disabled. Please try again later."
|
||||
|
||||
#: src/components/AuthForm.tsx:366
|
||||
#: src/components/AuthForm.tsx:370
|
||||
msgid "Sign up with "
|
||||
msgstr "Sign up with "
|
||||
|
||||
@@ -1714,8 +1781,8 @@ msgstr "Software Development"
|
||||
msgid "Star on Github"
|
||||
msgstr "Star on Github"
|
||||
|
||||
#: src/components/AuthForm.tsx:203
|
||||
#: src/components/AuthForm.tsx:220
|
||||
#: src/components/AuthForm.tsx:207
|
||||
#: src/components/AuthForm.tsx:224
|
||||
msgid "Success"
|
||||
msgstr "Success"
|
||||
|
||||
@@ -1735,7 +1802,7 @@ msgstr "Support the development of the project"
|
||||
msgid "System"
|
||||
msgstr "System"
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:182
|
||||
#: src/views/members/components/InviteMemberForm.tsx:301
|
||||
#: src/views/members/index.tsx:207
|
||||
msgid "Team Plan"
|
||||
msgstr "Team Plan"
|
||||
@@ -1800,6 +1867,10 @@ msgstr "This board is private or does not exist"
|
||||
msgid "This board URL has already been taken"
|
||||
msgstr "This board URL has already been taken"
|
||||
|
||||
#: src/views/invite/index.tsx:108
|
||||
msgid "This invitation link is invalid or has expired."
|
||||
msgstr "This invitation link is invalid or has expired."
|
||||
|
||||
#: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:70
|
||||
msgid "This will result in the permanent deletion of all data associated with this workspace."
|
||||
msgstr "This will result in the permanent deletion of all data associated with this workspace."
|
||||
@@ -2027,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:224
|
||||
#: src/views/members/components/InviteMemberForm.tsx:341
|
||||
msgid "Upgrade to Team Plan"
|
||||
msgstr "Upgrade to Team Plan"
|
||||
|
||||
@@ -2059,7 +2130,7 @@ msgstr "Use template"
|
||||
msgid "User"
|
||||
msgstr "User"
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:72
|
||||
#: 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"
|
||||
|
||||
@@ -2103,7 +2174,7 @@ msgstr "We are using the <0>AGPL-3.0 license</0>."
|
||||
msgid "We're just getting started. "
|
||||
msgstr "We're just getting started. "
|
||||
|
||||
#: src/views/auth/login/index.tsx:41
|
||||
#: src/views/auth/login/index.tsx:43
|
||||
msgid "Welcome back"
|
||||
msgstr "Welcome back"
|
||||
|
||||
@@ -2222,18 +2293,26 @@ 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:221
|
||||
#: src/components/AuthForm.tsx:225
|
||||
msgid "You have been logged in successfully."
|
||||
msgstr "You have been logged in successfully."
|
||||
|
||||
#: src/components/AuthForm.tsx:204
|
||||
#: 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:186
|
||||
#: 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!"
|
||||
|
||||
#: src/views/invite/index.tsx:134
|
||||
msgid "You've been invited to join a workspace on kan.bn."
|
||||
msgstr "You've been invited to join a workspace on kan.bn."
|
||||
|
||||
#: src/views/invite/index.tsx:135
|
||||
msgid "You've been invited to join a workspace."
|
||||
msgstr "You've been invited to join a workspace."
|
||||
|
||||
#: src/views/settings/components/DeleteAccountConfirmation.tsx:28
|
||||
msgid "Your account has been deleted."
|
||||
msgstr "Your account has been deleted."
|
||||
@@ -2250,7 +2329,7 @@ msgstr "Your display name has been updated."
|
||||
msgid "Your password has been changed."
|
||||
msgstr "Your password has been changed."
|
||||
|
||||
#: src/views/settings/components/Avatar.tsx:68
|
||||
#: src/views/settings/components/Avatar.tsx:65
|
||||
msgid "Your profile image has been updated."
|
||||
msgstr "Your profile image has been updated."
|
||||
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -36,12 +36,12 @@ msgstr "{0} etiquetas"
|
||||
msgid "{boardCount, plural, one {Import board (1)} other {Import boards ({boardCount})}}"
|
||||
msgstr "{boardCount, plural, one {Importar tablero (1)} other {Importar tableros ({boardCount})}}"
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:92
|
||||
#: src/views/members/components/InviteMemberForm.tsx:104
|
||||
#: 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:104
|
||||
#: 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:147
|
||||
#: src/views/members/components/InviteMemberForm.tsx:238
|
||||
msgid "Add member"
|
||||
msgstr "Añadir miembro"
|
||||
|
||||
@@ -136,11 +136,11 @@ 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:187
|
||||
#: 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."
|
||||
|
||||
#: src/views/settings/components/Avatar.tsx:278
|
||||
#: src/views/settings/components/Avatar.tsx:275
|
||||
msgid "Adjust the square crop to fit your avatar."
|
||||
msgstr "Ajusta el recorte cuadrado para que se adapte a tu avatar."
|
||||
|
||||
@@ -152,7 +152,7 @@ msgstr "Roles de administrador"
|
||||
msgid "All systems operational"
|
||||
msgstr "Todos los sistemas operativos"
|
||||
|
||||
#: src/views/auth/signup/index.tsx:86
|
||||
#: src/views/auth/signup/index.tsx:88
|
||||
msgid "Already have an account? <0><1>Sign in</1></0>"
|
||||
msgstr "¿Ya tienes una cuenta? <0><1>Iniciar sesión</1></0>"
|
||||
|
||||
@@ -164,6 +164,10 @@ 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:290
|
||||
msgid "Anyone with this link can join your workspace"
|
||||
msgstr "Cualquier persona con este enlace puede unirse a tu espacio de trabajo"
|
||||
|
||||
#: src/components/SettingsLayout.tsx:51
|
||||
msgid "API"
|
||||
msgstr "API"
|
||||
@@ -246,11 +250,11 @@ msgstr "Pendientes"
|
||||
msgid "Basic Kanban"
|
||||
msgstr "Kanban básico"
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:105
|
||||
#: src/views/members/components/InviteMemberForm.tsx:159
|
||||
msgid "billed annually"
|
||||
msgstr "facturado anualmente"
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:105
|
||||
#: src/views/members/components/InviteMemberForm.tsx:159
|
||||
msgid "billed monthly"
|
||||
msgstr "facturado mensualmente"
|
||||
|
||||
@@ -342,7 +346,7 @@ msgstr "Informe de error"
|
||||
#: src/views/card/components/DeleteChecklistConfirmation.tsx:63
|
||||
#: src/views/card/components/DeleteCommentConfirmation.tsx:76
|
||||
#: src/views/members/components/DeleteMemberConfirmation.tsx:55
|
||||
#: src/views/settings/components/Avatar.tsx:309
|
||||
#: src/views/settings/components/Avatar.tsx:306
|
||||
#: src/views/settings/components/ChangePasswordConfirmation.tsx:168
|
||||
#: src/views/settings/components/DeleteAccountConfirmation.tsx:88
|
||||
#: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:98
|
||||
@@ -369,8 +373,8 @@ msgstr "Cambiar contraseña"
|
||||
msgid "Change your language preferences."
|
||||
msgstr "Cambia tus preferencias de idioma."
|
||||
|
||||
#: src/views/auth/login/index.tsx:41
|
||||
#: src/views/auth/signup/index.tsx:67
|
||||
#: src/views/auth/login/index.tsx:43
|
||||
#: src/views/auth/signup/index.tsx:69
|
||||
msgid "Check your inbox"
|
||||
msgstr "Revisa tu bandeja de entrada"
|
||||
|
||||
@@ -382,8 +386,8 @@ msgstr "Nombre de la lista de verificación"
|
||||
msgid "Clear filters"
|
||||
msgstr "Borrar filtros"
|
||||
|
||||
#: src/views/auth/login/index.tsx:46
|
||||
#: src/views/auth/signup/index.tsx:72
|
||||
#: src/views/auth/login/index.tsx:48
|
||||
#: src/views/auth/signup/index.tsx:74
|
||||
msgid "Click on the link we've sent to {magicLinkRecipient} to sign in."
|
||||
msgstr "Haz clic en el enlace que hemos enviado a {magicLinkRecipient} para iniciar sesión."
|
||||
|
||||
@@ -459,12 +463,12 @@ msgstr "Contáctanos"
|
||||
msgid "Content Creation"
|
||||
msgstr "Creación de contenido"
|
||||
|
||||
#: src/components/AuthForm.tsx:366
|
||||
#: src/components/AuthForm.tsx:370
|
||||
msgid "Continue with "
|
||||
msgstr "Continuar con "
|
||||
|
||||
#. placeholder {0}: key === "oidc" ? oidcProviderName : provider.name
|
||||
#: src/components/AuthForm.tsx:297
|
||||
#: src/components/AuthForm.tsx:301
|
||||
msgid "Continue with {0}"
|
||||
msgstr "Continuar con {0}"
|
||||
|
||||
@@ -532,7 +536,7 @@ msgstr "creó la tarjeta"
|
||||
msgid "Critical"
|
||||
msgstr "Crítico"
|
||||
|
||||
#: src/views/settings/components/Avatar.tsx:275
|
||||
#: src/views/settings/components/Avatar.tsx:272
|
||||
msgid "Crop your avatar"
|
||||
msgstr "Recorta tu avatar"
|
||||
|
||||
@@ -661,7 +665,7 @@ msgstr "Documentos"
|
||||
msgid "Documentation"
|
||||
msgstr "Documentación"
|
||||
|
||||
#: src/views/auth/login/index.tsx:61
|
||||
#: src/views/auth/login/index.tsx:63
|
||||
msgid "Don't have an account? <0><1>Sign up</1></0>"
|
||||
msgstr "¿No tienes una cuenta? <0><1>Regístrate</1></0>"
|
||||
|
||||
@@ -693,11 +697,11 @@ msgstr "Editar URL del espacio de trabajo"
|
||||
msgid "Editing"
|
||||
msgstr "Editando"
|
||||
|
||||
#: src/components/AuthForm.tsx:368
|
||||
#: src/components/AuthForm.tsx:372
|
||||
msgid "email"
|
||||
msgstr "correo electrónico"
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:161
|
||||
#: src/views/members/components/InviteMemberForm.tsx:252
|
||||
msgid "Email"
|
||||
msgstr "Correo electrónico"
|
||||
|
||||
@@ -713,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:333
|
||||
#: src/components/AuthForm.tsx:337
|
||||
msgid "Enter your email address"
|
||||
msgstr "Introduce tu dirección de correo electrónico"
|
||||
|
||||
#: src/components/AuthForm.tsx:321
|
||||
#: src/components/AuthForm.tsx:325
|
||||
msgid "Enter your name"
|
||||
msgstr "Introduce tu nombre"
|
||||
|
||||
@@ -725,14 +729,26 @@ msgstr "Introduce tu nombre"
|
||||
msgid "Enter your new password"
|
||||
msgstr "Introduce tu nueva contraseña"
|
||||
|
||||
#: src/components/AuthForm.tsx:346
|
||||
#: src/components/AuthForm.tsx:350
|
||||
msgid "Enter your password"
|
||||
msgstr "Introduce tu contraseña"
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:196
|
||||
msgid "Error"
|
||||
msgstr "Error"
|
||||
|
||||
#: src/views/settings/components/ChangePasswordConfirmation.tsx:89
|
||||
msgid "Error Changing Password"
|
||||
msgstr "Error al cambiar la contraseña"
|
||||
|
||||
#: 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:132
|
||||
msgid "Error deactivating invite link"
|
||||
msgstr "Error al desactivar el enlace de invitación"
|
||||
|
||||
#: src/views/settings/components/DeleteAccountConfirmation.tsx:39
|
||||
msgid "Error deleting account"
|
||||
msgstr "Error al eliminar la cuenta"
|
||||
@@ -749,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:71
|
||||
#: src/views/members/components/InviteMemberForm.tsx:77
|
||||
#: src/views/members/components/InviteMemberForm.tsx:95
|
||||
#: src/views/members/components/InviteMemberForm.tsx:101
|
||||
msgid "Error inviting member"
|
||||
msgstr "Error al invitar al miembro"
|
||||
|
||||
@@ -758,7 +774,7 @@ msgstr "Error al invitar al miembro"
|
||||
msgid "Error updating display name"
|
||||
msgstr "Error al actualizar el nombre visible"
|
||||
|
||||
#: src/views/settings/components/Avatar.tsx:80
|
||||
#: src/views/settings/components/Avatar.tsx:77
|
||||
msgid "Error updating profile image"
|
||||
msgstr "Error al actualizar la imagen de perfil"
|
||||
|
||||
@@ -774,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:130
|
||||
#: 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"
|
||||
@@ -783,8 +799,8 @@ msgstr "Error al actualizar la suscripción"
|
||||
msgid "Error upgrading to Pro"
|
||||
msgstr "Error al actualizar a Pro"
|
||||
|
||||
#: src/views/settings/components/Avatar.tsx:94
|
||||
#: src/views/settings/components/Avatar.tsx:221
|
||||
#: src/views/settings/components/Avatar.tsx:91
|
||||
#: src/views/settings/components/Avatar.tsx:218
|
||||
msgid "Error uploading profile image"
|
||||
msgstr "Error al subir la imagen de perfil"
|
||||
|
||||
@@ -800,8 +816,16 @@ msgstr "Todo lo que necesitas, gratis para siempre. Tableros ilimitados, listas
|
||||
msgid "Execution"
|
||||
msgstr "Ejecución"
|
||||
|
||||
#: src/views/invite/index.tsx:41
|
||||
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: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:269
|
||||
#: 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."
|
||||
|
||||
@@ -849,7 +873,7 @@ msgstr "Para la sostenibilidad a largo plazo, reconocemos que todos los buenos p
|
||||
msgid "Free"
|
||||
msgstr "Gratis"
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:193
|
||||
#: src/views/members/components/InviteMemberForm.tsx:312
|
||||
#: src/views/members/index.tsx:208
|
||||
msgid "Free Plan"
|
||||
msgstr "Plan gratuito"
|
||||
@@ -866,7 +890,7 @@ msgstr "Tiempo completo"
|
||||
msgid "Fun"
|
||||
msgstr "Diversión"
|
||||
|
||||
#: src/views/auth/signup/index.tsx:67
|
||||
#: src/views/auth/signup/index.tsx:69
|
||||
#: src/views/home/components/Cta.tsx:61
|
||||
#: src/views/home/components/Header.tsx:102
|
||||
#: src/views/home/components/Header.tsx:141
|
||||
@@ -906,8 +930,13 @@ msgstr "Primeros pasos"
|
||||
msgid "GitHub"
|
||||
msgstr "GitHub"
|
||||
|
||||
#: src/views/invite/index.tsx:113
|
||||
msgid "Go Home"
|
||||
msgstr "Ir a inicio"
|
||||
|
||||
#: src/views/home/components/Header.tsx:96
|
||||
#: src/views/home/components/Header.tsx:133
|
||||
#: src/views/invite/index.tsx:144
|
||||
msgid "Go to app"
|
||||
msgstr "Ir a la aplicación"
|
||||
|
||||
@@ -1006,27 +1035,44 @@ msgstr "Integraciones"
|
||||
msgid "Interviewing"
|
||||
msgstr "Entrevistando"
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:40
|
||||
#: 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 no válida"
|
||||
|
||||
#: src/views/members/index.tsx:221
|
||||
msgid "Invite"
|
||||
msgstr "Invitar"
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:208
|
||||
msgid "Invite another"
|
||||
msgstr "Invitar a otro"
|
||||
#: src/views/members/components/InviteMemberForm.tsx:190
|
||||
msgid "Invite link copied"
|
||||
msgstr "Enlace de invitación copiado"
|
||||
|
||||
#: 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:233
|
||||
#: src/views/members/components/InviteMemberForm.tsx:350
|
||||
msgid "Invite member"
|
||||
msgstr "Invitar miembro"
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:196
|
||||
#: 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."
|
||||
|
||||
#: src/views/invite/index.tsx:79
|
||||
#: src/views/invite/index.tsx:129
|
||||
msgid "Join workspace"
|
||||
msgstr "Unirse al espacio de trabajo"
|
||||
|
||||
#: src/views/invite/index.tsx:91
|
||||
msgid "Join workspace | kan.bn"
|
||||
msgstr "Unirse al espacio de trabajo | kan.bn"
|
||||
|
||||
#: src/views/boards/components/TemplateBoards.tsx:69
|
||||
msgid "Junior"
|
||||
msgstr "Junior"
|
||||
@@ -1099,7 +1145,7 @@ msgstr "Lista"
|
||||
msgid "List name"
|
||||
msgstr "Nombre de la lista"
|
||||
|
||||
#: src/views/auth/login/index.tsx:31
|
||||
#: src/views/auth/login/index.tsx:33
|
||||
msgid "Login | kan.bn"
|
||||
msgstr "Iniciar sesión | kan.bn"
|
||||
|
||||
@@ -1115,7 +1161,7 @@ msgstr "Largo plazo"
|
||||
msgid "Low Priority"
|
||||
msgstr "Prioridad baja"
|
||||
|
||||
#: src/components/AuthForm.tsx:369
|
||||
#: src/components/AuthForm.tsx:373
|
||||
msgid "magic link"
|
||||
msgstr "enlace mágico"
|
||||
|
||||
@@ -1149,7 +1195,7 @@ msgstr "Miembros | {0}"
|
||||
msgid "Monthly"
|
||||
msgstr "Mensual"
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:93
|
||||
#: src/views/members/components/InviteMemberForm.tsx:147
|
||||
msgid "monthly billing"
|
||||
msgstr "facturación mensual"
|
||||
|
||||
@@ -1261,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:311
|
||||
#: src/components/AuthForm.tsx:315
|
||||
msgid "or"
|
||||
msgstr "o"
|
||||
|
||||
@@ -1318,19 +1364,19 @@ msgstr "Planificación"
|
||||
msgid "Please confirm your new password"
|
||||
msgstr "Por favor, confirma tu nueva contraseña"
|
||||
|
||||
#: src/components/AuthForm.tsx:337
|
||||
#: 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:325
|
||||
#: src/components/AuthForm.tsx:329
|
||||
msgid "Please enter a valid name"
|
||||
msgstr "Por favor, introduce un nombre válido"
|
||||
|
||||
#: src/components/AuthForm.tsx:350
|
||||
#: src/components/AuthForm.tsx:354
|
||||
msgid "Please enter a valid password"
|
||||
msgstr "Por favor, introduce una contraseña válida"
|
||||
|
||||
#: src/views/settings/components/Avatar.tsx:95
|
||||
#: src/views/settings/components/Avatar.tsx:92
|
||||
msgid "Please select a file to upload."
|
||||
msgstr "Por favor selecciona un archivo para subir."
|
||||
|
||||
@@ -1359,10 +1405,10 @@ 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:78
|
||||
#: src/views/members/components/InviteMemberForm.tsx:131
|
||||
#: src/views/settings/components/Avatar.tsx:81
|
||||
#: src/views/settings/components/Avatar.tsx:222
|
||||
#: 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
|
||||
#: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:46
|
||||
#: src/views/settings/components/UpdateDisplayNameForm.tsx:55
|
||||
@@ -1373,6 +1419,11 @@ 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:118
|
||||
#: src/views/members/components/InviteMemberForm.tsx:133
|
||||
msgid "Please try again later."
|
||||
msgstr "Por favor, inténtalo de nuevo más tarde."
|
||||
|
||||
#: src/views/home/components/Footer.tsx:50
|
||||
#: src/views/home/components/Header.tsx:15
|
||||
#: src/views/home/components/Pricing.tsx:85
|
||||
@@ -1396,11 +1447,11 @@ msgstr "Privado"
|
||||
msgid "Pro Plan"
|
||||
msgstr "Plan Pro"
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:182
|
||||
#: src/views/members/components/InviteMemberForm.tsx:301
|
||||
msgid "Pro Plan ∞"
|
||||
msgstr "Plan Pro ∞"
|
||||
|
||||
#: src/views/settings/components/Avatar.tsx:67
|
||||
#: src/views/settings/components/Avatar.tsx:64
|
||||
msgid "Profile image updated"
|
||||
msgstr "Imagen de perfil actualizada"
|
||||
|
||||
@@ -1501,7 +1552,7 @@ msgid "Run on your own infrastructure"
|
||||
msgstr "Ejecuta en tu propia infraestructura"
|
||||
|
||||
#: src/views/card/components/Comment.tsx:165
|
||||
#: src/views/settings/components/Avatar.tsx:312
|
||||
#: src/views/settings/components/Avatar.tsx:309
|
||||
msgid "Save"
|
||||
msgstr "Guardar"
|
||||
|
||||
@@ -1566,25 +1617,37 @@ 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"
|
||||
msgstr "Iniciar sesión"
|
||||
|
||||
#: src/views/auth/signup/index.tsx:32
|
||||
#: src/views/auth/signup/index.tsx:57
|
||||
#: src/views/invite/index.tsx:154
|
||||
msgid "Sign In"
|
||||
msgstr "Iniciar sesión"
|
||||
|
||||
#: src/views/invite/index.tsx:162
|
||||
msgid "Sign Up"
|
||||
msgstr "Registrarse"
|
||||
|
||||
#: src/views/auth/signup/index.tsx:34
|
||||
#: src/views/auth/signup/index.tsx:59
|
||||
msgid "Sign up | kan.bn"
|
||||
msgstr "Registrarse | kan.bn"
|
||||
|
||||
#: src/views/auth/signup/index.tsx:42
|
||||
#: src/views/auth/signup/index.tsx:44
|
||||
msgid "Sign up disabled"
|
||||
msgstr "Registro deshabilitado"
|
||||
|
||||
#: src/views/auth/signup/index.tsx:45
|
||||
#: src/views/auth/signup/index.tsx:47
|
||||
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:366
|
||||
#: src/components/AuthForm.tsx:370
|
||||
msgid "Sign up with "
|
||||
msgstr "Registrarse con "
|
||||
|
||||
@@ -1608,8 +1671,8 @@ msgstr "Desarrollo de software"
|
||||
msgid "Star on Github"
|
||||
msgstr "Estrella en Github"
|
||||
|
||||
#: src/components/AuthForm.tsx:203
|
||||
#: src/components/AuthForm.tsx:220
|
||||
#: src/components/AuthForm.tsx:207
|
||||
#: src/components/AuthForm.tsx:224
|
||||
msgid "Success"
|
||||
msgstr "Éxito"
|
||||
|
||||
@@ -1629,7 +1692,7 @@ msgstr "Apoya el desarrollo del proyecto"
|
||||
msgid "System"
|
||||
msgstr "Sistema"
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:182
|
||||
#: src/views/members/components/InviteMemberForm.tsx:301
|
||||
#: src/views/members/index.tsx:207
|
||||
msgid "Team Plan"
|
||||
msgstr "Plan de Equipo"
|
||||
@@ -1694,6 +1757,10 @@ msgstr "Este tablero es privado o no existe"
|
||||
msgid "This board URL has already been taken"
|
||||
msgstr "Esta URL de tablero ya ha sido utilizada"
|
||||
|
||||
#: src/views/invite/index.tsx:108
|
||||
msgid "This invitation link is invalid or has expired."
|
||||
msgstr "Este enlace de invitación no es válido o ha caducado."
|
||||
|
||||
#: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:70
|
||||
msgid "This will result in the permanent deletion of all data associated with this workspace."
|
||||
msgstr "Esto resultará en la eliminación permanente de todos los datos asociados con este espacio de trabajo."
|
||||
@@ -1909,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:224
|
||||
#: src/views/members/components/InviteMemberForm.tsx:341
|
||||
msgid "Upgrade to Team Plan"
|
||||
msgstr "Actualizar al Plan de Equipo"
|
||||
|
||||
@@ -1941,7 +2008,7 @@ msgstr "Usar plantilla"
|
||||
msgid "User"
|
||||
msgstr "Usuario"
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:72
|
||||
#: 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"
|
||||
|
||||
@@ -1985,7 +2052,7 @@ msgstr "Estamos usando la <0>licencia AGPL-3.0</0>."
|
||||
msgid "We're just getting started. "
|
||||
msgstr "Apenas estamos comenzando. "
|
||||
|
||||
#: src/views/auth/login/index.tsx:41
|
||||
#: src/views/auth/login/index.tsx:43
|
||||
msgid "Welcome back"
|
||||
msgstr "Bienvenido de nuevo"
|
||||
|
||||
@@ -2100,18 +2167,26 @@ 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:221
|
||||
#: src/components/AuthForm.tsx:225
|
||||
msgid "You have been logged in successfully."
|
||||
msgstr "Has iniciado sesión correctamente."
|
||||
|
||||
#: src/components/AuthForm.tsx:204
|
||||
#: src/components/AuthForm.tsx:208
|
||||
msgid "You have been signed up successfully."
|
||||
msgstr "Te has registrado correctamente."
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:186
|
||||
#: 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!"
|
||||
|
||||
#: src/views/invite/index.tsx:134
|
||||
msgid "You've been invited to join a workspace on kan.bn."
|
||||
msgstr "Has sido invitado a unirte a un espacio de trabajo en kan.bn."
|
||||
|
||||
#: src/views/invite/index.tsx:135
|
||||
msgid "You've been invited to join a workspace."
|
||||
msgstr "Has sido invitado a unirte a un espacio de trabajo."
|
||||
|
||||
#: src/views/settings/components/DeleteAccountConfirmation.tsx:28
|
||||
msgid "Your account has been deleted."
|
||||
msgstr "Tu cuenta ha sido eliminada."
|
||||
@@ -2128,7 +2203,7 @@ msgstr "Tu nombre de visualización ha sido actualizado."
|
||||
msgid "Your password has been changed."
|
||||
msgstr "Tu contraseña ha sido cambiada."
|
||||
|
||||
#: src/views/settings/components/Avatar.tsx:68
|
||||
#: src/views/settings/components/Avatar.tsx:65
|
||||
msgid "Your profile image has been updated."
|
||||
msgstr "Tu imagen de perfil ha sido actualizada."
|
||||
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -36,12 +36,12 @@ msgstr "{0} étiquettes"
|
||||
msgid "{boardCount, plural, one {Import board (1)} other {Import boards ({boardCount})}}"
|
||||
msgstr "{boardCount, plural, one {Importer le tableau (1)} other {Importer les tableaux ({boardCount})}}"
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:92
|
||||
#: src/views/members/components/InviteMemberForm.tsx:104
|
||||
#: 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:104
|
||||
#: 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:147
|
||||
#: src/views/members/components/InviteMemberForm.tsx:238
|
||||
msgid "Add member"
|
||||
msgstr "Ajouter un membre"
|
||||
|
||||
@@ -136,11 +136,11 @@ 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:187
|
||||
#: 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."
|
||||
|
||||
#: src/views/settings/components/Avatar.tsx:278
|
||||
#: src/views/settings/components/Avatar.tsx:275
|
||||
msgid "Adjust the square crop to fit your avatar."
|
||||
msgstr "Ajustez le recadrage carré pour adapter votre avatar."
|
||||
|
||||
@@ -152,7 +152,7 @@ msgstr "Rôles d'administrateur"
|
||||
msgid "All systems operational"
|
||||
msgstr "Tous les systèmes opérationnels"
|
||||
|
||||
#: src/views/auth/signup/index.tsx:86
|
||||
#: src/views/auth/signup/index.tsx:88
|
||||
msgid "Already have an account? <0><1>Sign in</1></0>"
|
||||
msgstr "Vous avez déjà un compte ? <0><1>Connectez-vous</1></0>"
|
||||
|
||||
@@ -164,6 +164,10 @@ 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:290
|
||||
msgid "Anyone with this link can join your workspace"
|
||||
msgstr "Toute personne disposant de ce lien peut rejoindre votre espace de travail"
|
||||
|
||||
#: src/components/SettingsLayout.tsx:51
|
||||
msgid "API"
|
||||
msgstr "API"
|
||||
@@ -246,11 +250,11 @@ msgstr "Backlog"
|
||||
msgid "Basic Kanban"
|
||||
msgstr "Kanban basique"
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:105
|
||||
#: src/views/members/components/InviteMemberForm.tsx:159
|
||||
msgid "billed annually"
|
||||
msgstr "facturation annuelle"
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:105
|
||||
#: src/views/members/components/InviteMemberForm.tsx:159
|
||||
msgid "billed monthly"
|
||||
msgstr "facturation mensuelle"
|
||||
|
||||
@@ -342,7 +346,7 @@ msgstr "Rapport de bug"
|
||||
#: src/views/card/components/DeleteChecklistConfirmation.tsx:63
|
||||
#: src/views/card/components/DeleteCommentConfirmation.tsx:76
|
||||
#: src/views/members/components/DeleteMemberConfirmation.tsx:55
|
||||
#: src/views/settings/components/Avatar.tsx:309
|
||||
#: src/views/settings/components/Avatar.tsx:306
|
||||
#: src/views/settings/components/ChangePasswordConfirmation.tsx:168
|
||||
#: src/views/settings/components/DeleteAccountConfirmation.tsx:88
|
||||
#: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:98
|
||||
@@ -369,8 +373,8 @@ msgstr "Modifier le mot de passe"
|
||||
msgid "Change your language preferences."
|
||||
msgstr "Modifiez vos préférences linguistiques."
|
||||
|
||||
#: src/views/auth/login/index.tsx:41
|
||||
#: src/views/auth/signup/index.tsx:67
|
||||
#: src/views/auth/login/index.tsx:43
|
||||
#: src/views/auth/signup/index.tsx:69
|
||||
msgid "Check your inbox"
|
||||
msgstr "Vérifiez votre boîte de réception"
|
||||
|
||||
@@ -382,8 +386,8 @@ msgstr "Nom de la checklist"
|
||||
msgid "Clear filters"
|
||||
msgstr "Effacer les filtres"
|
||||
|
||||
#: src/views/auth/login/index.tsx:46
|
||||
#: src/views/auth/signup/index.tsx:72
|
||||
#: src/views/auth/login/index.tsx:48
|
||||
#: src/views/auth/signup/index.tsx:74
|
||||
msgid "Click on the link we've sent to {magicLinkRecipient} to sign in."
|
||||
msgstr "Cliquez sur le lien que nous avons envoyé à {magicLinkRecipient} pour vous connecter."
|
||||
|
||||
@@ -459,12 +463,12 @@ msgstr "Contactez-nous"
|
||||
msgid "Content Creation"
|
||||
msgstr "Création de contenu"
|
||||
|
||||
#: src/components/AuthForm.tsx:366
|
||||
#: src/components/AuthForm.tsx:370
|
||||
msgid "Continue with "
|
||||
msgstr "Continuer avec "
|
||||
|
||||
#. placeholder {0}: key === "oidc" ? oidcProviderName : provider.name
|
||||
#: src/components/AuthForm.tsx:297
|
||||
#: src/components/AuthForm.tsx:301
|
||||
msgid "Continue with {0}"
|
||||
msgstr "Continuer avec {0}"
|
||||
|
||||
@@ -532,7 +536,7 @@ msgstr "a créé la carte"
|
||||
msgid "Critical"
|
||||
msgstr "Critique"
|
||||
|
||||
#: src/views/settings/components/Avatar.tsx:275
|
||||
#: src/views/settings/components/Avatar.tsx:272
|
||||
msgid "Crop your avatar"
|
||||
msgstr "Recadrez votre avatar"
|
||||
|
||||
@@ -661,7 +665,7 @@ msgstr "Documentation"
|
||||
msgid "Documentation"
|
||||
msgstr "Documentation"
|
||||
|
||||
#: src/views/auth/login/index.tsx:61
|
||||
#: src/views/auth/login/index.tsx:63
|
||||
msgid "Don't have an account? <0><1>Sign up</1></0>"
|
||||
msgstr "Vous n'avez pas de compte ? <0><1>Inscrivez-vous</1></0>"
|
||||
|
||||
@@ -693,11 +697,11 @@ msgstr "Modifier l'URL de l'espace de travail"
|
||||
msgid "Editing"
|
||||
msgstr "Édition"
|
||||
|
||||
#: src/components/AuthForm.tsx:368
|
||||
#: src/components/AuthForm.tsx:372
|
||||
msgid "email"
|
||||
msgstr "e-mail"
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:161
|
||||
#: src/views/members/components/InviteMemberForm.tsx:252
|
||||
msgid "Email"
|
||||
msgstr "E-mail"
|
||||
|
||||
@@ -713,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:333
|
||||
#: src/components/AuthForm.tsx:337
|
||||
msgid "Enter your email address"
|
||||
msgstr "Saisissez votre adresse e-mail"
|
||||
|
||||
#: src/components/AuthForm.tsx:321
|
||||
#: src/components/AuthForm.tsx:325
|
||||
msgid "Enter your name"
|
||||
msgstr "Saisissez votre nom"
|
||||
|
||||
@@ -725,14 +729,26 @@ msgstr "Saisissez votre nom"
|
||||
msgid "Enter your new password"
|
||||
msgstr "Saisissez votre nouveau mot de passe"
|
||||
|
||||
#: src/components/AuthForm.tsx:346
|
||||
#: src/components/AuthForm.tsx:350
|
||||
msgid "Enter your password"
|
||||
msgstr "Saisissez votre mot de passe"
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:196
|
||||
msgid "Error"
|
||||
msgstr "Erreur"
|
||||
|
||||
#: src/views/settings/components/ChangePasswordConfirmation.tsx:89
|
||||
msgid "Error Changing Password"
|
||||
msgstr "Erreur lors du changement de mot de passe"
|
||||
|
||||
#: 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:132
|
||||
msgid "Error deactivating invite link"
|
||||
msgstr "Erreur lors de la désactivation du lien d'invitation"
|
||||
|
||||
#: src/views/settings/components/DeleteAccountConfirmation.tsx:39
|
||||
msgid "Error deleting account"
|
||||
msgstr "Erreur lors de la suppression du compte"
|
||||
@@ -749,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:71
|
||||
#: src/views/members/components/InviteMemberForm.tsx:77
|
||||
#: 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"
|
||||
|
||||
@@ -758,7 +774,7 @@ msgstr "Erreur lors de l'invitation du membre"
|
||||
msgid "Error updating display name"
|
||||
msgstr "Erreur lors de la mise à jour du nom d'affichage"
|
||||
|
||||
#: src/views/settings/components/Avatar.tsx:80
|
||||
#: src/views/settings/components/Avatar.tsx:77
|
||||
msgid "Error updating profile image"
|
||||
msgstr "Erreur lors de la mise à jour de l'image de profil"
|
||||
|
||||
@@ -774,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:130
|
||||
#: 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"
|
||||
@@ -783,8 +799,8 @@ msgstr "Erreur lors de la mise à niveau de l'abonnement"
|
||||
msgid "Error upgrading to Pro"
|
||||
msgstr "Erreur lors de la mise à niveau vers Pro"
|
||||
|
||||
#: src/views/settings/components/Avatar.tsx:94
|
||||
#: src/views/settings/components/Avatar.tsx:221
|
||||
#: src/views/settings/components/Avatar.tsx:91
|
||||
#: src/views/settings/components/Avatar.tsx:218
|
||||
msgid "Error uploading profile image"
|
||||
msgstr "Erreur lors du téléchargement de l'image de profil"
|
||||
|
||||
@@ -800,8 +816,16 @@ msgstr "Tout ce dont vous avez besoin, gratuit pour toujours. Tableaux illimité
|
||||
msgid "Execution"
|
||||
msgstr "Exécution"
|
||||
|
||||
#: src/views/invite/index.tsx:41
|
||||
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: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:269
|
||||
#: src/components/AuthForm.tsx:273
|
||||
msgid "Failed to login with {0}. Please try again."
|
||||
msgstr "Échec de connexion avec {0}. Veuillez réessayer."
|
||||
|
||||
@@ -849,7 +873,7 @@ msgstr "Pour une durabilité à long terme, nous reconnaissons que tous les bons
|
||||
msgid "Free"
|
||||
msgstr "Gratuit"
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:193
|
||||
#: src/views/members/components/InviteMemberForm.tsx:312
|
||||
#: src/views/members/index.tsx:208
|
||||
msgid "Free Plan"
|
||||
msgstr "Forfait gratuit"
|
||||
@@ -866,7 +890,7 @@ msgstr "Temps plein"
|
||||
msgid "Fun"
|
||||
msgstr "Amusant"
|
||||
|
||||
#: src/views/auth/signup/index.tsx:67
|
||||
#: src/views/auth/signup/index.tsx:69
|
||||
#: src/views/home/components/Cta.tsx:61
|
||||
#: src/views/home/components/Header.tsx:102
|
||||
#: src/views/home/components/Header.tsx:141
|
||||
@@ -906,8 +930,13 @@ msgstr "Premiers pas"
|
||||
msgid "GitHub"
|
||||
msgstr "GitHub"
|
||||
|
||||
#: src/views/invite/index.tsx:113
|
||||
msgid "Go Home"
|
||||
msgstr "Aller à l'accueil"
|
||||
|
||||
#: src/views/home/components/Header.tsx:96
|
||||
#: src/views/home/components/Header.tsx:133
|
||||
#: src/views/invite/index.tsx:144
|
||||
msgid "Go to app"
|
||||
msgstr "Accéder à l'application"
|
||||
|
||||
@@ -1006,27 +1035,44 @@ msgstr "Intégrations"
|
||||
msgid "Interviewing"
|
||||
msgstr "Entretien"
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:40
|
||||
#: 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 non valide"
|
||||
|
||||
#: src/views/members/index.tsx:221
|
||||
msgid "Invite"
|
||||
msgstr "Inviter"
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:208
|
||||
msgid "Invite another"
|
||||
msgstr "Inviter un autre"
|
||||
#: src/views/members/components/InviteMemberForm.tsx:190
|
||||
msgid "Invite link copied"
|
||||
msgstr "Lien d'invitation copié"
|
||||
|
||||
#: 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:233
|
||||
#: src/views/members/components/InviteMemberForm.tsx:350
|
||||
msgid "Invite member"
|
||||
msgstr "Inviter un membre"
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:196
|
||||
#: 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."
|
||||
|
||||
#: src/views/invite/index.tsx:79
|
||||
#: src/views/invite/index.tsx:129
|
||||
msgid "Join workspace"
|
||||
msgstr "Rejoindre l'espace de travail"
|
||||
|
||||
#: src/views/invite/index.tsx:91
|
||||
msgid "Join workspace | kan.bn"
|
||||
msgstr "Rejoindre l'espace de travail | kan.bn"
|
||||
|
||||
#: src/views/boards/components/TemplateBoards.tsx:69
|
||||
msgid "Junior"
|
||||
msgstr "Junior"
|
||||
@@ -1099,7 +1145,7 @@ msgstr "Liste"
|
||||
msgid "List name"
|
||||
msgstr "Nom de la liste"
|
||||
|
||||
#: src/views/auth/login/index.tsx:31
|
||||
#: src/views/auth/login/index.tsx:33
|
||||
msgid "Login | kan.bn"
|
||||
msgstr "Connexion | kan.bn"
|
||||
|
||||
@@ -1115,7 +1161,7 @@ msgstr "Long terme"
|
||||
msgid "Low Priority"
|
||||
msgstr "Priorité basse"
|
||||
|
||||
#: src/components/AuthForm.tsx:369
|
||||
#: src/components/AuthForm.tsx:373
|
||||
msgid "magic link"
|
||||
msgstr "lien magique"
|
||||
|
||||
@@ -1149,7 +1195,7 @@ msgstr "Membres | {0}"
|
||||
msgid "Monthly"
|
||||
msgstr "Mensuel"
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:93
|
||||
#: src/views/members/components/InviteMemberForm.tsx:147
|
||||
msgid "monthly billing"
|
||||
msgstr "facturation mensuelle"
|
||||
|
||||
@@ -1261,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:311
|
||||
#: src/components/AuthForm.tsx:315
|
||||
msgid "or"
|
||||
msgstr "ou"
|
||||
|
||||
@@ -1318,19 +1364,19 @@ msgstr "Planification"
|
||||
msgid "Please confirm your new password"
|
||||
msgstr "Veuillez confirmer votre nouveau mot de passe"
|
||||
|
||||
#: src/components/AuthForm.tsx:337
|
||||
#: src/components/AuthForm.tsx:341
|
||||
msgid "Please enter a valid email address"
|
||||
msgstr "Veuillez saisir une adresse e-mail valide"
|
||||
|
||||
#: src/components/AuthForm.tsx:325
|
||||
#: src/components/AuthForm.tsx:329
|
||||
msgid "Please enter a valid name"
|
||||
msgstr "Veuillez saisir un nom valide"
|
||||
|
||||
#: src/components/AuthForm.tsx:350
|
||||
#: src/components/AuthForm.tsx:354
|
||||
msgid "Please enter a valid password"
|
||||
msgstr "Veuillez saisir un mot de passe valide"
|
||||
|
||||
#: src/views/settings/components/Avatar.tsx:95
|
||||
#: src/views/settings/components/Avatar.tsx:92
|
||||
msgid "Please select a file to upload."
|
||||
msgstr "Veuillez sélectionner un fichier à télécharger."
|
||||
|
||||
@@ -1359,10 +1405,10 @@ 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:78
|
||||
#: src/views/members/components/InviteMemberForm.tsx:131
|
||||
#: src/views/settings/components/Avatar.tsx:81
|
||||
#: src/views/settings/components/Avatar.tsx:222
|
||||
#: 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
|
||||
#: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:46
|
||||
#: src/views/settings/components/UpdateDisplayNameForm.tsx:55
|
||||
@@ -1373,6 +1419,11 @@ 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:118
|
||||
#: src/views/members/components/InviteMemberForm.tsx:133
|
||||
msgid "Please try again later."
|
||||
msgstr "Veuillez réessayer plus tard."
|
||||
|
||||
#: src/views/home/components/Footer.tsx:50
|
||||
#: src/views/home/components/Header.tsx:15
|
||||
#: src/views/home/components/Pricing.tsx:85
|
||||
@@ -1396,11 +1447,11 @@ msgstr "Privé"
|
||||
msgid "Pro Plan"
|
||||
msgstr "Plan Pro"
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:182
|
||||
#: src/views/members/components/InviteMemberForm.tsx:301
|
||||
msgid "Pro Plan ∞"
|
||||
msgstr "Plan Pro ∞"
|
||||
|
||||
#: src/views/settings/components/Avatar.tsx:67
|
||||
#: src/views/settings/components/Avatar.tsx:64
|
||||
msgid "Profile image updated"
|
||||
msgstr "Image de profil mise à jour"
|
||||
|
||||
@@ -1501,7 +1552,7 @@ msgid "Run on your own infrastructure"
|
||||
msgstr "Exécutez sur votre propre infrastructure"
|
||||
|
||||
#: src/views/card/components/Comment.tsx:165
|
||||
#: src/views/settings/components/Avatar.tsx:312
|
||||
#: src/views/settings/components/Avatar.tsx:309
|
||||
msgid "Save"
|
||||
msgstr "Enregistrer"
|
||||
|
||||
@@ -1566,25 +1617,37 @@ 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"
|
||||
msgstr "Se connecter"
|
||||
|
||||
#: src/views/auth/signup/index.tsx:32
|
||||
#: src/views/auth/signup/index.tsx:57
|
||||
#: src/views/invite/index.tsx:154
|
||||
msgid "Sign In"
|
||||
msgstr "Se connecter"
|
||||
|
||||
#: src/views/invite/index.tsx:162
|
||||
msgid "Sign Up"
|
||||
msgstr "S'inscrire"
|
||||
|
||||
#: src/views/auth/signup/index.tsx:34
|
||||
#: src/views/auth/signup/index.tsx:59
|
||||
msgid "Sign up | kan.bn"
|
||||
msgstr "Inscription | kan.bn"
|
||||
|
||||
#: src/views/auth/signup/index.tsx:42
|
||||
#: src/views/auth/signup/index.tsx:44
|
||||
msgid "Sign up disabled"
|
||||
msgstr "Inscription désactivée"
|
||||
|
||||
#: src/views/auth/signup/index.tsx:45
|
||||
#: src/views/auth/signup/index.tsx:47
|
||||
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:366
|
||||
#: src/components/AuthForm.tsx:370
|
||||
msgid "Sign up with "
|
||||
msgstr "S'inscrire avec "
|
||||
|
||||
@@ -1608,8 +1671,8 @@ msgstr "Développement logiciel"
|
||||
msgid "Star on Github"
|
||||
msgstr "Étoile sur Github"
|
||||
|
||||
#: src/components/AuthForm.tsx:203
|
||||
#: src/components/AuthForm.tsx:220
|
||||
#: src/components/AuthForm.tsx:207
|
||||
#: src/components/AuthForm.tsx:224
|
||||
msgid "Success"
|
||||
msgstr "Succès"
|
||||
|
||||
@@ -1629,7 +1692,7 @@ msgstr "Soutenir le développement du projet"
|
||||
msgid "System"
|
||||
msgstr "Système"
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:182
|
||||
#: src/views/members/components/InviteMemberForm.tsx:301
|
||||
#: src/views/members/index.tsx:207
|
||||
msgid "Team Plan"
|
||||
msgstr "Forfait d'équipe"
|
||||
@@ -1694,6 +1757,10 @@ msgstr "Ce tableau est privé ou n'existe pas"
|
||||
msgid "This board URL has already been taken"
|
||||
msgstr "Cette URL de tableau est déjà utilisée"
|
||||
|
||||
#: src/views/invite/index.tsx:108
|
||||
msgid "This invitation link is invalid or has expired."
|
||||
msgstr "Ce lien d'invitation est invalide ou a expiré."
|
||||
|
||||
#: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:70
|
||||
msgid "This will result in the permanent deletion of all data associated with this workspace."
|
||||
msgstr "Cela entraînera la suppression définitive de toutes les données associées à cet espace de travail."
|
||||
@@ -1909,7 +1976,7 @@ msgstr "Passer à Pro"
|
||||
msgid "Upgrade to Pro ($29/month)"
|
||||
msgstr "Passer à Pro (29 $/mois)"
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:224
|
||||
#: src/views/members/components/InviteMemberForm.tsx:341
|
||||
msgid "Upgrade to Team Plan"
|
||||
msgstr "Passer au forfait d'équipe"
|
||||
|
||||
@@ -1941,7 +2008,7 @@ msgstr "Utiliser le modèle"
|
||||
msgid "User"
|
||||
msgstr "Utilisateur"
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:72
|
||||
#: 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"
|
||||
|
||||
@@ -1985,7 +2052,7 @@ msgstr "Nous utilisons la <0>licence AGPL-3.0</0>."
|
||||
msgid "We're just getting started. "
|
||||
msgstr "Nous ne faisons que commencer. "
|
||||
|
||||
#: src/views/auth/login/index.tsx:41
|
||||
#: src/views/auth/login/index.tsx:43
|
||||
msgid "Welcome back"
|
||||
msgstr "Bienvenue à nouveau"
|
||||
|
||||
@@ -2100,18 +2167,26 @@ 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:221
|
||||
#: src/components/AuthForm.tsx:225
|
||||
msgid "You have been logged in successfully."
|
||||
msgstr "Vous vous êtes connecté avec succès."
|
||||
|
||||
#: src/components/AuthForm.tsx:204
|
||||
#: 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:186
|
||||
#: 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 !"
|
||||
|
||||
#: src/views/invite/index.tsx:134
|
||||
msgid "You've been invited to join a workspace on kan.bn."
|
||||
msgstr "Vous avez été invité à rejoindre un espace de travail sur kan.bn."
|
||||
|
||||
#: src/views/invite/index.tsx:135
|
||||
msgid "You've been invited to join a workspace."
|
||||
msgstr "Vous avez été invité à rejoindre un espace de travail."
|
||||
|
||||
#: src/views/settings/components/DeleteAccountConfirmation.tsx:28
|
||||
msgid "Your account has been deleted."
|
||||
msgstr "Votre compte a été supprimé."
|
||||
@@ -2128,7 +2203,7 @@ msgstr "Votre nom d'affichage a été mis à jour."
|
||||
msgid "Your password has been changed."
|
||||
msgstr "Votre mot de passe a été modifié."
|
||||
|
||||
#: src/views/settings/components/Avatar.tsx:68
|
||||
#: src/views/settings/components/Avatar.tsx:65
|
||||
msgid "Your profile image has been updated."
|
||||
msgstr "Votre image de profil a été mise à jour."
|
||||
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -36,12 +36,12 @@ msgstr "{0} etichette"
|
||||
msgid "{boardCount, plural, one {Import board (1)} other {Import boards ({boardCount})}}"
|
||||
msgstr "{boardCount, plural, one {Importa bacheca (1)} other {Importa bacheche ({boardCount})}}"
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:92
|
||||
#: src/views/members/components/InviteMemberForm.tsx:104
|
||||
#: 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:104
|
||||
#: 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:147
|
||||
#: src/views/members/components/InviteMemberForm.tsx:238
|
||||
msgid "Add member"
|
||||
msgstr "Aggiungi membro"
|
||||
|
||||
@@ -136,11 +136,11 @@ 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:187
|
||||
#: 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."
|
||||
|
||||
#: src/views/settings/components/Avatar.tsx:278
|
||||
#: src/views/settings/components/Avatar.tsx:275
|
||||
msgid "Adjust the square crop to fit your avatar."
|
||||
msgstr "Regola il ritaglio quadrato per adattarlo al tuo avatar."
|
||||
|
||||
@@ -152,7 +152,7 @@ msgstr "Ruoli amministratore"
|
||||
msgid "All systems operational"
|
||||
msgstr "Tutti i sistemi operativi"
|
||||
|
||||
#: src/views/auth/signup/index.tsx:86
|
||||
#: src/views/auth/signup/index.tsx:88
|
||||
msgid "Already have an account? <0><1>Sign in</1></0>"
|
||||
msgstr "Hai già un account? <0><1>Accedi</1></0>"
|
||||
|
||||
@@ -164,6 +164,10 @@ 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:290
|
||||
msgid "Anyone with this link can join your workspace"
|
||||
msgstr "Chiunque abbia questo link può unirsi al tuo spazio di lavoro"
|
||||
|
||||
#: src/components/SettingsLayout.tsx:51
|
||||
msgid "API"
|
||||
msgstr "API"
|
||||
@@ -246,11 +250,11 @@ msgstr "Backlog"
|
||||
msgid "Basic Kanban"
|
||||
msgstr "Kanban base"
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:105
|
||||
#: src/views/members/components/InviteMemberForm.tsx:159
|
||||
msgid "billed annually"
|
||||
msgstr "fatturato annualmente"
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:105
|
||||
#: src/views/members/components/InviteMemberForm.tsx:159
|
||||
msgid "billed monthly"
|
||||
msgstr "fatturato mensilmente"
|
||||
|
||||
@@ -342,7 +346,7 @@ msgstr "Segnalazione bug"
|
||||
#: src/views/card/components/DeleteChecklistConfirmation.tsx:63
|
||||
#: src/views/card/components/DeleteCommentConfirmation.tsx:76
|
||||
#: src/views/members/components/DeleteMemberConfirmation.tsx:55
|
||||
#: src/views/settings/components/Avatar.tsx:309
|
||||
#: src/views/settings/components/Avatar.tsx:306
|
||||
#: src/views/settings/components/ChangePasswordConfirmation.tsx:168
|
||||
#: src/views/settings/components/DeleteAccountConfirmation.tsx:88
|
||||
#: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:98
|
||||
@@ -369,8 +373,8 @@ msgstr "Cambia password"
|
||||
msgid "Change your language preferences."
|
||||
msgstr "Modifica le tue preferenze di lingua."
|
||||
|
||||
#: src/views/auth/login/index.tsx:41
|
||||
#: src/views/auth/signup/index.tsx:67
|
||||
#: src/views/auth/login/index.tsx:43
|
||||
#: src/views/auth/signup/index.tsx:69
|
||||
msgid "Check your inbox"
|
||||
msgstr "Controlla la tua casella di posta"
|
||||
|
||||
@@ -382,8 +386,8 @@ msgstr "Nome della checklist"
|
||||
msgid "Clear filters"
|
||||
msgstr "Cancella filtri"
|
||||
|
||||
#: src/views/auth/login/index.tsx:46
|
||||
#: src/views/auth/signup/index.tsx:72
|
||||
#: src/views/auth/login/index.tsx:48
|
||||
#: src/views/auth/signup/index.tsx:74
|
||||
msgid "Click on the link we've sent to {magicLinkRecipient} to sign in."
|
||||
msgstr "Clicca sul link che abbiamo inviato a {magicLinkRecipient} per accedere."
|
||||
|
||||
@@ -459,12 +463,12 @@ msgstr "Contattaci"
|
||||
msgid "Content Creation"
|
||||
msgstr "Creazione contenuti"
|
||||
|
||||
#: src/components/AuthForm.tsx:366
|
||||
#: src/components/AuthForm.tsx:370
|
||||
msgid "Continue with "
|
||||
msgstr "Continua con "
|
||||
|
||||
#. placeholder {0}: key === "oidc" ? oidcProviderName : provider.name
|
||||
#: src/components/AuthForm.tsx:297
|
||||
#: src/components/AuthForm.tsx:301
|
||||
msgid "Continue with {0}"
|
||||
msgstr "Continua con {0}"
|
||||
|
||||
@@ -532,7 +536,7 @@ msgstr "ha creato la carta"
|
||||
msgid "Critical"
|
||||
msgstr "Critico"
|
||||
|
||||
#: src/views/settings/components/Avatar.tsx:275
|
||||
#: src/views/settings/components/Avatar.tsx:272
|
||||
msgid "Crop your avatar"
|
||||
msgstr "Ritaglia il tuo avatar"
|
||||
|
||||
@@ -661,7 +665,7 @@ msgstr "Documenti"
|
||||
msgid "Documentation"
|
||||
msgstr "Documentazione"
|
||||
|
||||
#: src/views/auth/login/index.tsx:61
|
||||
#: src/views/auth/login/index.tsx:63
|
||||
msgid "Don't have an account? <0><1>Sign up</1></0>"
|
||||
msgstr "Non hai un account? <0><1>Registrati</1></0>"
|
||||
|
||||
@@ -693,11 +697,11 @@ msgstr "Modifica URL dell'area di lavoro"
|
||||
msgid "Editing"
|
||||
msgstr "Modifica"
|
||||
|
||||
#: src/components/AuthForm.tsx:368
|
||||
#: src/components/AuthForm.tsx:372
|
||||
msgid "email"
|
||||
msgstr "email"
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:161
|
||||
#: src/views/members/components/InviteMemberForm.tsx:252
|
||||
msgid "Email"
|
||||
msgstr "Email"
|
||||
|
||||
@@ -713,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:333
|
||||
#: src/components/AuthForm.tsx:337
|
||||
msgid "Enter your email address"
|
||||
msgstr "Inserisci il tuo indirizzo email"
|
||||
|
||||
#: src/components/AuthForm.tsx:321
|
||||
#: src/components/AuthForm.tsx:325
|
||||
msgid "Enter your name"
|
||||
msgstr "Inserisci il tuo nome"
|
||||
|
||||
@@ -725,14 +729,26 @@ msgstr "Inserisci il tuo nome"
|
||||
msgid "Enter your new password"
|
||||
msgstr "Inserisci la tua nuova password"
|
||||
|
||||
#: src/components/AuthForm.tsx:346
|
||||
#: src/components/AuthForm.tsx:350
|
||||
msgid "Enter your password"
|
||||
msgstr "Inserisci la tua password"
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:196
|
||||
msgid "Error"
|
||||
msgstr "Errore"
|
||||
|
||||
#: src/views/settings/components/ChangePasswordConfirmation.tsx:89
|
||||
msgid "Error Changing Password"
|
||||
msgstr "Errore durante il cambio della password"
|
||||
|
||||
#: 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:132
|
||||
msgid "Error deactivating invite link"
|
||||
msgstr "Errore durante la disattivazione del link di invito"
|
||||
|
||||
#: src/views/settings/components/DeleteAccountConfirmation.tsx:39
|
||||
msgid "Error deleting account"
|
||||
msgstr "Errore durante l'eliminazione dell'account"
|
||||
@@ -749,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:71
|
||||
#: src/views/members/components/InviteMemberForm.tsx:77
|
||||
#: 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"
|
||||
|
||||
@@ -758,7 +774,7 @@ msgstr "Errore durante l'invito del membro"
|
||||
msgid "Error updating display name"
|
||||
msgstr "Errore durante l'aggiornamento del nome visualizzato"
|
||||
|
||||
#: src/views/settings/components/Avatar.tsx:80
|
||||
#: src/views/settings/components/Avatar.tsx:77
|
||||
msgid "Error updating profile image"
|
||||
msgstr "Errore durante l'aggiornamento dell'immagine del profilo"
|
||||
|
||||
@@ -774,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:130
|
||||
#: src/views/members/components/InviteMemberForm.tsx:221
|
||||
#: src/views/settings/components/UpgradeToProConfirmation.tsx:41
|
||||
msgid "Error upgrading subscription"
|
||||
msgstr "Errore nell'aggiornamento dell'abbonamento"
|
||||
@@ -783,8 +799,8 @@ msgstr "Errore nell'aggiornamento dell'abbonamento"
|
||||
msgid "Error upgrading to Pro"
|
||||
msgstr "Errore durante l'aggiornamento a Pro"
|
||||
|
||||
#: src/views/settings/components/Avatar.tsx:94
|
||||
#: src/views/settings/components/Avatar.tsx:221
|
||||
#: src/views/settings/components/Avatar.tsx:91
|
||||
#: src/views/settings/components/Avatar.tsx:218
|
||||
msgid "Error uploading profile image"
|
||||
msgstr "Errore durante il caricamento dell'immagine del profilo"
|
||||
|
||||
@@ -800,8 +816,16 @@ msgstr "Tutto ciò di cui hai bisogno, gratis per sempre. Bacheche illimitate, l
|
||||
msgid "Execution"
|
||||
msgstr "Esecuzione"
|
||||
|
||||
#: src/views/invite/index.tsx:41
|
||||
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: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:269
|
||||
#: src/components/AuthForm.tsx:273
|
||||
msgid "Failed to login with {0}. Please try again."
|
||||
msgstr "Accesso con {0} fallito. Riprova."
|
||||
|
||||
@@ -849,7 +873,7 @@ msgstr "Per la sostenibilità a lungo termine, riconosciamo che tutti i buoni pr
|
||||
msgid "Free"
|
||||
msgstr "Gratuito"
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:193
|
||||
#: src/views/members/components/InviteMemberForm.tsx:312
|
||||
#: src/views/members/index.tsx:208
|
||||
msgid "Free Plan"
|
||||
msgstr "Piano gratuito"
|
||||
@@ -866,7 +890,7 @@ msgstr "Tempo pieno"
|
||||
msgid "Fun"
|
||||
msgstr "Divertimento"
|
||||
|
||||
#: src/views/auth/signup/index.tsx:67
|
||||
#: src/views/auth/signup/index.tsx:69
|
||||
#: src/views/home/components/Cta.tsx:61
|
||||
#: src/views/home/components/Header.tsx:102
|
||||
#: src/views/home/components/Header.tsx:141
|
||||
@@ -906,8 +930,13 @@ msgstr "Primi passi"
|
||||
msgid "GitHub"
|
||||
msgstr "GitHub"
|
||||
|
||||
#: src/views/invite/index.tsx:113
|
||||
msgid "Go Home"
|
||||
msgstr "Vai alla home"
|
||||
|
||||
#: src/views/home/components/Header.tsx:96
|
||||
#: src/views/home/components/Header.tsx:133
|
||||
#: src/views/invite/index.tsx:144
|
||||
msgid "Go to app"
|
||||
msgstr "Vai all'app"
|
||||
|
||||
@@ -1006,27 +1035,44 @@ msgstr "Integrazioni"
|
||||
msgid "Interviewing"
|
||||
msgstr "Colloquio"
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:40
|
||||
#: src/views/members/components/InviteMemberForm.tsx:49
|
||||
msgid "Invalid email address"
|
||||
msgstr "Indirizzo email non valido"
|
||||
|
||||
#: src/views/invite/index.tsx:105
|
||||
msgid "Invalid invitation"
|
||||
msgstr "Invito non valido"
|
||||
|
||||
#: src/views/members/index.tsx:221
|
||||
msgid "Invite"
|
||||
msgstr "Invita"
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:208
|
||||
msgid "Invite another"
|
||||
msgstr "Invita un altro"
|
||||
#: src/views/members/components/InviteMemberForm.tsx:190
|
||||
msgid "Invite link copied"
|
||||
msgstr "Link di invito copiato"
|
||||
|
||||
#: 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:233
|
||||
#: src/views/members/components/InviteMemberForm.tsx:350
|
||||
msgid "Invite member"
|
||||
msgstr "Invita membro"
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:196
|
||||
#: 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."
|
||||
|
||||
#: src/views/invite/index.tsx:79
|
||||
#: src/views/invite/index.tsx:129
|
||||
msgid "Join workspace"
|
||||
msgstr "Unisciti allo spazio di lavoro"
|
||||
|
||||
#: src/views/invite/index.tsx:91
|
||||
msgid "Join workspace | kan.bn"
|
||||
msgstr "Unisciti allo spazio di lavoro | kan.bn"
|
||||
|
||||
#: src/views/boards/components/TemplateBoards.tsx:69
|
||||
msgid "Junior"
|
||||
msgstr "Junior"
|
||||
@@ -1099,7 +1145,7 @@ msgstr "Lista"
|
||||
msgid "List name"
|
||||
msgstr "Nome lista"
|
||||
|
||||
#: src/views/auth/login/index.tsx:31
|
||||
#: src/views/auth/login/index.tsx:33
|
||||
msgid "Login | kan.bn"
|
||||
msgstr "Login | kan.bn"
|
||||
|
||||
@@ -1115,7 +1161,7 @@ msgstr "A lungo termine"
|
||||
msgid "Low Priority"
|
||||
msgstr "Bassa priorità"
|
||||
|
||||
#: src/components/AuthForm.tsx:369
|
||||
#: src/components/AuthForm.tsx:373
|
||||
msgid "magic link"
|
||||
msgstr "link magico"
|
||||
|
||||
@@ -1149,7 +1195,7 @@ msgstr "Membri | {0}"
|
||||
msgid "Monthly"
|
||||
msgstr "Mensile"
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:93
|
||||
#: src/views/members/components/InviteMemberForm.tsx:147
|
||||
msgid "monthly billing"
|
||||
msgstr "fatturazione mensile"
|
||||
|
||||
@@ -1261,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:311
|
||||
#: src/components/AuthForm.tsx:315
|
||||
msgid "or"
|
||||
msgstr "o"
|
||||
|
||||
@@ -1318,19 +1364,19 @@ msgstr "Pianificazione"
|
||||
msgid "Please confirm your new password"
|
||||
msgstr "Conferma la tua nuova password"
|
||||
|
||||
#: src/components/AuthForm.tsx:337
|
||||
#: src/components/AuthForm.tsx:341
|
||||
msgid "Please enter a valid email address"
|
||||
msgstr "Inserisci un indirizzo email valido"
|
||||
|
||||
#: src/components/AuthForm.tsx:325
|
||||
#: src/components/AuthForm.tsx:329
|
||||
msgid "Please enter a valid name"
|
||||
msgstr "Inserisci un nome valido"
|
||||
|
||||
#: src/components/AuthForm.tsx:350
|
||||
#: src/components/AuthForm.tsx:354
|
||||
msgid "Please enter a valid password"
|
||||
msgstr "Inserisci una password valida"
|
||||
|
||||
#: src/views/settings/components/Avatar.tsx:95
|
||||
#: src/views/settings/components/Avatar.tsx:92
|
||||
msgid "Please select a file to upload."
|
||||
msgstr "Seleziona un file da caricare."
|
||||
|
||||
@@ -1359,10 +1405,10 @@ 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:78
|
||||
#: src/views/members/components/InviteMemberForm.tsx:131
|
||||
#: src/views/settings/components/Avatar.tsx:81
|
||||
#: src/views/settings/components/Avatar.tsx:222
|
||||
#: 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
|
||||
#: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:46
|
||||
#: src/views/settings/components/UpdateDisplayNameForm.tsx:55
|
||||
@@ -1373,6 +1419,11 @@ 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:118
|
||||
#: src/views/members/components/InviteMemberForm.tsx:133
|
||||
msgid "Please try again later."
|
||||
msgstr "Riprova più tardi."
|
||||
|
||||
#: src/views/home/components/Footer.tsx:50
|
||||
#: src/views/home/components/Header.tsx:15
|
||||
#: src/views/home/components/Pricing.tsx:85
|
||||
@@ -1396,11 +1447,11 @@ msgstr "Privato"
|
||||
msgid "Pro Plan"
|
||||
msgstr "Piano Pro"
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:182
|
||||
#: src/views/members/components/InviteMemberForm.tsx:301
|
||||
msgid "Pro Plan ∞"
|
||||
msgstr "Piano Pro ∞"
|
||||
|
||||
#: src/views/settings/components/Avatar.tsx:67
|
||||
#: src/views/settings/components/Avatar.tsx:64
|
||||
msgid "Profile image updated"
|
||||
msgstr "Immagine del profilo aggiornata"
|
||||
|
||||
@@ -1501,7 +1552,7 @@ msgid "Run on your own infrastructure"
|
||||
msgstr "Esegui sulla tua infrastruttura"
|
||||
|
||||
#: src/views/card/components/Comment.tsx:165
|
||||
#: src/views/settings/components/Avatar.tsx:312
|
||||
#: src/views/settings/components/Avatar.tsx:309
|
||||
msgid "Save"
|
||||
msgstr "Salva"
|
||||
|
||||
@@ -1566,25 +1617,37 @@ 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"
|
||||
msgstr "Accedi"
|
||||
|
||||
#: src/views/auth/signup/index.tsx:32
|
||||
#: src/views/auth/signup/index.tsx:57
|
||||
#: src/views/invite/index.tsx:154
|
||||
msgid "Sign In"
|
||||
msgstr "Accedi"
|
||||
|
||||
#: src/views/invite/index.tsx:162
|
||||
msgid "Sign Up"
|
||||
msgstr "Registrati"
|
||||
|
||||
#: src/views/auth/signup/index.tsx:34
|
||||
#: src/views/auth/signup/index.tsx:59
|
||||
msgid "Sign up | kan.bn"
|
||||
msgstr "Registrati | kan.bn"
|
||||
|
||||
#: src/views/auth/signup/index.tsx:42
|
||||
#: src/views/auth/signup/index.tsx:44
|
||||
msgid "Sign up disabled"
|
||||
msgstr "Registrazione disabilitata"
|
||||
|
||||
#: src/views/auth/signup/index.tsx:45
|
||||
#: src/views/auth/signup/index.tsx:47
|
||||
msgid "Sign up is currently disabled. Please try again later."
|
||||
msgstr "La registrazione è attualmente disabilitata. Riprova più tardi."
|
||||
|
||||
#: src/components/AuthForm.tsx:366
|
||||
#: src/components/AuthForm.tsx:370
|
||||
msgid "Sign up with "
|
||||
msgstr "Registrati con "
|
||||
|
||||
@@ -1608,8 +1671,8 @@ msgstr "Sviluppo software"
|
||||
msgid "Star on Github"
|
||||
msgstr "Metti una stella su Github"
|
||||
|
||||
#: src/components/AuthForm.tsx:203
|
||||
#: src/components/AuthForm.tsx:220
|
||||
#: src/components/AuthForm.tsx:207
|
||||
#: src/components/AuthForm.tsx:224
|
||||
msgid "Success"
|
||||
msgstr "Operazione riuscita"
|
||||
|
||||
@@ -1629,7 +1692,7 @@ msgstr "Sostieni lo sviluppo del progetto"
|
||||
msgid "System"
|
||||
msgstr "Sistema"
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:182
|
||||
#: src/views/members/components/InviteMemberForm.tsx:301
|
||||
#: src/views/members/index.tsx:207
|
||||
msgid "Team Plan"
|
||||
msgstr "Piano Team"
|
||||
@@ -1694,6 +1757,10 @@ msgstr "Questa bacheca è privata o non esiste"
|
||||
msgid "This board URL has already been taken"
|
||||
msgstr "Questo URL della bacheca è già stato utilizzato"
|
||||
|
||||
#: src/views/invite/index.tsx:108
|
||||
msgid "This invitation link is invalid or has expired."
|
||||
msgstr "Questo link di invito non è valido o è scaduto."
|
||||
|
||||
#: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:70
|
||||
msgid "This will result in the permanent deletion of all data associated with this workspace."
|
||||
msgstr "Questo comporterà l'eliminazione permanente di tutti i dati associati a questo spazio di lavoro."
|
||||
@@ -1909,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:224
|
||||
#: src/views/members/components/InviteMemberForm.tsx:341
|
||||
msgid "Upgrade to Team Plan"
|
||||
msgstr "Passa al Piano Team"
|
||||
|
||||
@@ -1941,7 +2008,7 @@ msgstr "Usa template"
|
||||
msgid "User"
|
||||
msgstr "Utente"
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:72
|
||||
#: 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"
|
||||
|
||||
@@ -1985,7 +2052,7 @@ msgstr "Utilizziamo la <0>licenza AGPL-3.0</0>."
|
||||
msgid "We're just getting started. "
|
||||
msgstr "Siamo solo all'inizio. "
|
||||
|
||||
#: src/views/auth/login/index.tsx:41
|
||||
#: src/views/auth/login/index.tsx:43
|
||||
msgid "Welcome back"
|
||||
msgstr "Bentornato"
|
||||
|
||||
@@ -2100,18 +2167,26 @@ 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:221
|
||||
#: src/components/AuthForm.tsx:225
|
||||
msgid "You have been logged in successfully."
|
||||
msgstr "Hai effettuato l'accesso con successo."
|
||||
|
||||
#: src/components/AuthForm.tsx:204
|
||||
#: src/components/AuthForm.tsx:208
|
||||
msgid "You have been signed up successfully."
|
||||
msgstr "Ti sei registrato con successo."
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:186
|
||||
#: 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!"
|
||||
|
||||
#: src/views/invite/index.tsx:134
|
||||
msgid "You've been invited to join a workspace on kan.bn."
|
||||
msgstr "Sei stato invitato a unirti a uno spazio di lavoro su kan.bn."
|
||||
|
||||
#: src/views/invite/index.tsx:135
|
||||
msgid "You've been invited to join a workspace."
|
||||
msgstr "Sei stato invitato a unirti a uno spazio di lavoro."
|
||||
|
||||
#: src/views/settings/components/DeleteAccountConfirmation.tsx:28
|
||||
msgid "Your account has been deleted."
|
||||
msgstr "Il tuo account è stato eliminato."
|
||||
@@ -2128,7 +2203,7 @@ msgstr "Il tuo nome visualizzato è stato aggiornato."
|
||||
msgid "Your password has been changed."
|
||||
msgstr "La tua password è stata modificata."
|
||||
|
||||
#: src/views/settings/components/Avatar.tsx:68
|
||||
#: src/views/settings/components/Avatar.tsx:65
|
||||
msgid "Your profile image has been updated."
|
||||
msgstr "La tua immagine del profilo è stata aggiornata."
|
||||
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -36,12 +36,12 @@ msgstr "{0} labels"
|
||||
msgid "{boardCount, plural, one {Import board (1)} other {Import boards ({boardCount})}}"
|
||||
msgstr "{boardCount, plural, one {Bord importeren (1)} other {Borden importeren ({boardCount})}}"
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:92
|
||||
#: src/views/members/components/InviteMemberForm.tsx:104
|
||||
#: 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:104
|
||||
#: 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:147
|
||||
#: src/views/members/components/InviteMemberForm.tsx:238
|
||||
msgid "Add member"
|
||||
msgstr "Lid toevoegen"
|
||||
|
||||
@@ -136,11 +136,11 @@ 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:187
|
||||
#: 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."
|
||||
|
||||
#: src/views/settings/components/Avatar.tsx:278
|
||||
#: src/views/settings/components/Avatar.tsx:275
|
||||
msgid "Adjust the square crop to fit your avatar."
|
||||
msgstr "Pas de vierkante uitsnede aan zodat je avatar goed past."
|
||||
|
||||
@@ -152,7 +152,7 @@ msgstr "Beheerdersrollen"
|
||||
msgid "All systems operational"
|
||||
msgstr "Alle systemen operationeel"
|
||||
|
||||
#: src/views/auth/signup/index.tsx:86
|
||||
#: src/views/auth/signup/index.tsx:88
|
||||
msgid "Already have an account? <0><1>Sign in</1></0>"
|
||||
msgstr "Heb je al een account? <0><1>Log in</1></0>"
|
||||
|
||||
@@ -164,6 +164,10 @@ 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:290
|
||||
msgid "Anyone with this link can join your workspace"
|
||||
msgstr "Iedereen met deze link kan deelnemen aan je werkruimte"
|
||||
|
||||
#: src/components/SettingsLayout.tsx:51
|
||||
msgid "API"
|
||||
msgstr "API"
|
||||
@@ -246,11 +250,11 @@ msgstr "Backlog"
|
||||
msgid "Basic Kanban"
|
||||
msgstr "Basis kanban"
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:105
|
||||
#: src/views/members/components/InviteMemberForm.tsx:159
|
||||
msgid "billed annually"
|
||||
msgstr "jaarlijks gefactureerd"
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:105
|
||||
#: src/views/members/components/InviteMemberForm.tsx:159
|
||||
msgid "billed monthly"
|
||||
msgstr "maandelijks gefactureerd"
|
||||
|
||||
@@ -342,7 +346,7 @@ msgstr "Bugrapport"
|
||||
#: src/views/card/components/DeleteChecklistConfirmation.tsx:63
|
||||
#: src/views/card/components/DeleteCommentConfirmation.tsx:76
|
||||
#: src/views/members/components/DeleteMemberConfirmation.tsx:55
|
||||
#: src/views/settings/components/Avatar.tsx:309
|
||||
#: src/views/settings/components/Avatar.tsx:306
|
||||
#: src/views/settings/components/ChangePasswordConfirmation.tsx:168
|
||||
#: src/views/settings/components/DeleteAccountConfirmation.tsx:88
|
||||
#: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:98
|
||||
@@ -369,8 +373,8 @@ msgstr "Wachtwoord wijzigen"
|
||||
msgid "Change your language preferences."
|
||||
msgstr "Wijzig je taalvoorkeuren."
|
||||
|
||||
#: src/views/auth/login/index.tsx:41
|
||||
#: src/views/auth/signup/index.tsx:67
|
||||
#: src/views/auth/login/index.tsx:43
|
||||
#: src/views/auth/signup/index.tsx:69
|
||||
msgid "Check your inbox"
|
||||
msgstr "Controleer je inbox"
|
||||
|
||||
@@ -382,8 +386,8 @@ msgstr "Naam checklist"
|
||||
msgid "Clear filters"
|
||||
msgstr "Filters wissen"
|
||||
|
||||
#: src/views/auth/login/index.tsx:46
|
||||
#: src/views/auth/signup/index.tsx:72
|
||||
#: src/views/auth/login/index.tsx:48
|
||||
#: src/views/auth/signup/index.tsx:74
|
||||
msgid "Click on the link we've sent to {magicLinkRecipient} to sign in."
|
||||
msgstr "Klik op de link die we naar {magicLinkRecipient} hebben gestuurd om in te loggen."
|
||||
|
||||
@@ -459,12 +463,12 @@ msgstr "Neem contact op"
|
||||
msgid "Content Creation"
|
||||
msgstr "Content creatie"
|
||||
|
||||
#: src/components/AuthForm.tsx:366
|
||||
#: src/components/AuthForm.tsx:370
|
||||
msgid "Continue with "
|
||||
msgstr "Doorgaan met "
|
||||
|
||||
#. placeholder {0}: key === "oidc" ? oidcProviderName : provider.name
|
||||
#: src/components/AuthForm.tsx:297
|
||||
#: src/components/AuthForm.tsx:301
|
||||
msgid "Continue with {0}"
|
||||
msgstr "Doorgaan met {0}"
|
||||
|
||||
@@ -532,7 +536,7 @@ msgstr "heeft de kaart aangemaakt"
|
||||
msgid "Critical"
|
||||
msgstr "Kritiek"
|
||||
|
||||
#: src/views/settings/components/Avatar.tsx:275
|
||||
#: src/views/settings/components/Avatar.tsx:272
|
||||
msgid "Crop your avatar"
|
||||
msgstr "Snijd je avatar bij"
|
||||
|
||||
@@ -661,7 +665,7 @@ msgstr "Docs"
|
||||
msgid "Documentation"
|
||||
msgstr "Documentatie"
|
||||
|
||||
#: src/views/auth/login/index.tsx:61
|
||||
#: src/views/auth/login/index.tsx:63
|
||||
msgid "Don't have an account? <0><1>Sign up</1></0>"
|
||||
msgstr "Heb je geen account? <0><1>Registreer je</1></0>"
|
||||
|
||||
@@ -693,11 +697,11 @@ msgstr "Werkruimte-URL bewerken"
|
||||
msgid "Editing"
|
||||
msgstr "Bewerken"
|
||||
|
||||
#: src/components/AuthForm.tsx:368
|
||||
#: src/components/AuthForm.tsx:372
|
||||
msgid "email"
|
||||
msgstr "e-mail"
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:161
|
||||
#: src/views/members/components/InviteMemberForm.tsx:252
|
||||
msgid "Email"
|
||||
msgstr "E-mail"
|
||||
|
||||
@@ -713,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:333
|
||||
#: src/components/AuthForm.tsx:337
|
||||
msgid "Enter your email address"
|
||||
msgstr "Voer je e-mailadres in"
|
||||
|
||||
#: src/components/AuthForm.tsx:321
|
||||
#: src/components/AuthForm.tsx:325
|
||||
msgid "Enter your name"
|
||||
msgstr "Voer je naam in"
|
||||
|
||||
@@ -725,14 +729,26 @@ msgstr "Voer je naam in"
|
||||
msgid "Enter your new password"
|
||||
msgstr "Voer je nieuwe wachtwoord in"
|
||||
|
||||
#: src/components/AuthForm.tsx:346
|
||||
#: src/components/AuthForm.tsx:350
|
||||
msgid "Enter your password"
|
||||
msgstr "Voer je wachtwoord in"
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:196
|
||||
msgid "Error"
|
||||
msgstr "Fout"
|
||||
|
||||
#: src/views/settings/components/ChangePasswordConfirmation.tsx:89
|
||||
msgid "Error Changing Password"
|
||||
msgstr "Fout bij wijzigen wachtwoord"
|
||||
|
||||
#: 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:132
|
||||
msgid "Error deactivating invite link"
|
||||
msgstr "Fout bij het deactiveren van uitnodigingslink"
|
||||
|
||||
#: src/views/settings/components/DeleteAccountConfirmation.tsx:39
|
||||
msgid "Error deleting account"
|
||||
msgstr "Fout bij verwijderen account"
|
||||
@@ -749,8 +765,8 @@ msgstr "Fout bij verwijderen werkruimte"
|
||||
msgid "Error disconnecting Trello"
|
||||
msgstr "Fout bij ontkoppelen van Trello"
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:71
|
||||
#: src/views/members/components/InviteMemberForm.tsx:77
|
||||
#: 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"
|
||||
|
||||
@@ -758,7 +774,7 @@ msgstr "Fout bij het uitnodigen van lid"
|
||||
msgid "Error updating display name"
|
||||
msgstr "Fout bij bijwerken weergavenaam"
|
||||
|
||||
#: src/views/settings/components/Avatar.tsx:80
|
||||
#: src/views/settings/components/Avatar.tsx:77
|
||||
msgid "Error updating profile image"
|
||||
msgstr "Fout bij het bijwerken van profielafbeelding"
|
||||
|
||||
@@ -774,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:130
|
||||
#: 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"
|
||||
@@ -783,8 +799,8 @@ msgstr "Fout bij het upgraden van abonnement"
|
||||
msgid "Error upgrading to Pro"
|
||||
msgstr "Fout bij upgraden naar Pro"
|
||||
|
||||
#: src/views/settings/components/Avatar.tsx:94
|
||||
#: src/views/settings/components/Avatar.tsx:221
|
||||
#: src/views/settings/components/Avatar.tsx:91
|
||||
#: src/views/settings/components/Avatar.tsx:218
|
||||
msgid "Error uploading profile image"
|
||||
msgstr "Fout bij het uploaden van profielafbeelding"
|
||||
|
||||
@@ -800,8 +816,16 @@ msgstr "Alles wat je nodig hebt, voor altijd gratis. Onbeperkte borden, onbeperk
|
||||
msgid "Execution"
|
||||
msgstr "Uitvoering"
|
||||
|
||||
#: src/views/invite/index.tsx:41
|
||||
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: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:269
|
||||
#: src/components/AuthForm.tsx:273
|
||||
msgid "Failed to login with {0}. Please try again."
|
||||
msgstr "Inloggen met {0} is mislukt. Probeer het opnieuw."
|
||||
|
||||
@@ -849,7 +873,7 @@ msgstr "Voor duurzaamheid op lange termijn erkennen we dat alle goede open sourc
|
||||
msgid "Free"
|
||||
msgstr "Gratis"
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:193
|
||||
#: src/views/members/components/InviteMemberForm.tsx:312
|
||||
#: src/views/members/index.tsx:208
|
||||
msgid "Free Plan"
|
||||
msgstr "Gratis plan"
|
||||
@@ -866,7 +890,7 @@ msgstr "Fulltime"
|
||||
msgid "Fun"
|
||||
msgstr "Leuk"
|
||||
|
||||
#: src/views/auth/signup/index.tsx:67
|
||||
#: src/views/auth/signup/index.tsx:69
|
||||
#: src/views/home/components/Cta.tsx:61
|
||||
#: src/views/home/components/Header.tsx:102
|
||||
#: src/views/home/components/Header.tsx:141
|
||||
@@ -906,8 +930,13 @@ msgstr "Aan de slag"
|
||||
msgid "GitHub"
|
||||
msgstr "GitHub"
|
||||
|
||||
#: src/views/invite/index.tsx:113
|
||||
msgid "Go Home"
|
||||
msgstr "Naar startpagina"
|
||||
|
||||
#: src/views/home/components/Header.tsx:96
|
||||
#: src/views/home/components/Header.tsx:133
|
||||
#: src/views/invite/index.tsx:144
|
||||
msgid "Go to app"
|
||||
msgstr "Naar de app"
|
||||
|
||||
@@ -1006,27 +1035,44 @@ msgstr "Integraties"
|
||||
msgid "Interviewing"
|
||||
msgstr "Interviewen"
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:40
|
||||
#: src/views/members/components/InviteMemberForm.tsx:49
|
||||
msgid "Invalid email address"
|
||||
msgstr "Ongeldig e-mailadres"
|
||||
|
||||
#: src/views/invite/index.tsx:105
|
||||
msgid "Invalid invitation"
|
||||
msgstr "Ongeldige uitnodiging"
|
||||
|
||||
#: src/views/members/index.tsx:221
|
||||
msgid "Invite"
|
||||
msgstr "Uitnodigen"
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:208
|
||||
msgid "Invite another"
|
||||
msgstr "Nog iemand uitnodigen"
|
||||
#: src/views/members/components/InviteMemberForm.tsx:190
|
||||
msgid "Invite link copied"
|
||||
msgstr "Uitnodigingslink gekopieerd"
|
||||
|
||||
#: 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:233
|
||||
#: src/views/members/components/InviteMemberForm.tsx:350
|
||||
msgid "Invite member"
|
||||
msgstr "Lid uitnodigen"
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:196
|
||||
#: 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."
|
||||
|
||||
#: src/views/invite/index.tsx:79
|
||||
#: src/views/invite/index.tsx:129
|
||||
msgid "Join workspace"
|
||||
msgstr "Deelnemen aan werkruimte"
|
||||
|
||||
#: src/views/invite/index.tsx:91
|
||||
msgid "Join workspace | kan.bn"
|
||||
msgstr "Deelnemen aan werkruimte | kan.bn"
|
||||
|
||||
#: src/views/boards/components/TemplateBoards.tsx:69
|
||||
msgid "Junior"
|
||||
msgstr "Junior"
|
||||
@@ -1099,7 +1145,7 @@ msgstr "Lijst"
|
||||
msgid "List name"
|
||||
msgstr "Lijstnaam"
|
||||
|
||||
#: src/views/auth/login/index.tsx:31
|
||||
#: src/views/auth/login/index.tsx:33
|
||||
msgid "Login | kan.bn"
|
||||
msgstr "Login | kan.bn"
|
||||
|
||||
@@ -1115,7 +1161,7 @@ msgstr "Lange termijn"
|
||||
msgid "Low Priority"
|
||||
msgstr "Lage prioriteit"
|
||||
|
||||
#: src/components/AuthForm.tsx:369
|
||||
#: src/components/AuthForm.tsx:373
|
||||
msgid "magic link"
|
||||
msgstr "magische link"
|
||||
|
||||
@@ -1149,7 +1195,7 @@ msgstr "Leden | {0}"
|
||||
msgid "Monthly"
|
||||
msgstr "Maandelijks"
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:93
|
||||
#: src/views/members/components/InviteMemberForm.tsx:147
|
||||
msgid "monthly billing"
|
||||
msgstr "maandelijkse facturering"
|
||||
|
||||
@@ -1261,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:311
|
||||
#: src/components/AuthForm.tsx:315
|
||||
msgid "or"
|
||||
msgstr "of"
|
||||
|
||||
@@ -1318,19 +1364,19 @@ msgstr "Planning"
|
||||
msgid "Please confirm your new password"
|
||||
msgstr "Bevestig je nieuwe wachtwoord"
|
||||
|
||||
#: src/components/AuthForm.tsx:337
|
||||
#: src/components/AuthForm.tsx:341
|
||||
msgid "Please enter a valid email address"
|
||||
msgstr "Voer een geldig e-mailadres in"
|
||||
|
||||
#: src/components/AuthForm.tsx:325
|
||||
#: src/components/AuthForm.tsx:329
|
||||
msgid "Please enter a valid name"
|
||||
msgstr "Voer een geldige naam in"
|
||||
|
||||
#: src/components/AuthForm.tsx:350
|
||||
#: src/components/AuthForm.tsx:354
|
||||
msgid "Please enter a valid password"
|
||||
msgstr "Voer een geldig wachtwoord in"
|
||||
|
||||
#: src/views/settings/components/Avatar.tsx:95
|
||||
#: src/views/settings/components/Avatar.tsx:92
|
||||
msgid "Please select a file to upload."
|
||||
msgstr "Selecteer een bestand om te uploaden."
|
||||
|
||||
@@ -1359,10 +1405,10 @@ 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:78
|
||||
#: src/views/members/components/InviteMemberForm.tsx:131
|
||||
#: src/views/settings/components/Avatar.tsx:81
|
||||
#: src/views/settings/components/Avatar.tsx:222
|
||||
#: 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
|
||||
#: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:46
|
||||
#: src/views/settings/components/UpdateDisplayNameForm.tsx:55
|
||||
@@ -1373,6 +1419,11 @@ 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:118
|
||||
#: src/views/members/components/InviteMemberForm.tsx:133
|
||||
msgid "Please try again later."
|
||||
msgstr "Probeer het later opnieuw."
|
||||
|
||||
#: src/views/home/components/Footer.tsx:50
|
||||
#: src/views/home/components/Header.tsx:15
|
||||
#: src/views/home/components/Pricing.tsx:85
|
||||
@@ -1396,11 +1447,11 @@ msgstr "Privé"
|
||||
msgid "Pro Plan"
|
||||
msgstr "Pro Plan"
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:182
|
||||
#: src/views/members/components/InviteMemberForm.tsx:301
|
||||
msgid "Pro Plan ∞"
|
||||
msgstr "Pro Plan ∞"
|
||||
|
||||
#: src/views/settings/components/Avatar.tsx:67
|
||||
#: src/views/settings/components/Avatar.tsx:64
|
||||
msgid "Profile image updated"
|
||||
msgstr "Profielafbeelding bijgewerkt"
|
||||
|
||||
@@ -1501,7 +1552,7 @@ msgid "Run on your own infrastructure"
|
||||
msgstr "Draai op je eigen infrastructuur"
|
||||
|
||||
#: src/views/card/components/Comment.tsx:165
|
||||
#: src/views/settings/components/Avatar.tsx:312
|
||||
#: src/views/settings/components/Avatar.tsx:309
|
||||
msgid "Save"
|
||||
msgstr "Opslaan"
|
||||
|
||||
@@ -1566,25 +1617,37 @@ 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"
|
||||
msgstr "Inloggen"
|
||||
|
||||
#: src/views/auth/signup/index.tsx:32
|
||||
#: src/views/auth/signup/index.tsx:57
|
||||
#: src/views/invite/index.tsx:154
|
||||
msgid "Sign In"
|
||||
msgstr "Inloggen"
|
||||
|
||||
#: src/views/invite/index.tsx:162
|
||||
msgid "Sign Up"
|
||||
msgstr "Registreren"
|
||||
|
||||
#: src/views/auth/signup/index.tsx:34
|
||||
#: src/views/auth/signup/index.tsx:59
|
||||
msgid "Sign up | kan.bn"
|
||||
msgstr "Registreren | kan.bn"
|
||||
|
||||
#: src/views/auth/signup/index.tsx:42
|
||||
#: src/views/auth/signup/index.tsx:44
|
||||
msgid "Sign up disabled"
|
||||
msgstr "Registreren uitgeschakeld"
|
||||
|
||||
#: src/views/auth/signup/index.tsx:45
|
||||
#: src/views/auth/signup/index.tsx:47
|
||||
msgid "Sign up is currently disabled. Please try again later."
|
||||
msgstr "Registreren is momenteel uitgeschakeld. Probeer het later opnieuw."
|
||||
|
||||
#: src/components/AuthForm.tsx:366
|
||||
#: src/components/AuthForm.tsx:370
|
||||
msgid "Sign up with "
|
||||
msgstr "Registreren met "
|
||||
|
||||
@@ -1608,8 +1671,8 @@ msgstr "Softwareontwikkeling"
|
||||
msgid "Star on Github"
|
||||
msgstr "Star op Github"
|
||||
|
||||
#: src/components/AuthForm.tsx:203
|
||||
#: src/components/AuthForm.tsx:220
|
||||
#: src/components/AuthForm.tsx:207
|
||||
#: src/components/AuthForm.tsx:224
|
||||
msgid "Success"
|
||||
msgstr "Geslaagd"
|
||||
|
||||
@@ -1629,7 +1692,7 @@ msgstr "Ondersteun de ontwikkeling van het project"
|
||||
msgid "System"
|
||||
msgstr "Systeem"
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:182
|
||||
#: src/views/members/components/InviteMemberForm.tsx:301
|
||||
#: src/views/members/index.tsx:207
|
||||
msgid "Team Plan"
|
||||
msgstr "Teamplan"
|
||||
@@ -1694,6 +1757,10 @@ msgstr "Dit bord is privé of bestaat niet"
|
||||
msgid "This board URL has already been taken"
|
||||
msgstr "Deze board URL is al in gebruik"
|
||||
|
||||
#: src/views/invite/index.tsx:108
|
||||
msgid "This invitation link is invalid or has expired."
|
||||
msgstr "Deze uitnodigingslink is ongeldig of verlopen."
|
||||
|
||||
#: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:70
|
||||
msgid "This will result in the permanent deletion of all data associated with this workspace."
|
||||
msgstr "Dit zal resulteren in het permanent verwijderen van alle gegevens die aan deze werkruimte zijn gekoppeld."
|
||||
@@ -1909,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:224
|
||||
#: src/views/members/components/InviteMemberForm.tsx:341
|
||||
msgid "Upgrade to Team Plan"
|
||||
msgstr "Upgraden naar teamplan"
|
||||
|
||||
@@ -1941,7 +2008,7 @@ msgstr "Sjabloon gebruiken"
|
||||
msgid "User"
|
||||
msgstr "Gebruiker"
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:72
|
||||
#: src/views/members/components/InviteMemberForm.tsx:96
|
||||
msgid "User is already a member of this workspace"
|
||||
msgstr "Gebruiker is al lid van deze werkruimte"
|
||||
|
||||
@@ -1985,7 +2052,7 @@ msgstr "We gebruiken de <0>AGPL-3.0 licentie</0>."
|
||||
msgid "We're just getting started. "
|
||||
msgstr "We zijn nog maar net begonnen. "
|
||||
|
||||
#: src/views/auth/login/index.tsx:41
|
||||
#: src/views/auth/login/index.tsx:43
|
||||
msgid "Welcome back"
|
||||
msgstr "Welkom terug"
|
||||
|
||||
@@ -2100,18 +2167,26 @@ 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:221
|
||||
#: src/components/AuthForm.tsx:225
|
||||
msgid "You have been logged in successfully."
|
||||
msgstr "Je bent succesvol ingelogd."
|
||||
|
||||
#: src/components/AuthForm.tsx:204
|
||||
#: src/components/AuthForm.tsx:208
|
||||
msgid "You have been signed up successfully."
|
||||
msgstr "Je bent succesvol geregistreerd."
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:186
|
||||
#: 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!"
|
||||
|
||||
#: src/views/invite/index.tsx:134
|
||||
msgid "You've been invited to join a workspace on kan.bn."
|
||||
msgstr "Je bent uitgenodigd om deel te nemen aan een werkruimte op kan.bn."
|
||||
|
||||
#: src/views/invite/index.tsx:135
|
||||
msgid "You've been invited to join a workspace."
|
||||
msgstr "Je bent uitgenodigd om deel te nemen aan een werkruimte."
|
||||
|
||||
#: src/views/settings/components/DeleteAccountConfirmation.tsx:28
|
||||
msgid "Your account has been deleted."
|
||||
msgstr "Je account is verwijderd."
|
||||
@@ -2128,7 +2203,7 @@ msgstr "Je weergavenaam is bijgewerkt."
|
||||
msgid "Your password has been changed."
|
||||
msgstr "Je wachtwoord is gewijzigd."
|
||||
|
||||
#: src/views/settings/components/Avatar.tsx:68
|
||||
#: src/views/settings/components/Avatar.tsx:65
|
||||
msgid "Your profile image has been updated."
|
||||
msgstr "Je profielafbeelding is bijgewerkt."
|
||||
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -36,12 +36,12 @@ msgstr "{0} метки"
|
||||
msgid "{boardCount, plural, one {Import board (1)} other {Import boards ({boardCount})}}"
|
||||
msgstr "{boardCount, plural, one {Импортировать доску (1)} other {Импортировать доски ({boardCount})}}"
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:92
|
||||
#: src/views/members/components/InviteMemberForm.tsx:104
|
||||
#: 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:104
|
||||
#: 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:147
|
||||
#: src/views/members/components/InviteMemberForm.tsx:238
|
||||
msgid "Add member"
|
||||
msgstr "Добавить участника"
|
||||
|
||||
@@ -136,11 +136,11 @@ msgstr "добавлен элемент контрольного списка <0
|
||||
msgid "added label <0>{0}</0>"
|
||||
msgstr "добавлена метка <0>{0}</0>"
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:187
|
||||
#: src/views/members/components/InviteMemberForm.tsx:306
|
||||
msgid "Adding a new member will cost an additional {price} ({billingType}) per seat."
|
||||
msgstr "Добавление нового участника будет стоить дополнительно {price} ({billingType}) за место."
|
||||
|
||||
#: src/views/settings/components/Avatar.tsx:278
|
||||
#: src/views/settings/components/Avatar.tsx:275
|
||||
msgid "Adjust the square crop to fit your avatar."
|
||||
msgstr "Настройте квадратное кадрирование, чтобы оно подходило для вашего аватара."
|
||||
|
||||
@@ -152,7 +152,7 @@ msgstr "Роли администратора"
|
||||
msgid "All systems operational"
|
||||
msgstr "Все системы работают нормально"
|
||||
|
||||
#: src/views/auth/signup/index.tsx:86
|
||||
#: src/views/auth/signup/index.tsx:88
|
||||
msgid "Already have an account? <0><1>Sign in</1></0>"
|
||||
msgstr "Уже есть аккаунт? <0><1>Войти</1></0>"
|
||||
|
||||
@@ -164,6 +164,10 @@ msgstr "Произошла ошибка при отключении вашего
|
||||
msgid "An unexpected error occurred. Please try again later."
|
||||
msgstr "Произошла непредвиденная ошибка. Пожалуйста, попробуйте позже."
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:290
|
||||
msgid "Anyone with this link can join your workspace"
|
||||
msgstr "Любой, у кого есть эта ссылка, может присоединиться к вашему рабочему пространству"
|
||||
|
||||
#: src/components/SettingsLayout.tsx:51
|
||||
msgid "API"
|
||||
msgstr "API"
|
||||
@@ -246,11 +250,11 @@ msgstr "Бэклог"
|
||||
msgid "Basic Kanban"
|
||||
msgstr "Базовый Канбан"
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:105
|
||||
#: src/views/members/components/InviteMemberForm.tsx:159
|
||||
msgid "billed annually"
|
||||
msgstr "выставляется счет ежегодно"
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:105
|
||||
#: src/views/members/components/InviteMemberForm.tsx:159
|
||||
msgid "billed monthly"
|
||||
msgstr "выставляется счет ежемесячно"
|
||||
|
||||
@@ -342,7 +346,7 @@ msgstr "Отчет об ошибке"
|
||||
#: src/views/card/components/DeleteChecklistConfirmation.tsx:63
|
||||
#: src/views/card/components/DeleteCommentConfirmation.tsx:76
|
||||
#: src/views/members/components/DeleteMemberConfirmation.tsx:55
|
||||
#: src/views/settings/components/Avatar.tsx:309
|
||||
#: src/views/settings/components/Avatar.tsx:306
|
||||
#: src/views/settings/components/ChangePasswordConfirmation.tsx:168
|
||||
#: src/views/settings/components/DeleteAccountConfirmation.tsx:88
|
||||
#: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:98
|
||||
@@ -369,8 +373,8 @@ msgstr "Изменить пароль"
|
||||
msgid "Change your language preferences."
|
||||
msgstr "Измените настройки языка."
|
||||
|
||||
#: src/views/auth/login/index.tsx:41
|
||||
#: src/views/auth/signup/index.tsx:67
|
||||
#: src/views/auth/login/index.tsx:43
|
||||
#: src/views/auth/signup/index.tsx:69
|
||||
msgid "Check your inbox"
|
||||
msgstr "Проверьте ваш почтовый ящик"
|
||||
|
||||
@@ -382,8 +386,8 @@ msgstr "Название контрольного списка"
|
||||
msgid "Clear filters"
|
||||
msgstr "Очистить фильтры"
|
||||
|
||||
#: src/views/auth/login/index.tsx:46
|
||||
#: src/views/auth/signup/index.tsx:72
|
||||
#: src/views/auth/login/index.tsx:48
|
||||
#: src/views/auth/signup/index.tsx:74
|
||||
msgid "Click on the link we've sent to {magicLinkRecipient} to sign in."
|
||||
msgstr "Нажмите на ссылку, которую мы отправили на {magicLinkRecipient}, чтобы войти."
|
||||
|
||||
@@ -459,12 +463,12 @@ msgstr "Свяжитесь с нами"
|
||||
msgid "Content Creation"
|
||||
msgstr "Создание контента"
|
||||
|
||||
#: src/components/AuthForm.tsx:366
|
||||
#: src/components/AuthForm.tsx:370
|
||||
msgid "Continue with "
|
||||
msgstr "Продолжить с "
|
||||
|
||||
#. placeholder {0}: key === "oidc" ? oidcProviderName : provider.name
|
||||
#: src/components/AuthForm.tsx:297
|
||||
#: src/components/AuthForm.tsx:301
|
||||
msgid "Continue with {0}"
|
||||
msgstr "Продолжить с {0}"
|
||||
|
||||
@@ -532,7 +536,7 @@ msgstr "создал(а) карточку"
|
||||
msgid "Critical"
|
||||
msgstr "Критический"
|
||||
|
||||
#: src/views/settings/components/Avatar.tsx:275
|
||||
#: src/views/settings/components/Avatar.tsx:272
|
||||
msgid "Crop your avatar"
|
||||
msgstr "Обрежьте ваш аватар"
|
||||
|
||||
@@ -661,7 +665,7 @@ msgstr "Документы"
|
||||
msgid "Documentation"
|
||||
msgstr "Документация"
|
||||
|
||||
#: src/views/auth/login/index.tsx:61
|
||||
#: src/views/auth/login/index.tsx:63
|
||||
msgid "Don't have an account? <0><1>Sign up</1></0>"
|
||||
msgstr "Нет аккаунта? <0><1>Зарегистрируйтесь</1></0>"
|
||||
|
||||
@@ -693,11 +697,11 @@ msgstr "Редактировать URL рабочей области"
|
||||
msgid "Editing"
|
||||
msgstr "Редактирование"
|
||||
|
||||
#: src/components/AuthForm.tsx:368
|
||||
#: src/components/AuthForm.tsx:372
|
||||
msgid "email"
|
||||
msgstr "email"
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:161
|
||||
#: src/views/members/components/InviteMemberForm.tsx:252
|
||||
msgid "Email"
|
||||
msgstr "Email"
|
||||
|
||||
@@ -713,11 +717,11 @@ msgstr "Введите ваш текущий пароль"
|
||||
msgid "Enter your current password and choose a new secure password."
|
||||
msgstr "Введите ваш текущий пароль и выберите новый безопасный пароль."
|
||||
|
||||
#: src/components/AuthForm.tsx:333
|
||||
#: src/components/AuthForm.tsx:337
|
||||
msgid "Enter your email address"
|
||||
msgstr "Введите ваш адрес электронной почты"
|
||||
|
||||
#: src/components/AuthForm.tsx:321
|
||||
#: src/components/AuthForm.tsx:325
|
||||
msgid "Enter your name"
|
||||
msgstr "Введите ваше имя"
|
||||
|
||||
@@ -725,14 +729,26 @@ msgstr "Введите ваше имя"
|
||||
msgid "Enter your new password"
|
||||
msgstr "Введите ваш новый пароль"
|
||||
|
||||
#: src/components/AuthForm.tsx:346
|
||||
#: src/components/AuthForm.tsx:350
|
||||
msgid "Enter your password"
|
||||
msgstr "Введите ваш пароль"
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:196
|
||||
msgid "Error"
|
||||
msgstr "Ошибка"
|
||||
|
||||
#: src/views/settings/components/ChangePasswordConfirmation.tsx:89
|
||||
msgid "Error Changing Password"
|
||||
msgstr "Ошибка при изменении пароля"
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:117
|
||||
msgid "Error creating invite link"
|
||||
msgstr "Ошибка при создании ссылки приглашения"
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:132
|
||||
msgid "Error deactivating invite link"
|
||||
msgstr "Ошибка при деактивации ссылки приглашения"
|
||||
|
||||
#: src/views/settings/components/DeleteAccountConfirmation.tsx:39
|
||||
msgid "Error deleting account"
|
||||
msgstr "Ошибка при удалении аккаунта"
|
||||
@@ -749,8 +765,8 @@ msgstr "Ошибка при удалении рабочей области"
|
||||
msgid "Error disconnecting Trello"
|
||||
msgstr "Ошибка при отключении Trello"
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:71
|
||||
#: src/views/members/components/InviteMemberForm.tsx:77
|
||||
#: src/views/members/components/InviteMemberForm.tsx:95
|
||||
#: src/views/members/components/InviteMemberForm.tsx:101
|
||||
msgid "Error inviting member"
|
||||
msgstr "Ошибка при приглашении участника"
|
||||
|
||||
@@ -758,7 +774,7 @@ msgstr "Ошибка при приглашении участника"
|
||||
msgid "Error updating display name"
|
||||
msgstr "Ошибка при обновлении отображаемого имени"
|
||||
|
||||
#: src/views/settings/components/Avatar.tsx:80
|
||||
#: src/views/settings/components/Avatar.tsx:77
|
||||
msgid "Error updating profile image"
|
||||
msgstr "Ошибка при обновлении изображения профиля"
|
||||
|
||||
@@ -774,7 +790,7 @@ msgstr "Ошибка при обновлении имени рабочей об
|
||||
msgid "Error updating workspace URL"
|
||||
msgstr "Ошибка при обновлении URL рабочей области"
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:130
|
||||
#: src/views/members/components/InviteMemberForm.tsx:221
|
||||
#: src/views/settings/components/UpgradeToProConfirmation.tsx:41
|
||||
msgid "Error upgrading subscription"
|
||||
msgstr "Ошибка при обновлении подписки"
|
||||
@@ -783,8 +799,8 @@ msgstr "Ошибка при обновлении подписки"
|
||||
msgid "Error upgrading to Pro"
|
||||
msgstr "Ошибка при обновлении до Pro"
|
||||
|
||||
#: src/views/settings/components/Avatar.tsx:94
|
||||
#: src/views/settings/components/Avatar.tsx:221
|
||||
#: src/views/settings/components/Avatar.tsx:91
|
||||
#: src/views/settings/components/Avatar.tsx:218
|
||||
msgid "Error uploading profile image"
|
||||
msgstr "Ошибка загрузки изображения профиля"
|
||||
|
||||
@@ -800,8 +816,16 @@ msgstr "Все, что вам нужно, бесплатно навсегда.
|
||||
msgid "Execution"
|
||||
msgstr "Выполнение"
|
||||
|
||||
#: src/views/invite/index.tsx:41
|
||||
msgid "Failed to accept invitation. Please try again later, or contact customer support."
|
||||
msgstr "Не удалось принять приглашение. Пожалуйста, попробуйте позже или свяжитесь со службой поддержки."
|
||||
|
||||
#: 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:269
|
||||
#: src/components/AuthForm.tsx:273
|
||||
msgid "Failed to login with {0}. Please try again."
|
||||
msgstr "Не удалось войти с {0}. Пожалуйста, попробуйте снова."
|
||||
|
||||
@@ -849,7 +873,7 @@ msgstr "Для долгосрочной устойчивости мы призн
|
||||
msgid "Free"
|
||||
msgstr "Бесплатно"
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:193
|
||||
#: src/views/members/components/InviteMemberForm.tsx:312
|
||||
#: src/views/members/index.tsx:208
|
||||
msgid "Free Plan"
|
||||
msgstr "Бесплатный план"
|
||||
@@ -866,7 +890,7 @@ msgstr "Полный рабочий день"
|
||||
msgid "Fun"
|
||||
msgstr "Веселье"
|
||||
|
||||
#: src/views/auth/signup/index.tsx:67
|
||||
#: src/views/auth/signup/index.tsx:69
|
||||
#: src/views/home/components/Cta.tsx:61
|
||||
#: src/views/home/components/Header.tsx:102
|
||||
#: src/views/home/components/Header.tsx:141
|
||||
@@ -906,8 +930,13 @@ msgstr "Начало работы"
|
||||
msgid "GitHub"
|
||||
msgstr "GitHub"
|
||||
|
||||
#: src/views/invite/index.tsx:113
|
||||
msgid "Go Home"
|
||||
msgstr "На главную"
|
||||
|
||||
#: src/views/home/components/Header.tsx:96
|
||||
#: src/views/home/components/Header.tsx:133
|
||||
#: src/views/invite/index.tsx:144
|
||||
msgid "Go to app"
|
||||
msgstr "Перейти в приложение"
|
||||
|
||||
@@ -1006,27 +1035,44 @@ msgstr "Интеграции"
|
||||
msgid "Interviewing"
|
||||
msgstr "Собеседование"
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:40
|
||||
#: src/views/members/components/InviteMemberForm.tsx:49
|
||||
msgid "Invalid email address"
|
||||
msgstr "Недействительный адрес электронной почты"
|
||||
|
||||
#: src/views/invite/index.tsx:105
|
||||
msgid "Invalid invitation"
|
||||
msgstr "Недействительное приглашение"
|
||||
|
||||
#: src/views/members/index.tsx:221
|
||||
msgid "Invite"
|
||||
msgstr "Пригласить"
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:208
|
||||
msgid "Invite another"
|
||||
msgstr "Пригласить ещё одного"
|
||||
#: src/views/members/components/InviteMemberForm.tsx:190
|
||||
msgid "Invite link copied"
|
||||
msgstr "Ссылка приглашения скопирована"
|
||||
|
||||
#: 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:233
|
||||
#: src/views/members/components/InviteMemberForm.tsx:350
|
||||
msgid "Invite member"
|
||||
msgstr "Пригласить участника"
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:196
|
||||
#: src/views/members/components/InviteMemberForm.tsx:315
|
||||
msgid "Inviting members requires a Team Plan. You'll be redirected to upgrade your workspace."
|
||||
msgstr "Для приглашения участников необходим командный план. Вы будете перенаправлены для обновления вашего рабочего пространства."
|
||||
|
||||
#: src/views/invite/index.tsx:79
|
||||
#: src/views/invite/index.tsx:129
|
||||
msgid "Join workspace"
|
||||
msgstr "Присоединиться к рабочему пространству"
|
||||
|
||||
#: src/views/invite/index.tsx:91
|
||||
msgid "Join workspace | kan.bn"
|
||||
msgstr "Присоединиться к рабочему пространству | kan.bn"
|
||||
|
||||
#: src/views/boards/components/TemplateBoards.tsx:69
|
||||
msgid "Junior"
|
||||
msgstr "Младший"
|
||||
@@ -1099,7 +1145,7 @@ msgstr "Список"
|
||||
msgid "List name"
|
||||
msgstr "Название списка"
|
||||
|
||||
#: src/views/auth/login/index.tsx:31
|
||||
#: src/views/auth/login/index.tsx:33
|
||||
msgid "Login | kan.bn"
|
||||
msgstr "Вход | kan.bn"
|
||||
|
||||
@@ -1115,7 +1161,7 @@ msgstr "Долгосрочный"
|
||||
msgid "Low Priority"
|
||||
msgstr "Низкий приоритет"
|
||||
|
||||
#: src/components/AuthForm.tsx:369
|
||||
#: src/components/AuthForm.tsx:373
|
||||
msgid "magic link"
|
||||
msgstr "магическая ссылка"
|
||||
|
||||
@@ -1149,7 +1195,7 @@ msgstr "Участники | {0}"
|
||||
msgid "Monthly"
|
||||
msgstr "Ежемесячно"
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:93
|
||||
#: src/views/members/components/InviteMemberForm.tsx:147
|
||||
msgid "monthly billing"
|
||||
msgstr "ежемесячная оплата"
|
||||
|
||||
@@ -1261,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:311
|
||||
#: src/components/AuthForm.tsx:315
|
||||
msgid "or"
|
||||
msgstr "или"
|
||||
|
||||
@@ -1318,19 +1364,19 @@ msgstr "Планирование"
|
||||
msgid "Please confirm your new password"
|
||||
msgstr "Пожалуйста, подтвердите новый пароль"
|
||||
|
||||
#: src/components/AuthForm.tsx:337
|
||||
#: src/components/AuthForm.tsx:341
|
||||
msgid "Please enter a valid email address"
|
||||
msgstr "Пожалуйста, введите действительный адрес электронной почты"
|
||||
|
||||
#: src/components/AuthForm.tsx:325
|
||||
#: src/components/AuthForm.tsx:329
|
||||
msgid "Please enter a valid name"
|
||||
msgstr "Пожалуйста, введите действительное имя"
|
||||
|
||||
#: src/components/AuthForm.tsx:350
|
||||
#: src/components/AuthForm.tsx:354
|
||||
msgid "Please enter a valid password"
|
||||
msgstr "Пожалуйста, введите действительный пароль"
|
||||
|
||||
#: src/views/settings/components/Avatar.tsx:95
|
||||
#: src/views/settings/components/Avatar.tsx:92
|
||||
msgid "Please select a file to upload."
|
||||
msgstr "Пожалуйста, выберите файл для загрузки."
|
||||
|
||||
@@ -1359,10 +1405,10 @@ 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:78
|
||||
#: src/views/members/components/InviteMemberForm.tsx:131
|
||||
#: src/views/settings/components/Avatar.tsx:81
|
||||
#: src/views/settings/components/Avatar.tsx:222
|
||||
#: 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
|
||||
#: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:46
|
||||
#: src/views/settings/components/UpdateDisplayNameForm.tsx:55
|
||||
@@ -1373,6 +1419,11 @@ msgstr "Пожалуйста, выберите файл для загрузки.
|
||||
msgid "Please try again later, or contact customer support."
|
||||
msgstr "Пожалуйста, попробуйте позже или свяжитесь со службой поддержки."
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:118
|
||||
#: src/views/members/components/InviteMemberForm.tsx:133
|
||||
msgid "Please try again later."
|
||||
msgstr "Пожалуйста, попробуйте позже."
|
||||
|
||||
#: src/views/home/components/Footer.tsx:50
|
||||
#: src/views/home/components/Header.tsx:15
|
||||
#: src/views/home/components/Pricing.tsx:85
|
||||
@@ -1396,11 +1447,11 @@ msgstr "Личное"
|
||||
msgid "Pro Plan"
|
||||
msgstr "Профессиональный план"
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:182
|
||||
#: src/views/members/components/InviteMemberForm.tsx:301
|
||||
msgid "Pro Plan ∞"
|
||||
msgstr "Профессиональный план ∞"
|
||||
|
||||
#: src/views/settings/components/Avatar.tsx:67
|
||||
#: src/views/settings/components/Avatar.tsx:64
|
||||
msgid "Profile image updated"
|
||||
msgstr "Изображение профиля обновлено"
|
||||
|
||||
@@ -1501,7 +1552,7 @@ msgid "Run on your own infrastructure"
|
||||
msgstr "Запустите на своей инфраструктуре"
|
||||
|
||||
#: src/views/card/components/Comment.tsx:165
|
||||
#: src/views/settings/components/Avatar.tsx:312
|
||||
#: src/views/settings/components/Avatar.tsx:309
|
||||
msgid "Save"
|
||||
msgstr "Сохранить"
|
||||
|
||||
@@ -1566,25 +1617,37 @@ 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"
|
||||
msgstr "Войти"
|
||||
|
||||
#: src/views/auth/signup/index.tsx:32
|
||||
#: src/views/auth/signup/index.tsx:57
|
||||
#: src/views/invite/index.tsx:154
|
||||
msgid "Sign In"
|
||||
msgstr "Войти"
|
||||
|
||||
#: src/views/invite/index.tsx:162
|
||||
msgid "Sign Up"
|
||||
msgstr "Зарегистрироваться"
|
||||
|
||||
#: src/views/auth/signup/index.tsx:34
|
||||
#: src/views/auth/signup/index.tsx:59
|
||||
msgid "Sign up | kan.bn"
|
||||
msgstr "Регистрация | kan.bn"
|
||||
|
||||
#: src/views/auth/signup/index.tsx:42
|
||||
#: src/views/auth/signup/index.tsx:44
|
||||
msgid "Sign up disabled"
|
||||
msgstr "Регистрация отключена"
|
||||
|
||||
#: src/views/auth/signup/index.tsx:45
|
||||
#: src/views/auth/signup/index.tsx:47
|
||||
msgid "Sign up is currently disabled. Please try again later."
|
||||
msgstr "Регистрация в настоящее время отключена. Пожалуйста, попробуйте позже."
|
||||
|
||||
#: src/components/AuthForm.tsx:366
|
||||
#: src/components/AuthForm.tsx:370
|
||||
msgid "Sign up with "
|
||||
msgstr "Зарегистрироваться с "
|
||||
|
||||
@@ -1608,8 +1671,8 @@ msgstr "Разработка программного обеспечения"
|
||||
msgid "Star on Github"
|
||||
msgstr "Поставить звезду на Github"
|
||||
|
||||
#: src/components/AuthForm.tsx:203
|
||||
#: src/components/AuthForm.tsx:220
|
||||
#: src/components/AuthForm.tsx:207
|
||||
#: src/components/AuthForm.tsx:224
|
||||
msgid "Success"
|
||||
msgstr "Успех"
|
||||
|
||||
@@ -1629,7 +1692,7 @@ msgstr "Поддержите развитие проекта"
|
||||
msgid "System"
|
||||
msgstr "Система"
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:182
|
||||
#: src/views/members/components/InviteMemberForm.tsx:301
|
||||
#: src/views/members/index.tsx:207
|
||||
msgid "Team Plan"
|
||||
msgstr "Командный план"
|
||||
@@ -1694,6 +1757,10 @@ msgstr "Эта доска является приватной или не сущ
|
||||
msgid "This board URL has already been taken"
|
||||
msgstr "Этот URL доски уже занят."
|
||||
|
||||
#: src/views/invite/index.tsx:108
|
||||
msgid "This invitation link is invalid or has expired."
|
||||
msgstr "Эта ссылка приглашения недействительна или истек срок её действия."
|
||||
|
||||
#: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:70
|
||||
msgid "This will result in the permanent deletion of all data associated with this workspace."
|
||||
msgstr "Это приведет к безвозвратному удалению всех данных, связанных с этим рабочим пространством."
|
||||
@@ -1909,7 +1976,7 @@ msgstr "Обновить до Pro"
|
||||
msgid "Upgrade to Pro ($29/month)"
|
||||
msgstr "Обновить до Pro ($29/месяц)"
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:224
|
||||
#: src/views/members/components/InviteMemberForm.tsx:341
|
||||
msgid "Upgrade to Team Plan"
|
||||
msgstr "Обновить до командного плана"
|
||||
|
||||
@@ -1941,7 +2008,7 @@ msgstr "Использовать шаблон"
|
||||
msgid "User"
|
||||
msgstr "Пользователь"
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:72
|
||||
#: src/views/members/components/InviteMemberForm.tsx:96
|
||||
msgid "User is already a member of this workspace"
|
||||
msgstr "Пользователь уже является участником этого рабочего пространства"
|
||||
|
||||
@@ -1985,7 +2052,7 @@ msgstr "Мы используем лицензию <0>AGPL-3.0</0>."
|
||||
msgid "We're just getting started. "
|
||||
msgstr "Мы только начинаем. "
|
||||
|
||||
#: src/views/auth/login/index.tsx:41
|
||||
#: src/views/auth/login/index.tsx:43
|
||||
msgid "Welcome back"
|
||||
msgstr "С возвращением"
|
||||
|
||||
@@ -2100,18 +2167,26 @@ msgstr "Вы можете пригласить участников команд
|
||||
msgid "You can self-host by following the instructions in our <0>repo</0>."
|
||||
msgstr "Вы можете развернуть собственный хостинг, следуя инструкциям в нашем <0>репозитории</0>."
|
||||
|
||||
#: src/components/AuthForm.tsx:221
|
||||
#: src/components/AuthForm.tsx:225
|
||||
msgid "You have been logged in successfully."
|
||||
msgstr "Вы успешно вошли в систему."
|
||||
|
||||
#: src/components/AuthForm.tsx:204
|
||||
#: src/components/AuthForm.tsx:208
|
||||
msgid "You have been signed up successfully."
|
||||
msgstr "Вы успешно зарегистрировались."
|
||||
|
||||
#: src/views/members/components/InviteMemberForm.tsx:186
|
||||
#: 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 "В вашем профессиональном плане неограниченное количество мест. За новых участников дополнительная плата не взимается!"
|
||||
|
||||
#: src/views/invite/index.tsx:134
|
||||
msgid "You've been invited to join a workspace on kan.bn."
|
||||
msgstr "Вас пригласили присоединиться к рабочему пространству на kan.bn."
|
||||
|
||||
#: src/views/invite/index.tsx:135
|
||||
msgid "You've been invited to join a workspace."
|
||||
msgstr "Вас пригласили присоединиться к рабочему пространству."
|
||||
|
||||
#: src/views/settings/components/DeleteAccountConfirmation.tsx:28
|
||||
msgid "Your account has been deleted."
|
||||
msgstr "Ваш аккаунт был удалён."
|
||||
@@ -2128,7 +2203,7 @@ msgstr "Ваше отображаемое имя было обновлено."
|
||||
msgid "Your password has been changed."
|
||||
msgstr "Ваш пароль был изменён."
|
||||
|
||||
#: src/views/settings/components/Avatar.tsx:68
|
||||
#: src/views/settings/components/Avatar.tsx:65
|
||||
msgid "Your profile image has been updated."
|
||||
msgstr "Ваше изображение профиля было обновлено."
|
||||
|
||||
|
||||
File diff suppressed because one or more lines are too long
5
apps/web/src/pages/invite/[code].tsx
Normal file
5
apps/web/src/pages/invite/[code].tsx
Normal file
@@ -0,0 +1,5 @@
|
||||
import InviteView from "~/views/invite";
|
||||
|
||||
export default function InvitePage() {
|
||||
return <InviteView />;
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
import type { ReactNode } from "react";
|
||||
import { useRouter } from "next/navigation";
|
||||
import { useRouter, useSearchParams } from "next/navigation";
|
||||
import React, { createContext, useContext, useEffect, useState } from "react";
|
||||
|
||||
import { api } from "~/utils/api";
|
||||
@@ -46,6 +46,8 @@ export const WorkspaceProvider: React.FC<{ children: ReactNode }> = ({
|
||||
);
|
||||
const [hasLoaded, setHasLoaded] = useState(false);
|
||||
|
||||
const workspacePublicId = useSearchParams().get("workspacePublicId");
|
||||
|
||||
const { data, isLoading } = api.workspace.all.useQuery();
|
||||
const utils = api.useUtils();
|
||||
|
||||
@@ -67,7 +69,7 @@ export const WorkspaceProvider: React.FC<{ children: ReactNode }> = ({
|
||||
}
|
||||
|
||||
const storedWorkspaceId: string | null =
|
||||
localStorage.getItem("workspacePublicId");
|
||||
workspacePublicId ?? localStorage.getItem("workspacePublicId");
|
||||
|
||||
if (data.length) {
|
||||
const workspaces = data.map(({ workspace, role }) => ({
|
||||
@@ -99,6 +101,11 @@ export const WorkspaceProvider: React.FC<{ children: ReactNode }> = ({
|
||||
description: selectedWorkspace.workspace.description,
|
||||
role: selectedWorkspace.role,
|
||||
});
|
||||
|
||||
if (workspacePublicId) {
|
||||
router.push(`/boards`);
|
||||
localStorage.setItem("workspacePublicId", workspacePublicId);
|
||||
}
|
||||
} else {
|
||||
const primaryWorkspace = data[0]?.workspace;
|
||||
const primaryWorkspaceRole = data[0]?.role;
|
||||
@@ -114,7 +121,7 @@ export const WorkspaceProvider: React.FC<{ children: ReactNode }> = ({
|
||||
role: primaryWorkspaceRole,
|
||||
});
|
||||
}
|
||||
}, [data, isLoading]);
|
||||
}, [data, isLoading, workspacePublicId, router]);
|
||||
|
||||
return (
|
||||
<WorkspaceContext.Provider
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import Link from "next/link";
|
||||
import { useRouter } from "next/navigation";
|
||||
import { useRouter, useSearchParams } from "next/navigation";
|
||||
import { t } from "@lingui/core/macro";
|
||||
import { Trans } from "@lingui/react/macro";
|
||||
import { env } from "next-runtime-env";
|
||||
@@ -17,6 +17,8 @@ export default function LoginPage() {
|
||||
const [isMagicLinkSent, setIsMagicLinkSent] = useState<boolean>(false);
|
||||
const [magicLinkRecipient, setMagicLinkRecipient] = useState<string>("");
|
||||
|
||||
const redirect = useSearchParams().get("next");
|
||||
|
||||
const handleMagicLinkSent = (value: boolean, recipient: string) => {
|
||||
setIsMagicLinkSent(value);
|
||||
setMagicLinkRecipient(recipient);
|
||||
@@ -61,7 +63,11 @@ export default function LoginPage() {
|
||||
<Trans>
|
||||
Don't have an account?{" "}
|
||||
<span className="underline">
|
||||
<Link href="/signup">Sign up</Link>
|
||||
<Link
|
||||
href={redirect ? `/signup?next=${redirect}` : "/signup"}
|
||||
>
|
||||
Sign up
|
||||
</Link>
|
||||
</span>
|
||||
</Trans>
|
||||
</p>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import Link from "next/link";
|
||||
import { useRouter } from "next/navigation";
|
||||
import { useRouter, useSearchParams } from "next/navigation";
|
||||
import { t } from "@lingui/core/macro";
|
||||
import { Trans } from "@lingui/react/macro";
|
||||
import { env } from "next-runtime-env";
|
||||
@@ -17,6 +17,8 @@ export default function SignUpPage() {
|
||||
const [isMagicLinkSent, setIsMagicLinkSent] = useState<boolean>(false);
|
||||
const [magicLinkRecipient, setMagicLinkRecipient] = useState<string>("");
|
||||
|
||||
const redirect = useSearchParams().get("next");
|
||||
|
||||
const { data } = authClient.useSession();
|
||||
|
||||
if (data?.user.id) router.push("/boards");
|
||||
@@ -86,7 +88,9 @@ export default function SignUpPage() {
|
||||
<Trans>
|
||||
Already have an account?{" "}
|
||||
<span className="underline">
|
||||
<Link href="/login">Sign in</Link>
|
||||
<Link href={redirect ? `/login?next=${redirect}` : "/login"}>
|
||||
Sign in
|
||||
</Link>
|
||||
</span>
|
||||
</Trans>
|
||||
</p>
|
||||
|
||||
171
apps/web/src/views/invite/index.tsx
Normal file
171
apps/web/src/views/invite/index.tsx
Normal file
@@ -0,0 +1,171 @@
|
||||
import { useRouter } from "next/router";
|
||||
import { t } from "@lingui/core/macro";
|
||||
import { env } from "next-runtime-env";
|
||||
import { useEffect, useState } from "react";
|
||||
|
||||
import { authClient } from "@kan/auth/client";
|
||||
|
||||
import Button from "~/components/Button";
|
||||
import LoadingSpinner from "~/components/LoadingSpinner";
|
||||
import { PageHead } from "~/components/PageHead";
|
||||
import PatternedBackground from "~/components/PatternedBackground";
|
||||
import { api } from "~/utils/api";
|
||||
|
||||
export default function InvitePage() {
|
||||
const router = useRouter();
|
||||
const { code } = router.query;
|
||||
const [isProcessing, setIsProcessing] = useState(false);
|
||||
const [error, setError] = useState<string | null>(null);
|
||||
const { data: session, isPending: isSessionLoading } =
|
||||
authClient.useSession();
|
||||
|
||||
const isCloudEnv = env("NEXT_PUBLIC_KAN_ENV") === "cloud";
|
||||
|
||||
const inviteCode = Array.isArray(code) ? code[0] : code;
|
||||
|
||||
const acceptInviteMutation = api.member.acceptInviteLink.useMutation({
|
||||
onSuccess: (result) => {
|
||||
if (result.success) {
|
||||
return router.push(
|
||||
`/boards?workspacePublicId=${result.workspacePublicId}`,
|
||||
);
|
||||
}
|
||||
},
|
||||
onError: (error) => {
|
||||
if (error.data?.code === "CONFLICT") {
|
||||
return router.push(`/boards`);
|
||||
}
|
||||
|
||||
setError(
|
||||
error.message ||
|
||||
t`Failed to accept invitation. Please try again later, or contact customer support.`,
|
||||
);
|
||||
setIsProcessing(false);
|
||||
},
|
||||
});
|
||||
|
||||
const {
|
||||
data: inviteInfo,
|
||||
isLoading: isInviteInfoLoading,
|
||||
isError: isInviteInfoError,
|
||||
} = api.member.getInviteByCode.useQuery(
|
||||
{ inviteCode: inviteCode ?? "" },
|
||||
{
|
||||
enabled: !!inviteCode,
|
||||
retry: false,
|
||||
},
|
||||
);
|
||||
|
||||
// Auto accept invite if user is logged in
|
||||
useEffect(() => {
|
||||
if (session?.user.id && inviteCode && inviteInfo && !error) {
|
||||
setIsProcessing(true);
|
||||
setError(null);
|
||||
|
||||
acceptInviteMutation.mutate({
|
||||
inviteCode,
|
||||
});
|
||||
}
|
||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||
}, [session?.user.id, inviteCode, inviteInfo, error]);
|
||||
|
||||
if (
|
||||
!isInviteInfoError &&
|
||||
!error &&
|
||||
(session?.user.id || isInviteInfoLoading || isSessionLoading)
|
||||
) {
|
||||
return (
|
||||
<>
|
||||
<PageHead title={t`Join workspace`} />
|
||||
<PatternedBackground />
|
||||
<div className="flex min-h-screen items-center justify-center">
|
||||
<LoadingSpinner size="lg" />
|
||||
</div>
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
const PageWrapper = ({ children }: { children: React.ReactNode }) => {
|
||||
return (
|
||||
<>
|
||||
<PageHead title={t`Join workspace | kan.bn`} />
|
||||
{children}
|
||||
</>
|
||||
);
|
||||
};
|
||||
|
||||
if (isInviteInfoError || (!isInviteInfoLoading && !inviteInfo)) {
|
||||
return (
|
||||
<PageWrapper>
|
||||
<div className="relative flex min-h-screen items-center justify-center px-4 py-12 sm:px-6 lg:px-8">
|
||||
<PatternedBackground />
|
||||
<div className="z-10 w-full max-w-md space-y-8">
|
||||
<div>
|
||||
<h2 className="mt-6 text-center text-3xl font-bold tracking-tight text-light-1000 dark:text-dark-1000">
|
||||
{t`Invalid invitation`}
|
||||
</h2>
|
||||
<p className="mt-4 text-center text-sm text-light-900 dark:text-dark-800">
|
||||
{t`This invitation link is invalid or has expired.`}
|
||||
</p>
|
||||
</div>
|
||||
<div className="text-center">
|
||||
<Button href="/" variant="primary">
|
||||
{t`Go Home`}
|
||||
</Button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</PageWrapper>
|
||||
);
|
||||
}
|
||||
|
||||
return (
|
||||
<PageWrapper>
|
||||
<div className="relative flex min-h-screen items-center justify-center px-4 py-12 sm:px-6 lg:px-8">
|
||||
<PatternedBackground />
|
||||
<div className="z-10 w-full max-w-[400px] space-y-8">
|
||||
<div>
|
||||
<h2 className="mt-6 text-center text-3xl font-bold tracking-tight text-light-1000 dark:text-dark-1000">
|
||||
{t`Join workspace`}
|
||||
</h2>
|
||||
{!error ? (
|
||||
<p className="mt-4 text-center text-sm text-light-900 dark:text-dark-800">
|
||||
{isCloudEnv
|
||||
? t`You've been invited to join a workspace on kan.bn.`
|
||||
: t`You've been invited to join a workspace.`}
|
||||
</p>
|
||||
) : (
|
||||
<p className="mt-4 text-center text-sm text-red-500">{error}</p>
|
||||
)}
|
||||
</div>
|
||||
<div className="flex justify-center gap-2">
|
||||
{session?.user.id ? (
|
||||
<Button href={`/boards`} variant="primary" size="md">
|
||||
{t`Go to app`}
|
||||
</Button>
|
||||
) : (
|
||||
<>
|
||||
<Button
|
||||
href={`/login?next=/invite/${inviteCode}`}
|
||||
disabled={isProcessing}
|
||||
variant="primary"
|
||||
size="md"
|
||||
>
|
||||
{t`Sign In`}
|
||||
</Button>
|
||||
<Button
|
||||
href={`/signup?next=/invite/${inviteCode}`}
|
||||
disabled={isProcessing}
|
||||
variant="primary"
|
||||
size="md"
|
||||
>
|
||||
{t`Sign Up`}
|
||||
</Button>
|
||||
</>
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</PageWrapper>
|
||||
);
|
||||
}
|
||||
@@ -3,7 +3,12 @@ import { t } from "@lingui/core/macro";
|
||||
import { env } from "next-runtime-env";
|
||||
import { useEffect, useState } from "react";
|
||||
import { useForm } from "react-hook-form";
|
||||
import { HiXMark } from "react-icons/hi2";
|
||||
import {
|
||||
HiInformationCircle,
|
||||
HiMiniCheck,
|
||||
HiOutlineDocumentDuplicate,
|
||||
HiXMark,
|
||||
} from "react-icons/hi2";
|
||||
import { z } from "zod";
|
||||
|
||||
import type { InviteMemberInput } from "@kan/api/types";
|
||||
@@ -31,7 +36,11 @@ export function InviteMemberForm({
|
||||
userId: string | undefined;
|
||||
}) {
|
||||
const utils = api.useUtils();
|
||||
const [isCreateAnotherEnabled, setIsCreateAnotherEnabled] = useState(false);
|
||||
const [isShareInviteLinkEnabled, setIsShareInviteLinkEnabled] =
|
||||
useState(false);
|
||||
const [inviteLink, setInviteLink] = useState<string>("");
|
||||
const [isLoadingInviteLink, setIsLoadingInviteLink] = useState(false);
|
||||
const [copied, setCopied] = useState(false);
|
||||
const { closeModal } = useModal();
|
||||
const { workspace } = useWorkspace();
|
||||
const { showPopup } = usePopup();
|
||||
@@ -56,6 +65,21 @@ export function InviteMemberForm({
|
||||
|
||||
const refetchBoards = () => utils.board.all.refetch();
|
||||
|
||||
// Fetch active invite link on component mount
|
||||
const { data: activeInviteLink, refetch: refetchInviteLink } =
|
||||
api.member.getActiveInviteLink.useQuery(
|
||||
{ workspacePublicId: workspace.publicId || "" },
|
||||
{ enabled: !!workspace.publicId },
|
||||
);
|
||||
|
||||
// Set initial state based on active invite link
|
||||
useEffect(() => {
|
||||
if (activeInviteLink) {
|
||||
setIsShareInviteLinkEnabled(activeInviteLink.isActive);
|
||||
setInviteLink(activeInviteLink.inviteLink || "");
|
||||
}
|
||||
}, [activeInviteLink]);
|
||||
|
||||
const inviteMember = api.member.invite.useMutation({
|
||||
onSuccess: async () => {
|
||||
closeModal();
|
||||
@@ -64,7 +88,7 @@ export function InviteMemberForm({
|
||||
},
|
||||
onError: (error) => {
|
||||
reset();
|
||||
if (!isCreateAnotherEnabled) closeModal();
|
||||
if (!isShareInviteLinkEnabled) closeModal();
|
||||
|
||||
if (error.data?.code === "CONFLICT") {
|
||||
showPopup({
|
||||
@@ -82,6 +106,36 @@ export function InviteMemberForm({
|
||||
},
|
||||
});
|
||||
|
||||
const createInviteLink = api.member.createInviteLink.useMutation({
|
||||
onSuccess: (data) => {
|
||||
setInviteLink(data.inviteLink);
|
||||
setIsLoadingInviteLink(false);
|
||||
},
|
||||
onError: () => {
|
||||
setIsLoadingInviteLink(false);
|
||||
showPopup({
|
||||
header: t`Error creating invite link`,
|
||||
message: t`Please try again later.`,
|
||||
icon: "error",
|
||||
});
|
||||
},
|
||||
});
|
||||
|
||||
const deactivateInviteLink = api.member.deactivateInviteLink.useMutation({
|
||||
onSuccess: () => {
|
||||
setInviteLink("");
|
||||
setIsLoadingInviteLink(false);
|
||||
},
|
||||
onError: () => {
|
||||
setIsLoadingInviteLink(false);
|
||||
showPopup({
|
||||
header: t`Error deactivating invite link`,
|
||||
message: t`Please try again later.`,
|
||||
icon: "error",
|
||||
});
|
||||
},
|
||||
});
|
||||
|
||||
const teamSubscription = getSubscriptionByPlan(subscriptions, "team");
|
||||
const proSubscription = getSubscriptionByPlan(subscriptions, "pro");
|
||||
|
||||
@@ -109,6 +163,43 @@ export function InviteMemberForm({
|
||||
inviteMember.mutate(member);
|
||||
};
|
||||
|
||||
const handleInviteLinkToggle = async () => {
|
||||
setIsLoadingInviteLink(true);
|
||||
|
||||
if (isShareInviteLinkEnabled && workspace.publicId) {
|
||||
// Deactivate invite link
|
||||
await deactivateInviteLink.mutateAsync({
|
||||
workspacePublicId: workspace.publicId,
|
||||
});
|
||||
setIsShareInviteLinkEnabled(false);
|
||||
} else {
|
||||
// Create new invite link
|
||||
await createInviteLink.mutateAsync({
|
||||
workspacePublicId: workspace.publicId,
|
||||
});
|
||||
setIsShareInviteLinkEnabled(true);
|
||||
}
|
||||
};
|
||||
|
||||
const copyToClipboard = async () => {
|
||||
try {
|
||||
await navigator.clipboard.writeText(inviteLink);
|
||||
setCopied(true);
|
||||
setTimeout(() => setCopied(false), 2000);
|
||||
showPopup({
|
||||
header: t`Invite link copied`,
|
||||
message: t`Invite link copied to clipboard`,
|
||||
icon: "success",
|
||||
});
|
||||
} catch (error) {
|
||||
showPopup({
|
||||
header: t`Error`,
|
||||
message: t`Failed to copy invite link`,
|
||||
icon: "error",
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
const handleUpgrade = async () => {
|
||||
const { data, error } = await authClient.subscription.upgrade({
|
||||
plan: "team",
|
||||
@@ -173,6 +264,34 @@ export function InviteMemberForm({
|
||||
}}
|
||||
errorMessage={errors.email?.message}
|
||||
/>
|
||||
{isShareInviteLinkEnabled && inviteLink && (
|
||||
<div className="my-4">
|
||||
<div className="relative">
|
||||
<Input
|
||||
value={inviteLink}
|
||||
className="pr-10 text-sm text-light-900 dark:text-dark-900"
|
||||
readOnly
|
||||
/>
|
||||
<button
|
||||
type="button"
|
||||
className="absolute inset-y-0 right-0 flex items-center pr-3 text-light-900 hover:text-light-950 dark:text-dark-900 dark:hover:text-dark-950"
|
||||
onClick={copyToClipboard}
|
||||
>
|
||||
{copied ? (
|
||||
<HiMiniCheck className="h-5 w-5 text-green-600" />
|
||||
) : (
|
||||
<HiOutlineDocumentDuplicate className="h-5 w-5" />
|
||||
)}
|
||||
</button>
|
||||
</div>
|
||||
<div className="mt-2 flex items-start gap-1">
|
||||
<HiInformationCircle className="mt-0.5 h-4 w-4 text-dark-900" />
|
||||
<p className="text-xs text-gray-500 dark:text-dark-900">
|
||||
{t`Anyone with this link can join your workspace`}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
)}
|
||||
|
||||
{env("NEXT_PUBLIC_KAN_ENV") === "cloud" && (
|
||||
<div className="mt-3 rounded-md bg-light-100 p-3 text-xs text-light-900 dark:bg-dark-200 dark:text-dark-900">
|
||||
@@ -205,11 +324,9 @@ export function InviteMemberForm({
|
||||
{(hasTeamSubscription || hasProSubscription) &&
|
||||
env("NEXT_PUBLIC_KAN_ENV") === "cloud" && (
|
||||
<Toggle
|
||||
label={t`Invite another`}
|
||||
isChecked={isCreateAnotherEnabled}
|
||||
onChange={() =>
|
||||
setIsCreateAnotherEnabled(!isCreateAnotherEnabled)
|
||||
}
|
||||
label={t`Share invite link`}
|
||||
isChecked={isShareInviteLinkEnabled}
|
||||
onChange={handleInviteLinkToggle}
|
||||
/>
|
||||
)}
|
||||
<div>
|
||||
@@ -226,7 +343,7 @@ export function InviteMemberForm({
|
||||
) : (
|
||||
<Button
|
||||
type="submit"
|
||||
disabled={inviteMember.isPending}
|
||||
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"
|
||||
>
|
||||
|
||||
@@ -1,14 +1,19 @@
|
||||
import { TRPCError } from "@trpc/server";
|
||||
import { z } from "zod";
|
||||
|
||||
import * as inviteLinkRepo from "@kan/db/repository/inviteLink.repo";
|
||||
import * as memberRepo from "@kan/db/repository/member.repo";
|
||||
import * as subscriptionRepo from "@kan/db/repository/subscription.repo";
|
||||
import * as userRepo from "@kan/db/repository/user.repo";
|
||||
import * as workspaceRepo from "@kan/db/repository/workspace.repo";
|
||||
import { getSubscriptionByPlan, hasUnlimitedSeats } from "@kan/shared/utils";
|
||||
import {
|
||||
generateUID,
|
||||
getSubscriptionByPlan,
|
||||
hasUnlimitedSeats,
|
||||
} from "@kan/shared/utils";
|
||||
import { updateSubscriptionSeats } from "@kan/stripe";
|
||||
|
||||
import { createTRPCRouter, protectedProcedure } from "../trpc";
|
||||
import { createTRPCRouter, protectedProcedure, publicProcedure } from "../trpc";
|
||||
import { assertUserInWorkspace } from "../utils/auth";
|
||||
|
||||
export const memberRouter = createTRPCRouter({
|
||||
@@ -241,4 +246,379 @@ export const memberRouter = createTRPCRouter({
|
||||
|
||||
return { success: true };
|
||||
}),
|
||||
getActiveInviteLink: protectedProcedure
|
||||
.meta({
|
||||
openapi: {
|
||||
summary: "Get active invite link for workspace",
|
||||
method: "GET",
|
||||
path: "/workspaces/{workspacePublicId}/invite",
|
||||
description: "Gets the active invite link for a workspace",
|
||||
tags: ["Invites"],
|
||||
protect: true,
|
||||
},
|
||||
})
|
||||
.input(
|
||||
z.object({
|
||||
workspacePublicId: z.string().min(12),
|
||||
}),
|
||||
)
|
||||
.output(
|
||||
z.object({
|
||||
id: z.number().optional(),
|
||||
inviteCode: z.string().optional(),
|
||||
inviteLink: z.string().optional(),
|
||||
isActive: z.boolean(),
|
||||
expiresAt: z.date().optional(),
|
||||
}),
|
||||
)
|
||||
.query(async ({ ctx, input }) => {
|
||||
const userId = ctx.user?.id;
|
||||
|
||||
if (!userId)
|
||||
throw new TRPCError({
|
||||
message: `User not authenticated`,
|
||||
code: "UNAUTHORIZED",
|
||||
});
|
||||
|
||||
const workspace = await workspaceRepo.getByPublicId(
|
||||
ctx.db,
|
||||
input.workspacePublicId,
|
||||
);
|
||||
|
||||
if (!workspace)
|
||||
throw new TRPCError({
|
||||
message: `Workspace not found`,
|
||||
code: "NOT_FOUND",
|
||||
});
|
||||
|
||||
// Check if user is in workspace
|
||||
await assertUserInWorkspace(ctx.db, userId, workspace.id);
|
||||
|
||||
// Get active invite link for this workspace
|
||||
const activeInviteLink = await inviteLinkRepo.getActiveForWorkspace(
|
||||
ctx.db,
|
||||
workspace.id,
|
||||
);
|
||||
|
||||
if (
|
||||
activeInviteLink &&
|
||||
(!activeInviteLink.expiresAt || new Date() < activeInviteLink.expiresAt)
|
||||
) {
|
||||
return {
|
||||
id: activeInviteLink.id,
|
||||
inviteCode: activeInviteLink.code,
|
||||
inviteLink: `${process.env.NEXT_PUBLIC_BASE_URL}/invite/${activeInviteLink.code}`,
|
||||
isActive: true,
|
||||
expiresAt: activeInviteLink.expiresAt ?? undefined,
|
||||
};
|
||||
}
|
||||
|
||||
return { isActive: false };
|
||||
}),
|
||||
createInviteLink: protectedProcedure
|
||||
.meta({
|
||||
openapi: {
|
||||
summary: "Create invite link for workspace",
|
||||
method: "POST",
|
||||
path: "/workspaces/{workspacePublicId}/invites",
|
||||
description: "Create invite link for a workspace",
|
||||
tags: ["Invites"],
|
||||
protect: true,
|
||||
},
|
||||
})
|
||||
.input(
|
||||
z.object({
|
||||
workspacePublicId: z.string().min(12),
|
||||
}),
|
||||
)
|
||||
.output(
|
||||
z.object({
|
||||
publicId: z.string().min(12),
|
||||
inviteCode: z.string(),
|
||||
inviteLink: z.string(),
|
||||
expiresAt: z.date().nullable(),
|
||||
}),
|
||||
)
|
||||
.mutation(async ({ ctx, input }) => {
|
||||
const userId = ctx.user?.id;
|
||||
|
||||
if (!userId)
|
||||
throw new TRPCError({
|
||||
message: `User not authenticated`,
|
||||
code: "UNAUTHORIZED",
|
||||
});
|
||||
|
||||
const workspace = await workspaceRepo.getByPublicId(
|
||||
ctx.db,
|
||||
input.workspacePublicId,
|
||||
);
|
||||
|
||||
if (!workspace)
|
||||
throw new TRPCError({
|
||||
message: `Workspace not found`,
|
||||
code: "NOT_FOUND",
|
||||
});
|
||||
|
||||
// Check if user is in workspace
|
||||
await assertUserInWorkspace(ctx.db, userId, workspace.id, "admin");
|
||||
|
||||
// Deactivate any existing active invite links
|
||||
await inviteLinkRepo.deactivateAllActiveForWorkspace(ctx.db, {
|
||||
workspaceId: workspace.id,
|
||||
updatedBy: userId,
|
||||
});
|
||||
|
||||
// Generate new invite code
|
||||
const inviteCode = generateUID();
|
||||
const expiresAt = new Date();
|
||||
expiresAt.setDate(expiresAt.getDate() + 7);
|
||||
|
||||
// Create new invite link
|
||||
const inviteLink = await inviteLinkRepo.createInviteLink(ctx.db, {
|
||||
workspaceId: workspace.id,
|
||||
code: inviteCode,
|
||||
expiresAt,
|
||||
createdBy: userId,
|
||||
});
|
||||
|
||||
if (!inviteLink) {
|
||||
throw new TRPCError({
|
||||
message: `Failed to create invite link`,
|
||||
code: "INTERNAL_SERVER_ERROR",
|
||||
});
|
||||
}
|
||||
|
||||
return {
|
||||
publicId: inviteLink.publicId,
|
||||
inviteCode: inviteLink.code,
|
||||
inviteLink: `${process.env.NEXT_PUBLIC_BASE_URL}/invite/${inviteLink.code}`,
|
||||
expiresAt: inviteLink.expiresAt,
|
||||
};
|
||||
}),
|
||||
deactivateInviteLink: protectedProcedure
|
||||
.meta({
|
||||
openapi: {
|
||||
summary: "Deactivate invite link for workspace",
|
||||
method: "DELETE",
|
||||
path: "/workspaces/{workspacePublicId}/invites",
|
||||
description: "Deactivates the invite link for a workspace",
|
||||
tags: ["Invites"],
|
||||
protect: true,
|
||||
},
|
||||
})
|
||||
.input(
|
||||
z.object({
|
||||
workspacePublicId: z.string().min(12),
|
||||
}),
|
||||
)
|
||||
.output(
|
||||
z.object({
|
||||
success: z.boolean(),
|
||||
}),
|
||||
)
|
||||
.mutation(async ({ ctx, input }) => {
|
||||
const userId = ctx.user?.id;
|
||||
|
||||
if (!userId)
|
||||
throw new TRPCError({
|
||||
message: `User not authenticated`,
|
||||
code: "UNAUTHORIZED",
|
||||
});
|
||||
|
||||
const workspace = await workspaceRepo.getByPublicId(
|
||||
ctx.db,
|
||||
input.workspacePublicId,
|
||||
);
|
||||
|
||||
if (!workspace)
|
||||
throw new TRPCError({
|
||||
message: `Workspace not found`,
|
||||
code: "NOT_FOUND",
|
||||
});
|
||||
|
||||
// Check if user is in workspace
|
||||
await assertUserInWorkspace(ctx.db, userId, workspace.id, "admin");
|
||||
|
||||
// Deactivate all active invite links
|
||||
await inviteLinkRepo.deactivateAllActiveForWorkspace(ctx.db, {
|
||||
workspaceId: workspace.id,
|
||||
updatedBy: userId,
|
||||
});
|
||||
|
||||
return { success: true };
|
||||
}),
|
||||
getInviteByCode: publicProcedure
|
||||
.meta({
|
||||
openapi: {
|
||||
summary: "Get invite information by code",
|
||||
method: "GET",
|
||||
path: "/workspaces/{workspacePublicId}/invites/{inviteCode}",
|
||||
description: "Get invite information by invite code",
|
||||
tags: ["Invites"],
|
||||
protect: false,
|
||||
},
|
||||
})
|
||||
.input(
|
||||
z.object({
|
||||
inviteCode: z.string().min(12),
|
||||
}),
|
||||
)
|
||||
.output(
|
||||
z
|
||||
.object({
|
||||
publicId: z.string().min(12),
|
||||
status: z.string(),
|
||||
expiresAt: z.date().nullable(),
|
||||
})
|
||||
.optional(),
|
||||
)
|
||||
.query(async ({ ctx, input }) => {
|
||||
const invite = await inviteLinkRepo.getByCode(ctx.db, input.inviteCode);
|
||||
|
||||
if (
|
||||
!invite ||
|
||||
invite.status !== "active" ||
|
||||
(invite.expiresAt && new Date() > invite.expiresAt)
|
||||
) {
|
||||
throw new TRPCError({
|
||||
message: `Invalid or expired invite link`,
|
||||
code: "BAD_REQUEST",
|
||||
});
|
||||
}
|
||||
|
||||
return {
|
||||
publicId: invite.publicId,
|
||||
status: invite.status,
|
||||
expiresAt: invite.expiresAt ?? null,
|
||||
};
|
||||
}),
|
||||
acceptInviteLink: publicProcedure
|
||||
.meta({
|
||||
openapi: {
|
||||
summary: "Accept an invite link",
|
||||
method: "POST",
|
||||
path: "/workspaces/{workspacePublicId}/invites/accept",
|
||||
description: "Accepts an invitation via invite link",
|
||||
tags: ["Invites"],
|
||||
protect: false,
|
||||
},
|
||||
})
|
||||
.input(
|
||||
z.object({
|
||||
inviteCode: z.string().min(12),
|
||||
}),
|
||||
)
|
||||
.output(
|
||||
z.object({
|
||||
success: z.boolean(),
|
||||
workspacePublicId: z.string().optional(),
|
||||
workspaceSlug: z.string().optional(),
|
||||
}),
|
||||
)
|
||||
.mutation(async ({ ctx, input }) => {
|
||||
const userId = ctx.user?.id;
|
||||
|
||||
if (!userId)
|
||||
throw new TRPCError({
|
||||
message: `User not authenticated`,
|
||||
code: "UNAUTHORIZED",
|
||||
});
|
||||
|
||||
const invite = await inviteLinkRepo.getByCode(ctx.db, input.inviteCode);
|
||||
|
||||
if (
|
||||
!invite ||
|
||||
invite.status !== "active" ||
|
||||
(invite.expiresAt && new Date() > invite.expiresAt)
|
||||
)
|
||||
throw new TRPCError({
|
||||
message: `Invalid or expired invite link`,
|
||||
code: "BAD_REQUEST",
|
||||
});
|
||||
|
||||
const workspace = await workspaceRepo.getById(ctx.db, invite.workspaceId);
|
||||
|
||||
if (!workspace)
|
||||
throw new TRPCError({
|
||||
message: `Workspace not found`,
|
||||
code: "NOT_FOUND",
|
||||
});
|
||||
|
||||
const isMember = await workspaceRepo.isUserInWorkspace(
|
||||
ctx.db,
|
||||
userId,
|
||||
invite.workspaceId,
|
||||
);
|
||||
|
||||
if (isMember) {
|
||||
throw new TRPCError({
|
||||
message: `User is already a member of this workspace`,
|
||||
code: "CONFLICT",
|
||||
});
|
||||
}
|
||||
|
||||
const user = await userRepo.getById(ctx.db, userId);
|
||||
|
||||
if (!user)
|
||||
throw new TRPCError({
|
||||
message: `User not found`,
|
||||
code: "NOT_FOUND",
|
||||
});
|
||||
|
||||
if (process.env.NEXT_PUBLIC_KAN_ENV === "cloud") {
|
||||
const subscriptions = await subscriptionRepo.getByReferenceId(
|
||||
ctx.db,
|
||||
workspace.publicId,
|
||||
);
|
||||
|
||||
// get the active subscriptions
|
||||
const activeTeamSubscription = getSubscriptionByPlan(
|
||||
subscriptions,
|
||||
"team",
|
||||
);
|
||||
const activeProSubscription = getSubscriptionByPlan(
|
||||
subscriptions,
|
||||
"pro",
|
||||
);
|
||||
const unlimitedSeats = hasUnlimitedSeats(subscriptions);
|
||||
|
||||
if (!activeTeamSubscription && !activeProSubscription) {
|
||||
throw new TRPCError({
|
||||
message: `Workspace with public ID ${workspace.publicId} does not have an active subscription`,
|
||||
code: "NOT_FOUND",
|
||||
});
|
||||
}
|
||||
|
||||
// Update the Stripe subscription
|
||||
if (activeTeamSubscription?.stripeSubscriptionId && !unlimitedSeats) {
|
||||
try {
|
||||
await updateSubscriptionSeats(
|
||||
activeTeamSubscription.stripeSubscriptionId,
|
||||
1,
|
||||
);
|
||||
} catch (error) {
|
||||
console.error("Failed to update Stripe subscription seats:", error);
|
||||
throw new TRPCError({
|
||||
message: `Failed to update subscription for the new member.`,
|
||||
code: "INTERNAL_SERVER_ERROR",
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
await memberRepo.create(ctx.db, {
|
||||
workspaceId: invite.workspaceId,
|
||||
email: user.email,
|
||||
userId: user.id,
|
||||
createdBy: user.id,
|
||||
role: "member",
|
||||
status: "active",
|
||||
});
|
||||
|
||||
return {
|
||||
success: true,
|
||||
workspacePublicId: workspace.publicId,
|
||||
workspaceSlug: workspace.slug,
|
||||
};
|
||||
}),
|
||||
});
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
CREATE TYPE "public"."invite_link_status" AS ENUM('active', 'inactive');--> statement-breakpoint
|
||||
CREATE TABLE IF NOT EXISTS "workspace_invite_links" (
|
||||
"id" bigserial PRIMARY KEY NOT NULL,
|
||||
"publicId" varchar(12) NOT NULL,
|
||||
"workspaceId" bigint NOT NULL,
|
||||
"code" varchar(12) NOT NULL,
|
||||
"status" "invite_link_status" DEFAULT 'active' NOT NULL,
|
||||
"expiresAt" timestamp,
|
||||
"createdAt" timestamp DEFAULT now() NOT NULL,
|
||||
"createdBy" uuid,
|
||||
"updatedAt" timestamp,
|
||||
"updatedBy" uuid,
|
||||
CONSTRAINT "workspace_invite_links_publicId_unique" UNIQUE("publicId"),
|
||||
CONSTRAINT "workspace_invite_links_code_unique" UNIQUE("code")
|
||||
);
|
||||
--> statement-breakpoint
|
||||
ALTER TABLE "workspace_invite_links" ENABLE ROW LEVEL SECURITY;--> statement-breakpoint
|
||||
DO $$ BEGIN
|
||||
ALTER TABLE "workspace_invite_links" ADD CONSTRAINT "workspace_invite_links_workspaceId_workspace_id_fk" FOREIGN KEY ("workspaceId") REFERENCES "public"."workspace"("id") ON DELETE cascade ON UPDATE no action;
|
||||
EXCEPTION
|
||||
WHEN duplicate_object THEN null;
|
||||
END $$;
|
||||
--> statement-breakpoint
|
||||
DO $$ BEGIN
|
||||
ALTER TABLE "workspace_invite_links" ADD CONSTRAINT "workspace_invite_links_createdBy_user_id_fk" FOREIGN KEY ("createdBy") REFERENCES "public"."user"("id") ON DELETE set null ON UPDATE no action;
|
||||
EXCEPTION
|
||||
WHEN duplicate_object THEN null;
|
||||
END $$;
|
||||
--> statement-breakpoint
|
||||
DO $$ BEGIN
|
||||
ALTER TABLE "workspace_invite_links" ADD CONSTRAINT "workspace_invite_links_updatedBy_user_id_fk" FOREIGN KEY ("updatedBy") REFERENCES "public"."user"("id") ON DELETE set null ON UPDATE no action;
|
||||
EXCEPTION
|
||||
WHEN duplicate_object THEN null;
|
||||
END $$;
|
||||
2766
packages/db/migrations/meta/20250923211958_snapshot.json
Normal file
2766
packages/db/migrations/meta/20250923211958_snapshot.json
Normal file
File diff suppressed because it is too large
Load Diff
@@ -106,6 +106,13 @@
|
||||
"when": 1758226671081,
|
||||
"tag": "20250918201751_AddPausedMemberStatus",
|
||||
"breakpoints": true
|
||||
},
|
||||
{
|
||||
"idx": 15,
|
||||
"version": "7",
|
||||
"when": 1758662398166,
|
||||
"tag": "20250923211958_AddWorkspaceInviteLinks",
|
||||
"breakpoints": true
|
||||
}
|
||||
]
|
||||
}
|
||||
71
packages/db/src/repository/inviteLink.repo.ts
Normal file
71
packages/db/src/repository/inviteLink.repo.ts
Normal file
@@ -0,0 +1,71 @@
|
||||
import { and, eq, gt } from "drizzle-orm";
|
||||
|
||||
import type { dbClient } from "@kan/db/client";
|
||||
import { workspaceInviteLinks } from "@kan/db/schema";
|
||||
import { generateUID } from "@kan/shared/utils";
|
||||
|
||||
export const createInviteLink = async (
|
||||
db: dbClient,
|
||||
args: {
|
||||
workspaceId: number;
|
||||
code: string;
|
||||
expiresAt: Date | null;
|
||||
createdBy: string;
|
||||
},
|
||||
) => {
|
||||
const [result] = await db
|
||||
.insert(workspaceInviteLinks)
|
||||
.values({
|
||||
publicId: generateUID(),
|
||||
workspaceId: args.workspaceId,
|
||||
code: args.code,
|
||||
expiresAt: args.expiresAt ?? null,
|
||||
status: "active",
|
||||
createdBy: args.createdBy,
|
||||
})
|
||||
.returning({
|
||||
publicId: workspaceInviteLinks.publicId,
|
||||
code: workspaceInviteLinks.code,
|
||||
status: workspaceInviteLinks.status,
|
||||
expiresAt: workspaceInviteLinks.expiresAt,
|
||||
});
|
||||
return result;
|
||||
};
|
||||
|
||||
export const deactivateAllActiveForWorkspace = async (
|
||||
db: dbClient,
|
||||
args: { workspaceId: number; updatedBy: string },
|
||||
) => {
|
||||
await db
|
||||
.update(workspaceInviteLinks)
|
||||
.set({
|
||||
status: "inactive",
|
||||
updatedBy: args.updatedBy,
|
||||
updatedAt: new Date(),
|
||||
})
|
||||
.where(
|
||||
and(
|
||||
eq(workspaceInviteLinks.workspaceId, args.workspaceId),
|
||||
eq(workspaceInviteLinks.status, "active"),
|
||||
),
|
||||
);
|
||||
};
|
||||
|
||||
export const getActiveForWorkspace = async (
|
||||
db: dbClient,
|
||||
workspaceId: number,
|
||||
) => {
|
||||
return db.query.workspaceInviteLinks.findFirst({
|
||||
where: and(
|
||||
eq(workspaceInviteLinks.workspaceId, workspaceId),
|
||||
eq(workspaceInviteLinks.status, "active"),
|
||||
),
|
||||
orderBy: (links, { desc }) => [desc(links.createdAt)],
|
||||
});
|
||||
};
|
||||
|
||||
export const getByCode = async (db: dbClient, code: string) => {
|
||||
return db.query.workspaceInviteLinks.findFirst({
|
||||
where: eq(workspaceInviteLinks.code, code),
|
||||
});
|
||||
};
|
||||
@@ -87,11 +87,25 @@ export const getByPublicId = (db: dbClient, workspacePublicId: string) => {
|
||||
publicId: true,
|
||||
name: true,
|
||||
plan: true,
|
||||
slug: true,
|
||||
},
|
||||
where: eq(workspaces.publicId, workspacePublicId),
|
||||
});
|
||||
};
|
||||
|
||||
export const getById = (db: dbClient, workspaceId: number) => {
|
||||
return db.query.workspaces.findFirst({
|
||||
columns: {
|
||||
id: true,
|
||||
publicId: true,
|
||||
name: true,
|
||||
plan: true,
|
||||
slug: true,
|
||||
},
|
||||
where: eq(workspaces.id, workspaceId),
|
||||
});
|
||||
};
|
||||
|
||||
export const getByPublicIdWithMembers = (
|
||||
db: dbClient,
|
||||
workspacePublicId: string,
|
||||
|
||||
@@ -11,3 +11,4 @@ export * from "./users";
|
||||
export * from "./integrations";
|
||||
export * from "./workspaces";
|
||||
export * from "./subscriptions";
|
||||
export * from "./workspaceInviteLinks";
|
||||
|
||||
38
packages/db/src/schema/workspaceInviteLinks.ts
Normal file
38
packages/db/src/schema/workspaceInviteLinks.ts
Normal file
@@ -0,0 +1,38 @@
|
||||
import {
|
||||
bigint,
|
||||
bigserial,
|
||||
pgEnum,
|
||||
pgTable,
|
||||
timestamp,
|
||||
uuid,
|
||||
varchar,
|
||||
} from "drizzle-orm/pg-core";
|
||||
|
||||
import { users } from "./users";
|
||||
import { workspaces } from "./workspaces";
|
||||
|
||||
export const inviteLinkStatuses = ["active", "inactive"] as const;
|
||||
export type InviteLinkStatus = (typeof inviteLinkStatuses)[number];
|
||||
export const inviteLinkStatusEnum = pgEnum(
|
||||
"invite_link_status",
|
||||
inviteLinkStatuses,
|
||||
);
|
||||
|
||||
export const workspaceInviteLinks = pgTable("workspace_invite_links", {
|
||||
id: bigserial("id", { mode: "number" }).primaryKey(),
|
||||
publicId: varchar("publicId", { length: 12 }).notNull().unique(),
|
||||
workspaceId: bigint("workspaceId", { mode: "number" })
|
||||
.notNull()
|
||||
.references(() => workspaces.id, { onDelete: "cascade" }),
|
||||
code: varchar("code", { length: 12 }).notNull().unique(),
|
||||
status: inviteLinkStatusEnum("status").notNull().default("active"),
|
||||
expiresAt: timestamp("expiresAt"),
|
||||
createdAt: timestamp("createdAt").defaultNow().notNull(),
|
||||
createdBy: uuid("createdBy").references(() => users.id, {
|
||||
onDelete: "set null",
|
||||
}),
|
||||
updatedAt: timestamp("updatedAt"),
|
||||
updatedBy: uuid("updatedBy").references(() => users.id, {
|
||||
onDelete: "set null",
|
||||
}),
|
||||
}).enableRLS();
|
||||
Reference in New Issue
Block a user