feat(cloud): enable seat based pricing (#161)

* feat: setup subscriptions

* feat: prompt user to create subscription if inactive

* feat: update subscription when increasing/decreasing workspace members

* feat: rework upgrade

* chore: remove pricing notice

* chore: add translations

* chore: update proration comment
This commit is contained in:
Henry
2025-09-02 22:36:09 +01:00
committed by GitHub
parent e3d7ace8bd
commit 06c268bed1
33 changed files with 7483 additions and 4352 deletions

View File

@@ -6,6 +6,8 @@ checksums:
"%7B0%7D%20%7C%20%7B1%7D/singular": 4628f9c6ec13c2dc2984a6ab80e19f8b
"%7B0%7D%20labels/singular": 785f92bedf786ff3e285adfc07c69d18
"%7BboardCount%2C%20plural%2C%20one%20%7BImport%20board%20(1)%7D%20other%20%7BImport%20boards%20(%7BboardCount%7D)%7D%7D/singular": 72358c550bd1a99fcb6e8952f0f947ef
"%2410%2Fmonth/singular": cab5e752ed83096e34fca780d90e1fb9
"%248%2Fmonth/singular": 4667034934bb2bc3d569c70b94205b51
1%20user/singular: 3b547431ab12f0fba84307e6a81109d8
A%20powerful%2C%20flexible%20kanban%20app%20that%20helps%20you%20organise%20work%2C%20track%20progress%2C%20and%20deliver%20results%E2%80%94all%20in%20one%20place./singular: d405b83b0d631cb72f4347c10bcbb643
Account%20deleted/singular: a25da96a1579c4491be0a95669ef18a4
@@ -26,8 +28,8 @@ checksums:
added%20checklist%20%3C0%3E%7B0%7D%3C%2F0%3E/singular: fb6a852c50c1629f47c6f155fc93fdee
added%20checklist%20item%20%3C0%3E%7B0%7D%3C%2F0%3E/singular: bdd202da20b1fffbec21792c5453f90c
added%20label%20%3C0%3E%7B0%7D%3C%2F0%3E/singular: b32be052b3d57de0c9120fa7f9fc86ee
Adding%20a%20new%20member%20will%20cost%20an%20additional%20%7Bprice%7D%20(%7BbillingType%7D)%20per%20seat./singular: 12e88573028306110fbc15ef1e714892
Admin%20roles/singular: 32a5d78073b9bb9a246773afba8831df
All%20seats%20are%20free%20during%20the%20beta%20until%20Sept%201st!/singular: 015cec3899cf99e37c3cf231d432e31d
All%20systems%20operational/singular: ee943a4046b09e6334cceeea9fda2bfc
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
@@ -47,6 +49,8 @@ checksums:
Awaiting%20Customer/singular: 122c108794f321c10e05a08f09b11457
Backlog/singular: 35919fd5b10ad212839a75e72829fe4e
Basic%20Kanban/singular: e46ebc406749486f3907436970d4d6c7
billed%20annually/singular: c782a8085ffee456bfc56c34ccc5e71c
billed%20monthly/singular: 793f2728acf06e9f06d6cdc26dfcf0cd
Billing/singular: b01dbdd049ebbd4a349fa64d6ce65a3b
Billing%20portal/singular: dc3afa14ffe19f5920992a0c9d49d525
Blog%20Post/singular: 38e027f212be445dc530e427fc642a20
@@ -161,6 +165,7 @@ checksums:
Error%20updating%20workspace%20description/singular: 7a9fd7c69b90ab848ee1f1d4a4995381
Error%20updating%20workspace%20name/singular: 46025f42a7d5eff689e9cb8bed14a1e4
Error%20updating%20workspace%20URL/singular: 9da6c012e1b512d8c7fbd812626c4675
Error%20upgrading%20subscription/singular: 57cc47581c7faaffb3b1721b6352b576
Error%20uploading%20profile%20image/singular: 0ba02753a797a74c6ea7b622c9f69c71
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
@@ -176,6 +181,7 @@ checksums:
Find%20answers%20to%20common%20questions%20about%20the%20project.%20Can't%20find%20what%20you're%20looking%20for%3F%20Feel%20free%20to%20%3C0%3Econtact%20us%3C%2F0%3E./singular: 4d99230dad703bf2d71ba670c2f79d3d
For%20long-term%20sustainability%2C%20we%20recognise%20all%20good%20open%20source%20projects%20need%20a%20source%20of%20revenue.%20Ours%20comes%20from%20the%20paid%20cloud%20offering%20for%20workspaces%20with%20multiple%20users%20(free%20during%20the%20beta)%20and%20for%20custom%20workspace%20slugs.%20There's%20no%20obligation%20to%20use%20it%2C%20and%20you%20can%20self-host%20the%20software%20on%20your%20own%20infrastructure%20free%20of%20charge./singular: 4eedacd4311ff69bf0fd87083c90a268
Free/singular: 0326365539c004f6088656f692602078
Free%20Plan/singular: c995acccc1e3cba379786892a5b4d4e5
Free%2C%20forever/singular: ae4f2f81e88a50b5f250ef8e8e77e74b
Full-time/singular: fe6e201f6676ae354111435cf6c76910
Fun/singular: 395bdc48e943762b6cde649f4a96771d
@@ -216,6 +222,7 @@ checksums:
Invite/singular: 181884cea804cbde665f160811ee7ad0
Invite%20another/singular: acb543563dab7edbcf46060a53ade3a3
Invite%20member/singular: ade922db1be6b26bc979565ce5de2bc7
Inviting%20members%20requires%20a%20Team%20Plan.%20You'll%20be%20redirected%20to%20upgrade%20your%20workspace./singular: 03eeed2d715e770259f722ba48a61ab3
Junior/singular: ed1bd2c59a824fdcdd56fc8a0660fe9f
Kanban%20is%20better%20with%20a%20team.%20Perfect%20for%20small%20and%20growing%20teams%20looking%20to%20collaborate./singular: a77bee43046b260797c8936ad23e9223
Kanban%20reimagined/singular: 613ccfdd9f54c66cbf68cfa313498766
@@ -241,6 +248,7 @@ checksums:
Members/singular: 0932e80cba1e3e0a7f52bb67ff31da32
Members%20%7C%20%7B0%7D/singular: a29e3e9f1076acd178c417d047584e88
Monthly/singular: 818f1192e32bb855597f930d3e78806e
monthly%20billing/singular: e228107df80015377112d41f4f155cb3
moved%20the%20card%20from%20%3C0%3E%7B0%7D%3C%2F0%3E%20to%3C1%3E%7B1%7D%3C%2F1%3E/singular: 11edf0427766c26db541d46379dc3c16
moved%20the%20card%20to%20another%20list/singular: 2e8c41bfafb42fa299ce56e4300205ff
Name/singular: 9368b5a047572b6051f334af5aa76819
@@ -339,6 +347,7 @@ checksums:
Support/singular: 55aab5fd0f31a9cb055a2edeeedfaf63
Support%20the%20development%20of%20the%20project/singular: c63bab228ab2b1be4370c668a99cd278
System/singular: 803281c327a02a2feba182f4a2b38311
Team%20Plan/singular: 3f0ae9c914f16ceb9a0d7db868f4aa20
Teams/singular: b63448c05270497973ac4407047dae02
Templates/singular: 8ed62f56c81fa96c0f3182acb331bf63
Terms%20of%20service/singular: 0b8a8b23aff021a6cde79613fdb39c28
@@ -397,6 +406,7 @@ checksums:
updated%20the%20title/singular: 98cf8f12923ec1a58e767e3a40863b21
updated%20the%20title%20to%20%3C0%3E%7B0%7D%3C%2F0%3E/singular: aca196d729401d8adc5c8ca9d558840e
Upgrade/singular: 63c3b52882e0d779859307d672c178c2
Upgrade%20to%20Team%20Plan/singular: 40e2ef151266937f8bbe63b3d361f645
Urgent/singular: e79afcd4398e52e10e7e8243a7eecabe
URL%20can%20only%20contain%20letters%2C%20numbers%2C%20and%20hyphens/singular: 875d37d2d920f98ef60a314eda8a5d9a
URL%20cannot%20exceed%2024%20characters/singular: 395c25732b84ac1f5b63ee310da08e93

View File

@@ -6,7 +6,7 @@
"scripts": {
"build": "pnpm with-env next build",
"clean": "git clean -xdf .cache .next .turbo node_modules",
"dev": "pnpm with-env next dev | pino-pretty",
"dev": "pnpm with-env next dev",
"format": "prettier --check . --ignore-path ../../.gitignore",
"lint": "eslint",
"start": "pnpm with-env next start",

View File

@@ -23,7 +23,7 @@ msgstr ", oder besuche unsere"
#. placeholder {0}: card?.title ?? "Card"
#. placeholder {1}: board?.name ?? "Board"
#: src/views/card/index.tsx:213
#: src/views/card/index.tsx:214
msgid "{0} | {1}"
msgstr "{0} | {1}"
@@ -36,11 +36,20 @@ 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:91
#: src/views/members/components/InviteMemberForm.tsx:106
msgid "$10/month"
msgstr "$10/Monat"
#: src/views/members/components/InviteMemberForm.tsx:106
msgid "$8/month"
msgstr "$8/Monat"
#: src/views/home/components/Pricing.tsx:36
msgid "1 user"
msgstr "1 Benutzer"
#: src/views/home/index.tsx:71
#: src/views/home/index.tsx:72
msgid "A powerful, flexible kanban app that helps you organise work, track progress, and deliver results—all in one place."
msgstr "Eine leistungsstarke, flexible Kanban-App, die dir hilft, Arbeit zu organisieren, Fortschritte zu verfolgen und Ergebnisse zu liefern alles an einem Ort."
@@ -48,8 +57,8 @@ msgstr "Eine leistungsstarke, flexible Kanban-App, die dir hilft, Arbeit zu orga
msgid "Account deleted"
msgstr "Konto gelöscht"
#: src/views/public/board/CardModal.tsx:140
#: src/views/card/index.tsx:288
#: src/views/card/index.tsx:289
#: src/views/public/board/CardModal.tsx:143
msgid "Activity"
msgstr "Aktivität"
@@ -61,8 +70,8 @@ msgstr "Aktivitätsprotokolle"
msgid "Add a card"
msgstr "Karte hinzufügen"
#: src/views/card/components/NewCommentForm.tsx:57
#: src/views/card/components/Comment.tsx:146
#: src/views/card/components/NewCommentForm.tsx:57
msgid "Add a comment..."
msgstr "Kommentar hinzufügen..."
@@ -87,8 +96,8 @@ msgstr "Details hinzufügen..."
msgid "Add label"
msgstr "Label hinzufügen"
#: src/views/members/components/InviteMemberForm.tsx:85
#: src/views/card/components/MemberSelector.tsx:130
#: src/views/members/components/InviteMemberForm.tsx:149
msgid "Add member"
msgstr "Mitglied hinzufügen"
@@ -123,14 +132,14 @@ 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:186
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/home/components/Pricing.tsx:55
msgid "Admin roles"
msgstr "Administratorrollen"
#: src/views/home/components/Pricing.tsx:97
msgid "All seats are free during the beta until Sept 1st!"
msgstr "Alle Plätze sind während der Beta-Phase bis zum 1. September kostenlos!"
#: src/views/home/components/Footer.tsx:18
msgid "All systems operational"
msgstr "Alle Systeme funktionieren"
@@ -209,8 +218,16 @@ msgstr "Backlog"
msgid "Basic Kanban"
msgstr "Einfaches Kanban"
#: src/views/settings/index.tsx:198
#: src/views/members/components/InviteMemberForm.tsx:107
msgid "billed annually"
msgstr "jährlich abgerechnet"
#: src/views/members/components/InviteMemberForm.tsx:107
msgid "billed monthly"
msgstr "monatlich abgerechnet"
#: src/views/boards/components/TemplateBoards.tsx:55
#: src/views/settings/index.tsx:198
msgid "Billing"
msgstr "Abrechnung"
@@ -234,8 +251,8 @@ msgstr "Der Name des Boards darf 100 Zeichen nicht überschreiten"
msgid "Board name is required"
msgstr "Boardname ist erforderlich"
#: src/views/public/board/index.tsx:143
#: src/views/board/index.tsx:357
#: src/views/public/board/index.tsx:148
msgid "Board not found"
msgstr "Board nicht gefunden"
@@ -247,7 +264,7 @@ msgstr "Board-URL darf nur Buchstaben, Zahlen und Bindestriche enthalten"
msgid "Board URL cannot exceed 60 characters"
msgstr "Board-URL darf 60 Zeichen nicht überschreiten"
#: src/views/public/board/index.tsx:59
#: src/views/public/board/index.tsx:64
msgid "Board URL copied to clipboard"
msgstr "Board-URL in die Zwischenablage kopiert"
@@ -263,8 +280,8 @@ msgstr "Board-Sichtbarkeit"
msgid "Board visibility updated"
msgstr "Board-Sichtbarkeit aktualisiert"
#: src/views/boards/index.tsx:27
#: src/components/SideNavigation.tsx:68
#: src/views/boards/index.tsx:27
msgid "Boards"
msgstr "Boards"
@@ -285,20 +302,20 @@ msgstr "Bug"
msgid "Bug Report"
msgstr "Fehlerbericht"
#: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:98
#: src/views/settings/components/DeleteAccountConfirmation.tsx:88
#: src/views/settings/components/CustomURLConfirmation.tsx:50
#: src/views/settings/components/ChangePasswordConfirmation.tsx:168
#: src/views/members/components/DeleteMemberConfirmation.tsx:55
#: src/views/card/components/DeleteCommentConfirmation.tsx:76
#: src/views/card/components/DeleteChecklistConfirmation.tsx:63
#: src/views/card/components/DeleteCardConfirmation.tsx:86
#: src/views/card/components/Comment.tsx:158
#: src/components/DeleteLabelConfirmation.tsx:49
#: src/views/card/components/Comment.tsx:158
#: src/views/card/components/DeleteCardConfirmation.tsx:86
#: 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/ChangePasswordConfirmation.tsx:168
#: src/views/settings/components/CustomURLConfirmation.tsx:50
#: src/views/settings/components/DeleteAccountConfirmation.tsx:88
#: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:98
msgid "Cancel"
msgstr "Abbrechen"
#: src/views/card/index.tsx:259
#: src/views/card/index.tsx:260
msgid "Card not found"
msgstr "Karte nicht gefunden"
@@ -306,10 +323,10 @@ msgstr "Karte nicht gefunden"
msgid "Card title"
msgstr "Kartentitel"
#: src/views/settings/index.tsx:291
#: src/views/settings/index.tsx:301
#: src/views/settings/components/ChangePasswordConfirmation.tsx:109
#: src/views/settings/components/ChangePasswordConfirmation.tsx:178
#: src/views/settings/index.tsx:291
#: src/views/settings/index.tsx:301
msgid "Change Password"
msgstr "Passwort ändern"
@@ -317,8 +334,8 @@ msgstr "Passwort ändern"
msgid "Change the language of the app."
msgstr "Ändere die Sprache der App."
#: src/views/auth/signup/index.tsx:67
#: src/views/auth/login/index.tsx:41
#: src/views/auth/signup/index.tsx:67
msgid "Check your inbox"
msgstr "Überprüfe deinen Posteingang"
@@ -330,8 +347,8 @@ msgstr "Checklistenname"
msgid "Clear filters"
msgstr "Filter löschen"
#: src/views/auth/signup/index.tsx:72
#: src/views/auth/login/index.tsx:46
#: src/views/auth/signup/index.tsx:72
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."
@@ -380,8 +397,8 @@ msgstr "URL-Änderung bestätigen"
msgid "Confirm your new password"
msgstr "Bestätigen Sie Ihr neues Passwort"
#: src/views/settings/index.tsx:235
#: src/views/boards/components/ImportBoardsForm.tsx:157
#: src/views/settings/index.tsx:235
msgid "Connect Trello"
msgstr "Trello verbinden"
@@ -405,12 +422,12 @@ msgstr "Kontaktiere uns"
msgid "Content Creation"
msgstr "Content-Erstellung"
#: src/components/AuthForm.tsx:335
#: src/components/AuthForm.tsx:366
msgid "Continue with "
msgstr "Fortfahren mit "
#. placeholder {0}: provider.name
#: src/components/AuthForm.tsx:269
#. placeholder {0}: key === "oidc" ? oidcProviderName : provider.name
#: src/components/AuthForm.tsx:297
msgid "Continue with {0}"
msgstr "Fortfahren mit {0}"
@@ -418,9 +435,9 @@ msgstr "Fortfahren mit {0}"
msgid "Control who can view and edit your boards."
msgstr "Kontrolliere, wer deine Boards ansehen und bearbeiten kann."
#: src/views/board/components/NewListForm.tsx:140
#: src/views/board/components/NewCardForm.tsx:458
#: src/components/LabelForm.tsx:213
#: src/views/board/components/NewCardForm.tsx:458
#: src/views/board/components/NewListForm.tsx:140
msgid "Create another"
msgstr "Weitere erstellen"
@@ -452,8 +469,8 @@ msgstr "Neues Board erstellen"
msgid "Create new key"
msgstr "Neuen Schlüssel erstellen"
#: src/views/card/components/LabelSelector.tsx:98
#: src/views/board/components/NewCardForm.tsx:394
#: src/views/card/components/LabelSelector.tsx:98
msgid "Create new label"
msgstr "Neues Label erstellen"
@@ -461,8 +478,8 @@ msgstr "Neues Label erstellen"
msgid "Create new list"
msgstr "Neue Liste erstellen"
#: src/components/NewWorkspaceForm.tsx:94
#: src/components/WorkspaceMenu.tsx:116
#: src/components/NewWorkspaceForm.tsx:93
msgid "Create workspace"
msgstr "Arbeitsbereich erstellen"
@@ -494,17 +511,17 @@ msgstr "Kundensupport"
msgid "Dark"
msgstr "Dunkel"
#: src/views/card/components/DeleteCommentConfirmation.tsx:82
#: src/views/card/components/DeleteChecklistConfirmation.tsx:66
#: src/views/card/components/DeleteCardConfirmation.tsx:92
#: src/components/LabelForm.tsx:228
#: src/components/DeleteLabelConfirmation.tsx:51
#: src/components/LabelForm.tsx:228
#: src/views/card/components/DeleteCardConfirmation.tsx:92
#: src/views/card/components/DeleteChecklistConfirmation.tsx:66
#: src/views/card/components/DeleteCommentConfirmation.tsx:82
msgid "Delete"
msgstr "Löschen"
#: src/views/settings/components/DeleteAccountConfirmation.tsx:96
#: src/views/settings/index.tsx:309
#: src/views/settings/index.tsx:319
#: src/views/settings/components/DeleteAccountConfirmation.tsx:96
msgid "Delete account"
msgstr "Konto löschen"
@@ -524,9 +541,9 @@ msgstr "Kommentar löschen"
msgid "Delete list"
msgstr "Liste löschen"
#: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:106
#: src/views/settings/index.tsx:272
#: src/views/settings/index.tsx:283
#: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:106
msgid "Delete workspace"
msgstr "Workspace löschen"
@@ -588,9 +605,9 @@ msgstr "Dokumente"
msgid "Docs"
msgstr "Dokumente"
#: src/views/home/components/Footer.tsx:77
#: src/views/boards/components/TemplateBoards.tsx:23
#: src/components/UserMenu.tsx:191
#: src/views/boards/components/TemplateBoards.tsx:23
#: src/views/home/components/Footer.tsx:77
msgid "Documentation"
msgstr "Dokumentation"
@@ -605,8 +622,8 @@ msgstr "Du hast noch kein Konto? <0><1>Registrieren</1></0>"
msgid "Done"
msgstr "Erledigt"
#: src/views/board/components/UpdateBoardSlugForm.tsx:115
#: src/views/board/components/BoardDropdown.tsx:15
#: src/views/board/components/UpdateBoardSlugForm.tsx:115
msgid "Edit board URL"
msgstr "Board-URL bearbeiten"
@@ -626,11 +643,11 @@ msgstr "Workspace-URL bearbeiten"
msgid "Editing"
msgstr "Bearbeitung"
#: src/components/AuthForm.tsx:337
#: src/components/AuthForm.tsx:368
msgid "email"
msgstr "E-Mail"
#: src/views/members/components/InviteMemberForm.tsx:99
#: src/views/members/components/InviteMemberForm.tsx:163
msgid "Email"
msgstr "E-Mail"
@@ -646,11 +663,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:302
#: src/components/AuthForm.tsx:333
msgid "Enter your email address"
msgstr "Gib deine E-Mail-Adresse ein"
#: src/components/AuthForm.tsx:290
#: src/components/AuthForm.tsx:321
msgid "Enter your name"
msgstr "Gib deinen Namen ein"
@@ -658,7 +675,7 @@ msgstr "Gib deinen Namen ein"
msgid "Enter your new password"
msgstr "Geben Sie Ihr neues Passwort ein"
#: src/components/AuthForm.tsx:315
#: src/components/AuthForm.tsx:346
msgid "Enter your password"
msgstr "Gib dein Passwort ein"
@@ -682,8 +699,8 @@ msgstr "Fehler beim Löschen des Arbeitsbereichs"
msgid "Error disconnecting Trello"
msgstr "Fehler beim Trennen von Trello"
#: src/views/members/components/InviteMemberForm.tsx:57
#: src/views/members/components/InviteMemberForm.tsx:63
#: src/views/members/components/InviteMemberForm.tsx:76
#: src/views/members/components/InviteMemberForm.tsx:82
msgid "Error inviting member"
msgstr "Fehler beim Einladen des Mitglieds"
@@ -707,6 +724,10 @@ msgstr "Fehler beim Aktualisieren des Arbeitsbereichsnamens"
msgid "Error updating workspace URL"
msgstr "Fehler beim Aktualisieren der Workspace-URL"
#: src/views/members/components/InviteMemberForm.tsx:132
msgid "Error upgrading subscription"
msgstr "Fehler beim Upgrade des Abonnements"
#: src/views/settings/components/Avatar.tsx:56
#: src/views/settings/components/Avatar.tsx:97
msgid "Error uploading profile image"
@@ -725,12 +746,12 @@ msgid "Execution"
msgstr "Ausführung"
#. placeholder {0}: provider.at(0)?.toUpperCase() + provider.slice(1)
#: src/components/AuthForm.tsx:241
#: src/components/AuthForm.tsx:269
msgid "Failed to login with {0}. Please try again."
msgstr "Anmeldung mit {0} fehlgeschlagen. Bitte versuche es erneut."
#: src/views/home/components/Footer.tsx:51
#: src/views/home/components/Faqs.tsx:143
#: src/views/home/components/Footer.tsx:51
msgid "FAQs"
msgstr "Häufig gestellte Fragen"
@@ -742,14 +763,14 @@ msgstr "Feature"
msgid "Feature Request"
msgstr "Feature-Anfrage"
#: src/views/home/components/Header.tsx:14
#: src/views/home/components/Footer.tsx:49
#: src/views/home/components/Features.tsx:125
#: src/views/home/components/Footer.tsx:49
#: src/views/home/components/Header.tsx:14
msgid "Features"
msgstr "Features"
#: src/components/UserMenu.tsx:199
#: src/components/FeedbackModal.tsx:59
#: src/components/UserMenu.tsx:199
msgid "Feedback"
msgstr "Feedback"
@@ -773,6 +794,11 @@ msgstr "Für langfristige Nachhaltigkeit erkennen wir an, dass alle guten Open-S
msgid "Free"
msgstr "Kostenlos"
#: src/views/members/components/InviteMemberForm.tsx:192
#: src/views/members/index.tsx:184
msgid "Free Plan"
msgstr "Kostenloser Plan"
#: src/views/home/components/Pricing.tsx:34
msgid "Free, forever"
msgstr "Kostenlos, für immer"
@@ -785,10 +811,10 @@ msgstr "Vollzeit"
msgid "Fun"
msgstr "Spaß"
#: src/views/auth/signup/index.tsx:67
#: src/views/home/components/Cta.tsx:61
#: src/views/home/components/Header.tsx:102
#: src/views/home/components/Header.tsx:141
#: src/views/home/components/Cta.tsx:61
#: src/views/auth/signup/index.tsx:67
msgid "Get started"
msgstr "Loslegen"
@@ -813,7 +839,7 @@ msgstr "Starten Sie noch heute kostenlos"
msgid "Get started for free, with no usage limits. For collaboration, upgrade to a plan that fits the size of your team."
msgstr "Starten Sie kostenlos ohne Nutzungsbeschränkungen. Für die Zusammenarbeit wechseln Sie zu einem Plan, der zur Größe Ihres Teams passt."
#: src/views/home/index.tsx:75
#: src/views/home/index.tsx:76
msgid "Get started on Cloud"
msgstr "In der Cloud starten"
@@ -924,23 +950,27 @@ msgstr "Integrationen"
msgid "Interviewing"
msgstr "Vorstellungsgespräch"
#: src/views/members/components/InviteMemberForm.tsx:26
#: src/views/members/components/InviteMemberForm.tsx:45
msgid "Invalid email address"
msgstr "Ungültige E-Mail-Adresse"
#: src/views/members/index.tsx:169
#: src/views/members/index.tsx:193
msgid "Invite"
msgstr "Einladen"
#: src/views/members/components/InviteMemberForm.tsx:113
#: src/views/members/components/InviteMemberForm.tsx:207
msgid "Invite another"
msgstr "Weitere Person einladen"
#: src/views/members/components/InviteMemberForm.tsx:123
#: src/views/card/components/MemberSelector.tsx:112
#: src/views/members/components/InviteMemberForm.tsx:231
msgid "Invite member"
msgstr "Mitglied einladen"
#: src/views/members/components/InviteMemberForm.tsx:195
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/boards/components/TemplateBoards.tsx:69
msgid "Junior"
msgstr "Junior"
@@ -953,14 +983,14 @@ msgstr "Kanban funktioniert besser im Team. Perfekt für kleine und wachsende Te
msgid "Kanban reimagined"
msgstr "Kanban neu gedacht"
#: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:67
#: src/views/settings/components/DeleteAccountConfirmation.tsx:57
#: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:67
msgid "Keep in mind that this action is irreversible."
msgstr "Beachten Sie, dass diese Aktion nicht rückgängig gemacht werden kann."
#: src/views/card/index.tsx:117
#: src/views/board/components/NewCardForm.tsx:398
#: src/views/board/components/Filters.tsx:101
#: src/views/board/components/NewCardForm.tsx:398
#: src/views/card/index.tsx:117
msgid "Labels"
msgstr "Labels"
@@ -988,7 +1018,7 @@ msgstr "Lizenz"
msgid "Light"
msgstr "Hell"
#: src/views/public/board/index.tsx:57
#: src/views/public/board/index.tsx:62
msgid "Link copied"
msgstr "Link kopiert"
@@ -1016,7 +1046,7 @@ msgstr "Langfristig"
msgid "Low Priority"
msgstr "Niedrige Priorität"
#: src/components/AuthForm.tsx:338
#: src/components/AuthForm.tsx:369
msgid "magic link"
msgstr "Magic Link"
@@ -1033,16 +1063,16 @@ msgstr "hat Checklistenelement <0>{0}</0> als unvollständig markiert"
msgid "Medium Priority"
msgstr "Mittlere Priorität"
#: src/views/members/index.tsx:161
#: src/views/card/index.tsx:125
#: src/views/board/components/NewCardForm.tsx:357
#: src/views/board/components/Filters.tsx:93
#: src/components/SideNavigation.tsx:73
#: src/views/board/components/Filters.tsx:93
#: src/views/board/components/NewCardForm.tsx:357
#: src/views/card/index.tsx:125
#: src/views/members/index.tsx:171
msgid "Members"
msgstr "Mitglieder"
#. placeholder {0}: workspace.name ?? "Workspace"
#: src/views/members/index.tsx:157
#: src/views/members/index.tsx:167
msgid "Members | {0}"
msgstr "Mitglieder | {0}"
@@ -1050,6 +1080,10 @@ msgstr "Mitglieder | {0}"
msgid "Monthly"
msgstr "Monatlich"
#: src/views/members/components/InviteMemberForm.tsx:92
msgid "monthly billing"
msgstr "monatliche Abrechnung"
#. placeholder {0}: truncate(fromList)
#. placeholder {1}: truncate(toList)
#: src/views/card/components/ActivityList.tsx:98
@@ -1060,8 +1094,8 @@ msgstr "hat die Karte von <0>{0}</0> nach <1>{1}</1> verschoben"
msgid "moved the card to another list"
msgstr "hat die Karte in eine andere Liste verschoben"
#: src/views/boards/components/NewBoardForm.tsx:99
#: src/components/LabelForm.tsx:135
#: src/views/boards/components/NewBoardForm.tsx:99
msgid "Name"
msgstr "Name"
@@ -1093,8 +1127,8 @@ msgstr "Neuer Import"
msgid "New label"
msgstr "Neues Label"
#: src/views/board/index.tsx:394
#: src/views/board/components/NewListForm.tsx:112
#: src/views/board/index.tsx:394
msgid "New list"
msgstr "Neue Liste"
@@ -1110,7 +1144,7 @@ msgstr "Neues Passwort muss sich vom aktuellen Passwort unterscheiden"
msgid "New Ticket"
msgstr "Neues Ticket"
#: src/components/NewWorkspaceForm.tsx:64
#: src/components/NewWorkspaceForm.tsx:65
msgid "New workspace"
msgstr "Neuer Workspace"
@@ -1130,7 +1164,7 @@ msgstr "Keine Boards"
msgid "No boards found"
msgstr "Keine Boards gefunden"
#: src/views/home/index.tsx:85
#: src/views/home/index.tsx:86
msgid "No credit card required"
msgstr "Keine Kreditkarte erforderlich"
@@ -1154,7 +1188,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:280
#: src/components/AuthForm.tsx:311
msgid "or"
msgstr "oder"
@@ -1182,11 +1216,11 @@ msgstr "Passwort muss mindestens 8 Zeichen lang sein"
msgid "Passwords do not match"
msgstr "Passwörter stimmen nicht überein"
#: src/views/home/components/Pricing.tsx:101
#: src/views/home/components/Pricing.tsx:96
msgid "Payment frequency"
msgstr "Zahlungshäufigkeit"
#: src/views/members/index.tsx:118
#: src/views/members/index.tsx:128
msgid "Pending"
msgstr "Ausstehend"
@@ -1207,15 +1241,15 @@ msgstr "Planung"
msgid "Please confirm your new password"
msgstr "Bitte bestätigen Sie Ihr neues Passwort"
#: src/components/AuthForm.tsx:306
#: src/components/AuthForm.tsx:337
msgid "Please enter a valid email address"
msgstr "Bitte gib eine gültige E-Mail-Adresse ein"
#: src/components/AuthForm.tsx:294
#: src/components/AuthForm.tsx:325
msgid "Please enter a valid name"
msgstr "Bitte gib einen gültigen Namen ein"
#: src/components/AuthForm.tsx:319
#: src/components/AuthForm.tsx:350
msgid "Please enter a valid password"
msgstr "Bitte gib ein gültiges Passwort ein"
@@ -1223,46 +1257,47 @@ msgstr "Bitte gib ein gültiges Passwort ein"
msgid "Please select a file to upload."
msgstr "Bitte wähle eine Datei zum Hochladen aus."
#: src/views/settings/components/UpdateWorkspaceUrlForm.tsx:74
#: src/views/settings/components/UpdateWorkspaceNameForm.tsx:57
#: src/views/settings/components/UpdateWorkspaceDescriptionForm.tsx:62
#: src/views/settings/components/UpdateDisplayNameForm.tsx:55
#: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:46
#: src/views/settings/components/DeleteAccountConfirmation.tsx:40
#: src/views/settings/components/Avatar.tsx:40
#: src/views/settings/components/Avatar.tsx:98
#: src/views/members/components/InviteMemberForm.tsx:64
#: src/views/members/components/DeleteMemberConfirmation.tsx:28
#: src/views/card/index.tsx:172
#: src/views/card/components/NewCommentForm.tsx:31
#: src/views/card/components/NewChecklistItemForm.tsx:89
#: src/views/card/components/NewChecklistForm.tsx:70
#: src/views/card/components/MemberSelector.tsx:80
#: src/views/card/components/ListSelector.tsx:53
#: src/views/card/components/LabelSelector.tsx:73
#: src/views/card/components/DeleteCommentConfirmation.tsx:45
#: src/views/card/components/DeleteChecklistConfirmation.tsx:37
#: src/views/card/components/DeleteCardConfirmation.tsx:52
#: src/views/card/components/Comment.tsx:64
#: src/views/card/components/ChecklistNameInput.tsx:46
#: src/views/card/components/ChecklistItemRow.tsx:60
#: src/views/card/components/ChecklistItemRow.tsx:88
#: src/views/boards/components/ImportBoardsForm.tsx:205
#: src/components/DeleteLabelConfirmation.tsx:26
#: src/components/FeedbackModal.tsx:41
#: src/components/NewWorkspaceForm.tsx:42
#: src/views/board/components/NewCardForm.tsx:174
#: src/views/board/components/NewListForm.tsx:78
#: src/views/board/components/UpdateBoardSlugForm.tsx:72
#: src/views/board/components/VisibilityButton.tsx:53
#: src/views/board/index.tsx:134
#: src/views/board/index.tsx:190
#: src/views/board/components/VisibilityButton.tsx:53
#: src/views/board/components/UpdateBoardSlugForm.tsx:72
#: src/views/board/components/NewListForm.tsx:78
#: src/views/board/components/NewCardForm.tsx:174
#: src/components/NewWorkspaceForm.tsx:41
#: src/components/FeedbackModal.tsx:41
#: src/components/DeleteLabelConfirmation.tsx:26
#: src/views/boards/components/ImportBoardsForm.tsx:205
#: src/views/card/components/ChecklistItemRow.tsx:60
#: src/views/card/components/ChecklistItemRow.tsx:88
#: src/views/card/components/ChecklistNameInput.tsx:46
#: src/views/card/components/Comment.tsx:64
#: src/views/card/components/DeleteCardConfirmation.tsx:52
#: src/views/card/components/DeleteChecklistConfirmation.tsx:37
#: src/views/card/components/DeleteCommentConfirmation.tsx:45
#: src/views/card/components/LabelSelector.tsx:73
#: src/views/card/components/ListSelector.tsx:53
#: src/views/card/components/MemberSelector.tsx:80
#: src/views/card/components/NewChecklistForm.tsx:70
#: src/views/card/components/NewChecklistItemForm.tsx:89
#: 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:83
#: src/views/members/components/InviteMemberForm.tsx:133
#: src/views/settings/components/Avatar.tsx:40
#: src/views/settings/components/Avatar.tsx:98
#: src/views/settings/components/DeleteAccountConfirmation.tsx:40
#: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:46
#: src/views/settings/components/UpdateDisplayNameForm.tsx:55
#: src/views/settings/components/UpdateWorkspaceDescriptionForm.tsx:62
#: src/views/settings/components/UpdateWorkspaceNameForm.tsx:57
#: src/views/settings/components/UpdateWorkspaceUrlForm.tsx:74
msgid "Please try again later, or contact customer support."
msgstr "Bitte versuche es später noch einmal oder kontaktiere den Kundensupport."
#: src/views/home/components/Pricing.tsx:85
#: src/views/home/components/Header.tsx:15
#: src/views/home/components/Footer.tsx:50
#: src/views/home/components/Header.tsx:15
#: src/views/home/components/Pricing.tsx:85
msgid "Pricing"
msgstr "Preise"
@@ -1318,7 +1353,7 @@ msgstr "Remote"
msgid "Remove"
msgstr "Entfernen"
#: src/views/members/index.tsx:132
#: src/views/members/index.tsx:142
msgid "Remove member"
msgstr "Mitglied entfernen"
@@ -1369,12 +1404,12 @@ msgstr "Überprüfung"
msgid "Revoke"
msgstr "Widerrufen"
#: src/views/home/components/Header.tsx:13
#: src/views/home/components/Footer.tsx:36
#: src/views/home/components/Header.tsx:13
msgid "Roadmap"
msgstr "Roadmap"
#: src/views/members/index.tsx:191
#: src/views/members/index.tsx:215
msgid "Role"
msgstr "Rolle"
@@ -1406,7 +1441,7 @@ msgstr "Quelle auswählen"
msgid "Self Host"
msgstr "Selbst hosten"
#: src/views/home/index.tsx:81
#: src/views/home/index.tsx:82
msgid "Self host with Github"
msgstr "Selbst hosten mit Github"
@@ -1422,8 +1457,8 @@ msgstr "Feedback senden"
msgid "Senior"
msgstr "Senior"
#: src/views/settings/index.tsx:140
#: src/components/SideNavigation.tsx:78
#: src/views/settings/index.tsx:140
msgid "Settings"
msgstr "Einstellungen"
@@ -1450,7 +1485,7 @@ msgstr "Registrierung deaktiviert"
msgid "Sign up is currently disabled. Please try again later."
msgstr "Die Registrierung ist derzeit deaktiviert. Bitte versuche es später erneut."
#: src/components/AuthForm.tsx:335
#: src/components/AuthForm.tsx:366
msgid "Sign up with "
msgstr "Registrieren mit "
@@ -1470,12 +1505,12 @@ msgstr "Social Media"
msgid "Software Development"
msgstr "Softwareentwicklung"
#: src/views/home/index.tsx:37
#: src/views/home/index.tsx:38
msgid "Star on Github"
msgstr "Stern auf Github"
#: src/components/AuthForm.tsx:188
#: src/components/AuthForm.tsx:205
#: src/components/AuthForm.tsx:203
#: src/components/AuthForm.tsx:220
msgid "Success"
msgstr "Erfolg"
@@ -1491,6 +1526,11 @@ msgstr "Unterstütze die Entwicklung des Projekts"
msgid "System"
msgstr "System"
#: src/views/members/components/InviteMemberForm.tsx:183
#: src/views/members/index.tsx:184
msgid "Team Plan"
msgstr "Team-Plan"
#: src/views/home/components/Pricing.tsx:46
msgid "Teams"
msgstr "Teams"
@@ -1515,7 +1555,7 @@ msgstr "Das eingegebene aktuelle Passwort ist falsch."
msgid "The main difference between Kan and Trello is that Kan is open source, allowing anyone to view, modify, and contribute to our code. Our cloud offering also offers no restrictions on features for individual use, whereas Trello locks basic features such as the number of boards you can create behind a paywall."
msgstr "Der hauptunterschied zwischen Kan und Trello ist, dass Kan open source ist und jedem ermöglicht, unseren code einzusehen, zu ändern und dazu beizutragen. Unser cloud-angebot bietet außerdem keine einschränkungen bei funktionen für die individuelle nutzung, während Trello grundlegende funktionen wie die anzahl der boards, die du erstellen kannst, hinter einer paywall versteckt."
#: src/views/home/index.tsx:65
#: src/views/home/index.tsx:66
msgid "The open source <0/> alternative to Trello"
msgstr "Die open source <0/> alternative zu Trello"
@@ -1532,14 +1572,14 @@ msgstr "Design"
msgid "They won't be able to access this workspace."
msgstr "Sie werden keinen Zugriff mehr auf diesen Workspace haben."
#: src/views/card/components/DeleteCommentConfirmation.tsx:68
#: src/views/card/components/DeleteChecklistConfirmation.tsx:58
#: src/views/card/components/DeleteCardConfirmation.tsx:78
#: src/components/DeleteLabelConfirmation.tsx:44
#: src/views/card/components/DeleteCardConfirmation.tsx:78
#: src/views/card/components/DeleteChecklistConfirmation.tsx:58
#: src/views/card/components/DeleteCommentConfirmation.tsx:68
msgid "This action can't be undone."
msgstr "Diese Aktion kann nicht rückgängig gemacht werden."
#: src/views/public/board/index.tsx:146
#: src/views/public/board/index.tsx:151
msgid "This board is private or does not exist"
msgstr "Dieses Board ist privat oder existiert nicht"
@@ -1604,7 +1644,7 @@ msgstr "Checkliste kann nicht erstellt werden"
msgid "Unable to create list"
msgstr "Liste konnte nicht erstellt werden"
#: src/components/NewWorkspaceForm.tsx:40
#: src/components/NewWorkspaceForm.tsx:41
msgid "Unable to create workspace"
msgstr "Workspace konnte nicht erstellt werden"
@@ -1640,8 +1680,8 @@ msgstr "Board-URL kann nicht aktualisiert werden"
msgid "Unable to update board visibility"
msgstr "Board-Sichtbarkeit konnte nicht aktualisiert werden"
#: src/views/card/index.tsx:171
#: src/views/board/index.tsx:189
#: src/views/card/index.tsx:172
msgid "Unable to update card"
msgstr "Karte konnte nicht aktualisiert werden"
@@ -1661,8 +1701,8 @@ msgstr "Kommentar konnte nicht aktualisiert werden"
msgid "Unable to update labels"
msgstr "Labels konnten nicht aktualisiert werden"
#: src/views/card/components/ListSelector.tsx:52
#: src/views/board/index.tsx:133
#: src/views/card/components/ListSelector.tsx:52
msgid "Unable to update list"
msgstr "Liste konnte nicht aktualisiert werden"
@@ -1703,11 +1743,11 @@ msgstr "Unbegrenzte kommentare"
msgid "Unlimited lists"
msgstr "Unbegrenzte listen"
#: src/views/settings/components/UpdateWorkspaceUrlForm.tsx:154
#: src/views/settings/components/UpdateWorkspaceNameForm.tsx:82
#: src/views/settings/components/UpdateWorkspaceDescriptionForm.tsx:90
#: src/views/settings/components/UpdateDisplayNameForm.tsx:79
#: src/views/board/components/UpdateBoardSlugForm.tsx:174
#: src/views/settings/components/UpdateDisplayNameForm.tsx:79
#: src/views/settings/components/UpdateWorkspaceDescriptionForm.tsx:90
#: src/views/settings/components/UpdateWorkspaceNameForm.tsx:82
#: src/views/settings/components/UpdateWorkspaceUrlForm.tsx:154
msgid "Update"
msgstr "Aktualisieren"
@@ -1736,6 +1776,10 @@ msgstr "hat den Titel in <0>{0}</0> geändert"
msgid "Upgrade"
msgstr "Upgrade"
#: src/views/members/components/InviteMemberForm.tsx:222
msgid "Upgrade to Team Plan"
msgstr "Upgrade auf Team-Plan"
#: src/views/boards/components/TemplateBoards.tsx:37
#: src/views/boards/components/TemplateBoards.tsx:54
msgid "Urgent"
@@ -1757,11 +1801,11 @@ msgstr "URL muss mindestens 3 Zeichen lang sein"
msgid "Use template"
msgstr "Vorlage verwenden"
#: src/views/members/index.tsx:185
#: src/views/members/index.tsx:209
msgid "User"
msgstr "Benutzer"
#: src/views/members/components/InviteMemberForm.tsx:58
#: src/views/members/components/InviteMemberForm.tsx:77
msgid "User is already a member of this workspace"
msgstr "Benutzer ist bereits Mitglied dieses Arbeitsbereichs"
@@ -1781,7 +1825,7 @@ msgstr "Verwalte deine Abrechnung und dein Abonnement."
msgid "View docs"
msgstr "Dokumentation ansehen"
#: src/views/public/board/index.tsx:120
#: src/views/public/board/index.tsx:125
msgid "View only"
msgstr "Nur ansehen"
@@ -1789,7 +1833,7 @@ msgstr "Nur ansehen"
msgid "View our roadmap."
msgstr "Sieh dir unsere roadmap an."
#: src/views/public/board/index.tsx:149
#: src/views/public/board/index.tsx:154
msgid "View workspace"
msgstr "Workspace anzeigen"
@@ -1849,13 +1893,13 @@ msgstr "Workspace-Beschreibung muss mindestens 3 Zeichen lang sein"
msgid "Workspace description updated"
msgstr "Workspace-Beschreibung aktualisiert"
#: src/views/home/components/Pricing.tsx:54
#: src/views/home/components/Features.tsx:83
#: src/views/home/components/Pricing.tsx:54
msgid "Workspace members"
msgstr "Workspace-mitglieder"
#: src/components/NewWorkspaceForm.tsx:81
#: src/views/settings/index.tsx:158
#: src/components/NewWorkspaceForm.tsx:80
msgid "Workspace name"
msgstr "Name des Workspaces"
@@ -1907,11 +1951,11 @@ 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:206
#: src/components/AuthForm.tsx:221
msgid "You have been logged in successfully."
msgstr "Sie haben sich erfolgreich angemeldet."
#: src/components/AuthForm.tsx:189
#: src/components/AuthForm.tsx:204
msgid "You have been signed up successfully."
msgstr "Sie haben sich erfolgreich registriert."

File diff suppressed because one or more lines are too long

View File

@@ -23,7 +23,7 @@ msgstr ", or see our"
#. placeholder {0}: card?.title ?? "Card"
#. placeholder {1}: board?.name ?? "Board"
#: src/views/card/index.tsx:213
#: src/views/card/index.tsx:214
msgid "{0} | {1}"
msgstr "{0} | {1}"
@@ -40,6 +40,15 @@ 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:91
#: src/views/members/components/InviteMemberForm.tsx:106
msgid "$10/month"
msgstr "$10/month"
#: src/views/members/components/InviteMemberForm.tsx:106
msgid "$8/month"
msgstr "$8/month"
#: src/views/home/components/Pricing.tsx:36
msgid "1 user"
msgstr "1 user"
@@ -52,7 +61,7 @@ msgstr "1 user"
#~ "A powerful, flexible kanban app that helps you organise work,\n"
#~ " track progress, and deliver results—all in one place."
#: src/views/home/index.tsx:71
#: src/views/home/index.tsx:72
msgid "A powerful, flexible kanban app that helps you organise work, track progress, and deliver results—all in one place."
msgstr "A powerful, flexible kanban app that helps you organise work, track progress, and deliver results—all in one place."
@@ -60,8 +69,8 @@ msgstr "A powerful, flexible kanban app that helps you organise work, track prog
msgid "Account deleted"
msgstr "Account deleted"
#: src/views/public/board/CardModal.tsx:140
#: src/views/card/index.tsx:288
#: src/views/card/index.tsx:289
#: src/views/public/board/CardModal.tsx:143
msgid "Activity"
msgstr "Activity"
@@ -73,8 +82,8 @@ msgstr "Activity logs"
msgid "Add a card"
msgstr "Add a card"
#: src/views/card/components/NewCommentForm.tsx:57
#: src/views/card/components/Comment.tsx:146
#: src/views/card/components/NewCommentForm.tsx:57
msgid "Add a comment..."
msgstr "Add a comment..."
@@ -103,8 +112,8 @@ msgstr "Add details..."
msgid "Add label"
msgstr "Add label"
#: src/views/members/components/InviteMemberForm.tsx:85
#: src/views/card/components/MemberSelector.tsx:130
#: src/views/members/components/InviteMemberForm.tsx:149
msgid "Add member"
msgstr "Add member"
@@ -143,13 +152,17 @@ msgstr "added label <0>{0}</0>"
#~ msgid "added label <0>{label}</0>"
#~ msgstr "added label <0>{label}</0>"
#: src/views/members/components/InviteMemberForm.tsx:186
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/home/components/Pricing.tsx:55
msgid "Admin roles"
msgstr "Admin roles"
#: src/views/home/components/Pricing.tsx:97
msgid "All seats are free during the beta until Sept 1st!"
msgstr "All seats are free during the beta until Sept 1st!"
#~ msgid "All seats are free during the beta until Sept 1st!"
#~ msgstr "All seats are free during the beta until Sept 1st!"
#: src/views/home/components/Footer.tsx:18
msgid "All systems operational"
@@ -241,8 +254,16 @@ msgstr "Backlog"
msgid "Basic Kanban"
msgstr "Basic Kanban"
#: src/views/settings/index.tsx:198
#: src/views/members/components/InviteMemberForm.tsx:107
msgid "billed annually"
msgstr "billed annually"
#: src/views/members/components/InviteMemberForm.tsx:107
msgid "billed monthly"
msgstr "billed monthly"
#: src/views/boards/components/TemplateBoards.tsx:55
#: src/views/settings/index.tsx:198
msgid "Billing"
msgstr "Billing"
@@ -270,8 +291,8 @@ msgstr "Board name cannot exceed 100 characters"
msgid "Board name is required"
msgstr "Board name is required"
#: src/views/public/board/index.tsx:143
#: src/views/board/index.tsx:357
#: src/views/public/board/index.tsx:148
msgid "Board not found"
msgstr "Board not found"
@@ -283,7 +304,7 @@ msgstr "Board URL can only contain letters, numbers, and hyphens"
msgid "Board URL cannot exceed 60 characters"
msgstr "Board URL cannot exceed 60 characters"
#: src/views/public/board/index.tsx:59
#: src/views/public/board/index.tsx:64
msgid "Board URL copied to clipboard"
msgstr "Board URL copied to clipboard"
@@ -299,8 +320,8 @@ msgstr "Board visibility"
msgid "Board visibility updated"
msgstr "Board visibility updated"
#: src/views/boards/index.tsx:27
#: src/components/SideNavigation.tsx:68
#: src/views/boards/index.tsx:27
msgid "Boards"
msgstr "Boards"
@@ -325,20 +346,20 @@ msgstr "Bug"
msgid "Bug Report"
msgstr "Bug Report"
#: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:98
#: src/views/settings/components/DeleteAccountConfirmation.tsx:88
#: src/views/settings/components/CustomURLConfirmation.tsx:50
#: src/views/settings/components/ChangePasswordConfirmation.tsx:168
#: src/views/members/components/DeleteMemberConfirmation.tsx:55
#: src/views/card/components/DeleteCommentConfirmation.tsx:76
#: src/views/card/components/DeleteChecklistConfirmation.tsx:63
#: src/views/card/components/DeleteCardConfirmation.tsx:86
#: src/views/card/components/Comment.tsx:158
#: src/components/DeleteLabelConfirmation.tsx:49
#: src/views/card/components/Comment.tsx:158
#: src/views/card/components/DeleteCardConfirmation.tsx:86
#: 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/ChangePasswordConfirmation.tsx:168
#: src/views/settings/components/CustomURLConfirmation.tsx:50
#: src/views/settings/components/DeleteAccountConfirmation.tsx:88
#: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:98
msgid "Cancel"
msgstr "Cancel"
#: src/views/card/index.tsx:259
#: src/views/card/index.tsx:260
msgid "Card not found"
msgstr "Card not found"
@@ -346,10 +367,10 @@ msgstr "Card not found"
msgid "Card title"
msgstr "Card title"
#: src/views/settings/index.tsx:291
#: src/views/settings/index.tsx:301
#: src/views/settings/components/ChangePasswordConfirmation.tsx:109
#: src/views/settings/components/ChangePasswordConfirmation.tsx:178
#: src/views/settings/index.tsx:291
#: src/views/settings/index.tsx:301
msgid "Change Password"
msgstr "Change Password"
@@ -357,8 +378,8 @@ msgstr "Change Password"
msgid "Change the language of the app."
msgstr "Change the language of the app."
#: src/views/auth/signup/index.tsx:67
#: src/views/auth/login/index.tsx:41
#: src/views/auth/signup/index.tsx:67
msgid "Check your inbox"
msgstr "Check your inbox"
@@ -370,8 +391,8 @@ msgstr "Checklist name"
msgid "Clear filters"
msgstr "Clear filters"
#: src/views/auth/signup/index.tsx:72
#: src/views/auth/login/index.tsx:46
#: src/views/auth/signup/index.tsx:72
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."
@@ -420,8 +441,8 @@ msgstr "Confirm URL change"
msgid "Confirm your new password"
msgstr "Confirm your new password"
#: src/views/settings/index.tsx:235
#: src/views/boards/components/ImportBoardsForm.tsx:157
#: src/views/settings/index.tsx:235
msgid "Connect Trello"
msgstr "Connect Trello"
@@ -445,12 +466,12 @@ msgstr "Contact us"
msgid "Content Creation"
msgstr "Content Creation"
#: src/components/AuthForm.tsx:335
#: src/components/AuthForm.tsx:366
msgid "Continue with "
msgstr "Continue with "
#. placeholder {0}: provider.name
#: src/components/AuthForm.tsx:269
#. placeholder {0}: key === "oidc" ? oidcProviderName : provider.name
#: src/components/AuthForm.tsx:297
msgid "Continue with {0}"
msgstr "Continue with {0}"
@@ -458,9 +479,9 @@ msgstr "Continue with {0}"
msgid "Control who can view and edit your boards."
msgstr "Control who can view and edit your boards."
#: src/views/board/components/NewListForm.tsx:140
#: src/views/board/components/NewCardForm.tsx:458
#: src/components/LabelForm.tsx:213
#: src/views/board/components/NewCardForm.tsx:458
#: src/views/board/components/NewListForm.tsx:140
msgid "Create another"
msgstr "Create another"
@@ -500,8 +521,8 @@ msgstr "Create new board"
msgid "Create new key"
msgstr "Create new key"
#: src/views/card/components/LabelSelector.tsx:98
#: src/views/board/components/NewCardForm.tsx:394
#: src/views/card/components/LabelSelector.tsx:98
msgid "Create new label"
msgstr "Create new label"
@@ -509,8 +530,8 @@ msgstr "Create new label"
msgid "Create new list"
msgstr "Create new list"
#: src/components/NewWorkspaceForm.tsx:94
#: src/components/WorkspaceMenu.tsx:116
#: src/components/NewWorkspaceForm.tsx:93
msgid "Create workspace"
msgstr "Create workspace"
@@ -542,17 +563,17 @@ msgstr "Customer Support"
msgid "Dark"
msgstr "Dark"
#: src/views/card/components/DeleteCommentConfirmation.tsx:82
#: src/views/card/components/DeleteChecklistConfirmation.tsx:66
#: src/views/card/components/DeleteCardConfirmation.tsx:92
#: src/components/LabelForm.tsx:228
#: src/components/DeleteLabelConfirmation.tsx:51
#: src/components/LabelForm.tsx:228
#: src/views/card/components/DeleteCardConfirmation.tsx:92
#: src/views/card/components/DeleteChecklistConfirmation.tsx:66
#: src/views/card/components/DeleteCommentConfirmation.tsx:82
msgid "Delete"
msgstr "Delete"
#: src/views/settings/components/DeleteAccountConfirmation.tsx:96
#: src/views/settings/index.tsx:309
#: src/views/settings/index.tsx:319
#: src/views/settings/components/DeleteAccountConfirmation.tsx:96
msgid "Delete account"
msgstr "Delete account"
@@ -572,9 +593,9 @@ msgstr "Delete comment"
msgid "Delete list"
msgstr "Delete list"
#: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:106
#: src/views/settings/index.tsx:272
#: src/views/settings/index.tsx:283
#: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:106
msgid "Delete workspace"
msgstr "Delete workspace"
@@ -636,9 +657,9 @@ msgstr "docs"
msgid "Docs"
msgstr "Docs"
#: src/views/home/components/Footer.tsx:77
#: src/views/boards/components/TemplateBoards.tsx:23
#: src/components/UserMenu.tsx:191
#: src/views/boards/components/TemplateBoards.tsx:23
#: src/views/home/components/Footer.tsx:77
msgid "Documentation"
msgstr "Documentation"
@@ -653,8 +674,8 @@ msgstr "Don't have an account? <0><1>Sign up</1></0>"
msgid "Done"
msgstr "Done"
#: src/views/board/components/UpdateBoardSlugForm.tsx:115
#: src/views/board/components/BoardDropdown.tsx:15
#: src/views/board/components/UpdateBoardSlugForm.tsx:115
msgid "Edit board URL"
msgstr "Edit board URL"
@@ -674,11 +695,11 @@ msgstr "Edit workspace URL"
msgid "Editing"
msgstr "Editing"
#: src/components/AuthForm.tsx:337
#: src/components/AuthForm.tsx:368
msgid "email"
msgstr "email"
#: src/views/members/components/InviteMemberForm.tsx:99
#: src/views/members/components/InviteMemberForm.tsx:163
msgid "Email"
msgstr "Email"
@@ -694,11 +715,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:302
#: src/components/AuthForm.tsx:333
msgid "Enter your email address"
msgstr "Enter your email address"
#: src/components/AuthForm.tsx:290
#: src/components/AuthForm.tsx:321
msgid "Enter your name"
msgstr "Enter your name"
@@ -706,7 +727,7 @@ msgstr "Enter your name"
msgid "Enter your new password"
msgstr "Enter your new password"
#: src/components/AuthForm.tsx:315
#: src/components/AuthForm.tsx:346
msgid "Enter your password"
msgstr "Enter your password"
@@ -730,8 +751,8 @@ msgstr "Error deleting workspace"
msgid "Error disconnecting Trello"
msgstr "Error disconnecting Trello"
#: src/views/members/components/InviteMemberForm.tsx:57
#: src/views/members/components/InviteMemberForm.tsx:63
#: src/views/members/components/InviteMemberForm.tsx:76
#: src/views/members/components/InviteMemberForm.tsx:82
msgid "Error inviting member"
msgstr "Error inviting member"
@@ -755,6 +776,10 @@ msgstr "Error updating workspace name"
msgid "Error updating workspace URL"
msgstr "Error updating workspace URL"
#: src/views/members/components/InviteMemberForm.tsx:132
msgid "Error upgrading subscription"
msgstr "Error upgrading subscription"
#: src/views/settings/components/Avatar.tsx:56
#: src/views/settings/components/Avatar.tsx:97
msgid "Error uploading profile image"
@@ -773,12 +798,12 @@ msgid "Execution"
msgstr "Execution"
#. placeholder {0}: provider.at(0)?.toUpperCase() + provider.slice(1)
#: src/components/AuthForm.tsx:241
#: src/components/AuthForm.tsx:269
msgid "Failed to login with {0}. Please try again."
msgstr "Failed to login with {0}. Please try again."
#: src/views/home/components/Footer.tsx:51
#: src/views/home/components/Faqs.tsx:143
#: src/views/home/components/Footer.tsx:51
msgid "FAQs"
msgstr "FAQs"
@@ -790,14 +815,14 @@ msgstr "Feature"
msgid "Feature Request"
msgstr "Feature Request"
#: src/views/home/components/Header.tsx:14
#: src/views/home/components/Footer.tsx:49
#: src/views/home/components/Features.tsx:125
#: src/views/home/components/Footer.tsx:49
#: src/views/home/components/Header.tsx:14
msgid "Features"
msgstr "Features"
#: src/components/UserMenu.tsx:199
#: src/components/FeedbackModal.tsx:59
#: src/components/UserMenu.tsx:199
msgid "Feedback"
msgstr "Feedback"
@@ -822,6 +847,11 @@ msgstr "For long-term sustainability, we recognise all good open source projects
msgid "Free"
msgstr "Free"
#: src/views/members/components/InviteMemberForm.tsx:192
#: src/views/members/index.tsx:184
msgid "Free Plan"
msgstr "Free Plan"
#: src/views/home/components/Pricing.tsx:34
msgid "Free, forever"
msgstr "Free, forever"
@@ -834,10 +864,10 @@ msgstr "Full-time"
msgid "Fun"
msgstr "Fun"
#: src/views/auth/signup/index.tsx:67
#: src/views/home/components/Cta.tsx:61
#: src/views/home/components/Header.tsx:102
#: src/views/home/components/Header.tsx:141
#: src/views/home/components/Cta.tsx:61
#: src/views/auth/signup/index.tsx:67
msgid "Get started"
msgstr "Get started"
@@ -862,7 +892,7 @@ msgstr "Get started for free today"
msgid "Get started for free, with no usage limits. For collaboration, upgrade to a plan that fits the size of your team."
msgstr "Get started for free, with no usage limits. For collaboration, upgrade to a plan that fits the size of your team."
#: src/views/home/index.tsx:75
#: src/views/home/index.tsx:76
msgid "Get started on Cloud"
msgstr "Get started on Cloud"
@@ -977,23 +1007,27 @@ msgstr "Integrations"
msgid "Interviewing"
msgstr "Interviewing"
#: src/views/members/components/InviteMemberForm.tsx:26
#: src/views/members/components/InviteMemberForm.tsx:45
msgid "Invalid email address"
msgstr "Invalid email address"
#: src/views/members/index.tsx:169
#: src/views/members/index.tsx:193
msgid "Invite"
msgstr "Invite"
#: src/views/members/components/InviteMemberForm.tsx:113
#: src/views/members/components/InviteMemberForm.tsx:207
msgid "Invite another"
msgstr "Invite another"
#: src/views/members/components/InviteMemberForm.tsx:123
#: src/views/card/components/MemberSelector.tsx:112
#: src/views/members/components/InviteMemberForm.tsx:231
msgid "Invite member"
msgstr "Invite member"
#: src/views/members/components/InviteMemberForm.tsx:195
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/boards/components/TemplateBoards.tsx:69
msgid "Junior"
msgstr "Junior"
@@ -1006,14 +1040,14 @@ msgstr "Kanban is better with a team. Perfect for small and growing teams lookin
msgid "Kanban reimagined"
msgstr "Kanban reimagined"
#: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:67
#: src/views/settings/components/DeleteAccountConfirmation.tsx:57
#: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:67
msgid "Keep in mind that this action is irreversible."
msgstr "Keep in mind that this action is irreversible."
#: src/views/card/index.tsx:117
#: src/views/board/components/NewCardForm.tsx:398
#: src/views/board/components/Filters.tsx:101
#: src/views/board/components/NewCardForm.tsx:398
#: src/views/card/index.tsx:117
msgid "Labels"
msgstr "Labels"
@@ -1041,7 +1075,7 @@ msgstr "License"
msgid "Light"
msgstr "Light"
#: src/views/public/board/index.tsx:57
#: src/views/public/board/index.tsx:62
msgid "Link copied"
msgstr "Link copied"
@@ -1069,7 +1103,7 @@ msgstr "Long-term"
msgid "Low Priority"
msgstr "Low Priority"
#: src/components/AuthForm.tsx:338
#: src/components/AuthForm.tsx:369
msgid "magic link"
msgstr "magic link"
@@ -1086,16 +1120,16 @@ msgstr "marked checklist item <0>{0}</0> as incomplete"
msgid "Medium Priority"
msgstr "Medium Priority"
#: src/views/members/index.tsx:161
#: src/views/card/index.tsx:125
#: src/views/board/components/NewCardForm.tsx:357
#: src/views/board/components/Filters.tsx:93
#: src/components/SideNavigation.tsx:73
#: src/views/board/components/Filters.tsx:93
#: src/views/board/components/NewCardForm.tsx:357
#: src/views/card/index.tsx:125
#: src/views/members/index.tsx:171
msgid "Members"
msgstr "Members"
#. placeholder {0}: workspace.name ?? "Workspace"
#: src/views/members/index.tsx:157
#: src/views/members/index.tsx:167
msgid "Members | {0}"
msgstr "Members | {0}"
@@ -1103,6 +1137,10 @@ msgstr "Members | {0}"
msgid "Monthly"
msgstr "Monthly"
#: src/views/members/components/InviteMemberForm.tsx:92
msgid "monthly billing"
msgstr "monthly billing"
#. placeholder {0}: truncate(fromList)
#. placeholder {1}: truncate(toList)
#: src/views/card/components/ActivityList.tsx:98
@@ -1117,8 +1155,8 @@ msgstr "moved the card from <0>{0}</0> to<1>{1}</1>"
msgid "moved the card to another list"
msgstr "moved the card to another list"
#: src/views/boards/components/NewBoardForm.tsx:99
#: src/components/LabelForm.tsx:135
#: src/views/boards/components/NewBoardForm.tsx:99
msgid "Name"
msgstr "Name"
@@ -1150,8 +1188,8 @@ msgstr "New import"
msgid "New label"
msgstr "New label"
#: src/views/board/index.tsx:394
#: src/views/board/components/NewListForm.tsx:112
#: src/views/board/index.tsx:394
msgid "New list"
msgstr "New list"
@@ -1171,7 +1209,7 @@ msgstr "New Ticket"
#~ msgid "New Ticket, Triaging, In Progress, Awaiting Customer, Resolution, Done"
#~ msgstr "New Ticket, Triaging, In Progress, Awaiting Customer, Resolution, Done"
#: src/components/NewWorkspaceForm.tsx:64
#: src/components/NewWorkspaceForm.tsx:65
msgid "New workspace"
msgstr "New workspace"
@@ -1191,7 +1229,7 @@ msgstr "No boards"
msgid "No boards found"
msgstr "No boards found"
#: src/views/home/index.tsx:85
#: src/views/home/index.tsx:86
msgid "No credit card required"
msgstr "No credit card required"
@@ -1215,7 +1253,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:280
#: src/components/AuthForm.tsx:311
msgid "or"
msgstr "or"
@@ -1243,11 +1281,11 @@ msgstr "Password must be at least 8 characters"
msgid "Passwords do not match"
msgstr "Passwords do not match"
#: src/views/home/components/Pricing.tsx:101
#: src/views/home/components/Pricing.tsx:96
msgid "Payment frequency"
msgstr "Payment frequency"
#: src/views/members/index.tsx:118
#: src/views/members/index.tsx:128
msgid "Pending"
msgstr "Pending"
@@ -1268,15 +1306,15 @@ msgstr "Planning"
msgid "Please confirm your new password"
msgstr "Please confirm your new password"
#: src/components/AuthForm.tsx:306
#: src/components/AuthForm.tsx:337
msgid "Please enter a valid email address"
msgstr "Please enter a valid email address"
#: src/components/AuthForm.tsx:294
#: src/components/AuthForm.tsx:325
msgid "Please enter a valid name"
msgstr "Please enter a valid name"
#: src/components/AuthForm.tsx:319
#: src/components/AuthForm.tsx:350
msgid "Please enter a valid password"
msgstr "Please enter a valid password"
@@ -1284,46 +1322,47 @@ msgstr "Please enter a valid password"
msgid "Please select a file to upload."
msgstr "Please select a file to upload."
#: src/views/settings/components/UpdateWorkspaceUrlForm.tsx:74
#: src/views/settings/components/UpdateWorkspaceNameForm.tsx:57
#: src/views/settings/components/UpdateWorkspaceDescriptionForm.tsx:62
#: src/views/settings/components/UpdateDisplayNameForm.tsx:55
#: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:46
#: src/views/settings/components/DeleteAccountConfirmation.tsx:40
#: src/views/settings/components/Avatar.tsx:40
#: src/views/settings/components/Avatar.tsx:98
#: src/views/members/components/InviteMemberForm.tsx:64
#: src/views/members/components/DeleteMemberConfirmation.tsx:28
#: src/views/card/index.tsx:172
#: src/views/card/components/NewCommentForm.tsx:31
#: src/views/card/components/NewChecklistItemForm.tsx:89
#: src/views/card/components/NewChecklistForm.tsx:70
#: src/views/card/components/MemberSelector.tsx:80
#: src/views/card/components/ListSelector.tsx:53
#: src/views/card/components/LabelSelector.tsx:73
#: src/views/card/components/DeleteCommentConfirmation.tsx:45
#: src/views/card/components/DeleteChecklistConfirmation.tsx:37
#: src/views/card/components/DeleteCardConfirmation.tsx:52
#: src/views/card/components/Comment.tsx:64
#: src/views/card/components/ChecklistNameInput.tsx:46
#: src/views/card/components/ChecklistItemRow.tsx:60
#: src/views/card/components/ChecklistItemRow.tsx:88
#: src/views/boards/components/ImportBoardsForm.tsx:205
#: src/components/DeleteLabelConfirmation.tsx:26
#: src/components/FeedbackModal.tsx:41
#: src/components/NewWorkspaceForm.tsx:42
#: src/views/board/components/NewCardForm.tsx:174
#: src/views/board/components/NewListForm.tsx:78
#: src/views/board/components/UpdateBoardSlugForm.tsx:72
#: src/views/board/components/VisibilityButton.tsx:53
#: src/views/board/index.tsx:134
#: src/views/board/index.tsx:190
#: src/views/board/components/VisibilityButton.tsx:53
#: src/views/board/components/UpdateBoardSlugForm.tsx:72
#: src/views/board/components/NewListForm.tsx:78
#: src/views/board/components/NewCardForm.tsx:174
#: src/components/NewWorkspaceForm.tsx:41
#: src/components/FeedbackModal.tsx:41
#: src/components/DeleteLabelConfirmation.tsx:26
#: src/views/boards/components/ImportBoardsForm.tsx:205
#: src/views/card/components/ChecklistItemRow.tsx:60
#: src/views/card/components/ChecklistItemRow.tsx:88
#: src/views/card/components/ChecklistNameInput.tsx:46
#: src/views/card/components/Comment.tsx:64
#: src/views/card/components/DeleteCardConfirmation.tsx:52
#: src/views/card/components/DeleteChecklistConfirmation.tsx:37
#: src/views/card/components/DeleteCommentConfirmation.tsx:45
#: src/views/card/components/LabelSelector.tsx:73
#: src/views/card/components/ListSelector.tsx:53
#: src/views/card/components/MemberSelector.tsx:80
#: src/views/card/components/NewChecklistForm.tsx:70
#: src/views/card/components/NewChecklistItemForm.tsx:89
#: 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:83
#: src/views/members/components/InviteMemberForm.tsx:133
#: src/views/settings/components/Avatar.tsx:40
#: src/views/settings/components/Avatar.tsx:98
#: src/views/settings/components/DeleteAccountConfirmation.tsx:40
#: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:46
#: src/views/settings/components/UpdateDisplayNameForm.tsx:55
#: src/views/settings/components/UpdateWorkspaceDescriptionForm.tsx:62
#: src/views/settings/components/UpdateWorkspaceNameForm.tsx:57
#: src/views/settings/components/UpdateWorkspaceUrlForm.tsx:74
msgid "Please try again later, or contact customer support."
msgstr "Please try again later, or contact customer support."
#: src/views/home/components/Pricing.tsx:85
#: src/views/home/components/Header.tsx:15
#: src/views/home/components/Footer.tsx:50
#: src/views/home/components/Header.tsx:15
#: src/views/home/components/Pricing.tsx:85
msgid "Pricing"
msgstr "Pricing"
@@ -1379,7 +1418,7 @@ msgstr "Remote"
msgid "Remove"
msgstr "Remove"
#: src/views/members/index.tsx:132
#: src/views/members/index.tsx:142
msgid "Remove member"
msgstr "Remove member"
@@ -1434,12 +1473,12 @@ msgstr "Review"
msgid "Revoke"
msgstr "Revoke"
#: src/views/home/components/Header.tsx:13
#: src/views/home/components/Footer.tsx:36
#: src/views/home/components/Header.tsx:13
msgid "Roadmap"
msgstr "Roadmap"
#: src/views/members/index.tsx:191
#: src/views/members/index.tsx:215
msgid "Role"
msgstr "Role"
@@ -1471,7 +1510,7 @@ msgstr "Select source"
msgid "Self Host"
msgstr "Self Host"
#: src/views/home/index.tsx:81
#: src/views/home/index.tsx:82
msgid "Self host with Github"
msgstr "Self host with Github"
@@ -1491,8 +1530,8 @@ msgstr "Send feedback"
msgid "Senior"
msgstr "Senior"
#: src/views/settings/index.tsx:140
#: src/components/SideNavigation.tsx:78
#: src/views/settings/index.tsx:140
msgid "Settings"
msgstr "Settings"
@@ -1519,7 +1558,7 @@ msgstr "Sign up disabled"
msgid "Sign up is currently disabled. Please try again later."
msgstr "Sign up is currently disabled. Please try again later."
#: src/components/AuthForm.tsx:335
#: src/components/AuthForm.tsx:366
msgid "Sign up with "
msgstr "Sign up with "
@@ -1539,12 +1578,12 @@ msgstr "Social Media"
msgid "Software Development"
msgstr "Software Development"
#: src/views/home/index.tsx:37
#: src/views/home/index.tsx:38
msgid "Star on Github"
msgstr "Star on Github"
#: src/components/AuthForm.tsx:188
#: src/components/AuthForm.tsx:205
#: src/components/AuthForm.tsx:203
#: src/components/AuthForm.tsx:220
msgid "Success"
msgstr "Success"
@@ -1560,6 +1599,11 @@ msgstr "Support the development of the project"
msgid "System"
msgstr "System"
#: src/views/members/components/InviteMemberForm.tsx:183
#: src/views/members/index.tsx:184
msgid "Team Plan"
msgstr "Team Plan"
#: src/views/home/components/Pricing.tsx:46
msgid "Teams"
msgstr "Teams"
@@ -1584,7 +1628,7 @@ msgstr "The current password you entered is incorrect."
msgid "The main difference between Kan and Trello is that Kan is open source, allowing anyone to view, modify, and contribute to our code. Our cloud offering also offers no restrictions on features for individual use, whereas Trello locks basic features such as the number of boards you can create behind a paywall."
msgstr "The main difference between Kan and Trello is that Kan is open source, allowing anyone to view, modify, and contribute to our code. Our cloud offering also offers no restrictions on features for individual use, whereas Trello locks basic features such as the number of boards you can create behind a paywall."
#: src/views/home/index.tsx:65
#: src/views/home/index.tsx:66
msgid "The open source <0/> alternative to Trello"
msgstr "The open source <0/> alternative to Trello"
@@ -1601,14 +1645,14 @@ msgstr "Theme"
msgid "They won't be able to access this workspace."
msgstr "They won't be able to access this workspace."
#: src/views/card/components/DeleteCommentConfirmation.tsx:68
#: src/views/card/components/DeleteChecklistConfirmation.tsx:58
#: src/views/card/components/DeleteCardConfirmation.tsx:78
#: src/components/DeleteLabelConfirmation.tsx:44
#: src/views/card/components/DeleteCardConfirmation.tsx:78
#: src/views/card/components/DeleteChecklistConfirmation.tsx:58
#: src/views/card/components/DeleteCommentConfirmation.tsx:68
msgid "This action can't be undone."
msgstr "This action can't be undone."
#: src/views/public/board/index.tsx:146
#: src/views/public/board/index.tsx:151
msgid "This board is private or does not exist"
msgstr "This board is private or does not exist"
@@ -1677,7 +1721,7 @@ msgstr "Unable to create checklist"
msgid "Unable to create list"
msgstr "Unable to create list"
#: src/components/NewWorkspaceForm.tsx:40
#: src/components/NewWorkspaceForm.tsx:41
msgid "Unable to create workspace"
msgstr "Unable to create workspace"
@@ -1713,8 +1757,8 @@ msgstr "Unable to update board URL"
msgid "Unable to update board visibility"
msgstr "Unable to update board visibility"
#: src/views/card/index.tsx:171
#: src/views/board/index.tsx:189
#: src/views/card/index.tsx:172
msgid "Unable to update card"
msgstr "Unable to update card"
@@ -1734,8 +1778,8 @@ msgstr "Unable to update comment"
msgid "Unable to update labels"
msgstr "Unable to update labels"
#: src/views/card/components/ListSelector.tsx:52
#: src/views/board/index.tsx:133
#: src/views/card/components/ListSelector.tsx:52
msgid "Unable to update list"
msgstr "Unable to update list"
@@ -1780,11 +1824,11 @@ msgstr "Unlimited comments"
msgid "Unlimited lists"
msgstr "Unlimited lists"
#: src/views/settings/components/UpdateWorkspaceUrlForm.tsx:154
#: src/views/settings/components/UpdateWorkspaceNameForm.tsx:82
#: src/views/settings/components/UpdateWorkspaceDescriptionForm.tsx:90
#: src/views/settings/components/UpdateDisplayNameForm.tsx:79
#: src/views/board/components/UpdateBoardSlugForm.tsx:174
#: src/views/settings/components/UpdateDisplayNameForm.tsx:79
#: src/views/settings/components/UpdateWorkspaceDescriptionForm.tsx:90
#: src/views/settings/components/UpdateWorkspaceNameForm.tsx:82
#: src/views/settings/components/UpdateWorkspaceUrlForm.tsx:154
msgid "Update"
msgstr "Update"
@@ -1817,6 +1861,10 @@ msgstr "updated the title to <0>{0}</0>"
msgid "Upgrade"
msgstr "Upgrade"
#: src/views/members/components/InviteMemberForm.tsx:222
msgid "Upgrade to Team Plan"
msgstr "Upgrade to Team Plan"
#: src/views/boards/components/TemplateBoards.tsx:37
#: src/views/boards/components/TemplateBoards.tsx:54
msgid "Urgent"
@@ -1838,11 +1886,11 @@ msgstr "URL must be at least 3 characters long"
msgid "Use template"
msgstr "Use template"
#: src/views/members/index.tsx:185
#: src/views/members/index.tsx:209
msgid "User"
msgstr "User"
#: src/views/members/components/InviteMemberForm.tsx:58
#: src/views/members/components/InviteMemberForm.tsx:77
msgid "User is already a member of this workspace"
msgstr "User is already a member of this workspace"
@@ -1862,7 +1910,7 @@ msgstr "View and manage your billing and subscription."
msgid "View docs"
msgstr "View docs"
#: src/views/public/board/index.tsx:120
#: src/views/public/board/index.tsx:125
msgid "View only"
msgstr "View only"
@@ -1870,7 +1918,7 @@ msgstr "View only"
msgid "View our roadmap."
msgstr "View our roadmap."
#: src/views/public/board/index.tsx:149
#: src/views/public/board/index.tsx:154
msgid "View workspace"
msgstr "View workspace"
@@ -1934,13 +1982,13 @@ msgstr "Workspace description must be at least 3 characters long"
msgid "Workspace description updated"
msgstr "Workspace description updated"
#: src/views/home/components/Pricing.tsx:54
#: src/views/home/components/Features.tsx:83
#: src/views/home/components/Pricing.tsx:54
msgid "Workspace members"
msgstr "Workspace members"
#: src/components/NewWorkspaceForm.tsx:81
#: src/views/settings/index.tsx:158
#: src/components/NewWorkspaceForm.tsx:80
msgid "Workspace name"
msgstr "Workspace name"
@@ -1992,11 +2040,11 @@ 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:206
#: src/components/AuthForm.tsx:221
msgid "You have been logged in successfully."
msgstr "You have been logged in successfully."
#: src/components/AuthForm.tsx:189
#: src/components/AuthForm.tsx:204
msgid "You have been signed up successfully."
msgstr "You have been signed up successfully."

File diff suppressed because one or more lines are too long

View File

@@ -23,7 +23,7 @@ msgstr ", o consulta nuestra"
#. placeholder {0}: card?.title ?? "Card"
#. placeholder {1}: board?.name ?? "Board"
#: src/views/card/index.tsx:213
#: src/views/card/index.tsx:214
msgid "{0} | {1}"
msgstr "{0} | {1}"
@@ -36,11 +36,20 @@ 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:91
#: src/views/members/components/InviteMemberForm.tsx:106
msgid "$10/month"
msgstr "$10/mes"
#: src/views/members/components/InviteMemberForm.tsx:106
msgid "$8/month"
msgstr "$8/mes"
#: src/views/home/components/Pricing.tsx:36
msgid "1 user"
msgstr "1 usuario"
#: src/views/home/index.tsx:71
#: src/views/home/index.tsx:72
msgid "A powerful, flexible kanban app that helps you organise work, track progress, and deliver results—all in one place."
msgstr "Una aplicación kanban potente y flexible que te ayuda a organizar el trabajo, seguir el progreso y entregar resultados, todo en un solo lugar."
@@ -48,8 +57,8 @@ msgstr "Una aplicación kanban potente y flexible que te ayuda a organizar el tr
msgid "Account deleted"
msgstr "Cuenta eliminada"
#: src/views/public/board/CardModal.tsx:140
#: src/views/card/index.tsx:288
#: src/views/card/index.tsx:289
#: src/views/public/board/CardModal.tsx:143
msgid "Activity"
msgstr "Actividad"
@@ -61,8 +70,8 @@ msgstr "Registros de actividad"
msgid "Add a card"
msgstr "Añadir una tarjeta"
#: src/views/card/components/NewCommentForm.tsx:57
#: src/views/card/components/Comment.tsx:146
#: src/views/card/components/NewCommentForm.tsx:57
msgid "Add a comment..."
msgstr "Añadir un comentario..."
@@ -87,8 +96,8 @@ msgstr "Añadir detalles..."
msgid "Add label"
msgstr "Añadir etiqueta"
#: src/views/members/components/InviteMemberForm.tsx:85
#: src/views/card/components/MemberSelector.tsx:130
#: src/views/members/components/InviteMemberForm.tsx:149
msgid "Add member"
msgstr "Añadir miembro"
@@ -123,14 +132,14 @@ 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:186
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/home/components/Pricing.tsx:55
msgid "Admin roles"
msgstr "Roles de administrador"
#: src/views/home/components/Pricing.tsx:97
msgid "All seats are free during the beta until Sept 1st!"
msgstr "¡Todos los puestos son gratuitos durante la beta hasta el 1 de septiembre!"
#: src/views/home/components/Footer.tsx:18
msgid "All systems operational"
msgstr "Todos los sistemas operativos"
@@ -209,8 +218,16 @@ msgstr "Pendientes"
msgid "Basic Kanban"
msgstr "Kanban básico"
#: src/views/settings/index.tsx:198
#: src/views/members/components/InviteMemberForm.tsx:107
msgid "billed annually"
msgstr "facturado anualmente"
#: src/views/members/components/InviteMemberForm.tsx:107
msgid "billed monthly"
msgstr "facturado mensualmente"
#: src/views/boards/components/TemplateBoards.tsx:55
#: src/views/settings/index.tsx:198
msgid "Billing"
msgstr "Facturación"
@@ -234,8 +251,8 @@ msgstr "El nombre del tablero no puede exceder los 100 caracteres"
msgid "Board name is required"
msgstr "El nombre del tablero es obligatorio"
#: src/views/public/board/index.tsx:143
#: src/views/board/index.tsx:357
#: src/views/public/board/index.tsx:148
msgid "Board not found"
msgstr "Tablero no encontrado"
@@ -247,7 +264,7 @@ msgstr "La URL del tablero solo puede contener letras, números y guiones"
msgid "Board URL cannot exceed 60 characters"
msgstr "La URL del tablero no puede exceder los 60 caracteres"
#: src/views/public/board/index.tsx:59
#: src/views/public/board/index.tsx:64
msgid "Board URL copied to clipboard"
msgstr "URL del tablero copiada al portapapeles"
@@ -263,8 +280,8 @@ msgstr "Visibilidad del tablero"
msgid "Board visibility updated"
msgstr "Visibilidad del tablero actualizada"
#: src/views/boards/index.tsx:27
#: src/components/SideNavigation.tsx:68
#: src/views/boards/index.tsx:27
msgid "Boards"
msgstr "Tableros"
@@ -285,20 +302,20 @@ msgstr "Error"
msgid "Bug Report"
msgstr "Informe de error"
#: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:98
#: src/views/settings/components/DeleteAccountConfirmation.tsx:88
#: src/views/settings/components/CustomURLConfirmation.tsx:50
#: src/views/settings/components/ChangePasswordConfirmation.tsx:168
#: src/views/members/components/DeleteMemberConfirmation.tsx:55
#: src/views/card/components/DeleteCommentConfirmation.tsx:76
#: src/views/card/components/DeleteChecklistConfirmation.tsx:63
#: src/views/card/components/DeleteCardConfirmation.tsx:86
#: src/views/card/components/Comment.tsx:158
#: src/components/DeleteLabelConfirmation.tsx:49
#: src/views/card/components/Comment.tsx:158
#: src/views/card/components/DeleteCardConfirmation.tsx:86
#: 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/ChangePasswordConfirmation.tsx:168
#: src/views/settings/components/CustomURLConfirmation.tsx:50
#: src/views/settings/components/DeleteAccountConfirmation.tsx:88
#: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:98
msgid "Cancel"
msgstr "Cancelar"
#: src/views/card/index.tsx:259
#: src/views/card/index.tsx:260
msgid "Card not found"
msgstr "Tarjeta no encontrada"
@@ -306,10 +323,10 @@ msgstr "Tarjeta no encontrada"
msgid "Card title"
msgstr "Título de la tarjeta"
#: src/views/settings/index.tsx:291
#: src/views/settings/index.tsx:301
#: src/views/settings/components/ChangePasswordConfirmation.tsx:109
#: src/views/settings/components/ChangePasswordConfirmation.tsx:178
#: src/views/settings/index.tsx:291
#: src/views/settings/index.tsx:301
msgid "Change Password"
msgstr "Cambiar contraseña"
@@ -317,8 +334,8 @@ msgstr "Cambiar contraseña"
msgid "Change the language of the app."
msgstr "Cambiar el idioma de la aplicación."
#: src/views/auth/signup/index.tsx:67
#: src/views/auth/login/index.tsx:41
#: src/views/auth/signup/index.tsx:67
msgid "Check your inbox"
msgstr "Revisa tu bandeja de entrada"
@@ -330,8 +347,8 @@ msgstr "Nombre de la lista de verificación"
msgid "Clear filters"
msgstr "Borrar filtros"
#: src/views/auth/signup/index.tsx:72
#: src/views/auth/login/index.tsx:46
#: src/views/auth/signup/index.tsx:72
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."
@@ -380,8 +397,8 @@ msgstr "Confirmar cambio de URL"
msgid "Confirm your new password"
msgstr "Confirma tu nueva contraseña"
#: src/views/settings/index.tsx:235
#: src/views/boards/components/ImportBoardsForm.tsx:157
#: src/views/settings/index.tsx:235
msgid "Connect Trello"
msgstr "Conectar Trello"
@@ -405,12 +422,12 @@ msgstr "Contáctanos"
msgid "Content Creation"
msgstr "Creación de contenido"
#: src/components/AuthForm.tsx:335
#: src/components/AuthForm.tsx:366
msgid "Continue with "
msgstr "Continuar con "
#. placeholder {0}: provider.name
#: src/components/AuthForm.tsx:269
#. placeholder {0}: key === "oidc" ? oidcProviderName : provider.name
#: src/components/AuthForm.tsx:297
msgid "Continue with {0}"
msgstr "Continuar con {0}"
@@ -418,9 +435,9 @@ msgstr "Continuar con {0}"
msgid "Control who can view and edit your boards."
msgstr "Controla quién puede ver y editar tus tableros."
#: src/views/board/components/NewListForm.tsx:140
#: src/views/board/components/NewCardForm.tsx:458
#: src/components/LabelForm.tsx:213
#: src/views/board/components/NewCardForm.tsx:458
#: src/views/board/components/NewListForm.tsx:140
msgid "Create another"
msgstr "Crear otro"
@@ -452,8 +469,8 @@ msgstr "Crear nuevo tablero"
msgid "Create new key"
msgstr "Crear nueva clave"
#: src/views/card/components/LabelSelector.tsx:98
#: src/views/board/components/NewCardForm.tsx:394
#: src/views/card/components/LabelSelector.tsx:98
msgid "Create new label"
msgstr "Crear nueva etiqueta"
@@ -461,8 +478,8 @@ msgstr "Crear nueva etiqueta"
msgid "Create new list"
msgstr "Crear nueva lista"
#: src/components/NewWorkspaceForm.tsx:94
#: src/components/WorkspaceMenu.tsx:116
#: src/components/NewWorkspaceForm.tsx:93
msgid "Create workspace"
msgstr "Crear espacio de trabajo"
@@ -494,17 +511,17 @@ msgstr "Atención al cliente"
msgid "Dark"
msgstr "Oscuro"
#: src/views/card/components/DeleteCommentConfirmation.tsx:82
#: src/views/card/components/DeleteChecklistConfirmation.tsx:66
#: src/views/card/components/DeleteCardConfirmation.tsx:92
#: src/components/LabelForm.tsx:228
#: src/components/DeleteLabelConfirmation.tsx:51
#: src/components/LabelForm.tsx:228
#: src/views/card/components/DeleteCardConfirmation.tsx:92
#: src/views/card/components/DeleteChecklistConfirmation.tsx:66
#: src/views/card/components/DeleteCommentConfirmation.tsx:82
msgid "Delete"
msgstr "Eliminar"
#: src/views/settings/components/DeleteAccountConfirmation.tsx:96
#: src/views/settings/index.tsx:309
#: src/views/settings/index.tsx:319
#: src/views/settings/components/DeleteAccountConfirmation.tsx:96
msgid "Delete account"
msgstr "Eliminar cuenta"
@@ -524,9 +541,9 @@ msgstr "Eliminar comentario"
msgid "Delete list"
msgstr "Eliminar lista"
#: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:106
#: src/views/settings/index.tsx:272
#: src/views/settings/index.tsx:283
#: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:106
msgid "Delete workspace"
msgstr "Eliminar espacio de trabajo"
@@ -588,9 +605,9 @@ msgstr "documentos"
msgid "Docs"
msgstr "Documentos"
#: src/views/home/components/Footer.tsx:77
#: src/views/boards/components/TemplateBoards.tsx:23
#: src/components/UserMenu.tsx:191
#: src/views/boards/components/TemplateBoards.tsx:23
#: src/views/home/components/Footer.tsx:77
msgid "Documentation"
msgstr "Documentación"
@@ -605,8 +622,8 @@ msgstr "¿No tienes una cuenta? <0><1>Regístrate</1></0>"
msgid "Done"
msgstr "Terminado"
#: src/views/board/components/UpdateBoardSlugForm.tsx:115
#: src/views/board/components/BoardDropdown.tsx:15
#: src/views/board/components/UpdateBoardSlugForm.tsx:115
msgid "Edit board URL"
msgstr "Editar URL del tablero"
@@ -626,11 +643,11 @@ msgstr "Editar URL del espacio de trabajo"
msgid "Editing"
msgstr "Editando"
#: src/components/AuthForm.tsx:337
#: src/components/AuthForm.tsx:368
msgid "email"
msgstr "correo electrónico"
#: src/views/members/components/InviteMemberForm.tsx:99
#: src/views/members/components/InviteMemberForm.tsx:163
msgid "Email"
msgstr "Correo electrónico"
@@ -646,11 +663,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:302
#: src/components/AuthForm.tsx:333
msgid "Enter your email address"
msgstr "Introduce tu dirección de correo electrónico"
#: src/components/AuthForm.tsx:290
#: src/components/AuthForm.tsx:321
msgid "Enter your name"
msgstr "Introduce tu nombre"
@@ -658,7 +675,7 @@ msgstr "Introduce tu nombre"
msgid "Enter your new password"
msgstr "Introduce tu nueva contraseña"
#: src/components/AuthForm.tsx:315
#: src/components/AuthForm.tsx:346
msgid "Enter your password"
msgstr "Introduce tu contraseña"
@@ -682,8 +699,8 @@ msgstr "Error al eliminar el espacio de trabajo"
msgid "Error disconnecting Trello"
msgstr "Error al desconectar Trello"
#: src/views/members/components/InviteMemberForm.tsx:57
#: src/views/members/components/InviteMemberForm.tsx:63
#: src/views/members/components/InviteMemberForm.tsx:76
#: src/views/members/components/InviteMemberForm.tsx:82
msgid "Error inviting member"
msgstr "Error al invitar al miembro"
@@ -707,6 +724,10 @@ 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:132
msgid "Error upgrading subscription"
msgstr "Error al actualizar la suscripción"
#: src/views/settings/components/Avatar.tsx:56
#: src/views/settings/components/Avatar.tsx:97
msgid "Error uploading profile image"
@@ -725,12 +746,12 @@ msgid "Execution"
msgstr "Ejecución"
#. placeholder {0}: provider.at(0)?.toUpperCase() + provider.slice(1)
#: src/components/AuthForm.tsx:241
#: src/components/AuthForm.tsx:269
msgid "Failed to login with {0}. Please try again."
msgstr "Error al iniciar sesión con {0}. Por favor, inténtalo de nuevo."
#: src/views/home/components/Footer.tsx:51
#: src/views/home/components/Faqs.tsx:143
#: src/views/home/components/Footer.tsx:51
msgid "FAQs"
msgstr "Preguntas frecuentes"
@@ -742,14 +763,14 @@ msgstr "Función"
msgid "Feature Request"
msgstr "Solicitud de función"
#: src/views/home/components/Header.tsx:14
#: src/views/home/components/Footer.tsx:49
#: src/views/home/components/Features.tsx:125
#: src/views/home/components/Footer.tsx:49
#: src/views/home/components/Header.tsx:14
msgid "Features"
msgstr "Características"
#: src/components/UserMenu.tsx:199
#: src/components/FeedbackModal.tsx:59
#: src/components/UserMenu.tsx:199
msgid "Feedback"
msgstr "Comentarios"
@@ -773,6 +794,11 @@ msgstr "Para la sostenibilidad a largo plazo, reconocemos que todos los buenos p
msgid "Free"
msgstr "Gratis"
#: src/views/members/components/InviteMemberForm.tsx:192
#: src/views/members/index.tsx:184
msgid "Free Plan"
msgstr "Plan gratuito"
#: src/views/home/components/Pricing.tsx:34
msgid "Free, forever"
msgstr "Gratis, para siempre"
@@ -785,10 +811,10 @@ msgstr "Tiempo completo"
msgid "Fun"
msgstr "Diversión"
#: src/views/auth/signup/index.tsx:67
#: src/views/home/components/Cta.tsx:61
#: src/views/home/components/Header.tsx:102
#: src/views/home/components/Header.tsx:141
#: src/views/home/components/Cta.tsx:61
#: src/views/auth/signup/index.tsx:67
msgid "Get started"
msgstr "Comenzar"
@@ -813,7 +839,7 @@ msgstr "Comienza gratis hoy mismo"
msgid "Get started for free, with no usage limits. For collaboration, upgrade to a plan that fits the size of your team."
msgstr "Comienza gratis, sin límites de uso. Para colaboración, actualiza a un plan que se ajuste al tamaño de tu equipo."
#: src/views/home/index.tsx:75
#: src/views/home/index.tsx:76
msgid "Get started on Cloud"
msgstr "Comenzar en la nube"
@@ -924,23 +950,27 @@ msgstr "Integraciones"
msgid "Interviewing"
msgstr "Entrevistando"
#: src/views/members/components/InviteMemberForm.tsx:26
#: src/views/members/components/InviteMemberForm.tsx:45
msgid "Invalid email address"
msgstr "Dirección de correo electrónico no válida"
#: src/views/members/index.tsx:169
#: src/views/members/index.tsx:193
msgid "Invite"
msgstr "Invitar"
#: src/views/members/components/InviteMemberForm.tsx:113
#: src/views/members/components/InviteMemberForm.tsx:207
msgid "Invite another"
msgstr "Invitar a otro"
#: src/views/members/components/InviteMemberForm.tsx:123
#: src/views/card/components/MemberSelector.tsx:112
#: src/views/members/components/InviteMemberForm.tsx:231
msgid "Invite member"
msgstr "Invitar miembro"
#: src/views/members/components/InviteMemberForm.tsx:195
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/boards/components/TemplateBoards.tsx:69
msgid "Junior"
msgstr "Junior"
@@ -953,14 +983,14 @@ msgstr "Kanban es mejor con un equipo. Perfecto para equipos pequeños y en crec
msgid "Kanban reimagined"
msgstr "Kanban reinventado"
#: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:67
#: src/views/settings/components/DeleteAccountConfirmation.tsx:57
#: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:67
msgid "Keep in mind that this action is irreversible."
msgstr "Ten en cuenta que esta acción es irreversible."
#: src/views/card/index.tsx:117
#: src/views/board/components/NewCardForm.tsx:398
#: src/views/board/components/Filters.tsx:101
#: src/views/board/components/NewCardForm.tsx:398
#: src/views/card/index.tsx:117
msgid "Labels"
msgstr "Etiquetas"
@@ -988,7 +1018,7 @@ msgstr "Licencia"
msgid "Light"
msgstr "Claro"
#: src/views/public/board/index.tsx:57
#: src/views/public/board/index.tsx:62
msgid "Link copied"
msgstr "Enlace copiado"
@@ -1016,7 +1046,7 @@ msgstr "Largo plazo"
msgid "Low Priority"
msgstr "Prioridad baja"
#: src/components/AuthForm.tsx:338
#: src/components/AuthForm.tsx:369
msgid "magic link"
msgstr "enlace mágico"
@@ -1033,16 +1063,16 @@ msgstr "marcó el elemento <0>{0}</0> de la lista de verificación como incomple
msgid "Medium Priority"
msgstr "Prioridad media"
#: src/views/members/index.tsx:161
#: src/views/card/index.tsx:125
#: src/views/board/components/NewCardForm.tsx:357
#: src/views/board/components/Filters.tsx:93
#: src/components/SideNavigation.tsx:73
#: src/views/board/components/Filters.tsx:93
#: src/views/board/components/NewCardForm.tsx:357
#: src/views/card/index.tsx:125
#: src/views/members/index.tsx:171
msgid "Members"
msgstr "Miembros"
#. placeholder {0}: workspace.name ?? "Workspace"
#: src/views/members/index.tsx:157
#: src/views/members/index.tsx:167
msgid "Members | {0}"
msgstr "Miembros | {0}"
@@ -1050,6 +1080,10 @@ msgstr "Miembros | {0}"
msgid "Monthly"
msgstr "Mensual"
#: src/views/members/components/InviteMemberForm.tsx:92
msgid "monthly billing"
msgstr "facturación mensual"
#. placeholder {0}: truncate(fromList)
#. placeholder {1}: truncate(toList)
#: src/views/card/components/ActivityList.tsx:98
@@ -1060,8 +1094,8 @@ msgstr "movió la tarjeta de <0>{0}</0> a<1>{1}</1>"
msgid "moved the card to another list"
msgstr "movió la tarjeta a otra lista"
#: src/views/boards/components/NewBoardForm.tsx:99
#: src/components/LabelForm.tsx:135
#: src/views/boards/components/NewBoardForm.tsx:99
msgid "Name"
msgstr "Nombre"
@@ -1093,8 +1127,8 @@ msgstr "Nueva importación"
msgid "New label"
msgstr "Nueva etiqueta"
#: src/views/board/index.tsx:394
#: src/views/board/components/NewListForm.tsx:112
#: src/views/board/index.tsx:394
msgid "New list"
msgstr "Nueva lista"
@@ -1110,7 +1144,7 @@ msgstr "La nueva contraseña debe ser diferente de la contraseña actual"
msgid "New Ticket"
msgstr "Nuevo ticket"
#: src/components/NewWorkspaceForm.tsx:64
#: src/components/NewWorkspaceForm.tsx:65
msgid "New workspace"
msgstr "Nuevo espacio de trabajo"
@@ -1130,7 +1164,7 @@ msgstr "Sin tableros"
msgid "No boards found"
msgstr "No se encontraron tableros"
#: src/views/home/index.tsx:85
#: src/views/home/index.tsx:86
msgid "No credit card required"
msgstr "No se requiere tarjeta de crédito"
@@ -1154,7 +1188,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:280
#: src/components/AuthForm.tsx:311
msgid "or"
msgstr "o"
@@ -1182,11 +1216,11 @@ msgstr "La contraseña debe tener al menos 8 caracteres"
msgid "Passwords do not match"
msgstr "Las contraseñas no coinciden"
#: src/views/home/components/Pricing.tsx:101
#: src/views/home/components/Pricing.tsx:96
msgid "Payment frequency"
msgstr "Frecuencia de pago"
#: src/views/members/index.tsx:118
#: src/views/members/index.tsx:128
msgid "Pending"
msgstr "Pendiente"
@@ -1207,15 +1241,15 @@ msgstr "Planificación"
msgid "Please confirm your new password"
msgstr "Por favor, confirma tu nueva contraseña"
#: src/components/AuthForm.tsx:306
#: src/components/AuthForm.tsx:337
msgid "Please enter a valid email address"
msgstr "Por favor, introduce una dirección de correo electrónico válida"
#: src/components/AuthForm.tsx:294
#: src/components/AuthForm.tsx:325
msgid "Please enter a valid name"
msgstr "Por favor, introduce un nombre válido"
#: src/components/AuthForm.tsx:319
#: src/components/AuthForm.tsx:350
msgid "Please enter a valid password"
msgstr "Por favor, introduce una contraseña válida"
@@ -1223,46 +1257,47 @@ msgstr "Por favor, introduce una contraseña válida"
msgid "Please select a file to upload."
msgstr "Por favor selecciona un archivo para subir."
#: src/views/settings/components/UpdateWorkspaceUrlForm.tsx:74
#: src/views/settings/components/UpdateWorkspaceNameForm.tsx:57
#: src/views/settings/components/UpdateWorkspaceDescriptionForm.tsx:62
#: src/views/settings/components/UpdateDisplayNameForm.tsx:55
#: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:46
#: src/views/settings/components/DeleteAccountConfirmation.tsx:40
#: src/views/settings/components/Avatar.tsx:40
#: src/views/settings/components/Avatar.tsx:98
#: src/views/members/components/InviteMemberForm.tsx:64
#: src/views/members/components/DeleteMemberConfirmation.tsx:28
#: src/views/card/index.tsx:172
#: src/views/card/components/NewCommentForm.tsx:31
#: src/views/card/components/NewChecklistItemForm.tsx:89
#: src/views/card/components/NewChecklistForm.tsx:70
#: src/views/card/components/MemberSelector.tsx:80
#: src/views/card/components/ListSelector.tsx:53
#: src/views/card/components/LabelSelector.tsx:73
#: src/views/card/components/DeleteCommentConfirmation.tsx:45
#: src/views/card/components/DeleteChecklistConfirmation.tsx:37
#: src/views/card/components/DeleteCardConfirmation.tsx:52
#: src/views/card/components/Comment.tsx:64
#: src/views/card/components/ChecklistNameInput.tsx:46
#: src/views/card/components/ChecklistItemRow.tsx:60
#: src/views/card/components/ChecklistItemRow.tsx:88
#: src/views/boards/components/ImportBoardsForm.tsx:205
#: src/components/DeleteLabelConfirmation.tsx:26
#: src/components/FeedbackModal.tsx:41
#: src/components/NewWorkspaceForm.tsx:42
#: src/views/board/components/NewCardForm.tsx:174
#: src/views/board/components/NewListForm.tsx:78
#: src/views/board/components/UpdateBoardSlugForm.tsx:72
#: src/views/board/components/VisibilityButton.tsx:53
#: src/views/board/index.tsx:134
#: src/views/board/index.tsx:190
#: src/views/board/components/VisibilityButton.tsx:53
#: src/views/board/components/UpdateBoardSlugForm.tsx:72
#: src/views/board/components/NewListForm.tsx:78
#: src/views/board/components/NewCardForm.tsx:174
#: src/components/NewWorkspaceForm.tsx:41
#: src/components/FeedbackModal.tsx:41
#: src/components/DeleteLabelConfirmation.tsx:26
#: src/views/boards/components/ImportBoardsForm.tsx:205
#: src/views/card/components/ChecklistItemRow.tsx:60
#: src/views/card/components/ChecklistItemRow.tsx:88
#: src/views/card/components/ChecklistNameInput.tsx:46
#: src/views/card/components/Comment.tsx:64
#: src/views/card/components/DeleteCardConfirmation.tsx:52
#: src/views/card/components/DeleteChecklistConfirmation.tsx:37
#: src/views/card/components/DeleteCommentConfirmation.tsx:45
#: src/views/card/components/LabelSelector.tsx:73
#: src/views/card/components/ListSelector.tsx:53
#: src/views/card/components/MemberSelector.tsx:80
#: src/views/card/components/NewChecklistForm.tsx:70
#: src/views/card/components/NewChecklistItemForm.tsx:89
#: 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:83
#: src/views/members/components/InviteMemberForm.tsx:133
#: src/views/settings/components/Avatar.tsx:40
#: src/views/settings/components/Avatar.tsx:98
#: src/views/settings/components/DeleteAccountConfirmation.tsx:40
#: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:46
#: src/views/settings/components/UpdateDisplayNameForm.tsx:55
#: src/views/settings/components/UpdateWorkspaceDescriptionForm.tsx:62
#: src/views/settings/components/UpdateWorkspaceNameForm.tsx:57
#: src/views/settings/components/UpdateWorkspaceUrlForm.tsx:74
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/home/components/Pricing.tsx:85
#: src/views/home/components/Header.tsx:15
#: src/views/home/components/Footer.tsx:50
#: src/views/home/components/Header.tsx:15
#: src/views/home/components/Pricing.tsx:85
msgid "Pricing"
msgstr "Precios"
@@ -1318,7 +1353,7 @@ msgstr "Remoto"
msgid "Remove"
msgstr "Eliminar"
#: src/views/members/index.tsx:132
#: src/views/members/index.tsx:142
msgid "Remove member"
msgstr "Eliminar miembro"
@@ -1369,12 +1404,12 @@ msgstr "Revisión"
msgid "Revoke"
msgstr "Revocar"
#: src/views/home/components/Header.tsx:13
#: src/views/home/components/Footer.tsx:36
#: src/views/home/components/Header.tsx:13
msgid "Roadmap"
msgstr "Hoja de ruta"
#: src/views/members/index.tsx:191
#: src/views/members/index.tsx:215
msgid "Role"
msgstr "Rol"
@@ -1406,7 +1441,7 @@ msgstr "Seleccionar origen"
msgid "Self Host"
msgstr "Autoalojamiento"
#: src/views/home/index.tsx:81
#: src/views/home/index.tsx:82
msgid "Self host with Github"
msgstr "Autoalojamiento con Github"
@@ -1422,8 +1457,8 @@ msgstr "Enviar comentarios"
msgid "Senior"
msgstr "Senior"
#: src/views/settings/index.tsx:140
#: src/components/SideNavigation.tsx:78
#: src/views/settings/index.tsx:140
msgid "Settings"
msgstr "Configuración"
@@ -1450,7 +1485,7 @@ msgstr "Registro deshabilitado"
msgid "Sign up is currently disabled. Please try again later."
msgstr "El registro está actualmente deshabilitado. Por favor, inténtalo de nuevo más tarde."
#: src/components/AuthForm.tsx:335
#: src/components/AuthForm.tsx:366
msgid "Sign up with "
msgstr "Registrarse con "
@@ -1470,12 +1505,12 @@ msgstr "Redes sociales"
msgid "Software Development"
msgstr "Desarrollo de software"
#: src/views/home/index.tsx:37
#: src/views/home/index.tsx:38
msgid "Star on Github"
msgstr "Estrella en Github"
#: src/components/AuthForm.tsx:188
#: src/components/AuthForm.tsx:205
#: src/components/AuthForm.tsx:203
#: src/components/AuthForm.tsx:220
msgid "Success"
msgstr "Éxito"
@@ -1491,6 +1526,11 @@ msgstr "Apoya el desarrollo del proyecto"
msgid "System"
msgstr "Sistema"
#: src/views/members/components/InviteMemberForm.tsx:183
#: src/views/members/index.tsx:184
msgid "Team Plan"
msgstr "Plan de Equipo"
#: src/views/home/components/Pricing.tsx:46
msgid "Teams"
msgstr "Equipos"
@@ -1515,7 +1555,7 @@ msgstr "La contraseña actual que has introducido es incorrecta."
msgid "The main difference between Kan and Trello is that Kan is open source, allowing anyone to view, modify, and contribute to our code. Our cloud offering also offers no restrictions on features for individual use, whereas Trello locks basic features such as the number of boards you can create behind a paywall."
msgstr "La principal diferencia entre Kan y Trello es que Kan es de código abierto, permitiendo a cualquiera ver, modificar y contribuir a nuestro código. Nuestra oferta en la nube también ofrece funciones sin restricciones para uso individual, mientras que Trello bloquea características básicas como el número de tableros que puedes crear detrás de un muro de pago."
#: src/views/home/index.tsx:65
#: src/views/home/index.tsx:66
msgid "The open source <0/> alternative to Trello"
msgstr "La alternativa de código abierto <0/> a Trello"
@@ -1532,14 +1572,14 @@ msgstr "Tema"
msgid "They won't be able to access this workspace."
msgstr "No podrán acceder a este espacio de trabajo."
#: src/views/card/components/DeleteCommentConfirmation.tsx:68
#: src/views/card/components/DeleteChecklistConfirmation.tsx:58
#: src/views/card/components/DeleteCardConfirmation.tsx:78
#: src/components/DeleteLabelConfirmation.tsx:44
#: src/views/card/components/DeleteCardConfirmation.tsx:78
#: src/views/card/components/DeleteChecklistConfirmation.tsx:58
#: src/views/card/components/DeleteCommentConfirmation.tsx:68
msgid "This action can't be undone."
msgstr "Esta acción no se puede deshacer."
#: src/views/public/board/index.tsx:146
#: src/views/public/board/index.tsx:151
msgid "This board is private or does not exist"
msgstr "Este tablero es privado o no existe"
@@ -1604,7 +1644,7 @@ msgstr "No se puede crear la lista de verificación"
msgid "Unable to create list"
msgstr "No se puede crear la lista"
#: src/components/NewWorkspaceForm.tsx:40
#: src/components/NewWorkspaceForm.tsx:41
msgid "Unable to create workspace"
msgstr "No se puede crear el espacio de trabajo"
@@ -1640,8 +1680,8 @@ msgstr "No se puede actualizar la URL del tablero"
msgid "Unable to update board visibility"
msgstr "No se puede actualizar la visibilidad del tablero"
#: src/views/card/index.tsx:171
#: src/views/board/index.tsx:189
#: src/views/card/index.tsx:172
msgid "Unable to update card"
msgstr "No se puede actualizar la tarjeta"
@@ -1661,8 +1701,8 @@ msgstr "No se puede actualizar el comentario"
msgid "Unable to update labels"
msgstr "No se pueden actualizar las etiquetas"
#: src/views/card/components/ListSelector.tsx:52
#: src/views/board/index.tsx:133
#: src/views/card/components/ListSelector.tsx:52
msgid "Unable to update list"
msgstr "No se puede actualizar la lista"
@@ -1703,11 +1743,11 @@ msgstr "Comentarios ilimitados"
msgid "Unlimited lists"
msgstr "Listas ilimitadas"
#: src/views/settings/components/UpdateWorkspaceUrlForm.tsx:154
#: src/views/settings/components/UpdateWorkspaceNameForm.tsx:82
#: src/views/settings/components/UpdateWorkspaceDescriptionForm.tsx:90
#: src/views/settings/components/UpdateDisplayNameForm.tsx:79
#: src/views/board/components/UpdateBoardSlugForm.tsx:174
#: src/views/settings/components/UpdateDisplayNameForm.tsx:79
#: src/views/settings/components/UpdateWorkspaceDescriptionForm.tsx:90
#: src/views/settings/components/UpdateWorkspaceNameForm.tsx:82
#: src/views/settings/components/UpdateWorkspaceUrlForm.tsx:154
msgid "Update"
msgstr "Actualizar"
@@ -1736,6 +1776,10 @@ msgstr "actualizó el título a <0>{0}</0>"
msgid "Upgrade"
msgstr "Actualizar"
#: src/views/members/components/InviteMemberForm.tsx:222
msgid "Upgrade to Team Plan"
msgstr "Actualizar al Plan de Equipo"
#: src/views/boards/components/TemplateBoards.tsx:37
#: src/views/boards/components/TemplateBoards.tsx:54
msgid "Urgent"
@@ -1757,11 +1801,11 @@ msgstr "La URL debe tener al menos 3 caracteres"
msgid "Use template"
msgstr "Usar plantilla"
#: src/views/members/index.tsx:185
#: src/views/members/index.tsx:209
msgid "User"
msgstr "Usuario"
#: src/views/members/components/InviteMemberForm.tsx:58
#: src/views/members/components/InviteMemberForm.tsx:77
msgid "User is already a member of this workspace"
msgstr "El usuario ya es miembro de este espacio de trabajo"
@@ -1781,7 +1825,7 @@ msgstr "Ver y gestionar tu facturación y suscripción."
msgid "View docs"
msgstr "Ver documentación"
#: src/views/public/board/index.tsx:120
#: src/views/public/board/index.tsx:125
msgid "View only"
msgstr "Solo visualización"
@@ -1789,7 +1833,7 @@ msgstr "Solo visualización"
msgid "View our roadmap."
msgstr "Ver nuestra hoja de ruta."
#: src/views/public/board/index.tsx:149
#: src/views/public/board/index.tsx:154
msgid "View workspace"
msgstr "Ver espacio de trabajo"
@@ -1849,13 +1893,13 @@ msgstr "La descripción del espacio de trabajo debe tener al menos 3 caracteres"
msgid "Workspace description updated"
msgstr "Descripción del espacio de trabajo actualizada"
#: src/views/home/components/Pricing.tsx:54
#: src/views/home/components/Features.tsx:83
#: src/views/home/components/Pricing.tsx:54
msgid "Workspace members"
msgstr "Miembros del espacio de trabajo"
#: src/components/NewWorkspaceForm.tsx:81
#: src/views/settings/index.tsx:158
#: src/components/NewWorkspaceForm.tsx:80
msgid "Workspace name"
msgstr "Nombre del espacio de trabajo"
@@ -1907,11 +1951,11 @@ 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:206
#: src/components/AuthForm.tsx:221
msgid "You have been logged in successfully."
msgstr "Has iniciado sesión correctamente."
#: src/components/AuthForm.tsx:189
#: src/components/AuthForm.tsx:204
msgid "You have been signed up successfully."
msgstr "Te has registrado correctamente."

File diff suppressed because one or more lines are too long

View File

@@ -23,7 +23,7 @@ msgstr ", ou consultez notre"
#. placeholder {0}: card?.title ?? "Card"
#. placeholder {1}: board?.name ?? "Board"
#: src/views/card/index.tsx:213
#: src/views/card/index.tsx:214
msgid "{0} | {1}"
msgstr "{0} | {1}"
@@ -36,11 +36,20 @@ 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:91
#: src/views/members/components/InviteMemberForm.tsx:106
msgid "$10/month"
msgstr "10 $/mois"
#: src/views/members/components/InviteMemberForm.tsx:106
msgid "$8/month"
msgstr "8 $/mois"
#: src/views/home/components/Pricing.tsx:36
msgid "1 user"
msgstr "1 utilisateur"
#: src/views/home/index.tsx:71
#: src/views/home/index.tsx:72
msgid "A powerful, flexible kanban app that helps you organise work, track progress, and deliver results—all in one place."
msgstr "Une application kanban puissante et flexible qui vous aide à organiser le travail, suivre les progrès et livrer des résultats—le tout en un seul endroit."
@@ -48,8 +57,8 @@ msgstr "Une application kanban puissante et flexible qui vous aide à organiser
msgid "Account deleted"
msgstr "Compte supprimé"
#: src/views/public/board/CardModal.tsx:140
#: src/views/card/index.tsx:288
#: src/views/card/index.tsx:289
#: src/views/public/board/CardModal.tsx:143
msgid "Activity"
msgstr "Activité"
@@ -61,8 +70,8 @@ msgstr "Journaux d'activité"
msgid "Add a card"
msgstr "Ajouter une carte"
#: src/views/card/components/NewCommentForm.tsx:57
#: src/views/card/components/Comment.tsx:146
#: src/views/card/components/NewCommentForm.tsx:57
msgid "Add a comment..."
msgstr "Ajouter un commentaire..."
@@ -87,8 +96,8 @@ msgstr "Ajouter des détails..."
msgid "Add label"
msgstr "Ajouter une étiquette"
#: src/views/members/components/InviteMemberForm.tsx:85
#: src/views/card/components/MemberSelector.tsx:130
#: src/views/members/components/InviteMemberForm.tsx:149
msgid "Add member"
msgstr "Ajouter un membre"
@@ -123,14 +132,14 @@ 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:186
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/home/components/Pricing.tsx:55
msgid "Admin roles"
msgstr "Rôles d'administrateur"
#: src/views/home/components/Pricing.tsx:97
msgid "All seats are free during the beta until Sept 1st!"
msgstr "Tous les sièges sont gratuits pendant la bêta jusqu'au 1er sept. !"
#: src/views/home/components/Footer.tsx:18
msgid "All systems operational"
msgstr "Tous les systèmes opérationnels"
@@ -209,8 +218,16 @@ msgstr "Backlog"
msgid "Basic Kanban"
msgstr "Kanban basique"
#: src/views/settings/index.tsx:198
#: src/views/members/components/InviteMemberForm.tsx:107
msgid "billed annually"
msgstr "facturation annuelle"
#: src/views/members/components/InviteMemberForm.tsx:107
msgid "billed monthly"
msgstr "facturation mensuelle"
#: src/views/boards/components/TemplateBoards.tsx:55
#: src/views/settings/index.tsx:198
msgid "Billing"
msgstr "Facturation"
@@ -234,8 +251,8 @@ msgstr "Le nom du tableau ne peut pas dépasser 100 caractères"
msgid "Board name is required"
msgstr "Le nom du tableau est requis"
#: src/views/public/board/index.tsx:143
#: src/views/board/index.tsx:357
#: src/views/public/board/index.tsx:148
msgid "Board not found"
msgstr "Tableau introuvable"
@@ -247,7 +264,7 @@ msgstr "L'URL du tableau ne peut contenir que des lettres, des chiffres et des t
msgid "Board URL cannot exceed 60 characters"
msgstr "L'URL du tableau ne peut pas dépasser 60 caractères"
#: src/views/public/board/index.tsx:59
#: src/views/public/board/index.tsx:64
msgid "Board URL copied to clipboard"
msgstr "URL du tableau copiée dans le presse-papiers"
@@ -263,8 +280,8 @@ msgstr "Visibilité du tableau"
msgid "Board visibility updated"
msgstr "Visibilité du tableau mise à jour"
#: src/views/boards/index.tsx:27
#: src/components/SideNavigation.tsx:68
#: src/views/boards/index.tsx:27
msgid "Boards"
msgstr "Tableaux"
@@ -285,20 +302,20 @@ msgstr "Bug"
msgid "Bug Report"
msgstr "Rapport de bug"
#: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:98
#: src/views/settings/components/DeleteAccountConfirmation.tsx:88
#: src/views/settings/components/CustomURLConfirmation.tsx:50
#: src/views/settings/components/ChangePasswordConfirmation.tsx:168
#: src/views/members/components/DeleteMemberConfirmation.tsx:55
#: src/views/card/components/DeleteCommentConfirmation.tsx:76
#: src/views/card/components/DeleteChecklistConfirmation.tsx:63
#: src/views/card/components/DeleteCardConfirmation.tsx:86
#: src/views/card/components/Comment.tsx:158
#: src/components/DeleteLabelConfirmation.tsx:49
#: src/views/card/components/Comment.tsx:158
#: src/views/card/components/DeleteCardConfirmation.tsx:86
#: 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/ChangePasswordConfirmation.tsx:168
#: src/views/settings/components/CustomURLConfirmation.tsx:50
#: src/views/settings/components/DeleteAccountConfirmation.tsx:88
#: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:98
msgid "Cancel"
msgstr "Annuler"
#: src/views/card/index.tsx:259
#: src/views/card/index.tsx:260
msgid "Card not found"
msgstr "Carte introuvable"
@@ -306,10 +323,10 @@ msgstr "Carte introuvable"
msgid "Card title"
msgstr "Titre de la carte"
#: src/views/settings/index.tsx:291
#: src/views/settings/index.tsx:301
#: src/views/settings/components/ChangePasswordConfirmation.tsx:109
#: src/views/settings/components/ChangePasswordConfirmation.tsx:178
#: src/views/settings/index.tsx:291
#: src/views/settings/index.tsx:301
msgid "Change Password"
msgstr "Modifier le mot de passe"
@@ -317,8 +334,8 @@ msgstr "Modifier le mot de passe"
msgid "Change the language of the app."
msgstr "Changer la langue de l'application."
#: src/views/auth/signup/index.tsx:67
#: src/views/auth/login/index.tsx:41
#: src/views/auth/signup/index.tsx:67
msgid "Check your inbox"
msgstr "Vérifiez votre boîte de réception"
@@ -330,8 +347,8 @@ msgstr "Nom de la checklist"
msgid "Clear filters"
msgstr "Effacer les filtres"
#: src/views/auth/signup/index.tsx:72
#: src/views/auth/login/index.tsx:46
#: src/views/auth/signup/index.tsx:72
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."
@@ -380,8 +397,8 @@ msgstr "Confirmer le changement d'URL"
msgid "Confirm your new password"
msgstr "Confirmez votre nouveau mot de passe"
#: src/views/settings/index.tsx:235
#: src/views/boards/components/ImportBoardsForm.tsx:157
#: src/views/settings/index.tsx:235
msgid "Connect Trello"
msgstr "Connecter Trello"
@@ -405,12 +422,12 @@ msgstr "Contactez-nous"
msgid "Content Creation"
msgstr "Création de contenu"
#: src/components/AuthForm.tsx:335
#: src/components/AuthForm.tsx:366
msgid "Continue with "
msgstr "Continuer avec "
#. placeholder {0}: provider.name
#: src/components/AuthForm.tsx:269
#. placeholder {0}: key === "oidc" ? oidcProviderName : provider.name
#: src/components/AuthForm.tsx:297
msgid "Continue with {0}"
msgstr "Continuer avec {0}"
@@ -418,9 +435,9 @@ msgstr "Continuer avec {0}"
msgid "Control who can view and edit your boards."
msgstr "Contrôlez qui peut voir et modifier vos tableaux."
#: src/views/board/components/NewListForm.tsx:140
#: src/views/board/components/NewCardForm.tsx:458
#: src/components/LabelForm.tsx:213
#: src/views/board/components/NewCardForm.tsx:458
#: src/views/board/components/NewListForm.tsx:140
msgid "Create another"
msgstr "Créer un autre"
@@ -452,8 +469,8 @@ msgstr "Créer un nouveau tableau"
msgid "Create new key"
msgstr "Créer une nouvelle clé"
#: src/views/card/components/LabelSelector.tsx:98
#: src/views/board/components/NewCardForm.tsx:394
#: src/views/card/components/LabelSelector.tsx:98
msgid "Create new label"
msgstr "Créer une nouvelle étiquette"
@@ -461,8 +478,8 @@ msgstr "Créer une nouvelle étiquette"
msgid "Create new list"
msgstr "Créer une nouvelle liste"
#: src/components/NewWorkspaceForm.tsx:94
#: src/components/WorkspaceMenu.tsx:116
#: src/components/NewWorkspaceForm.tsx:93
msgid "Create workspace"
msgstr "Créer un espace de travail"
@@ -494,17 +511,17 @@ msgstr "Support client"
msgid "Dark"
msgstr "Sombre"
#: src/views/card/components/DeleteCommentConfirmation.tsx:82
#: src/views/card/components/DeleteChecklistConfirmation.tsx:66
#: src/views/card/components/DeleteCardConfirmation.tsx:92
#: src/components/LabelForm.tsx:228
#: src/components/DeleteLabelConfirmation.tsx:51
#: src/components/LabelForm.tsx:228
#: src/views/card/components/DeleteCardConfirmation.tsx:92
#: src/views/card/components/DeleteChecklistConfirmation.tsx:66
#: src/views/card/components/DeleteCommentConfirmation.tsx:82
msgid "Delete"
msgstr "Supprimer"
#: src/views/settings/components/DeleteAccountConfirmation.tsx:96
#: src/views/settings/index.tsx:309
#: src/views/settings/index.tsx:319
#: src/views/settings/components/DeleteAccountConfirmation.tsx:96
msgid "Delete account"
msgstr "Supprimer le compte"
@@ -524,9 +541,9 @@ msgstr "Supprimer le commentaire"
msgid "Delete list"
msgstr "Supprimer la liste"
#: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:106
#: src/views/settings/index.tsx:272
#: src/views/settings/index.tsx:283
#: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:106
msgid "Delete workspace"
msgstr "Supprimer l'espace de travail"
@@ -588,9 +605,9 @@ msgstr "documentation"
msgid "Docs"
msgstr "Documentation"
#: src/views/home/components/Footer.tsx:77
#: src/views/boards/components/TemplateBoards.tsx:23
#: src/components/UserMenu.tsx:191
#: src/views/boards/components/TemplateBoards.tsx:23
#: src/views/home/components/Footer.tsx:77
msgid "Documentation"
msgstr "Documentation"
@@ -605,8 +622,8 @@ msgstr "Vous n'avez pas de compte ? <0><1>Inscrivez-vous</1></0>"
msgid "Done"
msgstr "Fait"
#: src/views/board/components/UpdateBoardSlugForm.tsx:115
#: src/views/board/components/BoardDropdown.tsx:15
#: src/views/board/components/UpdateBoardSlugForm.tsx:115
msgid "Edit board URL"
msgstr "Modifier l'URL du tableau"
@@ -626,11 +643,11 @@ msgstr "Modifier l'URL de l'espace de travail"
msgid "Editing"
msgstr "Édition"
#: src/components/AuthForm.tsx:337
#: src/components/AuthForm.tsx:368
msgid "email"
msgstr "e-mail"
#: src/views/members/components/InviteMemberForm.tsx:99
#: src/views/members/components/InviteMemberForm.tsx:163
msgid "Email"
msgstr "E-mail"
@@ -646,11 +663,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:302
#: src/components/AuthForm.tsx:333
msgid "Enter your email address"
msgstr "Saisissez votre adresse e-mail"
#: src/components/AuthForm.tsx:290
#: src/components/AuthForm.tsx:321
msgid "Enter your name"
msgstr "Saisissez votre nom"
@@ -658,7 +675,7 @@ msgstr "Saisissez votre nom"
msgid "Enter your new password"
msgstr "Saisissez votre nouveau mot de passe"
#: src/components/AuthForm.tsx:315
#: src/components/AuthForm.tsx:346
msgid "Enter your password"
msgstr "Saisissez votre mot de passe"
@@ -682,8 +699,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:57
#: src/views/members/components/InviteMemberForm.tsx:63
#: src/views/members/components/InviteMemberForm.tsx:76
#: src/views/members/components/InviteMemberForm.tsx:82
msgid "Error inviting member"
msgstr "Erreur lors de l'invitation du membre"
@@ -707,6 +724,10 @@ 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:132
msgid "Error upgrading subscription"
msgstr "Erreur lors de la mise à niveau de l'abonnement"
#: src/views/settings/components/Avatar.tsx:56
#: src/views/settings/components/Avatar.tsx:97
msgid "Error uploading profile image"
@@ -725,12 +746,12 @@ msgid "Execution"
msgstr "Exécution"
#. placeholder {0}: provider.at(0)?.toUpperCase() + provider.slice(1)
#: src/components/AuthForm.tsx:241
#: src/components/AuthForm.tsx:269
msgid "Failed to login with {0}. Please try again."
msgstr "Échec de connexion avec {0}. Veuillez réessayer."
#: src/views/home/components/Footer.tsx:51
#: src/views/home/components/Faqs.tsx:143
#: src/views/home/components/Footer.tsx:51
msgid "FAQs"
msgstr "FAQ"
@@ -742,14 +763,14 @@ msgstr "Fonctionnalité"
msgid "Feature Request"
msgstr "Demande de fonctionnalité"
#: src/views/home/components/Header.tsx:14
#: src/views/home/components/Footer.tsx:49
#: src/views/home/components/Features.tsx:125
#: src/views/home/components/Footer.tsx:49
#: src/views/home/components/Header.tsx:14
msgid "Features"
msgstr "Fonctionnalités"
#: src/components/UserMenu.tsx:199
#: src/components/FeedbackModal.tsx:59
#: src/components/UserMenu.tsx:199
msgid "Feedback"
msgstr "Commentaires"
@@ -773,6 +794,11 @@ msgstr "Pour une durabilité à long terme, nous reconnaissons que tous les bons
msgid "Free"
msgstr "Gratuit"
#: src/views/members/components/InviteMemberForm.tsx:192
#: src/views/members/index.tsx:184
msgid "Free Plan"
msgstr "Forfait gratuit"
#: src/views/home/components/Pricing.tsx:34
msgid "Free, forever"
msgstr "Gratuit, pour toujours"
@@ -785,10 +811,10 @@ msgstr "Temps plein"
msgid "Fun"
msgstr "Amusant"
#: src/views/auth/signup/index.tsx:67
#: src/views/home/components/Cta.tsx:61
#: src/views/home/components/Header.tsx:102
#: src/views/home/components/Header.tsx:141
#: src/views/home/components/Cta.tsx:61
#: src/views/auth/signup/index.tsx:67
msgid "Get started"
msgstr "Commencer"
@@ -813,7 +839,7 @@ msgstr "Commencez gratuitement aujourd'hui"
msgid "Get started for free, with no usage limits. For collaboration, upgrade to a plan that fits the size of your team."
msgstr "Commencez gratuitement, sans limites d'utilisation. Pour la collaboration, passez à un forfait adapté à la taille de votre équipe."
#: src/views/home/index.tsx:75
#: src/views/home/index.tsx:76
msgid "Get started on Cloud"
msgstr "Commencer sur le Cloud"
@@ -924,23 +950,27 @@ msgstr "Intégrations"
msgid "Interviewing"
msgstr "Entretien"
#: src/views/members/components/InviteMemberForm.tsx:26
#: src/views/members/components/InviteMemberForm.tsx:45
msgid "Invalid email address"
msgstr "Adresse e-mail invalide"
#: src/views/members/index.tsx:169
#: src/views/members/index.tsx:193
msgid "Invite"
msgstr "Inviter"
#: src/views/members/components/InviteMemberForm.tsx:113
#: src/views/members/components/InviteMemberForm.tsx:207
msgid "Invite another"
msgstr "Inviter un autre"
#: src/views/members/components/InviteMemberForm.tsx:123
#: src/views/card/components/MemberSelector.tsx:112
#: src/views/members/components/InviteMemberForm.tsx:231
msgid "Invite member"
msgstr "Inviter un membre"
#: src/views/members/components/InviteMemberForm.tsx:195
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/boards/components/TemplateBoards.tsx:69
msgid "Junior"
msgstr "Junior"
@@ -953,14 +983,14 @@ msgstr "Kanban est meilleur en équipe. Parfait pour les petites équipes et cel
msgid "Kanban reimagined"
msgstr "Kanban réinventé"
#: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:67
#: src/views/settings/components/DeleteAccountConfirmation.tsx:57
#: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:67
msgid "Keep in mind that this action is irreversible."
msgstr "Gardez à l'esprit que cette action est irréversible."
#: src/views/card/index.tsx:117
#: src/views/board/components/NewCardForm.tsx:398
#: src/views/board/components/Filters.tsx:101
#: src/views/board/components/NewCardForm.tsx:398
#: src/views/card/index.tsx:117
msgid "Labels"
msgstr "Étiquettes"
@@ -988,7 +1018,7 @@ msgstr "Licence"
msgid "Light"
msgstr "Clair"
#: src/views/public/board/index.tsx:57
#: src/views/public/board/index.tsx:62
msgid "Link copied"
msgstr "Lien copié"
@@ -1016,7 +1046,7 @@ msgstr "Long terme"
msgid "Low Priority"
msgstr "Priorité basse"
#: src/components/AuthForm.tsx:338
#: src/components/AuthForm.tsx:369
msgid "magic link"
msgstr "lien magique"
@@ -1033,16 +1063,16 @@ msgstr "a marqué l'élément <0>{0}</0> de la checklist comme incomplet"
msgid "Medium Priority"
msgstr "Priorité moyenne"
#: src/views/members/index.tsx:161
#: src/views/card/index.tsx:125
#: src/views/board/components/NewCardForm.tsx:357
#: src/views/board/components/Filters.tsx:93
#: src/components/SideNavigation.tsx:73
#: src/views/board/components/Filters.tsx:93
#: src/views/board/components/NewCardForm.tsx:357
#: src/views/card/index.tsx:125
#: src/views/members/index.tsx:171
msgid "Members"
msgstr "Membres"
#. placeholder {0}: workspace.name ?? "Workspace"
#: src/views/members/index.tsx:157
#: src/views/members/index.tsx:167
msgid "Members | {0}"
msgstr "Membres | {0}"
@@ -1050,6 +1080,10 @@ msgstr "Membres | {0}"
msgid "Monthly"
msgstr "Mensuel"
#: src/views/members/components/InviteMemberForm.tsx:92
msgid "monthly billing"
msgstr "facturation mensuelle"
#. placeholder {0}: truncate(fromList)
#. placeholder {1}: truncate(toList)
#: src/views/card/components/ActivityList.tsx:98
@@ -1060,8 +1094,8 @@ msgstr "a déplacé la carte de <0>{0}</0> vers <1>{1}</1>"
msgid "moved the card to another list"
msgstr "a déplacé la carte vers une autre liste"
#: src/views/boards/components/NewBoardForm.tsx:99
#: src/components/LabelForm.tsx:135
#: src/views/boards/components/NewBoardForm.tsx:99
msgid "Name"
msgstr "Nom"
@@ -1093,8 +1127,8 @@ msgstr "Nouvel import"
msgid "New label"
msgstr "Nouvelle étiquette"
#: src/views/board/index.tsx:394
#: src/views/board/components/NewListForm.tsx:112
#: src/views/board/index.tsx:394
msgid "New list"
msgstr "Nouvelle liste"
@@ -1110,7 +1144,7 @@ msgstr "Le nouveau mot de passe doit être différent du mot de passe actuel"
msgid "New Ticket"
msgstr "Nouveau ticket"
#: src/components/NewWorkspaceForm.tsx:64
#: src/components/NewWorkspaceForm.tsx:65
msgid "New workspace"
msgstr "Nouvel espace de travail"
@@ -1130,7 +1164,7 @@ msgstr "Aucun tableau"
msgid "No boards found"
msgstr "Aucun tableau trouvé"
#: src/views/home/index.tsx:85
#: src/views/home/index.tsx:86
msgid "No credit card required"
msgstr "Aucune carte de crédit requise"
@@ -1154,7 +1188,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:280
#: src/components/AuthForm.tsx:311
msgid "or"
msgstr "ou"
@@ -1182,11 +1216,11 @@ msgstr "Le mot de passe doit comporter au moins 8 caractères"
msgid "Passwords do not match"
msgstr "Les mots de passe ne correspondent pas"
#: src/views/home/components/Pricing.tsx:101
#: src/views/home/components/Pricing.tsx:96
msgid "Payment frequency"
msgstr "Fréquence de paiement"
#: src/views/members/index.tsx:118
#: src/views/members/index.tsx:128
msgid "Pending"
msgstr "En attente"
@@ -1207,15 +1241,15 @@ msgstr "Planification"
msgid "Please confirm your new password"
msgstr "Veuillez confirmer votre nouveau mot de passe"
#: src/components/AuthForm.tsx:306
#: src/components/AuthForm.tsx:337
msgid "Please enter a valid email address"
msgstr "Veuillez saisir une adresse e-mail valide"
#: src/components/AuthForm.tsx:294
#: src/components/AuthForm.tsx:325
msgid "Please enter a valid name"
msgstr "Veuillez saisir un nom valide"
#: src/components/AuthForm.tsx:319
#: src/components/AuthForm.tsx:350
msgid "Please enter a valid password"
msgstr "Veuillez saisir un mot de passe valide"
@@ -1223,46 +1257,47 @@ msgstr "Veuillez saisir un mot de passe valide"
msgid "Please select a file to upload."
msgstr "Veuillez sélectionner un fichier à télécharger."
#: src/views/settings/components/UpdateWorkspaceUrlForm.tsx:74
#: src/views/settings/components/UpdateWorkspaceNameForm.tsx:57
#: src/views/settings/components/UpdateWorkspaceDescriptionForm.tsx:62
#: src/views/settings/components/UpdateDisplayNameForm.tsx:55
#: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:46
#: src/views/settings/components/DeleteAccountConfirmation.tsx:40
#: src/views/settings/components/Avatar.tsx:40
#: src/views/settings/components/Avatar.tsx:98
#: src/views/members/components/InviteMemberForm.tsx:64
#: src/views/members/components/DeleteMemberConfirmation.tsx:28
#: src/views/card/index.tsx:172
#: src/views/card/components/NewCommentForm.tsx:31
#: src/views/card/components/NewChecklistItemForm.tsx:89
#: src/views/card/components/NewChecklistForm.tsx:70
#: src/views/card/components/MemberSelector.tsx:80
#: src/views/card/components/ListSelector.tsx:53
#: src/views/card/components/LabelSelector.tsx:73
#: src/views/card/components/DeleteCommentConfirmation.tsx:45
#: src/views/card/components/DeleteChecklistConfirmation.tsx:37
#: src/views/card/components/DeleteCardConfirmation.tsx:52
#: src/views/card/components/Comment.tsx:64
#: src/views/card/components/ChecklistNameInput.tsx:46
#: src/views/card/components/ChecklistItemRow.tsx:60
#: src/views/card/components/ChecklistItemRow.tsx:88
#: src/views/boards/components/ImportBoardsForm.tsx:205
#: src/components/DeleteLabelConfirmation.tsx:26
#: src/components/FeedbackModal.tsx:41
#: src/components/NewWorkspaceForm.tsx:42
#: src/views/board/components/NewCardForm.tsx:174
#: src/views/board/components/NewListForm.tsx:78
#: src/views/board/components/UpdateBoardSlugForm.tsx:72
#: src/views/board/components/VisibilityButton.tsx:53
#: src/views/board/index.tsx:134
#: src/views/board/index.tsx:190
#: src/views/board/components/VisibilityButton.tsx:53
#: src/views/board/components/UpdateBoardSlugForm.tsx:72
#: src/views/board/components/NewListForm.tsx:78
#: src/views/board/components/NewCardForm.tsx:174
#: src/components/NewWorkspaceForm.tsx:41
#: src/components/FeedbackModal.tsx:41
#: src/components/DeleteLabelConfirmation.tsx:26
#: src/views/boards/components/ImportBoardsForm.tsx:205
#: src/views/card/components/ChecklistItemRow.tsx:60
#: src/views/card/components/ChecklistItemRow.tsx:88
#: src/views/card/components/ChecklistNameInput.tsx:46
#: src/views/card/components/Comment.tsx:64
#: src/views/card/components/DeleteCardConfirmation.tsx:52
#: src/views/card/components/DeleteChecklistConfirmation.tsx:37
#: src/views/card/components/DeleteCommentConfirmation.tsx:45
#: src/views/card/components/LabelSelector.tsx:73
#: src/views/card/components/ListSelector.tsx:53
#: src/views/card/components/MemberSelector.tsx:80
#: src/views/card/components/NewChecklistForm.tsx:70
#: src/views/card/components/NewChecklistItemForm.tsx:89
#: 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:83
#: src/views/members/components/InviteMemberForm.tsx:133
#: src/views/settings/components/Avatar.tsx:40
#: src/views/settings/components/Avatar.tsx:98
#: src/views/settings/components/DeleteAccountConfirmation.tsx:40
#: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:46
#: src/views/settings/components/UpdateDisplayNameForm.tsx:55
#: src/views/settings/components/UpdateWorkspaceDescriptionForm.tsx:62
#: src/views/settings/components/UpdateWorkspaceNameForm.tsx:57
#: src/views/settings/components/UpdateWorkspaceUrlForm.tsx:74
msgid "Please try again later, or contact customer support."
msgstr "Veuillez réessayer plus tard ou contacter le service client."
#: src/views/home/components/Pricing.tsx:85
#: src/views/home/components/Header.tsx:15
#: src/views/home/components/Footer.tsx:50
#: src/views/home/components/Header.tsx:15
#: src/views/home/components/Pricing.tsx:85
msgid "Pricing"
msgstr "Tarifs"
@@ -1318,7 +1353,7 @@ msgstr "À distance"
msgid "Remove"
msgstr "Supprimer"
#: src/views/members/index.tsx:132
#: src/views/members/index.tsx:142
msgid "Remove member"
msgstr "Supprimer le membre"
@@ -1369,12 +1404,12 @@ msgstr "Révision"
msgid "Revoke"
msgstr "Révoquer"
#: src/views/home/components/Header.tsx:13
#: src/views/home/components/Footer.tsx:36
#: src/views/home/components/Header.tsx:13
msgid "Roadmap"
msgstr "Feuille de route"
#: src/views/members/index.tsx:191
#: src/views/members/index.tsx:215
msgid "Role"
msgstr "Rôle"
@@ -1406,7 +1441,7 @@ msgstr "Sélectionner la source"
msgid "Self Host"
msgstr "Auto-hébergement"
#: src/views/home/index.tsx:81
#: src/views/home/index.tsx:82
msgid "Self host with Github"
msgstr "Auto-hébergement avec Github"
@@ -1422,8 +1457,8 @@ msgstr "Envoyer des commentaires"
msgid "Senior"
msgstr "Senior"
#: src/views/settings/index.tsx:140
#: src/components/SideNavigation.tsx:78
#: src/views/settings/index.tsx:140
msgid "Settings"
msgstr "Paramètres"
@@ -1450,7 +1485,7 @@ msgstr "Inscription désactivée"
msgid "Sign up is currently disabled. Please try again later."
msgstr "L'inscription est actuellement désactivée. Veuillez réessayer plus tard."
#: src/components/AuthForm.tsx:335
#: src/components/AuthForm.tsx:366
msgid "Sign up with "
msgstr "S'inscrire avec "
@@ -1470,12 +1505,12 @@ msgstr "Réseaux sociaux"
msgid "Software Development"
msgstr "Développement logiciel"
#: src/views/home/index.tsx:37
#: src/views/home/index.tsx:38
msgid "Star on Github"
msgstr "Étoile sur Github"
#: src/components/AuthForm.tsx:188
#: src/components/AuthForm.tsx:205
#: src/components/AuthForm.tsx:203
#: src/components/AuthForm.tsx:220
msgid "Success"
msgstr "Succès"
@@ -1491,6 +1526,11 @@ msgstr "Soutenir le développement du projet"
msgid "System"
msgstr "Système"
#: src/views/members/components/InviteMemberForm.tsx:183
#: src/views/members/index.tsx:184
msgid "Team Plan"
msgstr "Forfait d'équipe"
#: src/views/home/components/Pricing.tsx:46
msgid "Teams"
msgstr "Équipes"
@@ -1515,7 +1555,7 @@ msgstr "Le mot de passe actuel que vous avez saisi est incorrect."
msgid "The main difference between Kan and Trello is that Kan is open source, allowing anyone to view, modify, and contribute to our code. Our cloud offering also offers no restrictions on features for individual use, whereas Trello locks basic features such as the number of boards you can create behind a paywall."
msgstr "La principale différence entre Kan et Trello est que Kan est open source, permettant à chacun de consulter, modifier et contribuer à notre code. Notre offre cloud ne comporte également aucune restriction sur les fonctionnalités pour un usage individuel, alors que Trello verrouille des fonctionnalités de base comme le nombre de tableaux que vous pouvez créer derrière un paywall."
#: src/views/home/index.tsx:65
#: src/views/home/index.tsx:66
msgid "The open source <0/> alternative to Trello"
msgstr "L'alternative open source <0/> à Trello"
@@ -1532,14 +1572,14 @@ msgstr "Thème"
msgid "They won't be able to access this workspace."
msgstr "Ils ne pourront plus accéder à cet espace de travail."
#: src/views/card/components/DeleteCommentConfirmation.tsx:68
#: src/views/card/components/DeleteChecklistConfirmation.tsx:58
#: src/views/card/components/DeleteCardConfirmation.tsx:78
#: src/components/DeleteLabelConfirmation.tsx:44
#: src/views/card/components/DeleteCardConfirmation.tsx:78
#: src/views/card/components/DeleteChecklistConfirmation.tsx:58
#: src/views/card/components/DeleteCommentConfirmation.tsx:68
msgid "This action can't be undone."
msgstr "Cette action ne peut pas être annulée."
#: src/views/public/board/index.tsx:146
#: src/views/public/board/index.tsx:151
msgid "This board is private or does not exist"
msgstr "Ce tableau est privé ou n'existe pas"
@@ -1604,7 +1644,7 @@ msgstr "Impossible de créer la liste de contrôle"
msgid "Unable to create list"
msgstr "Impossible de créer une liste"
#: src/components/NewWorkspaceForm.tsx:40
#: src/components/NewWorkspaceForm.tsx:41
msgid "Unable to create workspace"
msgstr "Impossible de créer l'espace de travail"
@@ -1640,8 +1680,8 @@ msgstr "Impossible de mettre à jour l'URL du tableau"
msgid "Unable to update board visibility"
msgstr "Impossible de mettre à jour la visibilité du tableau"
#: src/views/card/index.tsx:171
#: src/views/board/index.tsx:189
#: src/views/card/index.tsx:172
msgid "Unable to update card"
msgstr "Impossible de mettre à jour la carte"
@@ -1661,8 +1701,8 @@ msgstr "Impossible de mettre à jour le commentaire"
msgid "Unable to update labels"
msgstr "Impossible de mettre à jour les étiquettes"
#: src/views/card/components/ListSelector.tsx:52
#: src/views/board/index.tsx:133
#: src/views/card/components/ListSelector.tsx:52
msgid "Unable to update list"
msgstr "Impossible de mettre à jour la liste"
@@ -1703,11 +1743,11 @@ msgstr "Commentaires illimités"
msgid "Unlimited lists"
msgstr "Listes illimitées"
#: src/views/settings/components/UpdateWorkspaceUrlForm.tsx:154
#: src/views/settings/components/UpdateWorkspaceNameForm.tsx:82
#: src/views/settings/components/UpdateWorkspaceDescriptionForm.tsx:90
#: src/views/settings/components/UpdateDisplayNameForm.tsx:79
#: src/views/board/components/UpdateBoardSlugForm.tsx:174
#: src/views/settings/components/UpdateDisplayNameForm.tsx:79
#: src/views/settings/components/UpdateWorkspaceDescriptionForm.tsx:90
#: src/views/settings/components/UpdateWorkspaceNameForm.tsx:82
#: src/views/settings/components/UpdateWorkspaceUrlForm.tsx:154
msgid "Update"
msgstr "Mettre à jour"
@@ -1736,6 +1776,10 @@ msgstr "a mis à jour le titre en <0>{0}</0>"
msgid "Upgrade"
msgstr "Mettre à niveau"
#: src/views/members/components/InviteMemberForm.tsx:222
msgid "Upgrade to Team Plan"
msgstr "Passer au forfait d'équipe"
#: src/views/boards/components/TemplateBoards.tsx:37
#: src/views/boards/components/TemplateBoards.tsx:54
msgid "Urgent"
@@ -1757,11 +1801,11 @@ msgstr "L'URL doit comporter au moins 3 caractères"
msgid "Use template"
msgstr "Utiliser le modèle"
#: src/views/members/index.tsx:185
#: src/views/members/index.tsx:209
msgid "User"
msgstr "Utilisateur"
#: src/views/members/components/InviteMemberForm.tsx:58
#: src/views/members/components/InviteMemberForm.tsx:77
msgid "User is already a member of this workspace"
msgstr "L'utilisateur est déjà membre de cet espace de travail"
@@ -1781,7 +1825,7 @@ msgstr "Consultez et gérez votre facturation et votre abonnement."
msgid "View docs"
msgstr "Voir la documentation"
#: src/views/public/board/index.tsx:120
#: src/views/public/board/index.tsx:125
msgid "View only"
msgstr "Affichage uniquement"
@@ -1789,7 +1833,7 @@ msgstr "Affichage uniquement"
msgid "View our roadmap."
msgstr "Consultez notre feuille de route."
#: src/views/public/board/index.tsx:149
#: src/views/public/board/index.tsx:154
msgid "View workspace"
msgstr "Voir l'espace de travail"
@@ -1849,13 +1893,13 @@ msgstr "La description de l'espace de travail doit comporter au moins 3 caractè
msgid "Workspace description updated"
msgstr "Description de l'espace de travail mise à jour"
#: src/views/home/components/Pricing.tsx:54
#: src/views/home/components/Features.tsx:83
#: src/views/home/components/Pricing.tsx:54
msgid "Workspace members"
msgstr "Membres de l'espace de travail"
#: src/components/NewWorkspaceForm.tsx:81
#: src/views/settings/index.tsx:158
#: src/components/NewWorkspaceForm.tsx:80
msgid "Workspace name"
msgstr "Nom de l'espace de travail"
@@ -1907,11 +1951,11 @@ 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:206
#: src/components/AuthForm.tsx:221
msgid "You have been logged in successfully."
msgstr "Vous vous êtes connecté avec succès."
#: src/components/AuthForm.tsx:189
#: src/components/AuthForm.tsx:204
msgid "You have been signed up successfully."
msgstr "Vous vous êtes inscrit avec succès."

File diff suppressed because one or more lines are too long

View File

@@ -23,7 +23,7 @@ msgstr ", o consulta i nostri"
#. placeholder {0}: card?.title ?? "Card"
#. placeholder {1}: board?.name ?? "Board"
#: src/views/card/index.tsx:213
#: src/views/card/index.tsx:214
msgid "{0} | {1}"
msgstr "{0} | {1}"
@@ -36,11 +36,20 @@ 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:91
#: src/views/members/components/InviteMemberForm.tsx:106
msgid "$10/month"
msgstr "$10/mese"
#: src/views/members/components/InviteMemberForm.tsx:106
msgid "$8/month"
msgstr "$8/mese"
#: src/views/home/components/Pricing.tsx:36
msgid "1 user"
msgstr "1 utente"
#: src/views/home/index.tsx:71
#: src/views/home/index.tsx:72
msgid "A powerful, flexible kanban app that helps you organise work, track progress, and deliver results—all in one place."
msgstr "Un'app kanban potente e flessibile che ti aiuta a organizzare il lavoro, monitorare i progressi e ottenere risultati, tutto in un unico posto."
@@ -48,8 +57,8 @@ msgstr "Un'app kanban potente e flessibile che ti aiuta a organizzare il lavoro,
msgid "Account deleted"
msgstr "Account eliminato"
#: src/views/public/board/CardModal.tsx:140
#: src/views/card/index.tsx:288
#: src/views/card/index.tsx:289
#: src/views/public/board/CardModal.tsx:143
msgid "Activity"
msgstr "Attività"
@@ -61,8 +70,8 @@ msgstr "Registri attività"
msgid "Add a card"
msgstr "Aggiungi una carta"
#: src/views/card/components/NewCommentForm.tsx:57
#: src/views/card/components/Comment.tsx:146
#: src/views/card/components/NewCommentForm.tsx:57
msgid "Add a comment..."
msgstr "Aggiungi un commento..."
@@ -87,8 +96,8 @@ msgstr "Aggiungi dettagli..."
msgid "Add label"
msgstr "Aggiungi etichetta"
#: src/views/members/components/InviteMemberForm.tsx:85
#: src/views/card/components/MemberSelector.tsx:130
#: src/views/members/components/InviteMemberForm.tsx:149
msgid "Add member"
msgstr "Aggiungi membro"
@@ -123,14 +132,14 @@ 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:186
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/home/components/Pricing.tsx:55
msgid "Admin roles"
msgstr "Ruoli amministratore"
#: src/views/home/components/Pricing.tsx:97
msgid "All seats are free during the beta until Sept 1st!"
msgstr "Tutti i posti sono gratuiti durante la beta fino al 1° settembre!"
#: src/views/home/components/Footer.tsx:18
msgid "All systems operational"
msgstr "Tutti i sistemi operativi"
@@ -209,8 +218,16 @@ msgstr "Backlog"
msgid "Basic Kanban"
msgstr "Kanban base"
#: src/views/settings/index.tsx:198
#: src/views/members/components/InviteMemberForm.tsx:107
msgid "billed annually"
msgstr "fatturato annualmente"
#: src/views/members/components/InviteMemberForm.tsx:107
msgid "billed monthly"
msgstr "fatturato mensilmente"
#: src/views/boards/components/TemplateBoards.tsx:55
#: src/views/settings/index.tsx:198
msgid "Billing"
msgstr "Fatturazione"
@@ -234,8 +251,8 @@ msgstr "Il nome della bacheca non può superare i 100 caratteri"
msgid "Board name is required"
msgstr "Il nome della bacheca è obbligatorio"
#: src/views/public/board/index.tsx:143
#: src/views/board/index.tsx:357
#: src/views/public/board/index.tsx:148
msgid "Board not found"
msgstr "Bacheca non trovata"
@@ -247,7 +264,7 @@ msgstr "L'URL della bacheca può contenere solo lettere, numeri e trattini"
msgid "Board URL cannot exceed 60 characters"
msgstr "L'URL della bacheca non può superare i 60 caratteri"
#: src/views/public/board/index.tsx:59
#: src/views/public/board/index.tsx:64
msgid "Board URL copied to clipboard"
msgstr "URL della bacheca copiato negli appunti"
@@ -263,8 +280,8 @@ msgstr "Visibilità bacheca"
msgid "Board visibility updated"
msgstr "Visibilità della bacheca aggiornata"
#: src/views/boards/index.tsx:27
#: src/components/SideNavigation.tsx:68
#: src/views/boards/index.tsx:27
msgid "Boards"
msgstr "Bacheche"
@@ -285,20 +302,20 @@ msgstr "Bug"
msgid "Bug Report"
msgstr "Segnalazione bug"
#: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:98
#: src/views/settings/components/DeleteAccountConfirmation.tsx:88
#: src/views/settings/components/CustomURLConfirmation.tsx:50
#: src/views/settings/components/ChangePasswordConfirmation.tsx:168
#: src/views/members/components/DeleteMemberConfirmation.tsx:55
#: src/views/card/components/DeleteCommentConfirmation.tsx:76
#: src/views/card/components/DeleteChecklistConfirmation.tsx:63
#: src/views/card/components/DeleteCardConfirmation.tsx:86
#: src/views/card/components/Comment.tsx:158
#: src/components/DeleteLabelConfirmation.tsx:49
#: src/views/card/components/Comment.tsx:158
#: src/views/card/components/DeleteCardConfirmation.tsx:86
#: 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/ChangePasswordConfirmation.tsx:168
#: src/views/settings/components/CustomURLConfirmation.tsx:50
#: src/views/settings/components/DeleteAccountConfirmation.tsx:88
#: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:98
msgid "Cancel"
msgstr "Annulla"
#: src/views/card/index.tsx:259
#: src/views/card/index.tsx:260
msgid "Card not found"
msgstr "Carta non trovata"
@@ -306,10 +323,10 @@ msgstr "Carta non trovata"
msgid "Card title"
msgstr "Titolo della carta"
#: src/views/settings/index.tsx:291
#: src/views/settings/index.tsx:301
#: src/views/settings/components/ChangePasswordConfirmation.tsx:109
#: src/views/settings/components/ChangePasswordConfirmation.tsx:178
#: src/views/settings/index.tsx:291
#: src/views/settings/index.tsx:301
msgid "Change Password"
msgstr "Cambia password"
@@ -317,8 +334,8 @@ msgstr "Cambia password"
msgid "Change the language of the app."
msgstr "Cambia la lingua dell'app."
#: src/views/auth/signup/index.tsx:67
#: src/views/auth/login/index.tsx:41
#: src/views/auth/signup/index.tsx:67
msgid "Check your inbox"
msgstr "Controlla la tua casella di posta"
@@ -330,8 +347,8 @@ msgstr "Nome della checklist"
msgid "Clear filters"
msgstr "Cancella filtri"
#: src/views/auth/signup/index.tsx:72
#: src/views/auth/login/index.tsx:46
#: src/views/auth/signup/index.tsx:72
msgid "Click on the link we've sent to {magicLinkRecipient} to sign in."
msgstr "Clicca sul link che abbiamo inviato a {magicLinkRecipient} per accedere."
@@ -380,8 +397,8 @@ msgstr "Conferma modifica URL"
msgid "Confirm your new password"
msgstr "Conferma la tua nuova password"
#: src/views/settings/index.tsx:235
#: src/views/boards/components/ImportBoardsForm.tsx:157
#: src/views/settings/index.tsx:235
msgid "Connect Trello"
msgstr "Connetti Trello"
@@ -405,12 +422,12 @@ msgstr "Contattaci"
msgid "Content Creation"
msgstr "Creazione contenuti"
#: src/components/AuthForm.tsx:335
#: src/components/AuthForm.tsx:366
msgid "Continue with "
msgstr "Continua con "
#. placeholder {0}: provider.name
#: src/components/AuthForm.tsx:269
#. placeholder {0}: key === "oidc" ? oidcProviderName : provider.name
#: src/components/AuthForm.tsx:297
msgid "Continue with {0}"
msgstr "Continua con {0}"
@@ -418,9 +435,9 @@ msgstr "Continua con {0}"
msgid "Control who can view and edit your boards."
msgstr "Controlla chi può visualizzare e modificare le tue bacheche."
#: src/views/board/components/NewListForm.tsx:140
#: src/views/board/components/NewCardForm.tsx:458
#: src/components/LabelForm.tsx:213
#: src/views/board/components/NewCardForm.tsx:458
#: src/views/board/components/NewListForm.tsx:140
msgid "Create another"
msgstr "Crea un altro"
@@ -452,8 +469,8 @@ msgstr "Crea nuova bacheca"
msgid "Create new key"
msgstr "Crea nuova chiave"
#: src/views/card/components/LabelSelector.tsx:98
#: src/views/board/components/NewCardForm.tsx:394
#: src/views/card/components/LabelSelector.tsx:98
msgid "Create new label"
msgstr "Crea nuova etichetta"
@@ -461,8 +478,8 @@ msgstr "Crea nuova etichetta"
msgid "Create new list"
msgstr "Crea nuova lista"
#: src/components/NewWorkspaceForm.tsx:94
#: src/components/WorkspaceMenu.tsx:116
#: src/components/NewWorkspaceForm.tsx:93
msgid "Create workspace"
msgstr "Crea spazio di lavoro"
@@ -494,17 +511,17 @@ msgstr "Assistenza clienti"
msgid "Dark"
msgstr "Scuro"
#: src/views/card/components/DeleteCommentConfirmation.tsx:82
#: src/views/card/components/DeleteChecklistConfirmation.tsx:66
#: src/views/card/components/DeleteCardConfirmation.tsx:92
#: src/components/LabelForm.tsx:228
#: src/components/DeleteLabelConfirmation.tsx:51
#: src/components/LabelForm.tsx:228
#: src/views/card/components/DeleteCardConfirmation.tsx:92
#: src/views/card/components/DeleteChecklistConfirmation.tsx:66
#: src/views/card/components/DeleteCommentConfirmation.tsx:82
msgid "Delete"
msgstr "Elimina"
#: src/views/settings/components/DeleteAccountConfirmation.tsx:96
#: src/views/settings/index.tsx:309
#: src/views/settings/index.tsx:319
#: src/views/settings/components/DeleteAccountConfirmation.tsx:96
msgid "Delete account"
msgstr "Elimina account"
@@ -524,9 +541,9 @@ msgstr "Elimina commento"
msgid "Delete list"
msgstr "Elimina lista"
#: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:106
#: src/views/settings/index.tsx:272
#: src/views/settings/index.tsx:283
#: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:106
msgid "Delete workspace"
msgstr "Elimina spazio di lavoro"
@@ -588,9 +605,9 @@ msgstr "documenti"
msgid "Docs"
msgstr "Documenti"
#: src/views/home/components/Footer.tsx:77
#: src/views/boards/components/TemplateBoards.tsx:23
#: src/components/UserMenu.tsx:191
#: src/views/boards/components/TemplateBoards.tsx:23
#: src/views/home/components/Footer.tsx:77
msgid "Documentation"
msgstr "Documentazione"
@@ -605,8 +622,8 @@ msgstr "Non hai un account? <0><1>Registrati</1></0>"
msgid "Done"
msgstr "Fatto"
#: src/views/board/components/UpdateBoardSlugForm.tsx:115
#: src/views/board/components/BoardDropdown.tsx:15
#: src/views/board/components/UpdateBoardSlugForm.tsx:115
msgid "Edit board URL"
msgstr "Modifica URL della bacheca"
@@ -626,11 +643,11 @@ msgstr "Modifica URL dell'area di lavoro"
msgid "Editing"
msgstr "Modifica"
#: src/components/AuthForm.tsx:337
#: src/components/AuthForm.tsx:368
msgid "email"
msgstr "email"
#: src/views/members/components/InviteMemberForm.tsx:99
#: src/views/members/components/InviteMemberForm.tsx:163
msgid "Email"
msgstr "Email"
@@ -646,11 +663,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:302
#: src/components/AuthForm.tsx:333
msgid "Enter your email address"
msgstr "Inserisci il tuo indirizzo email"
#: src/components/AuthForm.tsx:290
#: src/components/AuthForm.tsx:321
msgid "Enter your name"
msgstr "Inserisci il tuo nome"
@@ -658,7 +675,7 @@ msgstr "Inserisci il tuo nome"
msgid "Enter your new password"
msgstr "Inserisci la tua nuova password"
#: src/components/AuthForm.tsx:315
#: src/components/AuthForm.tsx:346
msgid "Enter your password"
msgstr "Inserisci la tua password"
@@ -682,8 +699,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:57
#: src/views/members/components/InviteMemberForm.tsx:63
#: src/views/members/components/InviteMemberForm.tsx:76
#: src/views/members/components/InviteMemberForm.tsx:82
msgid "Error inviting member"
msgstr "Errore durante l'invito del membro"
@@ -707,6 +724,10 @@ 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:132
msgid "Error upgrading subscription"
msgstr "Errore nell'aggiornamento dell'abbonamento"
#: src/views/settings/components/Avatar.tsx:56
#: src/views/settings/components/Avatar.tsx:97
msgid "Error uploading profile image"
@@ -725,12 +746,12 @@ msgid "Execution"
msgstr "Esecuzione"
#. placeholder {0}: provider.at(0)?.toUpperCase() + provider.slice(1)
#: src/components/AuthForm.tsx:241
#: src/components/AuthForm.tsx:269
msgid "Failed to login with {0}. Please try again."
msgstr "Accesso con {0} fallito. Riprova."
#: src/views/home/components/Footer.tsx:51
#: src/views/home/components/Faqs.tsx:143
#: src/views/home/components/Footer.tsx:51
msgid "FAQs"
msgstr "FAQ"
@@ -742,14 +763,14 @@ msgstr "Funzionalità"
msgid "Feature Request"
msgstr "Richiesta funzionalità"
#: src/views/home/components/Header.tsx:14
#: src/views/home/components/Footer.tsx:49
#: src/views/home/components/Features.tsx:125
#: src/views/home/components/Footer.tsx:49
#: src/views/home/components/Header.tsx:14
msgid "Features"
msgstr "Funzionalità"
#: src/components/UserMenu.tsx:199
#: src/components/FeedbackModal.tsx:59
#: src/components/UserMenu.tsx:199
msgid "Feedback"
msgstr "Feedback"
@@ -773,6 +794,11 @@ msgstr "Per la sostenibilità a lungo termine, riconosciamo che tutti i buoni pr
msgid "Free"
msgstr "Gratuito"
#: src/views/members/components/InviteMemberForm.tsx:192
#: src/views/members/index.tsx:184
msgid "Free Plan"
msgstr "Piano gratuito"
#: src/views/home/components/Pricing.tsx:34
msgid "Free, forever"
msgstr "Gratuito, per sempre"
@@ -785,10 +811,10 @@ msgstr "Tempo pieno"
msgid "Fun"
msgstr "Divertimento"
#: src/views/auth/signup/index.tsx:67
#: src/views/home/components/Cta.tsx:61
#: src/views/home/components/Header.tsx:102
#: src/views/home/components/Header.tsx:141
#: src/views/home/components/Cta.tsx:61
#: src/views/auth/signup/index.tsx:67
msgid "Get started"
msgstr "Inizia ora"
@@ -813,7 +839,7 @@ msgstr "Inizia gratuitamente oggi"
msgid "Get started for free, with no usage limits. For collaboration, upgrade to a plan that fits the size of your team."
msgstr "Inizia gratuitamente, senza limiti di utilizzo. Per la collaborazione, passa a un piano adatto alle dimensioni del tuo team."
#: src/views/home/index.tsx:75
#: src/views/home/index.tsx:76
msgid "Get started on Cloud"
msgstr "Inizia su Cloud"
@@ -924,23 +950,27 @@ msgstr "Integrazioni"
msgid "Interviewing"
msgstr "Colloquio"
#: src/views/members/components/InviteMemberForm.tsx:26
#: src/views/members/components/InviteMemberForm.tsx:45
msgid "Invalid email address"
msgstr "Indirizzo email non valido"
#: src/views/members/index.tsx:169
#: src/views/members/index.tsx:193
msgid "Invite"
msgstr "Invita"
#: src/views/members/components/InviteMemberForm.tsx:113
#: src/views/members/components/InviteMemberForm.tsx:207
msgid "Invite another"
msgstr "Invita un altro"
#: src/views/members/components/InviteMemberForm.tsx:123
#: src/views/card/components/MemberSelector.tsx:112
#: src/views/members/components/InviteMemberForm.tsx:231
msgid "Invite member"
msgstr "Invita membro"
#: src/views/members/components/InviteMemberForm.tsx:195
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/boards/components/TemplateBoards.tsx:69
msgid "Junior"
msgstr "Junior"
@@ -953,14 +983,14 @@ msgstr "Kanban è migliore con un team. Perfetto per piccoli team in crescita ch
msgid "Kanban reimagined"
msgstr "Kanban reinventato"
#: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:67
#: src/views/settings/components/DeleteAccountConfirmation.tsx:57
#: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:67
msgid "Keep in mind that this action is irreversible."
msgstr "Tieni presente che questa azione è irreversibile."
#: src/views/card/index.tsx:117
#: src/views/board/components/NewCardForm.tsx:398
#: src/views/board/components/Filters.tsx:101
#: src/views/board/components/NewCardForm.tsx:398
#: src/views/card/index.tsx:117
msgid "Labels"
msgstr "Etichette"
@@ -988,7 +1018,7 @@ msgstr "Licenza"
msgid "Light"
msgstr "Chiaro"
#: src/views/public/board/index.tsx:57
#: src/views/public/board/index.tsx:62
msgid "Link copied"
msgstr "Link copiato"
@@ -1016,7 +1046,7 @@ msgstr "A lungo termine"
msgid "Low Priority"
msgstr "Bassa priorità"
#: src/components/AuthForm.tsx:338
#: src/components/AuthForm.tsx:369
msgid "magic link"
msgstr "link magico"
@@ -1033,16 +1063,16 @@ msgstr "ha segnato l'elemento <0>{0}</0> della checklist come incompleto"
msgid "Medium Priority"
msgstr "Media priorità"
#: src/views/members/index.tsx:161
#: src/views/card/index.tsx:125
#: src/views/board/components/NewCardForm.tsx:357
#: src/views/board/components/Filters.tsx:93
#: src/components/SideNavigation.tsx:73
#: src/views/board/components/Filters.tsx:93
#: src/views/board/components/NewCardForm.tsx:357
#: src/views/card/index.tsx:125
#: src/views/members/index.tsx:171
msgid "Members"
msgstr "Membri"
#. placeholder {0}: workspace.name ?? "Workspace"
#: src/views/members/index.tsx:157
#: src/views/members/index.tsx:167
msgid "Members | {0}"
msgstr "Membri | {0}"
@@ -1050,6 +1080,10 @@ msgstr "Membri | {0}"
msgid "Monthly"
msgstr "Mensile"
#: src/views/members/components/InviteMemberForm.tsx:92
msgid "monthly billing"
msgstr "fatturazione mensile"
#. placeholder {0}: truncate(fromList)
#. placeholder {1}: truncate(toList)
#: src/views/card/components/ActivityList.tsx:98
@@ -1060,8 +1094,8 @@ msgstr "ha spostato la scheda da <0>{0}</0> a<1>{1}</1>"
msgid "moved the card to another list"
msgstr "ha spostato la scheda in un'altra lista"
#: src/views/boards/components/NewBoardForm.tsx:99
#: src/components/LabelForm.tsx:135
#: src/views/boards/components/NewBoardForm.tsx:99
msgid "Name"
msgstr "Nome"
@@ -1093,8 +1127,8 @@ msgstr "Nuova importazione"
msgid "New label"
msgstr "Nuova etichetta"
#: src/views/board/index.tsx:394
#: src/views/board/components/NewListForm.tsx:112
#: src/views/board/index.tsx:394
msgid "New list"
msgstr "Nuova lista"
@@ -1110,7 +1144,7 @@ msgstr "La nuova password deve essere diversa dalla password attuale"
msgid "New Ticket"
msgstr "Nuovo ticket"
#: src/components/NewWorkspaceForm.tsx:64
#: src/components/NewWorkspaceForm.tsx:65
msgid "New workspace"
msgstr "Nuovo spazio di lavoro"
@@ -1130,7 +1164,7 @@ msgstr "Nessuna bacheca"
msgid "No boards found"
msgstr "Nessuna bacheca trovata"
#: src/views/home/index.tsx:85
#: src/views/home/index.tsx:86
msgid "No credit card required"
msgstr "Nessuna carta di credito richiesta"
@@ -1154,7 +1188,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:280
#: src/components/AuthForm.tsx:311
msgid "or"
msgstr "o"
@@ -1182,11 +1216,11 @@ msgstr "La password deve contenere almeno 8 caratteri"
msgid "Passwords do not match"
msgstr "Le password non corrispondono"
#: src/views/home/components/Pricing.tsx:101
#: src/views/home/components/Pricing.tsx:96
msgid "Payment frequency"
msgstr "Frequenza di pagamento"
#: src/views/members/index.tsx:118
#: src/views/members/index.tsx:128
msgid "Pending"
msgstr "In attesa"
@@ -1207,15 +1241,15 @@ msgstr "Pianificazione"
msgid "Please confirm your new password"
msgstr "Conferma la tua nuova password"
#: src/components/AuthForm.tsx:306
#: src/components/AuthForm.tsx:337
msgid "Please enter a valid email address"
msgstr "Inserisci un indirizzo email valido"
#: src/components/AuthForm.tsx:294
#: src/components/AuthForm.tsx:325
msgid "Please enter a valid name"
msgstr "Inserisci un nome valido"
#: src/components/AuthForm.tsx:319
#: src/components/AuthForm.tsx:350
msgid "Please enter a valid password"
msgstr "Inserisci una password valida"
@@ -1223,46 +1257,47 @@ msgstr "Inserisci una password valida"
msgid "Please select a file to upload."
msgstr "Seleziona un file da caricare."
#: src/views/settings/components/UpdateWorkspaceUrlForm.tsx:74
#: src/views/settings/components/UpdateWorkspaceNameForm.tsx:57
#: src/views/settings/components/UpdateWorkspaceDescriptionForm.tsx:62
#: src/views/settings/components/UpdateDisplayNameForm.tsx:55
#: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:46
#: src/views/settings/components/DeleteAccountConfirmation.tsx:40
#: src/views/settings/components/Avatar.tsx:40
#: src/views/settings/components/Avatar.tsx:98
#: src/views/members/components/InviteMemberForm.tsx:64
#: src/views/members/components/DeleteMemberConfirmation.tsx:28
#: src/views/card/index.tsx:172
#: src/views/card/components/NewCommentForm.tsx:31
#: src/views/card/components/NewChecklistItemForm.tsx:89
#: src/views/card/components/NewChecklistForm.tsx:70
#: src/views/card/components/MemberSelector.tsx:80
#: src/views/card/components/ListSelector.tsx:53
#: src/views/card/components/LabelSelector.tsx:73
#: src/views/card/components/DeleteCommentConfirmation.tsx:45
#: src/views/card/components/DeleteChecklistConfirmation.tsx:37
#: src/views/card/components/DeleteCardConfirmation.tsx:52
#: src/views/card/components/Comment.tsx:64
#: src/views/card/components/ChecklistNameInput.tsx:46
#: src/views/card/components/ChecklistItemRow.tsx:60
#: src/views/card/components/ChecklistItemRow.tsx:88
#: src/views/boards/components/ImportBoardsForm.tsx:205
#: src/components/DeleteLabelConfirmation.tsx:26
#: src/components/FeedbackModal.tsx:41
#: src/components/NewWorkspaceForm.tsx:42
#: src/views/board/components/NewCardForm.tsx:174
#: src/views/board/components/NewListForm.tsx:78
#: src/views/board/components/UpdateBoardSlugForm.tsx:72
#: src/views/board/components/VisibilityButton.tsx:53
#: src/views/board/index.tsx:134
#: src/views/board/index.tsx:190
#: src/views/board/components/VisibilityButton.tsx:53
#: src/views/board/components/UpdateBoardSlugForm.tsx:72
#: src/views/board/components/NewListForm.tsx:78
#: src/views/board/components/NewCardForm.tsx:174
#: src/components/NewWorkspaceForm.tsx:41
#: src/components/FeedbackModal.tsx:41
#: src/components/DeleteLabelConfirmation.tsx:26
#: src/views/boards/components/ImportBoardsForm.tsx:205
#: src/views/card/components/ChecklistItemRow.tsx:60
#: src/views/card/components/ChecklistItemRow.tsx:88
#: src/views/card/components/ChecklistNameInput.tsx:46
#: src/views/card/components/Comment.tsx:64
#: src/views/card/components/DeleteCardConfirmation.tsx:52
#: src/views/card/components/DeleteChecklistConfirmation.tsx:37
#: src/views/card/components/DeleteCommentConfirmation.tsx:45
#: src/views/card/components/LabelSelector.tsx:73
#: src/views/card/components/ListSelector.tsx:53
#: src/views/card/components/MemberSelector.tsx:80
#: src/views/card/components/NewChecklistForm.tsx:70
#: src/views/card/components/NewChecklistItemForm.tsx:89
#: 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:83
#: src/views/members/components/InviteMemberForm.tsx:133
#: src/views/settings/components/Avatar.tsx:40
#: src/views/settings/components/Avatar.tsx:98
#: src/views/settings/components/DeleteAccountConfirmation.tsx:40
#: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:46
#: src/views/settings/components/UpdateDisplayNameForm.tsx:55
#: src/views/settings/components/UpdateWorkspaceDescriptionForm.tsx:62
#: src/views/settings/components/UpdateWorkspaceNameForm.tsx:57
#: src/views/settings/components/UpdateWorkspaceUrlForm.tsx:74
msgid "Please try again later, or contact customer support."
msgstr "Riprova più tardi o contatta l'assistenza clienti."
#: src/views/home/components/Pricing.tsx:85
#: src/views/home/components/Header.tsx:15
#: src/views/home/components/Footer.tsx:50
#: src/views/home/components/Header.tsx:15
#: src/views/home/components/Pricing.tsx:85
msgid "Pricing"
msgstr "Prezzi"
@@ -1318,7 +1353,7 @@ msgstr "Remoto"
msgid "Remove"
msgstr "Rimuovi"
#: src/views/members/index.tsx:132
#: src/views/members/index.tsx:142
msgid "Remove member"
msgstr "Rimuovi membro"
@@ -1369,12 +1404,12 @@ msgstr "Revisione"
msgid "Revoke"
msgstr "Revoca"
#: src/views/home/components/Header.tsx:13
#: src/views/home/components/Footer.tsx:36
#: src/views/home/components/Header.tsx:13
msgid "Roadmap"
msgstr "Roadmap"
#: src/views/members/index.tsx:191
#: src/views/members/index.tsx:215
msgid "Role"
msgstr "Ruolo"
@@ -1406,7 +1441,7 @@ msgstr "Seleziona fonte"
msgid "Self Host"
msgstr "Self Host"
#: src/views/home/index.tsx:81
#: src/views/home/index.tsx:82
msgid "Self host with Github"
msgstr "Self host con Github"
@@ -1422,8 +1457,8 @@ msgstr "Invia feedback"
msgid "Senior"
msgstr "Senior"
#: src/views/settings/index.tsx:140
#: src/components/SideNavigation.tsx:78
#: src/views/settings/index.tsx:140
msgid "Settings"
msgstr "Impostazioni"
@@ -1450,7 +1485,7 @@ msgstr "Registrazione disabilitata"
msgid "Sign up is currently disabled. Please try again later."
msgstr "La registrazione è attualmente disabilitata. Riprova più tardi."
#: src/components/AuthForm.tsx:335
#: src/components/AuthForm.tsx:366
msgid "Sign up with "
msgstr "Registrati con "
@@ -1470,12 +1505,12 @@ msgstr "Social media"
msgid "Software Development"
msgstr "Sviluppo software"
#: src/views/home/index.tsx:37
#: src/views/home/index.tsx:38
msgid "Star on Github"
msgstr "Metti una stella su Github"
#: src/components/AuthForm.tsx:188
#: src/components/AuthForm.tsx:205
#: src/components/AuthForm.tsx:203
#: src/components/AuthForm.tsx:220
msgid "Success"
msgstr "Operazione riuscita"
@@ -1491,6 +1526,11 @@ msgstr "Sostieni lo sviluppo del progetto"
msgid "System"
msgstr "Sistema"
#: src/views/members/components/InviteMemberForm.tsx:183
#: src/views/members/index.tsx:184
msgid "Team Plan"
msgstr "Piano Team"
#: src/views/home/components/Pricing.tsx:46
msgid "Teams"
msgstr "Team"
@@ -1515,7 +1555,7 @@ msgstr "La password attuale inserita non è corretta."
msgid "The main difference between Kan and Trello is that Kan is open source, allowing anyone to view, modify, and contribute to our code. Our cloud offering also offers no restrictions on features for individual use, whereas Trello locks basic features such as the number of boards you can create behind a paywall."
msgstr "La principale differenza tra Kan e Trello è che Kan è open source, permettendo a chiunque di visualizzare, modificare e contribuire al nostro codice. La nostra offerta cloud non impone inoltre alcuna restrizione sulle funzionalità per uso individuale, mentre Trello blocca funzionalità di base come il numero di bacheche che puoi creare dietro un paywall."
#: src/views/home/index.tsx:65
#: src/views/home/index.tsx:66
msgid "The open source <0/> alternative to Trello"
msgstr "L'alternativa open source <0/> a Trello"
@@ -1532,14 +1572,14 @@ msgstr "Tema"
msgid "They won't be able to access this workspace."
msgstr "Non potranno accedere a questo spazio di lavoro."
#: src/views/card/components/DeleteCommentConfirmation.tsx:68
#: src/views/card/components/DeleteChecklistConfirmation.tsx:58
#: src/views/card/components/DeleteCardConfirmation.tsx:78
#: src/components/DeleteLabelConfirmation.tsx:44
#: src/views/card/components/DeleteCardConfirmation.tsx:78
#: src/views/card/components/DeleteChecklistConfirmation.tsx:58
#: src/views/card/components/DeleteCommentConfirmation.tsx:68
msgid "This action can't be undone."
msgstr "Questa azione non può essere annullata."
#: src/views/public/board/index.tsx:146
#: src/views/public/board/index.tsx:151
msgid "This board is private or does not exist"
msgstr "Questa bacheca è privata o non esiste"
@@ -1604,7 +1644,7 @@ msgstr "Impossibile creare la checklist"
msgid "Unable to create list"
msgstr "Impossibile creare la lista"
#: src/components/NewWorkspaceForm.tsx:40
#: src/components/NewWorkspaceForm.tsx:41
msgid "Unable to create workspace"
msgstr "Impossibile creare lo spazio di lavoro"
@@ -1640,8 +1680,8 @@ msgstr "Impossibile aggiornare l'URL della bacheca"
msgid "Unable to update board visibility"
msgstr "Impossibile aggiornare la visibilità della bacheca"
#: src/views/card/index.tsx:171
#: src/views/board/index.tsx:189
#: src/views/card/index.tsx:172
msgid "Unable to update card"
msgstr "Impossibile aggiornare la scheda"
@@ -1661,8 +1701,8 @@ msgstr "Impossibile aggiornare il commento"
msgid "Unable to update labels"
msgstr "Impossibile aggiornare le etichette"
#: src/views/card/components/ListSelector.tsx:52
#: src/views/board/index.tsx:133
#: src/views/card/components/ListSelector.tsx:52
msgid "Unable to update list"
msgstr "Impossibile aggiornare la lista"
@@ -1703,11 +1743,11 @@ msgstr "Commenti illimitati"
msgid "Unlimited lists"
msgstr "Liste illimitate"
#: src/views/settings/components/UpdateWorkspaceUrlForm.tsx:154
#: src/views/settings/components/UpdateWorkspaceNameForm.tsx:82
#: src/views/settings/components/UpdateWorkspaceDescriptionForm.tsx:90
#: src/views/settings/components/UpdateDisplayNameForm.tsx:79
#: src/views/board/components/UpdateBoardSlugForm.tsx:174
#: src/views/settings/components/UpdateDisplayNameForm.tsx:79
#: src/views/settings/components/UpdateWorkspaceDescriptionForm.tsx:90
#: src/views/settings/components/UpdateWorkspaceNameForm.tsx:82
#: src/views/settings/components/UpdateWorkspaceUrlForm.tsx:154
msgid "Update"
msgstr "Aggiorna"
@@ -1736,6 +1776,10 @@ msgstr "ha aggiornato il titolo in <0>{0}</0>"
msgid "Upgrade"
msgstr "Aggiorna"
#: src/views/members/components/InviteMemberForm.tsx:222
msgid "Upgrade to Team Plan"
msgstr "Passa al Piano Team"
#: src/views/boards/components/TemplateBoards.tsx:37
#: src/views/boards/components/TemplateBoards.tsx:54
msgid "Urgent"
@@ -1757,11 +1801,11 @@ msgstr "L'URL deve contenere almeno 3 caratteri"
msgid "Use template"
msgstr "Usa template"
#: src/views/members/index.tsx:185
#: src/views/members/index.tsx:209
msgid "User"
msgstr "Utente"
#: src/views/members/components/InviteMemberForm.tsx:58
#: src/views/members/components/InviteMemberForm.tsx:77
msgid "User is already a member of this workspace"
msgstr "L'utente è già membro di questo spazio di lavoro"
@@ -1781,7 +1825,7 @@ msgstr "Visualizza e gestisci la tua fatturazione e abbonamento."
msgid "View docs"
msgstr "Visualizza documenti"
#: src/views/public/board/index.tsx:120
#: src/views/public/board/index.tsx:125
msgid "View only"
msgstr "Solo visualizzazione"
@@ -1789,7 +1833,7 @@ msgstr "Solo visualizzazione"
msgid "View our roadmap."
msgstr "Visualizza la nostra roadmap."
#: src/views/public/board/index.tsx:149
#: src/views/public/board/index.tsx:154
msgid "View workspace"
msgstr "Visualizza spazio di lavoro"
@@ -1849,13 +1893,13 @@ msgstr "La descrizione dell'area di lavoro deve contenere almeno 3 caratteri"
msgid "Workspace description updated"
msgstr "Descrizione dell'area di lavoro aggiornata"
#: src/views/home/components/Pricing.tsx:54
#: src/views/home/components/Features.tsx:83
#: src/views/home/components/Pricing.tsx:54
msgid "Workspace members"
msgstr "Membri del workspace"
#: src/components/NewWorkspaceForm.tsx:81
#: src/views/settings/index.tsx:158
#: src/components/NewWorkspaceForm.tsx:80
msgid "Workspace name"
msgstr "Nome dello spazio di lavoro"
@@ -1907,11 +1951,11 @@ 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:206
#: src/components/AuthForm.tsx:221
msgid "You have been logged in successfully."
msgstr "Hai effettuato l'accesso con successo."
#: src/components/AuthForm.tsx:189
#: src/components/AuthForm.tsx:204
msgid "You have been signed up successfully."
msgstr "Ti sei registrato con successo."

File diff suppressed because one or more lines are too long

View File

@@ -23,7 +23,7 @@ msgstr ", of bekijk onze"
#. placeholder {0}: card?.title ?? "Card"
#. placeholder {1}: board?.name ?? "Board"
#: src/views/card/index.tsx:213
#: src/views/card/index.tsx:214
msgid "{0} | {1}"
msgstr "{0} | {1}"
@@ -36,11 +36,20 @@ 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:91
#: src/views/members/components/InviteMemberForm.tsx:106
msgid "$10/month"
msgstr "$10/maand"
#: src/views/members/components/InviteMemberForm.tsx:106
msgid "$8/month"
msgstr "$8/maand"
#: src/views/home/components/Pricing.tsx:36
msgid "1 user"
msgstr "1 gebruiker"
#: src/views/home/index.tsx:71
#: src/views/home/index.tsx:72
msgid "A powerful, flexible kanban app that helps you organise work, track progress, and deliver results—all in one place."
msgstr "Een krachtige, flexibele kanban-app die je helpt werk te organiseren, voortgang bij te houden en resultaten te leveren—allemaal op één plek."
@@ -48,8 +57,8 @@ msgstr "Een krachtige, flexibele kanban-app die je helpt werk te organiseren, vo
msgid "Account deleted"
msgstr "Account verwijderd"
#: src/views/public/board/CardModal.tsx:140
#: src/views/card/index.tsx:288
#: src/views/card/index.tsx:289
#: src/views/public/board/CardModal.tsx:143
msgid "Activity"
msgstr "Activiteit"
@@ -61,8 +70,8 @@ msgstr "Activiteitenlogboeken"
msgid "Add a card"
msgstr "Voeg een kaart toe"
#: src/views/card/components/NewCommentForm.tsx:57
#: src/views/card/components/Comment.tsx:146
#: src/views/card/components/NewCommentForm.tsx:57
msgid "Add a comment..."
msgstr "Voeg een reactie toe..."
@@ -87,8 +96,8 @@ msgstr "Details toevoegen..."
msgid "Add label"
msgstr "Label toevoegen"
#: src/views/members/components/InviteMemberForm.tsx:85
#: src/views/card/components/MemberSelector.tsx:130
#: src/views/members/components/InviteMemberForm.tsx:149
msgid "Add member"
msgstr "Lid toevoegen"
@@ -123,14 +132,14 @@ 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:186
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/home/components/Pricing.tsx:55
msgid "Admin roles"
msgstr "Beheerdersrollen"
#: src/views/home/components/Pricing.tsx:97
msgid "All seats are free during the beta until Sept 1st!"
msgstr "Alle plaatsen zijn gratis tijdens de bèta tot 1 september!"
#: src/views/home/components/Footer.tsx:18
msgid "All systems operational"
msgstr "Alle systemen operationeel"
@@ -209,8 +218,16 @@ msgstr "Backlog"
msgid "Basic Kanban"
msgstr "Basis kanban"
#: src/views/settings/index.tsx:198
#: src/views/members/components/InviteMemberForm.tsx:107
msgid "billed annually"
msgstr "jaarlijks gefactureerd"
#: src/views/members/components/InviteMemberForm.tsx:107
msgid "billed monthly"
msgstr "maandelijks gefactureerd"
#: src/views/boards/components/TemplateBoards.tsx:55
#: src/views/settings/index.tsx:198
msgid "Billing"
msgstr "Facturering"
@@ -234,8 +251,8 @@ msgstr "Bordnaam mag niet langer zijn dan 100 tekens"
msgid "Board name is required"
msgstr "Bordnaam is verplicht"
#: src/views/public/board/index.tsx:143
#: src/views/board/index.tsx:357
#: src/views/public/board/index.tsx:148
msgid "Board not found"
msgstr "Bord niet gevonden"
@@ -247,7 +264,7 @@ msgstr "Board URL kan alleen letters, cijfers en koppeltekens bevatten"
msgid "Board URL cannot exceed 60 characters"
msgstr "Board URL mag niet langer zijn dan 60 tekens"
#: src/views/public/board/index.tsx:59
#: src/views/public/board/index.tsx:64
msgid "Board URL copied to clipboard"
msgstr "Board URL gekopieerd naar klembord"
@@ -263,8 +280,8 @@ msgstr "Bordzichtbaarheid"
msgid "Board visibility updated"
msgstr "Zichtbaarheid van bord bijgewerkt"
#: src/views/boards/index.tsx:27
#: src/components/SideNavigation.tsx:68
#: src/views/boards/index.tsx:27
msgid "Boards"
msgstr "Borden"
@@ -285,20 +302,20 @@ msgstr "Bug"
msgid "Bug Report"
msgstr "Bugrapport"
#: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:98
#: src/views/settings/components/DeleteAccountConfirmation.tsx:88
#: src/views/settings/components/CustomURLConfirmation.tsx:50
#: src/views/settings/components/ChangePasswordConfirmation.tsx:168
#: src/views/members/components/DeleteMemberConfirmation.tsx:55
#: src/views/card/components/DeleteCommentConfirmation.tsx:76
#: src/views/card/components/DeleteChecklistConfirmation.tsx:63
#: src/views/card/components/DeleteCardConfirmation.tsx:86
#: src/views/card/components/Comment.tsx:158
#: src/components/DeleteLabelConfirmation.tsx:49
#: src/views/card/components/Comment.tsx:158
#: src/views/card/components/DeleteCardConfirmation.tsx:86
#: 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/ChangePasswordConfirmation.tsx:168
#: src/views/settings/components/CustomURLConfirmation.tsx:50
#: src/views/settings/components/DeleteAccountConfirmation.tsx:88
#: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:98
msgid "Cancel"
msgstr "Annuleren"
#: src/views/card/index.tsx:259
#: src/views/card/index.tsx:260
msgid "Card not found"
msgstr "Kaart niet gevonden"
@@ -306,10 +323,10 @@ msgstr "Kaart niet gevonden"
msgid "Card title"
msgstr "Kaarttitel"
#: src/views/settings/index.tsx:291
#: src/views/settings/index.tsx:301
#: src/views/settings/components/ChangePasswordConfirmation.tsx:109
#: src/views/settings/components/ChangePasswordConfirmation.tsx:178
#: src/views/settings/index.tsx:291
#: src/views/settings/index.tsx:301
msgid "Change Password"
msgstr "Wachtwoord wijzigen"
@@ -317,8 +334,8 @@ msgstr "Wachtwoord wijzigen"
msgid "Change the language of the app."
msgstr "Wijzig de taal van de app."
#: src/views/auth/signup/index.tsx:67
#: src/views/auth/login/index.tsx:41
#: src/views/auth/signup/index.tsx:67
msgid "Check your inbox"
msgstr "Controleer je inbox"
@@ -330,8 +347,8 @@ msgstr "Naam checklist"
msgid "Clear filters"
msgstr "Filters wissen"
#: src/views/auth/signup/index.tsx:72
#: src/views/auth/login/index.tsx:46
#: src/views/auth/signup/index.tsx:72
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."
@@ -380,8 +397,8 @@ msgstr "URL-wijziging bevestigen"
msgid "Confirm your new password"
msgstr "Bevestig je nieuwe wachtwoord"
#: src/views/settings/index.tsx:235
#: src/views/boards/components/ImportBoardsForm.tsx:157
#: src/views/settings/index.tsx:235
msgid "Connect Trello"
msgstr "Verbind Trello"
@@ -405,12 +422,12 @@ msgstr "Neem contact op"
msgid "Content Creation"
msgstr "Content creatie"
#: src/components/AuthForm.tsx:335
#: src/components/AuthForm.tsx:366
msgid "Continue with "
msgstr "Doorgaan met "
#. placeholder {0}: provider.name
#: src/components/AuthForm.tsx:269
#. placeholder {0}: key === "oidc" ? oidcProviderName : provider.name
#: src/components/AuthForm.tsx:297
msgid "Continue with {0}"
msgstr "Doorgaan met {0}"
@@ -418,9 +435,9 @@ msgstr "Doorgaan met {0}"
msgid "Control who can view and edit your boards."
msgstr "Bepaal wie je borden kan bekijken en bewerken."
#: src/views/board/components/NewListForm.tsx:140
#: src/views/board/components/NewCardForm.tsx:458
#: src/components/LabelForm.tsx:213
#: src/views/board/components/NewCardForm.tsx:458
#: src/views/board/components/NewListForm.tsx:140
msgid "Create another"
msgstr "Maak nog een"
@@ -452,8 +469,8 @@ msgstr "Nieuw bord maken"
msgid "Create new key"
msgstr "Nieuwe sleutel aanmaken"
#: src/views/card/components/LabelSelector.tsx:98
#: src/views/board/components/NewCardForm.tsx:394
#: src/views/card/components/LabelSelector.tsx:98
msgid "Create new label"
msgstr "Maak nieuw label"
@@ -461,8 +478,8 @@ msgstr "Maak nieuw label"
msgid "Create new list"
msgstr "Maak nieuwe lijst"
#: src/components/NewWorkspaceForm.tsx:94
#: src/components/WorkspaceMenu.tsx:116
#: src/components/NewWorkspaceForm.tsx:93
msgid "Create workspace"
msgstr "Werkruimte maken"
@@ -494,17 +511,17 @@ msgstr "Klantenservice"
msgid "Dark"
msgstr "Donker"
#: src/views/card/components/DeleteCommentConfirmation.tsx:82
#: src/views/card/components/DeleteChecklistConfirmation.tsx:66
#: src/views/card/components/DeleteCardConfirmation.tsx:92
#: src/components/LabelForm.tsx:228
#: src/components/DeleteLabelConfirmation.tsx:51
#: src/components/LabelForm.tsx:228
#: src/views/card/components/DeleteCardConfirmation.tsx:92
#: src/views/card/components/DeleteChecklistConfirmation.tsx:66
#: src/views/card/components/DeleteCommentConfirmation.tsx:82
msgid "Delete"
msgstr "Verwijderen"
#: src/views/settings/components/DeleteAccountConfirmation.tsx:96
#: src/views/settings/index.tsx:309
#: src/views/settings/index.tsx:319
#: src/views/settings/components/DeleteAccountConfirmation.tsx:96
msgid "Delete account"
msgstr "Account verwijderen"
@@ -524,9 +541,9 @@ msgstr "Reactie verwijderen"
msgid "Delete list"
msgstr "Lijst verwijderen"
#: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:106
#: src/views/settings/index.tsx:272
#: src/views/settings/index.tsx:283
#: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:106
msgid "Delete workspace"
msgstr "Werkruimte verwijderen"
@@ -588,9 +605,9 @@ msgstr "docs"
msgid "Docs"
msgstr "Docs"
#: src/views/home/components/Footer.tsx:77
#: src/views/boards/components/TemplateBoards.tsx:23
#: src/components/UserMenu.tsx:191
#: src/views/boards/components/TemplateBoards.tsx:23
#: src/views/home/components/Footer.tsx:77
msgid "Documentation"
msgstr "Documentatie"
@@ -605,8 +622,8 @@ msgstr "Heb je geen account? <0><1>Registreer je</1></0>"
msgid "Done"
msgstr "Klaar"
#: src/views/board/components/UpdateBoardSlugForm.tsx:115
#: src/views/board/components/BoardDropdown.tsx:15
#: src/views/board/components/UpdateBoardSlugForm.tsx:115
msgid "Edit board URL"
msgstr "Board URL bewerken"
@@ -626,11 +643,11 @@ msgstr "Werkruimte-URL bewerken"
msgid "Editing"
msgstr "Bewerken"
#: src/components/AuthForm.tsx:337
#: src/components/AuthForm.tsx:368
msgid "email"
msgstr "e-mail"
#: src/views/members/components/InviteMemberForm.tsx:99
#: src/views/members/components/InviteMemberForm.tsx:163
msgid "Email"
msgstr "E-mail"
@@ -646,11 +663,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:302
#: src/components/AuthForm.tsx:333
msgid "Enter your email address"
msgstr "Voer je e-mailadres in"
#: src/components/AuthForm.tsx:290
#: src/components/AuthForm.tsx:321
msgid "Enter your name"
msgstr "Voer je naam in"
@@ -658,7 +675,7 @@ msgstr "Voer je naam in"
msgid "Enter your new password"
msgstr "Voer je nieuwe wachtwoord in"
#: src/components/AuthForm.tsx:315
#: src/components/AuthForm.tsx:346
msgid "Enter your password"
msgstr "Voer je wachtwoord in"
@@ -682,8 +699,8 @@ msgstr "Fout bij verwijderen werkruimte"
msgid "Error disconnecting Trello"
msgstr "Fout bij ontkoppelen van Trello"
#: src/views/members/components/InviteMemberForm.tsx:57
#: src/views/members/components/InviteMemberForm.tsx:63
#: src/views/members/components/InviteMemberForm.tsx:76
#: src/views/members/components/InviteMemberForm.tsx:82
msgid "Error inviting member"
msgstr "Fout bij het uitnodigen van lid"
@@ -707,6 +724,10 @@ 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:132
msgid "Error upgrading subscription"
msgstr "Fout bij het upgraden van abonnement"
#: src/views/settings/components/Avatar.tsx:56
#: src/views/settings/components/Avatar.tsx:97
msgid "Error uploading profile image"
@@ -725,12 +746,12 @@ msgid "Execution"
msgstr "Uitvoering"
#. placeholder {0}: provider.at(0)?.toUpperCase() + provider.slice(1)
#: src/components/AuthForm.tsx:241
#: src/components/AuthForm.tsx:269
msgid "Failed to login with {0}. Please try again."
msgstr "Inloggen met {0} is mislukt. Probeer het opnieuw."
#: src/views/home/components/Footer.tsx:51
#: src/views/home/components/Faqs.tsx:143
#: src/views/home/components/Footer.tsx:51
msgid "FAQs"
msgstr "Veelgestelde vragen"
@@ -742,14 +763,14 @@ msgstr "Functie"
msgid "Feature Request"
msgstr "Functieverzoek"
#: src/views/home/components/Header.tsx:14
#: src/views/home/components/Footer.tsx:49
#: src/views/home/components/Features.tsx:125
#: src/views/home/components/Footer.tsx:49
#: src/views/home/components/Header.tsx:14
msgid "Features"
msgstr "Functies"
#: src/components/UserMenu.tsx:199
#: src/components/FeedbackModal.tsx:59
#: src/components/UserMenu.tsx:199
msgid "Feedback"
msgstr "Feedback"
@@ -773,6 +794,11 @@ msgstr "Voor duurzaamheid op lange termijn erkennen we dat alle goede open sourc
msgid "Free"
msgstr "Gratis"
#: src/views/members/components/InviteMemberForm.tsx:192
#: src/views/members/index.tsx:184
msgid "Free Plan"
msgstr "Gratis plan"
#: src/views/home/components/Pricing.tsx:34
msgid "Free, forever"
msgstr "Altijd gratis"
@@ -785,10 +811,10 @@ msgstr "Fulltime"
msgid "Fun"
msgstr "Leuk"
#: src/views/auth/signup/index.tsx:67
#: src/views/home/components/Cta.tsx:61
#: src/views/home/components/Header.tsx:102
#: src/views/home/components/Header.tsx:141
#: src/views/home/components/Cta.tsx:61
#: src/views/auth/signup/index.tsx:67
msgid "Get started"
msgstr "Aan de slag"
@@ -813,7 +839,7 @@ msgstr "Begin vandaag nog gratis"
msgid "Get started for free, with no usage limits. For collaboration, upgrade to a plan that fits the size of your team."
msgstr "Begin gratis, zonder gebruikslimieten. Voor samenwerking kun je upgraden naar een abonnement dat past bij de grootte van je team."
#: src/views/home/index.tsx:75
#: src/views/home/index.tsx:76
msgid "Get started on Cloud"
msgstr "Begin in de cloud"
@@ -924,23 +950,27 @@ msgstr "Integraties"
msgid "Interviewing"
msgstr "Interviewen"
#: src/views/members/components/InviteMemberForm.tsx:26
#: src/views/members/components/InviteMemberForm.tsx:45
msgid "Invalid email address"
msgstr "Ongeldig e-mailadres"
#: src/views/members/index.tsx:169
#: src/views/members/index.tsx:193
msgid "Invite"
msgstr "Uitnodigen"
#: src/views/members/components/InviteMemberForm.tsx:113
#: src/views/members/components/InviteMemberForm.tsx:207
msgid "Invite another"
msgstr "Nog iemand uitnodigen"
#: src/views/members/components/InviteMemberForm.tsx:123
#: src/views/card/components/MemberSelector.tsx:112
#: src/views/members/components/InviteMemberForm.tsx:231
msgid "Invite member"
msgstr "Lid uitnodigen"
#: src/views/members/components/InviteMemberForm.tsx:195
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/boards/components/TemplateBoards.tsx:69
msgid "Junior"
msgstr "Junior"
@@ -953,14 +983,14 @@ msgstr "Kanban werkt beter met een team. Perfect voor kleine en groeiende teams
msgid "Kanban reimagined"
msgstr "Kanban opnieuw uitgevonden"
#: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:67
#: src/views/settings/components/DeleteAccountConfirmation.tsx:57
#: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:67
msgid "Keep in mind that this action is irreversible."
msgstr "Houd er rekening mee dat deze actie onomkeerbaar is."
#: src/views/card/index.tsx:117
#: src/views/board/components/NewCardForm.tsx:398
#: src/views/board/components/Filters.tsx:101
#: src/views/board/components/NewCardForm.tsx:398
#: src/views/card/index.tsx:117
msgid "Labels"
msgstr "Labels"
@@ -988,7 +1018,7 @@ msgstr "Licentie"
msgid "Light"
msgstr "Licht"
#: src/views/public/board/index.tsx:57
#: src/views/public/board/index.tsx:62
msgid "Link copied"
msgstr "Link gekopieerd"
@@ -1016,7 +1046,7 @@ msgstr "Lange termijn"
msgid "Low Priority"
msgstr "Lage prioriteit"
#: src/components/AuthForm.tsx:338
#: src/components/AuthForm.tsx:369
msgid "magic link"
msgstr "magische link"
@@ -1033,16 +1063,16 @@ msgstr "heeft checklistitem <0>{0}</0> als onvoltooid gemarkeerd"
msgid "Medium Priority"
msgstr "Gemiddelde prioriteit"
#: src/views/members/index.tsx:161
#: src/views/card/index.tsx:125
#: src/views/board/components/NewCardForm.tsx:357
#: src/views/board/components/Filters.tsx:93
#: src/components/SideNavigation.tsx:73
#: src/views/board/components/Filters.tsx:93
#: src/views/board/components/NewCardForm.tsx:357
#: src/views/card/index.tsx:125
#: src/views/members/index.tsx:171
msgid "Members"
msgstr "Leden"
#. placeholder {0}: workspace.name ?? "Workspace"
#: src/views/members/index.tsx:157
#: src/views/members/index.tsx:167
msgid "Members | {0}"
msgstr "Leden | {0}"
@@ -1050,6 +1080,10 @@ msgstr "Leden | {0}"
msgid "Monthly"
msgstr "Maandelijks"
#: src/views/members/components/InviteMemberForm.tsx:92
msgid "monthly billing"
msgstr "maandelijkse facturering"
#. placeholder {0}: truncate(fromList)
#. placeholder {1}: truncate(toList)
#: src/views/card/components/ActivityList.tsx:98
@@ -1060,8 +1094,8 @@ msgstr "heeft de kaart verplaatst van <0>{0}</0> naar<1>{1}</1>"
msgid "moved the card to another list"
msgstr "heeft de kaart naar een andere lijst verplaatst"
#: src/views/boards/components/NewBoardForm.tsx:99
#: src/components/LabelForm.tsx:135
#: src/views/boards/components/NewBoardForm.tsx:99
msgid "Name"
msgstr "Naam"
@@ -1093,8 +1127,8 @@ msgstr "Nieuwe import"
msgid "New label"
msgstr "Nieuw label"
#: src/views/board/index.tsx:394
#: src/views/board/components/NewListForm.tsx:112
#: src/views/board/index.tsx:394
msgid "New list"
msgstr "Nieuwe lijst"
@@ -1110,7 +1144,7 @@ msgstr "Nieuw wachtwoord moet verschillen van het huidige wachtwoord"
msgid "New Ticket"
msgstr "Nieuw ticket"
#: src/components/NewWorkspaceForm.tsx:64
#: src/components/NewWorkspaceForm.tsx:65
msgid "New workspace"
msgstr "Nieuwe werkruimte"
@@ -1130,7 +1164,7 @@ msgstr "Geen borden"
msgid "No boards found"
msgstr "Geen borden gevonden"
#: src/views/home/index.tsx:85
#: src/views/home/index.tsx:86
msgid "No credit card required"
msgstr "Geen creditcard vereist"
@@ -1154,7 +1188,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:280
#: src/components/AuthForm.tsx:311
msgid "or"
msgstr "of"
@@ -1182,11 +1216,11 @@ msgstr "Wachtwoord moet minimaal 8 tekens bevatten"
msgid "Passwords do not match"
msgstr "Wachtwoorden komen niet overeen"
#: src/views/home/components/Pricing.tsx:101
#: src/views/home/components/Pricing.tsx:96
msgid "Payment frequency"
msgstr "Betalingsfrequentie"
#: src/views/members/index.tsx:118
#: src/views/members/index.tsx:128
msgid "Pending"
msgstr "In behandeling"
@@ -1207,15 +1241,15 @@ msgstr "Planning"
msgid "Please confirm your new password"
msgstr "Bevestig je nieuwe wachtwoord"
#: src/components/AuthForm.tsx:306
#: src/components/AuthForm.tsx:337
msgid "Please enter a valid email address"
msgstr "Voer een geldig e-mailadres in"
#: src/components/AuthForm.tsx:294
#: src/components/AuthForm.tsx:325
msgid "Please enter a valid name"
msgstr "Voer een geldige naam in"
#: src/components/AuthForm.tsx:319
#: src/components/AuthForm.tsx:350
msgid "Please enter a valid password"
msgstr "Voer een geldig wachtwoord in"
@@ -1223,46 +1257,47 @@ msgstr "Voer een geldig wachtwoord in"
msgid "Please select a file to upload."
msgstr "Selecteer een bestand om te uploaden."
#: src/views/settings/components/UpdateWorkspaceUrlForm.tsx:74
#: src/views/settings/components/UpdateWorkspaceNameForm.tsx:57
#: src/views/settings/components/UpdateWorkspaceDescriptionForm.tsx:62
#: src/views/settings/components/UpdateDisplayNameForm.tsx:55
#: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:46
#: src/views/settings/components/DeleteAccountConfirmation.tsx:40
#: src/views/settings/components/Avatar.tsx:40
#: src/views/settings/components/Avatar.tsx:98
#: src/views/members/components/InviteMemberForm.tsx:64
#: src/views/members/components/DeleteMemberConfirmation.tsx:28
#: src/views/card/index.tsx:172
#: src/views/card/components/NewCommentForm.tsx:31
#: src/views/card/components/NewChecklistItemForm.tsx:89
#: src/views/card/components/NewChecklistForm.tsx:70
#: src/views/card/components/MemberSelector.tsx:80
#: src/views/card/components/ListSelector.tsx:53
#: src/views/card/components/LabelSelector.tsx:73
#: src/views/card/components/DeleteCommentConfirmation.tsx:45
#: src/views/card/components/DeleteChecklistConfirmation.tsx:37
#: src/views/card/components/DeleteCardConfirmation.tsx:52
#: src/views/card/components/Comment.tsx:64
#: src/views/card/components/ChecklistNameInput.tsx:46
#: src/views/card/components/ChecklistItemRow.tsx:60
#: src/views/card/components/ChecklistItemRow.tsx:88
#: src/views/boards/components/ImportBoardsForm.tsx:205
#: src/components/DeleteLabelConfirmation.tsx:26
#: src/components/FeedbackModal.tsx:41
#: src/components/NewWorkspaceForm.tsx:42
#: src/views/board/components/NewCardForm.tsx:174
#: src/views/board/components/NewListForm.tsx:78
#: src/views/board/components/UpdateBoardSlugForm.tsx:72
#: src/views/board/components/VisibilityButton.tsx:53
#: src/views/board/index.tsx:134
#: src/views/board/index.tsx:190
#: src/views/board/components/VisibilityButton.tsx:53
#: src/views/board/components/UpdateBoardSlugForm.tsx:72
#: src/views/board/components/NewListForm.tsx:78
#: src/views/board/components/NewCardForm.tsx:174
#: src/components/NewWorkspaceForm.tsx:41
#: src/components/FeedbackModal.tsx:41
#: src/components/DeleteLabelConfirmation.tsx:26
#: src/views/boards/components/ImportBoardsForm.tsx:205
#: src/views/card/components/ChecklistItemRow.tsx:60
#: src/views/card/components/ChecklistItemRow.tsx:88
#: src/views/card/components/ChecklistNameInput.tsx:46
#: src/views/card/components/Comment.tsx:64
#: src/views/card/components/DeleteCardConfirmation.tsx:52
#: src/views/card/components/DeleteChecklistConfirmation.tsx:37
#: src/views/card/components/DeleteCommentConfirmation.tsx:45
#: src/views/card/components/LabelSelector.tsx:73
#: src/views/card/components/ListSelector.tsx:53
#: src/views/card/components/MemberSelector.tsx:80
#: src/views/card/components/NewChecklistForm.tsx:70
#: src/views/card/components/NewChecklistItemForm.tsx:89
#: 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:83
#: src/views/members/components/InviteMemberForm.tsx:133
#: src/views/settings/components/Avatar.tsx:40
#: src/views/settings/components/Avatar.tsx:98
#: src/views/settings/components/DeleteAccountConfirmation.tsx:40
#: src/views/settings/components/DeleteWorkspaceConfirmation.tsx:46
#: src/views/settings/components/UpdateDisplayNameForm.tsx:55
#: src/views/settings/components/UpdateWorkspaceDescriptionForm.tsx:62
#: src/views/settings/components/UpdateWorkspaceNameForm.tsx:57
#: src/views/settings/components/UpdateWorkspaceUrlForm.tsx:74
msgid "Please try again later, or contact customer support."
msgstr "Probeer het later opnieuw of neem contact op met de klantenservice."
#: src/views/home/components/Pricing.tsx:85
#: src/views/home/components/Header.tsx:15
#: src/views/home/components/Footer.tsx:50
#: src/views/home/components/Header.tsx:15
#: src/views/home/components/Pricing.tsx:85
msgid "Pricing"
msgstr "Prijzen"
@@ -1318,7 +1353,7 @@ msgstr "Op afstand"
msgid "Remove"
msgstr "Verwijderen"
#: src/views/members/index.tsx:132
#: src/views/members/index.tsx:142
msgid "Remove member"
msgstr "Lid verwijderen"
@@ -1369,12 +1404,12 @@ msgstr "Beoordeling"
msgid "Revoke"
msgstr "Intrekken"
#: src/views/home/components/Header.tsx:13
#: src/views/home/components/Footer.tsx:36
#: src/views/home/components/Header.tsx:13
msgid "Roadmap"
msgstr "Roadmap"
#: src/views/members/index.tsx:191
#: src/views/members/index.tsx:215
msgid "Role"
msgstr "Rol"
@@ -1406,7 +1441,7 @@ msgstr "Selecteer bron"
msgid "Self Host"
msgstr "Zelf hosten"
#: src/views/home/index.tsx:81
#: src/views/home/index.tsx:82
msgid "Self host with Github"
msgstr "Zelf hosten met Github"
@@ -1422,8 +1457,8 @@ msgstr "Feedback versturen"
msgid "Senior"
msgstr "Senior"
#: src/views/settings/index.tsx:140
#: src/components/SideNavigation.tsx:78
#: src/views/settings/index.tsx:140
msgid "Settings"
msgstr "Instellingen"
@@ -1450,7 +1485,7 @@ msgstr "Registreren uitgeschakeld"
msgid "Sign up is currently disabled. Please try again later."
msgstr "Registreren is momenteel uitgeschakeld. Probeer het later opnieuw."
#: src/components/AuthForm.tsx:335
#: src/components/AuthForm.tsx:366
msgid "Sign up with "
msgstr "Registreren met "
@@ -1470,12 +1505,12 @@ msgstr "Social media"
msgid "Software Development"
msgstr "Softwareontwikkeling"
#: src/views/home/index.tsx:37
#: src/views/home/index.tsx:38
msgid "Star on Github"
msgstr "Star op Github"
#: src/components/AuthForm.tsx:188
#: src/components/AuthForm.tsx:205
#: src/components/AuthForm.tsx:203
#: src/components/AuthForm.tsx:220
msgid "Success"
msgstr "Geslaagd"
@@ -1491,6 +1526,11 @@ msgstr "Ondersteun de ontwikkeling van het project"
msgid "System"
msgstr "Systeem"
#: src/views/members/components/InviteMemberForm.tsx:183
#: src/views/members/index.tsx:184
msgid "Team Plan"
msgstr "Teamplan"
#: src/views/home/components/Pricing.tsx:46
msgid "Teams"
msgstr "Teams"
@@ -1515,7 +1555,7 @@ msgstr "Het ingevoerde huidige wachtwoord is onjuist."
msgid "The main difference between Kan and Trello is that Kan is open source, allowing anyone to view, modify, and contribute to our code. Our cloud offering also offers no restrictions on features for individual use, whereas Trello locks basic features such as the number of boards you can create behind a paywall."
msgstr "Het belangrijkste verschil tussen Kan en Trello is dat Kan open source is, waardoor iedereen onze code kan bekijken, wijzigen en eraan kan bijdragen. Onze cloudoplossing biedt ook geen beperkingen op functies voor individueel gebruik, terwijl Trello basisfuncties zoals het aantal borden dat je kunt maken achter een betaalmuur plaatst."
#: src/views/home/index.tsx:65
#: src/views/home/index.tsx:66
msgid "The open source <0/> alternative to Trello"
msgstr "Het open source <0/> alternatief voor Trello"
@@ -1532,14 +1572,14 @@ msgstr "Thema"
msgid "They won't be able to access this workspace."
msgstr "Ze zullen geen toegang meer hebben tot deze werkruimte."
#: src/views/card/components/DeleteCommentConfirmation.tsx:68
#: src/views/card/components/DeleteChecklistConfirmation.tsx:58
#: src/views/card/components/DeleteCardConfirmation.tsx:78
#: src/components/DeleteLabelConfirmation.tsx:44
#: src/views/card/components/DeleteCardConfirmation.tsx:78
#: src/views/card/components/DeleteChecklistConfirmation.tsx:58
#: src/views/card/components/DeleteCommentConfirmation.tsx:68
msgid "This action can't be undone."
msgstr "Deze actie kan niet ongedaan worden gemaakt."
#: src/views/public/board/index.tsx:146
#: src/views/public/board/index.tsx:151
msgid "This board is private or does not exist"
msgstr "Dit bord is privé of bestaat niet"
@@ -1604,7 +1644,7 @@ msgstr "Kan checklist niet maken"
msgid "Unable to create list"
msgstr "Kan geen lijst maken"
#: src/components/NewWorkspaceForm.tsx:40
#: src/components/NewWorkspaceForm.tsx:41
msgid "Unable to create workspace"
msgstr "Kan werkruimte niet aanmaken"
@@ -1640,8 +1680,8 @@ msgstr "Kan board URL niet bijwerken"
msgid "Unable to update board visibility"
msgstr "Kan bordzichtbaarheid niet bijwerken"
#: src/views/card/index.tsx:171
#: src/views/board/index.tsx:189
#: src/views/card/index.tsx:172
msgid "Unable to update card"
msgstr "Kan kaart niet bijwerken"
@@ -1661,8 +1701,8 @@ msgstr "Kan reactie niet bijwerken"
msgid "Unable to update labels"
msgstr "Kan labels niet bijwerken"
#: src/views/card/components/ListSelector.tsx:52
#: src/views/board/index.tsx:133
#: src/views/card/components/ListSelector.tsx:52
msgid "Unable to update list"
msgstr "Kan lijst niet bijwerken"
@@ -1703,11 +1743,11 @@ msgstr "Onbeperkt aantal opmerkingen"
msgid "Unlimited lists"
msgstr "Onbeperkt aantal lijsten"
#: src/views/settings/components/UpdateWorkspaceUrlForm.tsx:154
#: src/views/settings/components/UpdateWorkspaceNameForm.tsx:82
#: src/views/settings/components/UpdateWorkspaceDescriptionForm.tsx:90
#: src/views/settings/components/UpdateDisplayNameForm.tsx:79
#: src/views/board/components/UpdateBoardSlugForm.tsx:174
#: src/views/settings/components/UpdateDisplayNameForm.tsx:79
#: src/views/settings/components/UpdateWorkspaceDescriptionForm.tsx:90
#: src/views/settings/components/UpdateWorkspaceNameForm.tsx:82
#: src/views/settings/components/UpdateWorkspaceUrlForm.tsx:154
msgid "Update"
msgstr "Bijwerken"
@@ -1736,6 +1776,10 @@ msgstr "titel bijgewerkt naar <0>{0}</0>"
msgid "Upgrade"
msgstr "Upgraden"
#: src/views/members/components/InviteMemberForm.tsx:222
msgid "Upgrade to Team Plan"
msgstr "Upgraden naar teamplan"
#: src/views/boards/components/TemplateBoards.tsx:37
#: src/views/boards/components/TemplateBoards.tsx:54
msgid "Urgent"
@@ -1757,11 +1801,11 @@ msgstr "URL moet minimaal 3 tekens lang zijn"
msgid "Use template"
msgstr "Sjabloon gebruiken"
#: src/views/members/index.tsx:185
#: src/views/members/index.tsx:209
msgid "User"
msgstr "Gebruiker"
#: src/views/members/components/InviteMemberForm.tsx:58
#: src/views/members/components/InviteMemberForm.tsx:77
msgid "User is already a member of this workspace"
msgstr "Gebruiker is al lid van deze werkruimte"
@@ -1781,7 +1825,7 @@ msgstr "Bekijk en beheer je facturering en abonnement."
msgid "View docs"
msgstr "Bekijk documentatie"
#: src/views/public/board/index.tsx:120
#: src/views/public/board/index.tsx:125
msgid "View only"
msgstr "Alleen bekijken"
@@ -1789,7 +1833,7 @@ msgstr "Alleen bekijken"
msgid "View our roadmap."
msgstr "Bekijk onze roadmap."
#: src/views/public/board/index.tsx:149
#: src/views/public/board/index.tsx:154
msgid "View workspace"
msgstr "Werkruimte bekijken"
@@ -1849,13 +1893,13 @@ msgstr "Werkruimtebeschrijving moet minimaal 3 tekens lang zijn"
msgid "Workspace description updated"
msgstr "Werkruimtebeschrijving bijgewerkt"
#: src/views/home/components/Pricing.tsx:54
#: src/views/home/components/Features.tsx:83
#: src/views/home/components/Pricing.tsx:54
msgid "Workspace members"
msgstr "Werkruimteleden"
#: src/components/NewWorkspaceForm.tsx:81
#: src/views/settings/index.tsx:158
#: src/components/NewWorkspaceForm.tsx:80
msgid "Workspace name"
msgstr "Naam werkruimte"
@@ -1907,11 +1951,11 @@ 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:206
#: src/components/AuthForm.tsx:221
msgid "You have been logged in successfully."
msgstr "Je bent succesvol ingelogd."
#: src/components/AuthForm.tsx:189
#: src/components/AuthForm.tsx:204
msgid "You have been signed up successfully."
msgstr "Je bent succesvol geregistreerd."

File diff suppressed because one or more lines are too long

View File

@@ -92,11 +92,6 @@ const Pricing = () => {
{t`Get started for free, with no usage limits. For collaboration, upgrade to a plan that fits the size of your team.`}
</p>
{/* Beta free pricing pill */}
<div className="mt-4 flex items-center gap-2 rounded-full bg-green-100 px-3 py-1 text-xs font-semibold text-green-800 dark:bg-green-700 dark:text-green-100">
{t`All seats are free during the beta until Sept 3rd!`}
</div>
<div className="mt-16 flex justify-center">
<fieldset aria-label={t`Payment frequency`}>
<RadioGroup

View File

@@ -1,11 +1,13 @@
import { zodResolver } from "@hookform/resolvers/zod";
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 { z } from "zod";
import type { InviteMemberInput } from "@kan/api/types";
import { authClient } from "@kan/auth/client";
import Button from "~/components/Button";
import Input from "~/components/Input";
@@ -15,7 +17,24 @@ import { usePopup } from "~/providers/popup";
import { useWorkspace } from "~/providers/workspace";
import { api } from "~/utils/api";
export function InviteMemberForm() {
export function InviteMemberForm({
numberOfMembers,
activeTeamSubscription,
userId,
}: {
numberOfMembers: number;
activeTeamSubscription:
| {
id: number | null;
plan: string;
status: string;
seats: number | null;
periodStart: Date | null;
periodEnd: Date | null;
}
| undefined;
userId: string | undefined;
}) {
const utils = api.useUtils();
const [isCreateAnotherEnabled, setIsCreateAnotherEnabled] = useState(false);
const { closeModal } = useModal();
@@ -42,7 +61,7 @@ export function InviteMemberForm() {
const refetchBoards = () => utils.board.all.refetch();
const createBoard = api.member.invite.useMutation({
const inviteMember = api.member.invite.useMutation({
onSuccess: async () => {
closeModal();
await utils.workspace.byId.refetch();
@@ -68,8 +87,53 @@ export function InviteMemberForm() {
},
});
const onSubmit = (data: InviteMemberInput) => {
createBoard.mutate(data);
let isYearly = false;
let price = t`$10/month`;
let billingType = t`monthly billing`;
if (
activeTeamSubscription?.periodStart &&
activeTeamSubscription?.periodEnd
) {
const periodStartDate = new Date(activeTeamSubscription.periodStart);
const periodEndDate = new Date(activeTeamSubscription.periodEnd);
const diffInDays = Math.round(
(periodEndDate.getTime() - periodStartDate.getTime()) /
(1000 * 60 * 60 * 24),
);
isYearly = diffInDays > 31;
price = isYearly ? t`$8/month` : t`$10/month`;
billingType = isYearly ? t`billed annually` : t`billed monthly`;
}
const onSubmit = (member: InviteMemberInput) => {
inviteMember.mutate(member);
};
const handleUpgrade = async () => {
const { data, error } = await authClient.subscription.upgrade({
plan: "team",
referenceId: workspace.publicId,
metadata: { userId },
seats: numberOfMembers,
successUrl: "/members",
cancelUrl: "/members",
returnUrl: "/members",
disableRedirect: true,
});
if (data?.url) {
window.location.href = data.url;
}
if (error) {
showPopup({
header: t`Error upgrading subscription`,
message: t`Please try again later, or contact customer support.`,
icon: "error",
});
}
};
useEffect(() => {
@@ -97,6 +161,10 @@ export function InviteMemberForm() {
<Input
id="email"
placeholder={t`Email`}
disabled={
env("NEXT_PUBLIC_KAN_ENV") === "cloud" &&
!activeTeamSubscription?.id
}
{...register("email", { required: true })}
onKeyDown={async (e) => {
if (e.key === "Enter") {
@@ -106,22 +174,63 @@ export function InviteMemberForm() {
}}
errorMessage={errors.email?.message}
/>
{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">
{activeTeamSubscription?.id ? (
<div>
<span className="font-medium text-emerald-500 dark:text-emerald-400">
{t`Team Plan`}
</span>
<p className="mt-1">
{t`Adding a new member will cost an additional ${price} (${billingType}) per seat.`}
</p>
</div>
) : (
<div>
<span className="font-medium text-light-950 dark:text-dark-950">
{t`Free Plan`}
</span>
<p className="mt-1">
{t`Inviting members requires a Team Plan. You'll be redirected to upgrade your workspace.`}
</p>
</div>
)}
</div>
)}
</div>
<div className="mt-12 flex items-center justify-end border-t border-light-600 px-5 pb-5 pt-5 dark:border-dark-600">
<Toggle
label={t`Invite another`}
isChecked={isCreateAnotherEnabled}
onChange={() => setIsCreateAnotherEnabled(!isCreateAnotherEnabled)}
/>
{activeTeamSubscription?.id &&
env("NEXT_PUBLIC_KAN_ENV") === "cloud" && (
<Toggle
label={t`Invite another`}
isChecked={isCreateAnotherEnabled}
onChange={() =>
setIsCreateAnotherEnabled(!isCreateAnotherEnabled)
}
/>
)}
<div>
<Button
type="submit"
isLoading={createBoard.isPending}
className="inline-flex w-full justify-center rounded-md bg-light-1000 px-3 py-2 text-sm font-semibold text-light-50 shadow-sm focus-visible:outline-none dark:bg-dark-1000 dark:text-dark-50"
>
{t`Invite member`}
</Button>
{env("NEXT_PUBLIC_KAN_ENV") === "cloud" &&
!activeTeamSubscription?.id ? (
<Button
type="button"
onClick={handleUpgrade}
className="inline-flex w-full justify-center rounded-md bg-light-1000 px-3 py-2 text-sm font-semibold text-light-50 shadow-sm focus-visible:outline-none dark:bg-dark-1000 dark:text-dark-50"
>
{t`Upgrade to Team Plan`}
</Button>
) : (
<Button
type="submit"
disabled={inviteMember.isPending}
isLoading={inviteMember.isPending}
className="inline-flex w-full justify-center rounded-md bg-light-1000 px-3 py-2 text-sm font-semibold text-light-50 shadow-sm focus-visible:outline-none dark:bg-dark-1000 dark:text-dark-50"
>
{t`Invite member`}
</Button>
)}
</div>
</div>
</form>

View File

@@ -11,6 +11,7 @@ import FeedbackModal from "~/components/FeedbackModal";
import Modal from "~/components/modal";
import { NewWorkspaceForm } from "~/components/NewWorkspaceForm";
import { PageHead } from "~/components/PageHead";
import { env } from "~/env";
import { useModal } from "~/providers/modal";
import { useWorkspace } from "~/providers/workspace";
import { api } from "~/utils/api";
@@ -27,6 +28,16 @@ export default function MembersPage() {
// { enabled: workspace?.publicId ? true : false },
);
const { data: session } = authClient.useSession();
const subscription = data?.subscriptions;
const activeTeamSubscription = subscription?.find(
(sub: any) =>
sub.status === "active" ||
(sub.status === "trialing" && sub.plan === "team"),
);
const TableRow = ({
memberPublicId,
memberId,
@@ -48,7 +59,6 @@ export default function MembersPage() {
isLastRow?: boolean;
showSkeleton?: boolean;
}) => {
const { data: session } = authClient.useSession();
return (
<tr className="rounded-b-lg">
<td
@@ -160,7 +170,21 @@ export default function MembersPage() {
<h1 className="font-bold tracking-tight text-neutral-900 dark:text-dark-1000 sm:text-[1.2rem]">
{t`Members`}
</h1>
<div className="flex">
<div className="flex items-center gap-3">
{env.NEXT_PUBLIC_KAN_ENV === "cloud" && (
<div
className={twMerge(
"flex items-center rounded-full border px-3 py-1 text-center text-xs",
activeTeamSubscription
? "border-emerald-300 bg-emerald-50 text-emerald-400 dark:border-emerald-700 dark:bg-emerald-950 dark:text-emerald-400"
: "border-light-300 bg-light-50 text-light-1000 dark:border-dark-300 dark:bg-dark-50 dark:text-dark-900",
)}
>
<span className="font-medium">
{activeTeamSubscription ? t`Team Plan` : t`Free Plan`}
</span>
</div>
)}
<Button
onClick={() => openModal("INVITE_MEMBER")}
iconLeft={<HiOutlinePlusSmall className="h-4 w-4" />}
@@ -241,7 +265,11 @@ export default function MembersPage() {
modalSize="sm"
isVisible={isOpen && modalContentType === "INVITE_MEMBER"}
>
<InviteMemberForm />
<InviteMemberForm
userId={session?.user.id}
numberOfMembers={data?.members.length ?? 1}
activeTeamSubscription={activeTeamSubscription}
/>
</Modal>
<Modal

View File

@@ -31,5 +31,11 @@
"turbo": "^2.3.1",
"typescript": "catalog:"
},
"prettier": "@kan/prettier-config"
"prettier": "@kan/prettier-config",
"pnpm": {
"overrides": {
"@types/minimatch": "npm:minimatch@*",
"@types/glob": "npm:@types/glob@^8.1.0"
}
}
}

View File

@@ -4,6 +4,7 @@ import { z } from "zod";
import * as memberRepo from "@kan/db/repository/member.repo";
import * as userRepo from "@kan/db/repository/user.repo";
import * as workspaceRepo from "@kan/db/repository/workspace.repo";
import { updateSubscriptionSeats } from "@kan/stripe";
import { createTRPCRouter, protectedProcedure } from "../trpc";
import { assertUserInWorkspace } from "../utils/auth";
@@ -60,6 +61,42 @@ export const memberRouter = createTRPCRouter({
});
}
if (process.env.NEXT_PUBLIC_KAN_ENV === "cloud") {
const subscriptions = await ctx.auth.api.listActiveSubscriptions({
workspacePublicId: workspace.publicId,
});
// get the active subscription
const activeSubscription = subscriptions.find(
(sub) =>
sub.status === "active" ||
(sub.status === "trialing" && sub.plan === "team"),
);
if (!activeSubscription) {
throw new TRPCError({
message: `Workspace with public ID ${workspace.publicId} does not have an active subscription`,
code: "NOT_FOUND",
});
}
// Update the Stripe subscription to add a seat with immediate proration
if (activeSubscription.stripeSubscriptionId) {
try {
await updateSubscriptionSeats(
activeSubscription.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",
});
}
}
}
const existingUser = await userRepo.getByEmail(ctx.db, input.email);
const invite = await memberRepo.create(ctx.db, {
@@ -165,6 +202,35 @@ export const memberRouter = createTRPCRouter({
code: "INTERNAL_SERVER_ERROR",
});
// Handle subscription seat decrement for cloud environment
if (process.env.NEXT_PUBLIC_KAN_ENV === "cloud") {
const subscriptions = await ctx.auth.api.listActiveSubscriptions({
workspacePublicId: workspace.publicId,
});
// get the active subscription
const activeSubscription = subscriptions.find(
(sub) =>
sub.status === "active" ||
(sub.status === "trialing" && sub.plan === "team"),
);
// Only decrease seats if there's an active subscription and stripeSubscriptionId
if (activeSubscription?.stripeSubscriptionId) {
try {
await updateSubscriptionSeats(
activeSubscription.stripeSubscriptionId,
-1,
);
} catch (error) {
console.error(
"Failed to decrease Stripe subscription seats:",
error,
);
}
}
}
return { success: true };
}),
});

View File

@@ -32,6 +32,11 @@ const createAuthWithHeaders = (
headers,
body: { email: input.email, callbackURL: input.callbackURL },
}),
listActiveSubscriptions: (input: { workspacePublicId: string }) =>
auth.api.listActiveSubscriptions({
headers,
query: { referenceId: input.workspacePublicId },
}),
},
};
};

View File

@@ -37,6 +37,7 @@
},
"prettier": "@kan/prettier-config",
"dependencies": {
"better-auth": "^1.2.8"
"@better-auth/stripe": "^1.3.7",
"better-auth": "^1.3.7"
}
}

View File

@@ -1,4 +1,5 @@
import { PutObjectCommand, S3Client } from "@aws-sdk/client-s3";
import { stripe } from "@better-auth/stripe";
import { betterAuth } from "better-auth";
import { drizzleAdapter } from "better-auth/adapters/drizzle";
import { createAuthEndpoint, createAuthMiddleware } from "better-auth/api";
@@ -10,6 +11,7 @@ import { env } from "next-runtime-env";
import type { dbClient } from "@kan/db/client";
import * as memberRepo from "@kan/db/repository/member.repo";
import * as userRepo from "@kan/db/repository/user.repo";
import * as workspaceRepo from "@kan/db/repository/workspace.repo";
import * as schema from "@kan/db/schema";
import { cloudMailerClient, sendEmail } from "@kan/email";
import { createStripeClient } from "@kan/stripe";
@@ -153,6 +155,51 @@ export const initAuth = (db: dbClient) => {
},
plugins: [
socialProvidersPlugin(),
...(process.env.NEXT_PUBLIC_KAN_ENV === "cloud"
? [
stripe({
stripeClient: createStripeClient(),
stripeWebhookSecret: process.env.STRIPE_WEBHOOK_SECRET!,
createCustomerOnSignUp: true,
subscription: {
enabled: true,
plans: [
{
name: "team",
priceId: process.env.STRIPE_TEAM_PLAN_MONTHLY_PRICE_ID!,
annualDiscountPriceId:
process.env.STRIPE_TEAM_PLAN_YEARLY_PRICE_ID!,
},
{
name: "pro",
priceId: process.env.STRIPE_PRO_PLAN_MONTHLY_PRICE_ID!,
annualDiscountPriceId:
process.env.STRIPE_PRO_PLAN_YEARLY_PRICE_ID!,
},
],
authorizeReference: async (data) => {
const workspace = await workspaceRepo.getByPublicId(
db,
data.referenceId,
);
if (!workspace) {
return Promise.resolve(false);
}
const isUserInWorkspace =
await workspaceRepo.isUserInWorkspace(
db,
data.user.id,
workspace.id,
);
return isUserInWorkspace;
},
},
}),
]
: []),
// @todo: hasing is disabled due to a bug in the api key plugin
apiKey({ disableKeyHashing: true }),
magicLink({

View File

@@ -1,5 +1,6 @@
import type { BetterAuthClientPlugin } from "better-auth";
import type { BetterFetchOption } from "better-auth/react";
import { stripeClient } from "@better-auth/stripe/client";
import {
apiKeyClient,
genericOAuthClient,
@@ -27,6 +28,9 @@ const socialProvidersPluginClient = {
export const authClient = createAuthClient({
plugins: [
stripeClient({
subscription: true,
}),
magicLinkClient(),
apiKeyClient(),
genericOAuthClient(),

View File

@@ -0,0 +1,23 @@
CREATE TABLE IF NOT EXISTS "subscription" (
"id" bigserial PRIMARY KEY NOT NULL,
"plan" varchar(255) NOT NULL,
"referenceId" varchar(12) NOT NULL,
"stripeCustomerId" varchar(255),
"stripeSubscriptionId" varchar(255),
"status" varchar(255) NOT NULL,
"periodStart" timestamp,
"periodEnd" timestamp,
"cancelAtPeriodEnd" boolean,
"seats" integer,
"trialStart" timestamp,
"trialEnd" timestamp,
"createdAt" timestamp DEFAULT now() NOT NULL,
"updatedAt" timestamp DEFAULT now() NOT NULL
);
--> statement-breakpoint
ALTER TABLE "subscription" ENABLE ROW LEVEL SECURITY;--> statement-breakpoint
DO $$ BEGIN
ALTER TABLE "subscription" ADD CONSTRAINT "subscription_referenceId_workspace_publicId_fk" FOREIGN KEY ("referenceId") REFERENCES "public"."workspace"("publicId") ON DELETE no action ON UPDATE no action;
EXCEPTION
WHEN duplicate_object THEN null;
END $$;

File diff suppressed because it is too large Load Diff

View File

@@ -64,6 +64,13 @@
"when": 1755094668761,
"tag": "20250813141748_AddChecklistActivityTypes",
"breakpoints": true
},
{
"idx": 9,
"version": "7",
"when": 1756803246096,
"tag": "20250902085406_AddSubscriptions",
"breakpoints": true
}
]
}

View File

@@ -1,12 +1,12 @@
import type { NodePgDatabase } from "drizzle-orm/node-postgres";
import { drizzle as drizzlePgLite } from "drizzle-orm/pglite";
import { PGlite } from "@electric-sql/pglite";
import { uuid_ossp } from "@electric-sql/pglite/contrib/uuid_ossp";
import { drizzle as drizzlePg } from "drizzle-orm/node-postgres";
import { drizzle as drizzlePgLite } from "drizzle-orm/pglite";
import { migrate } from "drizzle-orm/pglite/migrator";
import { Pool } from "pg";
import * as schema from "./schema";
import { PGlite } from "@electric-sql/pglite";
import { migrate } from "drizzle-orm/pglite/migrator";
export type dbClient = NodePgDatabase<typeof schema> & {
$client: Pool;
@@ -18,7 +18,10 @@ export const createDrizzleClient = (): dbClient => {
if (!connectionString) {
console.log("POSTGRES_URL environment variable is not set, using PGLite");
const client = new PGlite({ dataDir: "./pgdata", extensions: { uuid_ossp }});
const client = new PGlite({
dataDir: "./pgdata",
extensions: { uuid_ossp },
});
const db = drizzlePgLite(client, { schema });
migrate(db, { migrationsFolder: "../../packages/db/migrations" });

View File

@@ -121,6 +121,16 @@ export const getByPublicIdWithMembers = (
},
},
},
subscriptions: {
columns: {
id: true,
plan: true,
status: true,
seats: true,
periodStart: true,
periodEnd: true,
},
},
},
where: and(
eq(workspaces.publicId, workspacePublicId),

View File

@@ -10,3 +10,4 @@ export * from "./lists";
export * from "./users";
export * from "./integrations";
export * from "./workspaces";
export * from "./subscriptions";

View File

@@ -0,0 +1,37 @@
import { relations } from "drizzle-orm";
import {
bigserial,
boolean,
integer,
pgTable,
timestamp,
varchar,
} from "drizzle-orm/pg-core";
import { workspaces } from "./workspaces";
export const subscription = pgTable("subscription", {
id: bigserial("id", { mode: "number" }).primaryKey(),
plan: varchar("plan", { length: 255 }).notNull(),
referenceId: varchar("referenceId", { length: 12 })
.notNull()
.references(() => workspaces.publicId),
stripeCustomerId: varchar("stripeCustomerId", { length: 255 }),
stripeSubscriptionId: varchar("stripeSubscriptionId", { length: 255 }),
status: varchar("status", { length: 255 }).notNull(),
periodStart: timestamp("periodStart"),
periodEnd: timestamp("periodEnd"),
cancelAtPeriodEnd: boolean("cancelAtPeriodEnd"),
seats: integer("seats"),
trialStart: timestamp("trialStart"),
trialEnd: timestamp("trialEnd"),
createdAt: timestamp("createdAt").notNull().defaultNow(),
updatedAt: timestamp("updatedAt").notNull().defaultNow(),
}).enableRLS();
export const subscriptionsRelations = relations(subscription, ({ one }) => ({
workspace: one(workspaces, {
fields: [subscription.referenceId],
references: [workspaces.publicId],
}),
}));

View File

@@ -11,6 +11,7 @@ import {
} from "drizzle-orm/pg-core";
import { boards } from "./boards";
import { subscription } from "./subscriptions";
import { users } from "./users";
export const memberRoles = ["admin", "member", "guest"] as const;
@@ -60,6 +61,7 @@ export const workspaceRelations = relations(workspaces, ({ one, many }) => ({
}),
members: many(workspaceMembers),
boards: many(boards),
subscriptions: many(subscription),
}));
export const workspaceMembers = pgTable("workspace_members", {

View File

@@ -10,11 +10,65 @@ const createStripeClient = () => {
}
const stripe = new Stripe(stripeSecretKey, {
apiVersion: "2025-05-28.basil",
httpClient: Stripe.createFetchHttpClient(),
apiVersion: "2025-08-27.basil",
});
return stripe;
};
export const updateSubscriptionSeats = async (
stripeSubscriptionId: string,
seatIncrement = 1,
): Promise<Stripe.Subscription> => {
const stripe = createStripeClient();
// First, retrieve the current subscription to get the subscription items
const subscription = await stripe.subscriptions.retrieve(
stripeSubscriptionId,
{
expand: ["items"],
},
);
if (!subscription.items.data.length) {
throw new Error(
`No subscription items found for subscription ${stripeSubscriptionId}`,
);
}
// Get the first subscription item
const subscriptionItem = subscription.items.data[0];
if (!subscriptionItem) {
throw new Error(
`No subscription item found for subscription ${stripeSubscriptionId}`,
);
}
const currentQuantity = subscriptionItem.quantity ?? 1;
const newQuantity = currentQuantity + seatIncrement;
// Ensure we don't go below 1 seat
if (newQuantity < 1) {
throw new Error(
`Cannot reduce seats below 1. Current: ${currentQuantity}, Requested change: ${seatIncrement}`,
);
}
// Update the subscription with the new quantity and immediate invoicing
const updatedSubscription = await stripe.subscriptions.update(
stripeSubscriptionId,
{
items: [
{
id: subscriptionItem.id,
quantity: newQuantity,
},
],
proration_behavior: "always_invoice", // Invoice immediately
},
);
return updatedSubscription;
};
export { createStripeClient };

6783
pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff