Compare commits

...

9 Commits

Author SHA1 Message Date
Henry
7367379a48 Merge branch 'main' into refactor/workspace-form 2026-04-18 09:31:44 +01:00
Henry
b0ac3e11de refactor: remove legacy code from NewWorkspaceForm 2026-04-18 09:12:48 +01:00
hjball
bba9a94e45 chore: update translations 2026-04-17 21:23:27 +00:00
Henry
e36eb64c59 fix(cloud): enable upgrading new and existing workspaces onto team/pro (#470)
* feat(cloud): enable upgrading new and existing workspaces onto team/pro

* refactor: clean up

* fix: toggle spacing
2026-04-17 22:22:14 +01:00
hjball
201fe05493 chore: update translations 2026-04-11 07:19:15 +00:00
Henry
25490b2223 feat(cloud): temporarily disable context menu 2026-04-11 08:17:59 +01:00
hjball
b3108942db chore: compile translations 2026-04-11 07:01:09 +00:00
hjball
2ba759966e chore: update translations 2026-04-11 07:01:05 +00:00
Henry
7045cd8e25 feat(cloud): improved workspace onboarding (#462)
* feat: setup onboarding and select plan page

* feat: add workspace details step

* refactor: optimize board rendering in workspace details

* feat: tweak padding in boards mockup

* fix: validate/convert slug input

* refactor: tweak onboarding steps UX

* feat: add team to workspace plans

* feat: allow setting description when creating a workspace

* feat: add logging to next api routes

* feat: create worspace on checkout.session.completed

* chore: update types

* refactor: improve webhook logs

* feat: create workspace on successful activation

* feat: set slug on workspace name change

* feat: add returnUrl params
2026-04-11 07:59:26 +01:00
54 changed files with 7971 additions and 1307 deletions

View File

@@ -103,9 +103,9 @@ checksums:
tMYIu7/message: 8b1f0bb96a905646ecfad1cfdfa42168
tMYIu7/origin/0/0: d77eb1f90f2fa86a55181629d88d237a
tMYIu7/translation: 8b1f0bb96a905646ecfad1cfdfa42168
UGCIzB/translation: f7b6699c16726afc48f1e1d1339b2e7e
UGCIzB/message: f7b6699c16726afc48f1e1d1339b2e7e
UGCIzB/origin/0/0: 0eeeb7e68164ff118040918f1ef00a7a
UGCIzB/translation: f7b6699c16726afc48f1e1d1339b2e7e
B3xxao/message: 9d80becc4fe65a74e0004e4fd290735d
B3xxao/origin/0/0: 6812b79a8fdc3527586b523d4c137340
B3xxao/translation: 9d80becc4fe65a74e0004e4fd290735d
@@ -238,6 +238,9 @@ checksums:
ZXSPJt/message: 1b5749b0cca6a62d75a577bee6804074
ZXSPJt/origin/0/0: 0627e0040ca4939c9a57349e98c51797
ZXSPJt/translation: 1b5749b0cca6a62d75a577bee6804074
YkfDoz/translation: 5d4f1c56f4e9e579ec9967ca68cc64ac
YkfDoz/message: 5d4f1c56f4e9e579ec9967ca68cc64ac
YkfDoz/origin/0/0: 15ea2dfd5eae4e05b226b1320103476e
3bqt9U/message: 2366ed295eb2c03c425559c24cb31606
3bqt9U/origin/0/0: 8628ddb6f4ded25c0f17e2cbda8207d3
3bqt9U/translation: 2366ed295eb2c03c425559c24cb31606
@@ -319,6 +322,9 @@ checksums:
1rWxEw/message: 122c108794f321c10e05a08f09b11457
1rWxEw/origin/0/0: eb63312c63f6c8d2a5b6520c89012123
1rWxEw/translation: 122c108794f321c10e05a08f09b11457
iH8pgl/translation: f541015a827e37cb3b1234e56bc2aa3c
iH8pgl/message: f541015a827e37cb3b1234e56bc2aa3c
iH8pgl/origin/0/0: 69d8634b177fdf937764b406fd477547
KNKCTb/message: 35919fd5b10ad212839a75e72829fe4e
KNKCTb/origin/0/0: eb63312c63f6c8d2a5b6520c89012123
KNKCTb/translation: 35919fd5b10ad212839a75e72829fe4e
@@ -337,6 +343,9 @@ checksums:
UoSI%2Bi/message: 47f1051a134e111930be7f94179df4c8
UoSI%2Bi/origin/0/0: fadd5a5b6963ec5f261072f7e8d2140b
UoSI%2Bi/translation: 47f1051a134e111930be7f94179df4c8
zt%2F6cS/translation: aadb69a7f7421be6bb022fbde08a6d77
zt%2F6cS/message: aadb69a7f7421be6bb022fbde08a6d77
zt%2F6cS/origin/0/0: 15ea2dfd5eae4e05b226b1320103476e
qaS%2B1%2F/message: 4e25347caf65e1b63bec90e101b86ddd
qaS%2B1%2F/origin/0/0: fadd5a5b6963ec5f261072f7e8d2140b
qaS%2B1%2F/translation: 4e25347caf65e1b63bec90e101b86ddd
@@ -526,20 +535,21 @@ checksums:
dEgA5A/origin/6/0: d55f532bb5ae247e3a018978be0da463
dEgA5A/origin/7/0: 4b4f55c033add8db69178563832227c6
dEgA5A/origin/8/0: 68450df287fb46ea629e818732c1291a
dEgA5A/origin/9/0: 03c00909b41be01231cd3e843c8ee44e
dEgA5A/origin/10/0: 0627e0040ca4939c9a57349e98c51797
dEgA5A/origin/11/0: 15792234f408027822ee71ccddde6f9b
dEgA5A/origin/12/0: 5c60161e173f5eae9276d8e4c70b4ebb
dEgA5A/origin/13/0: a1fde3fcce608870830f168f027727ff
dEgA5A/origin/14/0: 83911e3eacbad4583e2b1647a784d154
dEgA5A/origin/15/0: dbad0c8d7863cb41f5495264f82e7081
dEgA5A/origin/9/0: 15ea2dfd5eae4e05b226b1320103476e
dEgA5A/origin/10/0: 03c00909b41be01231cd3e843c8ee44e
dEgA5A/origin/11/0: 0627e0040ca4939c9a57349e98c51797
dEgA5A/origin/12/0: 15792234f408027822ee71ccddde6f9b
dEgA5A/origin/13/0: 5c60161e173f5eae9276d8e4c70b4ebb
dEgA5A/origin/14/0: a1fde3fcce608870830f168f027727ff
dEgA5A/origin/15/0: 83911e3eacbad4583e2b1647a784d154
dEgA5A/origin/16/0: dbad0c8d7863cb41f5495264f82e7081
dEgA5A/translation: 2e2a849c2223911717de8caa2c71bade
kryGs%2B/message: bba0beaced7ea954ceb980f2b022ffee
kryGs%2B/origin/0/0: 15fd9c05fc09ccbbb54aadc4aa5e5501
kryGs%2B/translation: bba0beaced7ea954ceb980f2b022ffee
sU2uWc/translation: 3fe52244676faf64e5266b6713d01e07
sU2uWc/message: 3fe52244676faf64e5266b6713d01e07
sU2uWc/origin/0/0: 97bd206a05414e2a571020d64e166093
sU2uWc/translation: 3fe52244676faf64e5266b6713d01e07
fEY2vP/message: 91509e2f92b0b3b11330b6983139fdbf
fEY2vP/origin/0/0: 15fd9c05fc09ccbbb54aadc4aa5e5501
fEY2vP/origin/1/0: 15fd9c05fc09ccbbb54aadc4aa5e5501
@@ -583,6 +593,9 @@ checksums:
EH8IL3/origin/0/0: c0b59968b2b234167c488a05cc38710b
EH8IL3/origin/1/0: fadd5a5b6963ec5f261072f7e8d2140b
EH8IL3/translation: 6f79129c8f08ee54d858a2af57d16dd9
zMquA7/translation: 38ff8d574865bb71d2f620bc4ba98c20
zMquA7/message: 38ff8d574865bb71d2f620bc4ba98c20
zMquA7/origin/0/0: 15ea2dfd5eae4e05b226b1320103476e
VHS0aJ/message: 31d0962985c83a29558c98a765bb1b16
VHS0aJ/origin/0/0: 15792234f408027822ee71ccddde6f9b
VHS0aJ/translation: 31d0962985c83a29558c98a765bb1b16
@@ -688,6 +701,10 @@ checksums:
AX4ktp/message: 4e6be22ade0188f408471325fe363575
AX4ktp/origin/0/0: eb63312c63f6c8d2a5b6520c89012123
AX4ktp/translation: 4e6be22ade0188f408471325fe363575
xGVfLh/translation: 3cfba90b4600131e82fc4260c568d044
xGVfLh/message: 3cfba90b4600131e82fc4260c568d044
xGVfLh/origin/0/0: 15ea2dfd5eae4e05b226b1320103476e
xGVfLh/origin/1/0: 69d8634b177fdf937764b406fd477547
J2Wbjt/message: 8ed03cf7c5e60a6edf3470a4558ff058
J2Wbjt/origin/0/0: d96af8a06c2e38a72238bcd16e426859
J2Wbjt/translation: 8ed03cf7c5e60a6edf3470a4558ff058
@@ -707,18 +724,18 @@ checksums:
F0YmUY/message: 9def232c9163d109f0e9093684cfe75f
F0YmUY/origin/0/0: 1b05beba6bdd908015fa8e798717f024
F0YmUY/translation: 9def232c9163d109f0e9093684cfe75f
0utuU6/translation: 9d7e453b24dfaf217352aeadc262074d
0utuU6/message: 9d7e453b24dfaf217352aeadc262074d
0utuU6/origin/0/0: 97bd206a05414e2a571020d64e166093
fDQ7hA/translation: 1d24ecbad9f2f0081ab51c7366e40506
0utuU6/translation: 9d7e453b24dfaf217352aeadc262074d
fDQ7hA/message: 1d24ecbad9f2f0081ab51c7366e40506
fDQ7hA/origin/0/0: 97bd206a05414e2a571020d64e166093
1bJKhj/translation: f61803ac8da8253e4ba35f92b3af1101
fDQ7hA/translation: 1d24ecbad9f2f0081ab51c7366e40506
1bJKhj/message: f61803ac8da8253e4ba35f92b3af1101
1bJKhj/origin/0/0: 0eeeb7e68164ff118040918f1ef00a7a
uvH2xS/translation: ecc2617544a6d385d18678577fa112fd
1bJKhj/translation: f61803ac8da8253e4ba35f92b3af1101
uvH2xS/message: ecc2617544a6d385d18678577fa112fd
uvH2xS/origin/0/0: 97bd206a05414e2a571020d64e166093
uvH2xS/translation: ecc2617544a6d385d18678577fa112fd
9PaIxv/message: da95932e7a1465a5d21aa3b855a46dc2
9PaIxv/origin/0/0: c0b59968b2b234167c488a05cc38710b
9PaIxv/translation: da95932e7a1465a5d21aa3b855a46dc2
@@ -815,6 +832,9 @@ checksums:
7RpHg%2F/origin/0/0: c0b59968b2b234167c488a05cc38710b
7RpHg%2F/origin/1/0: c0b59968b2b234167c488a05cc38710b
7RpHg%2F/translation: 66f702512197d25cfdb117f2415ecd88
ZDPJBc/translation: f9154d0c02a7db907f0a33fb5edd4be1
ZDPJBc/message: f9154d0c02a7db907f0a33fb5edd4be1
ZDPJBc/origin/0/0: 69d8634b177fdf937764b406fd477547
j9IZZ0/message: 7ba841d0946eb04fa3d17d74365be37b
j9IZZ0/origin/0/0: ff4a160eca5f8da4f075fd1dd6061fa6
j9IZZ0/origin/1/0: dbad0c8d7863cb41f5495264f82e7081
@@ -970,16 +990,16 @@ checksums:
zxKs%2By/message: 0b6c8ad7aba0873b7e212d5f1949ca97
zxKs%2By/origin/0/0: db1e755dc7d73e037f425111bf7c30a6
zxKs%2By/translation: 0b6c8ad7aba0873b7e212d5f1949ca97
euc6Ns/translation: 27756566785c2b8463e21582c4bb619b
euc6Ns/message: 27756566785c2b8463e21582c4bb619b
euc6Ns/origin/0/0: 97bd206a05414e2a571020d64e166093
BTDPLo/translation: f6a33afcf5ff1489551c94867e083dca
euc6Ns/translation: 27756566785c2b8463e21582c4bb619b
BTDPLo/message: f6a33afcf5ff1489551c94867e083dca
BTDPLo/origin/0/0: 97bd206a05414e2a571020d64e166093
BTDPLo/origin/1/0: 0eeeb7e68164ff118040918f1ef00a7a
06EQqT/translation: e9f56489fb395a890ae2557200c29a36
BTDPLo/translation: f6a33afcf5ff1489551c94867e083dca
06EQqT/message: e9f56489fb395a890ae2557200c29a36
06EQqT/origin/0/0: 97bd206a05414e2a571020d64e166093
06EQqT/translation: e9f56489fb395a890ae2557200c29a36
ePK91l/message: eee7f39ff90b18852afc1671f21fbaa9
ePK91l/origin/0/0: b697a20a9536be4dd8ecd143461eafc7
ePK91l/origin/1/0: dc1a240d2d0cccb102c67ca311d4e457
@@ -1026,9 +1046,12 @@ checksums:
IqjpYe/message: 81d41cf573a7109c376d30d905beb596
IqjpYe/origin/0/0: 5f6c4a0c9be5098099167871ae1564af
IqjpYe/translation: 81d41cf573a7109c376d30d905beb596
bFREhu/translation: b2cc9a311fc28d1594252f697c7f5342
bFREhu/message: b2cc9a311fc28d1594252f697c7f5342
bFREhu/origin/0/0: 97bd206a05414e2a571020d64e166093
bFREhu/translation: b2cc9a311fc28d1594252f697c7f5342
SUXBxp/translation: 76e841ae8ec3340d7d0a5c2191abbea4
SUXBxp/message: 76e841ae8ec3340d7d0a5c2191abbea4
SUXBxp/origin/0/0: 69d8634b177fdf937764b406fd477547
0%2BewPp/message: 785fe23c0eef0a5b60b5b2a88151de31
0%2BewPp/origin/0/0: eb63312c63f6c8d2a5b6520c89012123
0%2BewPp/origin/1/0: eb63312c63f6c8d2a5b6520c89012123
@@ -1214,10 +1237,12 @@ checksums:
"%2B3TYXa/origin/0/0": 4980d8e27a628e7cd9a70b839d844083
"%2B3TYXa/translation": 9fa1c942feb40d6350322b71561df789
2POOFK/message: 0326365539c004f6088656f692602078
2POOFK/origin/0/0: c0b59968b2b234167c488a05cc38710b
2POOFK/origin/1/0: 9737a9cef0646ff4bbd942b1924b9a2c
2POOFK/origin/2/0: 9737a9cef0646ff4bbd942b1924b9a2c
2POOFK/origin/3/0: fadd5a5b6963ec5f261072f7e8d2140b
2POOFK/origin/0/0: 15ea2dfd5eae4e05b226b1320103476e
2POOFK/origin/1/0: 15ea2dfd5eae4e05b226b1320103476e
2POOFK/origin/2/0: c0b59968b2b234167c488a05cc38710b
2POOFK/origin/3/0: 9737a9cef0646ff4bbd942b1924b9a2c
2POOFK/origin/4/0: 9737a9cef0646ff4bbd942b1924b9a2c
2POOFK/origin/5/0: fadd5a5b6963ec5f261072f7e8d2140b
2POOFK/translation: 0326365539c004f6088656f692602078
uP4V6I/message: 2d403501f0488ec7d4eac979faf051a2
uP4V6I/origin/0/0: fadd5a5b6963ec5f261072f7e8d2140b
@@ -1307,6 +1332,9 @@ checksums:
csFbe%2B/message: e4e58e33d637282d141df466d729bc7c
csFbe%2B/origin/0/0: 94d3e20c29bb517dd394711d7524e478
csFbe%2B/translation: e4e58e33d637282d141df466d729bc7c
SUvm1Y/translation: 6c0f26526f77e9abb92fb2b1106a66db
SUvm1Y/message: 6c0f26526f77e9abb92fb2b1106a66db
SUvm1Y/origin/0/0: 15ea2dfd5eae4e05b226b1320103476e
cdyS7J/message: 0f10050aeed2555a34fe3c27ce616607
cdyS7J/origin/0/0: c0b59968b2b234167c488a05cc38710b
cdyS7J/origin/1/0: c0b59968b2b234167c488a05cc38710b
@@ -1556,10 +1584,10 @@ checksums:
DbZgsJ/message: 7a1c63b75cea690b3fda6c3f203e31ff
DbZgsJ/origin/0/0: 0ad2af981579a62b084b3d41462c5546
DbZgsJ/translation: 7a1c63b75cea690b3fda6c3f203e31ff
hB02vO/translation: c13aa2a155ab4aff1c8fed6650a94e1a
hB02vO/message: c13aa2a155ab4aff1c8fed6650a94e1a
hB02vO/origin/0/0: fc68b5394b9b466d5d67df855060544d
hB02vO/origin/1/0: 0eeeb7e68164ff118040918f1ef00a7a
hB02vO/translation: c13aa2a155ab4aff1c8fed6650a94e1a
IDvohQ/message: 35d0822f65971b97774b962561b02649
IDvohQ/origin/0/0: 1d6b5f88cdad160a67842f6b65387448
IDvohQ/translation: 35d0822f65971b97774b962561b02649
@@ -1567,6 +1595,9 @@ checksums:
jl3aEJ/placeholders/0/0: 06f23520ebabfffed4999b5bcf61c9cd
jl3aEJ/origin/0/0: 1d6b5f88cdad160a67842f6b65387448
jl3aEJ/translation: 4c38799ff25321ea25017bf4cd8e2e4f
vo2a%2Ba/translation: fcf0f06f8b64b458c7ca6d95541a3cc8
vo2a%2Ba/message: fcf0f06f8b64b458c7ca6d95541a3cc8
vo2a%2Ba/origin/0/0: 69d8634b177fdf937764b406fd477547
agPptk/message: 43983f2178fb28aacaef6c5f41282c4a
agPptk/origin/0/0: 3de48fb04f7df9bdbe399911cdb3fe86
agPptk/translation: 43983f2178fb28aacaef6c5f41282c4a
@@ -1597,18 +1628,19 @@ checksums:
hty0d5/origin/0/0: 04c86ea96f180745739d59e822da4026
hty0d5/translation: b4b1c8396e445e8b7956c747da2cf601
"%2B8Nek%2F/message": 818f1192e32bb855597f930d3e78806e
"%2B8Nek%2F/origin/0/0": 9737a9cef0646ff4bbd942b1924b9a2c
"%2B8Nek%2F/origin/1/0": 82a5cf8d69f098641eb357bf102cd504
"%2B8Nek%2F/origin/0/0": 15ea2dfd5eae4e05b226b1320103476e
"%2B8Nek%2F/origin/1/0": 9737a9cef0646ff4bbd942b1924b9a2c
"%2B8Nek%2F/origin/2/0": 82a5cf8d69f098641eb357bf102cd504
"%2B8Nek%2F/translation": 818f1192e32bb855597f930d3e78806e
vneRvS/message: e228107df80015377112d41f4f155cb3
vneRvS/origin/0/0: 8628ddb6f4ded25c0f17e2cbda8207d3
vneRvS/translation: e228107df80015377112d41f4f155cb3
51UCsN/translation: ce14fde5e972c2b5276c25ddded817c4
51UCsN/message: ce14fde5e972c2b5276c25ddded817c4
51UCsN/origin/0/0: 0eeeb7e68164ff118040918f1ef00a7a
J4%2BOTA/translation: 6ad27e803483208b5313660b7b5791d3
51UCsN/translation: ce14fde5e972c2b5276c25ddded817c4
J4%2BOTA/message: 6ad27e803483208b5313660b7b5791d3
J4%2BOTA/origin/0/0: fd0e66cef8d46e96bcf3143a12f9b6db
J4%2BOTA/translation: 6ad27e803483208b5313660b7b5791d3
BOqTi5/message: 11edf0427766c26db541d46379dc3c16
BOqTi5/placeholders/0/0: 9db68a4b386b9fa1fd1d5797c32be100
BOqTi5/placeholders/1/0: b837a9e8bd06b58be95699b3ee663f43
@@ -1836,6 +1868,9 @@ checksums:
8RdLDU/message: d7820b1bf4efecc61ed89234567aaa9c
8RdLDU/origin/0/0: eb63312c63f6c8d2a5b6520c89012123
8RdLDU/translation: d7820b1bf4efecc61ed89234567aaa9c
Oi%2BJ%2BN/translation: 313804fe615d51e0f0cbd599161d1ade
Oi%2BJ%2BN/message: 313804fe615d51e0f0cbd599161d1ade
Oi%2BJ%2BN/origin/0/0: 15ea2dfd5eae4e05b226b1320103476e
Iqh0Uv/message: 0cc9dcd6ac624383e9977f66d4b3b777
Iqh0Uv/origin/0/0: eb63312c63f6c8d2a5b6520c89012123
Iqh0Uv/origin/1/0: eb63312c63f6c8d2a5b6520c89012123
@@ -1908,15 +1943,17 @@ checksums:
tyHiOa/origin/36/0: 8628ddb6f4ded25c0f17e2cbda8207d3
tyHiOa/origin/37/0: 8628ddb6f4ded25c0f17e2cbda8207d3
tyHiOa/origin/38/0: 7493592314bc3b96ad96127a949ba1ba
tyHiOa/origin/39/0: 03c00909b41be01231cd3e843c8ee44e
tyHiOa/origin/40/0: 5c60161e173f5eae9276d8e4c70b4ebb
tyHiOa/origin/41/0: 83911e3eacbad4583e2b1647a784d154
tyHiOa/origin/42/0: d465da67c0a870d198eb7f313569c137
tyHiOa/origin/43/0: 33bf266228f835e12c0bfb0e5efb3be9
tyHiOa/origin/44/0: ff48991e314b0b3e989a4dac59860fd5
tyHiOa/origin/45/0: 30791e26a172d47d3cb0693e82679246
tyHiOa/origin/46/0: dbad0c8d7863cb41f5495264f82e7081
tyHiOa/origin/47/0: 0dccc39d0debbf3e089cb6d292de762b
tyHiOa/origin/39/0: 69d8634b177fdf937764b406fd477547
tyHiOa/origin/40/0: 69d8634b177fdf937764b406fd477547
tyHiOa/origin/41/0: 03c00909b41be01231cd3e843c8ee44e
tyHiOa/origin/42/0: 5c60161e173f5eae9276d8e4c70b4ebb
tyHiOa/origin/43/0: 83911e3eacbad4583e2b1647a784d154
tyHiOa/origin/44/0: d465da67c0a870d198eb7f313569c137
tyHiOa/origin/45/0: 33bf266228f835e12c0bfb0e5efb3be9
tyHiOa/origin/46/0: ff48991e314b0b3e989a4dac59860fd5
tyHiOa/origin/47/0: 30791e26a172d47d3cb0693e82679246
tyHiOa/origin/48/0: dbad0c8d7863cb41f5495264f82e7081
tyHiOa/origin/49/0: 0dccc39d0debbf3e089cb6d292de762b
tyHiOa/translation: 21ffcf0b00e7cd7b64f7454a95762e1d
PZCqeW/message: 325dea6dd0348a27a6818db2c1340c98
PZCqeW/origin/0/0: 8628ddb6f4ded25c0f17e2cbda8207d3
@@ -1930,9 +1967,9 @@ checksums:
fuwKpE/origin/4/0: 9c8b544f5db130cd7c5eda9064ba3957
fuwKpE/origin/5/0: faa8a2576972b4eb31565d8ea6098f43
fuwKpE/translation: 346a18a54564881c888b95873d03df44
nYNMZZ/translation: d5a8a1b38eaf02d02cd6ac2211b42a92
nYNMZZ/message: d5a8a1b38eaf02d02cd6ac2211b42a92
nYNMZZ/origin/0/0: 97bd206a05414e2a571020d64e166093
nYNMZZ/translation: d5a8a1b38eaf02d02cd6ac2211b42a92
aHCEmh/message: ce27f1aeacccc542a174c4b2bce022b0
aHCEmh/origin/0/0: 98e2302d0d8d12ce65c4140b87450673
aHCEmh/origin/1/0: 634473ef965836871efe40875a36b6ab
@@ -1954,8 +1991,9 @@ checksums:
zwBp5t/origin/0/0: d6920b20329a9efe5985a39a295d83e1
zwBp5t/translation: d740d0660e68c61db1853489356030ae
3fPjUY/message: 682b3c9feab30112b4454cb5bb7974b1
3fPjUY/origin/0/0: c0b59968b2b234167c488a05cc38710b
3fPjUY/origin/1/0: fadd5a5b6963ec5f261072f7e8d2140b
3fPjUY/origin/0/0: 15ea2dfd5eae4e05b226b1320103476e
3fPjUY/origin/1/0: c0b59968b2b234167c488a05cc38710b
3fPjUY/origin/2/0: fadd5a5b6963ec5f261072f7e8d2140b
3fPjUY/translation: 682b3c9feab30112b4454cb5bb7974b1
oyRjD%2F/message: 76a09fd843b496610f8cf1dced417b62
oyRjD%2F/origin/0/0: 7493592314bc3b96ad96127a949ba1ba
@@ -2065,6 +2103,7 @@ checksums:
"%2FgaSVU/origin/0/0": 98e2302d0d8d12ce65c4140b87450673
"%2FgaSVU/origin/1/0": 634473ef965836871efe40875a36b6ab
"%2FgaSVU/origin/2/0": 634473ef965836871efe40875a36b6ab
"%2FgaSVU/origin/3/0": 69d8634b177fdf937764b406fd477547
"%2FgaSVU/translation": c60f4a1acf30e566861bf130f13b9ae7
GDvlUT/message: 53743bbb6ca938f5b893552e839d067f
GDvlUT/origin/0/0: 7493592314bc3b96ad96127a949ba1ba
@@ -2113,9 +2152,9 @@ checksums:
K3iLeO/message: e3bf6f95419169f460fb6918a0afc512
K3iLeO/origin/0/0: 5e2ed4920ffd2f535ece848ff44900bd
K3iLeO/translation: e3bf6f95419169f460fb6918a0afc512
zYRVNp/translation: 8b36455dd5b43e56d2ab06e522c3bacc
zYRVNp/message: 8b36455dd5b43e56d2ab06e522c3bacc
zYRVNp/origin/0/0: 97bd206a05414e2a571020d64e166093
zYRVNp/translation: 8b36455dd5b43e56d2ab06e522c3bacc
wgNoIs/message: eedc7cdb02de467c15dc418a066a77f2
wgNoIs/origin/0/0: 3c57a918258af4b44c187f58d203345f
wgNoIs/origin/1/0: 3c57a918258af4b44c187f58d203345f
@@ -2152,6 +2191,9 @@ checksums:
Eit43O/message: b5d9a1edd988f455041aee9fa7fb3d63
Eit43O/origin/0/0: 1d6b5f88cdad160a67842f6b65387448
Eit43O/translation: b5d9a1edd988f455041aee9fa7fb3d63
JjEJSy/translation: 0154ff378b3f4329871378229e269fc7
JjEJSy/message: 0154ff378b3f4329871378229e269fc7
JjEJSy/origin/0/0: 69d8634b177fdf937764b406fd477547
Tz0i8g/message: 8df6777277469c1fd88cc18dde2f1cc3
Tz0i8g/origin/0/0: 77c9f6139024b2069e4fdc5120f69cb5
Tz0i8g/origin/1/0: 94d3e20c29bb517dd394711d7524e478
@@ -2186,6 +2228,10 @@ checksums:
n1ekoW/message: ec7b8f314fe9bc6591006707484ede61
n1ekoW/origin/0/0: 6cda8b872e4902cbc0191d9375adf4ef
n1ekoW/translation: ec7b8f314fe9bc6591006707484ede61
fcWrnU/translation: 6d842546a84e919c519bf8cbffdf25a0
fcWrnU/message: 6d842546a84e919c519bf8cbffdf25a0
fcWrnU/origin/0/0: 15ea2dfd5eae4e05b226b1320103476e
fcWrnU/origin/1/0: 69d8634b177fdf937764b406fd477547
mErq7F/message: 0dd2ae69be4618c1f9e615774a4509ca
mErq7F/origin/0/0: 6cda8b872e4902cbc0191d9375adf4ef
mErq7F/translation: 0dd2ae69be4618c1f9e615774a4509ca
@@ -2221,6 +2267,9 @@ checksums:
wIb7Ng/message: 67659097ef6bcb194839858b2c4f3a3c
wIb7Ng/origin/0/0: eb63312c63f6c8d2a5b6520c89012123
wIb7Ng/translation: 67659097ef6bcb194839858b2c4f3a3c
6sKjjx/translation: 50861c0881fe87a77412417e5ffb3fbb
6sKjjx/message: 50861c0881fe87a77412417e5ffb3fbb
6sKjjx/origin/0/0: 15ea2dfd5eae4e05b226b1320103476e
vnS6Rf/message: 003f7f93d44b0f5c2e40bf24e7af3bd7
vnS6Rf/origin/0/0: c0b59968b2b234167c488a05cc38710b
vnS6Rf/translation: 003f7f93d44b0f5c2e40bf24e7af3bd7
@@ -2260,6 +2309,9 @@ checksums:
D%2BNlUC/message: 803281c327a02a2feba182f4a2b38311
D%2BNlUC/origin/0/0: 358ea1b5babb2e9ccbf1a4c9f89dd3a5
D%2BNlUC/translation: 803281c327a02a2feba182f4a2b38311
KM6m8p/translation: c621ea9404a37af289def443b309bf1b
KM6m8p/message: c621ea9404a37af289def443b309bf1b
KM6m8p/origin/0/0: 15ea2dfd5eae4e05b226b1320103476e
bff61F/message: 3f0ae9c914f16ceb9a0d7db868f4aa20
bff61F/origin/0/0: 8628ddb6f4ded25c0f17e2cbda8207d3
bff61F/origin/1/0: 7493592314bc3b96ad96127a949ba1ba
@@ -2311,9 +2363,9 @@ checksums:
C6gv54/message: 1573c77059bc92df17e661befda8d9b7
C6gv54/origin/0/0: 0ad2af981579a62b084b3d41462c5546
C6gv54/translation: 1573c77059bc92df17e661befda8d9b7
nKBUeF/translation: 07e3ce10820b8ab28643e38b2ed51f64
nKBUeF/message: 07e3ce10820b8ab28643e38b2ed51f64
nKBUeF/origin/0/0: 97bd206a05414e2a571020d64e166093
nKBUeF/translation: 07e3ce10820b8ab28643e38b2ed51f64
jlB2RY/message: 67a76bf346ab4b48563269e9d941a64a
jlB2RY/origin/0/0: 0627e0040ca4939c9a57349e98c51797
jlB2RY/translation: 67a76bf346ab4b48563269e9d941a64a
@@ -2365,6 +2417,12 @@ checksums:
vlxQFL/message: 730f33b8f1fc002c4f393ccd262b6664
vlxQFL/origin/0/0: afee530613110e248ffde6b56872ebed
vlxQFL/translation: 730f33b8f1fc002c4f393ccd262b6664
HQVm6e/translation: ec66b543a593e9dabf47de5979892d8d
HQVm6e/message: ec66b543a593e9dabf47de5979892d8d
HQVm6e/origin/0/0: 69d8634b177fdf937764b406fd477547
gKmoow/translation: 83997c77cb0dc8c8c90f7ab706aa817f
gKmoow/message: 83997c77cb0dc8c8c90f7ab706aa817f
gKmoow/origin/0/0: 69d8634b177fdf937764b406fd477547
OAYToL/message: 1c989752736fa41ecdd68ea890f16a15
OAYToL/origin/0/0: 15792234f408027822ee71ccddde6f9b
OAYToL/translation: 1c989752736fa41ecdd68ea890f16a15
@@ -2386,9 +2444,9 @@ checksums:
MHrjPM/message: 344e64395eaff6822a57d18623853e1a
MHrjPM/origin/0/0: a50c4fbde8da6e0a77c4e0aef0b44dea
MHrjPM/translation: 344e64395eaff6822a57d18623853e1a
wK4OTM/translation: b2a89bfd8e13d77f626e84840602a603
wK4OTM/message: b2a89bfd8e13d77f626e84840602a603
wK4OTM/origin/0/0: 97bd206a05414e2a571020d64e166093
wK4OTM/translation: b2a89bfd8e13d77f626e84840602a603
Se%2FUIp/message: d60813ea824f373462471e092d136eed
Se%2FUIp/origin/0/0: eb63312c63f6c8d2a5b6520c89012123
Se%2FUIp/origin/1/0: eb63312c63f6c8d2a5b6520c89012123
@@ -2451,6 +2509,7 @@ checksums:
YcyP2z/translation: 7495f1434c9188849bffd015811d5337
MxQXhL/message: c1c949477e121d73ed6683eddf9cd874
MxQXhL/origin/0/0: ff4a160eca5f8da4f075fd1dd6061fa6
MxQXhL/origin/1/0: 69d8634b177fdf937764b406fd477547
MxQXhL/translation: c1c949477e121d73ed6683eddf9cd874
WHHLh9/message: 99d0b17b78d44e15f13d876d155f0efc
WHHLh9/origin/0/0: 3a89a46ac678e34dc8eb687b07a4ad4b
@@ -2467,12 +2526,12 @@ checksums:
2QGEbi/message: 550198b2c87f06726a843c79c1026ed9
2QGEbi/origin/0/0: 4b4f55c033add8db69178563832227c6
2QGEbi/translation: 550198b2c87f06726a843c79c1026ed9
Oo4E6p/translation: af985cf72c47df76e2f2139a427d9948
Oo4E6p/message: af985cf72c47df76e2f2139a427d9948
Oo4E6p/origin/0/0: 97bd206a05414e2a571020d64e166093
K7k9u3/translation: 1cf9d227042f6a65adba38cb7296830d
Oo4E6p/translation: af985cf72c47df76e2f2139a427d9948
K7k9u3/message: 1cf9d227042f6a65adba38cb7296830d
K7k9u3/origin/0/0: fd0e66cef8d46e96bcf3143a12f9b6db
K7k9u3/translation: 1cf9d227042f6a65adba38cb7296830d
8yFGGF/message: 39025a0c53818438829603d213baef06
8yFGGF/origin/0/0: 68450df287fb46ea629e818732c1291a
8yFGGF/translation: 39025a0c53818438829603d213baef06
@@ -2485,6 +2544,9 @@ checksums:
A8jqN7/message: 656c93265d7e2bef1245b17d85f85ae5
A8jqN7/origin/0/0: 1fd8ccf586705354bcae6e1186108fc7
A8jqN7/translation: 656c93265d7e2bef1245b17d85f85ae5
Q60WUZ/translation: 4284c33aed2f2c5e004ed0a7d7d9bf87
Q60WUZ/message: 4284c33aed2f2c5e004ed0a7d7d9bf87
Q60WUZ/origin/0/0: 69d8634b177fdf937764b406fd477547
T7Mywq/message: 62899897d7bffcb1df3af77d460f0881
T7Mywq/origin/0/0: 0ad2af981579a62b084b3d41462c5546
T7Mywq/translation: 62899897d7bffcb1df3af77d460f0881
@@ -2577,6 +2639,9 @@ checksums:
mx8%2B1u/origin/3/0: fadd5a5b6963ec5f261072f7e8d2140b
mx8%2B1u/origin/4/0: dbad0c8d7863cb41f5495264f82e7081
mx8%2B1u/translation: f2949ca2dc18b0063af92e60779abb65
8AwlaR/translation: acb1fdc14ed875815ae9f8a5254bc634
8AwlaR/message: acb1fdc14ed875815ae9f8a5254bc634
8AwlaR/origin/0/0: 15ea2dfd5eae4e05b226b1320103476e
Ws%2B3X%2B/message: 905b10eeb09fdc5ac7fc757e935ee757
Ws%2B3X%2B/origin/0/0: fadd5a5b6963ec5f261072f7e8d2140b
Ws%2B3X%2B/translation: 905b10eeb09fdc5ac7fc757e935ee757
@@ -2617,6 +2682,7 @@ checksums:
IelE1h/translation: 972773025e763ddf53273df6d37a729a
cWtfn1/message: 9a91ea70f5eb55aac96640bf0fd7feff
cWtfn1/origin/0/0: ff4a160eca5f8da4f075fd1dd6061fa6
cWtfn1/origin/1/0: 69d8634b177fdf937764b406fd477547
cWtfn1/translation: 9a91ea70f5eb55aac96640bf0fd7feff
b3Thhd/message: 5b7b755f05330164dbfb00096c500ee3
b3Thhd/origin/0/0: 12c1fab543c8848bcb10107d47336736
@@ -2748,7 +2814,8 @@ checksums:
UlhdTP/origin/0/0: 83911e3eacbad4583e2b1647a784d154
UlhdTP/translation: bc5c267ce3f04de94ff1379cf2ca48a3
chyf4J/message: 7159d620b7ef5c5afef734989a5be08b
chyf4J/origin/0/0: 5f6c4a0c9be5098099167871ae1564af
chyf4J/origin/0/0: 69d8634b177fdf937764b406fd477547
chyf4J/origin/1/0: 5f6c4a0c9be5098099167871ae1564af
chyf4J/translation: 7159d620b7ef5c5afef734989a5be08b
Ax%2FhYa/message: d0e83b9a0304d7c36cf8c85d98783ce2
Ax%2FhYa/origin/0/0: 33bf266228f835e12c0bfb0e5efb3be9
@@ -2766,7 +2833,8 @@ checksums:
wtxjAY/translation: 1857292f9567c556c781a23bd7e10544
CozWO1/message: 855614bbf862fd6a9f6a3e76943f92d4
CozWO1/origin/0/0: ff4a160eca5f8da4f075fd1dd6061fa6
CozWO1/origin/1/0: 5f6c4a0c9be5098099167871ae1564af
CozWO1/origin/1/0: 69d8634b177fdf937764b406fd477547
CozWO1/origin/2/0: 5f6c4a0c9be5098099167871ae1564af
CozWO1/translation: 855614bbf862fd6a9f6a3e76943f92d4
ghSJ4U/message: 681f86c9ca31699fc5a3ca3790e5972c
ghSJ4U/origin/0/0: ff4a160eca5f8da4f075fd1dd6061fa6
@@ -2809,6 +2877,9 @@ checksums:
RtlIYB/message: df4783d593505766d78c5bc08d3d48ac
RtlIYB/origin/0/0: 627b72cd19a7154ae1c28cbd7ca0c730
RtlIYB/translation: df4783d593505766d78c5bc08d3d48ac
3WXdoZ/translation: 4cbeab40f77975492a23eec428732440
3WXdoZ/message: 4cbeab40f77975492a23eec428732440
3WXdoZ/origin/0/0: 69d8634b177fdf937764b406fd477547
aelko%2B/message: 41dd145ef56f539e12dc064a9807c660
aelko%2B/origin/0/0: 4980d8e27a628e7cd9a70b839d844083
aelko%2B/translation: 41dd145ef56f539e12dc064a9807c660
@@ -2852,6 +2923,9 @@ checksums:
GoDLB9/message: 8c8d944e07388c5877effdb2c2803dcf
GoDLB9/origin/0/0: 5c60161e173f5eae9276d8e4c70b4ebb
GoDLB9/translation: 8c8d944e07388c5877effdb2c2803dcf
c4nMcR/translation: bf4f697079eef51c3ebe46ce79063895
c4nMcR/message: bf4f697079eef51c3ebe46ce79063895
c4nMcR/origin/0/0: 15ea2dfd5eae4e05b226b1320103476e
evg7%2BA/message: 403972e7a25afc2415762c1c2b1ec868
evg7%2BA/origin/0/0: 3c57a918258af4b44c187f58d203345f
evg7%2BA/translation: 403972e7a25afc2415762c1c2b1ec868
@@ -2888,6 +2962,12 @@ checksums:
25fAUC/message: 3e4cce96bc1197a1caa2b7fb4d3c7e53
25fAUC/origin/0/0: d1e1d7ccce60e05570bedfbb93fc9416
25fAUC/translation: 3e4cce96bc1197a1caa2b7fb4d3c7e53
GRAGsB/translation: 751a534fd6e62a92ff64c46894c7db86
GRAGsB/message: 751a534fd6e62a92ff64c46894c7db86
GRAGsB/origin/0/0: 69d8634b177fdf937764b406fd477547
j0o6ml/translation: 1e036ffca9d9cb9e2941b83fbbf375c0
j0o6ml/message: 1e036ffca9d9cb9e2941b83fbbf375c0
j0o6ml/origin/0/0: 69d8634b177fdf937764b406fd477547
GnSSGm/message: 98de6f65c567c6654cc0adce3c9d5656
GnSSGm/origin/0/0: 33bf266228f835e12c0bfb0e5efb3be9
GnSSGm/translation: 98de6f65c567c6654cc0adce3c9d5656
@@ -2900,6 +2980,10 @@ checksums:
Hg1qE9/message: c808949b9b2b4a9aba2472f5d1050167
Hg1qE9/origin/0/0: 30791e26a172d47d3cb0693e82679246
Hg1qE9/translation: c808949b9b2b4a9aba2472f5d1050167
OTxjpR/translation: 370a32c49489db61978ac91b55699c24
OTxjpR/message: 370a32c49489db61978ac91b55699c24
OTxjpR/origin/0/0: 69d8634b177fdf937764b406fd477547
OTxjpR/origin/1/0: 69d8634b177fdf937764b406fd477547
4DOCMI/message: 0b48896061a1124501fdaba026804148
4DOCMI/origin/0/0: a50c4fbde8da6e0a77c4e0aef0b44dea
4DOCMI/translation: 0b48896061a1124501fdaba026804148

View File

@@ -1,4 +1,6 @@
import { useTheme } from "next-themes";
import { useRouter } from "next/navigation";
import { env } from "next-runtime-env";
import { useEffect, useRef, useState } from "react";
import {
TbLayoutSidebarLeftCollapse,
@@ -43,6 +45,7 @@ export default function Dashboard({
const { resolvedTheme } = useTheme();
const { openModal } = useModal();
const { availableWorkspaces, hasLoaded } = useWorkspace();
const router = useRouter();
const { data: session, isPending: sessionLoading } = authClient.useSession();
const { data: user, isLoading: userLoading } = api.user.getUser.useQuery(
@@ -98,9 +101,13 @@ export default function Dashboard({
useEffect(() => {
if (hasLoaded && availableWorkspaces.length === 0) {
openModal("NEW_WORKSPACE", undefined, undefined, false);
if (env("NEXT_PUBLIC_KAN_ENV") === "cloud") {
router.push(`/onboarding/select-plan?returnUrl=${encodeURIComponent(window.location.pathname)}`);
} else {
openModal("NEW_WORKSPACE", undefined, undefined, false);
}
}
}, [hasLoaded, availableWorkspaces.length, openModal]);
}, [hasLoaded, availableWorkspaces.length, openModal, router]);
const isDarkMode = resolvedTheme === "dark";

View File

@@ -88,7 +88,7 @@ const Input = forwardRef<HTMLInputElement, InputProps>(
</button>
)}
{iconRight && type !== "password" && (
<div className="absolute right-3 top-1/2 -translate-y-1/2">
<div className="absolute right-3 top-1/2 -translate-y-1/2 leading-[0]">
{iconRight}
</div>
)}

View File

@@ -207,7 +207,7 @@ export function LabelForm({
/>
</div>
<div className="mt-12 flex items-center justify-end border-t border-light-600 px-5 pb-5 pt-5 dark:border-dark-600">
<div className="mt-12 flex items-center justify-end space-x-4 border-t border-light-600 px-5 pb-5 pt-5 dark:border-dark-600">
{!isEdit && (
<Toggle
label={t`Create another`}

View File

@@ -1,21 +1,14 @@
import { zodResolver } from "@hookform/resolvers/zod";
import { t } from "@lingui/core/macro";
import { env } from "next-runtime-env";
import { useEffect, useState } from "react";
import { useEffect } from "react";
import { useForm } from "react-hook-form";
import {
HiBolt,
HiCheck,
HiCheckBadge,
HiInformationCircle,
HiXMark,
} from "react-icons/hi2";
import { HiCheck, HiXMark } from "react-icons/hi2";
import { twMerge } from "tailwind-merge";
import { z } from "zod";
import Button from "~/components/Button";
import Input from "~/components/Input";
import Toggle from "~/components/Toggle";
import { useDebounce } from "~/hooks/useDebounce";
import { useModal } from "~/providers/modal";
import { usePopup } from "~/providers/popup";
@@ -54,7 +47,6 @@ export function NewWorkspaceForm() {
watch,
trigger,
clearErrors,
setValue,
} = useForm<FormValues>({
resolver: zodResolver(schema),
defaultValues: {
@@ -67,16 +59,10 @@ export function NewWorkspaceForm() {
const hasAvailableWorkspaces = availableWorkspaces.length > 0;
const isCloudEnv = env("NEXT_PUBLIC_KAN_ENV") === "cloud";
const slug = watch("slug");
const [debouncedSlug] = useDebounce(slug, 500);
const isTyping = slug !== debouncedSlug;
// Pro toggle state management
const [isProToggleEnabled, setIsProToggleEnabled] = useState(false);
const [lastAvailableSlug, setLastAvailableSlug] = useState<string>("");
// Validate slug only after debounce
useEffect(() => {
if (isTyping) {
@@ -101,7 +87,7 @@ export function NewWorkspaceForm() {
const isWorkspaceSlugAvailable = checkWorkspaceSlugAvailability.data;
const createWorkspace = api.workspace.create.useMutation({
onSuccess: async (values, variables) => {
onSuccess: (values) => {
if (values.publicId && values.name) {
void utils.workspace.all.invalidate();
switchWorkspace({
@@ -114,42 +100,6 @@ export function NewWorkspaceForm() {
weekStartDay: 1,
});
// If in cloud and Pro toggle is enabled, create checkout session for pro
if (env("NEXT_PUBLIC_KAN_ENV") === "cloud" && isProToggleEnabled) {
try {
const response = await fetch(
"/api/stripe/create_checkout_session",
{
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({
slug: slug || undefined,
workspacePublicId: values.publicId,
cancelUrl: "/settings/workspace?upgrade=pro",
successUrl: "/boards",
}),
},
);
const data = await response.json();
const url = (data as { url: string }).url;
if (url) {
window.location.href = url;
return; // Don't close modal if redirecting to checkout
}
} catch (error) {
console.error("Error creating checkout session:", error);
showPopup({
header: t`Error upgrading to Pro`,
message: t`Workspace created successfully. You can upgrade later in settings.`,
icon: "warning",
});
}
}
closeModal();
}
},
@@ -168,57 +118,8 @@ export function NewWorkspaceForm() {
if (nameElement) nameElement.focus();
}, []);
const [shouldShowBenefits, setShouldShowBenefits] = useState(false);
const isValidSlug = slug && slug.length >= 3 && !errors.slug;
useEffect(() => {
if (
isCloudEnv &&
!checkWorkspaceSlugAvailability.isPending &&
isValidSlug
) {
const isAvailable = isWorkspaceSlugAvailable?.isAvailable === true;
setShouldShowBenefits(isAvailable);
// Automatically enable Pro toggle when slug is available
if (isAvailable) {
setIsProToggleEnabled(true);
setLastAvailableSlug(slug);
}
}
}, [
isValidSlug,
isWorkspaceSlugAvailable?.isAvailable,
checkWorkspaceSlugAvailability.isPending,
slug,
isCloudEnv,
]);
// Reset benefits when slug becomes invalid
useEffect(() => {
if (!isValidSlug) {
setShouldShowBenefits(false);
}
}, [isValidSlug]);
// Handle Pro toggle changes
const handleProToggleChange = () => {
if (isProToggleEnabled) {
// Turning off: clear the slug and disable Pro
setValue("slug", "");
setIsProToggleEnabled(false);
} else {
// Turning on: restore the last available slug if we have one
if (lastAvailableSlug) {
setValue("slug", lastAvailableSlug);
}
setIsProToggleEnabled(true);
}
};
const showProBenefits = isProToggleEnabled;
const onSubmit = (values: FormValues) => {
// Don't submit if slug is provided but not available
if (values.slug && isWorkspaceSlugAvailable?.isAvailable === false) {
@@ -227,7 +128,7 @@ export function NewWorkspaceForm() {
createWorkspace.mutate({
name: values.name,
slug: !isCloudEnv && values.slug ? values.slug : undefined,
slug: values.slug,
});
};
@@ -290,11 +191,7 @@ export function NewWorkspaceForm() {
? t`This workspace URL is reserved`
: undefined)
}
prefix={
env("NEXT_PUBLIC_KAN_ENV") === "cloud"
? "kan.bn/"
: `${env("NEXT_PUBLIC_BASE_URL")}/`
}
prefix={`${env("NEXT_PUBLIC_BASE_URL")}/`}
iconRight={
slug && slug.length >= 3 && !errors.slug ? (
isWorkspaceSlugAvailable?.isAvailable ? (
@@ -311,68 +208,9 @@ export function NewWorkspaceForm() {
}
}}
/>
{slug && slug.length >= 3 && shouldShowBenefits && (
<div className="mt-2 flex items-center gap-1">
<HiInformationCircle className="h-4 w-4 text-dark-900" />
<p className="text-xs text-gray-500 dark:text-dark-900">
{t`Custom URLs require upgrading to a Pro plan`}
</p>
</div>
)}
</div>
{showProBenefits && (
<div className="mt-6">
<div className="rounded-md bg-light-100 p-3 text-xs text-light-900 dark:bg-dark-200 dark:text-dark-900">
<div className="space-y-3">
<div className="flex items-center space-x-3">
<HiCheckBadge className="h-[18px] w-[18px] flex-shrink-0 text-light-1000 dark:text-dark-950" />
<div className="flex items-center space-x-2">
<span className="text-xs text-neutral-900 dark:text-dark-1000">
{t`Unlimited members`}
</span>
<span className="inline-flex items-center rounded-full bg-emerald-500/10 px-2 py-0.5 text-[10px] font-medium text-emerald-600 ring-1 ring-inset ring-emerald-500/20 dark:text-emerald-400 sm:text-[10px]">
{t`Launch offer`}
</span>
</div>
</div>
<div className="flex items-center space-x-3">
<HiCheckBadge className="h-[18px] w-[18px] flex-shrink-0 text-light-1000 dark:text-dark-950" />
<span className="text-xs text-neutral-900 dark:text-dark-1000">
{t`Custom workspace URL`}
</span>
</div>
<div className="flex items-center space-x-3">
<HiCheckBadge className="h-[18px] w-[18px] flex-shrink-0 text-light-1000 dark:text-dark-950" />
<div className="flex items-center space-x-2">
<span className="text-xs text-neutral-900 dark:text-dark-1000">
{t`Board analytics`}
</span>
<span className="inline-flex items-center rounded-full bg-gray-500/10 px-2 py-0.5 text-[10px] font-medium text-gray-600 ring-1 ring-inset ring-gray-500/20 dark:text-gray-400 sm:text-[10px]">
{t`Coming soon`}
</span>
</div>
</div>
</div>
</div>
</div>
)}
</div>
<div
className={twMerge(
"mt-6 flex items-center justify-end border-t border-light-600 px-5 pb-5 pt-5 dark:border-dark-600",
!showProBenefits && "mt-12",
)}
>
{/* Pro Toggle - only show in cloud environment */}
{isCloudEnv && (
<Toggle
isChecked={isProToggleEnabled}
onChange={handleProToggleChange}
label={t`Upgrade to Pro ($29/month)`}
/>
)}
<div className="mt-6 flex items-center justify-end border-t border-light-600 px-5 pb-5 pt-5 dark:border-dark-600">
<div>
<Button
type="submit"

View File

@@ -7,15 +7,17 @@ const Toggle = ({
label,
disabled,
showLabel = true,
labelPosition = "before",
}: {
isChecked: boolean;
onChange: () => void;
label: string;
disabled?: boolean;
showLabel?: boolean;
labelPosition?: "before" | "after";
}) => (
<div className="mr-4 flex items-center justify-end">
{showLabel && (
<div className="flex items-center">
{showLabel && labelPosition === "before" && (
<span className="mr-2 text-xs text-light-900 dark:text-dark-900">
{label}
</span>
@@ -38,6 +40,11 @@ const Toggle = ({
)}
/>
</Switch>
{showLabel && labelPosition === "after" && (
<span className="ml-2 text-xs text-light-900 dark:text-dark-900">
{label}
</span>
)}
</div>
);

View File

@@ -1,5 +1,7 @@
import { Button, Menu, Transition } from "@headlessui/react";
import { t } from "@lingui/core/macro";
import { useRouter } from "next/navigation";
import { env } from "next-runtime-env";
import { Fragment, useState } from "react";
import { HiCheck, HiMagnifyingGlass } from "react-icons/hi2";
import { twMerge } from "tailwind-merge";
@@ -18,6 +20,7 @@ export default function WorkspaceMenu({
const { workspace, isLoading, availableWorkspaces, switchWorkspace } =
useWorkspace();
const { openModal } = useModal();
const router = useRouter();
const [isOpen, setIsOpen] = useState(false);
const { tooltipContent: commandPaletteShortcutTooltipContent } =
@@ -147,7 +150,11 @@ export default function WorkspaceMenu({
<div className="border-t-[1px] border-light-600 p-1 dark:border-dark-500">
<Menu.Item>
<button
onClick={() => openModal("NEW_WORKSPACE")}
onClick={() =>
env("NEXT_PUBLIC_KAN_ENV") === "cloud"
? router.push(`/onboarding/select-plan?returnUrl=${encodeURIComponent(window.location.pathname)}`)
: openModal("NEW_WORKSPACE")
}
className="flex w-full items-center justify-between rounded-[5px] px-3 py-2 text-left text-xs text-neutral-900 hover:bg-light-200 dark:text-dark-1000 dark:hover:bg-dark-400"
>
{t`Create workspace`}

View File

@@ -71,7 +71,7 @@
"0": ["isTemplate ? \"Template\" : \"Board\""]
},
"comments": [],
"origin": [["src/views/board/index.tsx", 556]],
"origin": [["src/views/board/index.tsx", 557]],
"translation": "{0} nicht gefunden"
},
"0xWkkH": {
@@ -239,11 +239,11 @@
"translation": "Aktivitätsprotokolle"
},
"UGCIzB": {
"translation": "Label hinzufügen / bearbeiten",
"message": "Add / edit label",
"placeholders": {},
"comments": [],
"origin": [["src/views/board/components/CardContextMenu.tsx", 50]]
"origin": [["src/views/board/components/CardContextMenu.tsx", 50]],
"translation": "Label hinzufügen / bearbeiten"
},
"B3xxao": {
"message": "Add a card",
@@ -556,6 +556,13 @@
],
"translation": "Ein unerwarteter Fehler ist aufgetreten. Bitte versuchen Sie es später erneut."
},
"YkfDoz": {
"message": "Annual",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 63]],
"translation": "Jährlich"
},
"3bqt9U": {
"message": "Anyone with this link can join your workspace",
"placeholders": {},
@@ -756,6 +763,13 @@
"origin": [["src/views/boards/components/TemplateBoards.tsx", 59]],
"translation": "Wartet auf Kunden"
},
"iH8pgl": {
"message": "Back",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/workspace-details/index.tsx", 275]],
"translation": "Zurück"
},
"KNKCTb": {
"message": "Backlog",
"placeholders": {},
@@ -798,6 +812,13 @@
"origin": [["src/views/pricing/components/PricingTiers.tsx", 53]],
"translation": "Ideal für kleine und wachsende Teams, die zusammenarbeiten müssen"
},
"zt/6cS": {
"message": "Best for small teams who want to collaborate and move faster together.",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 86]],
"translation": "Ideal für kleine Teams, die gemeinsam arbeiten und schneller vorankommen möchten."
},
"qaS+1/": {
"message": "Best for teams that want to scale without limits",
"placeholders": {},
@@ -849,7 +870,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/index.tsx", 529],
["src/views/board/index.tsx", 530],
["src/views/card/index.tsx", 317],
["src/views/public/board/index.tsx", 125]
],
@@ -860,8 +881,8 @@
"placeholders": {},
"comments": [],
"origin": [
["src/components/NewWorkspaceForm.tsx", 350],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 83]
["src/components/NewWorkspaceForm.tsx", 314],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 85]
],
"translation": "Board-Analyse"
},
@@ -1249,6 +1270,7 @@
["src/views/card/components/DeleteChecklistConfirmation.tsx", 64],
["src/views/card/components/DeleteCommentConfirmation.tsx", 77],
["src/views/members/components/DeleteMemberConfirmation.tsx", 55],
["src/views/onboarding/select-plan/index.tsx", 209],
["src/views/settings/components/Avatar.tsx", 287],
["src/views/settings/components/ChangePasswordConfirmation.tsx", 168],
[
@@ -1258,7 +1280,7 @@
["src/views/settings/components/DeleteAccountConfirmation.tsx", 88],
["src/views/settings/components/DeleteWebhookConfirmation.tsx", 66],
["src/views/settings/components/DeleteWorkspaceConfirmation.tsx", 98],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 106]
["src/views/settings/components/UpgradeToProConfirmation.tsx", 108]
],
"translation": "Abbrechen"
},
@@ -1270,11 +1292,13 @@
"translation": "Karte"
},
"sU2uWc": {
"translation": "Karte dupliziert",
"message": "Card duplicated",
"placeholders": {},
"comments": [],
"origin": [["src/views/board/components/CardContextDuplicateModal.tsx", 67]]
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 67]
],
"translation": "Karte dupliziert"
},
"fEY2vP": {
"message": "Card not found",
@@ -1298,7 +1322,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/index.tsx", 307],
["src/views/board/index.tsx", 308],
["src/views/card/components/Dropdown.tsx", 44],
["src/views/public/board/CardModal.tsx", 38]
],
@@ -1376,6 +1400,13 @@
],
"translation": "Checklisten"
},
"zMquA7": {
"message": "Choose a plan",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 122]],
"translation": "Tarif wählen"
},
"VHS0aJ": {
"message": "Clear all custom permissions?",
"placeholders": {},
@@ -1466,9 +1497,9 @@
"placeholders": {},
"comments": [],
"origin": [
["src/components/NewWorkspaceForm.tsx", 353],
["src/components/NewWorkspaceForm.tsx", 317],
["src/views/home/components/Features.tsx", 67],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 86]
["src/views/settings/components/UpgradeToProConfirmation.tsx", 88]
],
"translation": "Demnächst verfügbar"
},
@@ -1633,6 +1664,16 @@
"origin": [["src/views/boards/components/TemplateBoards.tsx", 40]],
"translation": "Content-Erstellung"
},
"xGVfLh": {
"message": "Continue",
"placeholders": {},
"comments": [],
"origin": [
["src/views/onboarding/select-plan/index.tsx", 212],
["src/views/onboarding/workspace-details/index.tsx", 291]
],
"translation": "Weiter"
},
"J2Wbjt": {
"message": "Continue with ",
"placeholders": {},
@@ -1678,38 +1719,38 @@
"translation": "Karten-Link kopieren"
},
"0utuU6": {
"translation": "Checklisten kopieren",
"message": "Copy checklists",
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 257]
]
],
"translation": "Checklisten kopieren"
},
"fDQ7hA": {
"translation": "Labels kopieren",
"message": "Copy labels",
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 221]
]
],
"translation": "Labels kopieren"
},
"1bJKhj": {
"translation": "Link zur Karte kopieren",
"message": "Copy link to card",
"placeholders": {},
"comments": [],
"origin": [["src/views/board/components/CardContextMenu.tsx", 62]]
"origin": [["src/views/board/components/CardContextMenu.tsx", 62]],
"translation": "Link zur Karte kopieren"
},
"uvH2xS": {
"translation": "Mitglieder kopieren",
"message": "Copy members",
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 239]
]
],
"translation": "Mitglieder kopieren"
},
"9PaIxv": {
"message": "Core features",
@@ -1816,8 +1857,8 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/index.tsx", 91],
["src/views/board/index.tsx", 670]
["src/views/board/index.tsx", 92],
["src/views/board/index.tsx", 671]
],
"translation": "Neue Liste erstellen"
},
@@ -1840,8 +1881,8 @@
"placeholders": {},
"comments": [],
"origin": [
["src/components/NewWorkspaceForm.tsx", 388],
["src/components/WorkspaceMenu.tsx", 153]
["src/components/NewWorkspaceForm.tsx", 352],
["src/components/WorkspaceMenu.tsx", 160]
],
"translation": "Workspace erstellen"
},
@@ -1928,7 +1969,7 @@
"message": "Custom URLs require upgrading to a Pro plan",
"placeholders": {},
"comments": [],
"origin": [["src/components/NewWorkspaceForm.tsx", 319]],
"origin": [["src/components/NewWorkspaceForm.tsx", 283]],
"translation": "Benutzerdefinierte URLs erfordern ein Upgrade auf einen Pro-Plan"
},
"7RpHg/": {
@@ -1941,13 +1982,20 @@
],
"translation": "Benutzerdefinierter Benutzername"
},
"ZDPJBc": {
"message": "Custom usernames require upgrading to a Pro plan",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/workspace-details/index.tsx", 220]],
"translation": "Benutzerdefinierte Benutzernamen erfordern ein Upgrade auf einen Pro-Tarif"
},
"j9IZZ0": {
"message": "Custom workspace URL",
"placeholders": {},
"comments": [],
"origin": [
["src/components/NewWorkspaceForm.tsx", 343],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 76]
["src/components/NewWorkspaceForm.tsx", 307],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 78]
],
"translation": "Benutzerdefinierte Workspace-URL"
},
@@ -2283,32 +2331,32 @@
"translation": "Morgen fällig"
},
"euc6Ns": {
"translation": "Duplizieren",
"message": "Duplicate",
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 279]
]
],
"translation": "Duplizieren"
},
"BTDPLo": {
"translation": "Karte duplizieren",
"message": "Duplicate card",
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 111],
["src/views/board/components/CardContextMenu.tsx", 68]
]
],
"translation": "Karte duplizieren"
},
"06EQqT": {
"translation": "Wird dupliziert…",
"message": "Duplicating…",
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 279]
]
],
"translation": "Wird dupliziert…"
},
"ePK91l": {
"message": "Edit",
@@ -2423,13 +2471,20 @@
"translation": "E-Mail-Sichtbarkeit"
},
"bFREhu": {
"translation": "Ende der Liste",
"message": "End of list",
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 200]
]
],
"translation": "Ende der Liste"
},
"SUXBxp": {
"message": "Engineering",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/workspace-details/index.tsx", 161]],
"translation": "Technik"
},
"0+ewPp": {
"message": "Enhancement",
@@ -2644,7 +2699,7 @@
"comments": [],
"origin": [
["src/views/members/components/InviteMemberForm.tsx", 240],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 41]
["src/views/settings/components/UpgradeToProConfirmation.tsx", 43]
],
"translation": "Fehler beim Upgrade des Abonnements"
},
@@ -2653,7 +2708,8 @@
"placeholders": {},
"comments": [],
"origin": [["src/components/NewWorkspaceForm.tsx", 146]],
"translation": "Fehler beim Upgrade auf Pro"
"translation": "Fehler beim Upgrade auf Pro",
"obsolete": true
},
"CYWHT+": {
"message": "Error uploading profile image",
@@ -2887,6 +2943,8 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/onboarding/select-plan/index.tsx", 77],
["src/views/onboarding/select-plan/index.tsx", 78],
["src/views/pricing/components/FeatureComparisonTable.tsx", 331],
["src/views/pricing/components/Pricing.tsx", 32],
["src/views/pricing/components/Pricing.tsx", 32],
@@ -2987,7 +3045,7 @@
"message": "Get started by creating a new list",
"placeholders": {},
"comments": [],
"origin": [["src/views/board/index.tsx", 655]],
"origin": [["src/views/board/index.tsx", 656]],
"translation": "Legen Sie los, indem Sie eine neue Liste erstellen"
},
"oW13KZ": {
@@ -3097,6 +3155,13 @@
"origin": [["src/components/SideNavigation.tsx", 119]],
"translation": "Zu Vorlagen gehen"
},
"SUvm1Y": {
"message": "Good for individuals starting out who just need the essentials.",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 79]],
"translation": "Gut geeignet für Einsteiger, die nur die wichtigsten Funktionen benötigen."
},
"cdyS7J": {
"message": "Google SSO",
"placeholders": {},
@@ -3521,9 +3586,9 @@
"placeholders": {},
"comments": [],
"origin": [
["src/components/NewWorkspaceForm.tsx", 336],
["src/components/NewWorkspaceForm.tsx", 300],
["src/views/pricing/components/PricingTiers.tsx", 159],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 69]
["src/views/settings/components/UpgradeToProConfirmation.tsx", 71]
],
"translation": "Launch-Angebot"
},
@@ -3591,7 +3656,7 @@
"comments": [],
"origin": [
["src/views/board/components/UpdateBoardSlugButton.tsx", 80],
["src/views/board/index.tsx", 305],
["src/views/board/index.tsx", 306],
["src/views/card/components/Dropdown.tsx", 42],
["src/views/public/board/CardModal.tsx", 36],
["src/views/public/board/index.tsx", 77]
@@ -3695,14 +3760,14 @@
"translation": "Vorlage erstellen"
},
"hB02vO": {
"translation": "Mitglieder verwalten",
"message": "Manage members",
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/components/CardContextMembersModal.tsx", 51],
["src/views/board/components/CardContextMenu.tsx", 38]
]
],
"translation": "Mitglieder verwalten"
},
"IDvohQ": {
"message": "marked a checklist item as incomplete",
@@ -3720,6 +3785,13 @@
"origin": [["src/views/card/components/ActivityList.tsx", 258]],
"translation": "hat Checklistenelement <0>{0}</0> als unvollständig markiert"
},
"vo2a+a": {
"message": "Marketing",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/workspace-details/index.tsx", 161]],
"translation": "Marketing"
},
"agPptk": {
"message": "Medium",
"placeholders": {},
@@ -3791,6 +3863,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/onboarding/select-plan/index.tsx", 62],
["src/views/pricing/components/Pricing.tsx", 14],
["src/views/pricing/index.tsx", 20]
],
@@ -3804,18 +3877,18 @@
"translation": "Monatliche Abrechnung"
},
"51UCsN": {
"translation": "In andere Liste verschieben",
"message": "Move to another list",
"placeholders": {},
"comments": [],
"origin": [["src/views/board/components/CardContextMenu.tsx", 44]]
"origin": [["src/views/board/components/CardContextMenu.tsx", 44]],
"translation": "In andere Liste verschieben"
},
"J4+OTA": {
"translation": "In Liste verschieben",
"message": "Move to list",
"placeholders": {},
"comments": [],
"origin": [["src/views/board/components/CardContextMoveListModal.tsx", 70]]
"origin": [["src/views/board/components/CardContextMoveListModal.tsx", 70]],
"translation": "In Liste verschieben"
},
"BOqTi5": {
"message": "moved the card from <0>{0}</0> to<1>{1}</1>",
@@ -3928,7 +4001,7 @@
"comments": [],
"origin": [
["src/views/board/components/NewListForm.tsx", 113],
["src/views/board/index.tsx", 619]
["src/views/board/index.tsx", 620]
],
"translation": "Neue Liste"
},
@@ -3975,7 +4048,7 @@
"message": "New workspace",
"placeholders": {},
"comments": [],
"origin": [["src/components/NewWorkspaceForm.tsx", 244]],
"origin": [["src/components/NewWorkspaceForm.tsx", 208]],
"translation": "Neuer Workspace"
},
"5ACX4z": {
@@ -4054,14 +4127,14 @@
"message": "No lists",
"placeholders": {},
"comments": [],
"origin": [["src/views/board/index.tsx", 651]],
"origin": [["src/views/board/index.tsx", 652]],
"translation": "Keine Listen"
},
"fvLNDy": {
"message": "No lists have been created yet",
"placeholders": {},
"comments": [],
"origin": [["src/views/board/index.tsx", 656]],
"origin": [["src/views/board/index.tsx", 657]],
"translation": "Es wurden noch keine Listen erstellt"
},
"i30J2U": {
@@ -4142,7 +4215,7 @@
"message": "Open command menu",
"placeholders": {},
"comments": [],
"origin": [["src/components/WorkspaceMenu.tsx", 31]],
"origin": [["src/components/WorkspaceMenu.tsx", 34]],
"translation": "Befehlsmenü öffnen"
},
"cFQEU/": {
@@ -4358,6 +4431,13 @@
"origin": [["src/views/boards/components/TemplateBoards.tsx", 86]],
"translation": "Persönliches Projekt"
},
"Oi+J+N": {
"message": "Pick a plan to get started. All paid plans include a 14-day free trial.",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 125]],
"translation": "Wählen Sie einen Tarif, um loszulegen. Alle kostenpflichtigen Tarife beinhalten eine 14-tägige kostenlose Testphase."
},
"Iqh0Uv": {
"message": "Planned",
"placeholders": {},
@@ -4445,7 +4525,7 @@
"origin": [
["src/components/DeleteLabelConfirmation.tsx", 26],
["src/components/FeedbackModal.tsx", 41],
["src/components/NewWorkspaceForm.tsx", 159],
["src/components/NewWorkspaceForm.tsx", 123],
["src/views/board/components/BoardDropdown.tsx", 65],
["src/views/board/components/NewCardForm.tsx", 186],
["src/views/board/components/NewListForm.tsx", 79],
@@ -4453,8 +4533,8 @@
["src/views/board/components/NewTemplateForm.tsx", 77],
["src/views/board/components/UpdateBoardSlugForm.tsx", 73],
["src/views/board/components/VisibilityButton.tsx", 57],
["src/views/board/index.tsx", 217],
["src/views/board/index.tsx", 273],
["src/views/board/index.tsx", 218],
["src/views/board/index.tsx", 274],
["src/views/boards/components/ImportBoardsForm.tsx", 243],
["src/views/boards/components/ImportBoardsForm.tsx", 395],
["src/views/card/components/AttachmentThumbnails.tsx", 74],
@@ -4482,6 +4562,8 @@
["src/views/members/components/InviteMemberForm.tsx", 104],
["src/views/members/components/InviteMemberForm.tsx", 241],
["src/views/members/index.tsx", 66],
["src/views/onboarding/workspace-details/index.tsx", 101],
["src/views/onboarding/workspace-details/index.tsx", 150],
["src/views/settings/components/Avatar.tsx", 200],
["src/views/settings/components/DeleteAccountConfirmation.tsx", 40],
["src/views/settings/components/DeleteWorkspaceConfirmation.tsx", 46],
@@ -4489,7 +4571,7 @@
["src/views/settings/components/UpdateWorkspaceDescriptionForm.tsx", 64],
["src/views/settings/components/UpdateWorkspaceNameForm.tsx", 59],
["src/views/settings/components/UpdateWorkspaceUrlForm.tsx", 76],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 42],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 44],
["src/views/settings/PermissionsSettings.tsx", 40]
],
"translation": "Bitte versuchen Sie es später erneut oder kontaktieren Sie den Kundensupport."
@@ -4511,7 +4593,7 @@
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 76],
["src/views/board/components/CardContextMoveListModal.tsx", 42],
["src/views/board/index.tsx", 314],
["src/views/board/index.tsx", 315],
["src/views/card/components/Dropdown.tsx", 51],
["src/views/public/board/CardModal.tsx", 45],
["src/views/public/board/index.tsx", 86]
@@ -4519,13 +4601,13 @@
"translation": "Bitte versuchen Sie es erneut."
},
"nYNMZZ": {
"translation": "Position in Liste (0 = erste, leer lassen für Ende)",
"message": "Position in list (0 = first, leave empty for end)",
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 193]
]
],
"translation": "Position in Liste (0 = erste, leer lassen für Ende)"
},
"aHCEmh": {
"message": "Pricing",
@@ -4549,7 +4631,7 @@
["src/views/pricing/components/FeatureComparisonTable.tsx", 275],
["src/views/pricing/components/Pricing.tsx", 56],
["src/views/pricing/components/PricingTiers.tsx", 61],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 93]
["src/views/settings/components/UpgradeToProConfirmation.tsx", 95]
],
"translation": "Priorisierter E-Mail-Support"
},
@@ -4572,6 +4654,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/onboarding/select-plan/index.tsx", 91],
["src/views/pricing/components/FeatureComparisonTable.tsx", 333],
["src/views/pricing/components/PricingTiers.tsx", 70]
],
@@ -4829,7 +4912,8 @@
"origin": [
["src/views/home/components/Footer.tsx", 36],
["src/views/home/components/Header.tsx", 13],
["src/views/home/components/Header.tsx", 28]
["src/views/home/components/Header.tsx", 28],
["src/views/onboarding/workspace-details/index.tsx", 161]
],
"translation": "Roadmap"
},
@@ -4949,13 +5033,13 @@
"translation": "Sehen Sie, was unsere Nutzer über Kan sagen"
},
"zYRVNp": {
"translation": "Liste auswählen",
"message": "Select a list",
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 131]
]
],
"translation": "Liste auswählen"
},
"wgNoIs": {
"message": "Select all",
@@ -5041,6 +5125,13 @@
"origin": [["src/views/card/components/ActivityList.tsx", 142]],
"translation": "hat das Fälligkeitsdatum festgelegt"
},
"JjEJSy": {
"message": "Set up your workspace",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/workspace-details/index.tsx", 179]],
"translation": "Richten Sie Ihren Workspace ein"
},
"Tz0i8g": {
"message": "Settings",
"placeholders": {},
@@ -5121,6 +5212,16 @@
"origin": [["src/views/invite/index.tsx", 154]],
"translation": "Anmelden"
},
"fcWrnU": {
"message": "Sign out",
"placeholders": {},
"comments": [],
"origin": [
["src/views/onboarding/select-plan/index.tsx", 284],
["src/views/onboarding/workspace-details/index.tsx", 362]
],
"translation": "Abmelden"
},
"mErq7F": {
"message": "Sign Up",
"placeholders": {},
@@ -5206,6 +5307,13 @@
"origin": [["src/views/boards/components/TemplateBoards.tsx", 22]],
"translation": "Softwareentwicklung"
},
"6sKjjx": {
"message": "Solo",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 76]],
"translation": "Solo"
},
"vnS6Rf": {
"message": "SSO",
"placeholders": {},
@@ -5228,7 +5336,7 @@
"comments": [],
"origin": [
["src/views/members/components/InviteMemberForm.tsx", 359],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 111]
["src/views/settings/components/UpgradeToProConfirmation.tsx", 113]
],
"translation": "14-tägige kostenlose Testversion starten"
},
@@ -5277,7 +5385,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/settings/components/UpgradeToProConfirmation.tsx", 57]
["src/views/settings/components/UpgradeToProConfirmation.tsx", 59]
],
"translation": "Optimieren Sie Ihren Workspace für nur 29 $/Monat. Das erhalten Sie:"
},
@@ -5305,6 +5413,13 @@
"origin": [["src/components/UserMenu.tsx", 144]],
"translation": "System"
},
"KM6m8p": {
"message": "Team",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 83]],
"translation": "Team"
},
"bff61F": {
"message": "Team Plan",
"placeholders": {},
@@ -5331,8 +5446,8 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/index.tsx", 529],
["src/views/board/index.tsx", 565]
["src/views/board/index.tsx", 530],
["src/views/board/index.tsx", 566]
],
"translation": "Vorlage"
},
@@ -5427,11 +5542,13 @@
"translation": "Das Board wurde wiederhergestellt."
},
"nKBUeF": {
"translation": "Die Karte wurde dupliziert.",
"message": "The card has been duplicated.",
"placeholders": {},
"comments": [],
"origin": [["src/views/board/components/CardContextDuplicateModal.tsx", 69]]
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 69]
],
"translation": "Die Karte wurde dupliziert."
},
"jlB2RY": {
"message": "The current password you entered is incorrect.",
@@ -5555,6 +5672,20 @@
],
"translation": "Die Berechtigungen dieses Mitglieds wurden auf die Standardwerte seiner Rolle zurückgesetzt."
},
"HQVm6e": {
"message": "This URL has already been taken",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/workspace-details/index.tsx", 73]],
"translation": "Diese URL ist bereits vergeben"
},
"gKmoow": {
"message": "This URL is reserved",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/workspace-details/index.tsx", 75]],
"translation": "Diese URL ist reserviert"
},
"OAYToL": {
"message": "This will remove all custom member permissions in this workspace. Members will inherit permissions only from their roles.",
"placeholders": {},
@@ -5589,14 +5720,14 @@
"message": "This workspace URL has already been taken",
"placeholders": {},
"comments": [],
"origin": [["src/components/NewWorkspaceForm.tsx", 288]],
"origin": [["src/components/NewWorkspaceForm.tsx", 252]],
"translation": "Diese Workspace-URL ist bereits vergeben"
},
"bJtM0P": {
"message": "This workspace URL is reserved",
"placeholders": {},
"comments": [],
"origin": [["src/components/NewWorkspaceForm.tsx", 290]],
"origin": [["src/components/NewWorkspaceForm.tsx", 254]],
"translation": "Diese Workspace-URL ist reserviert"
},
"kp6L3T": {
@@ -5616,13 +5747,13 @@
"translation": "Titel"
},
"wK4OTM": {
"translation": "Titel (optional)",
"message": "Title (optional)",
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 180]
]
],
"translation": "Titel (optional)"
},
"Se/UIp": {
"message": "To Do",
@@ -5726,7 +5857,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/index.tsx", 312],
["src/views/board/index.tsx", 313],
["src/views/card/components/Dropdown.tsx", 49],
["src/views/public/board/CardModal.tsx", 43],
["src/views/public/board/index.tsx", 84]
@@ -5768,7 +5899,10 @@
"message": "Unable to create workspace",
"placeholders": {},
"comments": [],
"origin": [["src/components/NewWorkspaceForm.tsx", 158]],
"origin": [
["src/components/NewWorkspaceForm.tsx", 122],
["src/views/onboarding/workspace-details/index.tsx", 100]
],
"translation": "Workspace konnte nicht erstellt werden"
},
"WHHLh9": {
@@ -5809,18 +5943,20 @@
"translation": "Kommentar konnte nicht gelöscht werden"
},
"Oo4E6p": {
"translation": "Karte konnte nicht dupliziert werden",
"message": "Unable to duplicate card",
"placeholders": {},
"comments": [],
"origin": [["src/views/board/components/CardContextDuplicateModal.tsx", 75]]
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 75]
],
"translation": "Karte konnte nicht dupliziert werden"
},
"K7k9u3": {
"translation": "Karte konnte nicht verschoben werden",
"message": "Unable to move card",
"placeholders": {},
"comments": [],
"origin": [["src/views/board/components/CardContextMoveListModal.tsx", 41]]
"origin": [["src/views/board/components/CardContextMoveListModal.tsx", 41]],
"translation": "Karte konnte nicht verschoben werden"
},
"8yFGGF": {
"message": "Unable to remove member",
@@ -5854,6 +5990,13 @@
"origin": [["src/components/FeedbackModal.tsx", 40]],
"translation": "Feedback konnte nicht gesendet werden"
},
"Q60WUZ": {
"message": "Unable to start checkout",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/workspace-details/index.tsx", 149]],
"translation": "Checkout kann nicht gestartet werden"
},
"T7Mywq": {
"message": "Unable to update board",
"placeholders": {},
@@ -5880,7 +6023,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/index.tsx", 272],
["src/views/board/index.tsx", 273],
["src/views/card/index.tsx", 231]
],
"translation": "Karte konnte nicht aktualisiert werden"
@@ -5925,7 +6068,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/index.tsx", 216],
["src/views/board/index.tsx", 217],
["src/views/card/components/ListSelector.tsx", 54]
],
"translation": "Liste konnte nicht aktualisiert werden"
@@ -6053,14 +6196,21 @@
"placeholders": {},
"comments": [],
"origin": [
["src/components/NewWorkspaceForm.tsx", 333],
["src/components/NewWorkspaceForm.tsx", 297],
["src/views/pricing/components/FeatureComparisonTable.tsx", 84],
["src/views/pricing/components/FeatureComparisonTable.tsx", 85],
["src/views/pricing/components/PricingTiers.tsx", 80],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 66]
["src/views/settings/components/UpgradeToProConfirmation.tsx", 68]
],
"translation": "Unbegrenzte Mitglieder"
},
"8AwlaR": {
"message": "Unlimited members and a custom workspace username for teams ready to scale.",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 94]],
"translation": "Unbegrenzte Mitglieder und ein individueller Workspace-Benutzername für Teams, die wachsen möchten."
},
"Ws+3X+": {
"message": "Unlimited seats and advanced features for growing teams.",
"placeholders": {},
@@ -6141,7 +6291,7 @@
"comments": [],
"origin": [
["src/components/SideNavigation.tsx", 240],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 53],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 55],
["src/views/settings/WorkspaceSettings.tsx", 118]
],
"translation": "Auf Pro upgraden"
@@ -6150,7 +6300,10 @@
"message": "Upgrade to Pro ($29/month)",
"placeholders": {},
"comments": [],
"origin": [["src/components/NewWorkspaceForm.tsx", 373]],
"origin": [
["src/components/NewWorkspaceForm.tsx", 337],
["src/views/onboarding/workspace-details/index.tsx", 243]
],
"translation": "Auf Pro upgraden (29 $/Monat)"
},
"b3Thhd": {
@@ -6434,7 +6587,7 @@
"comments": [],
"origin": [
["src/components/SettingsLayout.tsx", 47],
["src/views/board/index.tsx", 529],
["src/views/board/index.tsx", 530],
["src/views/boards/index.tsx", 48],
["src/views/members/index.tsx", 258],
["src/views/public/board/index.tsx", 125],
@@ -6447,7 +6600,8 @@
"placeholders": {},
"comments": [],
"origin": [["src/components/NewWorkspaceForm.tsx", 147]],
"translation": "Workspace erfolgreich erstellt. Sie können später in den Einstellungen upgraden."
"translation": "Workspace erfolgreich erstellt. Sie können später in den Einstellungen upgraden.",
"obsolete": true
},
"UlhdTP": {
"message": "Workspace deleted",
@@ -6462,7 +6616,10 @@
"message": "Workspace description",
"placeholders": {},
"comments": [],
"origin": [["src/views/settings/WorkspaceSettings.tsx", 82]],
"origin": [
["src/views/onboarding/workspace-details/index.tsx", 253],
["src/views/settings/WorkspaceSettings.tsx", 82]
],
"translation": "Workspace-Beschreibung"
},
"Ax/hYa": {
@@ -6508,7 +6665,8 @@
"placeholders": {},
"comments": [],
"origin": [
["src/components/NewWorkspaceForm.tsx", 263],
["src/components/NewWorkspaceForm.tsx", 227],
["src/views/onboarding/workspace-details/index.tsx", 188],
["src/views/settings/WorkspaceSettings.tsx", 63]
],
"translation": "Workspace-Name"
@@ -6582,7 +6740,7 @@
"message": "workspace-url",
"placeholders": {},
"comments": [],
"origin": [["src/components/NewWorkspaceForm.tsx", 277]],
"origin": [["src/components/NewWorkspaceForm.tsx", 241]],
"translation": "workspace-url"
},
"4kJRen": {
@@ -6616,6 +6774,13 @@
"origin": [["src/views/settings/AccountSettings.tsx", 91]],
"translation": "Sie sind dabei, Ihr Passwort zu ändern."
},
"3WXdoZ": {
"message": "You can always change these later in settings.",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/workspace-details/index.tsx", 182]],
"translation": "Sie können diese später jederzeit in den Einstellungen ändern."
},
"aelko+": {
"message": "You can get a custom workspace URL, like <0>kan.bn/kan</0>, by going into your <1>workspace settings</1> and purchasing a pro workspace subscription. All subscriptions help fund the development of the project!",
"placeholders": {},
@@ -6645,8 +6810,8 @@
["src/views/board/components/List.tsx", 117],
["src/views/board/components/UpdateBoardSlugButton.tsx", 58],
["src/views/board/components/VisibilityButton.tsx", 72],
["src/views/board/index.tsx", 603],
["src/views/board/index.tsx", 661],
["src/views/board/index.tsx", 604],
["src/views/board/index.tsx", 662],
["src/views/boards/components/BoardsList.tsx", 71],
["src/views/boards/index.tsx", 59],
["src/views/boards/index.tsx", 80]
@@ -6711,6 +6876,13 @@
],
"translation": "Ihr Konto wurde gelöscht."
},
"c4nMcR": {
"message": "Your avatar",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 229]],
"translation": "Ihr Avatar"
},
"evg7+A": {
"message": "Your boards have been imported.",
"placeholders": {},
@@ -6797,6 +6969,20 @@
"origin": [["src/pages/unsubscribe/index.tsx", 33]],
"translation": "Ihrem Abmelde-Link fehlt ein Token. Bitte öffnen Sie die neueste E-Mail und versuchen Sie es erneut."
},
"GRAGsB": {
"message": "Your workspace",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/workspace-details/index.tsx", 322]],
"translation": "Ihr Workspace"
},
"j0o6ml": {
"message": "Your workspace description",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/workspace-details/index.tsx", 325]],
"translation": "Ihre Workspace-Beschreibung"
},
"GnSSGm": {
"message": "Your workspace description has been updated.",
"placeholders": {},
@@ -6833,6 +7019,16 @@
],
"translation": "Ihr Workspace-Slug wurde aktualisiert."
},
"OTxjpR": {
"message": "your-workspace",
"placeholders": {},
"comments": [],
"origin": [
["src/views/onboarding/workspace-details/index.tsx", 197],
["src/views/onboarding/workspace-details/index.tsx", 198]
],
"translation": "ihr-workspace"
},
"4DOCMI": {
"message": "YouTube URL",
"placeholders": {},

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@@ -71,7 +71,7 @@
"0": ["isTemplate ? \"Template\" : \"Board\""]
},
"comments": [],
"origin": [["src/views/board/index.tsx", 556]],
"origin": [["src/views/board/index.tsx", 557]],
"translation": "{0} no encontrado"
},
"0xWkkH": {
@@ -239,11 +239,11 @@
"translation": "Registros de actividad"
},
"UGCIzB": {
"translation": "Añadir / editar etiqueta",
"message": "Add / edit label",
"placeholders": {},
"comments": [],
"origin": [["src/views/board/components/CardContextMenu.tsx", 50]]
"origin": [["src/views/board/components/CardContextMenu.tsx", 50]],
"translation": "Añadir / editar etiqueta"
},
"B3xxao": {
"message": "Add a card",
@@ -556,6 +556,13 @@
],
"translation": "Se produjo un error inesperado. Por favor, inténtalo de nuevo más tarde."
},
"YkfDoz": {
"message": "Annual",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 63]],
"translation": "Anual"
},
"3bqt9U": {
"message": "Anyone with this link can join your workspace",
"placeholders": {},
@@ -756,6 +763,13 @@
"origin": [["src/views/boards/components/TemplateBoards.tsx", 59]],
"translation": "Esperando al cliente"
},
"iH8pgl": {
"message": "Back",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/workspace-details/index.tsx", 275]],
"translation": "Atrás"
},
"KNKCTb": {
"message": "Backlog",
"placeholders": {},
@@ -798,6 +812,13 @@
"origin": [["src/views/pricing/components/PricingTiers.tsx", 53]],
"translation": "Ideal para equipos pequeños y en crecimiento que necesitan colaboración"
},
"zt/6cS": {
"message": "Best for small teams who want to collaborate and move faster together.",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 86]],
"translation": "Ideal para equipos pequeños que desean colaborar y avanzar más rápido juntos."
},
"qaS+1/": {
"message": "Best for teams that want to scale without limits",
"placeholders": {},
@@ -849,7 +870,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/index.tsx", 529],
["src/views/board/index.tsx", 530],
["src/views/card/index.tsx", 317],
["src/views/public/board/index.tsx", 125]
],
@@ -860,8 +881,8 @@
"placeholders": {},
"comments": [],
"origin": [
["src/components/NewWorkspaceForm.tsx", 350],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 83]
["src/components/NewWorkspaceForm.tsx", 314],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 85]
],
"translation": "Analíticas del tablero"
},
@@ -1249,6 +1270,7 @@
["src/views/card/components/DeleteChecklistConfirmation.tsx", 64],
["src/views/card/components/DeleteCommentConfirmation.tsx", 77],
["src/views/members/components/DeleteMemberConfirmation.tsx", 55],
["src/views/onboarding/select-plan/index.tsx", 209],
["src/views/settings/components/Avatar.tsx", 287],
["src/views/settings/components/ChangePasswordConfirmation.tsx", 168],
[
@@ -1258,7 +1280,7 @@
["src/views/settings/components/DeleteAccountConfirmation.tsx", 88],
["src/views/settings/components/DeleteWebhookConfirmation.tsx", 66],
["src/views/settings/components/DeleteWorkspaceConfirmation.tsx", 98],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 106]
["src/views/settings/components/UpgradeToProConfirmation.tsx", 108]
],
"translation": "Cancelar"
},
@@ -1270,11 +1292,13 @@
"translation": "Tarjeta"
},
"sU2uWc": {
"translation": "Tarjeta duplicada",
"message": "Card duplicated",
"placeholders": {},
"comments": [],
"origin": [["src/views/board/components/CardContextDuplicateModal.tsx", 67]]
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 67]
],
"translation": "Tarjeta duplicada"
},
"fEY2vP": {
"message": "Card not found",
@@ -1298,7 +1322,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/index.tsx", 307],
["src/views/board/index.tsx", 308],
["src/views/card/components/Dropdown.tsx", 44],
["src/views/public/board/CardModal.tsx", 38]
],
@@ -1376,6 +1400,13 @@
],
"translation": "Listas de verificación"
},
"zMquA7": {
"message": "Choose a plan",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 122]],
"translation": "Elige un plan"
},
"VHS0aJ": {
"message": "Clear all custom permissions?",
"placeholders": {},
@@ -1466,9 +1497,9 @@
"placeholders": {},
"comments": [],
"origin": [
["src/components/NewWorkspaceForm.tsx", 353],
["src/components/NewWorkspaceForm.tsx", 317],
["src/views/home/components/Features.tsx", 67],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 86]
["src/views/settings/components/UpgradeToProConfirmation.tsx", 88]
],
"translation": "Próximamente"
},
@@ -1633,6 +1664,16 @@
"origin": [["src/views/boards/components/TemplateBoards.tsx", 40]],
"translation": "Creación de contenido"
},
"xGVfLh": {
"message": "Continue",
"placeholders": {},
"comments": [],
"origin": [
["src/views/onboarding/select-plan/index.tsx", 212],
["src/views/onboarding/workspace-details/index.tsx", 291]
],
"translation": "Continuar"
},
"J2Wbjt": {
"message": "Continue with ",
"placeholders": {},
@@ -1678,38 +1719,38 @@
"translation": "Copiar enlace de la tarjeta"
},
"0utuU6": {
"translation": "Copiar listas de verificación",
"message": "Copy checklists",
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 257]
]
],
"translation": "Copiar listas de verificación"
},
"fDQ7hA": {
"translation": "Copiar etiquetas",
"message": "Copy labels",
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 221]
]
],
"translation": "Copiar etiquetas"
},
"1bJKhj": {
"translation": "Copiar enlace a la tarjeta",
"message": "Copy link to card",
"placeholders": {},
"comments": [],
"origin": [["src/views/board/components/CardContextMenu.tsx", 62]]
"origin": [["src/views/board/components/CardContextMenu.tsx", 62]],
"translation": "Copiar enlace a la tarjeta"
},
"uvH2xS": {
"translation": "Copiar miembros",
"message": "Copy members",
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 239]
]
],
"translation": "Copiar miembros"
},
"9PaIxv": {
"message": "Core features",
@@ -1816,8 +1857,8 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/index.tsx", 91],
["src/views/board/index.tsx", 670]
["src/views/board/index.tsx", 92],
["src/views/board/index.tsx", 671]
],
"translation": "Crear nueva lista"
},
@@ -1840,8 +1881,8 @@
"placeholders": {},
"comments": [],
"origin": [
["src/components/NewWorkspaceForm.tsx", 388],
["src/components/WorkspaceMenu.tsx", 153]
["src/components/NewWorkspaceForm.tsx", 352],
["src/components/WorkspaceMenu.tsx", 160]
],
"translation": "Crear espacio de trabajo"
},
@@ -1928,7 +1969,7 @@
"message": "Custom URLs require upgrading to a Pro plan",
"placeholders": {},
"comments": [],
"origin": [["src/components/NewWorkspaceForm.tsx", 319]],
"origin": [["src/components/NewWorkspaceForm.tsx", 283]],
"translation": "Las URLs personalizadas requieren actualizar a un plan Pro"
},
"7RpHg/": {
@@ -1941,13 +1982,20 @@
],
"translation": "Nombre de usuario personalizado"
},
"ZDPJBc": {
"message": "Custom usernames require upgrading to a Pro plan",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/workspace-details/index.tsx", 220]],
"translation": "Los nombres de usuario personalizados requieren actualizar a un plan Pro"
},
"j9IZZ0": {
"message": "Custom workspace URL",
"placeholders": {},
"comments": [],
"origin": [
["src/components/NewWorkspaceForm.tsx", 343],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 76]
["src/components/NewWorkspaceForm.tsx", 307],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 78]
],
"translation": "URL del espacio de trabajo personalizada"
},
@@ -2283,32 +2331,32 @@
"translation": "Vence mañana"
},
"euc6Ns": {
"translation": "Duplicar",
"message": "Duplicate",
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 279]
]
],
"translation": "Duplicar"
},
"BTDPLo": {
"translation": "Duplicar tarjeta",
"message": "Duplicate card",
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 111],
["src/views/board/components/CardContextMenu.tsx", 68]
]
],
"translation": "Duplicar tarjeta"
},
"06EQqT": {
"translation": "Duplicando…",
"message": "Duplicating…",
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 279]
]
],
"translation": "Duplicando…"
},
"ePK91l": {
"message": "Edit",
@@ -2423,13 +2471,20 @@
"translation": "Visibilidad del email"
},
"bFREhu": {
"translation": "Fin de la lista",
"message": "End of list",
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 200]
]
],
"translation": "Fin de la lista"
},
"SUXBxp": {
"message": "Engineering",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/workspace-details/index.tsx", 161]],
"translation": "Ingeniería"
},
"0+ewPp": {
"message": "Enhancement",
@@ -2644,7 +2699,7 @@
"comments": [],
"origin": [
["src/views/members/components/InviteMemberForm.tsx", 240],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 41]
["src/views/settings/components/UpgradeToProConfirmation.tsx", 43]
],
"translation": "Error al actualizar la suscripción"
},
@@ -2653,7 +2708,8 @@
"placeholders": {},
"comments": [],
"origin": [["src/components/NewWorkspaceForm.tsx", 146]],
"translation": "Error al actualizar a Pro"
"translation": "Error al actualizar a Pro",
"obsolete": true
},
"CYWHT+": {
"message": "Error uploading profile image",
@@ -2887,6 +2943,8 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/onboarding/select-plan/index.tsx", 77],
["src/views/onboarding/select-plan/index.tsx", 78],
["src/views/pricing/components/FeatureComparisonTable.tsx", 331],
["src/views/pricing/components/Pricing.tsx", 32],
["src/views/pricing/components/Pricing.tsx", 32],
@@ -2987,7 +3045,7 @@
"message": "Get started by creating a new list",
"placeholders": {},
"comments": [],
"origin": [["src/views/board/index.tsx", 655]],
"origin": [["src/views/board/index.tsx", 656]],
"translation": "Comienza creando una nueva lista"
},
"oW13KZ": {
@@ -3097,6 +3155,13 @@
"origin": [["src/components/SideNavigation.tsx", 119]],
"translation": "Ir a plantillas"
},
"SUvm1Y": {
"message": "Good for individuals starting out who just need the essentials.",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 79]],
"translation": "Ideal para personas que comienzan y solo necesitan lo esencial."
},
"cdyS7J": {
"message": "Google SSO",
"placeholders": {},
@@ -3521,9 +3586,9 @@
"placeholders": {},
"comments": [],
"origin": [
["src/components/NewWorkspaceForm.tsx", 336],
["src/components/NewWorkspaceForm.tsx", 300],
["src/views/pricing/components/PricingTiers.tsx", 159],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 69]
["src/views/settings/components/UpgradeToProConfirmation.tsx", 71]
],
"translation": "Oferta de lanzamiento"
},
@@ -3591,7 +3656,7 @@
"comments": [],
"origin": [
["src/views/board/components/UpdateBoardSlugButton.tsx", 80],
["src/views/board/index.tsx", 305],
["src/views/board/index.tsx", 306],
["src/views/card/components/Dropdown.tsx", 42],
["src/views/public/board/CardModal.tsx", 36],
["src/views/public/board/index.tsx", 77]
@@ -3695,14 +3760,14 @@
"translation": "Crear plantilla"
},
"hB02vO": {
"translation": "Gestionar miembros",
"message": "Manage members",
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/components/CardContextMembersModal.tsx", 51],
["src/views/board/components/CardContextMenu.tsx", 38]
]
],
"translation": "Gestionar miembros"
},
"IDvohQ": {
"message": "marked a checklist item as incomplete",
@@ -3720,6 +3785,13 @@
"origin": [["src/views/card/components/ActivityList.tsx", 258]],
"translation": "marcó el elemento de la lista de verificación <0>{0}</0> como incompleto"
},
"vo2a+a": {
"message": "Marketing",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/workspace-details/index.tsx", 161]],
"translation": "Marketing"
},
"agPptk": {
"message": "Medium",
"placeholders": {},
@@ -3791,6 +3863,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/onboarding/select-plan/index.tsx", 62],
["src/views/pricing/components/Pricing.tsx", 14],
["src/views/pricing/index.tsx", 20]
],
@@ -3804,18 +3877,18 @@
"translation": "facturación mensual"
},
"51UCsN": {
"translation": "Mover a otra lista",
"message": "Move to another list",
"placeholders": {},
"comments": [],
"origin": [["src/views/board/components/CardContextMenu.tsx", 44]]
"origin": [["src/views/board/components/CardContextMenu.tsx", 44]],
"translation": "Mover a otra lista"
},
"J4+OTA": {
"translation": "Mover a lista",
"message": "Move to list",
"placeholders": {},
"comments": [],
"origin": [["src/views/board/components/CardContextMoveListModal.tsx", 70]]
"origin": [["src/views/board/components/CardContextMoveListModal.tsx", 70]],
"translation": "Mover a lista"
},
"BOqTi5": {
"message": "moved the card from <0>{0}</0> to<1>{1}</1>",
@@ -3928,7 +4001,7 @@
"comments": [],
"origin": [
["src/views/board/components/NewListForm.tsx", 113],
["src/views/board/index.tsx", 619]
["src/views/board/index.tsx", 620]
],
"translation": "Nueva lista"
},
@@ -3975,7 +4048,7 @@
"message": "New workspace",
"placeholders": {},
"comments": [],
"origin": [["src/components/NewWorkspaceForm.tsx", 244]],
"origin": [["src/components/NewWorkspaceForm.tsx", 208]],
"translation": "Nuevo espacio de trabajo"
},
"5ACX4z": {
@@ -4054,14 +4127,14 @@
"message": "No lists",
"placeholders": {},
"comments": [],
"origin": [["src/views/board/index.tsx", 651]],
"origin": [["src/views/board/index.tsx", 652]],
"translation": "Sin listas"
},
"fvLNDy": {
"message": "No lists have been created yet",
"placeholders": {},
"comments": [],
"origin": [["src/views/board/index.tsx", 656]],
"origin": [["src/views/board/index.tsx", 657]],
"translation": "Aún no se han creado listas"
},
"i30J2U": {
@@ -4142,7 +4215,7 @@
"message": "Open command menu",
"placeholders": {},
"comments": [],
"origin": [["src/components/WorkspaceMenu.tsx", 31]],
"origin": [["src/components/WorkspaceMenu.tsx", 34]],
"translation": "Abrir menú de comandos"
},
"cFQEU/": {
@@ -4358,6 +4431,13 @@
"origin": [["src/views/boards/components/TemplateBoards.tsx", 86]],
"translation": "Proyecto personal"
},
"Oi+J+N": {
"message": "Pick a plan to get started. All paid plans include a 14-day free trial.",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 125]],
"translation": "Elige un plan para comenzar. Todos los planes de pago incluyen una prueba gratuita de 14 días."
},
"Iqh0Uv": {
"message": "Planned",
"placeholders": {},
@@ -4445,7 +4525,7 @@
"origin": [
["src/components/DeleteLabelConfirmation.tsx", 26],
["src/components/FeedbackModal.tsx", 41],
["src/components/NewWorkspaceForm.tsx", 159],
["src/components/NewWorkspaceForm.tsx", 123],
["src/views/board/components/BoardDropdown.tsx", 65],
["src/views/board/components/NewCardForm.tsx", 186],
["src/views/board/components/NewListForm.tsx", 79],
@@ -4453,8 +4533,8 @@
["src/views/board/components/NewTemplateForm.tsx", 77],
["src/views/board/components/UpdateBoardSlugForm.tsx", 73],
["src/views/board/components/VisibilityButton.tsx", 57],
["src/views/board/index.tsx", 217],
["src/views/board/index.tsx", 273],
["src/views/board/index.tsx", 218],
["src/views/board/index.tsx", 274],
["src/views/boards/components/ImportBoardsForm.tsx", 243],
["src/views/boards/components/ImportBoardsForm.tsx", 395],
["src/views/card/components/AttachmentThumbnails.tsx", 74],
@@ -4482,6 +4562,8 @@
["src/views/members/components/InviteMemberForm.tsx", 104],
["src/views/members/components/InviteMemberForm.tsx", 241],
["src/views/members/index.tsx", 66],
["src/views/onboarding/workspace-details/index.tsx", 101],
["src/views/onboarding/workspace-details/index.tsx", 150],
["src/views/settings/components/Avatar.tsx", 200],
["src/views/settings/components/DeleteAccountConfirmation.tsx", 40],
["src/views/settings/components/DeleteWorkspaceConfirmation.tsx", 46],
@@ -4489,7 +4571,7 @@
["src/views/settings/components/UpdateWorkspaceDescriptionForm.tsx", 64],
["src/views/settings/components/UpdateWorkspaceNameForm.tsx", 59],
["src/views/settings/components/UpdateWorkspaceUrlForm.tsx", 76],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 42],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 44],
["src/views/settings/PermissionsSettings.tsx", 40]
],
"translation": "Por favor, inténtalo de nuevo más tarde o contacta con atención al cliente."
@@ -4511,7 +4593,7 @@
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 76],
["src/views/board/components/CardContextMoveListModal.tsx", 42],
["src/views/board/index.tsx", 314],
["src/views/board/index.tsx", 315],
["src/views/card/components/Dropdown.tsx", 51],
["src/views/public/board/CardModal.tsx", 45],
["src/views/public/board/index.tsx", 86]
@@ -4519,13 +4601,13 @@
"translation": "Por favor, inténtalo de nuevo."
},
"nYNMZZ": {
"translation": "Posición en la lista (0 = primero, dejar vacío para el final)",
"message": "Position in list (0 = first, leave empty for end)",
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 193]
]
],
"translation": "Posición en la lista (0 = primero, dejar vacío para el final)"
},
"aHCEmh": {
"message": "Pricing",
@@ -4549,7 +4631,7 @@
["src/views/pricing/components/FeatureComparisonTable.tsx", 275],
["src/views/pricing/components/Pricing.tsx", 56],
["src/views/pricing/components/PricingTiers.tsx", 61],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 93]
["src/views/settings/components/UpgradeToProConfirmation.tsx", 95]
],
"translation": "Soporte prioritario por correo electrónico"
},
@@ -4572,6 +4654,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/onboarding/select-plan/index.tsx", 91],
["src/views/pricing/components/FeatureComparisonTable.tsx", 333],
["src/views/pricing/components/PricingTiers.tsx", 70]
],
@@ -4829,7 +4912,8 @@
"origin": [
["src/views/home/components/Footer.tsx", 36],
["src/views/home/components/Header.tsx", 13],
["src/views/home/components/Header.tsx", 28]
["src/views/home/components/Header.tsx", 28],
["src/views/onboarding/workspace-details/index.tsx", 161]
],
"translation": "Hoja de ruta"
},
@@ -4949,13 +5033,13 @@
"translation": "Mira lo que nuestros usuarios dicen sobre Kan"
},
"zYRVNp": {
"translation": "Seleccionar una lista",
"message": "Select a list",
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 131]
]
],
"translation": "Seleccionar una lista"
},
"wgNoIs": {
"message": "Select all",
@@ -5041,6 +5125,13 @@
"origin": [["src/views/card/components/ActivityList.tsx", 142]],
"translation": "estableció la fecha de vencimiento"
},
"JjEJSy": {
"message": "Set up your workspace",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/workspace-details/index.tsx", 179]],
"translation": "Configura tu espacio de trabajo"
},
"Tz0i8g": {
"message": "Settings",
"placeholders": {},
@@ -5121,6 +5212,16 @@
"origin": [["src/views/invite/index.tsx", 154]],
"translation": "Iniciar sesión"
},
"fcWrnU": {
"message": "Sign out",
"placeholders": {},
"comments": [],
"origin": [
["src/views/onboarding/select-plan/index.tsx", 284],
["src/views/onboarding/workspace-details/index.tsx", 362]
],
"translation": "Cerrar sesión"
},
"mErq7F": {
"message": "Sign Up",
"placeholders": {},
@@ -5206,6 +5307,13 @@
"origin": [["src/views/boards/components/TemplateBoards.tsx", 22]],
"translation": "Desarrollo de software"
},
"6sKjjx": {
"message": "Solo",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 76]],
"translation": "Individual"
},
"vnS6Rf": {
"message": "SSO",
"placeholders": {},
@@ -5228,7 +5336,7 @@
"comments": [],
"origin": [
["src/views/members/components/InviteMemberForm.tsx", 359],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 111]
["src/views/settings/components/UpgradeToProConfirmation.tsx", 113]
],
"translation": "Iniciar prueba gratuita de 14 días"
},
@@ -5277,7 +5385,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/settings/components/UpgradeToProConfirmation.tsx", 57]
["src/views/settings/components/UpgradeToProConfirmation.tsx", 59]
],
"translation": "Potencia tu espacio de trabajo por solo $29/mes. Esto es lo que obtendrás:"
},
@@ -5305,6 +5413,13 @@
"origin": [["src/components/UserMenu.tsx", 144]],
"translation": "Sistema"
},
"KM6m8p": {
"message": "Team",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 83]],
"translation": "Equipo"
},
"bff61F": {
"message": "Team Plan",
"placeholders": {},
@@ -5331,8 +5446,8 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/index.tsx", 529],
["src/views/board/index.tsx", 565]
["src/views/board/index.tsx", 530],
["src/views/board/index.tsx", 566]
],
"translation": "Plantilla"
},
@@ -5427,11 +5542,13 @@
"translation": "El tablero ha sido desarchivado."
},
"nKBUeF": {
"translation": "La tarjeta ha sido duplicada.",
"message": "The card has been duplicated.",
"placeholders": {},
"comments": [],
"origin": [["src/views/board/components/CardContextDuplicateModal.tsx", 69]]
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 69]
],
"translation": "La tarjeta ha sido duplicada."
},
"jlB2RY": {
"message": "The current password you entered is incorrect.",
@@ -5555,6 +5672,20 @@
],
"translation": "Los permisos de este miembro se han restablecido a los valores predeterminados de su rol."
},
"HQVm6e": {
"message": "This URL has already been taken",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/workspace-details/index.tsx", 73]],
"translation": "Esta URL ya está en uso"
},
"gKmoow": {
"message": "This URL is reserved",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/workspace-details/index.tsx", 75]],
"translation": "Esta URL está reservada"
},
"OAYToL": {
"message": "This will remove all custom member permissions in this workspace. Members will inherit permissions only from their roles.",
"placeholders": {},
@@ -5589,14 +5720,14 @@
"message": "This workspace URL has already been taken",
"placeholders": {},
"comments": [],
"origin": [["src/components/NewWorkspaceForm.tsx", 288]],
"origin": [["src/components/NewWorkspaceForm.tsx", 252]],
"translation": "Esta URL de espacio de trabajo ya está en uso"
},
"bJtM0P": {
"message": "This workspace URL is reserved",
"placeholders": {},
"comments": [],
"origin": [["src/components/NewWorkspaceForm.tsx", 290]],
"origin": [["src/components/NewWorkspaceForm.tsx", 254]],
"translation": "Esta URL de espacio de trabajo está reservada"
},
"kp6L3T": {
@@ -5616,13 +5747,13 @@
"translation": "Título"
},
"wK4OTM": {
"translation": "Título (opcional)",
"message": "Title (optional)",
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 180]
]
],
"translation": "Título (opcional)"
},
"Se/UIp": {
"message": "To Do",
@@ -5726,7 +5857,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/index.tsx", 312],
["src/views/board/index.tsx", 313],
["src/views/card/components/Dropdown.tsx", 49],
["src/views/public/board/CardModal.tsx", 43],
["src/views/public/board/index.tsx", 84]
@@ -5768,7 +5899,10 @@
"message": "Unable to create workspace",
"placeholders": {},
"comments": [],
"origin": [["src/components/NewWorkspaceForm.tsx", 158]],
"origin": [
["src/components/NewWorkspaceForm.tsx", 122],
["src/views/onboarding/workspace-details/index.tsx", 100]
],
"translation": "No se pudo crear el espacio de trabajo"
},
"WHHLh9": {
@@ -5809,18 +5943,20 @@
"translation": "No se pudo eliminar el comentario"
},
"Oo4E6p": {
"translation": "No se puede duplicar la tarjeta",
"message": "Unable to duplicate card",
"placeholders": {},
"comments": [],
"origin": [["src/views/board/components/CardContextDuplicateModal.tsx", 75]]
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 75]
],
"translation": "No se puede duplicar la tarjeta"
},
"K7k9u3": {
"translation": "No se puede mover la tarjeta",
"message": "Unable to move card",
"placeholders": {},
"comments": [],
"origin": [["src/views/board/components/CardContextMoveListModal.tsx", 41]]
"origin": [["src/views/board/components/CardContextMoveListModal.tsx", 41]],
"translation": "No se puede mover la tarjeta"
},
"8yFGGF": {
"message": "Unable to remove member",
@@ -5854,6 +5990,13 @@
"origin": [["src/components/FeedbackModal.tsx", 40]],
"translation": "No se pudo enviar el comentario"
},
"Q60WUZ": {
"message": "Unable to start checkout",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/workspace-details/index.tsx", 149]],
"translation": "No se pudo iniciar el proceso de pago"
},
"T7Mywq": {
"message": "Unable to update board",
"placeholders": {},
@@ -5880,7 +6023,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/index.tsx", 272],
["src/views/board/index.tsx", 273],
["src/views/card/index.tsx", 231]
],
"translation": "No se pudo actualizar la tarjeta"
@@ -5925,7 +6068,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/index.tsx", 216],
["src/views/board/index.tsx", 217],
["src/views/card/components/ListSelector.tsx", 54]
],
"translation": "No se pudo actualizar la lista"
@@ -6053,14 +6196,21 @@
"placeholders": {},
"comments": [],
"origin": [
["src/components/NewWorkspaceForm.tsx", 333],
["src/components/NewWorkspaceForm.tsx", 297],
["src/views/pricing/components/FeatureComparisonTable.tsx", 84],
["src/views/pricing/components/FeatureComparisonTable.tsx", 85],
["src/views/pricing/components/PricingTiers.tsx", 80],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 66]
["src/views/settings/components/UpgradeToProConfirmation.tsx", 68]
],
"translation": "Miembros ilimitados"
},
"8AwlaR": {
"message": "Unlimited members and a custom workspace username for teams ready to scale.",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 94]],
"translation": "Miembros ilimitados y un nombre de usuario personalizado para el espacio de trabajo para equipos listos para escalar."
},
"Ws+3X+": {
"message": "Unlimited seats and advanced features for growing teams.",
"placeholders": {},
@@ -6141,7 +6291,7 @@
"comments": [],
"origin": [
["src/components/SideNavigation.tsx", 240],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 53],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 55],
["src/views/settings/WorkspaceSettings.tsx", 118]
],
"translation": "Actualizar a Pro"
@@ -6150,7 +6300,10 @@
"message": "Upgrade to Pro ($29/month)",
"placeholders": {},
"comments": [],
"origin": [["src/components/NewWorkspaceForm.tsx", 373]],
"origin": [
["src/components/NewWorkspaceForm.tsx", 337],
["src/views/onboarding/workspace-details/index.tsx", 243]
],
"translation": "Actualizar a Pro ($29/mes)"
},
"b3Thhd": {
@@ -6434,7 +6587,7 @@
"comments": [],
"origin": [
["src/components/SettingsLayout.tsx", 47],
["src/views/board/index.tsx", 529],
["src/views/board/index.tsx", 530],
["src/views/boards/index.tsx", 48],
["src/views/members/index.tsx", 258],
["src/views/public/board/index.tsx", 125],
@@ -6447,7 +6600,8 @@
"placeholders": {},
"comments": [],
"origin": [["src/components/NewWorkspaceForm.tsx", 147]],
"translation": "Espacio de trabajo creado correctamente. Puedes actualizar más tarde en la configuración."
"translation": "Espacio de trabajo creado correctamente. Puedes actualizar más tarde en la configuración.",
"obsolete": true
},
"UlhdTP": {
"message": "Workspace deleted",
@@ -6462,7 +6616,10 @@
"message": "Workspace description",
"placeholders": {},
"comments": [],
"origin": [["src/views/settings/WorkspaceSettings.tsx", 82]],
"origin": [
["src/views/onboarding/workspace-details/index.tsx", 253],
["src/views/settings/WorkspaceSettings.tsx", 82]
],
"translation": "Descripción del espacio de trabajo"
},
"Ax/hYa": {
@@ -6508,7 +6665,8 @@
"placeholders": {},
"comments": [],
"origin": [
["src/components/NewWorkspaceForm.tsx", 263],
["src/components/NewWorkspaceForm.tsx", 227],
["src/views/onboarding/workspace-details/index.tsx", 188],
["src/views/settings/WorkspaceSettings.tsx", 63]
],
"translation": "Nombre del espacio de trabajo"
@@ -6582,7 +6740,7 @@
"message": "workspace-url",
"placeholders": {},
"comments": [],
"origin": [["src/components/NewWorkspaceForm.tsx", 277]],
"origin": [["src/components/NewWorkspaceForm.tsx", 241]],
"translation": "workspace-url"
},
"4kJRen": {
@@ -6616,6 +6774,13 @@
"origin": [["src/views/settings/AccountSettings.tsx", 91]],
"translation": "Estás a punto de cambiar tu contraseña."
},
"3WXdoZ": {
"message": "You can always change these later in settings.",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/workspace-details/index.tsx", 182]],
"translation": "Siempre puedes cambiar esto más tarde en la configuración."
},
"aelko+": {
"message": "You can get a custom workspace URL, like <0>kan.bn/kan</0>, by going into your <1>workspace settings</1> and purchasing a pro workspace subscription. All subscriptions help fund the development of the project!",
"placeholders": {},
@@ -6645,8 +6810,8 @@
["src/views/board/components/List.tsx", 117],
["src/views/board/components/UpdateBoardSlugButton.tsx", 58],
["src/views/board/components/VisibilityButton.tsx", 72],
["src/views/board/index.tsx", 603],
["src/views/board/index.tsx", 661],
["src/views/board/index.tsx", 604],
["src/views/board/index.tsx", 662],
["src/views/boards/components/BoardsList.tsx", 71],
["src/views/boards/index.tsx", 59],
["src/views/boards/index.tsx", 80]
@@ -6711,6 +6876,13 @@
],
"translation": "Tu cuenta ha sido eliminada."
},
"c4nMcR": {
"message": "Your avatar",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 229]],
"translation": "Tu avatar"
},
"evg7+A": {
"message": "Your boards have been imported.",
"placeholders": {},
@@ -6797,6 +6969,20 @@
"origin": [["src/pages/unsubscribe/index.tsx", 33]],
"translation": "Tu enlace de cancelación de suscripción no tiene un token. Por favor, abre el último correo electrónico e inténtalo de nuevo."
},
"GRAGsB": {
"message": "Your workspace",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/workspace-details/index.tsx", 322]],
"translation": "Tu espacio de trabajo"
},
"j0o6ml": {
"message": "Your workspace description",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/workspace-details/index.tsx", 325]],
"translation": "Descripción de tu espacio de trabajo"
},
"GnSSGm": {
"message": "Your workspace description has been updated.",
"placeholders": {},
@@ -6833,6 +7019,16 @@
],
"translation": "El slug de tu espacio de trabajo ha sido actualizado."
},
"OTxjpR": {
"message": "your-workspace",
"placeholders": {},
"comments": [],
"origin": [
["src/views/onboarding/workspace-details/index.tsx", 197],
["src/views/onboarding/workspace-details/index.tsx", 198]
],
"translation": "tu-espacio-de-trabajo"
},
"4DOCMI": {
"message": "YouTube URL",
"placeholders": {},

File diff suppressed because one or more lines are too long

View File

@@ -71,7 +71,7 @@
"0": ["isTemplate ? \"Template\" : \"Board\""]
},
"comments": [],
"origin": [["src/views/board/index.tsx", 556]],
"origin": [["src/views/board/index.tsx", 557]],
"translation": "{0} introuvable"
},
"0xWkkH": {
@@ -239,11 +239,11 @@
"translation": "Journaux d'activité"
},
"UGCIzB": {
"translation": "Ajouter / modifier l'étiquette",
"message": "Add / edit label",
"placeholders": {},
"comments": [],
"origin": [["src/views/board/components/CardContextMenu.tsx", 50]]
"origin": [["src/views/board/components/CardContextMenu.tsx", 50]],
"translation": "Ajouter / modifier l'étiquette"
},
"B3xxao": {
"message": "Add a card",
@@ -556,6 +556,13 @@
],
"translation": "Une erreur inattendue s'est produite. Veuillez réessayer ultérieurement."
},
"YkfDoz": {
"message": "Annual",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 63]],
"translation": "Annuel"
},
"3bqt9U": {
"message": "Anyone with this link can join your workspace",
"placeholders": {},
@@ -756,6 +763,13 @@
"origin": [["src/views/boards/components/TemplateBoards.tsx", 59]],
"translation": "En attente du client"
},
"iH8pgl": {
"message": "Back",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/workspace-details/index.tsx", 275]],
"translation": "Retour"
},
"KNKCTb": {
"message": "Backlog",
"placeholders": {},
@@ -798,6 +812,13 @@
"origin": [["src/views/pricing/components/PricingTiers.tsx", 53]],
"translation": "Idéal pour les petites équipes en croissance qui ont besoin de collaboration"
},
"zt/6cS": {
"message": "Best for small teams who want to collaborate and move faster together.",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 86]],
"translation": "Idéal pour les petites équipes qui souhaitent collaborer et avancer plus rapidement ensemble."
},
"qaS+1/": {
"message": "Best for teams that want to scale without limits",
"placeholders": {},
@@ -849,7 +870,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/index.tsx", 529],
["src/views/board/index.tsx", 530],
["src/views/card/index.tsx", 317],
["src/views/public/board/index.tsx", 125]
],
@@ -860,8 +881,8 @@
"placeholders": {},
"comments": [],
"origin": [
["src/components/NewWorkspaceForm.tsx", 350],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 83]
["src/components/NewWorkspaceForm.tsx", 314],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 85]
],
"translation": "Analytiques du tableau"
},
@@ -1249,6 +1270,7 @@
["src/views/card/components/DeleteChecklistConfirmation.tsx", 64],
["src/views/card/components/DeleteCommentConfirmation.tsx", 77],
["src/views/members/components/DeleteMemberConfirmation.tsx", 55],
["src/views/onboarding/select-plan/index.tsx", 209],
["src/views/settings/components/Avatar.tsx", 287],
["src/views/settings/components/ChangePasswordConfirmation.tsx", 168],
[
@@ -1258,7 +1280,7 @@
["src/views/settings/components/DeleteAccountConfirmation.tsx", 88],
["src/views/settings/components/DeleteWebhookConfirmation.tsx", 66],
["src/views/settings/components/DeleteWorkspaceConfirmation.tsx", 98],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 106]
["src/views/settings/components/UpgradeToProConfirmation.tsx", 108]
],
"translation": "Annuler"
},
@@ -1270,11 +1292,13 @@
"translation": "Carte"
},
"sU2uWc": {
"translation": "Carte dupliquée",
"message": "Card duplicated",
"placeholders": {},
"comments": [],
"origin": [["src/views/board/components/CardContextDuplicateModal.tsx", 67]]
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 67]
],
"translation": "Carte dupliquée"
},
"fEY2vP": {
"message": "Card not found",
@@ -1298,7 +1322,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/index.tsx", 307],
["src/views/board/index.tsx", 308],
["src/views/card/components/Dropdown.tsx", 44],
["src/views/public/board/CardModal.tsx", 38]
],
@@ -1376,6 +1400,13 @@
],
"translation": "Checklists"
},
"zMquA7": {
"message": "Choose a plan",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 122]],
"translation": "Choisir un forfait"
},
"VHS0aJ": {
"message": "Clear all custom permissions?",
"placeholders": {},
@@ -1466,9 +1497,9 @@
"placeholders": {},
"comments": [],
"origin": [
["src/components/NewWorkspaceForm.tsx", 353],
["src/components/NewWorkspaceForm.tsx", 317],
["src/views/home/components/Features.tsx", 67],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 86]
["src/views/settings/components/UpgradeToProConfirmation.tsx", 88]
],
"translation": "Bientôt disponible"
},
@@ -1633,6 +1664,16 @@
"origin": [["src/views/boards/components/TemplateBoards.tsx", 40]],
"translation": "Création de contenu"
},
"xGVfLh": {
"message": "Continue",
"placeholders": {},
"comments": [],
"origin": [
["src/views/onboarding/select-plan/index.tsx", 212],
["src/views/onboarding/workspace-details/index.tsx", 291]
],
"translation": "Continuer"
},
"J2Wbjt": {
"message": "Continue with ",
"placeholders": {},
@@ -1678,38 +1719,38 @@
"translation": "Copier le lien de la carte"
},
"0utuU6": {
"translation": "Copier les listes de contrôle",
"message": "Copy checklists",
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 257]
]
],
"translation": "Copier les listes de contrôle"
},
"fDQ7hA": {
"translation": "Copier les étiquettes",
"message": "Copy labels",
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 221]
]
],
"translation": "Copier les étiquettes"
},
"1bJKhj": {
"translation": "Copier le lien vers la carte",
"message": "Copy link to card",
"placeholders": {},
"comments": [],
"origin": [["src/views/board/components/CardContextMenu.tsx", 62]]
"origin": [["src/views/board/components/CardContextMenu.tsx", 62]],
"translation": "Copier le lien vers la carte"
},
"uvH2xS": {
"translation": "Copier les membres",
"message": "Copy members",
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 239]
]
],
"translation": "Copier les membres"
},
"9PaIxv": {
"message": "Core features",
@@ -1816,8 +1857,8 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/index.tsx", 91],
["src/views/board/index.tsx", 670]
["src/views/board/index.tsx", 92],
["src/views/board/index.tsx", 671]
],
"translation": "Créer une nouvelle liste"
},
@@ -1840,8 +1881,8 @@
"placeholders": {},
"comments": [],
"origin": [
["src/components/NewWorkspaceForm.tsx", 388],
["src/components/WorkspaceMenu.tsx", 153]
["src/components/NewWorkspaceForm.tsx", 352],
["src/components/WorkspaceMenu.tsx", 160]
],
"translation": "Créer un espace de travail"
},
@@ -1928,7 +1969,7 @@
"message": "Custom URLs require upgrading to a Pro plan",
"placeholders": {},
"comments": [],
"origin": [["src/components/NewWorkspaceForm.tsx", 319]],
"origin": [["src/components/NewWorkspaceForm.tsx", 283]],
"translation": "Les URL personnalisées nécessitent une mise à niveau vers un forfait Pro"
},
"7RpHg/": {
@@ -1941,13 +1982,20 @@
],
"translation": "Nom d'utilisateur personnalisé"
},
"ZDPJBc": {
"message": "Custom usernames require upgrading to a Pro plan",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/workspace-details/index.tsx", 220]],
"translation": "Les noms d'utilisateur personnalisés nécessitent une mise à niveau vers un forfait Pro"
},
"j9IZZ0": {
"message": "Custom workspace URL",
"placeholders": {},
"comments": [],
"origin": [
["src/components/NewWorkspaceForm.tsx", 343],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 76]
["src/components/NewWorkspaceForm.tsx", 307],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 78]
],
"translation": "URL d'espace de travail personnalisée"
},
@@ -2283,32 +2331,32 @@
"translation": "Échéance demain"
},
"euc6Ns": {
"translation": "Dupliquer",
"message": "Duplicate",
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 279]
]
],
"translation": "Dupliquer"
},
"BTDPLo": {
"translation": "Dupliquer la carte",
"message": "Duplicate card",
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 111],
["src/views/board/components/CardContextMenu.tsx", 68]
]
],
"translation": "Dupliquer la carte"
},
"06EQqT": {
"translation": "Duplication en cours…",
"message": "Duplicating…",
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 279]
]
],
"translation": "Duplication en cours…"
},
"ePK91l": {
"message": "Edit",
@@ -2423,13 +2471,20 @@
"translation": "Visibilité de l'e-mail"
},
"bFREhu": {
"translation": "Fin de la liste",
"message": "End of list",
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 200]
]
],
"translation": "Fin de la liste"
},
"SUXBxp": {
"message": "Engineering",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/workspace-details/index.tsx", 161]],
"translation": "Ingénierie"
},
"0+ewPp": {
"message": "Enhancement",
@@ -2644,7 +2699,7 @@
"comments": [],
"origin": [
["src/views/members/components/InviteMemberForm.tsx", 240],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 41]
["src/views/settings/components/UpgradeToProConfirmation.tsx", 43]
],
"translation": "Erreur lors de la mise à niveau de l'abonnement"
},
@@ -2653,7 +2708,8 @@
"placeholders": {},
"comments": [],
"origin": [["src/components/NewWorkspaceForm.tsx", 146]],
"translation": "Erreur lors de la mise à niveau vers Pro"
"translation": "Erreur lors de la mise à niveau vers Pro",
"obsolete": true
},
"CYWHT+": {
"message": "Error uploading profile image",
@@ -2887,6 +2943,8 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/onboarding/select-plan/index.tsx", 77],
["src/views/onboarding/select-plan/index.tsx", 78],
["src/views/pricing/components/FeatureComparisonTable.tsx", 331],
["src/views/pricing/components/Pricing.tsx", 32],
["src/views/pricing/components/Pricing.tsx", 32],
@@ -2987,7 +3045,7 @@
"message": "Get started by creating a new list",
"placeholders": {},
"comments": [],
"origin": [["src/views/board/index.tsx", 655]],
"origin": [["src/views/board/index.tsx", 656]],
"translation": "Commencez en créant une nouvelle liste"
},
"oW13KZ": {
@@ -3097,6 +3155,13 @@
"origin": [["src/components/SideNavigation.tsx", 119]],
"translation": "Aller aux modèles"
},
"SUvm1Y": {
"message": "Good for individuals starting out who just need the essentials.",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 79]],
"translation": "Idéal pour les particuliers qui débutent et qui ont simplement besoin de l'essentiel."
},
"cdyS7J": {
"message": "Google SSO",
"placeholders": {},
@@ -3521,9 +3586,9 @@
"placeholders": {},
"comments": [],
"origin": [
["src/components/NewWorkspaceForm.tsx", 336],
["src/components/NewWorkspaceForm.tsx", 300],
["src/views/pricing/components/PricingTiers.tsx", 159],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 69]
["src/views/settings/components/UpgradeToProConfirmation.tsx", 71]
],
"translation": "Offre de lancement"
},
@@ -3591,7 +3656,7 @@
"comments": [],
"origin": [
["src/views/board/components/UpdateBoardSlugButton.tsx", 80],
["src/views/board/index.tsx", 305],
["src/views/board/index.tsx", 306],
["src/views/card/components/Dropdown.tsx", 42],
["src/views/public/board/CardModal.tsx", 36],
["src/views/public/board/index.tsx", 77]
@@ -3695,14 +3760,14 @@
"translation": "Créer un modèle"
},
"hB02vO": {
"translation": "Gérer les membres",
"message": "Manage members",
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/components/CardContextMembersModal.tsx", 51],
["src/views/board/components/CardContextMenu.tsx", 38]
]
],
"translation": "Gérer les membres"
},
"IDvohQ": {
"message": "marked a checklist item as incomplete",
@@ -3720,6 +3785,13 @@
"origin": [["src/views/card/components/ActivityList.tsx", 258]],
"translation": "a marqué l'élément de checklist <0>{0}</0> comme incomplet"
},
"vo2a+a": {
"message": "Marketing",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/workspace-details/index.tsx", 161]],
"translation": "Marketing"
},
"agPptk": {
"message": "Medium",
"placeholders": {},
@@ -3791,6 +3863,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/onboarding/select-plan/index.tsx", 62],
["src/views/pricing/components/Pricing.tsx", 14],
["src/views/pricing/index.tsx", 20]
],
@@ -3804,18 +3877,18 @@
"translation": "facturation mensuelle"
},
"51UCsN": {
"translation": "Déplacer vers une autre liste",
"message": "Move to another list",
"placeholders": {},
"comments": [],
"origin": [["src/views/board/components/CardContextMenu.tsx", 44]]
"origin": [["src/views/board/components/CardContextMenu.tsx", 44]],
"translation": "Déplacer vers une autre liste"
},
"J4+OTA": {
"translation": "Déplacer vers la liste",
"message": "Move to list",
"placeholders": {},
"comments": [],
"origin": [["src/views/board/components/CardContextMoveListModal.tsx", 70]]
"origin": [["src/views/board/components/CardContextMoveListModal.tsx", 70]],
"translation": "Déplacer vers la liste"
},
"BOqTi5": {
"message": "moved the card from <0>{0}</0> to<1>{1}</1>",
@@ -3928,7 +4001,7 @@
"comments": [],
"origin": [
["src/views/board/components/NewListForm.tsx", 113],
["src/views/board/index.tsx", 619]
["src/views/board/index.tsx", 620]
],
"translation": "Nouvelle liste"
},
@@ -3975,7 +4048,7 @@
"message": "New workspace",
"placeholders": {},
"comments": [],
"origin": [["src/components/NewWorkspaceForm.tsx", 244]],
"origin": [["src/components/NewWorkspaceForm.tsx", 208]],
"translation": "Nouveau workspace"
},
"5ACX4z": {
@@ -4054,14 +4127,14 @@
"message": "No lists",
"placeholders": {},
"comments": [],
"origin": [["src/views/board/index.tsx", 651]],
"origin": [["src/views/board/index.tsx", 652]],
"translation": "Aucune liste"
},
"fvLNDy": {
"message": "No lists have been created yet",
"placeholders": {},
"comments": [],
"origin": [["src/views/board/index.tsx", 656]],
"origin": [["src/views/board/index.tsx", 657]],
"translation": "Aucune liste n'a encore été créée"
},
"i30J2U": {
@@ -4142,7 +4215,7 @@
"message": "Open command menu",
"placeholders": {},
"comments": [],
"origin": [["src/components/WorkspaceMenu.tsx", 31]],
"origin": [["src/components/WorkspaceMenu.tsx", 34]],
"translation": "Ouvrir le menu de commandes"
},
"cFQEU/": {
@@ -4358,6 +4431,13 @@
"origin": [["src/views/boards/components/TemplateBoards.tsx", 86]],
"translation": "Projet personnel"
},
"Oi+J+N": {
"message": "Pick a plan to get started. All paid plans include a 14-day free trial.",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 125]],
"translation": "Choisissez un forfait pour commencer. Tous les forfaits payants incluent un essai gratuit de 14 jours."
},
"Iqh0Uv": {
"message": "Planned",
"placeholders": {},
@@ -4445,7 +4525,7 @@
"origin": [
["src/components/DeleteLabelConfirmation.tsx", 26],
["src/components/FeedbackModal.tsx", 41],
["src/components/NewWorkspaceForm.tsx", 159],
["src/components/NewWorkspaceForm.tsx", 123],
["src/views/board/components/BoardDropdown.tsx", 65],
["src/views/board/components/NewCardForm.tsx", 186],
["src/views/board/components/NewListForm.tsx", 79],
@@ -4453,8 +4533,8 @@
["src/views/board/components/NewTemplateForm.tsx", 77],
["src/views/board/components/UpdateBoardSlugForm.tsx", 73],
["src/views/board/components/VisibilityButton.tsx", 57],
["src/views/board/index.tsx", 217],
["src/views/board/index.tsx", 273],
["src/views/board/index.tsx", 218],
["src/views/board/index.tsx", 274],
["src/views/boards/components/ImportBoardsForm.tsx", 243],
["src/views/boards/components/ImportBoardsForm.tsx", 395],
["src/views/card/components/AttachmentThumbnails.tsx", 74],
@@ -4482,6 +4562,8 @@
["src/views/members/components/InviteMemberForm.tsx", 104],
["src/views/members/components/InviteMemberForm.tsx", 241],
["src/views/members/index.tsx", 66],
["src/views/onboarding/workspace-details/index.tsx", 101],
["src/views/onboarding/workspace-details/index.tsx", 150],
["src/views/settings/components/Avatar.tsx", 200],
["src/views/settings/components/DeleteAccountConfirmation.tsx", 40],
["src/views/settings/components/DeleteWorkspaceConfirmation.tsx", 46],
@@ -4489,7 +4571,7 @@
["src/views/settings/components/UpdateWorkspaceDescriptionForm.tsx", 64],
["src/views/settings/components/UpdateWorkspaceNameForm.tsx", 59],
["src/views/settings/components/UpdateWorkspaceUrlForm.tsx", 76],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 42],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 44],
["src/views/settings/PermissionsSettings.tsx", 40]
],
"translation": "Veuillez réessayer plus tard ou contacter le support client."
@@ -4511,7 +4593,7 @@
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 76],
["src/views/board/components/CardContextMoveListModal.tsx", 42],
["src/views/board/index.tsx", 314],
["src/views/board/index.tsx", 315],
["src/views/card/components/Dropdown.tsx", 51],
["src/views/public/board/CardModal.tsx", 45],
["src/views/public/board/index.tsx", 86]
@@ -4519,13 +4601,13 @@
"translation": "Veuillez réessayer."
},
"nYNMZZ": {
"translation": "Position dans la liste (0 = premier, laisser vide pour la fin)",
"message": "Position in list (0 = first, leave empty for end)",
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 193]
]
],
"translation": "Position dans la liste (0 = premier, laisser vide pour la fin)"
},
"aHCEmh": {
"message": "Pricing",
@@ -4549,7 +4631,7 @@
["src/views/pricing/components/FeatureComparisonTable.tsx", 275],
["src/views/pricing/components/Pricing.tsx", 56],
["src/views/pricing/components/PricingTiers.tsx", 61],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 93]
["src/views/settings/components/UpgradeToProConfirmation.tsx", 95]
],
"translation": "Support e-mail prioritaire"
},
@@ -4572,6 +4654,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/onboarding/select-plan/index.tsx", 91],
["src/views/pricing/components/FeatureComparisonTable.tsx", 333],
["src/views/pricing/components/PricingTiers.tsx", 70]
],
@@ -4829,7 +4912,8 @@
"origin": [
["src/views/home/components/Footer.tsx", 36],
["src/views/home/components/Header.tsx", 13],
["src/views/home/components/Header.tsx", 28]
["src/views/home/components/Header.tsx", 28],
["src/views/onboarding/workspace-details/index.tsx", 161]
],
"translation": "Roadmap"
},
@@ -4949,13 +5033,13 @@
"translation": "Découvrez ce que nos utilisateurs disent de Kan"
},
"zYRVNp": {
"translation": "Sélectionner une liste",
"message": "Select a list",
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 131]
]
],
"translation": "Sélectionner une liste"
},
"wgNoIs": {
"message": "Select all",
@@ -5041,6 +5125,13 @@
"origin": [["src/views/card/components/ActivityList.tsx", 142]],
"translation": "a défini la date d'échéance"
},
"JjEJSy": {
"message": "Set up your workspace",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/workspace-details/index.tsx", 179]],
"translation": "Configurer votre espace de travail"
},
"Tz0i8g": {
"message": "Settings",
"placeholders": {},
@@ -5121,6 +5212,16 @@
"origin": [["src/views/invite/index.tsx", 154]],
"translation": "Se connecter"
},
"fcWrnU": {
"message": "Sign out",
"placeholders": {},
"comments": [],
"origin": [
["src/views/onboarding/select-plan/index.tsx", 284],
["src/views/onboarding/workspace-details/index.tsx", 362]
],
"translation": "Se déconnecter"
},
"mErq7F": {
"message": "Sign Up",
"placeholders": {},
@@ -5206,6 +5307,13 @@
"origin": [["src/views/boards/components/TemplateBoards.tsx", 22]],
"translation": "Développement logiciel"
},
"6sKjjx": {
"message": "Solo",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 76]],
"translation": "Solo"
},
"vnS6Rf": {
"message": "SSO",
"placeholders": {},
@@ -5228,7 +5336,7 @@
"comments": [],
"origin": [
["src/views/members/components/InviteMemberForm.tsx", 359],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 111]
["src/views/settings/components/UpgradeToProConfirmation.tsx", 113]
],
"translation": "Commencer l'essai gratuit de 14 jours"
},
@@ -5277,7 +5385,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/settings/components/UpgradeToProConfirmation.tsx", 57]
["src/views/settings/components/UpgradeToProConfirmation.tsx", 59]
],
"translation": "Boostez votre espace de travail pour seulement 29 $/mois. Voici ce que vous obtiendrez :"
},
@@ -5305,6 +5413,13 @@
"origin": [["src/components/UserMenu.tsx", 144]],
"translation": "Système"
},
"KM6m8p": {
"message": "Team",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 83]],
"translation": "Équipe"
},
"bff61F": {
"message": "Team Plan",
"placeholders": {},
@@ -5331,8 +5446,8 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/index.tsx", 529],
["src/views/board/index.tsx", 565]
["src/views/board/index.tsx", 530],
["src/views/board/index.tsx", 566]
],
"translation": "Modèle"
},
@@ -5427,11 +5542,13 @@
"translation": "Le tableau a été désarchivé."
},
"nKBUeF": {
"translation": "La carte a été dupliquée.",
"message": "The card has been duplicated.",
"placeholders": {},
"comments": [],
"origin": [["src/views/board/components/CardContextDuplicateModal.tsx", 69]]
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 69]
],
"translation": "La carte a été dupliquée."
},
"jlB2RY": {
"message": "The current password you entered is incorrect.",
@@ -5555,6 +5672,20 @@
],
"translation": "Les permissions de ce membre ont été réinitialisées aux valeurs par défaut de son rôle."
},
"HQVm6e": {
"message": "This URL has already been taken",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/workspace-details/index.tsx", 73]],
"translation": "Cette URL est déjà prise"
},
"gKmoow": {
"message": "This URL is reserved",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/workspace-details/index.tsx", 75]],
"translation": "Cette URL est réservée"
},
"OAYToL": {
"message": "This will remove all custom member permissions in this workspace. Members will inherit permissions only from their roles.",
"placeholders": {},
@@ -5589,14 +5720,14 @@
"message": "This workspace URL has already been taken",
"placeholders": {},
"comments": [],
"origin": [["src/components/NewWorkspaceForm.tsx", 288]],
"origin": [["src/components/NewWorkspaceForm.tsx", 252]],
"translation": "Cette URL d'espace de travail est déjà utilisée"
},
"bJtM0P": {
"message": "This workspace URL is reserved",
"placeholders": {},
"comments": [],
"origin": [["src/components/NewWorkspaceForm.tsx", 290]],
"origin": [["src/components/NewWorkspaceForm.tsx", 254]],
"translation": "Cette URL d'espace de travail est réservée"
},
"kp6L3T": {
@@ -5616,13 +5747,13 @@
"translation": "Titre"
},
"wK4OTM": {
"translation": "Titre (facultatif)",
"message": "Title (optional)",
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 180]
]
],
"translation": "Titre (facultatif)"
},
"Se/UIp": {
"message": "To Do",
@@ -5726,7 +5857,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/index.tsx", 312],
["src/views/board/index.tsx", 313],
["src/views/card/components/Dropdown.tsx", 49],
["src/views/public/board/CardModal.tsx", 43],
["src/views/public/board/index.tsx", 84]
@@ -5768,7 +5899,10 @@
"message": "Unable to create workspace",
"placeholders": {},
"comments": [],
"origin": [["src/components/NewWorkspaceForm.tsx", 158]],
"origin": [
["src/components/NewWorkspaceForm.tsx", 122],
["src/views/onboarding/workspace-details/index.tsx", 100]
],
"translation": "Impossible de créer l'espace de travail"
},
"WHHLh9": {
@@ -5809,18 +5943,20 @@
"translation": "Impossible de supprimer le commentaire"
},
"Oo4E6p": {
"translation": "Impossible de dupliquer la carte",
"message": "Unable to duplicate card",
"placeholders": {},
"comments": [],
"origin": [["src/views/board/components/CardContextDuplicateModal.tsx", 75]]
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 75]
],
"translation": "Impossible de dupliquer la carte"
},
"K7k9u3": {
"translation": "Impossible de déplacer la carte",
"message": "Unable to move card",
"placeholders": {},
"comments": [],
"origin": [["src/views/board/components/CardContextMoveListModal.tsx", 41]]
"origin": [["src/views/board/components/CardContextMoveListModal.tsx", 41]],
"translation": "Impossible de déplacer la carte"
},
"8yFGGF": {
"message": "Unable to remove member",
@@ -5854,6 +5990,13 @@
"origin": [["src/components/FeedbackModal.tsx", 40]],
"translation": "Impossible d'envoyer le feedback"
},
"Q60WUZ": {
"message": "Unable to start checkout",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/workspace-details/index.tsx", 149]],
"translation": "Impossible de démarrer le paiement"
},
"T7Mywq": {
"message": "Unable to update board",
"placeholders": {},
@@ -5880,7 +6023,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/index.tsx", 272],
["src/views/board/index.tsx", 273],
["src/views/card/index.tsx", 231]
],
"translation": "Impossible de mettre à jour la carte"
@@ -5925,7 +6068,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/index.tsx", 216],
["src/views/board/index.tsx", 217],
["src/views/card/components/ListSelector.tsx", 54]
],
"translation": "Impossible de mettre à jour la liste"
@@ -6053,14 +6196,21 @@
"placeholders": {},
"comments": [],
"origin": [
["src/components/NewWorkspaceForm.tsx", 333],
["src/components/NewWorkspaceForm.tsx", 297],
["src/views/pricing/components/FeatureComparisonTable.tsx", 84],
["src/views/pricing/components/FeatureComparisonTable.tsx", 85],
["src/views/pricing/components/PricingTiers.tsx", 80],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 66]
["src/views/settings/components/UpgradeToProConfirmation.tsx", 68]
],
"translation": "Membres illimités"
},
"8AwlaR": {
"message": "Unlimited members and a custom workspace username for teams ready to scale.",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 94]],
"translation": "Membres illimités et un nom d'utilisateur d'espace de travail personnalisé pour les équipes prêtes à évoluer."
},
"Ws+3X+": {
"message": "Unlimited seats and advanced features for growing teams.",
"placeholders": {},
@@ -6141,7 +6291,7 @@
"comments": [],
"origin": [
["src/components/SideNavigation.tsx", 240],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 53],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 55],
["src/views/settings/WorkspaceSettings.tsx", 118]
],
"translation": "Passer à Pro"
@@ -6150,7 +6300,10 @@
"message": "Upgrade to Pro ($29/month)",
"placeholders": {},
"comments": [],
"origin": [["src/components/NewWorkspaceForm.tsx", 373]],
"origin": [
["src/components/NewWorkspaceForm.tsx", 337],
["src/views/onboarding/workspace-details/index.tsx", 243]
],
"translation": "Passer à Pro (29 $/mois)"
},
"b3Thhd": {
@@ -6434,7 +6587,7 @@
"comments": [],
"origin": [
["src/components/SettingsLayout.tsx", 47],
["src/views/board/index.tsx", 529],
["src/views/board/index.tsx", 530],
["src/views/boards/index.tsx", 48],
["src/views/members/index.tsx", 258],
["src/views/public/board/index.tsx", 125],
@@ -6447,7 +6600,8 @@
"placeholders": {},
"comments": [],
"origin": [["src/components/NewWorkspaceForm.tsx", 147]],
"translation": "Espace de travail créé avec succès. Vous pourrez effectuer une mise à niveau ultérieurement dans les paramètres."
"translation": "Espace de travail créé avec succès. Vous pourrez effectuer une mise à niveau ultérieurement dans les paramètres.",
"obsolete": true
},
"UlhdTP": {
"message": "Workspace deleted",
@@ -6462,7 +6616,10 @@
"message": "Workspace description",
"placeholders": {},
"comments": [],
"origin": [["src/views/settings/WorkspaceSettings.tsx", 82]],
"origin": [
["src/views/onboarding/workspace-details/index.tsx", 253],
["src/views/settings/WorkspaceSettings.tsx", 82]
],
"translation": "Description de l'espace de travail"
},
"Ax/hYa": {
@@ -6508,7 +6665,8 @@
"placeholders": {},
"comments": [],
"origin": [
["src/components/NewWorkspaceForm.tsx", 263],
["src/components/NewWorkspaceForm.tsx", 227],
["src/views/onboarding/workspace-details/index.tsx", 188],
["src/views/settings/WorkspaceSettings.tsx", 63]
],
"translation": "Nom de l'espace de travail"
@@ -6582,7 +6740,7 @@
"message": "workspace-url",
"placeholders": {},
"comments": [],
"origin": [["src/components/NewWorkspaceForm.tsx", 277]],
"origin": [["src/components/NewWorkspaceForm.tsx", 241]],
"translation": "workspace-url"
},
"4kJRen": {
@@ -6616,6 +6774,13 @@
"origin": [["src/views/settings/AccountSettings.tsx", 91]],
"translation": "Vous êtes sur le point de modifier votre mot de passe."
},
"3WXdoZ": {
"message": "You can always change these later in settings.",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/workspace-details/index.tsx", 182]],
"translation": "Vous pourrez toujours modifier ces paramètres plus tard dans les réglages."
},
"aelko+": {
"message": "You can get a custom workspace URL, like <0>kan.bn/kan</0>, by going into your <1>workspace settings</1> and purchasing a pro workspace subscription. All subscriptions help fund the development of the project!",
"placeholders": {},
@@ -6645,8 +6810,8 @@
["src/views/board/components/List.tsx", 117],
["src/views/board/components/UpdateBoardSlugButton.tsx", 58],
["src/views/board/components/VisibilityButton.tsx", 72],
["src/views/board/index.tsx", 603],
["src/views/board/index.tsx", 661],
["src/views/board/index.tsx", 604],
["src/views/board/index.tsx", 662],
["src/views/boards/components/BoardsList.tsx", 71],
["src/views/boards/index.tsx", 59],
["src/views/boards/index.tsx", 80]
@@ -6711,6 +6876,13 @@
],
"translation": "Votre compte a été supprimé."
},
"c4nMcR": {
"message": "Your avatar",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 229]],
"translation": "Votre avatar"
},
"evg7+A": {
"message": "Your boards have been imported.",
"placeholders": {},
@@ -6797,6 +6969,20 @@
"origin": [["src/pages/unsubscribe/index.tsx", 33]],
"translation": "Votre lien de désinscription ne contient pas de jeton. Veuillez ouvrir le dernier e-mail et réessayer."
},
"GRAGsB": {
"message": "Your workspace",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/workspace-details/index.tsx", 322]],
"translation": "Votre espace de travail"
},
"j0o6ml": {
"message": "Your workspace description",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/workspace-details/index.tsx", 325]],
"translation": "La description de votre espace de travail"
},
"GnSSGm": {
"message": "Your workspace description has been updated.",
"placeholders": {},
@@ -6833,6 +7019,16 @@
],
"translation": "L'identifiant de votre espace de travail a été mis à jour."
},
"OTxjpR": {
"message": "your-workspace",
"placeholders": {},
"comments": [],
"origin": [
["src/views/onboarding/workspace-details/index.tsx", 197],
["src/views/onboarding/workspace-details/index.tsx", 198]
],
"translation": "votre-espace-de-travail"
},
"4DOCMI": {
"message": "YouTube URL",
"placeholders": {},

File diff suppressed because one or more lines are too long

View File

@@ -71,7 +71,7 @@
"0": ["isTemplate ? \"Template\" : \"Board\""]
},
"comments": [],
"origin": [["src/views/board/index.tsx", 556]],
"origin": [["src/views/board/index.tsx", 557]],
"translation": "{0} non trovato"
},
"0xWkkH": {
@@ -239,11 +239,11 @@
"translation": "Registri attività"
},
"UGCIzB": {
"translation": "Aggiungi / modifica etichetta",
"message": "Add / edit label",
"placeholders": {},
"comments": [],
"origin": [["src/views/board/components/CardContextMenu.tsx", 50]]
"origin": [["src/views/board/components/CardContextMenu.tsx", 50]],
"translation": "Aggiungi / modifica etichetta"
},
"B3xxao": {
"message": "Add a card",
@@ -556,6 +556,13 @@
],
"translation": "Si è verificato un errore imprevisto. Riprova più tardi."
},
"YkfDoz": {
"message": "Annual",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 63]],
"translation": "Annuale"
},
"3bqt9U": {
"message": "Anyone with this link can join your workspace",
"placeholders": {},
@@ -756,6 +763,13 @@
"origin": [["src/views/boards/components/TemplateBoards.tsx", 59]],
"translation": "In attesa del cliente"
},
"iH8pgl": {
"message": "Back",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/workspace-details/index.tsx", 275]],
"translation": "Indietro"
},
"KNKCTb": {
"message": "Backlog",
"placeholders": {},
@@ -798,6 +812,13 @@
"origin": [["src/views/pricing/components/PricingTiers.tsx", 53]],
"translation": "Ideale per piccoli team in crescita che necessitano di collaborazione"
},
"zt/6cS": {
"message": "Best for small teams who want to collaborate and move faster together.",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 86]],
"translation": "Ideale per piccoli team che vogliono collaborare e muoversi più velocemente insieme."
},
"qaS+1/": {
"message": "Best for teams that want to scale without limits",
"placeholders": {},
@@ -849,7 +870,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/index.tsx", 529],
["src/views/board/index.tsx", 530],
["src/views/card/index.tsx", 317],
["src/views/public/board/index.tsx", 125]
],
@@ -860,8 +881,8 @@
"placeholders": {},
"comments": [],
"origin": [
["src/components/NewWorkspaceForm.tsx", 350],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 83]
["src/components/NewWorkspaceForm.tsx", 314],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 85]
],
"translation": "Analisi della board"
},
@@ -1249,6 +1270,7 @@
["src/views/card/components/DeleteChecklistConfirmation.tsx", 64],
["src/views/card/components/DeleteCommentConfirmation.tsx", 77],
["src/views/members/components/DeleteMemberConfirmation.tsx", 55],
["src/views/onboarding/select-plan/index.tsx", 209],
["src/views/settings/components/Avatar.tsx", 287],
["src/views/settings/components/ChangePasswordConfirmation.tsx", 168],
[
@@ -1258,7 +1280,7 @@
["src/views/settings/components/DeleteAccountConfirmation.tsx", 88],
["src/views/settings/components/DeleteWebhookConfirmation.tsx", 66],
["src/views/settings/components/DeleteWorkspaceConfirmation.tsx", 98],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 106]
["src/views/settings/components/UpgradeToProConfirmation.tsx", 108]
],
"translation": "Annulla"
},
@@ -1270,11 +1292,13 @@
"translation": "Card"
},
"sU2uWc": {
"translation": "Scheda duplicata",
"message": "Card duplicated",
"placeholders": {},
"comments": [],
"origin": [["src/views/board/components/CardContextDuplicateModal.tsx", 67]]
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 67]
],
"translation": "Scheda duplicata"
},
"fEY2vP": {
"message": "Card not found",
@@ -1298,7 +1322,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/index.tsx", 307],
["src/views/board/index.tsx", 308],
["src/views/card/components/Dropdown.tsx", 44],
["src/views/public/board/CardModal.tsx", 38]
],
@@ -1376,6 +1400,13 @@
],
"translation": "Checklist"
},
"zMquA7": {
"message": "Choose a plan",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 122]],
"translation": "Scegli un piano"
},
"VHS0aJ": {
"message": "Clear all custom permissions?",
"placeholders": {},
@@ -1466,9 +1497,9 @@
"placeholders": {},
"comments": [],
"origin": [
["src/components/NewWorkspaceForm.tsx", 353],
["src/components/NewWorkspaceForm.tsx", 317],
["src/views/home/components/Features.tsx", 67],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 86]
["src/views/settings/components/UpgradeToProConfirmation.tsx", 88]
],
"translation": "Prossimamente"
},
@@ -1633,6 +1664,16 @@
"origin": [["src/views/boards/components/TemplateBoards.tsx", 40]],
"translation": "Creazione di contenuti"
},
"xGVfLh": {
"message": "Continue",
"placeholders": {},
"comments": [],
"origin": [
["src/views/onboarding/select-plan/index.tsx", 212],
["src/views/onboarding/workspace-details/index.tsx", 291]
],
"translation": "Continua"
},
"J2Wbjt": {
"message": "Continue with ",
"placeholders": {},
@@ -1678,38 +1719,38 @@
"translation": "Copia link card"
},
"0utuU6": {
"translation": "Copia checklist",
"message": "Copy checklists",
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 257]
]
],
"translation": "Copia checklist"
},
"fDQ7hA": {
"translation": "Copia etichette",
"message": "Copy labels",
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 221]
]
],
"translation": "Copia etichette"
},
"1bJKhj": {
"translation": "Copia link alla scheda",
"message": "Copy link to card",
"placeholders": {},
"comments": [],
"origin": [["src/views/board/components/CardContextMenu.tsx", 62]]
"origin": [["src/views/board/components/CardContextMenu.tsx", 62]],
"translation": "Copia link alla scheda"
},
"uvH2xS": {
"translation": "Copia membri",
"message": "Copy members",
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 239]
]
],
"translation": "Copia membri"
},
"9PaIxv": {
"message": "Core features",
@@ -1816,8 +1857,8 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/index.tsx", 91],
["src/views/board/index.tsx", 670]
["src/views/board/index.tsx", 92],
["src/views/board/index.tsx", 671]
],
"translation": "Crea nuova lista"
},
@@ -1840,8 +1881,8 @@
"placeholders": {},
"comments": [],
"origin": [
["src/components/NewWorkspaceForm.tsx", 388],
["src/components/WorkspaceMenu.tsx", 153]
["src/components/NewWorkspaceForm.tsx", 352],
["src/components/WorkspaceMenu.tsx", 160]
],
"translation": "Crea workspace"
},
@@ -1928,7 +1969,7 @@
"message": "Custom URLs require upgrading to a Pro plan",
"placeholders": {},
"comments": [],
"origin": [["src/components/NewWorkspaceForm.tsx", 319]],
"origin": [["src/components/NewWorkspaceForm.tsx", 283]],
"translation": "Gli URL personalizzati richiedono l'upgrade a un piano Pro"
},
"7RpHg/": {
@@ -1941,13 +1982,20 @@
],
"translation": "Username personalizzato"
},
"ZDPJBc": {
"message": "Custom usernames require upgrading to a Pro plan",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/workspace-details/index.tsx", 220]],
"translation": "I nomi utente personalizzati richiedono l'aggiornamento a un piano Pro"
},
"j9IZZ0": {
"message": "Custom workspace URL",
"placeholders": {},
"comments": [],
"origin": [
["src/components/NewWorkspaceForm.tsx", 343],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 76]
["src/components/NewWorkspaceForm.tsx", 307],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 78]
],
"translation": "URL workspace personalizzato"
},
@@ -2283,32 +2331,32 @@
"translation": "Scadenza domani"
},
"euc6Ns": {
"translation": "Duplica",
"message": "Duplicate",
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 279]
]
],
"translation": "Duplica"
},
"BTDPLo": {
"translation": "Duplica scheda",
"message": "Duplicate card",
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 111],
["src/views/board/components/CardContextMenu.tsx", 68]
]
],
"translation": "Duplica scheda"
},
"06EQqT": {
"translation": "Duplicazione in corso…",
"message": "Duplicating…",
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 279]
]
],
"translation": "Duplicazione in corso…"
},
"ePK91l": {
"message": "Edit",
@@ -2423,13 +2471,20 @@
"translation": "Visibilità email"
},
"bFREhu": {
"translation": "Fine dell'elenco",
"message": "End of list",
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 200]
]
],
"translation": "Fine dell'elenco"
},
"SUXBxp": {
"message": "Engineering",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/workspace-details/index.tsx", 161]],
"translation": "Ingegneria"
},
"0+ewPp": {
"message": "Enhancement",
@@ -2644,7 +2699,7 @@
"comments": [],
"origin": [
["src/views/members/components/InviteMemberForm.tsx", 240],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 41]
["src/views/settings/components/UpgradeToProConfirmation.tsx", 43]
],
"translation": "Errore durante l'upgrade dell'abbonamento"
},
@@ -2653,7 +2708,8 @@
"placeholders": {},
"comments": [],
"origin": [["src/components/NewWorkspaceForm.tsx", 146]],
"translation": "Errore durante l'upgrade a Pro"
"translation": "Errore durante l'upgrade a Pro",
"obsolete": true
},
"CYWHT+": {
"message": "Error uploading profile image",
@@ -2887,6 +2943,8 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/onboarding/select-plan/index.tsx", 77],
["src/views/onboarding/select-plan/index.tsx", 78],
["src/views/pricing/components/FeatureComparisonTable.tsx", 331],
["src/views/pricing/components/Pricing.tsx", 32],
["src/views/pricing/components/Pricing.tsx", 32],
@@ -2987,7 +3045,7 @@
"message": "Get started by creating a new list",
"placeholders": {},
"comments": [],
"origin": [["src/views/board/index.tsx", 655]],
"origin": [["src/views/board/index.tsx", 656]],
"translation": "Inizia creando una nuova lista"
},
"oW13KZ": {
@@ -3097,6 +3155,13 @@
"origin": [["src/components/SideNavigation.tsx", 119]],
"translation": "Vai ai modelli"
},
"SUvm1Y": {
"message": "Good for individuals starting out who just need the essentials.",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 79]],
"translation": "Perfetto per chi inizia e ha bisogno solo delle funzionalità essenziali."
},
"cdyS7J": {
"message": "Google SSO",
"placeholders": {},
@@ -3521,9 +3586,9 @@
"placeholders": {},
"comments": [],
"origin": [
["src/components/NewWorkspaceForm.tsx", 336],
["src/components/NewWorkspaceForm.tsx", 300],
["src/views/pricing/components/PricingTiers.tsx", 159],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 69]
["src/views/settings/components/UpgradeToProConfirmation.tsx", 71]
],
"translation": "Offerta di lancio"
},
@@ -3591,7 +3656,7 @@
"comments": [],
"origin": [
["src/views/board/components/UpdateBoardSlugButton.tsx", 80],
["src/views/board/index.tsx", 305],
["src/views/board/index.tsx", 306],
["src/views/card/components/Dropdown.tsx", 42],
["src/views/public/board/CardModal.tsx", 36],
["src/views/public/board/index.tsx", 77]
@@ -3695,14 +3760,14 @@
"translation": "Crea template"
},
"hB02vO": {
"translation": "Gestisci membri",
"message": "Manage members",
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/components/CardContextMembersModal.tsx", 51],
["src/views/board/components/CardContextMenu.tsx", 38]
]
],
"translation": "Gestisci membri"
},
"IDvohQ": {
"message": "marked a checklist item as incomplete",
@@ -3720,6 +3785,13 @@
"origin": [["src/views/card/components/ActivityList.tsx", 258]],
"translation": "ha contrassegnato l'elemento della checklist <0>{0}</0> come incompleto"
},
"vo2a+a": {
"message": "Marketing",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/workspace-details/index.tsx", 161]],
"translation": "Marketing"
},
"agPptk": {
"message": "Medium",
"placeholders": {},
@@ -3791,6 +3863,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/onboarding/select-plan/index.tsx", 62],
["src/views/pricing/components/Pricing.tsx", 14],
["src/views/pricing/index.tsx", 20]
],
@@ -3804,18 +3877,18 @@
"translation": "fatturazione mensile"
},
"51UCsN": {
"translation": "Sposta in un altro elenco",
"message": "Move to another list",
"placeholders": {},
"comments": [],
"origin": [["src/views/board/components/CardContextMenu.tsx", 44]]
"origin": [["src/views/board/components/CardContextMenu.tsx", 44]],
"translation": "Sposta in un altro elenco"
},
"J4+OTA": {
"translation": "Sposta nell'elenco",
"message": "Move to list",
"placeholders": {},
"comments": [],
"origin": [["src/views/board/components/CardContextMoveListModal.tsx", 70]]
"origin": [["src/views/board/components/CardContextMoveListModal.tsx", 70]],
"translation": "Sposta nell'elenco"
},
"BOqTi5": {
"message": "moved the card from <0>{0}</0> to<1>{1}</1>",
@@ -3928,7 +4001,7 @@
"comments": [],
"origin": [
["src/views/board/components/NewListForm.tsx", 113],
["src/views/board/index.tsx", 619]
["src/views/board/index.tsx", 620]
],
"translation": "Nuova lista"
},
@@ -3975,7 +4048,7 @@
"message": "New workspace",
"placeholders": {},
"comments": [],
"origin": [["src/components/NewWorkspaceForm.tsx", 244]],
"origin": [["src/components/NewWorkspaceForm.tsx", 208]],
"translation": "Nuovo workspace"
},
"5ACX4z": {
@@ -4054,14 +4127,14 @@
"message": "No lists",
"placeholders": {},
"comments": [],
"origin": [["src/views/board/index.tsx", 651]],
"origin": [["src/views/board/index.tsx", 652]],
"translation": "Nessuna lista"
},
"fvLNDy": {
"message": "No lists have been created yet",
"placeholders": {},
"comments": [],
"origin": [["src/views/board/index.tsx", 656]],
"origin": [["src/views/board/index.tsx", 657]],
"translation": "Nessuna lista è stata ancora creata"
},
"i30J2U": {
@@ -4142,7 +4215,7 @@
"message": "Open command menu",
"placeholders": {},
"comments": [],
"origin": [["src/components/WorkspaceMenu.tsx", 31]],
"origin": [["src/components/WorkspaceMenu.tsx", 34]],
"translation": "Apri menu comandi"
},
"cFQEU/": {
@@ -4358,6 +4431,13 @@
"origin": [["src/views/boards/components/TemplateBoards.tsx", 86]],
"translation": "Progetto personale"
},
"Oi+J+N": {
"message": "Pick a plan to get started. All paid plans include a 14-day free trial.",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 125]],
"translation": "Scegli un piano per iniziare. Tutti i piani a pagamento includono una prova gratuita di 14 giorni."
},
"Iqh0Uv": {
"message": "Planned",
"placeholders": {},
@@ -4445,7 +4525,7 @@
"origin": [
["src/components/DeleteLabelConfirmation.tsx", 26],
["src/components/FeedbackModal.tsx", 41],
["src/components/NewWorkspaceForm.tsx", 159],
["src/components/NewWorkspaceForm.tsx", 123],
["src/views/board/components/BoardDropdown.tsx", 65],
["src/views/board/components/NewCardForm.tsx", 186],
["src/views/board/components/NewListForm.tsx", 79],
@@ -4453,8 +4533,8 @@
["src/views/board/components/NewTemplateForm.tsx", 77],
["src/views/board/components/UpdateBoardSlugForm.tsx", 73],
["src/views/board/components/VisibilityButton.tsx", 57],
["src/views/board/index.tsx", 217],
["src/views/board/index.tsx", 273],
["src/views/board/index.tsx", 218],
["src/views/board/index.tsx", 274],
["src/views/boards/components/ImportBoardsForm.tsx", 243],
["src/views/boards/components/ImportBoardsForm.tsx", 395],
["src/views/card/components/AttachmentThumbnails.tsx", 74],
@@ -4482,6 +4562,8 @@
["src/views/members/components/InviteMemberForm.tsx", 104],
["src/views/members/components/InviteMemberForm.tsx", 241],
["src/views/members/index.tsx", 66],
["src/views/onboarding/workspace-details/index.tsx", 101],
["src/views/onboarding/workspace-details/index.tsx", 150],
["src/views/settings/components/Avatar.tsx", 200],
["src/views/settings/components/DeleteAccountConfirmation.tsx", 40],
["src/views/settings/components/DeleteWorkspaceConfirmation.tsx", 46],
@@ -4489,7 +4571,7 @@
["src/views/settings/components/UpdateWorkspaceDescriptionForm.tsx", 64],
["src/views/settings/components/UpdateWorkspaceNameForm.tsx", 59],
["src/views/settings/components/UpdateWorkspaceUrlForm.tsx", 76],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 42],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 44],
["src/views/settings/PermissionsSettings.tsx", 40]
],
"translation": "Riprova più tardi o contatta l'assistenza clienti."
@@ -4511,7 +4593,7 @@
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 76],
["src/views/board/components/CardContextMoveListModal.tsx", 42],
["src/views/board/index.tsx", 314],
["src/views/board/index.tsx", 315],
["src/views/card/components/Dropdown.tsx", 51],
["src/views/public/board/CardModal.tsx", 45],
["src/views/public/board/index.tsx", 86]
@@ -4519,13 +4601,13 @@
"translation": "Riprova."
},
"nYNMZZ": {
"translation": "Posizione nell'elenco (0 = primo, lascia vuoto per la fine)",
"message": "Position in list (0 = first, leave empty for end)",
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 193]
]
],
"translation": "Posizione nell'elenco (0 = primo, lascia vuoto per la fine)"
},
"aHCEmh": {
"message": "Pricing",
@@ -4549,7 +4631,7 @@
["src/views/pricing/components/FeatureComparisonTable.tsx", 275],
["src/views/pricing/components/Pricing.tsx", 56],
["src/views/pricing/components/PricingTiers.tsx", 61],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 93]
["src/views/settings/components/UpgradeToProConfirmation.tsx", 95]
],
"translation": "Supporto email prioritario"
},
@@ -4572,6 +4654,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/onboarding/select-plan/index.tsx", 91],
["src/views/pricing/components/FeatureComparisonTable.tsx", 333],
["src/views/pricing/components/PricingTiers.tsx", 70]
],
@@ -4829,7 +4912,8 @@
"origin": [
["src/views/home/components/Footer.tsx", 36],
["src/views/home/components/Header.tsx", 13],
["src/views/home/components/Header.tsx", 28]
["src/views/home/components/Header.tsx", 28],
["src/views/onboarding/workspace-details/index.tsx", 161]
],
"translation": "Roadmap"
},
@@ -4949,13 +5033,13 @@
"translation": "Scopri cosa dicono i nostri utenti su Kan"
},
"zYRVNp": {
"translation": "Seleziona un elenco",
"message": "Select a list",
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 131]
]
],
"translation": "Seleziona un elenco"
},
"wgNoIs": {
"message": "Select all",
@@ -5041,6 +5125,13 @@
"origin": [["src/views/card/components/ActivityList.tsx", 142]],
"translation": "ha impostato la scadenza"
},
"JjEJSy": {
"message": "Set up your workspace",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/workspace-details/index.tsx", 179]],
"translation": "Configura il tuo workspace"
},
"Tz0i8g": {
"message": "Settings",
"placeholders": {},
@@ -5121,6 +5212,16 @@
"origin": [["src/views/invite/index.tsx", 154]],
"translation": "Accedi"
},
"fcWrnU": {
"message": "Sign out",
"placeholders": {},
"comments": [],
"origin": [
["src/views/onboarding/select-plan/index.tsx", 284],
["src/views/onboarding/workspace-details/index.tsx", 362]
],
"translation": "Esci"
},
"mErq7F": {
"message": "Sign Up",
"placeholders": {},
@@ -5206,6 +5307,13 @@
"origin": [["src/views/boards/components/TemplateBoards.tsx", 22]],
"translation": "Sviluppo software"
},
"6sKjjx": {
"message": "Solo",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 76]],
"translation": "Solo"
},
"vnS6Rf": {
"message": "SSO",
"placeholders": {},
@@ -5228,7 +5336,7 @@
"comments": [],
"origin": [
["src/views/members/components/InviteMemberForm.tsx", 359],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 111]
["src/views/settings/components/UpgradeToProConfirmation.tsx", 113]
],
"translation": "Inizia la prova gratuita di 14 giorni"
},
@@ -5277,7 +5385,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/settings/components/UpgradeToProConfirmation.tsx", 57]
["src/views/settings/components/UpgradeToProConfirmation.tsx", 59]
],
"translation": "Potenzia il tuo workspace per soli $29 al mese. Ecco cosa otterrai:"
},
@@ -5305,6 +5413,13 @@
"origin": [["src/components/UserMenu.tsx", 144]],
"translation": "Sistema"
},
"KM6m8p": {
"message": "Team",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 83]],
"translation": "Team"
},
"bff61F": {
"message": "Team Plan",
"placeholders": {},
@@ -5331,8 +5446,8 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/index.tsx", 529],
["src/views/board/index.tsx", 565]
["src/views/board/index.tsx", 530],
["src/views/board/index.tsx", 566]
],
"translation": "Template"
},
@@ -5427,11 +5542,13 @@
"translation": "La bacheca è stata ripristinata."
},
"nKBUeF": {
"translation": "La scheda è stata duplicata.",
"message": "The card has been duplicated.",
"placeholders": {},
"comments": [],
"origin": [["src/views/board/components/CardContextDuplicateModal.tsx", 69]]
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 69]
],
"translation": "La scheda è stata duplicata."
},
"jlB2RY": {
"message": "The current password you entered is incorrect.",
@@ -5555,6 +5672,20 @@
],
"translation": "I permessi di questo membro sono stati ripristinati ai valori predefiniti del suo ruolo."
},
"HQVm6e": {
"message": "This URL has already been taken",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/workspace-details/index.tsx", 73]],
"translation": "Questo URL è già in uso"
},
"gKmoow": {
"message": "This URL is reserved",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/workspace-details/index.tsx", 75]],
"translation": "Questo URL è riservato"
},
"OAYToL": {
"message": "This will remove all custom member permissions in this workspace. Members will inherit permissions only from their roles.",
"placeholders": {},
@@ -5589,14 +5720,14 @@
"message": "This workspace URL has already been taken",
"placeholders": {},
"comments": [],
"origin": [["src/components/NewWorkspaceForm.tsx", 288]],
"origin": [["src/components/NewWorkspaceForm.tsx", 252]],
"translation": "Questo URL del workspace è già stato utilizzato"
},
"bJtM0P": {
"message": "This workspace URL is reserved",
"placeholders": {},
"comments": [],
"origin": [["src/components/NewWorkspaceForm.tsx", 290]],
"origin": [["src/components/NewWorkspaceForm.tsx", 254]],
"translation": "Questo URL dello workspace è riservato"
},
"kp6L3T": {
@@ -5616,13 +5747,13 @@
"translation": "Titolo"
},
"wK4OTM": {
"translation": "Titolo (facoltativo)",
"message": "Title (optional)",
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 180]
]
],
"translation": "Titolo (facoltativo)"
},
"Se/UIp": {
"message": "To Do",
@@ -5726,7 +5857,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/index.tsx", 312],
["src/views/board/index.tsx", 313],
["src/views/card/components/Dropdown.tsx", 49],
["src/views/public/board/CardModal.tsx", 43],
["src/views/public/board/index.tsx", 84]
@@ -5768,7 +5899,10 @@
"message": "Unable to create workspace",
"placeholders": {},
"comments": [],
"origin": [["src/components/NewWorkspaceForm.tsx", 158]],
"origin": [
["src/components/NewWorkspaceForm.tsx", 122],
["src/views/onboarding/workspace-details/index.tsx", 100]
],
"translation": "Impossibile creare lo workspace"
},
"WHHLh9": {
@@ -5809,18 +5943,20 @@
"translation": "Impossibile eliminare il commento"
},
"Oo4E6p": {
"translation": "Impossibile duplicare la scheda",
"message": "Unable to duplicate card",
"placeholders": {},
"comments": [],
"origin": [["src/views/board/components/CardContextDuplicateModal.tsx", 75]]
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 75]
],
"translation": "Impossibile duplicare la scheda"
},
"K7k9u3": {
"translation": "Impossibile spostare la scheda",
"message": "Unable to move card",
"placeholders": {},
"comments": [],
"origin": [["src/views/board/components/CardContextMoveListModal.tsx", 41]]
"origin": [["src/views/board/components/CardContextMoveListModal.tsx", 41]],
"translation": "Impossibile spostare la scheda"
},
"8yFGGF": {
"message": "Unable to remove member",
@@ -5854,6 +5990,13 @@
"origin": [["src/components/FeedbackModal.tsx", 40]],
"translation": "Impossibile inviare il feedback"
},
"Q60WUZ": {
"message": "Unable to start checkout",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/workspace-details/index.tsx", 149]],
"translation": "Impossibile avviare il checkout"
},
"T7Mywq": {
"message": "Unable to update board",
"placeholders": {},
@@ -5880,7 +6023,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/index.tsx", 272],
["src/views/board/index.tsx", 273],
["src/views/card/index.tsx", 231]
],
"translation": "Impossibile aggiornare la card"
@@ -5925,7 +6068,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/index.tsx", 216],
["src/views/board/index.tsx", 217],
["src/views/card/components/ListSelector.tsx", 54]
],
"translation": "Impossibile aggiornare la lista"
@@ -6053,14 +6196,21 @@
"placeholders": {},
"comments": [],
"origin": [
["src/components/NewWorkspaceForm.tsx", 333],
["src/components/NewWorkspaceForm.tsx", 297],
["src/views/pricing/components/FeatureComparisonTable.tsx", 84],
["src/views/pricing/components/FeatureComparisonTable.tsx", 85],
["src/views/pricing/components/PricingTiers.tsx", 80],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 66]
["src/views/settings/components/UpgradeToProConfirmation.tsx", 68]
],
"translation": "Membri illimitati"
},
"8AwlaR": {
"message": "Unlimited members and a custom workspace username for teams ready to scale.",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 94]],
"translation": "Membri illimitati e un nome utente workspace personalizzato per i team pronti a crescere."
},
"Ws+3X+": {
"message": "Unlimited seats and advanced features for growing teams.",
"placeholders": {},
@@ -6141,7 +6291,7 @@
"comments": [],
"origin": [
["src/components/SideNavigation.tsx", 240],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 53],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 55],
["src/views/settings/WorkspaceSettings.tsx", 118]
],
"translation": "Passa a Pro"
@@ -6150,7 +6300,10 @@
"message": "Upgrade to Pro ($29/month)",
"placeholders": {},
"comments": [],
"origin": [["src/components/NewWorkspaceForm.tsx", 373]],
"origin": [
["src/components/NewWorkspaceForm.tsx", 337],
["src/views/onboarding/workspace-details/index.tsx", 243]
],
"translation": "Passa a Pro ($29/mese)"
},
"b3Thhd": {
@@ -6434,7 +6587,7 @@
"comments": [],
"origin": [
["src/components/SettingsLayout.tsx", 47],
["src/views/board/index.tsx", 529],
["src/views/board/index.tsx", 530],
["src/views/boards/index.tsx", 48],
["src/views/members/index.tsx", 258],
["src/views/public/board/index.tsx", 125],
@@ -6447,7 +6600,8 @@
"placeholders": {},
"comments": [],
"origin": [["src/components/NewWorkspaceForm.tsx", 147]],
"translation": "Workspace creato con successo. Potrai effettuare l'upgrade più tardi nelle impostazioni."
"translation": "Workspace creato con successo. Potrai effettuare l'upgrade più tardi nelle impostazioni.",
"obsolete": true
},
"UlhdTP": {
"message": "Workspace deleted",
@@ -6462,7 +6616,10 @@
"message": "Workspace description",
"placeholders": {},
"comments": [],
"origin": [["src/views/settings/WorkspaceSettings.tsx", 82]],
"origin": [
["src/views/onboarding/workspace-details/index.tsx", 253],
["src/views/settings/WorkspaceSettings.tsx", 82]
],
"translation": "Descrizione workspace"
},
"Ax/hYa": {
@@ -6508,7 +6665,8 @@
"placeholders": {},
"comments": [],
"origin": [
["src/components/NewWorkspaceForm.tsx", 263],
["src/components/NewWorkspaceForm.tsx", 227],
["src/views/onboarding/workspace-details/index.tsx", 188],
["src/views/settings/WorkspaceSettings.tsx", 63]
],
"translation": "Nome workspace"
@@ -6582,7 +6740,7 @@
"message": "workspace-url",
"placeholders": {},
"comments": [],
"origin": [["src/components/NewWorkspaceForm.tsx", 277]],
"origin": [["src/components/NewWorkspaceForm.tsx", 241]],
"translation": "workspace-url"
},
"4kJRen": {
@@ -6616,6 +6774,13 @@
"origin": [["src/views/settings/AccountSettings.tsx", 91]],
"translation": "Stai per modificare la tua password."
},
"3WXdoZ": {
"message": "You can always change these later in settings.",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/workspace-details/index.tsx", 182]],
"translation": "Potrai sempre modificarli in seguito nelle impostazioni."
},
"aelko+": {
"message": "You can get a custom workspace URL, like <0>kan.bn/kan</0>, by going into your <1>workspace settings</1> and purchasing a pro workspace subscription. All subscriptions help fund the development of the project!",
"placeholders": {},
@@ -6645,8 +6810,8 @@
["src/views/board/components/List.tsx", 117],
["src/views/board/components/UpdateBoardSlugButton.tsx", 58],
["src/views/board/components/VisibilityButton.tsx", 72],
["src/views/board/index.tsx", 603],
["src/views/board/index.tsx", 661],
["src/views/board/index.tsx", 604],
["src/views/board/index.tsx", 662],
["src/views/boards/components/BoardsList.tsx", 71],
["src/views/boards/index.tsx", 59],
["src/views/boards/index.tsx", 80]
@@ -6711,6 +6876,13 @@
],
"translation": "Il tuo account è stato eliminato."
},
"c4nMcR": {
"message": "Your avatar",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 229]],
"translation": "Il tuo avatar"
},
"evg7+A": {
"message": "Your boards have been imported.",
"placeholders": {},
@@ -6797,6 +6969,20 @@
"origin": [["src/pages/unsubscribe/index.tsx", 33]],
"translation": "Il tuo link di disiscrizione non contiene un token. Apri l'ultima email e riprova."
},
"GRAGsB": {
"message": "Your workspace",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/workspace-details/index.tsx", 322]],
"translation": "Il tuo workspace"
},
"j0o6ml": {
"message": "Your workspace description",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/workspace-details/index.tsx", 325]],
"translation": "La descrizione del tuo workspace"
},
"GnSSGm": {
"message": "Your workspace description has been updated.",
"placeholders": {},
@@ -6833,6 +7019,16 @@
],
"translation": "Lo slug del tuo workspace è stato aggiornato."
},
"OTxjpR": {
"message": "your-workspace",
"placeholders": {},
"comments": [],
"origin": [
["src/views/onboarding/workspace-details/index.tsx", 197],
["src/views/onboarding/workspace-details/index.tsx", 198]
],
"translation": "il-tuo-workspace"
},
"4DOCMI": {
"message": "YouTube URL",
"placeholders": {},

File diff suppressed because one or more lines are too long

View File

@@ -71,7 +71,7 @@
"0": ["isTemplate ? \"Template\" : \"Board\""]
},
"comments": [],
"origin": [["src/views/board/index.tsx", 556]],
"origin": [["src/views/board/index.tsx", 557]],
"translation": "{0} niet gevonden"
},
"0xWkkH": {
@@ -239,11 +239,11 @@
"translation": "Activiteitenlogboeken"
},
"UGCIzB": {
"translation": "Label toevoegen / bewerken",
"message": "Add / edit label",
"placeholders": {},
"comments": [],
"origin": [["src/views/board/components/CardContextMenu.tsx", 50]]
"origin": [["src/views/board/components/CardContextMenu.tsx", 50]],
"translation": "Label toevoegen / bewerken"
},
"B3xxao": {
"message": "Add a card",
@@ -556,6 +556,13 @@
],
"translation": "Er is een onverwachte fout opgetreden. Probeer het later opnieuw."
},
"YkfDoz": {
"message": "Annual",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 63]],
"translation": "Jaarlijks"
},
"3bqt9U": {
"message": "Anyone with this link can join your workspace",
"placeholders": {},
@@ -756,6 +763,13 @@
"origin": [["src/views/boards/components/TemplateBoards.tsx", 59]],
"translation": "Wacht op klant"
},
"iH8pgl": {
"message": "Back",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/workspace-details/index.tsx", 275]],
"translation": "Terug"
},
"KNKCTb": {
"message": "Backlog",
"placeholders": {},
@@ -798,6 +812,13 @@
"origin": [["src/views/pricing/components/PricingTiers.tsx", 53]],
"translation": "Het beste voor kleine en groeiende teams die samenwerking nodig hebben"
},
"zt/6cS": {
"message": "Best for small teams who want to collaborate and move faster together.",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 86]],
"translation": "Het beste voor kleine teams die willen samenwerken en sneller vooruit willen komen."
},
"qaS+1/": {
"message": "Best for teams that want to scale without limits",
"placeholders": {},
@@ -849,7 +870,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/index.tsx", 529],
["src/views/board/index.tsx", 530],
["src/views/card/index.tsx", 317],
["src/views/public/board/index.tsx", 125]
],
@@ -860,8 +881,8 @@
"placeholders": {},
"comments": [],
"origin": [
["src/components/NewWorkspaceForm.tsx", 350],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 83]
["src/components/NewWorkspaceForm.tsx", 314],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 85]
],
"translation": "Bordanalyse"
},
@@ -1249,6 +1270,7 @@
["src/views/card/components/DeleteChecklistConfirmation.tsx", 64],
["src/views/card/components/DeleteCommentConfirmation.tsx", 77],
["src/views/members/components/DeleteMemberConfirmation.tsx", 55],
["src/views/onboarding/select-plan/index.tsx", 209],
["src/views/settings/components/Avatar.tsx", 287],
["src/views/settings/components/ChangePasswordConfirmation.tsx", 168],
[
@@ -1258,7 +1280,7 @@
["src/views/settings/components/DeleteAccountConfirmation.tsx", 88],
["src/views/settings/components/DeleteWebhookConfirmation.tsx", 66],
["src/views/settings/components/DeleteWorkspaceConfirmation.tsx", 98],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 106]
["src/views/settings/components/UpgradeToProConfirmation.tsx", 108]
],
"translation": "Annuleren"
},
@@ -1270,11 +1292,13 @@
"translation": "Kaart"
},
"sU2uWc": {
"translation": "Kaart gedupliceerd",
"message": "Card duplicated",
"placeholders": {},
"comments": [],
"origin": [["src/views/board/components/CardContextDuplicateModal.tsx", 67]]
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 67]
],
"translation": "Kaart gedupliceerd"
},
"fEY2vP": {
"message": "Card not found",
@@ -1298,7 +1322,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/index.tsx", 307],
["src/views/board/index.tsx", 308],
["src/views/card/components/Dropdown.tsx", 44],
["src/views/public/board/CardModal.tsx", 38]
],
@@ -1376,6 +1400,13 @@
],
"translation": "Checklists"
},
"zMquA7": {
"message": "Choose a plan",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 122]],
"translation": "Kies een abonnement"
},
"VHS0aJ": {
"message": "Clear all custom permissions?",
"placeholders": {},
@@ -1466,9 +1497,9 @@
"placeholders": {},
"comments": [],
"origin": [
["src/components/NewWorkspaceForm.tsx", 353],
["src/components/NewWorkspaceForm.tsx", 317],
["src/views/home/components/Features.tsx", 67],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 86]
["src/views/settings/components/UpgradeToProConfirmation.tsx", 88]
],
"translation": "Binnenkort beschikbaar"
},
@@ -1633,6 +1664,16 @@
"origin": [["src/views/boards/components/TemplateBoards.tsx", 40]],
"translation": "Content creatie"
},
"xGVfLh": {
"message": "Continue",
"placeholders": {},
"comments": [],
"origin": [
["src/views/onboarding/select-plan/index.tsx", 212],
["src/views/onboarding/workspace-details/index.tsx", 291]
],
"translation": "Doorgaan"
},
"J2Wbjt": {
"message": "Continue with ",
"placeholders": {},
@@ -1678,38 +1719,38 @@
"translation": "Kopieer kaartlink"
},
"0utuU6": {
"translation": "Checklists kopiëren",
"message": "Copy checklists",
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 257]
]
],
"translation": "Checklists kopiëren"
},
"fDQ7hA": {
"translation": "Labels kopiëren",
"message": "Copy labels",
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 221]
]
],
"translation": "Labels kopiëren"
},
"1bJKhj": {
"translation": "Link naar kaart kopiëren",
"message": "Copy link to card",
"placeholders": {},
"comments": [],
"origin": [["src/views/board/components/CardContextMenu.tsx", 62]]
"origin": [["src/views/board/components/CardContextMenu.tsx", 62]],
"translation": "Link naar kaart kopiëren"
},
"uvH2xS": {
"translation": "Leden kopiëren",
"message": "Copy members",
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 239]
]
],
"translation": "Leden kopiëren"
},
"9PaIxv": {
"message": "Core features",
@@ -1816,8 +1857,8 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/index.tsx", 91],
["src/views/board/index.tsx", 670]
["src/views/board/index.tsx", 92],
["src/views/board/index.tsx", 671]
],
"translation": "Maak nieuwe lijst"
},
@@ -1840,8 +1881,8 @@
"placeholders": {},
"comments": [],
"origin": [
["src/components/NewWorkspaceForm.tsx", 388],
["src/components/WorkspaceMenu.tsx", 153]
["src/components/NewWorkspaceForm.tsx", 352],
["src/components/WorkspaceMenu.tsx", 160]
],
"translation": "Maak werkruimte"
},
@@ -1928,7 +1969,7 @@
"message": "Custom URLs require upgrading to a Pro plan",
"placeholders": {},
"comments": [],
"origin": [["src/components/NewWorkspaceForm.tsx", 319]],
"origin": [["src/components/NewWorkspaceForm.tsx", 283]],
"translation": "Aangepaste URL's vereisen een upgrade naar een Pro-abonnement"
},
"7RpHg/": {
@@ -1941,13 +1982,20 @@
],
"translation": "Aangepaste gebruikersnaam"
},
"ZDPJBc": {
"message": "Custom usernames require upgrading to a Pro plan",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/workspace-details/index.tsx", 220]],
"translation": "Aangepaste gebruikersnamen vereisen een upgrade naar een Pro-abonnement"
},
"j9IZZ0": {
"message": "Custom workspace URL",
"placeholders": {},
"comments": [],
"origin": [
["src/components/NewWorkspaceForm.tsx", 343],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 76]
["src/components/NewWorkspaceForm.tsx", 307],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 78]
],
"translation": "Aangepaste workspace-URL"
},
@@ -2283,32 +2331,32 @@
"translation": "Verloopt morgen"
},
"euc6Ns": {
"translation": "Dupliceren",
"message": "Duplicate",
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 279]
]
],
"translation": "Dupliceren"
},
"BTDPLo": {
"translation": "Kaart dupliceren",
"message": "Duplicate card",
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 111],
["src/views/board/components/CardContextMenu.tsx", 68]
]
],
"translation": "Kaart dupliceren"
},
"06EQqT": {
"translation": "Dupliceren…",
"message": "Duplicating…",
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 279]
]
],
"translation": "Dupliceren…"
},
"ePK91l": {
"message": "Edit",
@@ -2423,13 +2471,20 @@
"translation": "E-mailzichtbaarheid"
},
"bFREhu": {
"translation": "Einde van lijst",
"message": "End of list",
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 200]
]
],
"translation": "Einde van lijst"
},
"SUXBxp": {
"message": "Engineering",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/workspace-details/index.tsx", 161]],
"translation": "Engineering"
},
"0+ewPp": {
"message": "Enhancement",
@@ -2644,7 +2699,7 @@
"comments": [],
"origin": [
["src/views/members/components/InviteMemberForm.tsx", 240],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 41]
["src/views/settings/components/UpgradeToProConfirmation.tsx", 43]
],
"translation": "Fout bij upgraden van abonnement"
},
@@ -2653,7 +2708,8 @@
"placeholders": {},
"comments": [],
"origin": [["src/components/NewWorkspaceForm.tsx", 146]],
"translation": "Fout bij upgraden naar Pro"
"translation": "Fout bij upgraden naar Pro",
"obsolete": true
},
"CYWHT+": {
"message": "Error uploading profile image",
@@ -2887,6 +2943,8 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/onboarding/select-plan/index.tsx", 77],
["src/views/onboarding/select-plan/index.tsx", 78],
["src/views/pricing/components/FeatureComparisonTable.tsx", 331],
["src/views/pricing/components/Pricing.tsx", 32],
["src/views/pricing/components/Pricing.tsx", 32],
@@ -2987,7 +3045,7 @@
"message": "Get started by creating a new list",
"placeholders": {},
"comments": [],
"origin": [["src/views/board/index.tsx", 655]],
"origin": [["src/views/board/index.tsx", 656]],
"translation": "Ga aan de slag door een nieuwe lijst te maken"
},
"oW13KZ": {
@@ -3097,6 +3155,13 @@
"origin": [["src/components/SideNavigation.tsx", 119]],
"translation": "Ga naar sjablonen"
},
"SUvm1Y": {
"message": "Good for individuals starting out who just need the essentials.",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 79]],
"translation": "Geschikt voor individuen die net beginnen en alleen de basisbehoeften hebben."
},
"cdyS7J": {
"message": "Google SSO",
"placeholders": {},
@@ -3521,9 +3586,9 @@
"placeholders": {},
"comments": [],
"origin": [
["src/components/NewWorkspaceForm.tsx", 336],
["src/components/NewWorkspaceForm.tsx", 300],
["src/views/pricing/components/PricingTiers.tsx", 159],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 69]
["src/views/settings/components/UpgradeToProConfirmation.tsx", 71]
],
"translation": "Lanceringaanbieding"
},
@@ -3591,7 +3656,7 @@
"comments": [],
"origin": [
["src/views/board/components/UpdateBoardSlugButton.tsx", 80],
["src/views/board/index.tsx", 305],
["src/views/board/index.tsx", 306],
["src/views/card/components/Dropdown.tsx", 42],
["src/views/public/board/CardModal.tsx", 36],
["src/views/public/board/index.tsx", 77]
@@ -3695,14 +3760,14 @@
"translation": "Sjabloon maken"
},
"hB02vO": {
"translation": "Leden beheren",
"message": "Manage members",
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/components/CardContextMembersModal.tsx", 51],
["src/views/board/components/CardContextMenu.tsx", 38]
]
],
"translation": "Leden beheren"
},
"IDvohQ": {
"message": "marked a checklist item as incomplete",
@@ -3720,6 +3785,13 @@
"origin": [["src/views/card/components/ActivityList.tsx", 258]],
"translation": "heeft checklistitem <0>{0}</0> als onvolledig gemarkeerd"
},
"vo2a+a": {
"message": "Marketing",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/workspace-details/index.tsx", 161]],
"translation": "Marketing"
},
"agPptk": {
"message": "Medium",
"placeholders": {},
@@ -3791,6 +3863,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/onboarding/select-plan/index.tsx", 62],
["src/views/pricing/components/Pricing.tsx", 14],
["src/views/pricing/index.tsx", 20]
],
@@ -3804,18 +3877,18 @@
"translation": "maandelijkse facturering"
},
"51UCsN": {
"translation": "Verplaats naar andere lijst",
"message": "Move to another list",
"placeholders": {},
"comments": [],
"origin": [["src/views/board/components/CardContextMenu.tsx", 44]]
"origin": [["src/views/board/components/CardContextMenu.tsx", 44]],
"translation": "Verplaats naar andere lijst"
},
"J4+OTA": {
"translation": "Verplaats naar lijst",
"message": "Move to list",
"placeholders": {},
"comments": [],
"origin": [["src/views/board/components/CardContextMoveListModal.tsx", 70]]
"origin": [["src/views/board/components/CardContextMoveListModal.tsx", 70]],
"translation": "Verplaats naar lijst"
},
"BOqTi5": {
"message": "moved the card from <0>{0}</0> to<1>{1}</1>",
@@ -3928,7 +4001,7 @@
"comments": [],
"origin": [
["src/views/board/components/NewListForm.tsx", 113],
["src/views/board/index.tsx", 619]
["src/views/board/index.tsx", 620]
],
"translation": "Nieuwe lijst"
},
@@ -3975,7 +4048,7 @@
"message": "New workspace",
"placeholders": {},
"comments": [],
"origin": [["src/components/NewWorkspaceForm.tsx", 244]],
"origin": [["src/components/NewWorkspaceForm.tsx", 208]],
"translation": "Nieuwe werkruimte"
},
"5ACX4z": {
@@ -4054,14 +4127,14 @@
"message": "No lists",
"placeholders": {},
"comments": [],
"origin": [["src/views/board/index.tsx", 651]],
"origin": [["src/views/board/index.tsx", 652]],
"translation": "Geen lijsten"
},
"fvLNDy": {
"message": "No lists have been created yet",
"placeholders": {},
"comments": [],
"origin": [["src/views/board/index.tsx", 656]],
"origin": [["src/views/board/index.tsx", 657]],
"translation": "Er zijn nog geen lijsten aangemaakt"
},
"i30J2U": {
@@ -4142,7 +4215,7 @@
"message": "Open command menu",
"placeholders": {},
"comments": [],
"origin": [["src/components/WorkspaceMenu.tsx", 31]],
"origin": [["src/components/WorkspaceMenu.tsx", 34]],
"translation": "Commandomenu openen"
},
"cFQEU/": {
@@ -4358,6 +4431,13 @@
"origin": [["src/views/boards/components/TemplateBoards.tsx", 86]],
"translation": "Persoonlijk project"
},
"Oi+J+N": {
"message": "Pick a plan to get started. All paid plans include a 14-day free trial.",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 125]],
"translation": "Kies een abonnement om te beginnen. Alle betaalde abonnementen hebben een gratis proefperiode van 14 dagen."
},
"Iqh0Uv": {
"message": "Planned",
"placeholders": {},
@@ -4445,7 +4525,7 @@
"origin": [
["src/components/DeleteLabelConfirmation.tsx", 26],
["src/components/FeedbackModal.tsx", 41],
["src/components/NewWorkspaceForm.tsx", 159],
["src/components/NewWorkspaceForm.tsx", 123],
["src/views/board/components/BoardDropdown.tsx", 65],
["src/views/board/components/NewCardForm.tsx", 186],
["src/views/board/components/NewListForm.tsx", 79],
@@ -4453,8 +4533,8 @@
["src/views/board/components/NewTemplateForm.tsx", 77],
["src/views/board/components/UpdateBoardSlugForm.tsx", 73],
["src/views/board/components/VisibilityButton.tsx", 57],
["src/views/board/index.tsx", 217],
["src/views/board/index.tsx", 273],
["src/views/board/index.tsx", 218],
["src/views/board/index.tsx", 274],
["src/views/boards/components/ImportBoardsForm.tsx", 243],
["src/views/boards/components/ImportBoardsForm.tsx", 395],
["src/views/card/components/AttachmentThumbnails.tsx", 74],
@@ -4482,6 +4562,8 @@
["src/views/members/components/InviteMemberForm.tsx", 104],
["src/views/members/components/InviteMemberForm.tsx", 241],
["src/views/members/index.tsx", 66],
["src/views/onboarding/workspace-details/index.tsx", 101],
["src/views/onboarding/workspace-details/index.tsx", 150],
["src/views/settings/components/Avatar.tsx", 200],
["src/views/settings/components/DeleteAccountConfirmation.tsx", 40],
["src/views/settings/components/DeleteWorkspaceConfirmation.tsx", 46],
@@ -4489,7 +4571,7 @@
["src/views/settings/components/UpdateWorkspaceDescriptionForm.tsx", 64],
["src/views/settings/components/UpdateWorkspaceNameForm.tsx", 59],
["src/views/settings/components/UpdateWorkspaceUrlForm.tsx", 76],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 42],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 44],
["src/views/settings/PermissionsSettings.tsx", 40]
],
"translation": "Probeer het later opnieuw of neem contact op met klantenservice."
@@ -4511,7 +4593,7 @@
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 76],
["src/views/board/components/CardContextMoveListModal.tsx", 42],
["src/views/board/index.tsx", 314],
["src/views/board/index.tsx", 315],
["src/views/card/components/Dropdown.tsx", 51],
["src/views/public/board/CardModal.tsx", 45],
["src/views/public/board/index.tsx", 86]
@@ -4519,13 +4601,13 @@
"translation": "Probeer het opnieuw."
},
"nYNMZZ": {
"translation": "Positie in lijst (0 = eerste, leeg laten voor het einde)",
"message": "Position in list (0 = first, leave empty for end)",
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 193]
]
],
"translation": "Positie in lijst (0 = eerste, leeg laten voor het einde)"
},
"aHCEmh": {
"message": "Pricing",
@@ -4549,7 +4631,7 @@
["src/views/pricing/components/FeatureComparisonTable.tsx", 275],
["src/views/pricing/components/Pricing.tsx", 56],
["src/views/pricing/components/PricingTiers.tsx", 61],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 93]
["src/views/settings/components/UpgradeToProConfirmation.tsx", 95]
],
"translation": "Prioritaire e-mailondersteuning"
},
@@ -4572,6 +4654,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/onboarding/select-plan/index.tsx", 91],
["src/views/pricing/components/FeatureComparisonTable.tsx", 333],
["src/views/pricing/components/PricingTiers.tsx", 70]
],
@@ -4829,7 +4912,8 @@
"origin": [
["src/views/home/components/Footer.tsx", 36],
["src/views/home/components/Header.tsx", 13],
["src/views/home/components/Header.tsx", 28]
["src/views/home/components/Header.tsx", 28],
["src/views/onboarding/workspace-details/index.tsx", 161]
],
"translation": "Roadmap"
},
@@ -4949,13 +5033,13 @@
"translation": "Bekijk wat onze gebruikers over Kan zeggen"
},
"zYRVNp": {
"translation": "Selecteer een lijst",
"message": "Select a list",
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 131]
]
],
"translation": "Selecteer een lijst"
},
"wgNoIs": {
"message": "Select all",
@@ -5041,6 +5125,13 @@
"origin": [["src/views/card/components/ActivityList.tsx", 142]],
"translation": "heeft de vervaldatum ingesteld"
},
"JjEJSy": {
"message": "Set up your workspace",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/workspace-details/index.tsx", 179]],
"translation": "Stel je werkruimte in"
},
"Tz0i8g": {
"message": "Settings",
"placeholders": {},
@@ -5121,6 +5212,16 @@
"origin": [["src/views/invite/index.tsx", 154]],
"translation": "Inloggen"
},
"fcWrnU": {
"message": "Sign out",
"placeholders": {},
"comments": [],
"origin": [
["src/views/onboarding/select-plan/index.tsx", 284],
["src/views/onboarding/workspace-details/index.tsx", 362]
],
"translation": "Uitloggen"
},
"mErq7F": {
"message": "Sign Up",
"placeholders": {},
@@ -5206,6 +5307,13 @@
"origin": [["src/views/boards/components/TemplateBoards.tsx", 22]],
"translation": "Softwareontwikkeling"
},
"6sKjjx": {
"message": "Solo",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 76]],
"translation": "Solo"
},
"vnS6Rf": {
"message": "SSO",
"placeholders": {},
@@ -5228,7 +5336,7 @@
"comments": [],
"origin": [
["src/views/members/components/InviteMemberForm.tsx", 359],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 111]
["src/views/settings/components/UpgradeToProConfirmation.tsx", 113]
],
"translation": "Start 14 dagen gratis proefperiode"
},
@@ -5277,7 +5385,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/settings/components/UpgradeToProConfirmation.tsx", 57]
["src/views/settings/components/UpgradeToProConfirmation.tsx", 59]
],
"translation": "Geef je workspace een boost voor slechts €29/maand. Dit krijg je:"
},
@@ -5305,6 +5413,13 @@
"origin": [["src/components/UserMenu.tsx", 144]],
"translation": "Systeem"
},
"KM6m8p": {
"message": "Team",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 83]],
"translation": "Team"
},
"bff61F": {
"message": "Team Plan",
"placeholders": {},
@@ -5331,8 +5446,8 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/index.tsx", 529],
["src/views/board/index.tsx", 565]
["src/views/board/index.tsx", 530],
["src/views/board/index.tsx", 566]
],
"translation": "Sjabloon"
},
@@ -5427,11 +5542,13 @@
"translation": "Het board is gedearchiveerd."
},
"nKBUeF": {
"translation": "De kaart is gedupliceerd.",
"message": "The card has been duplicated.",
"placeholders": {},
"comments": [],
"origin": [["src/views/board/components/CardContextDuplicateModal.tsx", 69]]
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 69]
],
"translation": "De kaart is gedupliceerd."
},
"jlB2RY": {
"message": "The current password you entered is incorrect.",
@@ -5555,6 +5672,20 @@
],
"translation": "De rechten van dit lid zijn teruggezet naar de standaardinstellingen van hun rol."
},
"HQVm6e": {
"message": "This URL has already been taken",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/workspace-details/index.tsx", 73]],
"translation": "Deze URL is al in gebruik"
},
"gKmoow": {
"message": "This URL is reserved",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/workspace-details/index.tsx", 75]],
"translation": "Deze URL is gereserveerd"
},
"OAYToL": {
"message": "This will remove all custom member permissions in this workspace. Members will inherit permissions only from their roles.",
"placeholders": {},
@@ -5589,14 +5720,14 @@
"message": "This workspace URL has already been taken",
"placeholders": {},
"comments": [],
"origin": [["src/components/NewWorkspaceForm.tsx", 288]],
"origin": [["src/components/NewWorkspaceForm.tsx", 252]],
"translation": "Deze workspace-URL is al in gebruik"
},
"bJtM0P": {
"message": "This workspace URL is reserved",
"placeholders": {},
"comments": [],
"origin": [["src/components/NewWorkspaceForm.tsx", 290]],
"origin": [["src/components/NewWorkspaceForm.tsx", 254]],
"translation": "Deze workspace-URL is gereserveerd"
},
"kp6L3T": {
@@ -5616,13 +5747,13 @@
"translation": "Titel"
},
"wK4OTM": {
"translation": "Titel (optioneel)",
"message": "Title (optional)",
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 180]
]
],
"translation": "Titel (optioneel)"
},
"Se/UIp": {
"message": "To Do",
@@ -5726,7 +5857,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/index.tsx", 312],
["src/views/board/index.tsx", 313],
["src/views/card/components/Dropdown.tsx", 49],
["src/views/public/board/CardModal.tsx", 43],
["src/views/public/board/index.tsx", 84]
@@ -5768,7 +5899,10 @@
"message": "Unable to create workspace",
"placeholders": {},
"comments": [],
"origin": [["src/components/NewWorkspaceForm.tsx", 158]],
"origin": [
["src/components/NewWorkspaceForm.tsx", 122],
["src/views/onboarding/workspace-details/index.tsx", 100]
],
"translation": "Kan workspace niet aanmaken"
},
"WHHLh9": {
@@ -5809,18 +5943,20 @@
"translation": "Kan opmerking niet verwijderen"
},
"Oo4E6p": {
"translation": "Kan kaart niet dupliceren",
"message": "Unable to duplicate card",
"placeholders": {},
"comments": [],
"origin": [["src/views/board/components/CardContextDuplicateModal.tsx", 75]]
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 75]
],
"translation": "Kan kaart niet dupliceren"
},
"K7k9u3": {
"translation": "Kan kaart niet verplaatsen",
"message": "Unable to move card",
"placeholders": {},
"comments": [],
"origin": [["src/views/board/components/CardContextMoveListModal.tsx", 41]]
"origin": [["src/views/board/components/CardContextMoveListModal.tsx", 41]],
"translation": "Kan kaart niet verplaatsen"
},
"8yFGGF": {
"message": "Unable to remove member",
@@ -5854,6 +5990,13 @@
"origin": [["src/components/FeedbackModal.tsx", 40]],
"translation": "Kan feedback niet verzenden"
},
"Q60WUZ": {
"message": "Unable to start checkout",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/workspace-details/index.tsx", 149]],
"translation": "Kan afrekenen niet starten"
},
"T7Mywq": {
"message": "Unable to update board",
"placeholders": {},
@@ -5880,7 +6023,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/index.tsx", 272],
["src/views/board/index.tsx", 273],
["src/views/card/index.tsx", 231]
],
"translation": "Kan kaart niet bijwerken"
@@ -5925,7 +6068,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/index.tsx", 216],
["src/views/board/index.tsx", 217],
["src/views/card/components/ListSelector.tsx", 54]
],
"translation": "Kan lijst niet bijwerken"
@@ -6053,14 +6196,21 @@
"placeholders": {},
"comments": [],
"origin": [
["src/components/NewWorkspaceForm.tsx", 333],
["src/components/NewWorkspaceForm.tsx", 297],
["src/views/pricing/components/FeatureComparisonTable.tsx", 84],
["src/views/pricing/components/FeatureComparisonTable.tsx", 85],
["src/views/pricing/components/PricingTiers.tsx", 80],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 66]
["src/views/settings/components/UpgradeToProConfirmation.tsx", 68]
],
"translation": "Onbeperkt leden"
},
"8AwlaR": {
"message": "Unlimited members and a custom workspace username for teams ready to scale.",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 94]],
"translation": "Onbeperkt aantal leden en een aangepaste werkruimte-URL voor teams die klaar zijn om te groeien."
},
"Ws+3X+": {
"message": "Unlimited seats and advanced features for growing teams.",
"placeholders": {},
@@ -6141,7 +6291,7 @@
"comments": [],
"origin": [
["src/components/SideNavigation.tsx", 240],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 53],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 55],
["src/views/settings/WorkspaceSettings.tsx", 118]
],
"translation": "Upgrade naar Pro"
@@ -6150,7 +6300,10 @@
"message": "Upgrade to Pro ($29/month)",
"placeholders": {},
"comments": [],
"origin": [["src/components/NewWorkspaceForm.tsx", 373]],
"origin": [
["src/components/NewWorkspaceForm.tsx", 337],
["src/views/onboarding/workspace-details/index.tsx", 243]
],
"translation": "Upgrade naar Pro ($29/maand)"
},
"b3Thhd": {
@@ -6434,7 +6587,7 @@
"comments": [],
"origin": [
["src/components/SettingsLayout.tsx", 47],
["src/views/board/index.tsx", 529],
["src/views/board/index.tsx", 530],
["src/views/boards/index.tsx", 48],
["src/views/members/index.tsx", 258],
["src/views/public/board/index.tsx", 125],
@@ -6447,7 +6600,8 @@
"placeholders": {},
"comments": [],
"origin": [["src/components/NewWorkspaceForm.tsx", 147]],
"translation": "Workspace succesvol aangemaakt. Je kunt later upgraden in de instellingen."
"translation": "Workspace succesvol aangemaakt. Je kunt later upgraden in de instellingen.",
"obsolete": true
},
"UlhdTP": {
"message": "Workspace deleted",
@@ -6462,7 +6616,10 @@
"message": "Workspace description",
"placeholders": {},
"comments": [],
"origin": [["src/views/settings/WorkspaceSettings.tsx", 82]],
"origin": [
["src/views/onboarding/workspace-details/index.tsx", 253],
["src/views/settings/WorkspaceSettings.tsx", 82]
],
"translation": "Workspace-beschrijving"
},
"Ax/hYa": {
@@ -6508,7 +6665,8 @@
"placeholders": {},
"comments": [],
"origin": [
["src/components/NewWorkspaceForm.tsx", 263],
["src/components/NewWorkspaceForm.tsx", 227],
["src/views/onboarding/workspace-details/index.tsx", 188],
["src/views/settings/WorkspaceSettings.tsx", 63]
],
"translation": "Workspace-naam"
@@ -6582,7 +6740,7 @@
"message": "workspace-url",
"placeholders": {},
"comments": [],
"origin": [["src/components/NewWorkspaceForm.tsx", 277]],
"origin": [["src/components/NewWorkspaceForm.tsx", 241]],
"translation": "werkruimte-url"
},
"4kJRen": {
@@ -6616,6 +6774,13 @@
"origin": [["src/views/settings/AccountSettings.tsx", 91]],
"translation": "Je staat op het punt je wachtwoord te wijzigen."
},
"3WXdoZ": {
"message": "You can always change these later in settings.",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/workspace-details/index.tsx", 182]],
"translation": "Je kunt dit later altijd wijzigen in de instellingen."
},
"aelko+": {
"message": "You can get a custom workspace URL, like <0>kan.bn/kan</0>, by going into your <1>workspace settings</1> and purchasing a pro workspace subscription. All subscriptions help fund the development of the project!",
"placeholders": {},
@@ -6645,8 +6810,8 @@
["src/views/board/components/List.tsx", 117],
["src/views/board/components/UpdateBoardSlugButton.tsx", 58],
["src/views/board/components/VisibilityButton.tsx", 72],
["src/views/board/index.tsx", 603],
["src/views/board/index.tsx", 661],
["src/views/board/index.tsx", 604],
["src/views/board/index.tsx", 662],
["src/views/boards/components/BoardsList.tsx", 71],
["src/views/boards/index.tsx", 59],
["src/views/boards/index.tsx", 80]
@@ -6711,6 +6876,13 @@
],
"translation": "Je account is verwijderd."
},
"c4nMcR": {
"message": "Your avatar",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 229]],
"translation": "Jouw avatar"
},
"evg7+A": {
"message": "Your boards have been imported.",
"placeholders": {},
@@ -6797,6 +6969,20 @@
"origin": [["src/pages/unsubscribe/index.tsx", 33]],
"translation": "Je afmeldlink mist een token. Open de nieuwste e-mail en probeer het opnieuw."
},
"GRAGsB": {
"message": "Your workspace",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/workspace-details/index.tsx", 322]],
"translation": "Jouw werkruimte"
},
"j0o6ml": {
"message": "Your workspace description",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/workspace-details/index.tsx", 325]],
"translation": "Jouw werkruimtebeschrijving"
},
"GnSSGm": {
"message": "Your workspace description has been updated.",
"placeholders": {},
@@ -6833,6 +7019,16 @@
],
"translation": "Je werkruimte-slug is bijgewerkt."
},
"OTxjpR": {
"message": "your-workspace",
"placeholders": {},
"comments": [],
"origin": [
["src/views/onboarding/workspace-details/index.tsx", 197],
["src/views/onboarding/workspace-details/index.tsx", 198]
],
"translation": "jouw-werkruimte"
},
"4DOCMI": {
"message": "YouTube URL",
"placeholders": {},

File diff suppressed because one or more lines are too long

View File

@@ -71,7 +71,7 @@
"0": ["isTemplate ? \"Template\" : \"Board\""]
},
"comments": [],
"origin": [["src/views/board/index.tsx", 556]],
"origin": [["src/views/board/index.tsx", 557]],
"translation": "{0} nie znaleziono"
},
"0xWkkH": {
@@ -239,11 +239,11 @@
"translation": "Dzienniki aktywności"
},
"UGCIzB": {
"translation": "Dodaj / edytuj etykietę",
"message": "Add / edit label",
"placeholders": {},
"comments": [],
"origin": [["src/views/board/components/CardContextMenu.tsx", 50]]
"origin": [["src/views/board/components/CardContextMenu.tsx", 50]],
"translation": "Dodaj / edytuj etykietę"
},
"B3xxao": {
"message": "Add a card",
@@ -556,6 +556,13 @@
],
"translation": "Wystąpił nieoczekiwany błąd. Spróbuj ponownie później."
},
"YkfDoz": {
"message": "Annual",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 63]],
"translation": "Rocznie"
},
"3bqt9U": {
"message": "Anyone with this link can join your workspace",
"placeholders": {},
@@ -756,6 +763,13 @@
"origin": [["src/views/boards/components/TemplateBoards.tsx", 59]],
"translation": "Oczekiwanie na klienta"
},
"iH8pgl": {
"message": "Back",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/workspace-details/index.tsx", 275]],
"translation": "Wstecz"
},
"KNKCTb": {
"message": "Backlog",
"placeholders": {},
@@ -798,6 +812,13 @@
"origin": [["src/views/pricing/components/PricingTiers.tsx", 53]],
"translation": "Najlepsze dla małych i rozwijających się zespołów wymagających współpracy"
},
"zt/6cS": {
"message": "Best for small teams who want to collaborate and move faster together.",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 86]],
"translation": "Najlepszy dla małych zespołów, które chcą współpracować i działać szybciej razem."
},
"qaS+1/": {
"message": "Best for teams that want to scale without limits",
"placeholders": {},
@@ -849,7 +870,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/index.tsx", 529],
["src/views/board/index.tsx", 530],
["src/views/card/index.tsx", 317],
["src/views/public/board/index.tsx", 125]
],
@@ -860,8 +881,8 @@
"placeholders": {},
"comments": [],
"origin": [
["src/components/NewWorkspaceForm.tsx", 350],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 83]
["src/components/NewWorkspaceForm.tsx", 314],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 85]
],
"translation": "Analiza tablicy"
},
@@ -1249,6 +1270,7 @@
["src/views/card/components/DeleteChecklistConfirmation.tsx", 64],
["src/views/card/components/DeleteCommentConfirmation.tsx", 77],
["src/views/members/components/DeleteMemberConfirmation.tsx", 55],
["src/views/onboarding/select-plan/index.tsx", 209],
["src/views/settings/components/Avatar.tsx", 287],
["src/views/settings/components/ChangePasswordConfirmation.tsx", 168],
[
@@ -1258,7 +1280,7 @@
["src/views/settings/components/DeleteAccountConfirmation.tsx", 88],
["src/views/settings/components/DeleteWebhookConfirmation.tsx", 66],
["src/views/settings/components/DeleteWorkspaceConfirmation.tsx", 98],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 106]
["src/views/settings/components/UpgradeToProConfirmation.tsx", 108]
],
"translation": "Anuluj"
},
@@ -1270,11 +1292,13 @@
"translation": "Karta"
},
"sU2uWc": {
"translation": "Karta zduplikowana",
"message": "Card duplicated",
"placeholders": {},
"comments": [],
"origin": [["src/views/board/components/CardContextDuplicateModal.tsx", 67]]
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 67]
],
"translation": "Karta zduplikowana"
},
"fEY2vP": {
"message": "Card not found",
@@ -1298,7 +1322,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/index.tsx", 307],
["src/views/board/index.tsx", 308],
["src/views/card/components/Dropdown.tsx", 44],
["src/views/public/board/CardModal.tsx", 38]
],
@@ -1376,6 +1400,13 @@
],
"translation": "Checklisty"
},
"zMquA7": {
"message": "Choose a plan",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 122]],
"translation": "Wybierz plan"
},
"VHS0aJ": {
"message": "Clear all custom permissions?",
"placeholders": {},
@@ -1466,9 +1497,9 @@
"placeholders": {},
"comments": [],
"origin": [
["src/components/NewWorkspaceForm.tsx", 353],
["src/components/NewWorkspaceForm.tsx", 317],
["src/views/home/components/Features.tsx", 67],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 86]
["src/views/settings/components/UpgradeToProConfirmation.tsx", 88]
],
"translation": "Wkrótce dostępne"
},
@@ -1633,6 +1664,16 @@
"origin": [["src/views/boards/components/TemplateBoards.tsx", 40]],
"translation": "Tworzenie treści"
},
"xGVfLh": {
"message": "Continue",
"placeholders": {},
"comments": [],
"origin": [
["src/views/onboarding/select-plan/index.tsx", 212],
["src/views/onboarding/workspace-details/index.tsx", 291]
],
"translation": "Kontynuuj"
},
"J2Wbjt": {
"message": "Continue with ",
"placeholders": {},
@@ -1678,38 +1719,38 @@
"translation": "Kopiuj link do karty"
},
"0utuU6": {
"translation": "Kopiuj listy kontrolne",
"message": "Copy checklists",
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 257]
]
],
"translation": "Kopiuj listy kontrolne"
},
"fDQ7hA": {
"translation": "Kopiuj etykiety",
"message": "Copy labels",
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 221]
]
],
"translation": "Kopiuj etykiety"
},
"1bJKhj": {
"translation": "Kopiuj link do karty",
"message": "Copy link to card",
"placeholders": {},
"comments": [],
"origin": [["src/views/board/components/CardContextMenu.tsx", 62]]
"origin": [["src/views/board/components/CardContextMenu.tsx", 62]],
"translation": "Kopiuj link do karty"
},
"uvH2xS": {
"translation": "Kopiuj członków",
"message": "Copy members",
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 239]
]
],
"translation": "Kopiuj członków"
},
"9PaIxv": {
"message": "Core features",
@@ -1816,8 +1857,8 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/index.tsx", 91],
["src/views/board/index.tsx", 670]
["src/views/board/index.tsx", 92],
["src/views/board/index.tsx", 671]
],
"translation": "Utwórz nową listę"
},
@@ -1840,8 +1881,8 @@
"placeholders": {},
"comments": [],
"origin": [
["src/components/NewWorkspaceForm.tsx", 388],
["src/components/WorkspaceMenu.tsx", 153]
["src/components/NewWorkspaceForm.tsx", 352],
["src/components/WorkspaceMenu.tsx", 160]
],
"translation": "Utwórz workspace"
},
@@ -1928,7 +1969,7 @@
"message": "Custom URLs require upgrading to a Pro plan",
"placeholders": {},
"comments": [],
"origin": [["src/components/NewWorkspaceForm.tsx", 319]],
"origin": [["src/components/NewWorkspaceForm.tsx", 283]],
"translation": "Własne adresy URL wymagają przejścia na plan Pro"
},
"7RpHg/": {
@@ -1941,13 +1982,20 @@
],
"translation": "Niestandardowa nazwa użytkownika"
},
"ZDPJBc": {
"message": "Custom usernames require upgrading to a Pro plan",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/workspace-details/index.tsx", 220]],
"translation": "Niestandardowe nazwy użytkownika wymagają uaktualnienia do planu Pro"
},
"j9IZZ0": {
"message": "Custom workspace URL",
"placeholders": {},
"comments": [],
"origin": [
["src/components/NewWorkspaceForm.tsx", 343],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 76]
["src/components/NewWorkspaceForm.tsx", 307],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 78]
],
"translation": "Niestandardowy adres URL workspace"
},
@@ -2283,32 +2331,32 @@
"translation": "Termin jutro"
},
"euc6Ns": {
"translation": "Duplikuj",
"message": "Duplicate",
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 279]
]
],
"translation": "Duplikuj"
},
"BTDPLo": {
"translation": "Duplikuj kartę",
"message": "Duplicate card",
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 111],
["src/views/board/components/CardContextMenu.tsx", 68]
]
],
"translation": "Duplikuj kartę"
},
"06EQqT": {
"translation": "Duplikowanie…",
"message": "Duplicating…",
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 279]
]
],
"translation": "Duplikowanie…"
},
"ePK91l": {
"message": "Edit",
@@ -2423,13 +2471,20 @@
"translation": "Widoczność e-maila"
},
"bFREhu": {
"translation": "Koniec listy",
"message": "End of list",
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 200]
]
],
"translation": "Koniec listy"
},
"SUXBxp": {
"message": "Engineering",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/workspace-details/index.tsx", 161]],
"translation": "Inżynieria"
},
"0+ewPp": {
"message": "Enhancement",
@@ -2644,7 +2699,7 @@
"comments": [],
"origin": [
["src/views/members/components/InviteMemberForm.tsx", 240],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 41]
["src/views/settings/components/UpgradeToProConfirmation.tsx", 43]
],
"translation": "Błąd podczas aktualizacji subskrypcji"
},
@@ -2653,7 +2708,8 @@
"placeholders": {},
"comments": [],
"origin": [["src/components/NewWorkspaceForm.tsx", 146]],
"translation": "Błąd podczas aktualizacji do wersji Pro"
"translation": "Błąd podczas aktualizacji do wersji Pro",
"obsolete": true
},
"CYWHT+": {
"message": "Error uploading profile image",
@@ -2887,6 +2943,8 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/onboarding/select-plan/index.tsx", 77],
["src/views/onboarding/select-plan/index.tsx", 78],
["src/views/pricing/components/FeatureComparisonTable.tsx", 331],
["src/views/pricing/components/Pricing.tsx", 32],
["src/views/pricing/components/Pricing.tsx", 32],
@@ -2987,7 +3045,7 @@
"message": "Get started by creating a new list",
"placeholders": {},
"comments": [],
"origin": [["src/views/board/index.tsx", 655]],
"origin": [["src/views/board/index.tsx", 656]],
"translation": "Rozpocznij, tworząc nową listę"
},
"oW13KZ": {
@@ -3097,6 +3155,13 @@
"origin": [["src/components/SideNavigation.tsx", 119]],
"translation": "Przejdź do szablonów"
},
"SUvm1Y": {
"message": "Good for individuals starting out who just need the essentials.",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 79]],
"translation": "Dobry dla osób zaczynających, które potrzebują tylko podstaw."
},
"cdyS7J": {
"message": "Google SSO",
"placeholders": {},
@@ -3521,9 +3586,9 @@
"placeholders": {},
"comments": [],
"origin": [
["src/components/NewWorkspaceForm.tsx", 336],
["src/components/NewWorkspaceForm.tsx", 300],
["src/views/pricing/components/PricingTiers.tsx", 159],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 69]
["src/views/settings/components/UpgradeToProConfirmation.tsx", 71]
],
"translation": "Oferta na start"
},
@@ -3591,7 +3656,7 @@
"comments": [],
"origin": [
["src/views/board/components/UpdateBoardSlugButton.tsx", 80],
["src/views/board/index.tsx", 305],
["src/views/board/index.tsx", 306],
["src/views/card/components/Dropdown.tsx", 42],
["src/views/public/board/CardModal.tsx", 36],
["src/views/public/board/index.tsx", 77]
@@ -3695,14 +3760,14 @@
"translation": "Utwórz szablon"
},
"hB02vO": {
"translation": "Zarządzaj członkami",
"message": "Manage members",
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/components/CardContextMembersModal.tsx", 51],
["src/views/board/components/CardContextMenu.tsx", 38]
]
],
"translation": "Zarządzaj członkami"
},
"IDvohQ": {
"message": "marked a checklist item as incomplete",
@@ -3720,6 +3785,13 @@
"origin": [["src/views/card/components/ActivityList.tsx", 258]],
"translation": "oznaczył(a) element listy kontrolnej <0>{0}</0> jako nieukończony"
},
"vo2a+a": {
"message": "Marketing",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/workspace-details/index.tsx", 161]],
"translation": "Marketing"
},
"agPptk": {
"message": "Medium",
"placeholders": {},
@@ -3791,6 +3863,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/onboarding/select-plan/index.tsx", 62],
["src/views/pricing/components/Pricing.tsx", 14],
["src/views/pricing/index.tsx", 20]
],
@@ -3804,18 +3877,18 @@
"translation": "rozliczenie miesięczne"
},
"51UCsN": {
"translation": "Przenieś do innej listy",
"message": "Move to another list",
"placeholders": {},
"comments": [],
"origin": [["src/views/board/components/CardContextMenu.tsx", 44]]
"origin": [["src/views/board/components/CardContextMenu.tsx", 44]],
"translation": "Przenieś do innej listy"
},
"J4+OTA": {
"translation": "Przenieś do listy",
"message": "Move to list",
"placeholders": {},
"comments": [],
"origin": [["src/views/board/components/CardContextMoveListModal.tsx", 70]]
"origin": [["src/views/board/components/CardContextMoveListModal.tsx", 70]],
"translation": "Przenieś do listy"
},
"BOqTi5": {
"message": "moved the card from <0>{0}</0> to<1>{1}</1>",
@@ -3928,7 +4001,7 @@
"comments": [],
"origin": [
["src/views/board/components/NewListForm.tsx", 113],
["src/views/board/index.tsx", 619]
["src/views/board/index.tsx", 620]
],
"translation": "Nowa lista"
},
@@ -3975,7 +4048,7 @@
"message": "New workspace",
"placeholders": {},
"comments": [],
"origin": [["src/components/NewWorkspaceForm.tsx", 244]],
"origin": [["src/components/NewWorkspaceForm.tsx", 208]],
"translation": "Nowy workspace"
},
"5ACX4z": {
@@ -4054,14 +4127,14 @@
"message": "No lists",
"placeholders": {},
"comments": [],
"origin": [["src/views/board/index.tsx", 651]],
"origin": [["src/views/board/index.tsx", 652]],
"translation": "Brak list"
},
"fvLNDy": {
"message": "No lists have been created yet",
"placeholders": {},
"comments": [],
"origin": [["src/views/board/index.tsx", 656]],
"origin": [["src/views/board/index.tsx", 657]],
"translation": "Nie utworzono jeszcze żadnych list"
},
"i30J2U": {
@@ -4142,7 +4215,7 @@
"message": "Open command menu",
"placeholders": {},
"comments": [],
"origin": [["src/components/WorkspaceMenu.tsx", 31]],
"origin": [["src/components/WorkspaceMenu.tsx", 34]],
"translation": "Otwórz menu poleceń"
},
"cFQEU/": {
@@ -4358,6 +4431,13 @@
"origin": [["src/views/boards/components/TemplateBoards.tsx", 86]],
"translation": "Projekt osobisty"
},
"Oi+J+N": {
"message": "Pick a plan to get started. All paid plans include a 14-day free trial.",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 125]],
"translation": "Wybierz plan, aby rozpocząć. Wszystkie płatne plany zawierają 14-dniowy bezpłatny okres próbny."
},
"Iqh0Uv": {
"message": "Planned",
"placeholders": {},
@@ -4445,7 +4525,7 @@
"origin": [
["src/components/DeleteLabelConfirmation.tsx", 26],
["src/components/FeedbackModal.tsx", 41],
["src/components/NewWorkspaceForm.tsx", 159],
["src/components/NewWorkspaceForm.tsx", 123],
["src/views/board/components/BoardDropdown.tsx", 65],
["src/views/board/components/NewCardForm.tsx", 186],
["src/views/board/components/NewListForm.tsx", 79],
@@ -4453,8 +4533,8 @@
["src/views/board/components/NewTemplateForm.tsx", 77],
["src/views/board/components/UpdateBoardSlugForm.tsx", 73],
["src/views/board/components/VisibilityButton.tsx", 57],
["src/views/board/index.tsx", 217],
["src/views/board/index.tsx", 273],
["src/views/board/index.tsx", 218],
["src/views/board/index.tsx", 274],
["src/views/boards/components/ImportBoardsForm.tsx", 243],
["src/views/boards/components/ImportBoardsForm.tsx", 395],
["src/views/card/components/AttachmentThumbnails.tsx", 74],
@@ -4482,6 +4562,8 @@
["src/views/members/components/InviteMemberForm.tsx", 104],
["src/views/members/components/InviteMemberForm.tsx", 241],
["src/views/members/index.tsx", 66],
["src/views/onboarding/workspace-details/index.tsx", 101],
["src/views/onboarding/workspace-details/index.tsx", 150],
["src/views/settings/components/Avatar.tsx", 200],
["src/views/settings/components/DeleteAccountConfirmation.tsx", 40],
["src/views/settings/components/DeleteWorkspaceConfirmation.tsx", 46],
@@ -4489,7 +4571,7 @@
["src/views/settings/components/UpdateWorkspaceDescriptionForm.tsx", 64],
["src/views/settings/components/UpdateWorkspaceNameForm.tsx", 59],
["src/views/settings/components/UpdateWorkspaceUrlForm.tsx", 76],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 42],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 44],
["src/views/settings/PermissionsSettings.tsx", 40]
],
"translation": "Spróbuj ponownie później lub skontaktuj się z obsługą klienta."
@@ -4511,7 +4593,7 @@
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 76],
["src/views/board/components/CardContextMoveListModal.tsx", 42],
["src/views/board/index.tsx", 314],
["src/views/board/index.tsx", 315],
["src/views/card/components/Dropdown.tsx", 51],
["src/views/public/board/CardModal.tsx", 45],
["src/views/public/board/index.tsx", 86]
@@ -4519,13 +4601,13 @@
"translation": "Spróbuj ponownie."
},
"nYNMZZ": {
"translation": "Pozycja na liście (0 = pierwsza, puste pole = koniec)",
"message": "Position in list (0 = first, leave empty for end)",
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 193]
]
],
"translation": "Pozycja na liście (0 = pierwsza, puste pole = koniec)"
},
"aHCEmh": {
"message": "Pricing",
@@ -4549,7 +4631,7 @@
["src/views/pricing/components/FeatureComparisonTable.tsx", 275],
["src/views/pricing/components/Pricing.tsx", 56],
["src/views/pricing/components/PricingTiers.tsx", 61],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 93]
["src/views/settings/components/UpgradeToProConfirmation.tsx", 95]
],
"translation": "Priorytetowe wsparcie e-mailowe"
},
@@ -4572,6 +4654,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/onboarding/select-plan/index.tsx", 91],
["src/views/pricing/components/FeatureComparisonTable.tsx", 333],
["src/views/pricing/components/PricingTiers.tsx", 70]
],
@@ -4829,7 +4912,8 @@
"origin": [
["src/views/home/components/Footer.tsx", 36],
["src/views/home/components/Header.tsx", 13],
["src/views/home/components/Header.tsx", 28]
["src/views/home/components/Header.tsx", 28],
["src/views/onboarding/workspace-details/index.tsx", 161]
],
"translation": "Mapa drogowa"
},
@@ -4949,13 +5033,13 @@
"translation": "Zobacz, co nasi użytkownicy mówią o Kan"
},
"zYRVNp": {
"translation": "Wybierz listę",
"message": "Select a list",
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 131]
]
],
"translation": "Wybierz listę"
},
"wgNoIs": {
"message": "Select all",
@@ -5041,6 +5125,13 @@
"origin": [["src/views/card/components/ActivityList.tsx", 142]],
"translation": "ustaw termin"
},
"JjEJSy": {
"message": "Set up your workspace",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/workspace-details/index.tsx", 179]],
"translation": "Skonfiguruj swoją przestrzeń roboczą"
},
"Tz0i8g": {
"message": "Settings",
"placeholders": {},
@@ -5121,6 +5212,16 @@
"origin": [["src/views/invite/index.tsx", 154]],
"translation": "Zaloguj się"
},
"fcWrnU": {
"message": "Sign out",
"placeholders": {},
"comments": [],
"origin": [
["src/views/onboarding/select-plan/index.tsx", 284],
["src/views/onboarding/workspace-details/index.tsx", 362]
],
"translation": "Wyloguj się"
},
"mErq7F": {
"message": "Sign Up",
"placeholders": {},
@@ -5206,6 +5307,13 @@
"origin": [["src/views/boards/components/TemplateBoards.tsx", 22]],
"translation": "Software Development"
},
"6sKjjx": {
"message": "Solo",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 76]],
"translation": "Solo"
},
"vnS6Rf": {
"message": "SSO",
"placeholders": {},
@@ -5228,7 +5336,7 @@
"comments": [],
"origin": [
["src/views/members/components/InviteMemberForm.tsx", 359],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 111]
["src/views/settings/components/UpgradeToProConfirmation.tsx", 113]
],
"translation": "Rozpocznij 14-dniowy bezpłatny okres próbny"
},
@@ -5277,7 +5385,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/settings/components/UpgradeToProConfirmation.tsx", 57]
["src/views/settings/components/UpgradeToProConfirmation.tsx", 59]
],
"translation": "Ulepsz swoje środowisko pracy za jedyne 29$/miesiąc. Oto co otrzymasz:"
},
@@ -5305,6 +5413,13 @@
"origin": [["src/components/UserMenu.tsx", 144]],
"translation": "System"
},
"KM6m8p": {
"message": "Team",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 83]],
"translation": "Zespół"
},
"bff61F": {
"message": "Team Plan",
"placeholders": {},
@@ -5331,8 +5446,8 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/index.tsx", 529],
["src/views/board/index.tsx", 565]
["src/views/board/index.tsx", 530],
["src/views/board/index.tsx", 566]
],
"translation": "Szablon"
},
@@ -5427,11 +5542,13 @@
"translation": "Tablica została przywrócona z archiwum."
},
"nKBUeF": {
"translation": "Karta została zduplikowana.",
"message": "The card has been duplicated.",
"placeholders": {},
"comments": [],
"origin": [["src/views/board/components/CardContextDuplicateModal.tsx", 69]]
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 69]
],
"translation": "Karta została zduplikowana."
},
"jlB2RY": {
"message": "The current password you entered is incorrect.",
@@ -5555,6 +5672,20 @@
],
"translation": "Uprawnienia tego członka zostały zresetowane do domyślnych dla jego roli."
},
"HQVm6e": {
"message": "This URL has already been taken",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/workspace-details/index.tsx", 73]],
"translation": "Ten adres URL jest już zajęty"
},
"gKmoow": {
"message": "This URL is reserved",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/workspace-details/index.tsx", 75]],
"translation": "Ten adres URL jest zarezerwowany"
},
"OAYToL": {
"message": "This will remove all custom member permissions in this workspace. Members will inherit permissions only from their roles.",
"placeholders": {},
@@ -5589,14 +5720,14 @@
"message": "This workspace URL has already been taken",
"placeholders": {},
"comments": [],
"origin": [["src/components/NewWorkspaceForm.tsx", 288]],
"origin": [["src/components/NewWorkspaceForm.tsx", 252]],
"translation": "Ten adres URL workspacea jest już zajęty"
},
"bJtM0P": {
"message": "This workspace URL is reserved",
"placeholders": {},
"comments": [],
"origin": [["src/components/NewWorkspaceForm.tsx", 290]],
"origin": [["src/components/NewWorkspaceForm.tsx", 254]],
"translation": "Ten adres URL workspace jest zarezerwowany"
},
"kp6L3T": {
@@ -5616,13 +5747,13 @@
"translation": "Tytuł"
},
"wK4OTM": {
"translation": "Tytuł (opcjonalnie)",
"message": "Title (optional)",
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 180]
]
],
"translation": "Tytuł (opcjonalnie)"
},
"Se/UIp": {
"message": "To Do",
@@ -5726,7 +5857,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/index.tsx", 312],
["src/views/board/index.tsx", 313],
["src/views/card/components/Dropdown.tsx", 49],
["src/views/public/board/CardModal.tsx", 43],
["src/views/public/board/index.tsx", 84]
@@ -5768,7 +5899,10 @@
"message": "Unable to create workspace",
"placeholders": {},
"comments": [],
"origin": [["src/components/NewWorkspaceForm.tsx", 158]],
"origin": [
["src/components/NewWorkspaceForm.tsx", 122],
["src/views/onboarding/workspace-details/index.tsx", 100]
],
"translation": "Nie można utworzyć workspace"
},
"WHHLh9": {
@@ -5809,18 +5943,20 @@
"translation": "Nie można usunąć komentarza"
},
"Oo4E6p": {
"translation": "Nie można zduplikować karty",
"message": "Unable to duplicate card",
"placeholders": {},
"comments": [],
"origin": [["src/views/board/components/CardContextDuplicateModal.tsx", 75]]
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 75]
],
"translation": "Nie można zduplikować karty"
},
"K7k9u3": {
"translation": "Nie można przenieść karty",
"message": "Unable to move card",
"placeholders": {},
"comments": [],
"origin": [["src/views/board/components/CardContextMoveListModal.tsx", 41]]
"origin": [["src/views/board/components/CardContextMoveListModal.tsx", 41]],
"translation": "Nie można przenieść karty"
},
"8yFGGF": {
"message": "Unable to remove member",
@@ -5854,6 +5990,13 @@
"origin": [["src/components/FeedbackModal.tsx", 40]],
"translation": "Nie można wysłać opinii"
},
"Q60WUZ": {
"message": "Unable to start checkout",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/workspace-details/index.tsx", 149]],
"translation": "Nie można rozpocząć procesu płatności"
},
"T7Mywq": {
"message": "Unable to update board",
"placeholders": {},
@@ -5880,7 +6023,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/index.tsx", 272],
["src/views/board/index.tsx", 273],
["src/views/card/index.tsx", 231]
],
"translation": "Nie można zaktualizować karty"
@@ -5925,7 +6068,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/index.tsx", 216],
["src/views/board/index.tsx", 217],
["src/views/card/components/ListSelector.tsx", 54]
],
"translation": "Nie można zaktualizować listy"
@@ -6053,14 +6196,21 @@
"placeholders": {},
"comments": [],
"origin": [
["src/components/NewWorkspaceForm.tsx", 333],
["src/components/NewWorkspaceForm.tsx", 297],
["src/views/pricing/components/FeatureComparisonTable.tsx", 84],
["src/views/pricing/components/FeatureComparisonTable.tsx", 85],
["src/views/pricing/components/PricingTiers.tsx", 80],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 66]
["src/views/settings/components/UpgradeToProConfirmation.tsx", 68]
],
"translation": "Nielimitowani członkowie"
},
"8AwlaR": {
"message": "Unlimited members and a custom workspace username for teams ready to scale.",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 94]],
"translation": "Nieograniczona liczba członków i niestandardowa nazwa użytkownika przestrzeni roboczej dla zespołów gotowych do rozwoju."
},
"Ws+3X+": {
"message": "Unlimited seats and advanced features for growing teams.",
"placeholders": {},
@@ -6141,7 +6291,7 @@
"comments": [],
"origin": [
["src/components/SideNavigation.tsx", 240],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 53],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 55],
["src/views/settings/WorkspaceSettings.tsx", 118]
],
"translation": "Ulepsz do Pro"
@@ -6150,7 +6300,10 @@
"message": "Upgrade to Pro ($29/month)",
"placeholders": {},
"comments": [],
"origin": [["src/components/NewWorkspaceForm.tsx", 373]],
"origin": [
["src/components/NewWorkspaceForm.tsx", 337],
["src/views/onboarding/workspace-details/index.tsx", 243]
],
"translation": "Ulepsz do Pro (29 $/miesiąc)"
},
"b3Thhd": {
@@ -6434,7 +6587,7 @@
"comments": [],
"origin": [
["src/components/SettingsLayout.tsx", 47],
["src/views/board/index.tsx", 529],
["src/views/board/index.tsx", 530],
["src/views/boards/index.tsx", 48],
["src/views/members/index.tsx", 258],
["src/views/public/board/index.tsx", 125],
@@ -6447,7 +6600,8 @@
"placeholders": {},
"comments": [],
"origin": [["src/components/NewWorkspaceForm.tsx", 147]],
"translation": "Przestrzeń robocza została pomyślnie utworzona. Możesz później przejść na wyższy plan w ustawieniach."
"translation": "Przestrzeń robocza została pomyślnie utworzona. Możesz później przejść na wyższy plan w ustawieniach.",
"obsolete": true
},
"UlhdTP": {
"message": "Workspace deleted",
@@ -6462,7 +6616,10 @@
"message": "Workspace description",
"placeholders": {},
"comments": [],
"origin": [["src/views/settings/WorkspaceSettings.tsx", 82]],
"origin": [
["src/views/onboarding/workspace-details/index.tsx", 253],
["src/views/settings/WorkspaceSettings.tsx", 82]
],
"translation": "Opis przestrzeni roboczej"
},
"Ax/hYa": {
@@ -6508,7 +6665,8 @@
"placeholders": {},
"comments": [],
"origin": [
["src/components/NewWorkspaceForm.tsx", 263],
["src/components/NewWorkspaceForm.tsx", 227],
["src/views/onboarding/workspace-details/index.tsx", 188],
["src/views/settings/WorkspaceSettings.tsx", 63]
],
"translation": "Nazwa przestrzeni roboczej"
@@ -6582,7 +6740,7 @@
"message": "workspace-url",
"placeholders": {},
"comments": [],
"origin": [["src/components/NewWorkspaceForm.tsx", 277]],
"origin": [["src/components/NewWorkspaceForm.tsx", 241]],
"translation": "workspace-url"
},
"4kJRen": {
@@ -6616,6 +6774,13 @@
"origin": [["src/views/settings/AccountSettings.tsx", 91]],
"translation": "Zaraz zmienisz swoje hasło."
},
"3WXdoZ": {
"message": "You can always change these later in settings.",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/workspace-details/index.tsx", 182]],
"translation": "Zawsze możesz to później zmienić w ustawieniach."
},
"aelko+": {
"message": "You can get a custom workspace URL, like <0>kan.bn/kan</0>, by going into your <1>workspace settings</1> and purchasing a pro workspace subscription. All subscriptions help fund the development of the project!",
"placeholders": {},
@@ -6645,8 +6810,8 @@
["src/views/board/components/List.tsx", 117],
["src/views/board/components/UpdateBoardSlugButton.tsx", 58],
["src/views/board/components/VisibilityButton.tsx", 72],
["src/views/board/index.tsx", 603],
["src/views/board/index.tsx", 661],
["src/views/board/index.tsx", 604],
["src/views/board/index.tsx", 662],
["src/views/boards/components/BoardsList.tsx", 71],
["src/views/boards/index.tsx", 59],
["src/views/boards/index.tsx", 80]
@@ -6711,6 +6876,13 @@
],
"translation": "Twoje konto zostało usunięte."
},
"c4nMcR": {
"message": "Your avatar",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 229]],
"translation": "Twój awatar"
},
"evg7+A": {
"message": "Your boards have been imported.",
"placeholders": {},
@@ -6797,6 +6969,20 @@
"origin": [["src/pages/unsubscribe/index.tsx", 33]],
"translation": "Twój link do wypisania się nie zawiera tokena. Otwórz najnowszy e-mail i spróbuj ponownie."
},
"GRAGsB": {
"message": "Your workspace",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/workspace-details/index.tsx", 322]],
"translation": "Twoja przestrzeń robocza"
},
"j0o6ml": {
"message": "Your workspace description",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/workspace-details/index.tsx", 325]],
"translation": "Opis Twojej przestrzeni roboczej"
},
"GnSSGm": {
"message": "Your workspace description has been updated.",
"placeholders": {},
@@ -6833,6 +7019,16 @@
],
"translation": "Slug Twojego workspace został zaktualizowany."
},
"OTxjpR": {
"message": "your-workspace",
"placeholders": {},
"comments": [],
"origin": [
["src/views/onboarding/workspace-details/index.tsx", 197],
["src/views/onboarding/workspace-details/index.tsx", 198]
],
"translation": "twoja-przestrzen"
},
"4DOCMI": {
"message": "YouTube URL",
"placeholders": {},

File diff suppressed because one or more lines are too long

View File

@@ -71,7 +71,7 @@
"0": ["isTemplate ? \"Template\" : \"Board\""]
},
"comments": [],
"origin": [["src/views/board/index.tsx", 556]],
"origin": [["src/views/board/index.tsx", 557]],
"translation": "{0} não encontrado"
},
"0xWkkH": {
@@ -239,11 +239,11 @@
"translation": "Registros de atividades"
},
"UGCIzB": {
"translation": "Adicionar / editar etiqueta",
"message": "Add / edit label",
"placeholders": {},
"comments": [],
"origin": [["src/views/board/components/CardContextMenu.tsx", 50]]
"origin": [["src/views/board/components/CardContextMenu.tsx", 50]],
"translation": "Adicionar / editar etiqueta"
},
"B3xxao": {
"message": "Add a card",
@@ -556,6 +556,13 @@
],
"translation": "Ocorreu um erro inesperado. Por favor, tente novamente mais tarde."
},
"YkfDoz": {
"message": "Annual",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 63]],
"translation": "Anual"
},
"3bqt9U": {
"message": "Anyone with this link can join your workspace",
"placeholders": {},
@@ -756,6 +763,13 @@
"origin": [["src/views/boards/components/TemplateBoards.tsx", 59]],
"translation": "Aguardando cliente"
},
"iH8pgl": {
"message": "Back",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/workspace-details/index.tsx", 275]],
"translation": "Voltar"
},
"KNKCTb": {
"message": "Backlog",
"placeholders": {},
@@ -798,6 +812,13 @@
"origin": [["src/views/pricing/components/PricingTiers.tsx", 53]],
"translation": "Ideal para equipes pequenas e em crescimento que precisam de colaboração"
},
"zt/6cS": {
"message": "Best for small teams who want to collaborate and move faster together.",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 86]],
"translation": "Ideal para pequenas equipes que desejam colaborar e avançar mais rápido juntas."
},
"qaS+1/": {
"message": "Best for teams that want to scale without limits",
"placeholders": {},
@@ -849,7 +870,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/index.tsx", 529],
["src/views/board/index.tsx", 530],
["src/views/card/index.tsx", 317],
["src/views/public/board/index.tsx", 125]
],
@@ -860,8 +881,8 @@
"placeholders": {},
"comments": [],
"origin": [
["src/components/NewWorkspaceForm.tsx", 350],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 83]
["src/components/NewWorkspaceForm.tsx", 314],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 85]
],
"translation": "Análise do quadro"
},
@@ -1249,6 +1270,7 @@
["src/views/card/components/DeleteChecklistConfirmation.tsx", 64],
["src/views/card/components/DeleteCommentConfirmation.tsx", 77],
["src/views/members/components/DeleteMemberConfirmation.tsx", 55],
["src/views/onboarding/select-plan/index.tsx", 209],
["src/views/settings/components/Avatar.tsx", 287],
["src/views/settings/components/ChangePasswordConfirmation.tsx", 168],
[
@@ -1258,7 +1280,7 @@
["src/views/settings/components/DeleteAccountConfirmation.tsx", 88],
["src/views/settings/components/DeleteWebhookConfirmation.tsx", 66],
["src/views/settings/components/DeleteWorkspaceConfirmation.tsx", 98],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 106]
["src/views/settings/components/UpgradeToProConfirmation.tsx", 108]
],
"translation": "Cancelar"
},
@@ -1270,11 +1292,13 @@
"translation": "Cartão"
},
"sU2uWc": {
"translation": "Cartão duplicado",
"message": "Card duplicated",
"placeholders": {},
"comments": [],
"origin": [["src/views/board/components/CardContextDuplicateModal.tsx", 67]]
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 67]
],
"translation": "Cartão duplicado"
},
"fEY2vP": {
"message": "Card not found",
@@ -1298,7 +1322,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/index.tsx", 307],
["src/views/board/index.tsx", 308],
["src/views/card/components/Dropdown.tsx", 44],
["src/views/public/board/CardModal.tsx", 38]
],
@@ -1376,6 +1400,13 @@
],
"translation": "Checklists"
},
"zMquA7": {
"message": "Choose a plan",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 122]],
"translation": "Escolha um plano"
},
"VHS0aJ": {
"message": "Clear all custom permissions?",
"placeholders": {},
@@ -1466,9 +1497,9 @@
"placeholders": {},
"comments": [],
"origin": [
["src/components/NewWorkspaceForm.tsx", 353],
["src/components/NewWorkspaceForm.tsx", 317],
["src/views/home/components/Features.tsx", 67],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 86]
["src/views/settings/components/UpgradeToProConfirmation.tsx", 88]
],
"translation": "Em breve"
},
@@ -1633,6 +1664,16 @@
"origin": [["src/views/boards/components/TemplateBoards.tsx", 40]],
"translation": "Criação de conteúdo"
},
"xGVfLh": {
"message": "Continue",
"placeholders": {},
"comments": [],
"origin": [
["src/views/onboarding/select-plan/index.tsx", 212],
["src/views/onboarding/workspace-details/index.tsx", 291]
],
"translation": "Continuar"
},
"J2Wbjt": {
"message": "Continue with ",
"placeholders": {},
@@ -1678,38 +1719,38 @@
"translation": "Copiar link do cartão"
},
"0utuU6": {
"translation": "Copiar checklists",
"message": "Copy checklists",
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 257]
]
],
"translation": "Copiar checklists"
},
"fDQ7hA": {
"translation": "Copiar etiquetas",
"message": "Copy labels",
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 221]
]
],
"translation": "Copiar etiquetas"
},
"1bJKhj": {
"translation": "Copiar link do cartão",
"message": "Copy link to card",
"placeholders": {},
"comments": [],
"origin": [["src/views/board/components/CardContextMenu.tsx", 62]]
"origin": [["src/views/board/components/CardContextMenu.tsx", 62]],
"translation": "Copiar link do cartão"
},
"uvH2xS": {
"translation": "Copiar membros",
"message": "Copy members",
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 239]
]
],
"translation": "Copiar membros"
},
"9PaIxv": {
"message": "Core features",
@@ -1816,8 +1857,8 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/index.tsx", 91],
["src/views/board/index.tsx", 670]
["src/views/board/index.tsx", 92],
["src/views/board/index.tsx", 671]
],
"translation": "Criar nova lista"
},
@@ -1840,8 +1881,8 @@
"placeholders": {},
"comments": [],
"origin": [
["src/components/NewWorkspaceForm.tsx", 388],
["src/components/WorkspaceMenu.tsx", 153]
["src/components/NewWorkspaceForm.tsx", 352],
["src/components/WorkspaceMenu.tsx", 160]
],
"translation": "Criar workspace"
},
@@ -1928,7 +1969,7 @@
"message": "Custom URLs require upgrading to a Pro plan",
"placeholders": {},
"comments": [],
"origin": [["src/components/NewWorkspaceForm.tsx", 319]],
"origin": [["src/components/NewWorkspaceForm.tsx", 283]],
"translation": "URLs personalizadas exigem upgrade para um plano Pro"
},
"7RpHg/": {
@@ -1941,13 +1982,20 @@
],
"translation": "Nome de usuário personalizado"
},
"ZDPJBc": {
"message": "Custom usernames require upgrading to a Pro plan",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/workspace-details/index.tsx", 220]],
"translation": "Nomes de usuário personalizados exigem atualização para um plano Pro"
},
"j9IZZ0": {
"message": "Custom workspace URL",
"placeholders": {},
"comments": [],
"origin": [
["src/components/NewWorkspaceForm.tsx", 343],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 76]
["src/components/NewWorkspaceForm.tsx", 307],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 78]
],
"translation": "URL do workspace personalizada"
},
@@ -2283,32 +2331,32 @@
"translation": "Vence amanhã"
},
"euc6Ns": {
"translation": "Duplicar",
"message": "Duplicate",
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 279]
]
],
"translation": "Duplicar"
},
"BTDPLo": {
"translation": "Duplicar cartão",
"message": "Duplicate card",
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 111],
["src/views/board/components/CardContextMenu.tsx", 68]
]
],
"translation": "Duplicar cartão"
},
"06EQqT": {
"translation": "Duplicando…",
"message": "Duplicating…",
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 279]
]
],
"translation": "Duplicando…"
},
"ePK91l": {
"message": "Edit",
@@ -2423,13 +2471,20 @@
"translation": "Visibilidade do email"
},
"bFREhu": {
"translation": "Fim da lista",
"message": "End of list",
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 200]
]
],
"translation": "Fim da lista"
},
"SUXBxp": {
"message": "Engineering",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/workspace-details/index.tsx", 161]],
"translation": "Engenharia"
},
"0+ewPp": {
"message": "Enhancement",
@@ -2644,7 +2699,7 @@
"comments": [],
"origin": [
["src/views/members/components/InviteMemberForm.tsx", 240],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 41]
["src/views/settings/components/UpgradeToProConfirmation.tsx", 43]
],
"translation": "Erro ao fazer upgrade da assinatura"
},
@@ -2653,7 +2708,8 @@
"placeholders": {},
"comments": [],
"origin": [["src/components/NewWorkspaceForm.tsx", 146]],
"translation": "Erro ao fazer upgrade para Pro"
"translation": "Erro ao fazer upgrade para Pro",
"obsolete": true
},
"CYWHT+": {
"message": "Error uploading profile image",
@@ -2887,6 +2943,8 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/onboarding/select-plan/index.tsx", 77],
["src/views/onboarding/select-plan/index.tsx", 78],
["src/views/pricing/components/FeatureComparisonTable.tsx", 331],
["src/views/pricing/components/Pricing.tsx", 32],
["src/views/pricing/components/Pricing.tsx", 32],
@@ -2987,7 +3045,7 @@
"message": "Get started by creating a new list",
"placeholders": {},
"comments": [],
"origin": [["src/views/board/index.tsx", 655]],
"origin": [["src/views/board/index.tsx", 656]],
"translation": "Comece criando uma nova lista"
},
"oW13KZ": {
@@ -3097,6 +3155,13 @@
"origin": [["src/components/SideNavigation.tsx", 119]],
"translation": "Ir para modelos"
},
"SUvm1Y": {
"message": "Good for individuals starting out who just need the essentials.",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 79]],
"translation": "Bom para indivíduos começando que precisam apenas do essencial."
},
"cdyS7J": {
"message": "Google SSO",
"placeholders": {},
@@ -3521,9 +3586,9 @@
"placeholders": {},
"comments": [],
"origin": [
["src/components/NewWorkspaceForm.tsx", 336],
["src/components/NewWorkspaceForm.tsx", 300],
["src/views/pricing/components/PricingTiers.tsx", 159],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 69]
["src/views/settings/components/UpgradeToProConfirmation.tsx", 71]
],
"translation": "Oferta de lançamento"
},
@@ -3591,7 +3656,7 @@
"comments": [],
"origin": [
["src/views/board/components/UpdateBoardSlugButton.tsx", 80],
["src/views/board/index.tsx", 305],
["src/views/board/index.tsx", 306],
["src/views/card/components/Dropdown.tsx", 42],
["src/views/public/board/CardModal.tsx", 36],
["src/views/public/board/index.tsx", 77]
@@ -3695,14 +3760,14 @@
"translation": "Criar modelo"
},
"hB02vO": {
"translation": "Gerenciar membros",
"message": "Manage members",
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/components/CardContextMembersModal.tsx", 51],
["src/views/board/components/CardContextMenu.tsx", 38]
]
],
"translation": "Gerenciar membros"
},
"IDvohQ": {
"message": "marked a checklist item as incomplete",
@@ -3720,6 +3785,13 @@
"origin": [["src/views/card/components/ActivityList.tsx", 258]],
"translation": "marcou o item da checklist <0>{0}</0> como incompleto"
},
"vo2a+a": {
"message": "Marketing",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/workspace-details/index.tsx", 161]],
"translation": "Marketing"
},
"agPptk": {
"message": "Medium",
"placeholders": {},
@@ -3791,6 +3863,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/onboarding/select-plan/index.tsx", 62],
["src/views/pricing/components/Pricing.tsx", 14],
["src/views/pricing/index.tsx", 20]
],
@@ -3804,18 +3877,18 @@
"translation": "cobrança mensal"
},
"51UCsN": {
"translation": "Mover para outra lista",
"message": "Move to another list",
"placeholders": {},
"comments": [],
"origin": [["src/views/board/components/CardContextMenu.tsx", 44]]
"origin": [["src/views/board/components/CardContextMenu.tsx", 44]],
"translation": "Mover para outra lista"
},
"J4+OTA": {
"translation": "Mover para lista",
"message": "Move to list",
"placeholders": {},
"comments": [],
"origin": [["src/views/board/components/CardContextMoveListModal.tsx", 70]]
"origin": [["src/views/board/components/CardContextMoveListModal.tsx", 70]],
"translation": "Mover para lista"
},
"BOqTi5": {
"message": "moved the card from <0>{0}</0> to<1>{1}</1>",
@@ -3928,7 +4001,7 @@
"comments": [],
"origin": [
["src/views/board/components/NewListForm.tsx", 113],
["src/views/board/index.tsx", 619]
["src/views/board/index.tsx", 620]
],
"translation": "Nova lista"
},
@@ -3975,7 +4048,7 @@
"message": "New workspace",
"placeholders": {},
"comments": [],
"origin": [["src/components/NewWorkspaceForm.tsx", 244]],
"origin": [["src/components/NewWorkspaceForm.tsx", 208]],
"translation": "Novo workspace"
},
"5ACX4z": {
@@ -4054,14 +4127,14 @@
"message": "No lists",
"placeholders": {},
"comments": [],
"origin": [["src/views/board/index.tsx", 651]],
"origin": [["src/views/board/index.tsx", 652]],
"translation": "Nenhuma lista"
},
"fvLNDy": {
"message": "No lists have been created yet",
"placeholders": {},
"comments": [],
"origin": [["src/views/board/index.tsx", 656]],
"origin": [["src/views/board/index.tsx", 657]],
"translation": "Nenhuma lista foi criada ainda"
},
"i30J2U": {
@@ -4142,7 +4215,7 @@
"message": "Open command menu",
"placeholders": {},
"comments": [],
"origin": [["src/components/WorkspaceMenu.tsx", 31]],
"origin": [["src/components/WorkspaceMenu.tsx", 34]],
"translation": "Abrir menu de comandos"
},
"cFQEU/": {
@@ -4358,6 +4431,13 @@
"origin": [["src/views/boards/components/TemplateBoards.tsx", 86]],
"translation": "Projeto pessoal"
},
"Oi+J+N": {
"message": "Pick a plan to get started. All paid plans include a 14-day free trial.",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 125]],
"translation": "Escolha um plano para começar. Todos os planos pagos incluem 14 dias de teste grátis."
},
"Iqh0Uv": {
"message": "Planned",
"placeholders": {},
@@ -4445,7 +4525,7 @@
"origin": [
["src/components/DeleteLabelConfirmation.tsx", 26],
["src/components/FeedbackModal.tsx", 41],
["src/components/NewWorkspaceForm.tsx", 159],
["src/components/NewWorkspaceForm.tsx", 123],
["src/views/board/components/BoardDropdown.tsx", 65],
["src/views/board/components/NewCardForm.tsx", 186],
["src/views/board/components/NewListForm.tsx", 79],
@@ -4453,8 +4533,8 @@
["src/views/board/components/NewTemplateForm.tsx", 77],
["src/views/board/components/UpdateBoardSlugForm.tsx", 73],
["src/views/board/components/VisibilityButton.tsx", 57],
["src/views/board/index.tsx", 217],
["src/views/board/index.tsx", 273],
["src/views/board/index.tsx", 218],
["src/views/board/index.tsx", 274],
["src/views/boards/components/ImportBoardsForm.tsx", 243],
["src/views/boards/components/ImportBoardsForm.tsx", 395],
["src/views/card/components/AttachmentThumbnails.tsx", 74],
@@ -4482,6 +4562,8 @@
["src/views/members/components/InviteMemberForm.tsx", 104],
["src/views/members/components/InviteMemberForm.tsx", 241],
["src/views/members/index.tsx", 66],
["src/views/onboarding/workspace-details/index.tsx", 101],
["src/views/onboarding/workspace-details/index.tsx", 150],
["src/views/settings/components/Avatar.tsx", 200],
["src/views/settings/components/DeleteAccountConfirmation.tsx", 40],
["src/views/settings/components/DeleteWorkspaceConfirmation.tsx", 46],
@@ -4489,7 +4571,7 @@
["src/views/settings/components/UpdateWorkspaceDescriptionForm.tsx", 64],
["src/views/settings/components/UpdateWorkspaceNameForm.tsx", 59],
["src/views/settings/components/UpdateWorkspaceUrlForm.tsx", 76],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 42],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 44],
["src/views/settings/PermissionsSettings.tsx", 40]
],
"translation": "Por favor, tente novamente mais tarde ou entre em contato com o suporte ao cliente."
@@ -4511,7 +4593,7 @@
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 76],
["src/views/board/components/CardContextMoveListModal.tsx", 42],
["src/views/board/index.tsx", 314],
["src/views/board/index.tsx", 315],
["src/views/card/components/Dropdown.tsx", 51],
["src/views/public/board/CardModal.tsx", 45],
["src/views/public/board/index.tsx", 86]
@@ -4519,13 +4601,13 @@
"translation": "Por favor, tente novamente."
},
"nYNMZZ": {
"translation": "Posição na lista (0 = primeira, deixe vazio para o final)",
"message": "Position in list (0 = first, leave empty for end)",
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 193]
]
],
"translation": "Posição na lista (0 = primeira, deixe vazio para o final)"
},
"aHCEmh": {
"message": "Pricing",
@@ -4549,7 +4631,7 @@
["src/views/pricing/components/FeatureComparisonTable.tsx", 275],
["src/views/pricing/components/Pricing.tsx", 56],
["src/views/pricing/components/PricingTiers.tsx", 61],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 93]
["src/views/settings/components/UpgradeToProConfirmation.tsx", 95]
],
"translation": "Suporte prioritário por e-mail"
},
@@ -4572,6 +4654,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/onboarding/select-plan/index.tsx", 91],
["src/views/pricing/components/FeatureComparisonTable.tsx", 333],
["src/views/pricing/components/PricingTiers.tsx", 70]
],
@@ -4829,7 +4912,8 @@
"origin": [
["src/views/home/components/Footer.tsx", 36],
["src/views/home/components/Header.tsx", 13],
["src/views/home/components/Header.tsx", 28]
["src/views/home/components/Header.tsx", 28],
["src/views/onboarding/workspace-details/index.tsx", 161]
],
"translation": "Roadmap"
},
@@ -4949,13 +5033,13 @@
"translation": "Veja o que nossos usuários estão dizendo sobre o Kan"
},
"zYRVNp": {
"translation": "Selecione uma lista",
"message": "Select a list",
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 131]
]
],
"translation": "Selecione uma lista"
},
"wgNoIs": {
"message": "Select all",
@@ -5041,6 +5125,13 @@
"origin": [["src/views/card/components/ActivityList.tsx", 142]],
"translation": "definiu a data de vencimento"
},
"JjEJSy": {
"message": "Set up your workspace",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/workspace-details/index.tsx", 179]],
"translation": "Configure seu workspace"
},
"Tz0i8g": {
"message": "Settings",
"placeholders": {},
@@ -5121,6 +5212,16 @@
"origin": [["src/views/invite/index.tsx", 154]],
"translation": "Entrar"
},
"fcWrnU": {
"message": "Sign out",
"placeholders": {},
"comments": [],
"origin": [
["src/views/onboarding/select-plan/index.tsx", 284],
["src/views/onboarding/workspace-details/index.tsx", 362]
],
"translation": "Sair"
},
"mErq7F": {
"message": "Sign Up",
"placeholders": {},
@@ -5206,6 +5307,13 @@
"origin": [["src/views/boards/components/TemplateBoards.tsx", 22]],
"translation": "Desenvolvimento de software"
},
"6sKjjx": {
"message": "Solo",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 76]],
"translation": "Solo"
},
"vnS6Rf": {
"message": "SSO",
"placeholders": {},
@@ -5228,7 +5336,7 @@
"comments": [],
"origin": [
["src/views/members/components/InviteMemberForm.tsx", 359],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 111]
["src/views/settings/components/UpgradeToProConfirmation.tsx", 113]
],
"translation": "Iniciar teste grátis de 14 dias"
},
@@ -5277,7 +5385,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/settings/components/UpgradeToProConfirmation.tsx", 57]
["src/views/settings/components/UpgradeToProConfirmation.tsx", 59]
],
"translation": "Turbine seu workspace por apenas $29/mês. Veja o que você vai receber:"
},
@@ -5305,6 +5413,13 @@
"origin": [["src/components/UserMenu.tsx", 144]],
"translation": "Sistema"
},
"KM6m8p": {
"message": "Team",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 83]],
"translation": "Equipe"
},
"bff61F": {
"message": "Team Plan",
"placeholders": {},
@@ -5331,8 +5446,8 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/index.tsx", 529],
["src/views/board/index.tsx", 565]
["src/views/board/index.tsx", 530],
["src/views/board/index.tsx", 566]
],
"translation": "Modelo"
},
@@ -5427,11 +5542,13 @@
"translation": "O quadro foi desarquivado."
},
"nKBUeF": {
"translation": "O cartão foi duplicado.",
"message": "The card has been duplicated.",
"placeholders": {},
"comments": [],
"origin": [["src/views/board/components/CardContextDuplicateModal.tsx", 69]]
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 69]
],
"translation": "O cartão foi duplicado."
},
"jlB2RY": {
"message": "The current password you entered is incorrect.",
@@ -5555,6 +5672,20 @@
],
"translation": "As permissões deste membro foram redefinidas para os padrões de sua função."
},
"HQVm6e": {
"message": "This URL has already been taken",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/workspace-details/index.tsx", 73]],
"translation": "Esta URL já está em uso"
},
"gKmoow": {
"message": "This URL is reserved",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/workspace-details/index.tsx", 75]],
"translation": "Esta URL é reservada"
},
"OAYToL": {
"message": "This will remove all custom member permissions in this workspace. Members will inherit permissions only from their roles.",
"placeholders": {},
@@ -5589,14 +5720,14 @@
"message": "This workspace URL has already been taken",
"placeholders": {},
"comments": [],
"origin": [["src/components/NewWorkspaceForm.tsx", 288]],
"origin": [["src/components/NewWorkspaceForm.tsx", 252]],
"translation": "Esta URL de workspace já foi utilizada"
},
"bJtM0P": {
"message": "This workspace URL is reserved",
"placeholders": {},
"comments": [],
"origin": [["src/components/NewWorkspaceForm.tsx", 290]],
"origin": [["src/components/NewWorkspaceForm.tsx", 254]],
"translation": "Esta URL de workspace está reservada"
},
"kp6L3T": {
@@ -5616,13 +5747,13 @@
"translation": "Título"
},
"wK4OTM": {
"translation": "Título (opcional)",
"message": "Title (optional)",
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 180]
]
],
"translation": "Título (opcional)"
},
"Se/UIp": {
"message": "To Do",
@@ -5726,7 +5857,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/index.tsx", 312],
["src/views/board/index.tsx", 313],
["src/views/card/components/Dropdown.tsx", 49],
["src/views/public/board/CardModal.tsx", 43],
["src/views/public/board/index.tsx", 84]
@@ -5768,7 +5899,10 @@
"message": "Unable to create workspace",
"placeholders": {},
"comments": [],
"origin": [["src/components/NewWorkspaceForm.tsx", 158]],
"origin": [
["src/components/NewWorkspaceForm.tsx", 122],
["src/views/onboarding/workspace-details/index.tsx", 100]
],
"translation": "Não foi possível criar workspace"
},
"WHHLh9": {
@@ -5809,18 +5943,20 @@
"translation": "Não foi possível excluir o comentário"
},
"Oo4E6p": {
"translation": "Não foi possível duplicar o cartão",
"message": "Unable to duplicate card",
"placeholders": {},
"comments": [],
"origin": [["src/views/board/components/CardContextDuplicateModal.tsx", 75]]
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 75]
],
"translation": "Não foi possível duplicar o cartão"
},
"K7k9u3": {
"translation": "Não foi possível mover o cartão",
"message": "Unable to move card",
"placeholders": {},
"comments": [],
"origin": [["src/views/board/components/CardContextMoveListModal.tsx", 41]]
"origin": [["src/views/board/components/CardContextMoveListModal.tsx", 41]],
"translation": "Não foi possível mover o cartão"
},
"8yFGGF": {
"message": "Unable to remove member",
@@ -5854,6 +5990,13 @@
"origin": [["src/components/FeedbackModal.tsx", 40]],
"translation": "Não foi possível enviar o feedback"
},
"Q60WUZ": {
"message": "Unable to start checkout",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/workspace-details/index.tsx", 149]],
"translation": "Não foi possível iniciar o checkout"
},
"T7Mywq": {
"message": "Unable to update board",
"placeholders": {},
@@ -5880,7 +6023,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/index.tsx", 272],
["src/views/board/index.tsx", 273],
["src/views/card/index.tsx", 231]
],
"translation": "Não foi possível atualizar o cartão"
@@ -5925,7 +6068,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/index.tsx", 216],
["src/views/board/index.tsx", 217],
["src/views/card/components/ListSelector.tsx", 54]
],
"translation": "Não foi possível atualizar a lista"
@@ -6053,14 +6196,21 @@
"placeholders": {},
"comments": [],
"origin": [
["src/components/NewWorkspaceForm.tsx", 333],
["src/components/NewWorkspaceForm.tsx", 297],
["src/views/pricing/components/FeatureComparisonTable.tsx", 84],
["src/views/pricing/components/FeatureComparisonTable.tsx", 85],
["src/views/pricing/components/PricingTiers.tsx", 80],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 66]
["src/views/settings/components/UpgradeToProConfirmation.tsx", 68]
],
"translation": "Membros ilimitados"
},
"8AwlaR": {
"message": "Unlimited members and a custom workspace username for teams ready to scale.",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 94]],
"translation": "Membros ilimitados e um nome de usuário personalizado para equipes prontas para crescer."
},
"Ws+3X+": {
"message": "Unlimited seats and advanced features for growing teams.",
"placeholders": {},
@@ -6141,7 +6291,7 @@
"comments": [],
"origin": [
["src/components/SideNavigation.tsx", 240],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 53],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 55],
["src/views/settings/WorkspaceSettings.tsx", 118]
],
"translation": "Fazer upgrade para Pro"
@@ -6150,7 +6300,10 @@
"message": "Upgrade to Pro ($29/month)",
"placeholders": {},
"comments": [],
"origin": [["src/components/NewWorkspaceForm.tsx", 373]],
"origin": [
["src/components/NewWorkspaceForm.tsx", 337],
["src/views/onboarding/workspace-details/index.tsx", 243]
],
"translation": "Fazer upgrade para Pro ($29/mês)"
},
"b3Thhd": {
@@ -6434,7 +6587,7 @@
"comments": [],
"origin": [
["src/components/SettingsLayout.tsx", 47],
["src/views/board/index.tsx", 529],
["src/views/board/index.tsx", 530],
["src/views/boards/index.tsx", 48],
["src/views/members/index.tsx", 258],
["src/views/public/board/index.tsx", 125],
@@ -6447,7 +6600,8 @@
"placeholders": {},
"comments": [],
"origin": [["src/components/NewWorkspaceForm.tsx", 147]],
"translation": "Workspace criado com sucesso. Você pode fazer upgrade depois nas configurações."
"translation": "Workspace criado com sucesso. Você pode fazer upgrade depois nas configurações.",
"obsolete": true
},
"UlhdTP": {
"message": "Workspace deleted",
@@ -6462,7 +6616,10 @@
"message": "Workspace description",
"placeholders": {},
"comments": [],
"origin": [["src/views/settings/WorkspaceSettings.tsx", 82]],
"origin": [
["src/views/onboarding/workspace-details/index.tsx", 253],
["src/views/settings/WorkspaceSettings.tsx", 82]
],
"translation": "Descrição do workspace"
},
"Ax/hYa": {
@@ -6508,7 +6665,8 @@
"placeholders": {},
"comments": [],
"origin": [
["src/components/NewWorkspaceForm.tsx", 263],
["src/components/NewWorkspaceForm.tsx", 227],
["src/views/onboarding/workspace-details/index.tsx", 188],
["src/views/settings/WorkspaceSettings.tsx", 63]
],
"translation": "Nome do workspace"
@@ -6582,7 +6740,7 @@
"message": "workspace-url",
"placeholders": {},
"comments": [],
"origin": [["src/components/NewWorkspaceForm.tsx", 277]],
"origin": [["src/components/NewWorkspaceForm.tsx", 241]],
"translation": "workspace-url"
},
"4kJRen": {
@@ -6616,6 +6774,13 @@
"origin": [["src/views/settings/AccountSettings.tsx", 91]],
"translation": "Você está prestes a alterar sua senha."
},
"3WXdoZ": {
"message": "You can always change these later in settings.",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/workspace-details/index.tsx", 182]],
"translation": "Você pode alterar isso depois nas configurações."
},
"aelko+": {
"message": "You can get a custom workspace URL, like <0>kan.bn/kan</0>, by going into your <1>workspace settings</1> and purchasing a pro workspace subscription. All subscriptions help fund the development of the project!",
"placeholders": {},
@@ -6645,8 +6810,8 @@
["src/views/board/components/List.tsx", 117],
["src/views/board/components/UpdateBoardSlugButton.tsx", 58],
["src/views/board/components/VisibilityButton.tsx", 72],
["src/views/board/index.tsx", 603],
["src/views/board/index.tsx", 661],
["src/views/board/index.tsx", 604],
["src/views/board/index.tsx", 662],
["src/views/boards/components/BoardsList.tsx", 71],
["src/views/boards/index.tsx", 59],
["src/views/boards/index.tsx", 80]
@@ -6711,6 +6876,13 @@
],
"translation": "Sua conta foi excluída."
},
"c4nMcR": {
"message": "Your avatar",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 229]],
"translation": "Seu avatar"
},
"evg7+A": {
"message": "Your boards have been imported.",
"placeholders": {},
@@ -6797,6 +6969,20 @@
"origin": [["src/pages/unsubscribe/index.tsx", 33]],
"translation": "Seu link de cancelamento de inscrição está sem um token. Por favor, abra o e-mail mais recente e tente novamente."
},
"GRAGsB": {
"message": "Your workspace",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/workspace-details/index.tsx", 322]],
"translation": "Seu workspace"
},
"j0o6ml": {
"message": "Your workspace description",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/workspace-details/index.tsx", 325]],
"translation": "Descrição do seu workspace"
},
"GnSSGm": {
"message": "Your workspace description has been updated.",
"placeholders": {},
@@ -6833,6 +7019,16 @@
],
"translation": "O slug do seu workspace foi atualizado."
},
"OTxjpR": {
"message": "your-workspace",
"placeholders": {},
"comments": [],
"origin": [
["src/views/onboarding/workspace-details/index.tsx", 197],
["src/views/onboarding/workspace-details/index.tsx", 198]
],
"translation": "seu-workspace"
},
"4DOCMI": {
"message": "YouTube URL",
"placeholders": {},

File diff suppressed because one or more lines are too long

View File

@@ -71,7 +71,7 @@
"0": ["isTemplate ? \"Template\" : \"Board\""]
},
"comments": [],
"origin": [["src/views/board/index.tsx", 556]],
"origin": [["src/views/board/index.tsx", 557]],
"translation": "{0} не найдено"
},
"0xWkkH": {
@@ -239,11 +239,11 @@
"translation": "Журналы активности"
},
"UGCIzB": {
"translation": "Добавить / изменить метку",
"message": "Add / edit label",
"placeholders": {},
"comments": [],
"origin": [["src/views/board/components/CardContextMenu.tsx", 50]]
"origin": [["src/views/board/components/CardContextMenu.tsx", 50]],
"translation": "Добавить / изменить метку"
},
"B3xxao": {
"message": "Add a card",
@@ -556,6 +556,13 @@
],
"translation": "Произошла непредвиденная ошибка. Пожалуйста, попробуйте позже."
},
"YkfDoz": {
"message": "Annual",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 63]],
"translation": "Ежегодно"
},
"3bqt9U": {
"message": "Anyone with this link can join your workspace",
"placeholders": {},
@@ -756,6 +763,13 @@
"origin": [["src/views/boards/components/TemplateBoards.tsx", 59]],
"translation": "Ожидание клиента"
},
"iH8pgl": {
"message": "Back",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/workspace-details/index.tsx", 275]],
"translation": "Назад"
},
"KNKCTb": {
"message": "Backlog",
"placeholders": {},
@@ -798,6 +812,13 @@
"origin": [["src/views/pricing/components/PricingTiers.tsx", 53]],
"translation": "Лучше всего подходит для небольших и развивающихся команд, которым нужна совместная работа"
},
"zt/6cS": {
"message": "Best for small teams who want to collaborate and move faster together.",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 86]],
"translation": "Идеально для небольших команд, которые хотят сотрудничать и работать быстрее вместе."
},
"qaS+1/": {
"message": "Best for teams that want to scale without limits",
"placeholders": {},
@@ -849,7 +870,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/index.tsx", 529],
["src/views/board/index.tsx", 530],
["src/views/card/index.tsx", 317],
["src/views/public/board/index.tsx", 125]
],
@@ -860,8 +881,8 @@
"placeholders": {},
"comments": [],
"origin": [
["src/components/NewWorkspaceForm.tsx", 350],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 83]
["src/components/NewWorkspaceForm.tsx", 314],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 85]
],
"translation": "Аналитика доски"
},
@@ -1249,6 +1270,7 @@
["src/views/card/components/DeleteChecklistConfirmation.tsx", 64],
["src/views/card/components/DeleteCommentConfirmation.tsx", 77],
["src/views/members/components/DeleteMemberConfirmation.tsx", 55],
["src/views/onboarding/select-plan/index.tsx", 209],
["src/views/settings/components/Avatar.tsx", 287],
["src/views/settings/components/ChangePasswordConfirmation.tsx", 168],
[
@@ -1258,7 +1280,7 @@
["src/views/settings/components/DeleteAccountConfirmation.tsx", 88],
["src/views/settings/components/DeleteWebhookConfirmation.tsx", 66],
["src/views/settings/components/DeleteWorkspaceConfirmation.tsx", 98],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 106]
["src/views/settings/components/UpgradeToProConfirmation.tsx", 108]
],
"translation": "Отмена"
},
@@ -1270,11 +1292,13 @@
"translation": "Карточка"
},
"sU2uWc": {
"translation": "Карточка продублирована",
"message": "Card duplicated",
"placeholders": {},
"comments": [],
"origin": [["src/views/board/components/CardContextDuplicateModal.tsx", 67]]
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 67]
],
"translation": "Карточка продублирована"
},
"fEY2vP": {
"message": "Card not found",
@@ -1298,7 +1322,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/index.tsx", 307],
["src/views/board/index.tsx", 308],
["src/views/card/components/Dropdown.tsx", 44],
["src/views/public/board/CardModal.tsx", 38]
],
@@ -1376,6 +1400,13 @@
],
"translation": "Чек-листы"
},
"zMquA7": {
"message": "Choose a plan",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 122]],
"translation": "Выберите тариф"
},
"VHS0aJ": {
"message": "Clear all custom permissions?",
"placeholders": {},
@@ -1466,9 +1497,9 @@
"placeholders": {},
"comments": [],
"origin": [
["src/components/NewWorkspaceForm.tsx", 353],
["src/components/NewWorkspaceForm.tsx", 317],
["src/views/home/components/Features.tsx", 67],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 86]
["src/views/settings/components/UpgradeToProConfirmation.tsx", 88]
],
"translation": "Скоро появится"
},
@@ -1633,6 +1664,16 @@
"origin": [["src/views/boards/components/TemplateBoards.tsx", 40]],
"translation": "Создание контента"
},
"xGVfLh": {
"message": "Continue",
"placeholders": {},
"comments": [],
"origin": [
["src/views/onboarding/select-plan/index.tsx", 212],
["src/views/onboarding/workspace-details/index.tsx", 291]
],
"translation": "Продолжить"
},
"J2Wbjt": {
"message": "Continue with ",
"placeholders": {},
@@ -1678,38 +1719,38 @@
"translation": "Скопировать ссылку на карточку"
},
"0utuU6": {
"translation": "Копировать чек-листы",
"message": "Copy checklists",
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 257]
]
],
"translation": "Копировать чек-листы"
},
"fDQ7hA": {
"translation": "Копировать метки",
"message": "Copy labels",
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 221]
]
],
"translation": "Копировать метки"
},
"1bJKhj": {
"translation": "Копировать ссылку на карточку",
"message": "Copy link to card",
"placeholders": {},
"comments": [],
"origin": [["src/views/board/components/CardContextMenu.tsx", 62]]
"origin": [["src/views/board/components/CardContextMenu.tsx", 62]],
"translation": "Копировать ссылку на карточку"
},
"uvH2xS": {
"translation": "Копировать участников",
"message": "Copy members",
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 239]
]
],
"translation": "Копировать участников"
},
"9PaIxv": {
"message": "Core features",
@@ -1816,8 +1857,8 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/index.tsx", 91],
["src/views/board/index.tsx", 670]
["src/views/board/index.tsx", 92],
["src/views/board/index.tsx", 671]
],
"translation": "Создать новый список"
},
@@ -1840,8 +1881,8 @@
"placeholders": {},
"comments": [],
"origin": [
["src/components/NewWorkspaceForm.tsx", 388],
["src/components/WorkspaceMenu.tsx", 153]
["src/components/NewWorkspaceForm.tsx", 352],
["src/components/WorkspaceMenu.tsx", 160]
],
"translation": "Создать рабочее пространство"
},
@@ -1928,7 +1969,7 @@
"message": "Custom URLs require upgrading to a Pro plan",
"placeholders": {},
"comments": [],
"origin": [["src/components/NewWorkspaceForm.tsx", 319]],
"origin": [["src/components/NewWorkspaceForm.tsx", 283]],
"translation": "Для пользовательских URL требуется переход на тариф Pro"
},
"7RpHg/": {
@@ -1941,13 +1982,20 @@
],
"translation": "Пользовательское имя"
},
"ZDPJBc": {
"message": "Custom usernames require upgrading to a Pro plan",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/workspace-details/index.tsx", 220]],
"translation": "Для пользовательских имен пользователей требуется обновление до тарифа Pro"
},
"j9IZZ0": {
"message": "Custom workspace URL",
"placeholders": {},
"comments": [],
"origin": [
["src/components/NewWorkspaceForm.tsx", 343],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 76]
["src/components/NewWorkspaceForm.tsx", 307],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 78]
],
"translation": "Пользовательский URL рабочего пространства"
},
@@ -2224,7 +2272,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 36],
["src/views/board/components/CardContextDueDateModal.tsx", 36],
["src/views/board/components/CardContextLabelsModal.tsx", 48],
["src/views/board/components/CardContextMembersModal.tsx", 68],
["src/views/boards/components/TemplateBoards.tsx", 17],
@@ -2283,32 +2331,32 @@
"translation": "Срок — завтра"
},
"euc6Ns": {
"translation": "Дублировать",
"message": "Duplicate",
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 279]
]
],
"translation": "Дублировать"
},
"BTDPLo": {
"translation": "Дублировать карточку",
"message": "Duplicate card",
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 111],
["src/views/board/components/CardContextMenu.tsx", 68]
]
],
"translation": "Дублировать карточку"
},
"06EQqT": {
"translation": "Дублирование…",
"message": "Duplicating…",
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 279]
]
],
"translation": "Дублирование…"
},
"ePK91l": {
"message": "Edit",
@@ -2423,13 +2471,20 @@
"translation": "Видимость email"
},
"bFREhu": {
"translation": "Конец списка",
"message": "End of list",
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 200]
]
],
"translation": "Конец списка"
},
"SUXBxp": {
"message": "Engineering",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/workspace-details/index.tsx", 161]],
"translation": "Разработка"
},
"0+ewPp": {
"message": "Enhancement",
@@ -2644,7 +2699,7 @@
"comments": [],
"origin": [
["src/views/members/components/InviteMemberForm.tsx", 240],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 41]
["src/views/settings/components/UpgradeToProConfirmation.tsx", 43]
],
"translation": "Ошибка при обновлении подписки"
},
@@ -2653,7 +2708,8 @@
"placeholders": {},
"comments": [],
"origin": [["src/components/NewWorkspaceForm.tsx", 146]],
"translation": "Ошибка при переходе на Pro"
"translation": "Ошибка при переходе на Pro",
"obsolete": true
},
"CYWHT+": {
"message": "Error uploading profile image",
@@ -2887,6 +2943,8 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/onboarding/select-plan/index.tsx", 77],
["src/views/onboarding/select-plan/index.tsx", 78],
["src/views/pricing/components/FeatureComparisonTable.tsx", 331],
["src/views/pricing/components/Pricing.tsx", 32],
["src/views/pricing/components/Pricing.tsx", 32],
@@ -2987,7 +3045,7 @@
"message": "Get started by creating a new list",
"placeholders": {},
"comments": [],
"origin": [["src/views/board/index.tsx", 655]],
"origin": [["src/views/board/index.tsx", 656]],
"translation": "Начните с создания нового списка"
},
"oW13KZ": {
@@ -3097,6 +3155,13 @@
"origin": [["src/components/SideNavigation.tsx", 119]],
"translation": "Перейти к шаблонам"
},
"SUvm1Y": {
"message": "Good for individuals starting out who just need the essentials.",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 79]],
"translation": "Подходит для начинающих пользователей, которым нужны только базовые функции."
},
"cdyS7J": {
"message": "Google SSO",
"placeholders": {},
@@ -3521,9 +3586,9 @@
"placeholders": {},
"comments": [],
"origin": [
["src/components/NewWorkspaceForm.tsx", 336],
["src/components/NewWorkspaceForm.tsx", 300],
["src/views/pricing/components/PricingTiers.tsx", 159],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 69]
["src/views/settings/components/UpgradeToProConfirmation.tsx", 71]
],
"translation": "Стартовое предложение"
},
@@ -3591,7 +3656,7 @@
"comments": [],
"origin": [
["src/views/board/components/UpdateBoardSlugButton.tsx", 80],
["src/views/board/index.tsx", 305],
["src/views/board/index.tsx", 306],
["src/views/card/components/Dropdown.tsx", 42],
["src/views/public/board/CardModal.tsx", 36],
["src/views/public/board/index.tsx", 77]
@@ -3695,14 +3760,14 @@
"translation": "Создать шаблон"
},
"hB02vO": {
"translation": "Управление участниками",
"message": "Manage members",
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/components/CardContextMembersModal.tsx", 51],
["src/views/board/components/CardContextMenu.tsx", 38]
]
],
"translation": "Управление участниками"
},
"IDvohQ": {
"message": "marked a checklist item as incomplete",
@@ -3720,6 +3785,13 @@
"origin": [["src/views/card/components/ActivityList.tsx", 258]],
"translation": "отметил элемент контрольного списка <0>{0}</0> как невыполненный"
},
"vo2a+a": {
"message": "Marketing",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/workspace-details/index.tsx", 161]],
"translation": "Маркетинг"
},
"agPptk": {
"message": "Medium",
"placeholders": {},
@@ -3791,6 +3863,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/onboarding/select-plan/index.tsx", 62],
["src/views/pricing/components/Pricing.tsx", 14],
["src/views/pricing/index.tsx", 20]
],
@@ -3804,18 +3877,18 @@
"translation": "ежемесячная оплата"
},
"51UCsN": {
"translation": "Переместить в другой список",
"message": "Move to another list",
"placeholders": {},
"comments": [],
"origin": [["src/views/board/components/CardContextMenu.tsx", 44]]
"origin": [["src/views/board/components/CardContextMenu.tsx", 44]],
"translation": "Переместить в другой список"
},
"J4+OTA": {
"translation": "Переместить в список",
"message": "Move to list",
"placeholders": {},
"comments": [],
"origin": [["src/views/board/components/CardContextMoveListModal.tsx", 70]]
"origin": [["src/views/board/components/CardContextMoveListModal.tsx", 70]],
"translation": "Переместить в список"
},
"BOqTi5": {
"message": "moved the card from <0>{0}</0> to<1>{1}</1>",
@@ -3928,7 +4001,7 @@
"comments": [],
"origin": [
["src/views/board/components/NewListForm.tsx", 113],
["src/views/board/index.tsx", 619]
["src/views/board/index.tsx", 620]
],
"translation": "Новый список"
},
@@ -3975,7 +4048,7 @@
"message": "New workspace",
"placeholders": {},
"comments": [],
"origin": [["src/components/NewWorkspaceForm.tsx", 244]],
"origin": [["src/components/NewWorkspaceForm.tsx", 208]],
"translation": "Новый рабочий пространство"
},
"5ACX4z": {
@@ -4054,14 +4127,14 @@
"message": "No lists",
"placeholders": {},
"comments": [],
"origin": [["src/views/board/index.tsx", 651]],
"origin": [["src/views/board/index.tsx", 652]],
"translation": "Нет списков"
},
"fvLNDy": {
"message": "No lists have been created yet",
"placeholders": {},
"comments": [],
"origin": [["src/views/board/index.tsx", 656]],
"origin": [["src/views/board/index.tsx", 657]],
"translation": "Списки ещё не созданы"
},
"i30J2U": {
@@ -4142,7 +4215,7 @@
"message": "Open command menu",
"placeholders": {},
"comments": [],
"origin": [["src/components/WorkspaceMenu.tsx", 31]],
"origin": [["src/components/WorkspaceMenu.tsx", 34]],
"translation": "Открыть командное меню"
},
"cFQEU/": {
@@ -4358,6 +4431,13 @@
"origin": [["src/views/boards/components/TemplateBoards.tsx", 86]],
"translation": "Личный проект"
},
"Oi+J+N": {
"message": "Pick a plan to get started. All paid plans include a 14-day free trial.",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 125]],
"translation": "Выберите тариф, чтобы начать. Все платные тарифы включают 14-дневный бесплатный пробный период."
},
"Iqh0Uv": {
"message": "Planned",
"placeholders": {},
@@ -4445,7 +4525,7 @@
"origin": [
["src/components/DeleteLabelConfirmation.tsx", 26],
["src/components/FeedbackModal.tsx", 41],
["src/components/NewWorkspaceForm.tsx", 159],
["src/components/NewWorkspaceForm.tsx", 123],
["src/views/board/components/BoardDropdown.tsx", 65],
["src/views/board/components/NewCardForm.tsx", 186],
["src/views/board/components/NewListForm.tsx", 79],
@@ -4453,8 +4533,8 @@
["src/views/board/components/NewTemplateForm.tsx", 77],
["src/views/board/components/UpdateBoardSlugForm.tsx", 73],
["src/views/board/components/VisibilityButton.tsx", 57],
["src/views/board/index.tsx", 217],
["src/views/board/index.tsx", 273],
["src/views/board/index.tsx", 218],
["src/views/board/index.tsx", 274],
["src/views/boards/components/ImportBoardsForm.tsx", 243],
["src/views/boards/components/ImportBoardsForm.tsx", 395],
["src/views/card/components/AttachmentThumbnails.tsx", 74],
@@ -4482,6 +4562,8 @@
["src/views/members/components/InviteMemberForm.tsx", 104],
["src/views/members/components/InviteMemberForm.tsx", 241],
["src/views/members/index.tsx", 66],
["src/views/onboarding/workspace-details/index.tsx", 101],
["src/views/onboarding/workspace-details/index.tsx", 150],
["src/views/settings/components/Avatar.tsx", 200],
["src/views/settings/components/DeleteAccountConfirmation.tsx", 40],
["src/views/settings/components/DeleteWorkspaceConfirmation.tsx", 46],
@@ -4489,7 +4571,7 @@
["src/views/settings/components/UpdateWorkspaceDescriptionForm.tsx", 64],
["src/views/settings/components/UpdateWorkspaceNameForm.tsx", 59],
["src/views/settings/components/UpdateWorkspaceUrlForm.tsx", 76],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 42],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 44],
["src/views/settings/PermissionsSettings.tsx", 40]
],
"translation": "Пожалуйста, попробуйте позже или обратитесь в службу поддержки."
@@ -4511,7 +4593,7 @@
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 76],
["src/views/board/components/CardContextMoveListModal.tsx", 42],
["src/views/board/index.tsx", 314],
["src/views/board/index.tsx", 315],
["src/views/card/components/Dropdown.tsx", 51],
["src/views/public/board/CardModal.tsx", 45],
["src/views/public/board/index.tsx", 86]
@@ -4519,13 +4601,13 @@
"translation": "Пожалуйста, попробуйте ещё раз."
},
"nYNMZZ": {
"translation": "Позиция в списке (0 = первая, оставьте пустым для конца)",
"message": "Position in list (0 = first, leave empty for end)",
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 193]
]
],
"translation": "Позиция в списке (0 = первая, оставьте пустым для конца)"
},
"aHCEmh": {
"message": "Pricing",
@@ -4549,7 +4631,7 @@
["src/views/pricing/components/FeatureComparisonTable.tsx", 275],
["src/views/pricing/components/Pricing.tsx", 56],
["src/views/pricing/components/PricingTiers.tsx", 61],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 93]
["src/views/settings/components/UpgradeToProConfirmation.tsx", 95]
],
"translation": "Приоритетная поддержка по электронной почте"
},
@@ -4572,6 +4654,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/onboarding/select-plan/index.tsx", 91],
["src/views/pricing/components/FeatureComparisonTable.tsx", 333],
["src/views/pricing/components/PricingTiers.tsx", 70]
],
@@ -4829,7 +4912,8 @@
"origin": [
["src/views/home/components/Footer.tsx", 36],
["src/views/home/components/Header.tsx", 13],
["src/views/home/components/Header.tsx", 28]
["src/views/home/components/Header.tsx", 28],
["src/views/onboarding/workspace-details/index.tsx", 161]
],
"translation": "Дорожная карта"
},
@@ -4949,13 +5033,13 @@
"translation": "Посмотрите, что наши пользователи говорят о Kan"
},
"zYRVNp": {
"translation": "Выберите список",
"message": "Select a list",
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 131]
]
],
"translation": "Выберите список"
},
"wgNoIs": {
"message": "Select all",
@@ -5041,6 +5125,13 @@
"origin": [["src/views/card/components/ActivityList.tsx", 142]],
"translation": "установить срок"
},
"JjEJSy": {
"message": "Set up your workspace",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/workspace-details/index.tsx", 179]],
"translation": "Настройте ваше рабочее пространство"
},
"Tz0i8g": {
"message": "Settings",
"placeholders": {},
@@ -5121,6 +5212,16 @@
"origin": [["src/views/invite/index.tsx", 154]],
"translation": "Войти"
},
"fcWrnU": {
"message": "Sign out",
"placeholders": {},
"comments": [],
"origin": [
["src/views/onboarding/select-plan/index.tsx", 284],
["src/views/onboarding/workspace-details/index.tsx", 362]
],
"translation": "Выйти"
},
"mErq7F": {
"message": "Sign Up",
"placeholders": {},
@@ -5206,6 +5307,13 @@
"origin": [["src/views/boards/components/TemplateBoards.tsx", 22]],
"translation": "Разработка ПО"
},
"6sKjjx": {
"message": "Solo",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 76]],
"translation": "Индивидуальный"
},
"vnS6Rf": {
"message": "SSO",
"placeholders": {},
@@ -5228,7 +5336,7 @@
"comments": [],
"origin": [
["src/views/members/components/InviteMemberForm.tsx", 359],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 111]
["src/views/settings/components/UpgradeToProConfirmation.tsx", 113]
],
"translation": "Начните 14-дневный бесплатный пробный период"
},
@@ -5277,7 +5385,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/settings/components/UpgradeToProConfirmation.tsx", 57]
["src/views/settings/components/UpgradeToProConfirmation.tsx", 59]
],
"translation": "Улучшите свой workspace всего за $29 в месяц. Вы получите:"
},
@@ -5305,6 +5413,13 @@
"origin": [["src/components/UserMenu.tsx", 144]],
"translation": "Система"
},
"KM6m8p": {
"message": "Team",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 83]],
"translation": "Команда"
},
"bff61F": {
"message": "Team Plan",
"placeholders": {},
@@ -5331,8 +5446,8 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/index.tsx", 529],
["src/views/board/index.tsx", 565]
["src/views/board/index.tsx", 530],
["src/views/board/index.tsx", 566]
],
"translation": "Шаблон"
},
@@ -5427,11 +5542,13 @@
"translation": "Доска была восстановлена из архива."
},
"nKBUeF": {
"translation": "Карточка была продублирована.",
"message": "The card has been duplicated.",
"placeholders": {},
"comments": [],
"origin": [["src/views/board/components/CardContextDuplicateModal.tsx", 69]]
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 69]
],
"translation": "Карточка была продублирована."
},
"jlB2RY": {
"message": "The current password you entered is incorrect.",
@@ -5555,6 +5672,20 @@
],
"translation": "Права этого участника были сброшены до значений по умолчанию для его роли."
},
"HQVm6e": {
"message": "This URL has already been taken",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/workspace-details/index.tsx", 73]],
"translation": "Этот URL уже занят"
},
"gKmoow": {
"message": "This URL is reserved",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/workspace-details/index.tsx", 75]],
"translation": "Этот URL зарезервирован"
},
"OAYToL": {
"message": "This will remove all custom member permissions in this workspace. Members will inherit permissions only from their roles.",
"placeholders": {},
@@ -5589,14 +5720,14 @@
"message": "This workspace URL has already been taken",
"placeholders": {},
"comments": [],
"origin": [["src/components/NewWorkspaceForm.tsx", 288]],
"origin": [["src/components/NewWorkspaceForm.tsx", 252]],
"translation": "Этот URL рабочего пространства уже занят"
},
"bJtM0P": {
"message": "This workspace URL is reserved",
"placeholders": {},
"comments": [],
"origin": [["src/components/NewWorkspaceForm.tsx", 290]],
"origin": [["src/components/NewWorkspaceForm.tsx", 254]],
"translation": "Этот URL рабочей области зарезервирован"
},
"kp6L3T": {
@@ -5616,13 +5747,13 @@
"translation": "Заголовок"
},
"wK4OTM": {
"translation": "Название (необязательно)",
"message": "Title (optional)",
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 180]
]
],
"translation": "Название (необязательно)"
},
"Se/UIp": {
"message": "To Do",
@@ -5726,7 +5857,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/index.tsx", 312],
["src/views/board/index.tsx", 313],
["src/views/card/components/Dropdown.tsx", 49],
["src/views/public/board/CardModal.tsx", 43],
["src/views/public/board/index.tsx", 84]
@@ -5768,7 +5899,10 @@
"message": "Unable to create workspace",
"placeholders": {},
"comments": [],
"origin": [["src/components/NewWorkspaceForm.tsx", 158]],
"origin": [
["src/components/NewWorkspaceForm.tsx", 122],
["src/views/onboarding/workspace-details/index.tsx", 100]
],
"translation": "Не удалось создать рабочую область"
},
"WHHLh9": {
@@ -5809,18 +5943,20 @@
"translation": "Не удалось удалить комментарий"
},
"Oo4E6p": {
"translation": "Невозможно дублировать карточку",
"message": "Unable to duplicate card",
"placeholders": {},
"comments": [],
"origin": [["src/views/board/components/CardContextDuplicateModal.tsx", 75]]
"origin": [
["src/views/board/components/CardContextDuplicateModal.tsx", 75]
],
"translation": "Невозможно дублировать карточку"
},
"K7k9u3": {
"translation": "Невозможно переместить карточку",
"message": "Unable to move card",
"placeholders": {},
"comments": [],
"origin": [["src/views/board/components/CardContextMoveListModal.tsx", 41]]
"origin": [["src/views/board/components/CardContextMoveListModal.tsx", 41]],
"translation": "Невозможно переместить карточку"
},
"8yFGGF": {
"message": "Unable to remove member",
@@ -5854,6 +5990,13 @@
"origin": [["src/components/FeedbackModal.tsx", 40]],
"translation": "Не удалось отправить отзыв"
},
"Q60WUZ": {
"message": "Unable to start checkout",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/workspace-details/index.tsx", 149]],
"translation": "Не удалось начать оформление заказа"
},
"T7Mywq": {
"message": "Unable to update board",
"placeholders": {},
@@ -5880,7 +6023,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/index.tsx", 272],
["src/views/board/index.tsx", 273],
["src/views/card/index.tsx", 231]
],
"translation": "Не удалось обновить карточку"
@@ -5925,7 +6068,7 @@
"placeholders": {},
"comments": [],
"origin": [
["src/views/board/index.tsx", 216],
["src/views/board/index.tsx", 217],
["src/views/card/components/ListSelector.tsx", 54]
],
"translation": "Не удалось обновить список"
@@ -6053,14 +6196,21 @@
"placeholders": {},
"comments": [],
"origin": [
["src/components/NewWorkspaceForm.tsx", 333],
["src/components/NewWorkspaceForm.tsx", 297],
["src/views/pricing/components/FeatureComparisonTable.tsx", 84],
["src/views/pricing/components/FeatureComparisonTable.tsx", 85],
["src/views/pricing/components/PricingTiers.tsx", 80],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 66]
["src/views/settings/components/UpgradeToProConfirmation.tsx", 68]
],
"translation": "Неограниченное количество участников"
},
"8AwlaR": {
"message": "Unlimited members and a custom workspace username for teams ready to scale.",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 94]],
"translation": "Неограниченное количество участников и персональное имя рабочего пространства для команд, готовых к масштабированию."
},
"Ws+3X+": {
"message": "Unlimited seats and advanced features for growing teams.",
"placeholders": {},
@@ -6141,7 +6291,7 @@
"comments": [],
"origin": [
["src/components/SideNavigation.tsx", 240],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 53],
["src/views/settings/components/UpgradeToProConfirmation.tsx", 55],
["src/views/settings/WorkspaceSettings.tsx", 118]
],
"translation": "Перейти на Pro"
@@ -6150,7 +6300,10 @@
"message": "Upgrade to Pro ($29/month)",
"placeholders": {},
"comments": [],
"origin": [["src/components/NewWorkspaceForm.tsx", 373]],
"origin": [
["src/components/NewWorkspaceForm.tsx", 337],
["src/views/onboarding/workspace-details/index.tsx", 243]
],
"translation": "Перейти на Pro (29 $/месяц)"
},
"b3Thhd": {
@@ -6434,7 +6587,7 @@
"comments": [],
"origin": [
["src/components/SettingsLayout.tsx", 47],
["src/views/board/index.tsx", 529],
["src/views/board/index.tsx", 530],
["src/views/boards/index.tsx", 48],
["src/views/members/index.tsx", 258],
["src/views/public/board/index.tsx", 125],
@@ -6447,7 +6600,8 @@
"placeholders": {},
"comments": [],
"origin": [["src/components/NewWorkspaceForm.tsx", 147]],
"translation": "Рабочее пространство успешно создано. Вы сможете обновить его позже в настройках."
"translation": "Рабочее пространство успешно создано. Вы сможете обновить его позже в настройках.",
"obsolete": true
},
"UlhdTP": {
"message": "Workspace deleted",
@@ -6462,7 +6616,10 @@
"message": "Workspace description",
"placeholders": {},
"comments": [],
"origin": [["src/views/settings/WorkspaceSettings.tsx", 82]],
"origin": [
["src/views/onboarding/workspace-details/index.tsx", 253],
["src/views/settings/WorkspaceSettings.tsx", 82]
],
"translation": "Описание рабочего пространства"
},
"Ax/hYa": {
@@ -6508,7 +6665,8 @@
"placeholders": {},
"comments": [],
"origin": [
["src/components/NewWorkspaceForm.tsx", 263],
["src/components/NewWorkspaceForm.tsx", 227],
["src/views/onboarding/workspace-details/index.tsx", 188],
["src/views/settings/WorkspaceSettings.tsx", 63]
],
"translation": "Название рабочего пространства"
@@ -6582,7 +6740,7 @@
"message": "workspace-url",
"placeholders": {},
"comments": [],
"origin": [["src/components/NewWorkspaceForm.tsx", 277]],
"origin": [["src/components/NewWorkspaceForm.tsx", 241]],
"translation": "workspace-url"
},
"4kJRen": {
@@ -6616,6 +6774,13 @@
"origin": [["src/views/settings/AccountSettings.tsx", 91]],
"translation": "Вы собираетесь изменить свой пароль."
},
"3WXdoZ": {
"message": "You can always change these later in settings.",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/workspace-details/index.tsx", 182]],
"translation": "Вы всегда можете изменить это позже в настройках."
},
"aelko+": {
"message": "You can get a custom workspace URL, like <0>kan.bn/kan</0>, by going into your <1>workspace settings</1> and purchasing a pro workspace subscription. All subscriptions help fund the development of the project!",
"placeholders": {},
@@ -6645,8 +6810,8 @@
["src/views/board/components/List.tsx", 117],
["src/views/board/components/UpdateBoardSlugButton.tsx", 58],
["src/views/board/components/VisibilityButton.tsx", 72],
["src/views/board/index.tsx", 603],
["src/views/board/index.tsx", 661],
["src/views/board/index.tsx", 604],
["src/views/board/index.tsx", 662],
["src/views/boards/components/BoardsList.tsx", 71],
["src/views/boards/index.tsx", 59],
["src/views/boards/index.tsx", 80]
@@ -6711,6 +6876,13 @@
],
"translation": "Ваш аккаунт был удалён."
},
"c4nMcR": {
"message": "Your avatar",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/select-plan/index.tsx", 229]],
"translation": "Ваш аватар"
},
"evg7+A": {
"message": "Your boards have been imported.",
"placeholders": {},
@@ -6797,6 +6969,20 @@
"origin": [["src/pages/unsubscribe/index.tsx", 33]],
"translation": "В вашей ссылке для отписки отсутствует токен. Пожалуйста, откройте последнее письмо и попробуйте снова."
},
"GRAGsB": {
"message": "Your workspace",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/workspace-details/index.tsx", 322]],
"translation": "Ваше рабочее пространство"
},
"j0o6ml": {
"message": "Your workspace description",
"placeholders": {},
"comments": [],
"origin": [["src/views/onboarding/workspace-details/index.tsx", 325]],
"translation": "Описание вашего рабочего пространства"
},
"GnSSGm": {
"message": "Your workspace description has been updated.",
"placeholders": {},
@@ -6833,6 +7019,16 @@
],
"translation": "Слаг вашего рабочего пространства был обновлён."
},
"OTxjpR": {
"message": "your-workspace",
"placeholders": {},
"comments": [],
"origin": [
["src/views/onboarding/workspace-details/index.tsx", 197],
["src/views/onboarding/workspace-details/index.tsx", 198]
],
"translation": "your-workspace"
},
"4DOCMI": {
"message": "YouTube URL",
"placeholders": {},

File diff suppressed because one or more lines are too long

View File

@@ -1,12 +1,13 @@
import type { NextApiRequest, NextApiResponse } from "next";
import { withApiLogging } from "@kan/api/utils/apiLogging";
import { withRateLimit } from "@kan/api/utils/rateLimit";
import { env } from "~/env";
export default withRateLimit(
{ points: 100, duration: 60 },
async (req: NextApiRequest, res: NextApiResponse) => {
withApiLogging(async (req: NextApiRequest, res: NextApiResponse) => {
if (req.method !== "GET") {
return res.status(405).json({ message: "Method not allowed" });
}
@@ -32,7 +33,9 @@ export default withRateLimit(
try {
allowedHost = new URL(s3Endpoint).hostname.toLowerCase();
} catch {
return res.status(500).json({ message: "Storage endpoint misconfigured" });
return res
.status(500)
.json({ message: "Storage endpoint misconfigured" });
}
if (hostname !== allowedHost && !hostname.endsWith(`.${allowedHost}`)) {
@@ -66,10 +69,7 @@ export default withRateLimit(
const buffer = await upstream.arrayBuffer();
return res.send(Buffer.from(buffer));
} catch (error) {
console.error("Error downloading attachment:", error);
return res
.status(500)
.json({ message: "Failed to download attachment" });
return res.status(500).json({ message: "Failed to download attachment" });
}
},
}),
);

View File

@@ -1,25 +1,25 @@
import type { NextApiRequest, NextApiResponse } from "next";
import { withApiLogging } from "@kan/api/utils/apiLogging";
import { withRateLimit } from "@kan/api/utils/rateLimit";
export default withRateLimit(
{ points: 100, duration: 60 },
async (req: NextApiRequest, res: NextApiResponse) => {
if (req.method !== "GET") {
return res.status(405).json({ message: "Method not allowed" });
}
try {
const response = await fetch("https://formbricks.com/api/oss-friends");
if (!response.ok) {
throw new Error("Failed to fetch from Formbricks");
withApiLogging(async (req: NextApiRequest, res: NextApiResponse) => {
if (req.method !== "GET") {
return res.status(405).json({ message: "Method not allowed" });
}
const data = await response.json();
return res.status(200).json(data);
} catch (error) {
console.error("Error fetching OSS friends:", error);
return res.status(500).json({ message: "Failed to fetch OSS friends" });
}
},
try {
const response = await fetch("https://formbricks.com/api/oss-friends");
if (!response.ok) {
throw new Error("Failed to fetch from Formbricks");
}
const data = await response.json();
return res.status(200).json(data);
} catch (error) {
return res.status(500).json({ message: "Failed to fetch OSS friends" });
}
}),
);

View File

@@ -2,34 +2,34 @@ import type { NextApiRequest, NextApiResponse } from "next";
import { env } from "next-runtime-env";
import { createNextApiContext } from "@kan/api/trpc";
import { createStripeClient } from "@kan/stripe";
import { withApiLogging } from "@kan/api/utils/apiLogging";
import { withRateLimit } from "@kan/api/utils/rateLimit";
import { createStripeClient } from "@kan/stripe";
export default withRateLimit(
{ points: 100, duration: 60 },
async (req: NextApiRequest, res: NextApiResponse) => {
const stripe = createStripeClient();
withApiLogging(async (req: NextApiRequest, res: NextApiResponse) => {
const stripe = createStripeClient();
if (req.method !== "POST") {
return res.status(405).json({ error: "Method not allowed" });
}
try {
const { user } = await createNextApiContext(req);
if (!user?.stripeCustomerId) {
return res.status(404).json({ error: "No billing account found" });
if (req.method !== "POST") {
return res.status(405).json({ error: "Method not allowed" });
}
const session = await stripe.billingPortal.sessions.create({
customer: user.stripeCustomerId,
return_url: `${env("NEXT_PUBLIC_BASE_URL")}/settings`,
});
try {
const { user } = await createNextApiContext(req);
return res.status(200).json({ url: session.url });
} catch (error) {
console.error("Error:", error);
return res.status(500).json({ error: "Error creating portal session" });
}
},
if (!user?.stripeCustomerId) {
return res.status(404).json({ error: "No billing account found" });
}
const session = await stripe.billingPortal.sessions.create({
customer: user.stripeCustomerId,
return_url: `${env("NEXT_PUBLIC_BASE_URL")}/settings`,
});
return res.status(200).json({ url: session.url });
} catch (error) {
return res.status(500).json({ error: "Error creating portal session" });
}
}),
);

View File

@@ -3,10 +3,13 @@ import { env } from "next-runtime-env";
import { z } from "zod";
import { createNextApiContext } from "@kan/api/trpc";
import { withApiLogging } from "@kan/api/utils/apiLogging";
import { assertPermission } from "@kan/api/utils/permissions";
import { withRateLimit } from "@kan/api/utils/rateLimit";
import * as subscriptionRepo from "@kan/db/repository/subscription.repo";
import * as workspaceRepo from "@kan/db/repository/workspace.repo";
import { generateUID } from "@kan/shared/utils";
import { createStripeClient } from "@kan/stripe";
import { withRateLimit } from "@kan/api/utils/rateLimit";
const workspaceSlugSchema = z
.string()
@@ -17,21 +20,24 @@ const workspaceSlugSchema = z
interface CheckoutSessionRequest {
successUrl: string;
cancelUrl: string;
slug: string;
workspacePublicId: string;
stripeCustomerId: string;
plan: "team" | "pro";
billing?: string;
workspacePublicId?: string;
slug?: string;
workspaceName?: string;
workspaceDescription?: string;
workspaceSlug?: string;
}
export default withRateLimit(
{ points: 100, duration: 60 },
async (req: NextApiRequest, res: NextApiResponse) => {
const stripe = createStripeClient();
withApiLogging(async (req: NextApiRequest, res: NextApiResponse) => {
const stripe = createStripeClient();
if (req.method !== "POST") {
return res.status(405).json({ error: "Method not allowed" });
}
if (req.method !== "POST") {
return res.status(405).json({ error: "Method not allowed" });
}
try {
const { user, db } = await createNextApiContext(req);
if (!user) {
@@ -39,81 +45,107 @@ export default withRateLimit(
}
const body = req.body as CheckoutSessionRequest;
const { successUrl, cancelUrl, slug, workspacePublicId } = body;
const {
successUrl,
cancelUrl,
plan,
billing,
workspacePublicId,
slug,
workspaceName,
workspaceDescription,
workspaceSlug,
} = body;
if (!successUrl || !cancelUrl || !workspacePublicId) {
if (!successUrl || !cancelUrl || !plan) {
return res.status(400).json({ error: "Missing required fields" });
}
if (slug) {
const slugResult = workspaceSlugSchema.safeParse(slug);
if (!workspacePublicId && !workspaceName) {
return res
.status(400)
.json({ error: "Must provide workspacePublicId or workspaceName" });
}
const resolvedSlug = slug ?? workspaceSlug;
if (resolvedSlug) {
const slugResult = workspaceSlugSchema.safeParse(resolvedSlug);
if (!slugResult.success) {
return new Response(
JSON.stringify({ error: "Invalid workspace slug" }),
{
status: 400,
headers: { "Content-Type": "application/json" },
},
);
return res.status(400).json({ error: "Invalid workspace slug" });
}
}
const workspace = await workspaceRepo.getAllByUserId(db, user.id);
let resolvedWorkspacePublicId = workspacePublicId;
let subscriptionId: number | undefined;
const isMemberOfWorkspace = workspace.some(
({ workspace }) => workspace.publicId === body.workspacePublicId,
);
if (workspacePublicId) {
// Existing workspace upgrade
const workspace = await workspaceRepo.getByPublicId(
db,
workspacePublicId,
);
if (!isMemberOfWorkspace) {
return new Response(JSON.stringify({ error: "Unauthorized" }), {
status: 403,
headers: { "Content-Type": "application/json" },
if (!workspace) {
return res.status(404).json({ error: "Workspace not found" });
}
try {
await assertPermission(db, user.id, workspace.id, "workspace:manage");
} catch {
return res.status(403).json({ error: "Unauthorized" });
}
const subscription = await subscriptionRepo.create(db, {
plan: plan,
referenceId: workspacePublicId,
userId: user.id,
stripeCustomerId: user.stripeCustomerId ?? "",
status: "incomplete",
});
subscriptionId = subscription?.id;
if (!subscriptionId) {
return res.status(500).json({ error: "Error creating subscription" });
}
} else {
resolvedWorkspacePublicId = generateUID();
}
const subscription = await subscriptionRepo.create(db, {
plan: "pro",
referenceId: workspacePublicId,
userId: user.id,
stripeCustomerId: user.stripeCustomerId ?? "",
status: "incomplete",
});
const subscriptionId = subscription?.id;
if (!subscriptionId) {
return res.status(500).json({ error: "Error creating subscription" });
}
const isTeam = body.plan === "team";
const annualPriceId = isTeam
? (process.env.STRIPE_TEAM_PLAN_YEARLY_PRICE_ID ??
process.env.STRIPE_TEAM_PLAN_MONTHLY_PRICE_ID)
: (process.env.STRIPE_PRO_PLAN_YEARLY_PRICE_ID ??
process.env.STRIPE_PRO_PLAN_MONTHLY_PRICE_ID);
const monthlyPriceId = isTeam
? process.env.STRIPE_TEAM_PLAN_MONTHLY_PRICE_ID
: process.env.STRIPE_PRO_PLAN_MONTHLY_PRICE_ID;
const priceId = billing === "annual" ? annualPriceId : monthlyPriceId;
const session = await stripe.checkout.sessions.create({
mode: "subscription",
payment_method_collection: "always",
line_items: [
{
price: process.env.STRIPE_PRO_PLAN_MONTHLY_PRICE_ID,
quantity: 1,
},
],
subscription_data: {
trial_period_days: 14,
},
success_url: `${env("NEXT_PUBLIC_BASE_URL")}${successUrl}`,
line_items: [{ price: priceId, quantity: 1 }],
subscription_data: { trial_period_days: 14 },
success_url: `${env("NEXT_PUBLIC_BASE_URL")}${successUrl}?workspacePublicId=${resolvedWorkspacePublicId}`,
cancel_url: `${env("NEXT_PUBLIC_BASE_URL")}${cancelUrl}`,
client_reference_id: workspacePublicId,
client_reference_id: resolvedWorkspacePublicId,
customer: user.stripeCustomerId ?? undefined,
metadata: {
...(slug && { workspaceSlug: slug }),
workspacePublicId,
workspacePublicId: resolvedWorkspacePublicId!,
userId: user.id,
subscriptionId,
userEmail: user.email ?? "",
...(resolvedSlug && { workspaceSlug: resolvedSlug }),
...(workspaceName && { workspaceName }),
...(workspaceDescription && { workspaceDescription }),
...(subscriptionId && { subscriptionId: String(subscriptionId) }),
plan: plan,
isNewWorkspace: workspaceName ? "true" : "false",
},
});
return res.status(200).json({ url: session.url });
} catch (error) {
console.error("Error:", error);
return res.status(500).json({ error: "Error creating checkout session" });
}
},
}),
);

View File

@@ -1,12 +1,14 @@
import { randomUUID } from "crypto";
import type { NextApiRequest, NextApiResponse } from "next";
import type { Readable } from "node:stream";
import { createNextApiContext } from "@kan/api/trpc";
import * as subscriptionRepo from "@kan/db/repository/subscription.repo";
import * as workspaceRepo from "@kan/db/repository/workspace.repo";
import { createLogger } from "@kan/logger";
import { createStripeClient } from "@kan/stripe";
const log = createLogger("stripe-webhook");
const log = createLogger("api");
async function buffer(readable: Readable) {
const chunks = [];
@@ -21,6 +23,9 @@ export default async function handler(
res: NextApiResponse,
) {
const stripe = createStripeClient();
const start = Date.now();
const requestId = randomUUID();
const procedure = req.url?.split("?")[0] ?? "/api/stripe/webhook";
if (req.method !== "POST") {
return res.status(405).json({ message: "Method not allowed" });
@@ -44,29 +49,85 @@ export default async function handler(
const { db } = await createNextApiContext(req);
log.info({ eventType: event.type, eventId: event.id }, "Stripe webhook received");
switch (event.type) {
case "checkout.session.completed": {
const checkoutSession = event.data.object;
const meta = checkoutSession.metadata;
const metaData = checkoutSession.metadata;
if (!meta?.workspacePublicId) break;
if (metaData?.workspacePublicId) {
await workspaceRepo.update(db, metaData.workspacePublicId, {
...(metaData.workspaceSlug && { slug: metaData.workspaceSlug }),
plan: "pro",
const plan = meta.plan === "team" ? "team" : ("pro" as const);
if (
meta.isNewWorkspace === "true" &&
meta.workspaceName &&
meta.userId &&
meta.userEmail
) {
const existing = await workspaceRepo.getByPublicId(db, meta.workspacePublicId);
if (!existing) {
const slug = meta.workspaceSlug ?? meta.workspacePublicId;
await workspaceRepo.create(db, {
publicId: meta.workspacePublicId,
name: meta.workspaceName,
slug,
plan,
createdBy: meta.userId,
createdByEmail: meta.userEmail,
...(meta.workspaceDescription && {
description: meta.workspaceDescription,
}),
});
await subscriptionRepo.create(db, {
plan,
referenceId: meta.workspacePublicId,
userId: meta.userId,
stripeCustomerId: checkoutSession.customer as string,
status: "active",
});
}
} else {
// Existing workspace upgrade — update plan (and slug for pro)
await workspaceRepo.update(db, meta.workspacePublicId, {
plan,
...(plan === "pro" && meta.workspaceSlug && { slug: meta.workspaceSlug }),
});
}
break;
}
default:
log.warn({ eventType: event.type }, "Unhandled Stripe event type");
}
log.info(
{
requestId,
procedure,
transport: "rest",
duration: Date.now() - start,
status: 200,
input: { eventType: event.type, eventId: event.id },
},
"API OK",
);
return res.status(200).json({ received: true });
} catch (err) {
log.error({ err }, "Stripe webhook handler failed");
log.error(
{
requestId,
procedure,
transport: "rest",
duration: Date.now() - start,
status: 400,
err,
},
"API error",
);
return res.status(400).json({ message: "Webhook handler failed" });
}
}

View File

@@ -1,52 +1,58 @@
import type { NextApiRequest, NextApiResponse } from "next";
import { addYears } from "date-fns";
import { createNextApiContext } from "@kan/api/trpc";
import { integrations } from "@kan/db/schema";
import { addYears } from "date-fns";
import { withApiLogging } from "@kan/api/utils/apiLogging";
import { withRateLimit } from "@kan/api/utils/rateLimit";
import { integrations } from "@kan/db/schema";
export default withRateLimit(
{ points: 100, duration: 60 },
async (req: NextApiRequest, res: NextApiResponse) => {
if (req.method !== "POST") {
return res.status(405).json({ message: "Method not allowed" });
}
withApiLogging(async (req: NextApiRequest, res: NextApiResponse) => {
if (req.method !== "POST") {
return res.status(405).json({ message: "Method not allowed" });
}
const { user } = await createNextApiContext(req);
const { user } = await createNextApiContext(req);
if (!user)
return res.status(401).json({ message: "User not authenticated" });
if (!user)
return res.status(401).json({ message: "User not authenticated" });
const apiKey = process.env.TRELLO_APP_API_KEY;
const apiKey = process.env.TRELLO_APP_API_KEY;
if (!apiKey)
return res.status(500).json({ message: "Trello API key not set in Environment Variables" });
if (!apiKey)
return res
.status(500)
.json({ message: "Trello API key not set in Environment Variables" });
const token = req.body.token;
const token = req.body.token;
if (!token)
return res.status(400).json({ message: "No token found" });
if (!token) return res.status(400).json({ message: "No token found" });
try {
const { db } = await createNextApiContext(req);
try {
const { db } = await createNextApiContext(req);
await db.insert(integrations).values({
provider: "trello",
userId: user.id,
accessToken: token,
expiresAt: addYears(new Date(), 1),
}).onConflictDoUpdate({
set: {
accessToken: token,
expiresAt: addYears(new Date(), 1),
},
target: [integrations.userId, integrations.provider],
});
await db
.insert(integrations)
.values({
provider: "trello",
userId: user.id,
accessToken: token,
expiresAt: addYears(new Date(), 1),
})
.onConflictDoUpdate({
set: {
accessToken: token,
expiresAt: addYears(new Date(), 1),
},
target: [integrations.userId, integrations.provider],
});
return res.status(200).json({ message: "Trello authentication successful" });
} catch (err) {
console.error("Trello authentication error:", err);
return res.status(400).json({ message: "Trello authentication failed" });
}
},
);
return res
.status(200)
.json({ message: "Trello authentication successful" });
} catch (err) {
return res.status(400).json({ message: "Trello authentication failed" });
}
}),
);

View File

@@ -3,9 +3,11 @@ import { Novu } from "@novu/api";
import { jwtVerify } from "jose";
import { z } from "zod";
import { env } from "~/env";
import { withApiLogging } from "@kan/api/utils/apiLogging";
import { withRateLimit } from "@kan/api/utils/rateLimit";
import { env } from "~/env";
const requestSchema = z.object({
token: z.string().min(1),
});
@@ -22,84 +24,85 @@ const textEncoder = new TextEncoder();
export default withRateLimit(
{ points: 100, duration: 60 },
async (req: NextApiRequest, res: NextApiResponse<ResponseData>) => {
if (process.env.NEXT_PUBLIC_KAN_ENV !== "cloud") {
return res.status(404).json({
success: false,
error: "Unsubscribe endpoint is not available.",
code: "UNAVAILABLE",
});
}
withApiLogging(
async (req: NextApiRequest, res: NextApiResponse<ResponseData>) => {
if (process.env.NEXT_PUBLIC_KAN_ENV !== "cloud") {
return res.status(404).json({
success: false,
error: "Unsubscribe endpoint is not available.",
code: "UNAVAILABLE",
});
}
if (req.method !== "POST") {
res.setHeader("Allow", "POST");
return res.status(405).json({
success: false,
error: "Method not allowed.",
code: "METHOD_NOT_ALLOWED",
});
}
if (req.method !== "POST") {
res.setHeader("Allow", "POST");
return res.status(405).json({
success: false,
error: "Method not allowed.",
code: "METHOD_NOT_ALLOWED",
});
}
const parsedBody = requestSchema.safeParse(req.body);
const parsedBody = requestSchema.safeParse(req.body);
if (!parsedBody.success) {
return res.status(400).json({
success: false,
error: "Invalid request payload.",
code: "BAD_REQUEST",
});
}
if (!parsedBody.success) {
return res.status(400).json({
success: false,
error: "Invalid request payload.",
code: "BAD_REQUEST",
});
}
if (!env.EMAIL_UNSUBSCRIBE_SECRET || !env.NOVU_API_KEY) {
return res.status(500).json({
success: false,
error: "Unsubscribe service is not configured.",
code: "NOT_CONFIGURED",
});
}
if (!env.EMAIL_UNSUBSCRIBE_SECRET || !env.NOVU_API_KEY) {
return res.status(500).json({
success: false,
error: "Unsubscribe service is not configured.",
code: "NOT_CONFIGURED",
});
}
let payload: z.infer<typeof tokenPayloadSchema>;
let payload: z.infer<typeof tokenPayloadSchema>;
try {
const verified = await jwtVerify(
parsedBody.data.token,
textEncoder.encode(env.EMAIL_UNSUBSCRIBE_SECRET),
{
// We intentionally do not use exp/iat claims
// tokens are long-lived and validated only by signature + payload.
clockTolerance: "0s",
},
);
payload = tokenPayloadSchema.parse(verified.payload);
} catch {
return res.status(401).json({
success: false,
error: "Your unsubscribe link is invalid or has expired.",
code: "INVALID_TOKEN",
});
}
try {
const verified = await jwtVerify(
parsedBody.data.token,
textEncoder.encode(env.EMAIL_UNSUBSCRIBE_SECRET),
{
// We intentionally do not use exp/iat claims
// tokens are long-lived and validated only by signature + payload.
clockTolerance: "0s",
},
);
payload = tokenPayloadSchema.parse(verified.payload);
} catch {
return res.status(401).json({
success: false,
error: "Your unsubscribe link is invalid or has expired.",
code: "INVALID_TOKEN",
});
}
const novu = new Novu({ secretKey: env.NOVU_API_KEY });
const novu = new Novu({ secretKey: env.NOVU_API_KEY });
try {
await novu.subscribers.preferences.update(
{
channels: {
email: false,
},
},
payload.subscriberId,
);
} catch (error) {
console.error("Failed to update Novu preferences", error);
return res.status(502).json({
success: false,
error:
"We could not update your email preferences right now. Please try again later.",
code: "NOVU_ERROR",
});
}
try {
await novu.subscribers.preferences.update(
{
channels: {
email: false,
},
},
payload.subscriberId,
);
} catch (error) {
return res.status(502).json({
success: false,
error:
"We could not update your email preferences right now. Please try again later.",
code: "NOVU_ERROR",
});
}
return res.status(200).json({ success: true });
},
return res.status(200).json({ success: true });
},
),
);

View File

@@ -2,6 +2,7 @@ import type { NextApiRequest, NextApiResponse } from "next";
import { Upload } from "@aws-sdk/lib-storage";
import { createNextApiContext } from "@kan/api/trpc";
import { withApiLogging } from "@kan/api/utils/apiLogging";
import { assertPermission } from "@kan/api/utils/permissions";
import { withRateLimit } from "@kan/api/utils/rateLimit";
import * as cardRepo from "@kan/db/repository/card.repo";
@@ -22,7 +23,7 @@ export const config = {
export default withRateLimit(
{ points: 100, duration: 60 },
async (req: NextApiRequest, res: NextApiResponse) => {
withApiLogging(async (req: NextApiRequest, res: NextApiResponse) => {
if (req.method !== "POST") {
return res.status(405).json({ error: "Method not allowed" });
}
@@ -36,7 +37,9 @@ export default withRateLimit(
const bucket = env.NEXT_PUBLIC_ATTACHMENTS_BUCKET_NAME;
if (!bucket) {
return res.status(500).json({ error: "Attachments bucket not configured" });
return res
.status(500)
.json({ error: "Attachments bucket not configured" });
}
const cardPublicId = req.query.cardPublicId;
@@ -55,7 +58,9 @@ export default withRateLimit(
}
if (!Number.isFinite(contentLength) || contentLength <= 0) {
return res.status(400).json({ error: "Missing or invalid content length" });
return res
.status(400)
.json({ error: "Missing or invalid content length" });
}
if (contentLength > MAX_SIZE_BYTES) {
@@ -129,8 +134,7 @@ export default withRateLimit(
return res.status(200).json({ attachment });
} catch (error) {
console.error("Attachment upload failed", error);
return res.status(500).json({ error: "Internal server error" });
}
},
}),
);

View File

@@ -2,13 +2,17 @@ import type { NextApiRequest, NextApiResponse } from "next";
import { PutObjectCommand } from "@aws-sdk/client-s3";
import { createNextApiContext } from "@kan/api/trpc";
import * as userRepo from "@kan/db/repository/user.repo";
import { env } from "~/env";
import { withApiLogging } from "@kan/api/utils/apiLogging";
import { withRateLimit } from "@kan/api/utils/rateLimit";
import * as userRepo from "@kan/db/repository/user.repo";
import { createS3Client } from "@kan/shared/utils";
const MAX_SIZE_BYTES = parseInt(process.env.S3_AVATAR_UPLOAD_LIMIT || '2097152', 10); // Default 2MB
import { env } from "~/env";
const MAX_SIZE_BYTES = parseInt(
process.env.S3_AVATAR_UPLOAD_LIMIT || "2097152",
10,
); // Default 2MB
const allowedContentTypes = ["image/jpeg", "image/png", "image/webp"];
export const config = {
@@ -19,7 +23,7 @@ export const config = {
export default withRateLimit(
{ points: 100, duration: 60 },
async (req: NextApiRequest, res: NextApiResponse) => {
withApiLogging(async (req: NextApiRequest, res: NextApiResponse) => {
if (req.method !== "POST") {
return res.status(405).json({ error: "Method not allowed" });
}
@@ -51,7 +55,9 @@ export default withRateLimit(
}
if (!Number.isFinite(contentLength) || contentLength <= 0) {
return res.status(400).json({ error: "Missing or invalid content length" });
return res
.status(400)
.json({ error: "Missing or invalid content length" });
}
if (contentLength > MAX_SIZE_BYTES) {
@@ -93,9 +99,7 @@ export default withRateLimit(
user: updatedUser,
});
} catch (error) {
console.error("Avatar upload failed", error);
return res.status(500).json({ error: "Internal server error" });
}
},
}),
);

View File

@@ -0,0 +1,31 @@
import { useRouter } from "next/navigation";
import { useEffect } from "react";
import { env } from "next-runtime-env";
import { authClient } from "@kan/auth/client";
import { PageHead } from "~/components/PageHead";
import SelectPlanView from "~/views/onboarding/select-plan";
export default function SelectPlanPage() {
const router = useRouter();
const { data: session, isPending } = authClient.useSession();
useEffect(() => {
if (!isPending && !session?.user) {
router.push("/login");
}
if (!isPending && env("NEXT_PUBLIC_KAN_ENV") !== "cloud") {
router.push("/boards");
}
}, [session, isPending, router]);
if (isPending || !session?.user) return null;
return (
<>
<PageHead title="Select plan | kan.bn" />
<SelectPlanView />
</>
);
}

View File

@@ -0,0 +1,28 @@
import { useRouter } from "next/navigation";
import { env } from "next-runtime-env";
import { useEffect } from "react";
import { authClient } from "@kan/auth/client";
import { PageHead } from "~/components/PageHead";
import WorkspaceDetailsView from "~/views/onboarding/workspace-details";
export default function WorkspaceDetailsPage() {
const router = useRouter();
const { data: session, isPending } = authClient.useSession();
useEffect(() => {
if (!isPending && !session?.user) router.push("/login");
if (!isPending && env("NEXT_PUBLIC_KAN_ENV") !== "cloud")
router.push("/boards");
}, [session, isPending, router]);
if (isPending || !session?.user) return null;
return (
<>
<PageHead title="Create workspace | kan.bn" />
<WorkspaceDetailsView />
</>
);
}

View File

@@ -17,7 +17,7 @@ interface Workspace {
description: string | null | undefined;
publicId: string;
slug: string | undefined;
plan: "free" | "pro" | "enterprise" | undefined;
plan: "free" | "team" | "pro" | "enterprise" | undefined;
role: "admin" | "member" | "guest";
weekStartDay: 0 | 1 | 6;
}
@@ -27,7 +27,7 @@ const initialWorkspace: Workspace = {
description: null,
publicId: "",
slug: "",
plan: "free",
plan: "free" as const,
role: "member",
weekStartDay: 1,
};
@@ -50,7 +50,15 @@ export const WorkspaceProvider: React.FC<{ children: ReactNode }> = ({
const workspacePublicId = useSearchParams().get("workspacePublicId");
const { data, isLoading } = api.workspace.all.useQuery();
const [pendingWorkspaceId, setPendingWorkspaceId] = useState<string | null>(
workspacePublicId,
);
const pollAttemptsRef = React.useRef(0);
const MAX_POLL_ATTEMPTS = 5;
const { data, isLoading } = api.workspace.all.useQuery(undefined, {
refetchInterval: pendingWorkspaceId ? 2000 : false,
});
const utils = api.useUtils();
const switchWorkspace = (_workspace: Workspace) => {
@@ -94,7 +102,16 @@ export const WorkspaceProvider: React.FC<{ children: ReactNode }> = ({
({ workspace }) => workspace.publicId === storedWorkspaceId,
);
if (!selectedWorkspace?.workspace) return;
if (!selectedWorkspace?.workspace) {
pollAttemptsRef.current += 1;
if (pollAttemptsRef.current >= MAX_POLL_ATTEMPTS) {
setPendingWorkspaceId(null);
}
return;
}
pollAttemptsRef.current = 0;
setPendingWorkspaceId(null);
setWorkspace({
publicId: selectedWorkspace.workspace.publicId,

View File

@@ -515,7 +515,7 @@ export function NewCardForm({
</div>
</div>
<div className="mt-5 flex items-center justify-end border-t border-light-600 px-5 pb-5 pt-5 dark:border-dark-600">
<div className="mt-5 flex items-center justify-end space-x-4 border-t border-light-600 px-5 pb-5 pt-5 dark:border-dark-600">
<Toggle
label={t`Create another`}
isChecked={isCreateAnotherEnabled}

View File

@@ -136,7 +136,7 @@ export function NewListForm({
}}
/>
</div>
<div className="mt-12 flex items-center justify-end border-t border-light-600 px-5 pb-5 pt-5 dark:border-dark-600">
<div className="mt-12 flex items-center justify-end space-x-4 border-t border-light-600 px-5 pb-5 pt-5 dark:border-dark-600">
<Toggle
label={t`Create another`}
isChecked={isCreateAnotherEnabled}

View File

@@ -2,6 +2,7 @@ import type { DropResult } from "react-beautiful-dnd";
import Link from "next/link";
import { useParams } from "next/navigation";
import { useRouter } from "next/router";
import { env } from "next-runtime-env";
import { t } from "@lingui/core/macro";
import { keepPreviousData } from "@tanstack/react-query";
import { useEffect, useState } from "react";
@@ -725,7 +726,9 @@ export default function BoardPage({ isTemplate }: { isTemplate?: boolean }) {
if (
card.publicId.startsWith(
"PLACEHOLDER",
)
) ||
env("NEXT_PUBLIC_KAN_ENV") ===
"cloud"
)
return;
e.preventDefault();

View File

@@ -184,7 +184,7 @@ const SelectSource = ({
/>
</div>
<div className="mt-12 flex items-center justify-end border-t border-light-600 px-5 pb-5 pt-5 dark:border-dark-600">
<div className="mt-12 flex items-center justify-end space-x-4 border-t border-light-600 px-5 pb-5 pt-5 dark:border-dark-600">
<div>
<Button
type="submit"
@@ -310,7 +310,7 @@ const ImportGithub: React.FC = () => {
<form onSubmit={handleSubmitProjects(onSubmitProjects)}>
<div className="h-[105px] overflow-auto px-5">{renderContent()}</div>
<div className="mt-12 flex items-center justify-end border-t border-light-600 px-5 pb-5 pt-5 dark:border-dark-600">
<div className="mt-12 flex items-center justify-end space-x-4 border-t border-light-600 px-5 pb-5 pt-5 dark:border-dark-600">
<Toggle
label={t`Select all`}
isChecked={!!isSelectAllEnabled}
@@ -459,7 +459,7 @@ const ImportTrello: React.FC = () => {
<form onSubmit={handleSubmitBoards(onSubmitBoards)}>
<div className="h-[105px] overflow-auto px-5">{renderContent()}</div>
<div className="mt-12 flex items-center justify-end border-t border-light-600 px-5 pb-5 pt-5 dark:border-dark-600">
<div className="mt-12 flex items-center justify-end space-x-4 border-t border-light-600 px-5 pb-5 pt-5 dark:border-dark-600">
<Toggle
label={t`Select all`}
isChecked={!!isSelectAllEnabled}

View File

@@ -148,7 +148,7 @@ export function NewBoardForm({ isTemplate }: { isTemplate?: boolean }) {
showTemplates={showTemplates}
customTemplates={formattedTemplates ?? []}
/>
<div className="mt-12 flex items-center justify-end border-t border-light-600 px-5 pb-5 pt-5 dark:border-dark-600">
<div className="mt-12 flex items-center justify-end space-x-4 border-t border-light-600 px-5 pb-5 pt-5 dark:border-dark-600">
{!isTemplate && (
<Toggle
label={t`Use template`}

View File

@@ -341,7 +341,7 @@ export function InviteMemberForm({
)}
</div>
<div className="mt-12 flex items-center justify-end border-t border-light-600 px-5 pb-5 pt-5 dark:border-dark-600">
<div className="mt-12 flex items-center justify-end space-x-4 border-t border-light-600 px-5 pb-5 pt-5 dark:border-dark-600">
<Toggle
label={
isShareInviteLinkEnabled

View File

@@ -0,0 +1,289 @@
import { useRouter, useSearchParams } from "next/navigation";
import { t } from "@lingui/core/macro";
import { Radio, RadioGroup } from "@headlessui/react";
import { AnimatePresence, motion } from "framer-motion";
import { useState } from "react";
import { HiUser } from "react-icons/hi2";
import { twMerge } from "tailwind-merge";
import { authClient } from "@kan/auth/client";
import Button from "~/components/Button";
import { api } from "~/utils/api";
type PlanId = "solo" | "team" | "pro";
type Billing = "monthly" | "annual";
// Each user orbits via a zero-size pivot div at center (144,144) that rotates.
// The icon is offset from the pivot by `radius` pixels along the x-axis.
// A counter-rotation on the icon keeps it upright.
const ORBIT_USERS: Record<
PlanId,
{ id: string; angle: number; radius: number; duration: number }[]
> = {
solo: [],
team: [
{ id: "t1", angle: 45, radius: 104, duration: 50 },
{ id: "t2", angle: 170, radius: 104, duration: 50 },
{ id: "t3", angle: 290, radius: 104, duration: 50 },
],
pro: [
{ id: "t1", angle: 45, radius: 104, duration: 50 },
{ id: "t2", angle: 170, radius: 104, duration: 50 },
{ id: "t3", angle: 290, radius: 104, duration: 50 },
{ id: "p1", angle: 10, radius: 144, duration: 70 },
{ id: "p2", angle: 120, radius: 144, duration: 70 },
{ id: "p4", angle: 240, radius: 144, duration: 70 },
{ id: "p3", angle: 230, radius: 64, duration: 30 },
],
};
export default function SelectPlanView() {
const router = useRouter();
const searchParams = useSearchParams();
const [selected, setSelected] = useState<PlanId>(
(searchParams.get("plan") as PlanId | null) ?? "solo",
);
const [billing, setBilling] = useState<Billing>(
(searchParams.get("billing") as Billing | null) ?? "annual",
);
const returnUrl = searchParams.get("returnUrl") ?? "/boards";
const { data: workspaces } = api.workspace.all.useQuery();
const { data: session } = authClient.useSession();
const { data: user } = api.user.getUser.useQuery(undefined, {
enabled: !!session?.user,
});
const userImage = user?.image ?? session?.user.image ?? null;
const hasExistingWorkspace = !!workspaces?.length;
const FREQUENCIES: { value: Billing; label: string }[] = [
{ value: "monthly", label: t`Monthly` },
{ value: "annual", label: t`Annual` },
];
const PLANS: {
id: PlanId;
name: string;
monthly: string;
annual: string;
description: string;
trial?: boolean;
}[] = [
{
id: "solo",
name: t`Solo`,
monthly: t`Free`,
annual: t`Free`,
description: t`Good for individuals starting out who just need the essentials.`,
},
{
id: "team",
name: t`Team`,
monthly: "$10/user/mo",
annual: "$8/user/mo",
description: t`Best for small teams who want to collaborate and move faster together.`,
trial: true,
},
{
id: "pro",
name: t`Pro`,
monthly: "$29/mo",
annual: "$23/mo",
description: t`Unlimited members and a custom workspace username for teams ready to scale.`,
trial: true,
},
];
const handleSelectPlan = (plan: PlanId) => {
setSelected(plan);
router.replace(`/onboarding/select-plan?plan=${plan}&billing=${billing}&returnUrl=${encodeURIComponent(returnUrl)}`);
};
const handleSetBilling = (b: Billing) => {
setBilling(b);
router.replace(`/onboarding/select-plan?plan=${selected}&billing=${b}&returnUrl=${encodeURIComponent(returnUrl)}`);
};
const handleContinue = () =>
router.push(`/onboarding/workspace?plan=${selected}&billing=${billing}&returnUrl=${encodeURIComponent(returnUrl)}`);
const handleCancel = () => router.push(returnUrl);
return (
<div className="flex min-h-screen flex-col items-center justify-center gap-4 bg-light-100 px-4 py-8 dark:bg-dark-50 md:px-6">
<div className="w-full max-w-3xl overflow-hidden rounded-xl border border-light-400 bg-light-200 shadow-xl dark:border-dark-400 dark:bg-dark-100">
<div className="flex flex-col md:h-[520px] md:flex-row">
{/* Left panel */}
<div className="flex flex-col p-6 md:w-[55%] md:p-8">
<div className="flex-1">
<h2 className="text-xl font-bold text-light-1000 dark:text-dark-1000">
{t`Choose a plan`}
</h2>
<p className="mt-1 text-sm text-light-800 dark:text-dark-800">
{t`Pick a plan to get started. All paid plans include a 14-day free trial.`}
</p>
{/* Billing toggle */}
<div className="mt-4 flex justify-end">
<RadioGroup
value={billing}
onChange={handleSetBilling}
className="grid grid-cols-2 gap-x-1 rounded-full p-1 text-center text-xs font-semibold ring-1 ring-inset ring-light-600 dark:ring-dark-600"
>
{FREQUENCIES.map((f) => (
<Radio
key={f.value}
value={f.value}
className={twMerge(
"cursor-pointer rounded-full px-2.5 py-0.5 text-xs transition-colors",
billing === f.value
? "bg-dark-50 text-white dark:bg-light-50 dark:text-dark-50"
: "text-light-900 hover:bg-light-200 dark:text-dark-900 dark:hover:bg-dark-200",
)}
>
{f.label}
</Radio>
))}
</RadioGroup>
</div>
<div className="mt-4 space-y-3">
{PLANS.map((plan) => {
const badge =
billing === "annual" ? plan.annual : plan.monthly;
return (
<button
key={plan.id}
type="button"
onClick={() => handleSelectPlan(plan.id)}
className={`relative w-full rounded-lg border px-4 py-3 text-left transition-colors ${
selected === plan.id
? "border-light-700 bg-light-300 dark:border-dark-600 dark:bg-dark-200"
: "border-light-500 bg-light-200 hover:border-light-600 dark:border-dark-500 dark:bg-dark-100 dark:hover:border-dark-600"
}`}
>
<div className="flex items-start justify-between">
<div className="flex-1 pr-8">
<div className="flex items-center gap-2">
<span className="text-sm font-semibold text-light-1000 dark:text-dark-1000">
{plan.name}
</span>
<span className="rounded-full bg-neutral-700 px-2 py-px text-[11px] font-medium text-neutral-200">
{badge}
</span>
{plan.trial && billing === "annual" && (
<span className="rounded-full bg-emerald-500/10 px-2 py-px text-[11px] font-medium text-emerald-600 ring-1 ring-inset ring-emerald-500/20 dark:text-emerald-400">
-20%
</span>
)}
</div>
<p className="mt-1 text-xs text-light-800 dark:text-dark-800">
{plan.description}
</p>
</div>
<div className="mt-0.5 flex-shrink-0">
<div
className={`flex h-4 w-4 items-center justify-center rounded-full border-2 ${
selected === plan.id
? "border-light-900 bg-light-900 dark:border-dark-900 dark:bg-dark-900"
: "border-light-700 dark:border-dark-700"
}`}
>
{selected === plan.id && (
<div className="h-1.5 w-1.5 rounded-full bg-light-100 dark:bg-dark-100" />
)}
</div>
</div>
</div>
</button>
);
})}
</div>
</div>
<div className="mt-6 flex justify-end gap-2 md:mt-8">
{hasExistingWorkspace && (
<Button variant="ghost" onClick={handleCancel}>
{t`Cancel`}
</Button>
)}
<Button onClick={handleContinue}>{t`Continue`}</Button>
</div>
</div>
{/* Right panel */}
<div className="hidden items-center justify-center bg-light-200 dark:bg-dark-200 md:flex md:w-[45%]">
<div className="relative h-72 w-72">
{/* Orbit rings */}
<div className="absolute inset-0 m-auto h-72 w-72 rounded-full border border-light-400 dark:border-dark-400" />
<div className="absolute inset-0 m-auto h-52 w-52 rounded-full border border-light-400 dark:border-dark-400" />
<div className="absolute inset-0 m-auto h-32 w-32 rounded-full border border-light-400 dark:border-dark-400" />
{/* Centre person */}
<div className="absolute inset-0 m-auto flex h-16 w-16 items-center justify-center overflow-hidden rounded-full bg-light-300 dark:bg-dark-300">
{userImage ? (
<img
src={userImage}
alt={t`Your avatar`}
className="h-full w-full object-cover"
/>
) : (
<HiUser className="h-7 w-7 text-light-700 dark:text-dark-700" />
)}
</div>
{/* Orbiting users — zero-size pivot at center rotates; icon offset by radius stays on the ring */}
<AnimatePresence>
{ORBIT_USERS[selected].map((u) => (
<motion.div
key={u.id}
style={{ position: "absolute", left: 144, top: 144 }}
initial={{ opacity: 0, rotate: u.angle }}
animate={{ opacity: 1, rotate: u.angle + 360 }}
exit={{ opacity: 0 }}
transition={{
opacity: { duration: 0.3 },
rotate: {
duration: u.duration,
repeat: Infinity,
ease: "linear",
repeatType: "loop",
},
}}
>
{/* Counter-rotate icon so it stays upright */}
<motion.div
style={{
position: "absolute",
left: u.radius - 12,
top: -12,
}}
initial={{ rotate: -u.angle }}
animate={{ rotate: -(u.angle + 360) }}
transition={{
duration: u.duration,
repeat: Infinity,
ease: "linear",
repeatType: "loop",
}}
className="flex h-6 w-6 items-center justify-center rounded-full bg-light-400 dark:bg-dark-400"
>
<HiUser className="h-3.5 w-3.5 text-light-800 dark:text-dark-800" />
</motion.div>
</motion.div>
))}
</AnimatePresence>
</div>
</div>
</div>
</div>
{!hasExistingWorkspace && (
<Button variant="ghost" onClick={() => authClient.signOut()}>
{t`Sign out`}
</Button>
)}
</div>
);
}

View File

@@ -0,0 +1,368 @@
import { useRouter, useSearchParams } from "next/navigation";
import { t } from "@lingui/core/macro";
import { motion } from "framer-motion";
import { useEffect, useState } from "react";
import {
HiArrowLeft,
HiArrowPath,
HiArrowRight,
HiCheck,
HiEllipsisVertical,
HiInformationCircle,
HiLockClosed,
} from "react-icons/hi2";
import { authClient } from "@kan/auth/client";
import Button from "~/components/Button";
import Input from "~/components/Input";
import LoadingSpinner from "~/components/LoadingSpinner";
import Toggle from "~/components/Toggle";
import { Tooltip } from "~/components/Tooltip";
import { useDebounce } from "~/hooks/useDebounce";
import { usePopup } from "~/providers/popup";
import { api } from "~/utils/api";
function slugify(value: string) {
return value
.toLowerCase()
.trim()
.replace(/[^a-z0-9\s-]/g, "")
.replace(/\s+/g, "-")
.replace(/-+/g, "-")
.slice(0, 60);
}
export default function WorkspaceNameView() {
const router = useRouter();
const searchParams = useSearchParams();
const plan = searchParams.get("plan") ?? "solo";
const billing = searchParams.get("billing") ?? "annual";
const returnUrl = searchParams.get("returnUrl") ?? "/boards";
const { showPopup } = usePopup();
const [isProToggle, setIsProToggle] = useState(plan === "pro");
const effectivePlan = isProToggle ? "pro" : plan;
const [name, setName] = useState("");
const [slug, setSlug] = useState("");
const [slugManuallyEdited, setSlugManuallyEdited] = useState(false);
const [description, setDescription] = useState("");
const handleNameChange = (value: string) => {
setName(value);
if (isProToggle && !slugManuallyEdited) {
setSlug(slugify(value));
}
};
const [debouncedSlug] = useDebounce(slug, 500);
const isTyping = slug !== debouncedSlug;
const slugAvailability = api.workspace.checkSlugAvailability.useQuery(
{ workspaceSlug: debouncedSlug },
{ enabled: isProToggle && debouncedSlug.length >= 3 && !isTyping },
);
const isSlugAvailable =
slugAvailability.data?.isAvailable && !slugAvailability.data?.isReserved;
const isSlugTaken =
slugAvailability.data?.isAvailable === false &&
!slugAvailability.data?.isReserved;
const isSlugReserved = slugAvailability.data?.isReserved === true;
const slugError = isSlugTaken
? t`This URL has already been taken`
: isSlugReserved
? t`This URL is reserved`
: undefined;
const { data: session } = authClient.useSession();
const { data: user } = api.user.getUser.useQuery(undefined, {
enabled: !!session?.user,
});
const { data: workspaces } = api.workspace.all.useQuery();
const hasExistingWorkspace = !!workspaces?.length;
const utils = api.useUtils();
const previewSlug = isProToggle
? slugify(slug) || slugify(name) || "your-workspace"
: "your-workspace";
const createWorkspace = api.workspace.create.useMutation({
onSuccess: async (workspace) => {
if (!workspace.publicId) return;
localStorage.setItem("workspacePublicId", workspace.publicId);
void utils.workspace.all.invalidate();
router.push("/boards");
},
onError: () => {
showPopup({
header: t`Unable to create workspace`,
message: t`Please try again later, or contact customer support.`,
icon: "error",
});
},
});
const [isRedirectingToCheckout, setIsRedirectingToCheckout] = useState(false);
const handleContinue = async () => {
if (!name.trim()) return;
if (effectivePlan === "solo") {
createWorkspace.mutate({
name: name.trim(),
...(description.trim() && { description: description.trim() }),
});
return;
}
// team/pro: redirect to Stripe — workspace created on checkout_success
setIsRedirectingToCheckout(true);
try {
const response = await fetch("/api/stripe/create_checkout_session", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
workspaceName: name.trim(),
...(description.trim() && {
workspaceDescription: description.trim(),
}),
...(effectivePlan === "pro" && slug ? { workspaceSlug: slug } : {}),
cancelUrl: `${window.location.pathname}?plan=${effectivePlan}&billing=${billing}&returnUrl=${encodeURIComponent(returnUrl)}`,
successUrl: "/boards",
billing,
plan: effectivePlan,
}),
});
const data = await response.json();
const url = (data as { url: string }).url;
if (url) {
window.location.href = url;
return;
}
} catch {
// fall through
}
setIsRedirectingToCheckout(false);
showPopup({
header: t`Unable to start checkout`,
message: t`Please try again later, or contact customer support.`,
icon: "error",
});
};
useEffect(() => {
document.getElementById("workspace-name-input")?.focus();
}, []);
const displayName = user?.name ?? session?.user.name ?? "";
const BOARDS = [t`Roadmap`, t`Engineering`, t`Marketing`];
const [visibleCount, setVisibleCount] = useState(1);
useEffect(() => {
const timers = BOARDS.slice(1).map((_, i) =>
setTimeout(() => setVisibleCount(i + 2), (i + 1) * 2000),
);
return () => timers.forEach(clearTimeout);
}, []);
return (
<div className="flex min-h-screen flex-col items-center justify-center gap-4 bg-light-100 px-4 py-8 dark:bg-dark-50 md:px-6">
<div className="w-full max-w-3xl overflow-hidden rounded-xl border border-light-400 bg-light-200 shadow-xl dark:border-dark-400 dark:bg-dark-100">
<div className="flex flex-col md:h-[520px] md:flex-row">
{/* Left panel */}
<div className="flex flex-col p-6 md:w-[55%] md:p-8">
<div className="flex-1">
<h2 className="text-xl font-bold text-light-1000 dark:text-dark-1000">
{t`Set up your workspace`}
</h2>
<p className="mt-1 text-sm text-light-800 dark:text-dark-800">
{t`You can always change these later in settings.`}
</p>
<div className="mt-6 space-y-3">
<Input
id="workspace-name-input"
placeholder={t`Workspace name`}
value={name}
onChange={(e) => handleNameChange(e.target.value)}
onKeyDown={(e) => e.key === "Enter" && handleContinue()}
maxLength={64}
/>
<div className="space-y-2">
<Input
placeholder={t`your-workspace`}
value={isProToggle ? slug : t`your-workspace`}
onChange={(e) => {
setSlugManuallyEdited(true);
setSlug(
e.target.value
.toLowerCase()
.replace(/[^a-z0-9\s-]/g, "")
.replace(/\s+/g, "-")
.replace(/-+/g, "-")
.slice(0, 60),
);
}}
disabled={!isProToggle}
prefix="kan.bn/"
className={
!isProToggle ? "cursor-not-allowed opacity-50" : ""
}
errorMessage={slugError}
iconRight={
!isProToggle ? (
<Tooltip
content={
<span className="text-xs">{t`Custom usernames require upgrading to a Pro plan`}</span>
}
placement="top"
delay={0}
>
<HiInformationCircle className="h-4 w-4 leading-[0] text-dark-700 dark:text-dark-700" />
</Tooltip>
) : isProToggle && slug.length >= 3 ? (
isTyping || slugAvailability.isPending ? (
<LoadingSpinner />
) : isSlugAvailable ? (
<HiCheck className="h-4 w-4 text-white" />
) : null
) : null
}
/>
</div>
{plan !== "pro" && (
<div className="pb-2">
<Toggle
isChecked={isProToggle}
onChange={() => setIsProToggle((v) => !v)}
label={t`Upgrade to Pro ($29/month)`}
labelPosition="after"
/>
</div>
)}
<div>
<textarea
value={description}
onChange={(e) => setDescription(e.target.value)}
placeholder={t`Workspace description`}
maxLength={280}
rows={3}
className="block w-full resize-none rounded-md border-0 bg-dark-300 bg-white/5 py-1.5 text-sm shadow-sm ring-1 ring-inset ring-light-600 placeholder:text-dark-800 focus:ring-2 focus:ring-inset focus:ring-light-700 dark:text-dark-1000 dark:ring-dark-700 dark:focus:ring-dark-700 sm:leading-6"
/>
<p className="mt-1 text-right text-[10px] text-light-700 dark:text-dark-700">
{description.length}/280
</p>
</div>
</div>
</div>
<div className="mt-6 flex flex-wrap items-center justify-between gap-3">
<div className="ml-auto flex gap-2">
<Button
variant="ghost"
onClick={() =>
router.replace(
`/onboarding/select-plan?plan=${effectivePlan}&billing=${billing}&returnUrl=${encodeURIComponent(returnUrl)}`,
)
}
>
{t`Back`}
</Button>
<Button
onClick={() => void handleContinue()}
disabled={
!name.trim() ||
createWorkspace.isPending ||
isRedirectingToCheckout ||
(isProToggle &&
slug.length >= 3 &&
(isTyping || slugAvailability.isPending || !!slugError))
}
isLoading={
createWorkspace.isPending || isRedirectingToCheckout
}
>
{t`Continue`}
</Button>
</div>
</div>
</div>
{/* Right panel — browser mockup */}
<div className="hidden flex-col bg-light-300 dark:bg-dark-200 md:flex md:w-[45%]">
{/* Browser chrome */}
<div className="flex items-center gap-2 border-b border-light-400 px-3 py-2.5 dark:border-dark-400">
<div className="flex items-center gap-1.5 text-light-700 dark:text-dark-700">
<HiArrowLeft className="h-3.5 w-3.5" />
<HiArrowRight className="h-3.5 w-3.5" />
<HiArrowPath className="h-3.5 w-3.5" />
</div>
<div className="flex flex-1 items-center gap-1.5 rounded-md bg-light-200 px-2.5 py-1 dark:bg-dark-300">
<HiLockClosed className="h-3 w-3 flex-shrink-0 text-light-700 dark:text-dark-700" />
<span className="truncate text-xs text-light-900 dark:text-dark-900">
kan.bn/
<span className="text-light-1000 dark:text-dark-1000">
{previewSlug}
</span>
</span>
</div>
<HiEllipsisVertical className="h-4 w-4 flex-shrink-0 text-light-700 dark:text-dark-700" />
</div>
{/* Browser content */}
<div className="flex flex-1 flex-col items-center overflow-hidden px-14 py-8">
{/* Workspace name + description */}
<p className="text-center text-xs font-bold text-light-1000 dark:text-dark-1000">
{name || t`Your workspace`}
</p>
<p className="mt-0.5 line-clamp-2 break-all text-center text-[10px] text-light-800 dark:text-dark-800">
{description || t`Your workspace description`}
</p>
{/* Boards area */}
<div className="mt-3 flex w-full flex-1 flex-col rounded-lg bg-light-200 p-2 dark:bg-dark-300">
<div className="flex flex-1 flex-col gap-1.5">
{BOARDS.map((board, i) => (
<motion.div
key={board}
initial={{ opacity: 0, y: -12 }}
animate={
i < visibleCount
? { opacity: 1, y: 0 }
: { opacity: 0, y: -12 }
}
transition={{
opacity: { duration: 0.2 },
y: { duration: 0.25, ease: "easeOut" },
}}
className="flex w-full flex-1 items-center justify-center rounded border border-dashed border-light-400 bg-light-50 px-3 text-[10px] font-medium text-light-900 dark:border-dark-400 dark:bg-dark-100 dark:text-dark-900"
>
{board}
</motion.div>
))}
</div>
</div>
{/* Footer */}
<p className="mt-2 text-[10px] font-semibold text-light-900 dark:text-dark-900">
kan.bn
</p>
</div>
</div>
</div>
</div>
{!hasExistingWorkspace && (
<Button variant="ghost" onClick={() => authClient.signOut()}>
{t`Sign out`}
</Button>
)}
</div>
);
}

View File

@@ -24,6 +24,8 @@ export function UpgradeToProConfirmation({
body: JSON.stringify({
...(entityId && { slug: entityId }),
workspacePublicId: workspacePublicId,
plan: "pro",
billing: "monthly",
cancelUrl: "/settings",
successUrl: "/settings",
}),

View File

@@ -28,6 +28,10 @@
"types": "./dist/utils/rateLimit.d.ts",
"default": "./src/utils/rateLimit.ts"
},
"./utils/apiLogging": {
"types": "./dist/utils/apiLogging.d.ts",
"default": "./src/utils/apiLogging.ts"
},
"./utils/permissions": {
"types": "./dist/utils/permissions.d.ts",
"default": "./src/utils/permissions.ts"

View File

@@ -202,6 +202,7 @@ export const workspaceRouter = createTRPCRouter({
.input(
z.object({
name: z.string().min(1).max(64),
description: z.string().max(280).optional(),
slug: z
.string()
.min(3)
@@ -260,6 +261,7 @@ export const workspaceRouter = createTRPCRouter({
slug: workspaceSlug,
createdBy: userId,
createdByEmail: userEmail,
...(input.description && { description: input.description }),
});
if (!result.publicId)

View File

@@ -0,0 +1,80 @@
import { randomUUID } from "crypto";
import type { NextApiRequest, NextApiResponse } from "next";
import { createLogger } from "@kan/logger";
import { createNextApiContext } from "../trpc";
const log = createLogger("api");
const isCloud = process.env.NEXT_PUBLIC_KAN_ENV === "cloud";
export function withApiLogging(
handler: (
req: NextApiRequest,
res: NextApiResponse,
) => Promise<unknown> | unknown,
) {
return async (req: NextApiRequest, res: NextApiResponse) => {
const start = Date.now();
const requestId = randomUUID();
const route = req.url?.split("?")[0] ?? "unknown";
const input = {
...(req.query &&
Object.keys(req.query).length > 0 && { query: req.query }),
...(req.body &&
typeof req.body === "object" &&
Object.keys(req.body).length > 0 && { body: req.body }),
};
let statusCode = 200;
const originalStatus = res.status.bind(res);
res.status = (code: number) => {
statusCode = code;
return originalStatus(code);
};
let userId: string | undefined;
let email: string | undefined;
try {
const ctx = await createNextApiContext(req);
userId = ctx.user?.id;
email = ctx.user?.email ?? undefined;
} catch {
// unauthenticated or auth unavailable
}
let handlerError: unknown;
try {
await handler(req, res);
} catch (err) {
handlerError = err;
statusCode = 500;
if (!res.headersSent) {
res.status(500).json({ error: "Internal server error" });
}
}
const duration = Date.now() - start;
const meta = {
requestId,
procedure: route,
transport: "rest",
duration,
userId,
...(isCloud && email && { email }),
...(Object.keys(input).length > 0 && { input }),
status: statusCode,
...(handlerError instanceof Error && {
error: handlerError.message,
stack: handlerError.stack,
}),
};
if (statusCode < 400) {
log.info(meta, "API OK");
} else {
log.error(meta, "API error");
}
};
}

View File

@@ -0,0 +1 @@
ALTER TYPE "public"."workspace_plan" ADD VALUE 'team' BEFORE 'pro';

File diff suppressed because it is too large Load Diff

View File

@@ -218,6 +218,13 @@
"when": 1773212242728,
"tag": "20260311065722_AddWeekStartDay",
"breakpoints": true
},
{
"idx": 31,
"version": "7",
"when": 1775170588247,
"tag": "20260402225628_AddTeamWorkspacePlan",
"breakpoints": true
}
]
}

View File

@@ -64,6 +64,8 @@ export const create = async (
slug: string;
createdBy: string;
createdByEmail: string;
description?: string;
plan?: "free" | "team" | "pro" | "enterprise";
},
) => {
const [workspace] = await db
@@ -73,6 +75,8 @@ export const create = async (
name: workspaceInput.name,
slug: workspaceInput.slug,
createdBy: workspaceInput.createdBy,
...(workspaceInput.description && { description: workspaceInput.description }),
...(workspaceInput.plan && { plan: workspaceInput.plan }),
})
.returning({
id: workspaces.id,
@@ -124,7 +128,7 @@ export const update = async (
workspaceInput: {
name?: string;
slug?: string;
plan?: "free" | "pro" | "enterprise";
plan?: "free" | "team" | "pro" | "enterprise";
description?: string;
showEmailsToMembers?: boolean;
weekStartDay?: number;

View File

@@ -34,7 +34,7 @@ export const slugTypes = ["reserved", "premium"] as const;
export type SlugType = (typeof slugTypes)[number];
export const slugTypeEnum = pgEnum("slug_type", slugTypes);
export const workspacePlans = ["free", "pro", "enterprise"] as const;
export const workspacePlans = ["free", "team", "pro", "enterprise"] as const;
export type WorkspacePlan = (typeof workspacePlans)[number];
export const workspacePlanEnum = pgEnum("workspace_plan", workspacePlans);