Compare commits
10 Commits
fix/api-ke
...
fix/menu-b
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3934f5fc56 | ||
|
|
2b8fe3d3a2 | ||
|
|
73c9b326a1 | ||
|
|
a55c8cd52b | ||
|
|
cca8a9d424 | ||
|
|
57186b6b4d | ||
|
|
3cb40d0f9a | ||
|
|
6ebab28606 | ||
|
|
5765c71ebf | ||
|
|
86ecdca7f1 |
1
.gitignore
vendored
@@ -34,6 +34,7 @@ yarn-error.log*
|
|||||||
.env
|
.env
|
||||||
.env*.local
|
.env*.local
|
||||||
|
|
||||||
|
|
||||||
# vercel
|
# vercel
|
||||||
.vercel
|
.vercel
|
||||||
|
|
||||||
|
|||||||
73
README.md
@@ -138,44 +138,45 @@ pnpm dev
|
|||||||
|
|
||||||
## Environment Variables 🔐
|
## Environment Variables 🔐
|
||||||
|
|
||||||
| Variable | Description | Required | Example |
|
| Variable | Description | Required | Example |
|
||||||
| ----------------------------------------- | --------------------------------------------------------- | ------------------------ | ----------------------------------------------------------- |
|
| ----------------------------------------- | --------------------------------------------------------- | ------------------------------------- | ----------------------------------------------------------- |
|
||||||
| `POSTGRES_URL` | PostgreSQL connection URL | To use external database | `postgres://user:pass@localhost:5432/db` |
|
| `POSTGRES_URL` | PostgreSQL connection URL | To use external database | `postgres://user:pass@localhost:5432/db` |
|
||||||
| `EMAIL_FROM` | Sender email address | For Email | `"Kan <hello@mail.kan.bn>"` |
|
| `EMAIL_FROM` | Sender email address | For Email | `"Kan <hello@mail.kan.bn>"` |
|
||||||
| `SMTP_HOST` | SMTP server hostname | For Email | `smtp.resend.com` |
|
| `SMTP_HOST` | SMTP server hostname | For Email | `smtp.resend.com` |
|
||||||
| `SMTP_PORT` | SMTP server port | For Email | `465` |
|
| `SMTP_PORT` | SMTP server port | For Email | `465` |
|
||||||
| `SMTP_USER` | SMTP username/email | No | `resend` |
|
| `SMTP_USER` | SMTP username/email | No | `resend` |
|
||||||
| `SMTP_PASSWORD` | SMTP password/token | No | `re_xxxx` |
|
| `SMTP_PASSWORD` | SMTP password/token | No | `re_xxxx` |
|
||||||
| `SMTP_SECURE` | Use secure SMTP connection (defaults to true if not set) | For Email | `true` |
|
| `SMTP_SECURE` | Use secure SMTP connection (defaults to true if not set) | For Email | `true` |
|
||||||
| `SMTP_REJECT_UNAUTHORIZED` | Reject invalid certificates (defaults to true if not set) | For Email | `false` |
|
| `SMTP_REJECT_UNAUTHORIZED` | Reject invalid certificates (defaults to true if not set) | For Email | `false` |
|
||||||
| `NEXT_PUBLIC_DISABLE_EMAIL` | To disable all email features | For Email | `true` |
|
| `NEXT_PUBLIC_DISABLE_EMAIL` | To disable all email features | For Email | `true` |
|
||||||
| `NEXT_PUBLIC_BASE_URL` | Base URL of your installation | Yes | `http://localhost:3000` |
|
| `NEXT_PUBLIC_BASE_URL` | Base URL of your installation | Yes | `http://localhost:3000` |
|
||||||
| `BETTER_AUTH_ALLOWED_DOMAINS` | Comma-separated list of allowed domains for OIDC logins | For OIDC/Social login | `example.com,subsidiary.com` |
|
| `BETTER_AUTH_ALLOWED_DOMAINS` | Comma-separated list of allowed domains for OIDC logins | For OIDC/Social login | `example.com,subsidiary.com` |
|
||||||
| `BETTER_AUTH_SECRET` | Auth encryption secret | Yes | Random 32+ char string |
|
| `BETTER_AUTH_SECRET` | Auth encryption secret | Yes | Random 32+ char string |
|
||||||
| `BETTER_AUTH_TRUSTED_ORIGINS` | Allowed callback origins | No | `http://localhost:3000,http://localhost:3001` |
|
| `BETTER_AUTH_TRUSTED_ORIGINS` | Allowed callback origins | No | `http://localhost:3000,http://localhost:3001` |
|
||||||
| `GOOGLE_CLIENT_ID` | Google OAuth client ID | For Google login | `xxx.apps.googleusercontent.com` |
|
| `GOOGLE_CLIENT_ID` | Google OAuth client ID | For Google login | `xxx.apps.googleusercontent.com` |
|
||||||
| `GOOGLE_CLIENT_SECRET` | Google OAuth client secret | For Google login | `xxx` |
|
| `GOOGLE_CLIENT_SECRET` | Google OAuth client secret | For Google login | `xxx` |
|
||||||
| `DISCORD_CLIENT_ID` | Discord OAuth client ID | For Discord login | `xxx` |
|
| `DISCORD_CLIENT_ID` | Discord OAuth client ID | For Discord login | `xxx` |
|
||||||
| `DISCORD_CLIENT_SECRET` | Discord OAuth client secret | For Discord login | `xxx` |
|
| `DISCORD_CLIENT_SECRET` | Discord OAuth client secret | For Discord login | `xxx` |
|
||||||
| `GITHUB_CLIENT_ID` | GitHub OAuth client ID | For GitHub login | `xxx` |
|
| `GITHUB_CLIENT_ID` | GitHub OAuth client ID | For GitHub login | `xxx` |
|
||||||
| `GITHUB_CLIENT_SECRET` | GitHub OAuth client secret | For GitHub login | `xxx` |
|
| `GITHUB_CLIENT_SECRET` | GitHub OAuth client secret | For GitHub login | `xxx` |
|
||||||
| `OIDC_CLIENT_ID` | Generic OIDC client ID | For OIDC login | `xxx` |
|
| `OIDC_CLIENT_ID` | Generic OIDC client ID | For OIDC login | `xxx` |
|
||||||
| `OIDC_CLIENT_SECRET` | Generic OIDC client secret | For OIDC login | `xxx` |
|
| `OIDC_CLIENT_SECRET` | Generic OIDC client secret | For OIDC login | `xxx` |
|
||||||
| `OIDC_DISCOVERY_URL` | OIDC discovery URL | For OIDC login | `https://auth.example.com/.well-known/openid-configuration` |
|
| `OIDC_DISCOVERY_URL` | OIDC discovery URL | For OIDC login | `https://auth.example.com/.well-known/openid-configuration` |
|
||||||
| `TRELLO_APP_API_KEY` | Trello app API key | For Trello import | `xxx` |
|
| `TRELLO_APP_API_KEY` | Trello app API key | For Trello import | `xxx` |
|
||||||
| `TRELLO_APP_API_SECRET` | Trello app API secret | For Trello import | `xxx` |
|
| `TRELLO_APP_API_SECRET` | Trello app API secret | For Trello import | `xxx` |
|
||||||
| `S3_REGION` | S3 storage region | For file uploads | `WEUR` |
|
| `S3_REGION` | S3 storage region | For file uploads | `WEUR` |
|
||||||
| `S3_ENDPOINT` | S3 endpoint URL | For file uploads | `https://xxx.r2.cloudflarestorage.com` |
|
| `S3_ENDPOINT` | S3 endpoint URL | For file uploads | `https://xxx.r2.cloudflarestorage.com` |
|
||||||
| `S3_ACCESS_KEY_ID` | S3 access key | For file uploads (optional with IRSA) | `xxx` |
|
| `S3_ACCESS_KEY_ID` | S3 access key | For file uploads (optional with IRSA) | `xxx` |
|
||||||
| `S3_SECRET_ACCESS_KEY` | S3 secret key | For file uploads (optional with IRSA) | `xxx` |
|
| `S3_SECRET_ACCESS_KEY` | S3 secret key | For file uploads (optional with IRSA) | `xxx` |
|
||||||
| `S3_FORCE_PATH_STYLE` | Use path-style URLs for S3 | For file uploads | `true` |
|
| `S3_FORCE_PATH_STYLE` | Use path-style URLs for S3 | For file uploads | `true` |
|
||||||
| `NEXT_PUBLIC_STORAGE_URL` | Storage service URL | For file uploads | `https://storage.kanbn.com` |
|
| `NEXT_PUBLIC_STORAGE_URL` | Storage service URL | For file uploads | `https://storage.kanbn.com` |
|
||||||
| `NEXT_PUBLIC_STORAGE_DOMAIN` | Storage domain name | For file uploads | `kanbn.com` |
|
| `NEXT_PUBLIC_STORAGE_DOMAIN` | Storage domain name | For file uploads | `kanbn.com` |
|
||||||
| `NEXT_PUBLIC_AVATAR_BUCKET_NAME` | S3 bucket name for avatars | For file uploads | `avatars` |
|
| `NEXT_PUBLIC_AVATAR_BUCKET_NAME` | S3 bucket name for avatars | For file uploads | `avatars` |
|
||||||
| `NEXT_PUBLIC_ATTACHMENTS_BUCKET_NAME` | S3 bucket name for attachments | For file uploads | `attachments` |
|
| `NEXT_PUBLIC_ATTACHMENTS_BUCKET_NAME` | S3 bucket name for attachments | For file uploads | `attachments` |
|
||||||
| `NEXT_PUBLIC_ALLOW_CREDENTIALS` | Allow email & password login | For authentication | `true` |
|
| `NEXT_PUBLIC_ALLOW_CREDENTIALS` | Allow email & password login | For authentication | `true` |
|
||||||
| `NEXT_PUBLIC_DISABLE_SIGN_UP` | Disable sign up | For authentication | `false` |
|
| `NEXT_PUBLIC_DISABLE_SIGN_UP` | Disable sign up | For authentication | `false` |
|
||||||
| `NEXT_PUBLIC_WHITE_LABEL_HIDE_POWERED_BY` | Hide “Powered by kan.bn” on public boards (self-host) | For white labelling | `true` |
|
| `NEXT_PUBLIC_WHITE_LABEL_HIDE_POWERED_BY` | Hide “Powered by kan.bn” on public boards (self-host) | For white labelling | `true` |
|
||||||
|
| `KAN_ADMIN_API_KEY` | Admin API key for stats and admin endpoints | For admin/monitoring | `your-secret-admin-key` |
|
||||||
|
|
||||||
See `.env.example` for a complete list of supported environment variables.
|
See `.env.example` for a complete list of supported environment variables.
|
||||||
|
|
||||||
|
|||||||
@@ -27,6 +27,7 @@ checksums:
|
|||||||
Add%20details.../singular: 2f42547fd5d199f173aa7a88c8a9b19a
|
Add%20details.../singular: 2f42547fd5d199f173aa7a88c8a9b19a
|
||||||
Add%20label/singular: 0be732d46df263265935fda342097a08
|
Add%20label/singular: 0be732d46df263265935fda342097a08
|
||||||
Add%20member/singular: 11979625770516ca287e929381778e02
|
Add%20member/singular: 11979625770516ca287e929381778e02
|
||||||
|
added%20%7B0%7D%20labels%3A%20%3C0%3E%7BlabelList%7D%3C%2F0%3E/singular: 42b0488d570626dc887c58ff669c953c
|
||||||
added%20a%20checklist/singular: 44304f4a5ef3a46378eea243b5d2df79
|
added%20a%20checklist/singular: 44304f4a5ef3a46378eea243b5d2df79
|
||||||
added%20a%20checklist%20item/singular: 20bc0330dba5a9ec978e04bec174365a
|
added%20a%20checklist%20item/singular: 20bc0330dba5a9ec978e04bec174365a
|
||||||
added%20a%20label%20to%20the%20card/singular: 04c5e4ee9b7b7e77ef089d2ac473d235
|
added%20a%20label%20to%20the%20card/singular: 04c5e4ee9b7b7e77ef089d2ac473d235
|
||||||
@@ -314,6 +315,8 @@ checksums:
|
|||||||
List/singular: 94f13e7ef909a4de9db7abaa1f9f0b61
|
List/singular: 94f13e7ef909a4de9db7abaa1f9f0b61
|
||||||
List%20name/singular: e925e2e6ccaf0eb4064a888aaea8d3c2
|
List%20name/singular: e925e2e6ccaf0eb4064a888aaea8d3c2
|
||||||
Lists/singular: 9f4a73afc8de321175d71935134ef066
|
Lists/singular: 9f4a73afc8de321175d71935134ef066
|
||||||
|
Load%20more%20activities/singular: f32d40a739ffaa700051c4c7d70055cf
|
||||||
|
Loading.../singular: 82b4ea7ed1439094d7c4be13aaba9a66
|
||||||
Login%20%7C%20kan.bn/singular: 42a6c8dcd73e0d46e652646dc86871eb
|
Login%20%7C%20kan.bn/singular: 42a6c8dcd73e0d46e652646dc86871eb
|
||||||
Logout/singular: 07948fdf20705e04a7bf68ab197512bf
|
Logout/singular: 07948fdf20705e04a7bf68ab197512bf
|
||||||
Long-term/singular: 51cb6f0b112250c5a091ca5f0866904b
|
Long-term/singular: 51cb6f0b112250c5a091ca5f0866904b
|
||||||
@@ -409,6 +412,7 @@ checksums:
|
|||||||
Remote/singular: dc3e4280dfe5c455b38ba6c8884999cf
|
Remote/singular: dc3e4280dfe5c455b38ba6c8884999cf
|
||||||
Remove/singular: dba2fe5fe9f83f8078c687f28cba4b52
|
Remove/singular: dba2fe5fe9f83f8078c687f28cba4b52
|
||||||
Remove%20member/singular: 1d77c2ca3768e486fd1fb5df30cb60d9
|
Remove%20member/singular: 1d77c2ca3768e486fd1fb5df30cb60d9
|
||||||
|
removed%20%7B0%7D%20labels%3A%20%3C0%3E%7BlabelList%7D%3C%2F0%3E/singular: 612fcfd4aca6818fc870f81d9687d63f
|
||||||
removed%20a%20label%20from%20the%20card/singular: f83ec18850a2a8a3f8242a740a04df06
|
removed%20a%20label%20from%20the%20card/singular: f83ec18850a2a8a3f8242a740a04df06
|
||||||
removed%20a%20member%20from%20the%20card/singular: 0bd7561bb79358fde3d595c3e60a315a
|
removed%20a%20member%20from%20the%20card/singular: 0bd7561bb79358fde3d595c3e60a315a
|
||||||
removed%20label%20%3C0%3E%7B0%7D%3C%2F0%3E/singular: 7e0936b15831e65754588b8512f62fcb
|
removed%20label%20%3C0%3E%7B0%7D%3C%2F0%3E/singular: 7e0936b15831e65754588b8512f62fcb
|
||||||
@@ -502,6 +506,7 @@ checksums:
|
|||||||
Trusted%20by%20fast-moving%20teams%3C0%2F%3Earound%20the%20world/singular: b065575df380536df9541a91ca9b37bf
|
Trusted%20by%20fast-moving%20teams%3C0%2F%3Earound%20the%20world/singular: b065575df380536df9541a91ca9b37bf
|
||||||
Unable%20to%20add%20checklist%20item/singular: 4c4c3eaaf10b348b39ae97eb5dc455df
|
Unable%20to%20add%20checklist%20item/singular: 4c4c3eaaf10b348b39ae97eb5dc455df
|
||||||
Unable%20to%20add%20comment/singular: 49bb435880817434698f31a6069564d6
|
Unable%20to%20add%20comment/singular: 49bb435880817434698f31a6069564d6
|
||||||
|
Unable%20to%20add%20label/singular: b09fda6420ea1dc10dbea0b1dc373f29
|
||||||
Unable%20to%20create%20card/singular: 90112ea12ec6fa42097a6e022ae048a4
|
Unable%20to%20create%20card/singular: 90112ea12ec6fa42097a6e022ae048a4
|
||||||
Unable%20to%20create%20checklist/singular: 94eed122e42e0951cd08b9ec62f5eeb6
|
Unable%20to%20create%20checklist/singular: 94eed122e42e0951cd08b9ec62f5eeb6
|
||||||
Unable%20to%20create%20list/singular: 7fbbf8314f8d08a4123c7daef09fed05
|
Unable%20to%20create%20list/singular: 7fbbf8314f8d08a4123c7daef09fed05
|
||||||
@@ -513,6 +518,7 @@ checksums:
|
|||||||
Unable%20to%20delete%20checklist%20item/singular: a74144593b625e4d8d7ecf734462c60d
|
Unable%20to%20delete%20checklist%20item/singular: a74144593b625e4d8d7ecf734462c60d
|
||||||
Unable%20to%20delete%20comment/singular: 550198b2c87f06726a843c79c1026ed9
|
Unable%20to%20delete%20comment/singular: 550198b2c87f06726a843c79c1026ed9
|
||||||
Unable%20to%20remove%20member/singular: 39025a0c53818438829603d213baef06
|
Unable%20to%20remove%20member/singular: 39025a0c53818438829603d213baef06
|
||||||
|
Unable%20to%20reorder%20checklist%20item/singular: dcc238c72b85daf74ebd46adcd914473
|
||||||
Unable%20to%20send%20feedback/singular: 656c93265d7e2bef1245b17d85f85ae5
|
Unable%20to%20send%20feedback/singular: 656c93265d7e2bef1245b17d85f85ae5
|
||||||
Unable%20to%20update%20board%20URL/singular: 080746884059142358b58d9a44ff7d93
|
Unable%20to%20update%20board%20URL/singular: 080746884059142358b58d9a44ff7d93
|
||||||
Unable%20to%20update%20board%20visibility/singular: a76a21d561b8943e9276e027a1e3f70d
|
Unable%20to%20update%20board%20visibility/singular: a76a21d561b8943e9276e027a1e3f70d
|
||||||
|
|||||||
@@ -28,6 +28,9 @@ const config = {
|
|||||||
/** We already do linting and typechecking as separate tasks in CI */
|
/** We already do linting and typechecking as separate tasks in CI */
|
||||||
typescript: { ignoreBuildErrors: true },
|
typescript: { ignoreBuildErrors: true },
|
||||||
|
|
||||||
|
// temporarily ignore eslint errors during build until we fix all the errors sigh
|
||||||
|
eslint: { ignoreDuringBuilds: true },
|
||||||
|
|
||||||
images: {
|
images: {
|
||||||
remotePatterns: (() => {
|
remotePatterns: (() => {
|
||||||
/** @type {Array<{protocol: "http" | "https", hostname: string}>} */
|
/** @type {Array<{protocol: "http" | "https", hostname: string}>} */
|
||||||
|
|||||||
@@ -4,9 +4,9 @@
|
|||||||
"private": true,
|
"private": true,
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"build": "pnpm with-env next build",
|
"build": "pnpm with-env next build --turbo",
|
||||||
"clean": "git clean -xdf .cache .next .turbo node_modules",
|
"clean": "git clean -xdf .cache .next .turbo node_modules",
|
||||||
"dev": "pnpm with-env next dev",
|
"dev": "pnpm with-env next dev --turbo",
|
||||||
"format": "prettier --check . --ignore-path ../../.gitignore",
|
"format": "prettier --check . --ignore-path ../../.gitignore",
|
||||||
"lint": "eslint",
|
"lint": "eslint",
|
||||||
"start": "pnpm with-env next start",
|
"start": "pnpm with-env next start",
|
||||||
@@ -47,7 +47,7 @@
|
|||||||
"date-fns": "^4.1.0",
|
"date-fns": "^4.1.0",
|
||||||
"geist": "^1.3.1",
|
"geist": "^1.3.1",
|
||||||
"jose": "^6.1.2",
|
"jose": "^6.1.2",
|
||||||
"next": "^16.0.8",
|
"next": "15.5.9",
|
||||||
"next-runtime-env": "^1.7.2",
|
"next-runtime-env": "^1.7.2",
|
||||||
"next-themes": "^0.4.6",
|
"next-themes": "^0.4.6",
|
||||||
"nextjs-cors": "^2.2.0",
|
"nextjs-cors": "^2.2.0",
|
||||||
|
|||||||
@@ -1 +0,0 @@
|
|||||||
<svg xmlns="http://www.w3.org/2000/svg" width="2500" height="2500" viewBox="0 0 192.756 192.756"><g fill-rule="evenodd" clip-rule="evenodd"><path fill="none" d="M0 0h192.756v192.756H0z"/><path fill="#313f94" d="M33.272 96.299c-.159-7.649-6.374-13.864-14.023-13.864S5.544 88.809 5.544 96.458h-2.71c0-8.446 6.693-15.298 15.139-15.458 8.446 0 15.458 6.853 15.458 15.299z" style="fill:currentColor"/><path fill="#313f94" d="M33.113 96.458c0-6.215-4.94-11.155-11.155-11.155s-10.677 4.94-10.677 11.155H8.253c0-7.012 5.737-12.589 12.749-12.749 6.853 0 12.43 6.374 12.589 12.589z" style="fill:currentColor"/><path fill="#313f94" d="M33.272 96.299c0-4.462-3.824-8.127-8.446-8.127s-7.968 3.665-7.968 8.287H13.99c0-5.418 4.144-9.88 9.562-9.88s9.721 4.462 9.88 9.721h-.16z" style="fill:currentColor"/><path fill="#313f94" d="M3.153 96.458c0 7.649 6.215 13.864 13.864 13.864 7.809 0 13.864-6.375 13.864-14.023h2.709c0 8.445-6.853 15.457-15.298 15.457S2.994 104.904 2.834 96.458z" style="fill:currentColor"/><path fill="#313f94" d="M3.153 96.299c0 6.215 4.94 11.154 11.155 11.154s10.836-4.939 10.677-11.154h3.028c0 7.012-5.737 12.748-12.589 12.748-7.012 0-12.589-6.373-12.589-12.589z" style="fill:currentColor"/><path fill="#313f94" d="M2.994 96.458c.159 4.462 3.984 8.128 8.446 8.128 4.622 0 7.968-3.666 7.968-8.287h2.868c0 5.418-4.143 9.881-9.562 9.881-5.417 0-9.72-4.303-9.72-9.722m54.341 3.507h-5.1l4.144-8.925zm-8.924 8.285 1.434-3.188h7.968l.479 3.188h7.968l-4.462-24.7H53.67l-13.227 24.7zm21.513 0 4.303-24.7h8.127l-4.302 24.7zm24.064-18.645h3.985c1.273 0 2.07.16 2.549.638.318.318.479.956.318 1.593-.158.797-.479 1.435-1.115 1.753-.479.479-1.434.638-2.709.638h-3.825zM90.8 108.25l1.435-8.605h3.187c.956 0 1.754.16 2.23.32.479.318.797.637.957 1.115q.237.716 0 1.912l-.16 1.912c-.318 1.594-.318 2.709-.318 3.346h8.287v-.797c-.16 0-.479 0-.479-.158-.158-.16-.158-.479 0-1.115l.639-3.826c.158-1.752.158-3.027-.32-3.664-.477-.797-1.434-1.436-2.867-2.072.797-.159 1.434-.479 2.07-.796.797-.638 1.436-1.275 1.912-2.072.639-.957.957-1.913 1.275-3.188q.24-1.434 0-2.39a5.3 5.3 0 0 0-.797-1.912 7.5 7.5 0 0 0-1.594-1.594c-.797-.319-1.594-.638-2.709-.797s-2.548-.319-4.302-.319H87.294l-4.303 24.7zm33.147-19.123c1.115 0 1.912.159 2.23.159.479.16.797.479.957.797.318.319.318.797.318 1.275-.16.638-.479 1.116-1.115 1.594-.479.319-1.436.637-2.709.637H120.6l.797-4.462zm-1.275 19.123c1.912 0 3.188-.158 3.984-.318s1.752-.479 2.549-.797c.957-.479 1.594-.797 2.072-1.275.797-.477 1.275-1.273 1.754-2.07a7.2 7.2 0 0 0 1.115-2.869c.158-1.434 0-2.709-.479-3.666-.637-1.115-1.434-1.752-2.709-2.071 2.391-1.434 3.824-3.187 4.143-5.259.479-2.231-.158-3.825-1.912-4.94-1.275-.957-3.346-1.435-6.533-1.435h-12.111l-4.303 24.7zm.478-10.357c1.594 0 2.549.318 3.027.637.479.479.637.957.479 1.754-.16.637-.479 1.273-1.115 1.752-.639.318-1.594.639-3.188.639h-3.346l.797-4.781zm18.645-14.343h7.969l-2.709 15.298c-.16.957-.16 1.754 0 2.232.158.477.477.955 1.115 1.273.637.32 1.275.479 2.07.479 1.117 0 2.232-.318 2.869-.955.797-.639 1.275-1.754 1.594-3.029l2.709-15.298h7.969l-2.551 14.501c-.318 1.754-.637 3.188-1.115 4.303-.479.957-1.115 1.912-1.912 2.709s-1.754 1.594-2.709 2.072c-1.115.637-2.23 1.115-3.506 1.434-1.434.16-2.869.32-4.303.32-1.754 0-3.188-.16-4.463-.32-1.273-.318-2.23-.797-3.027-1.434-.955-.637-1.594-1.275-2.072-2.072-.477-.797-.797-1.912-.797-3.186-.158-.797 0-2.232.32-3.984zm48.127 7.171h-7.809c0-.638-.318-1.275-.639-1.594-.477-.319-1.115-.478-2.07-.478-.957 0-1.754.159-2.23.478-.479.319-.639.638-.797 1.116 0 .478 0 .637.318.956s1.115.637 2.549.956l3.027.797c2.709.797 4.623 1.753 5.578 3.028.957 1.274 1.275 2.709.957 4.461-.32 1.436-.797 2.551-1.594 3.666s-1.754 2.072-2.709 2.709c-.957.637-2.232 1.115-3.666 1.594-1.434.318-3.027.479-4.621.479s-3.188-.16-4.621-.639q-2.153-.717-3.348-1.912c-1.195-1.195-1.434-1.752-1.752-2.867-.16-.797-.16-1.754-.16-2.869h7.809c0 .797.318 1.434.797 1.752.479.479 1.436.639 2.709.639q1.673 0 2.391-.479c.718-.479.639-.637.797-1.115 0-.479 0-.957-.318-1.275s-1.115-.637-2.551-.955l-2.709-.639c-1.273-.318-2.709-.797-3.824-1.434-1.115-.638-2.07-1.435-2.549-2.55-.479-.956-.479-2.071-.318-3.506.318-1.434.797-2.549 1.592-3.665.797-1.115 1.754-1.912 2.869-2.55.957-.797 2.23-1.115 3.506-1.434s2.551-.478 3.824-.478c1.594 0 2.869.159 4.145.478 1.273.319 2.07.797 2.867 1.275.639.478 1.115 1.115 1.436 1.753.477.637.637 1.275.797 1.912.157.637.317 1.434.317 2.39" style="fill:currentColor"/></g></svg>
|
|
||||||
|
Before Width: | Height: | Size: 4.3 KiB |
|
Before Width: | Height: | Size: 5.0 KiB |
@@ -1 +0,0 @@
|
|||||||
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" viewBox="0 0 2000 456.5"><path d="M380.5 268.5c0 13.6-8 26-23.6 28.4-26.8 4.8-82.8 7.6-130 7.6s-103.2-2.8-130-7.6c-15.6-2.8-23.2-15.2-23.2-28.4v-89.2c0-13.6 10.4-26.4 23.2-28.4 8-1.6 26.4-2.8 40.8-2.8 5.6 0 9.6 4.4 10 10.8v62c27.6 0 51.6-1.6 79.6-1.6s51.6 1.6 79.6 1.6v-62c0-6.4 4.4-10.8 9.6-10.8 14.4 0 32.8 1.2 40.8 2.8 12.8 2.4 23.6 15.2 23.6 28.4zM226.4 0C101.6 0 0 102.4 0 228.4s101.6 228 226.4 228 226.4-102.4 226.4-228S352.1 0 226.4 0" class="st0" style="fill:currentColor"/><path d="M543.6 309.9c-70.4 0-105.6-51.2-105.6-108 0-56.4 36.8-107.2 106.4-107.2 26.8 0 46 5.6 61.6 16.4l-20 33.2c-11.2-7.2-24-12-42.4-12-38 0-58 30.4-58 68.4 0 38.8 19.2 71.6 58.8 71.6 22 0 35.6-7.6 46.4-16l18.4 32c-10.8 9.6-35.6 21.6-65.6 21.6M694 309.9c-52.4 0-75.6-40-75.6-79.6s22.8-80.4 75.2-80.4 76.4 39.6 76.4 79.2c0 38.8-23.2 80.8-76 80.8m-1.2-128c-22.8 0-29.6 19.2-29.6 47.2s8.8 48.4 31.2 48.4c22.8 0 30.4-18.8 30.4-47.2s-8.8-48.4-32-48.4M836.9 153.9v97.6c0 15.2 5.2 22.4 19.6 22.4 15.2 0 26.8-14.8 29.6-18.4V153.9h42.4v107.6c0 20 2.4 35.6 4.4 44.8h-41.6c-1.2-4.4-2.8-14-3.2-20-8 10.4-23.6 24-48.4 24-33.2 0-45.2-21.6-45.2-49.6V153.9zM1032.5 309.9c-48.8 0-78.4-32-78.4-80 0-51.2 33.6-80.4 80-80.4 24.4 0 38.8 7.2 46 12l-13.6 29.2c-6.4-4.4-16.4-8.8-31.2-8.8-23.6 0-36.4 18.4-36.4 46.4s12 48 37.2 48c16.8 0 27.6-6 32-8.8l12.8 28.4c-7.2 4.8-20.8 14-48.4 14M1194.5 306.3v-97.6c0-15.2-5.2-22.4-19.2-22.4-15.6 0-27.2 14.4-30 18.4v102h-42.4V81.1h42.4v90.8c7.6-8.4 22-22 46.8-22 33.2 0 45.2 21.2 45.2 49.6v106.4zM1314.1 81.1v84.4c6.8-6.8 20-16 36.8-16 37.6 0 63.6 26 63.6 78.8 0 52.4-34.8 81.2-80.4 81.2-34.4 0-55.2-8.4-62.4-12.4v-216zm0 192c2.8.8 9.2 3.2 20 3.2 22 0 35.2-16.4 35.2-47.6 0-28-9.2-44.8-30.8-44.8-12.8 0-22 8-24.8 11.2zM1519.8 306.3c-1.2-4-2.4-11.6-2.8-16.4-6.4 8-20.8 20-42 20-25.6 0-45.6-15.6-45.6-42.8 0-39.6 40-54 80.4-54h5.2v-8.8c0-12.8-5.2-20.4-24-20.4-19.2 0-32.4 10-38.4 14.4l-18-26.4c9.2-8 28.8-22 61.2-22 41.6 0 61.2 16.4 61.2 56.8v53.6c0 20.8 2.4 36 4.4 46zm-4.8-67.2h-5.2c-23.2 0-39.2 6.8-39.2 24.4 0 10.8 8.4 15.6 17.6 15.6 14.4 0 22.4-8 26.8-12.8zM1633.8 309.9c-27.2 0-44.4-8-53.6-14.4l14.4-30c5.6 4 20.4 12.4 37.2 12.4 15.6 0 24.4-4.4 24.4-13.2 0-10-16.8-12.8-38.4-23.2-20.8-10-32.8-22-32.8-44.8 0-28.8 22.4-47.2 56.8-47.2 26 0 41.6 8 48.8 12l-14.8 29.2c-5.6-4-17.6-9.6-32-9.6s-20.4 5.2-20.4 12.8c0 10 14 12.4 30.8 19.2 23.6 9.6 40.4 20.8 40.4 46.8-.8 33.2-23.6 50-60.8 50M1792.2 277.9c20.4 0 31.6-6.4 38.8-10.4l13.6 27.6c-10 5.6-25.6 14.8-56.4 14.8-50.4 0-79.2-32-79.2-80.8 0-48.4 33.2-79.2 74.8-79.2 47.6 0 70.4 33.2 65.2 90.4h-94c1.6 22.8 12.8 37.6 37.2 37.6m16-66.8c-.4-16.8-6.8-30.4-25.2-30.4-16.8 0-26.4 10.8-28.8 30.4z" class="st1" style="fill:currentColor" transform="translate(150.22 27.826)"/></svg>
|
|
||||||
|
Before Width: | Height: | Size: 2.7 KiB |
@@ -1 +0,0 @@
|
|||||||
<svg xmlns="http://www.w3.org/2000/svg" width="892.4" height="170.507" viewBox="-86.2 14.747 1092.4 170.507"><path d="M3054.827 974.386a4.32 4.32 0 1 1 8.637 0 4.32 4.32 0 0 1-8.637 0M2917.055 962.946q0-4.106-1.587-6.09-1.586-1.98-4.818-1.98h-2.294v16.732h1.755q3.592.001 5.267-2.135 1.676-2.134 1.677-6.527m8.18-.285q0 7.478-4.02 11.522-4.02 4.047-11.304 4.046h-9.436v-29.87h10.095q7.023 0 10.845 3.677 3.82 3.677 3.82 10.625M2951.373 978.229h7.509v-29.996h-7.509zM2969.43 967.04q0 2.87.749 4.374.749 1.505 2.515 1.505 1.748 0 2.469-1.505.719-1.505.718-4.374 0-2.853-.728-4.306-.731-1.457-2.498-1.458-1.727.001-2.476 1.447-.749 1.444-.749 4.317m14.094 0q.001 5.466-2.87 8.524-2.871 3.059-8.036 3.059-4.955 0-7.883-3.128-2.93-3.126-2.93-8.455 0-5.448 2.871-8.467t8.058-3.02q3.206 0 5.664 1.398t3.792 4.003q1.334 2.603 1.334 6.086M2986.506 978.23h7.51v-22.282h-7.51zM2986.506 953.253h7.51v-5.022h-7.51zM3009.23 972.546c1.015 0 2.222-.258 3.63-.769v5.606q-1.517.669-2.89.953-1.372.286-3.217.286-3.781 0-5.455-1.899-1.667-1.897-1.668-5.828v-9.185H2997v-5.76h2.63v-5.69l7.567-1.317v7.007h4.791v5.76h-4.791v8.672q0 2.164 2.034 2.164M3026.612 972.546c1.013 0 2.22-.258 3.63-.769v5.606q-1.518.669-2.89.953-1.374.286-3.218.286-3.782 0-5.452-1.899-1.671-1.897-1.672-5.828v-9.185h-2.63v-5.76h2.63v-5.777l7.567-1.23v7.007h4.793v5.76h-4.793v8.672q0 2.164 2.035 2.164M3039.717 964.326q.155-1.83 1.047-2.685.895-.855 2.217-.855 1.445-.001 2.295.965.857.962.893 2.575zm10.59-6.145q-2.678-2.626-7.593-2.626-5.166 0-7.952 3.018-2.784 3.019-2.785 8.663.001 5.467 3.007 8.426 3.005 2.96 8.44 2.96 2.61 0 4.493-.355a13 13 0 0 0 3.627-1.266l-1.154-5.021c-.851.347-1.661.615-2.426.79q-1.658.386-3.638.386-2.171 0-3.427-1.061-1.258-1.065-1.335-2.932h13.422v-3.42q0-4.938-2.679-7.562M2935.2 964.326q.155-1.83 1.047-2.685.894-.855 2.219-.855 1.44-.001 2.294.965.855.962.893 2.575zm10.592-6.145q-2.68-2.626-7.595-2.626-5.167 0-7.95 3.018-2.785 3.019-2.786 8.663 0 5.467 3.007 8.426 3.004 2.96 8.44 2.96 2.61 0 4.493-.355a13 13 0 0 0 3.627-1.266l-1.155-5.021c-.851.347-1.661.615-2.425.79q-1.66.386-3.639.386-2.17 0-3.427-1.061-1.258-1.065-1.335-2.932h13.422v-3.42q0-4.938-2.677-7.562" style="fill:currentColor" transform="translate(-15746.429 -5136.262)scale(5.4348)"/></svg>
|
|
||||||
|
Before Width: | Height: | Size: 2.2 KiB |
@@ -1 +0,0 @@
|
|||||||
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" viewBox="0 0 295 42"><rect width="100%" height="100%" fill="none"/><path d="M259.5 5.5c0-2.9.9-3.9 2.4-3.9s2.7.6 4.1 3.9l8.5 19.3V37c0 2.9-1.2 3.7-4.5 4.1v.8h15.7v-.8c-3.4-.4-4.5-1.3-4.5-4.1V24.8l8.2-18.6c1.6-3.6 3.2-4.4 5.6-4.8V.6h-11.5v.8c3.9.4 5.3 1.5 4.2 4.1L280.5 22l-7.4-16.9c-1-2.3-.4-3 3.9-3.6V.7h-24.7v.8c3.9.6 5.1 1.3 5.1 4.1v22.6L239.3.7h-8.9v.8c2.9.4 3.8 1.3 3.8 4.1v31.5c0 2.9-.8 3.9-1.8 3.9-.9 0-1.4-.4-2.7-3.9L216.3.5h-.8l-12.9 35c-1.4 3.9-3.6 5.2-5.8 5.7v.8h11.8v-.8c-4.1-.4-5.4-2-4.5-4.6l2.9-8h12.2l2.8 7.5c1.2 3.4.5 4.4-3 5v.8h22.4v-.8c-3.9-.6-5.1-1.3-5.1-4.1V8.8L258.2 42h1.3zM101.6 21.2c0-12.8 6.1-19.5 13.2-19.5 4.2 0 6.9.9 8.5 2.6 1.2 1.2 2.1 2.9 3.1 5.6h.8V1.3C123.1.5 119.4 0 115.7 0 105 0 93.9 6.9 93.9 21.2S105 42.4 115 42.4c4.4 0 8.3-.7 12-1.8l1.2-8.1-.7-.2c-.9 1.7-2 3.2-3.2 4.5-2.6 2.6-6.1 4-9.6 4-6.8-.1-13.1-6.6-13.1-19.6m88.7 1.2c-.9 0-2.1-.1-3.3-.3v-20h3.3c5.5 0 7.9 2.9 7.9 10.1 0 7.3-2.5 10.2-7.9 10.2M61.8.6v9.9h.8c1.2-6.3 3.7-8.3 7.9-8.3h2V37c0 2.9-1.2 3.7-4.5 4.1v.8h15.7v-.8c-3.4-.4-4.5-1.3-4.5-4.1V2.1h2c4.2 0 6.7 2 7.9 8.3h.8V.5H61.8zM49.3 42.4c6.8 0 14-3.9 14-11.9 0-4.7-2.5-8.6-6.9-11l-7.8-4.3c-4.1-2.3-5.3-4.4-5.3-7.4 0-3.4 2.5-6.1 7.2-6.1 2.3 0 4 .6 5.4 1.9 1.2 1.2 2.4 3.2 3.5 6.8h.7V1.3C57.3.5 54.4 0 51 0c-6.7 0-11.7 4.2-11.7 11.3 0 4.5 2.5 8.6 6.6 11l7.2 4c4.1 2.3 5.4 4.5 5.4 7.8 0 3.9-4 6.7-8.4 6.7-2.9 0-5.3-1-7-2.7-1.1-1.1-2.3-2.8-3.1-5h4.7v-.8c-1.3-.3-2.1-.5-3.2-3.1L32.3 7.3h-.8l-9 21.4c-1.2 2.9-2 3.4-3.4 3.6v.8h8v-.8c-2.9-.3-3.7-1.7-3-3.5l1.4-3.4h8.1l1.8 4.2c.8 1.9-.4 2.4-3.3 2.6v.8h6.4v7.9c3.2.9 7.3 1.5 10.8 1.5m101.6-.4 11.9-33.1.9 28.2c.1 2.8-1 3.6-4.4 4v.8h32.8v-.8c-3.9-.6-5.1-1.3-5.1-4.1V23.7c1.3.2 2.6.3 3.6.3 7.9 0 14.7-2.9 14.7-11.7S198.5.6 190.6.6h-14.1v.8c2.9.4 3.8 1.3 3.8 4.1V37c0 2.9-1.2 4.1-4.5 4.1h-.1c-3.5 0-5-1.3-5.1-4l-1.2-31.5c-.1-2.9.9-3.8 4-4.2V.6h-9.7l-10.6 29.7L142.5.6h-10.4v.8c3.1.4 4.1 1.4 4 4.2L135 35.8c-.1 3-1.7 4.8-4.6 5.3v.8h11v-.8c-2.8-.4-4.4-2.2-4.3-5.3l.9-27.5 12.1 33.6zM119 33.3c5.3 0 12.1-4.7 12.1-12.1 0-7.3-6.7-12.1-12.1-12.1-5.3 0-12.1 4.7-12.1 12.1 0 7.3 6.7 12.1 12.1 12.1m0-22.5c3.4 0 5.7 2.8 5.7 10.4 0 7.7-2.4 10.4-5.7 10.4-3.4 0-5.7-2.8-5.7-10.4 0-7.7 2.3-10.4 5.7-10.4m99.7 16.1h-11.1l5.5-15.2zM33.1 23.8h-6.8l3.4-8.3zm-13 2.1h.8V13.5h-.8c-1.3 4.4-2.6 5.4-5 5.4h-4.6V2.1h7.3c4.2 0 6.7 2 7.9 8.3h.8V.5H0v.8c2.9.4 3.8 1.3 3.8 4.1v31.5c0 2.9-.9 3.7-3.8 4.1v.8h15.6V41c-3.9-.6-5.1-1.3-5.1-4.1V20.4h4.6c2.3.1 3.7 1.1 5 5.5" class="currentLayer" style="fill:currentColor"/></svg>
|
|
||||||
|
Before Width: | Height: | Size: 2.5 KiB |
@@ -1 +0,0 @@
|
|||||||
<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" viewBox="-5 0 24 14"><path d="M11.48 4.37c-.714 0-1.207.284-1.54.678a.9.9 0 0 0-.16-.238c-.273-.308-.712-.452-1.3-.452-.576 0-1.056.18-1.39.462-.172-.28-.585-.467-1.082-.467-.65 0-1.358.092-1.778.769-.01-.244-.032-.373-.169-.518-.166-.176-.436-.222-.698-.222-.478 0-.838.209-1.097.634C1.89 5.616.98 7.59 1 8.546c.014.618.428 1.063 1.17 1.08.579.015 1.034-.14 1.323-.432.26.282.655.447 1.128.447.528 0 1.059-.158 1.372-.504.264.324.68.513 1.214.51a2.19 2.19 0 0 0 1.713-.842c.22.598.777.836 1.386.836 1.335 0 1.92-.918 2.41-2.369.11-.327.256-.873.28-1.33.041-.764-.282-1.571-1.517-1.571M2.598 8.02c.69-.12.864.129.842.36-.065.692-.7.847-1.251.834-.4-.009-.76-.193-.77-.657-.017-.812.811-2.69 1.201-3.314.18-.295.4-.441.75-.441.331 0 .413.17.408.374-.013.544-.892 2.197-1.18 2.843m2.249-.639a7 7 0 0 0-.203.657c.227-.056.397-.096.688-.089.332.008.544.146.544.42 0 .666-.735.86-1.245.86-.56 0-1.052-.318-1.052-.93 0-.718.39-1.807.755-2.532.448-.89.906-1.008 1.695-1.008.347 0 .747.148.747.475 0 .454-.385.627-.766.65a5 5 0 0 1-.563.006s-.127.194-.262.538c.706-.1 1.005.06.886.47-.161.551-.639.587-1.224.483zM8.32 5.665c-.19 0-.316.12-.409.251-.204.288-.648 1.44-.717 1.912-.047.324.093.39.246.39.245 0 .52-.26.614-.688 0 0-.467-.01-.338-.425.125-.402.362-.489.756-.505.775-.032.698.54.636.846-.201.99-.907 1.787-1.904 1.787-.683 0-1.107-.378-1.107-1.075 0-.496.246-1.275.44-1.731.416-.97.852-1.65 1.962-1.65.666 0 1.191.24 1.114.864-.056.457-.286.726-.702.759-.116.009-.593-.003-.435-.454.056-.157.078-.281-.156-.281m4.192.819a6.7 6.7 0 0 1-.668 1.79c-.467.84-1.035.959-1.53.953s-1.055-.19-1.06-.954c-.002-.549.235-1.324.436-1.832.35-.92.708-1.671 1.84-1.658 1.32.016 1.085 1.19.982 1.7m-1.12-.8c-.113-.001-.212.02-.3.158-.2.258-.784 1.854-.774 2.172.004.114.067.214.208.214.161 0 .25-.111.33-.246.184-.311.7-1.721.715-2.074.004-.102-.013-.222-.179-.224" style="fill:currentColor"/></svg>
|
|
||||||
|
Before Width: | Height: | Size: 1.9 KiB |
@@ -1 +0,0 @@
|
|||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="-48.214 -18.217 387.865 116.248"><path d="M1.785 65.652h31.62V55.27H13.23V15.665H1.785zm47.629 0v-34.43H37.97v34.43zm-5.721-39.13c3.99 0 6.474-2.644 6.474-5.95-.074-3.378-2.484-5.947-6.398-5.947-3.915 0-6.475 2.57-6.475 5.947 0 3.306 2.484 5.95 6.324 5.95zm11.034 39.13h11.444V46.424c0-1.029.074-2.058.377-2.791.826-2.056 2.709-4.186 5.871-4.186 4.142 0 5.799 3.158 5.799 7.784v18.42H89.66V45.91c0-10.576-5.646-15.497-13.176-15.497-6.173 0-8.884 3.451-10.39 5.802h.077v-4.993H54.727c.151 3.231 0 34.43 0 34.43m51.078-49.987H94.361v49.987h11.444V54.489l2.86-3.601 8.96 14.764h14.078l-15.056-21.373 13.174-14.54h-13.776s-9.411 13.008-10.24 14.552zm56.501 35.625c.151-.884.377-2.58.377-4.498 0-8.9-4.518-17.936-16.413-17.936-12.724 0-18.597 10.063-18.597 19.19 0 11.288 7.153 18.337 19.65 18.337 4.97 0 9.561-.732 13.327-2.275l-1.506-7.558c-3.088 1.024-6.25 1.537-10.164 1.537-5.345 0-10.012-2.195-10.389-6.871l23.715.072zm-23.79-7.742c.301-2.938 2.26-7.273 7.153-7.273 5.194 0 6.4 4.628 6.4 7.273h-13.552zm52.414-27.883v17.304h-.151c-1.657-2.422-5.12-4.038-9.71-4.038-8.81 0-16.564 7.05-16.49 19.094 0 11.164 7.003 18.435 15.735 18.435 4.744 0 9.26-2.058 11.52-6.024h.225l.453 5.216h10.163c-.15-2.424-.302-6.61-.302-10.723V15.664h-11.444zm0 34.05c0 .88-.075 1.763-.227 2.495-.675 3.16-3.386 5.361-6.699 5.361-4.742 0-7.83-3.818-7.83-9.84 0-5.654 2.637-10.208 7.906-10.208 3.538 0 6.022 2.423 6.7 5.433.15.663.15 1.398.15 2.058v4.7z" style="fill:currentColor"/><mask id="a"><rect width="100%" height="100%" fill="#fff"/><path d="M236.85 65.61V31.18h-11.444v34.43h11.445zm-5.72-39.13c3.99 0 6.474-2.644 6.474-5.948-.075-3.379-2.484-5.949-6.398-5.949-3.917 0-6.475 2.57-6.475 5.949 0 3.304 2.483 5.948 6.324 5.948zm12.054 39.13h11.443V46.385c0-1.028.075-2.058.377-2.792.827-2.057 2.71-4.186 5.872-4.186 4.14 0 5.797 3.157 5.797 7.786V65.61h11.443V45.869c0-10.575-5.645-15.496-13.174-15.496-6.173 0-8.884 3.45-10.39 5.8h.076v-4.992h-11.443c.149 3.23-.001 34.43-.001 34.43z"/></mask><path d="M213.882 7.245c0-3.015 2.508-5.462 5.6-5.462h64.568c3.093 0 5.6 2.447 5.6 5.462V72.57c0 3.016-2.507 5.461-5.6 5.461h-64.568c-3.092 0-5.6-2.445-5.6-5.46V7.244z" mask="url(#a)" style="fill:currentColor"/></svg>
|
|
||||||
|
Before Width: | Height: | Size: 2.2 KiB |
@@ -1 +0,0 @@
|
|||||||
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" width="66" height="24" class="wordmark" viewBox="0 0 66 24"><path d="M0 17.198h3.045c.356 3.077 3.045 4.664 5.927 4.664 3.045 0 5.409-1.814 5.409-4.632 0-2.883-2.332-3.595-6.186-4.47C2.559 11.53.777 9.587.777 6.283.777 2.623 3.984 0 8.486 0c4.178 0 7.806 2.332 8.032 6.057h-3.012c-.227-2.462-2.429-3.919-5.15-3.919-2.947 0-4.761 1.879-4.761 3.951 0 2.462 2.073 3.206 6.121 4.049 5.441 1.134 7.514 3.271 7.514 6.931 0 4.243-3.498 6.931-8.356 6.931C4.081 24 .291 21.636 0 17.198M18.267 19.304c0-3.336 2.818-5.344 10.3-5.538v-.972c0-2.494-1.36-3.725-3.563-3.725-2.267 0-3.401 1.49-3.563 3.077h-2.785c.324-2.721 2.559-4.988 6.348-4.988 4.049 0 6.316 2.202 6.316 5.636v10.721h-2.623v-2.073C27.757 23.093 26.008 24 23.709 24c-2.915 0-5.442-1.717-5.442-4.696m10.3-1.458v-2.3c-5.538.162-7.547 1.458-7.547 3.66 0 1.684 1.36 2.883 3.271 2.883 2.43 0 4.276-1.652 4.276-4.243M33.684 7.676h2.656v2.332c.907-1.684 2.623-2.785 4.923-2.785 3.595 0 5.506 2.364 5.506 5.862v10.429h-2.85v-9.911c0-2.915-1.296-4.275-3.498-4.275s-3.887 1.879-3.887 4.308v9.879h-2.85zM48.389 19.304c0-3.336 2.818-5.344 10.3-5.538v-.972c0-2.494-1.36-3.725-3.563-3.725-2.267 0-3.401 1.49-3.563 3.077h-2.785c.324-2.721 2.559-4.988 6.348-4.988 4.049 0 6.316 2.202 6.316 5.636v10.721h-2.623v-2.073C57.879 23.093 56.13 24 53.83 24c-2.915 0-5.441-1.717-5.441-4.696m10.299-1.458v-2.3c-5.538.162-7.547 1.458-7.547 3.66 0 1.684 1.36 2.883 3.271 2.883 2.43 0 4.276-1.652 4.276-4.243M61.043 1.018h-1.017v3.014h-.602V1.018h-1.017v-.5h2.636zM63.251 3.263l.873-2.745h.917V4.03h-.596V1.137l-.908 2.893h-.581l-.928-2.889V4.03h-.587V.518h.933z" style="fill:currentColor"/></svg>
|
|
||||||
|
Before Width: | Height: | Size: 1.6 KiB |
@@ -1 +0,0 @@
|
|||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="-50 -20 288.624 78.268"><g data-name="Calque 2"><g data-name="Groupe 1909" opacity=".35"><path fill="#0540ff" d="M68.234 103.2a4.226 4.226 0 0 1-3.767-6.125L73.8 78.55a4.226 4.226 0 0 1 7.548 3.8l-9.335 18.522a4.23 4.23 0 0 1-3.781 2.323Z" data-name="Tracé 10091" style="fill:currentColor" transform="translate(-54.53 -64.931)"/></g><g data-name="Groupe 1910" opacity=".35"><path fill="#0540ff" d="M1093.234 103.213a4.226 4.226 0 0 1-3.766-6.125l9.335-18.522a4.223 4.223 0 0 1 7.542 3.8l-9.335 18.522a4.23 4.23 0 0 1-3.776 2.325" data-name="Tracé 10092" style="fill:currentColor" transform="translate(-927.653 -64.946)"/></g><path fill="#0540ff" d="M140.7 103.184a4.22 4.22 0 0 1-3.759-2.3l-9.483-18.521a4.223 4.223 0 0 1 7.517-3.853l5.7 11.122 5.594-11.1a4.226 4.226 0 0 1 7.548 3.805l-9.335 18.522a4.22 4.22 0 0 1-3.758 2.322Z" data-name="Tracé 10093" style="fill:currentColor" transform="translate(-108.179 -64.918)"/><path fill="#0540ff" d="M13.708 103.2a4.22 4.22 0 0 1-3.762-2.3L.462 82.382a4.223 4.223 0 0 1 7.517-3.852l9.483 18.522a4.226 4.226 0 0 1-3.755 6.149Z" data-name="Tracé 10094" style="fill:currentColor" transform="translate(.003 -64.936)"/><path fill="#0540ff" d="M966.234 103.219a4.226 4.226 0 0 1-3.766-6.125l9.332-18.522a4.22 4.22 0 0 1 3.758-2.322h.013a4.22 4.22 0 0 1 3.758 2.3l9.483 18.522a4.223 4.223 0 0 1-7.517 3.852L975.6 89.8l-5.588 11.1a4.23 4.23 0 0 1-3.778 2.319" data-name="Tracé 10095" style="fill:currentColor" transform="translate(-819.471 -64.952)"/><path fill="#0540ff" d="M1165.708 103.2a4.22 4.22 0 0 1-3.762-2.3l-9.483-18.522a4.223 4.223 0 1 1 7.517-3.852l9.483 18.522a4.226 4.226 0 0 1-3.755 6.149Z" data-name="Tracé 10096" style="fill:currentColor" transform="translate(-981.302 -64.936)"/><path fill="#0540ff" d="m578.369 30.891-8.541-6.677 8.446-5.666a4 4 0 0 0-4.456-6.647l-11.737 7.869V4.186a4.186 4.186 0 1 0-8.372 0v29.783a4.186 4.186 0 0 0 8.372 0V28.32l11.36 8.871a4 4 0 1 0 4.927-6.3Z" data-name="Tracé 10097" style="fill:currentColor" transform="translate(-471.665)"/><path fill="#0540ff" d="M356.4 90.163a13.4 13.4 0 1 0-7 11.854 3.852 3.852 0 0 0 7-2.223zM343 96.09a5.853 5.853 0 1 1 5.853-5.853A5.853 5.853 0 0 1 343 96.09" data-name="Tracé 10098" style="fill:currentColor" transform="translate(-280.762 -65.455)"/><path fill="#0540ff" d="M782.4 90.163a13.4 13.4 0 1 0-7 11.854 3.853 3.853 0 0 0 7-2.223zM769 96.09a5.853 5.853 0 1 1 5.853-5.853A5.853 5.853 0 0 1 769 96.09" data-name="Tracé 10099" style="fill:currentColor" transform="translate(-643.64 -65.455)"/></g></svg>
|
|
||||||
|
Before Width: | Height: | Size: 2.5 KiB |
|
Before Width: | Height: | Size: 5.0 KiB |
@@ -46,7 +46,8 @@ const Button: React.FC<{
|
|||||||
onMouseEnter={handleMouseEnter}
|
onMouseEnter={handleMouseEnter}
|
||||||
onClick={handleClick}
|
onClick={handleClick}
|
||||||
className={twMerge(
|
className={twMerge(
|
||||||
"group flex h-[34px] items-center justify-between rounded-md p-1.5 text-sm font-normal leading-6 hover:bg-light-200 hover:text-light-1000 dark:hover:bg-dark-200 dark:hover:text-dark-1000",
|
"group flex h-[34px] items-center rounded-md p-1.5 text-sm font-normal leading-6 hover:bg-light-200 hover:text-light-1000 dark:hover:bg-dark-200 dark:hover:text-dark-1000",
|
||||||
|
isCollapsed ? "md:justify-center" : "justify-between",
|
||||||
current
|
current
|
||||||
? "bg-light-200 text-light-1000 dark:bg-dark-200 dark:text-dark-1000"
|
? "bg-light-200 text-light-1000 dark:bg-dark-200 dark:text-dark-1000"
|
||||||
: "text-neutral-600 dark:bg-dark-100 dark:text-dark-900",
|
: "text-neutral-600 dark:bg-dark-100 dark:text-dark-900",
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ export const env = createEnv({
|
|||||||
* This way you can ensure the app isn't built with invalid env vars.
|
* This way you can ensure the app isn't built with invalid env vars.
|
||||||
*/
|
*/
|
||||||
server: {
|
server: {
|
||||||
|
KAN_ADMIN_API_KEY: z.string().optional(),
|
||||||
BETTER_AUTH_SECRET: z.string(),
|
BETTER_AUTH_SECRET: z.string(),
|
||||||
BETTER_AUTH_TRUSTED_ORIGINS: z
|
BETTER_AUTH_TRUSTED_ORIGINS: z
|
||||||
.string()
|
.string()
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ msgstr ""
|
|||||||
"Language-Team: \n"
|
"Language-Team: \n"
|
||||||
"Plural-Forms: \n"
|
"Plural-Forms: \n"
|
||||||
|
|
||||||
#: src/views/card/components/Comment.tsx:123
|
#: src/views/card/components/Comment.tsx:124
|
||||||
msgid " (edited)"
|
msgid " (edited)"
|
||||||
msgstr " (bearbeitet)"
|
msgstr " (bearbeitet)"
|
||||||
|
|
||||||
@@ -41,7 +41,7 @@ msgid "{0} labels"
|
|||||||
msgstr "{0} Labels"
|
msgstr "{0} Labels"
|
||||||
|
|
||||||
#. placeholder {0}: isTemplate ? "Template" : "Board"
|
#. placeholder {0}: isTemplate ? "Template" : "Board"
|
||||||
#: src/views/board/index.tsx:412
|
#: src/views/board/index.tsx:408
|
||||||
msgid "{0} not found"
|
msgid "{0} not found"
|
||||||
msgstr "{0} nicht gefunden"
|
msgstr "{0} nicht gefunden"
|
||||||
|
|
||||||
@@ -100,12 +100,12 @@ msgstr "Aktivitätsprotokolle"
|
|||||||
msgid "Add a card"
|
msgid "Add a card"
|
||||||
msgstr "Karte hinzufügen"
|
msgstr "Karte hinzufügen"
|
||||||
|
|
||||||
#: src/views/card/components/Comment.tsx:146
|
#: src/views/card/components/Comment.tsx:147
|
||||||
#: src/views/card/components/NewCommentForm.tsx:57
|
#: src/views/card/components/NewCommentForm.tsx:55
|
||||||
msgid "Add a comment..."
|
msgid "Add a comment..."
|
||||||
msgstr "Kommentar hinzufügen..."
|
msgstr "Kommentar hinzufügen..."
|
||||||
|
|
||||||
#: src/views/card/components/NewChecklistItemForm.tsx:140
|
#: src/views/card/components/NewChecklistItemForm.tsx:141
|
||||||
msgid "Add an item..."
|
msgid "Add an item..."
|
||||||
msgstr "Element hinzufügen..."
|
msgstr "Element hinzufügen..."
|
||||||
|
|
||||||
@@ -117,48 +117,53 @@ msgstr "Checkliste hinzufügen"
|
|||||||
msgid "Add description... (type '/' to open commands or '@' to mention)"
|
msgid "Add description... (type '/' to open commands or '@' to mention)"
|
||||||
msgstr "Beschreibung hinzufügen... (tippe '/' um Befehle zu öffnen oder '@' um jemanden zu erwähnen)"
|
msgstr "Beschreibung hinzufügen... (tippe '/' um Befehle zu öffnen oder '@' um jemanden zu erwähnen)"
|
||||||
|
|
||||||
#: src/views/card/components/ChecklistItemRow.tsx:172
|
#: src/views/card/components/ChecklistItemRow.tsx:195
|
||||||
msgid "Add details..."
|
msgid "Add details..."
|
||||||
msgstr "Details hinzufügen..."
|
msgstr "Details hinzufügen..."
|
||||||
|
|
||||||
#: src/views/card/components/LabelSelector.tsx:109
|
#: src/views/card/components/LabelSelector.tsx:110
|
||||||
#: src/views/card/components/LabelSelector.tsx:114
|
#: src/views/card/components/LabelSelector.tsx:115
|
||||||
msgid "Add label"
|
msgid "Add label"
|
||||||
msgstr "Label hinzufügen"
|
msgstr "Label hinzufügen"
|
||||||
|
|
||||||
#: src/views/card/components/MemberSelector.tsx:130
|
#: src/views/card/components/MemberSelector.tsx:131
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:257
|
#: src/views/members/components/InviteMemberForm.tsx:257
|
||||||
msgid "Add member"
|
msgid "Add member"
|
||||||
msgstr "Mitglied hinzufügen"
|
msgstr "Mitglied hinzufügen"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:66
|
#. placeholder {0}: mergedLabels.length
|
||||||
|
#: src/views/card/components/ActivityList.tsx:77
|
||||||
|
msgid "added {0} labels: <0>{labelList}</0>"
|
||||||
|
msgstr "{0} Labels hinzugefügt: <0>{labelList}</0>"
|
||||||
|
|
||||||
|
#: src/views/card/components/ActivityList.tsx:107
|
||||||
msgid "added a checklist"
|
msgid "added a checklist"
|
||||||
msgstr "hat eine Checkliste hinzugefügt"
|
msgstr "hat eine Checkliste hinzugefügt"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:69
|
#: src/views/card/components/ActivityList.tsx:110
|
||||||
msgid "added a checklist item"
|
msgid "added a checklist item"
|
||||||
msgstr "hat ein Checklistenelement hinzugefügt"
|
msgstr "hat ein Checklistenelement hinzugefügt"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:62
|
#: src/views/card/components/ActivityList.tsx:103
|
||||||
msgid "added a label to the card"
|
msgid "added a label to the card"
|
||||||
msgstr "hat ein Label zur Karte hinzugefügt"
|
msgstr "hat ein Label zur Karte hinzugefügt"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:64
|
#: src/views/card/components/ActivityList.tsx:105
|
||||||
msgid "added a member to the card"
|
msgid "added a member to the card"
|
||||||
msgstr "hat ein Mitglied zur Karte hinzugefügt"
|
msgstr "hat ein Mitglied zur Karte hinzugefügt"
|
||||||
|
|
||||||
#. placeholder {0}: truncate(toTitle)
|
#. placeholder {0}: truncate(toTitle)
|
||||||
#: src/views/card/components/ActivityList.tsx:146
|
#: src/views/card/components/ActivityList.tsx:181
|
||||||
msgid "added checklist <0>{0}</0>"
|
msgid "added checklist <0>{0}</0>"
|
||||||
msgstr "hat Checkliste <0>{0}</0> hinzugefügt"
|
msgstr "hat Checkliste <0>{0}</0> hinzugefügt"
|
||||||
|
|
||||||
#. placeholder {0}: truncate(toTitle)
|
#. placeholder {0}: truncate(toTitle)
|
||||||
#: src/views/card/components/ActivityList.tsx:170
|
#: src/views/card/components/ActivityList.tsx:205
|
||||||
msgid "added checklist item <0>{0}</0>"
|
msgid "added checklist item <0>{0}</0>"
|
||||||
msgstr "hat Checklistenelement <0>{0}</0> hinzugefügt"
|
msgstr "hat Checklistenelement <0>{0}</0> hinzugefügt"
|
||||||
|
|
||||||
#. placeholder {0}: truncate(label)
|
#. placeholder {0}: truncate(label)
|
||||||
#: src/views/card/components/ActivityList.tsx:130
|
#: src/views/card/components/ActivityList.tsx:165
|
||||||
msgid "added label <0>{0}</0>"
|
msgid "added label <0>{0}</0>"
|
||||||
msgstr "hat Label <0>{0}</0> hinzugefügt"
|
msgstr "hat Label <0>{0}</0> hinzugefügt"
|
||||||
|
|
||||||
@@ -249,11 +254,11 @@ msgstr "Sind Sie sicher, dass Sie diese(n) {0} löschen möchten?"
|
|||||||
msgid "Are you sure you want to delete this card?"
|
msgid "Are you sure you want to delete this card?"
|
||||||
msgstr "Bist du sicher, dass du diese Karte löschen möchtest?"
|
msgstr "Bist du sicher, dass du diese Karte löschen möchtest?"
|
||||||
|
|
||||||
#: src/views/card/components/DeleteChecklistConfirmation.tsx:55
|
#: src/views/card/components/DeleteChecklistConfirmation.tsx:56
|
||||||
msgid "Are you sure you want to delete this checklist?"
|
msgid "Are you sure you want to delete this checklist?"
|
||||||
msgstr "Sind Sie sicher, dass Sie diese Checkliste löschen möchten?"
|
msgstr "Sind Sie sicher, dass Sie diese Checkliste löschen möchten?"
|
||||||
|
|
||||||
#: src/views/card/components/DeleteCommentConfirmation.tsx:65
|
#: src/views/card/components/DeleteCommentConfirmation.tsx:66
|
||||||
msgid "Are you sure you want to delete this comment?"
|
msgid "Are you sure you want to delete this comment?"
|
||||||
msgstr "Bist du sicher, dass du diesen Kommentar löschen möchtest?"
|
msgstr "Bist du sicher, dass du diesen Kommentar löschen möchtest?"
|
||||||
|
|
||||||
@@ -266,7 +271,7 @@ msgid "Are you sure you want to delete your account?"
|
|||||||
msgstr "Bist du sicher, dass du dein Konto löschen möchtest?"
|
msgstr "Bist du sicher, dass du dein Konto löschen möchtest?"
|
||||||
|
|
||||||
#. placeholder {0}: truncate(memberName)
|
#. placeholder {0}: truncate(memberName)
|
||||||
#: src/views/card/components/ActivityList.tsx:110
|
#: src/views/card/components/ActivityList.tsx:145
|
||||||
msgid "assigned <0>{0}</0> to the card"
|
msgid "assigned <0>{0}</0> to the card"
|
||||||
msgstr "hat <0>{0}</0> der Karte zugewiesen"
|
msgstr "hat <0>{0}</0> der Karte zugewiesen"
|
||||||
|
|
||||||
@@ -274,7 +279,7 @@ msgstr "hat <0>{0}</0> der Karte zugewiesen"
|
|||||||
msgid "Assignees"
|
msgid "Assignees"
|
||||||
msgstr "Zugewiesene Personen"
|
msgstr "Zugewiesene Personen"
|
||||||
|
|
||||||
#: src/views/card/components/AttachmentUpload.tsx:25
|
#: src/views/card/components/AttachmentUpload.tsx:26
|
||||||
msgid "Attachment uploaded"
|
msgid "Attachment uploaded"
|
||||||
msgstr "Anhang hochgeladen"
|
msgstr "Anhang hochgeladen"
|
||||||
|
|
||||||
@@ -312,9 +317,9 @@ msgstr "Abrechnungsportal"
|
|||||||
msgid "Blog Post"
|
msgid "Blog Post"
|
||||||
msgstr "Blogbeitrag"
|
msgstr "Blogbeitrag"
|
||||||
|
|
||||||
#: src/views/board/index.tsx:386
|
#: src/views/board/index.tsx:382
|
||||||
#: src/views/card/index.tsx:272
|
#: src/views/card/index.tsx:272
|
||||||
#: src/views/public/board/index.tsx:113
|
#: src/views/public/board/index.tsx:114
|
||||||
msgid "Board"
|
msgid "Board"
|
||||||
msgstr "Board"
|
msgstr "Board"
|
||||||
|
|
||||||
@@ -331,7 +336,7 @@ msgstr "Der Name des Boards darf 100 Zeichen nicht überschreiten"
|
|||||||
msgid "Board name is required"
|
msgid "Board name is required"
|
||||||
msgstr "Boardname ist erforderlich"
|
msgstr "Boardname ist erforderlich"
|
||||||
|
|
||||||
#: src/views/public/board/index.tsx:165
|
#: src/views/public/board/index.tsx:166
|
||||||
msgid "Board not found"
|
msgid "Board not found"
|
||||||
msgstr "Board nicht gefunden"
|
msgstr "Board nicht gefunden"
|
||||||
|
|
||||||
@@ -347,7 +352,7 @@ msgstr "Board-URL darf nur Buchstaben, Zahlen und Bindestriche enthalten"
|
|||||||
msgid "Board URL cannot exceed 60 characters"
|
msgid "Board URL cannot exceed 60 characters"
|
||||||
msgstr "Board-URL darf 60 Zeichen nicht überschreiten"
|
msgstr "Board-URL darf 60 Zeichen nicht überschreiten"
|
||||||
|
|
||||||
#: src/views/public/board/index.tsx:79
|
#: src/views/public/board/index.tsx:80
|
||||||
msgid "Board URL copied to clipboard"
|
msgid "Board URL copied to clipboard"
|
||||||
msgstr "Board-URL in die Zwischenablage kopiert"
|
msgstr "Board-URL in die Zwischenablage kopiert"
|
||||||
|
|
||||||
@@ -382,10 +387,10 @@ msgstr "Fehlerbericht"
|
|||||||
|
|
||||||
#: src/components/DeleteLabelConfirmation.tsx:49
|
#: src/components/DeleteLabelConfirmation.tsx:49
|
||||||
#: src/views/board/components/DeleteBoardConfirmation.tsx:44
|
#: src/views/board/components/DeleteBoardConfirmation.tsx:44
|
||||||
#: src/views/card/components/Comment.tsx:158
|
#: src/views/card/components/Comment.tsx:159
|
||||||
#: src/views/card/components/DeleteCardConfirmation.tsx:86
|
#: src/views/card/components/DeleteCardConfirmation.tsx:86
|
||||||
#: src/views/card/components/DeleteChecklistConfirmation.tsx:63
|
#: src/views/card/components/DeleteChecklistConfirmation.tsx:64
|
||||||
#: src/views/card/components/DeleteCommentConfirmation.tsx:76
|
#: src/views/card/components/DeleteCommentConfirmation.tsx:77
|
||||||
#: src/views/members/components/DeleteMemberConfirmation.tsx:55
|
#: src/views/members/components/DeleteMemberConfirmation.tsx:55
|
||||||
#: src/views/settings/components/Avatar.tsx:306
|
#: src/views/settings/components/Avatar.tsx:306
|
||||||
#: src/views/settings/components/ChangePasswordConfirmation.tsx:168
|
#: src/views/settings/components/ChangePasswordConfirmation.tsx:168
|
||||||
@@ -419,8 +424,8 @@ msgstr "Passwort ändern"
|
|||||||
msgid "Change your language preferences."
|
msgid "Change your language preferences."
|
||||||
msgstr "Ändern Sie Ihre Spracheinstellungen."
|
msgstr "Ändern Sie Ihre Spracheinstellungen."
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:220
|
#: src/views/card/components/ActivityList.tsx:255
|
||||||
#: src/views/card/components/ActivityList.tsx:234
|
#: src/views/card/components/ActivityList.tsx:269
|
||||||
msgid "changed the due date to <0>{formattedDate}</0>"
|
msgid "changed the due date to <0>{formattedDate}</0>"
|
||||||
msgstr "hat den Fälligkeitstermin auf <0>{formattedDate}</0> geändert"
|
msgstr "hat den Fälligkeitstermin auf <0>{formattedDate}</0> geändert"
|
||||||
|
|
||||||
@@ -433,7 +438,7 @@ msgstr "Entdecken Sie einige unserer liebsten Open-Source-Projekte."
|
|||||||
msgid "Check your inbox"
|
msgid "Check your inbox"
|
||||||
msgstr "Überprüfe deinen Posteingang"
|
msgstr "Überprüfe deinen Posteingang"
|
||||||
|
|
||||||
#: src/views/card/components/NewChecklistForm.tsx:118
|
#: src/views/card/components/NewChecklistForm.tsx:119
|
||||||
msgid "Checklist name"
|
msgid "Checklist name"
|
||||||
msgstr "Checklistenname"
|
msgstr "Checklistenname"
|
||||||
|
|
||||||
@@ -494,12 +499,12 @@ msgstr "Abgeschlossen"
|
|||||||
msgid "Complete control and ownership:"
|
msgid "Complete control and ownership:"
|
||||||
msgstr "Vollständige Kontrolle und Eigentum:"
|
msgstr "Vollständige Kontrolle und Eigentum:"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:71
|
#: src/views/card/components/ActivityList.tsx:112
|
||||||
msgid "completed a checklist item"
|
msgid "completed a checklist item"
|
||||||
msgstr "hat ein Checklistenelement abgeschlossen"
|
msgstr "hat ein Checklistenelement abgeschlossen"
|
||||||
|
|
||||||
#. placeholder {0}: truncate(toTitle)
|
#. placeholder {0}: truncate(toTitle)
|
||||||
#: src/views/card/components/ActivityList.tsx:187
|
#: src/views/card/components/ActivityList.tsx:222
|
||||||
msgid "completed checklist item <0>{0}</0>"
|
msgid "completed checklist item <0>{0}</0>"
|
||||||
msgstr "hat Checklistenelement <0>{0}</0> abgeschlossen"
|
msgstr "hat Checklistenelement <0>{0}</0> abgeschlossen"
|
||||||
|
|
||||||
@@ -573,7 +578,7 @@ msgstr "API-Schlüssel erstellen"
|
|||||||
msgid "Create card"
|
msgid "Create card"
|
||||||
msgstr "Karte erstellen"
|
msgstr "Karte erstellen"
|
||||||
|
|
||||||
#: src/views/card/components/NewChecklistForm.tsx:134
|
#: src/views/card/components/NewChecklistForm.tsx:135
|
||||||
msgid "Create checklist"
|
msgid "Create checklist"
|
||||||
msgstr "Checkliste erstellen"
|
msgstr "Checkliste erstellen"
|
||||||
|
|
||||||
@@ -600,12 +605,12 @@ msgid "Create new key"
|
|||||||
msgstr "Neuen Schlüssel erstellen"
|
msgstr "Neuen Schlüssel erstellen"
|
||||||
|
|
||||||
#: src/views/board/components/NewCardForm.tsx:414
|
#: src/views/board/components/NewCardForm.tsx:414
|
||||||
#: src/views/card/components/LabelSelector.tsx:97
|
#: src/views/card/components/LabelSelector.tsx:98
|
||||||
msgid "Create new label"
|
msgid "Create new label"
|
||||||
msgstr "Neues Label erstellen"
|
msgstr "Neues Label erstellen"
|
||||||
|
|
||||||
#: src/views/board/index.tsx:65
|
#: src/views/board/index.tsx:64
|
||||||
#: src/views/board/index.tsx:503
|
#: src/views/board/index.tsx:499
|
||||||
msgid "Create new list"
|
msgid "Create new list"
|
||||||
msgstr "Neue Liste erstellen"
|
msgstr "Neue Liste erstellen"
|
||||||
|
|
||||||
@@ -618,7 +623,7 @@ msgstr "Vorlage erstellen"
|
|||||||
msgid "Create workspace"
|
msgid "Create workspace"
|
||||||
msgstr "Arbeitsbereich erstellen"
|
msgstr "Arbeitsbereich erstellen"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:58
|
#: src/views/card/components/ActivityList.tsx:99
|
||||||
msgid "created the card"
|
msgid "created the card"
|
||||||
msgstr "hat die Karte erstellt"
|
msgstr "hat die Karte erstellt"
|
||||||
|
|
||||||
@@ -676,8 +681,8 @@ msgstr "Einladungslink deaktivieren"
|
|||||||
#: src/components/LabelForm.tsx:228
|
#: src/components/LabelForm.tsx:228
|
||||||
#: src/views/board/components/DeleteBoardConfirmation.tsx:47
|
#: src/views/board/components/DeleteBoardConfirmation.tsx:47
|
||||||
#: src/views/card/components/DeleteCardConfirmation.tsx:92
|
#: src/views/card/components/DeleteCardConfirmation.tsx:92
|
||||||
#: src/views/card/components/DeleteChecklistConfirmation.tsx:66
|
#: src/views/card/components/DeleteChecklistConfirmation.tsx:67
|
||||||
#: src/views/card/components/DeleteCommentConfirmation.tsx:82
|
#: src/views/card/components/DeleteCommentConfirmation.tsx:83
|
||||||
msgid "Delete"
|
msgid "Delete"
|
||||||
msgstr "Löschen"
|
msgstr "Löschen"
|
||||||
|
|
||||||
@@ -695,7 +700,7 @@ msgstr "Board löschen"
|
|||||||
msgid "Delete card"
|
msgid "Delete card"
|
||||||
msgstr "Karte löschen"
|
msgstr "Karte löschen"
|
||||||
|
|
||||||
#: src/views/card/components/Comment.tsx:91
|
#: src/views/card/components/Comment.tsx:92
|
||||||
msgid "Delete comment"
|
msgid "Delete comment"
|
||||||
msgstr "Kommentar löschen"
|
msgstr "Kommentar löschen"
|
||||||
|
|
||||||
@@ -713,21 +718,21 @@ msgstr "Vorlage löschen"
|
|||||||
msgid "Delete workspace"
|
msgid "Delete workspace"
|
||||||
msgstr "Workspace löschen"
|
msgstr "Workspace löschen"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:68
|
#: src/views/card/components/ActivityList.tsx:109
|
||||||
msgid "deleted a checklist"
|
msgid "deleted a checklist"
|
||||||
msgstr "hat eine Checkliste gelöscht"
|
msgstr "hat eine Checkliste gelöscht"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:73
|
#: src/views/card/components/ActivityList.tsx:114
|
||||||
msgid "deleted a checklist item"
|
msgid "deleted a checklist item"
|
||||||
msgstr "hat ein Checklistenelement gelöscht"
|
msgstr "hat ein Checklistenelement gelöscht"
|
||||||
|
|
||||||
#. placeholder {0}: truncate(fromTitle)
|
#. placeholder {0}: truncate(fromTitle)
|
||||||
#: src/views/card/components/ActivityList.tsx:162
|
#: src/views/card/components/ActivityList.tsx:197
|
||||||
msgid "deleted checklist <0>{0}</0>"
|
msgid "deleted checklist <0>{0}</0>"
|
||||||
msgstr "hat Checkliste <0>{0}</0> gelöscht"
|
msgstr "hat Checkliste <0>{0}</0> gelöscht"
|
||||||
|
|
||||||
#. placeholder {0}: truncate(fromTitle)
|
#. placeholder {0}: truncate(fromTitle)
|
||||||
#: src/views/card/components/ActivityList.tsx:205
|
#: src/views/card/components/ActivityList.tsx:240
|
||||||
msgid "deleted checklist item <0>{0}</0>"
|
msgid "deleted checklist item <0>{0}</0>"
|
||||||
msgstr "hat Checklistenelement <0>{0}</0> gelöscht"
|
msgstr "hat Checklistenelement <0>{0}</0> gelöscht"
|
||||||
|
|
||||||
@@ -793,13 +798,13 @@ msgstr "Du hast noch kein Konto? <0><1>Registrieren</1></0>"
|
|||||||
msgid "Done"
|
msgid "Done"
|
||||||
msgstr "Erledigt"
|
msgstr "Erledigt"
|
||||||
|
|
||||||
#: src/views/card/components/AttachmentThumbnails.tsx:141
|
#: src/views/card/components/AttachmentThumbnails.tsx:142
|
||||||
msgid "Download failed"
|
msgid "Download failed"
|
||||||
msgstr "Download fehlgeschlagen"
|
msgstr "Download fehlgeschlagen"
|
||||||
|
|
||||||
#: src/views/board/components/Filters.tsx:171
|
#: src/views/board/components/Filters.tsx:171
|
||||||
#: src/views/board/components/NewCardForm.tsx:469
|
#: src/views/board/components/NewCardForm.tsx:469
|
||||||
#: src/views/card/index.tsx:138
|
#: src/views/card/index.tsx:139
|
||||||
msgid "Due date"
|
msgid "Due date"
|
||||||
msgstr "Fälligkeitsdatum"
|
msgstr "Fälligkeitsdatum"
|
||||||
|
|
||||||
@@ -824,7 +829,7 @@ msgstr "Morgen fällig"
|
|||||||
msgid "Edit board URL"
|
msgid "Edit board URL"
|
||||||
msgstr "Board-URL bearbeiten"
|
msgstr "Board-URL bearbeiten"
|
||||||
|
|
||||||
#: src/views/card/components/Comment.tsx:82
|
#: src/views/card/components/Comment.tsx:83
|
||||||
msgid "Edit comment"
|
msgid "Edit comment"
|
||||||
msgstr "Kommentar bearbeiten"
|
msgstr "Kommentar bearbeiten"
|
||||||
|
|
||||||
@@ -981,8 +986,8 @@ msgstr "Board konnte nicht erstellt werden"
|
|||||||
msgid "Failed to login with {0}. Please try again."
|
msgid "Failed to login with {0}. Please try again."
|
||||||
msgstr "Anmeldung mit {0} fehlgeschlagen. Bitte versuche es erneut."
|
msgstr "Anmeldung mit {0} fehlgeschlagen. Bitte versuche es erneut."
|
||||||
|
|
||||||
#: src/views/card/components/AttachmentUpload.tsx:33
|
#: src/views/card/components/AttachmentUpload.tsx:34
|
||||||
#: src/views/card/components/AttachmentUpload.tsx:79
|
#: src/views/card/components/AttachmentUpload.tsx:80
|
||||||
msgid "Failed to upload attachment. Please try again."
|
msgid "Failed to upload attachment. Please try again."
|
||||||
msgstr "Fehler beim Hochladen des Anhangs. Bitte versuchen Sie es erneut."
|
msgstr "Fehler beim Hochladen des Anhangs. Bitte versuchen Sie es erneut."
|
||||||
|
|
||||||
@@ -1042,8 +1047,6 @@ msgid "For long-term sustainability, we recognise all good open source projects
|
|||||||
msgstr "Für langfristige Nachhaltigkeit erkennen wir an, dass alle guten Open-Source-Projekte eine Einnahmequelle benötigen. Unsere stammt aus dem kostenpflichtigen Cloud-Angebot für Workspaces mit mehreren Benutzern und für benutzerdefinierte Workspace-Slugs. Es besteht keine Verpflichtung, es zu nutzen, und Sie können die Software kostenlos auf Ihrer eigenen Infrastruktur selbst hosten."
|
msgstr "Für langfristige Nachhaltigkeit erkennen wir an, dass alle guten Open-Source-Projekte eine Einnahmequelle benötigen. Unsere stammt aus dem kostenpflichtigen Cloud-Angebot für Workspaces mit mehreren Benutzern und für benutzerdefinierte Workspace-Slugs. Es besteht keine Verpflichtung, es zu nutzen, und Sie können die Software kostenlos auf Ihrer eigenen Infrastruktur selbst hosten."
|
||||||
|
|
||||||
#: src/views/pricing/components/Pricing.tsx:32
|
#: src/views/pricing/components/Pricing.tsx:32
|
||||||
#: src/views/pricing/components/Pricing.tsx:32
|
|
||||||
#: src/views/pricing/components/PricingTiers.tsx:30
|
|
||||||
#: src/views/pricing/components/PricingTiers.tsx:30
|
#: src/views/pricing/components/PricingTiers.tsx:30
|
||||||
msgid "Free"
|
msgid "Free"
|
||||||
msgstr "Kostenlos"
|
msgstr "Kostenlos"
|
||||||
@@ -1089,7 +1092,7 @@ msgstr "Loslegen"
|
|||||||
msgid "Get started by creating a new {0}"
|
msgid "Get started by creating a new {0}"
|
||||||
msgstr "Beginnen Sie, indem Sie eine(n) neue(n) {0} erstellen"
|
msgstr "Beginnen Sie, indem Sie eine(n) neue(n) {0} erstellen"
|
||||||
|
|
||||||
#: src/views/board/index.tsx:495
|
#: src/views/board/index.tsx:491
|
||||||
msgid "Get started by creating a new list"
|
msgid "Get started by creating a new list"
|
||||||
msgstr "Beginne mit dem Erstellen einer neuen Liste"
|
msgstr "Beginne mit dem Erstellen einer neuen Liste"
|
||||||
|
|
||||||
@@ -1276,7 +1279,7 @@ msgstr "Einladungslinks"
|
|||||||
msgid "Invite links require a Team or Pro subscription. Please upgrade your workspace."
|
msgid "Invite links require a Team or Pro subscription. Please upgrade your workspace."
|
||||||
msgstr "Einladungslinks erfordern ein Team- oder Pro-Abonnement. Bitte upgraden Sie Ihren Workspace."
|
msgstr "Einladungslinks erfordern ein Team- oder Pro-Abonnement. Bitte upgraden Sie Ihren Workspace."
|
||||||
|
|
||||||
#: src/views/card/components/MemberSelector.tsx:111
|
#: src/views/card/components/MemberSelector.tsx:112
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:367
|
#: src/views/members/components/InviteMemberForm.tsx:367
|
||||||
msgid "Invite member"
|
msgid "Invite member"
|
||||||
msgstr "Mitglied einladen"
|
msgstr "Mitglied einladen"
|
||||||
@@ -1325,7 +1328,7 @@ msgstr "Tastaturkürzel"
|
|||||||
|
|
||||||
#: src/views/board/components/Filters.tsx:155
|
#: src/views/board/components/Filters.tsx:155
|
||||||
#: src/views/board/components/NewCardForm.tsx:418
|
#: src/views/board/components/NewCardForm.tsx:418
|
||||||
#: src/views/card/index.tsx:120
|
#: src/views/card/index.tsx:121
|
||||||
msgid "Labels"
|
msgid "Labels"
|
||||||
msgstr "Labels"
|
msgstr "Labels"
|
||||||
|
|
||||||
@@ -1375,11 +1378,11 @@ msgstr "Lizenz"
|
|||||||
msgid "Light"
|
msgid "Light"
|
||||||
msgstr "Hell"
|
msgstr "Hell"
|
||||||
|
|
||||||
#: src/views/public/board/index.tsx:77
|
#: src/views/public/board/index.tsx:78
|
||||||
msgid "Link copied"
|
msgid "Link copied"
|
||||||
msgstr "Link kopiert"
|
msgstr "Link kopiert"
|
||||||
|
|
||||||
#: src/views/card/index.tsx:112
|
#: src/views/card/index.tsx:113
|
||||||
msgid "List"
|
msgid "List"
|
||||||
msgstr "Liste"
|
msgstr "Liste"
|
||||||
|
|
||||||
@@ -1391,6 +1394,14 @@ msgstr "Listenname"
|
|||||||
msgid "Lists"
|
msgid "Lists"
|
||||||
msgstr "Listen"
|
msgstr "Listen"
|
||||||
|
|
||||||
|
#: src/views/card/components/ActivityList.tsx:530
|
||||||
|
msgid "Load more activities"
|
||||||
|
msgstr "Weitere Aktivitäten laden"
|
||||||
|
|
||||||
|
#: src/views/card/components/ActivityList.tsx:530
|
||||||
|
msgid "Loading..."
|
||||||
|
msgstr "Wird geladen..."
|
||||||
|
|
||||||
#: src/views/auth/login/index.tsx:33
|
#: src/views/auth/login/index.tsx:33
|
||||||
msgid "Login | kan.bn"
|
msgid "Login | kan.bn"
|
||||||
msgstr "Login | kan.bn"
|
msgstr "Login | kan.bn"
|
||||||
@@ -1419,12 +1430,12 @@ msgstr "Magic Link"
|
|||||||
msgid "Make template"
|
msgid "Make template"
|
||||||
msgstr "Als Vorlage speichern"
|
msgstr "Als Vorlage speichern"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:72
|
#: src/views/card/components/ActivityList.tsx:113
|
||||||
msgid "marked a checklist item as incomplete"
|
msgid "marked a checklist item as incomplete"
|
||||||
msgstr "hat ein Checklistenelement als unvollständig markiert"
|
msgstr "hat ein Checklistenelement als unvollständig markiert"
|
||||||
|
|
||||||
#. placeholder {0}: truncate(toTitle)
|
#. placeholder {0}: truncate(toTitle)
|
||||||
#: src/views/card/components/ActivityList.tsx:196
|
#: src/views/card/components/ActivityList.tsx:231
|
||||||
msgid "marked checklist item <0>{0}</0> as incomplete"
|
msgid "marked checklist item <0>{0}</0> as incomplete"
|
||||||
msgstr "hat Checklistenelement <0>{0}</0> als unvollständig markiert"
|
msgstr "hat Checklistenelement <0>{0}</0> als unvollständig markiert"
|
||||||
|
|
||||||
@@ -1435,7 +1446,7 @@ msgstr "Mittlere Priorität"
|
|||||||
#: src/components/SideNavigation.tsx:121
|
#: src/components/SideNavigation.tsx:121
|
||||||
#: src/views/board/components/Filters.tsx:147
|
#: src/views/board/components/Filters.tsx:147
|
||||||
#: src/views/board/components/NewCardForm.tsx:376
|
#: src/views/board/components/NewCardForm.tsx:376
|
||||||
#: src/views/card/index.tsx:129
|
#: src/views/card/index.tsx:130
|
||||||
#: src/views/members/index.tsx:178
|
#: src/views/members/index.tsx:178
|
||||||
msgid "Members"
|
msgid "Members"
|
||||||
msgstr "Mitglieder"
|
msgstr "Mitglieder"
|
||||||
@@ -1456,11 +1467,11 @@ msgstr "monatliche Abrechnung"
|
|||||||
|
|
||||||
#. placeholder {0}: truncate(fromList)
|
#. placeholder {0}: truncate(fromList)
|
||||||
#. placeholder {1}: truncate(toList)
|
#. placeholder {1}: truncate(toList)
|
||||||
#: src/views/card/components/ActivityList.tsx:98
|
#: src/views/card/components/ActivityList.tsx:133
|
||||||
msgid "moved the card from <0>{0}</0> to<1>{1}</1>"
|
msgid "moved the card from <0>{0}</0> to<1>{1}</1>"
|
||||||
msgstr "hat die Karte von <0>{0}</0> nach <1>{1}</1> verschoben"
|
msgstr "hat die Karte von <0>{0}</0> nach <1>{1}</1> verschoben"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:61
|
#: src/views/card/components/ActivityList.tsx:102
|
||||||
msgid "moved the card to another list"
|
msgid "moved the card to another list"
|
||||||
msgstr "hat die Karte in eine andere Liste verschoben"
|
msgstr "hat die Karte in eine andere Liste verschoben"
|
||||||
|
|
||||||
@@ -1496,7 +1507,7 @@ msgstr "Neuer API-Schlüssel"
|
|||||||
msgid "New card"
|
msgid "New card"
|
||||||
msgstr "Neue Karte"
|
msgstr "Neue Karte"
|
||||||
|
|
||||||
#: src/views/card/components/NewChecklistForm.tsx:102
|
#: src/views/card/components/NewChecklistForm.tsx:103
|
||||||
msgid "New checklist"
|
msgid "New checklist"
|
||||||
msgstr "Neue Checkliste"
|
msgstr "Neue Checkliste"
|
||||||
|
|
||||||
@@ -1509,7 +1520,7 @@ msgid "New label"
|
|||||||
msgstr "Neues Label"
|
msgstr "Neues Label"
|
||||||
|
|
||||||
#: src/views/board/components/NewListForm.tsx:113
|
#: src/views/board/components/NewListForm.tsx:113
|
||||||
#: src/views/board/index.tsx:466
|
#: src/views/board/index.tsx:462
|
||||||
msgid "New list"
|
msgid "New list"
|
||||||
msgstr "Neue Liste"
|
msgstr "Neue Liste"
|
||||||
|
|
||||||
@@ -1562,7 +1573,7 @@ msgstr "Keine Kreditkarte erforderlich"
|
|||||||
msgid "No dates"
|
msgid "No dates"
|
||||||
msgstr "Keine Termine"
|
msgstr "Keine Termine"
|
||||||
|
|
||||||
#: src/views/card/components/AttachmentThumbnails.tsx:142
|
#: src/views/card/components/AttachmentThumbnails.tsx:143
|
||||||
msgid "No download URL available for this attachment."
|
msgid "No download URL available for this attachment."
|
||||||
msgstr "Für diesen Anhang ist keine Download-URL verfügbar."
|
msgstr "Für diesen Anhang ist keine Download-URL verfügbar."
|
||||||
|
|
||||||
@@ -1570,7 +1581,7 @@ msgstr "Für diesen Anhang ist keine Download-URL verfügbar."
|
|||||||
msgid "No keyboard shortcuts registered."
|
msgid "No keyboard shortcuts registered."
|
||||||
msgstr "Keine Tastaturkürzel registriert."
|
msgstr "Keine Tastaturkürzel registriert."
|
||||||
|
|
||||||
#: src/views/board/index.tsx:492
|
#: src/views/board/index.tsx:488
|
||||||
msgid "No lists"
|
msgid "No lists"
|
||||||
msgstr "Keine Listen"
|
msgstr "Keine Listen"
|
||||||
|
|
||||||
@@ -1721,24 +1732,25 @@ msgstr "Bitte wähle eine Datei zum Hochladen aus."
|
|||||||
#: src/views/board/components/NewTemplateForm.tsx:77
|
#: src/views/board/components/NewTemplateForm.tsx:77
|
||||||
#: src/views/board/components/UpdateBoardSlugForm.tsx:73
|
#: src/views/board/components/UpdateBoardSlugForm.tsx:73
|
||||||
#: src/views/board/components/VisibilityButton.tsx:54
|
#: src/views/board/components/VisibilityButton.tsx:54
|
||||||
#: src/views/board/index.tsx:174
|
#: src/views/board/index.tsx:170
|
||||||
#: src/views/board/index.tsx:230
|
#: src/views/board/index.tsx:226
|
||||||
#: src/views/boards/components/ImportBoardsForm.tsx:205
|
#: src/views/boards/components/ImportBoardsForm.tsx:205
|
||||||
#: src/views/card/components/AttachmentThumbnails.tsx:73
|
#: src/views/card/components/AttachmentThumbnails.tsx:74
|
||||||
#: src/views/card/components/ChecklistItemRow.tsx:60
|
#: src/views/card/components/ChecklistItemRow.tsx:67
|
||||||
#: src/views/card/components/ChecklistItemRow.tsx:88
|
#: src/views/card/components/ChecklistItemRow.tsx:95
|
||||||
#: src/views/card/components/ChecklistNameInput.tsx:46
|
#: src/views/card/components/ChecklistNameInput.tsx:47
|
||||||
#: src/views/card/components/Comment.tsx:64
|
#: src/views/card/components/Checklists.tsx:81
|
||||||
|
#: src/views/card/components/Comment.tsx:65
|
||||||
#: src/views/card/components/DeleteCardConfirmation.tsx:52
|
#: src/views/card/components/DeleteCardConfirmation.tsx:52
|
||||||
#: src/views/card/components/DeleteChecklistConfirmation.tsx:37
|
#: src/views/card/components/DeleteChecklistConfirmation.tsx:38
|
||||||
#: src/views/card/components/DeleteCommentConfirmation.tsx:45
|
#: src/views/card/components/DeleteCommentConfirmation.tsx:46
|
||||||
#: src/views/card/components/DueDateSelector.tsx:59
|
#: src/views/card/components/DueDateSelector.tsx:60
|
||||||
#: src/views/card/components/LabelSelector.tsx:72
|
#: src/views/card/components/LabelSelector.tsx:73
|
||||||
#: src/views/card/components/ListSelector.tsx:52
|
#: src/views/card/components/ListSelector.tsx:53
|
||||||
#: src/views/card/components/MemberSelector.tsx:79
|
#: src/views/card/components/MemberSelector.tsx:80
|
||||||
#: src/views/card/components/NewChecklistForm.tsx:70
|
#: src/views/card/components/NewChecklistForm.tsx:71
|
||||||
#: src/views/card/components/NewChecklistItemForm.tsx:89
|
#: src/views/card/components/NewChecklistItemForm.tsx:90
|
||||||
#: src/views/card/components/NewCommentForm.tsx:31
|
#: src/views/card/components/NewCommentForm.tsx:32
|
||||||
#: src/views/card/index.tsx:187
|
#: src/views/card/index.tsx:187
|
||||||
#: src/views/card/index.tsx:200
|
#: src/views/card/index.tsx:200
|
||||||
#: src/views/members/components/DeleteMemberConfirmation.tsx:28
|
#: src/views/members/components/DeleteMemberConfirmation.tsx:28
|
||||||
@@ -1840,35 +1852,40 @@ msgstr "Entfernen"
|
|||||||
msgid "Remove member"
|
msgid "Remove member"
|
||||||
msgstr "Mitglied entfernen"
|
msgstr "Mitglied entfernen"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:63
|
#. placeholder {0}: mergedLabels.length
|
||||||
|
#: src/views/card/components/ActivityList.tsx:91
|
||||||
|
msgid "removed {0} labels: <0>{labelList}</0>"
|
||||||
|
msgstr "{0} Labels entfernt: <0>{labelList}</0>"
|
||||||
|
|
||||||
|
#: src/views/card/components/ActivityList.tsx:104
|
||||||
msgid "removed a label from the card"
|
msgid "removed a label from the card"
|
||||||
msgstr "hat ein Label von der Karte entfernt"
|
msgstr "hat ein Label von der Karte entfernt"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:65
|
#: src/views/card/components/ActivityList.tsx:106
|
||||||
msgid "removed a member from the card"
|
msgid "removed a member from the card"
|
||||||
msgstr "hat ein Mitglied von der Karte entfernt"
|
msgstr "hat ein Mitglied von der Karte entfernt"
|
||||||
|
|
||||||
#. placeholder {0}: truncate(label)
|
#. placeholder {0}: truncate(label)
|
||||||
#: src/views/card/components/ActivityList.tsx:138
|
#: src/views/card/components/ActivityList.tsx:173
|
||||||
msgid "removed label <0>{0}</0>"
|
msgid "removed label <0>{0}</0>"
|
||||||
msgstr "hat Label <0>{0}</0> entfernt"
|
msgstr "hat Label <0>{0}</0> entfernt"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:76
|
#: src/views/card/components/ActivityList.tsx:117
|
||||||
#: src/views/card/components/ActivityList.tsx:241
|
#: src/views/card/components/ActivityList.tsx:276
|
||||||
msgid "removed the due date"
|
msgid "removed the due date"
|
||||||
msgstr "hat den Fälligkeitstermin entfernt"
|
msgstr "hat den Fälligkeitstermin entfernt"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:67
|
#: src/views/card/components/ActivityList.tsx:108
|
||||||
msgid "renamed a checklist"
|
msgid "renamed a checklist"
|
||||||
msgstr "hat eine Checkliste umbenannt"
|
msgstr "hat eine Checkliste umbenannt"
|
||||||
|
|
||||||
#. placeholder {0}: truncate(toTitle)
|
#. placeholder {0}: truncate(toTitle)
|
||||||
#: src/views/card/components/ActivityList.tsx:154
|
#: src/views/card/components/ActivityList.tsx:189
|
||||||
msgid "renamed checklist <0>{0}</0>"
|
msgid "renamed checklist <0>{0}</0>"
|
||||||
msgstr "hat Checkliste <0>{0}</0> umbenannt"
|
msgstr "hat Checkliste <0>{0}</0> umbenannt"
|
||||||
|
|
||||||
#. placeholder {0}: truncate(toTitle)
|
#. placeholder {0}: truncate(toTitle)
|
||||||
#: src/views/card/components/ActivityList.tsx:178
|
#: src/views/card/components/ActivityList.tsx:213
|
||||||
msgid "renamed checklist item to <0>{0}</0>"
|
msgid "renamed checklist item to <0>{0}</0>"
|
||||||
msgstr "hat Checklistenelement in <0>{0}</0> umbenannt"
|
msgstr "hat Checklistenelement in <0>{0}</0> umbenannt"
|
||||||
|
|
||||||
@@ -1907,7 +1924,7 @@ msgstr "Rolle"
|
|||||||
msgid "Run on your own infrastructure"
|
msgid "Run on your own infrastructure"
|
||||||
msgstr "Auf eigener Infrastruktur betreiben"
|
msgstr "Auf eigener Infrastruktur betreiben"
|
||||||
|
|
||||||
#: src/views/card/components/Comment.tsx:165
|
#: src/views/card/components/Comment.tsx:166
|
||||||
#: src/views/settings/components/Avatar.tsx:309
|
#: src/views/settings/components/Avatar.tsx:309
|
||||||
msgid "Save"
|
msgid "Save"
|
||||||
msgstr "Speichern"
|
msgstr "Speichern"
|
||||||
@@ -1945,7 +1962,7 @@ msgstr "Selbst hosten"
|
|||||||
msgid "Self host with Github"
|
msgid "Self host with Github"
|
||||||
msgstr "Selbst hosten mit Github"
|
msgstr "Selbst hosten mit Github"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:107
|
#: src/views/card/components/ActivityList.tsx:142
|
||||||
msgid "self-assigned the card"
|
msgid "self-assigned the card"
|
||||||
msgstr "hat sich selbst die Karte zugewiesen"
|
msgstr "hat sich selbst die Karte zugewiesen"
|
||||||
|
|
||||||
@@ -1961,11 +1978,11 @@ msgstr "Feedback senden"
|
|||||||
msgid "Senior"
|
msgid "Senior"
|
||||||
msgstr "Senior"
|
msgstr "Senior"
|
||||||
|
|
||||||
#: src/views/card/components/DueDateSelector.tsx:116
|
#: src/views/card/components/DueDateSelector.tsx:117
|
||||||
msgid "Set due date"
|
msgid "Set due date"
|
||||||
msgstr "Fälligkeitsdatum festlegen"
|
msgstr "Fälligkeitsdatum festlegen"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:74
|
#: src/views/card/components/ActivityList.tsx:115
|
||||||
msgid "set the due date"
|
msgid "set the due date"
|
||||||
msgstr "hat den Fälligkeitstermin festgelegt"
|
msgstr "hat den Fälligkeitstermin festgelegt"
|
||||||
|
|
||||||
@@ -2090,8 +2107,8 @@ msgstr "Team-Plan"
|
|||||||
msgid "Teams"
|
msgid "Teams"
|
||||||
msgstr "Teams"
|
msgstr "Teams"
|
||||||
|
|
||||||
#: src/views/board/index.tsx:386
|
#: src/views/board/index.tsx:382
|
||||||
#: src/views/board/index.tsx:421
|
#: src/views/board/index.tsx:417
|
||||||
msgid "Template"
|
msgid "Template"
|
||||||
msgstr "Vorlage"
|
msgstr "Vorlage"
|
||||||
|
|
||||||
@@ -2156,8 +2173,8 @@ msgstr "Sie werden keinen Zugriff mehr auf diesen Workspace haben."
|
|||||||
#: src/components/DeleteLabelConfirmation.tsx:44
|
#: src/components/DeleteLabelConfirmation.tsx:44
|
||||||
#: src/views/board/components/DeleteBoardConfirmation.tsx:39
|
#: src/views/board/components/DeleteBoardConfirmation.tsx:39
|
||||||
#: src/views/card/components/DeleteCardConfirmation.tsx:78
|
#: src/views/card/components/DeleteCardConfirmation.tsx:78
|
||||||
#: src/views/card/components/DeleteChecklistConfirmation.tsx:58
|
#: src/views/card/components/DeleteChecklistConfirmation.tsx:59
|
||||||
#: src/views/card/components/DeleteCommentConfirmation.tsx:68
|
#: src/views/card/components/DeleteCommentConfirmation.tsx:69
|
||||||
msgid "This action can't be undone."
|
msgid "This action can't be undone."
|
||||||
msgstr "Diese Aktion kann nicht rückgängig gemacht werden."
|
msgstr "Diese Aktion kann nicht rückgängig gemacht werden."
|
||||||
|
|
||||||
@@ -2165,7 +2182,7 @@ msgstr "Diese Aktion kann nicht rückgängig gemacht werden."
|
|||||||
msgid "This API key will only be shown once. Please save it in a secure location."
|
msgid "This API key will only be shown once. Please save it in a secure location."
|
||||||
msgstr "Dieser API-Schlüssel wird nur einmal angezeigt. Bitte speichern Sie ihn an einem sicheren Ort."
|
msgstr "Dieser API-Schlüssel wird nur einmal angezeigt. Bitte speichern Sie ihn an einem sicheren Ort."
|
||||||
|
|
||||||
#: src/views/public/board/index.tsx:168
|
#: src/views/public/board/index.tsx:169
|
||||||
msgid "This board is private or does not exist"
|
msgid "This board is private or does not exist"
|
||||||
msgstr "Dieses Board ist privat oder existiert nicht"
|
msgstr "Dieses Board ist privat oder existiert nicht"
|
||||||
|
|
||||||
@@ -2227,27 +2244,27 @@ msgstr "Trello-importe"
|
|||||||
msgid "Triaging"
|
msgid "Triaging"
|
||||||
msgstr "Priorisierung"
|
msgstr "Priorisierung"
|
||||||
|
|
||||||
#: src/views/home/components/Logos.tsx:73
|
#: src/views/home/components/Logos.tsx:67
|
||||||
msgid "Trusted by fast-moving teams<0/>around the world"
|
msgid "Trusted by fast-moving teams<0/>around the world"
|
||||||
msgstr "Von schnell agierenden Teams<0/>weltweit vertraut"
|
msgstr "Von schnell agierenden Teams<0/>weltweit vertraut"
|
||||||
|
|
||||||
#: src/views/card/components/NewChecklistItemForm.tsx:88
|
#: src/views/card/components/NewChecklistItemForm.tsx:89
|
||||||
msgid "Unable to add checklist item"
|
msgid "Unable to add checklist item"
|
||||||
msgstr "Checklistenelement kann nicht hinzugefügt werden"
|
msgstr "Checklistenelement kann nicht hinzugefügt werden"
|
||||||
|
|
||||||
#: src/views/card/components/NewCommentForm.tsx:30
|
#: src/views/card/components/NewCommentForm.tsx:31
|
||||||
msgid "Unable to add comment"
|
msgid "Unable to add comment"
|
||||||
msgstr "Kommentar konnte nicht hinzugefügt werden"
|
msgstr "Kommentar konnte nicht hinzugefügt werden"
|
||||||
|
|
||||||
#: src/views/card/index.tsx:199
|
#: src/views/card/index.tsx:199
|
||||||
msgid "Unable to add label"
|
msgid "Unable to add label"
|
||||||
msgstr ""
|
msgstr "Label konnte nicht hinzugefügt werden"
|
||||||
|
|
||||||
#: src/views/board/components/NewCardForm.tsx:181
|
#: src/views/board/components/NewCardForm.tsx:181
|
||||||
msgid "Unable to create card"
|
msgid "Unable to create card"
|
||||||
msgstr "Karte konnte nicht erstellt werden"
|
msgstr "Karte konnte nicht erstellt werden"
|
||||||
|
|
||||||
#: src/views/card/components/NewChecklistForm.tsx:69
|
#: src/views/card/components/NewChecklistForm.tsx:70
|
||||||
msgid "Unable to create checklist"
|
msgid "Unable to create checklist"
|
||||||
msgstr "Checkliste kann nicht erstellt werden"
|
msgstr "Checkliste kann nicht erstellt werden"
|
||||||
|
|
||||||
@@ -2264,7 +2281,7 @@ msgstr "Vorlage konnte nicht erstellt werden"
|
|||||||
msgid "Unable to create workspace"
|
msgid "Unable to create workspace"
|
||||||
msgstr "Workspace konnte nicht erstellt werden"
|
msgstr "Workspace konnte nicht erstellt werden"
|
||||||
|
|
||||||
#: src/views/card/components/AttachmentThumbnails.tsx:72
|
#: src/views/card/components/AttachmentThumbnails.tsx:73
|
||||||
msgid "Unable to delete attachment"
|
msgid "Unable to delete attachment"
|
||||||
msgstr "Anhang kann nicht gelöscht werden"
|
msgstr "Anhang kann nicht gelöscht werden"
|
||||||
|
|
||||||
@@ -2272,15 +2289,15 @@ msgstr "Anhang kann nicht gelöscht werden"
|
|||||||
msgid "Unable to delete card"
|
msgid "Unable to delete card"
|
||||||
msgstr "Karte konnte nicht gelöscht werden"
|
msgstr "Karte konnte nicht gelöscht werden"
|
||||||
|
|
||||||
#: src/views/card/components/DeleteChecklistConfirmation.tsx:36
|
#: src/views/card/components/DeleteChecklistConfirmation.tsx:37
|
||||||
msgid "Unable to delete checklist"
|
msgid "Unable to delete checklist"
|
||||||
msgstr "Checkliste kann nicht gelöscht werden"
|
msgstr "Checkliste kann nicht gelöscht werden"
|
||||||
|
|
||||||
#: src/views/card/components/ChecklistItemRow.tsx:87
|
#: src/views/card/components/ChecklistItemRow.tsx:94
|
||||||
msgid "Unable to delete checklist item"
|
msgid "Unable to delete checklist item"
|
||||||
msgstr "Checklistenelement kann nicht gelöscht werden"
|
msgstr "Checklistenelement kann nicht gelöscht werden"
|
||||||
|
|
||||||
#: src/views/card/components/DeleteCommentConfirmation.tsx:44
|
#: src/views/card/components/DeleteCommentConfirmation.tsx:45
|
||||||
msgid "Unable to delete comment"
|
msgid "Unable to delete comment"
|
||||||
msgstr "Kommentar konnte nicht gelöscht werden"
|
msgstr "Kommentar konnte nicht gelöscht werden"
|
||||||
|
|
||||||
@@ -2288,6 +2305,10 @@ msgstr "Kommentar konnte nicht gelöscht werden"
|
|||||||
msgid "Unable to remove member"
|
msgid "Unable to remove member"
|
||||||
msgstr "Mitglied konnte nicht entfernt werden"
|
msgstr "Mitglied konnte nicht entfernt werden"
|
||||||
|
|
||||||
|
#: src/views/card/components/Checklists.tsx:80
|
||||||
|
msgid "Unable to reorder checklist item"
|
||||||
|
msgstr "Checklisten-Element konnte nicht neu angeordnet werden"
|
||||||
|
|
||||||
#: src/components/FeedbackModal.tsx:40
|
#: src/components/FeedbackModal.tsx:40
|
||||||
msgid "Unable to send feedback"
|
msgid "Unable to send feedback"
|
||||||
msgstr "Feedback konnte nicht gesendet werden"
|
msgstr "Feedback konnte nicht gesendet werden"
|
||||||
@@ -2300,46 +2321,46 @@ msgstr "Board-URL kann nicht aktualisiert werden"
|
|||||||
msgid "Unable to update board visibility"
|
msgid "Unable to update board visibility"
|
||||||
msgstr "Board-Sichtbarkeit konnte nicht aktualisiert werden"
|
msgstr "Board-Sichtbarkeit konnte nicht aktualisiert werden"
|
||||||
|
|
||||||
#: src/views/board/index.tsx:229
|
#: src/views/board/index.tsx:225
|
||||||
#: src/views/card/index.tsx:186
|
#: src/views/card/index.tsx:186
|
||||||
msgid "Unable to update card"
|
msgid "Unable to update card"
|
||||||
msgstr "Karte konnte nicht aktualisiert werden"
|
msgstr "Karte konnte nicht aktualisiert werden"
|
||||||
|
|
||||||
#: src/views/card/components/ChecklistNameInput.tsx:45
|
#: src/views/card/components/ChecklistNameInput.tsx:46
|
||||||
msgid "Unable to update checklist"
|
msgid "Unable to update checklist"
|
||||||
msgstr "Checkliste kann nicht aktualisiert werden"
|
msgstr "Checkliste kann nicht aktualisiert werden"
|
||||||
|
|
||||||
#: src/views/card/components/ChecklistItemRow.tsx:59
|
#: src/views/card/components/ChecklistItemRow.tsx:66
|
||||||
msgid "Unable to update checklist item"
|
msgid "Unable to update checklist item"
|
||||||
msgstr "Checklistenelement kann nicht aktualisiert werden"
|
msgstr "Checklistenelement kann nicht aktualisiert werden"
|
||||||
|
|
||||||
#: src/views/card/components/Comment.tsx:63
|
#: src/views/card/components/Comment.tsx:64
|
||||||
msgid "Unable to update comment"
|
msgid "Unable to update comment"
|
||||||
msgstr "Kommentar konnte nicht aktualisiert werden"
|
msgstr "Kommentar konnte nicht aktualisiert werden"
|
||||||
|
|
||||||
#: src/views/card/components/DueDateSelector.tsx:58
|
#: src/views/card/components/DueDateSelector.tsx:59
|
||||||
msgid "Unable to update due date"
|
msgid "Unable to update due date"
|
||||||
msgstr "Fälligkeitsdatum konnte nicht aktualisiert werden"
|
msgstr "Fälligkeitsdatum konnte nicht aktualisiert werden"
|
||||||
|
|
||||||
#: src/views/card/components/LabelSelector.tsx:71
|
#: src/views/card/components/LabelSelector.tsx:72
|
||||||
msgid "Unable to update labels"
|
msgid "Unable to update labels"
|
||||||
msgstr "Labels konnten nicht aktualisiert werden"
|
msgstr "Labels konnten nicht aktualisiert werden"
|
||||||
|
|
||||||
#: src/views/board/index.tsx:173
|
#: src/views/board/index.tsx:169
|
||||||
#: src/views/card/components/ListSelector.tsx:51
|
#: src/views/card/components/ListSelector.tsx:52
|
||||||
msgid "Unable to update list"
|
msgid "Unable to update list"
|
||||||
msgstr "Liste konnte nicht aktualisiert werden"
|
msgstr "Liste konnte nicht aktualisiert werden"
|
||||||
|
|
||||||
#: src/views/card/components/MemberSelector.tsx:78
|
#: src/views/card/components/MemberSelector.tsx:79
|
||||||
msgid "Unable to update members"
|
msgid "Unable to update members"
|
||||||
msgstr "Mitglieder konnten nicht aktualisiert werden"
|
msgstr "Mitglieder konnten nicht aktualisiert werden"
|
||||||
|
|
||||||
#. placeholder {0}: truncate(memberName)
|
#. placeholder {0}: truncate(memberName)
|
||||||
#: src/views/card/components/ActivityList.tsx:121
|
#: src/views/card/components/ActivityList.tsx:156
|
||||||
msgid "unassigned <0>{0}</0> from the card"
|
msgid "unassigned <0>{0}</0> from the card"
|
||||||
msgstr "hat <0>{0}</0> von der Karte entfernt"
|
msgstr "hat <0>{0}</0> von der Karte entfernt"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:118
|
#: src/views/card/components/ActivityList.tsx:153
|
||||||
msgid "unassigned themselves from the card"
|
msgid "unassigned themselves from the card"
|
||||||
msgstr "hat sich selbst von der Karte entfernt"
|
msgstr "hat sich selbst von der Karte entfernt"
|
||||||
|
|
||||||
@@ -2398,24 +2419,24 @@ msgstr "Aktualisieren"
|
|||||||
msgid "Update label"
|
msgid "Update label"
|
||||||
msgstr "Label aktualisieren"
|
msgstr "Label aktualisieren"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:70
|
#: src/views/card/components/ActivityList.tsx:111
|
||||||
msgid "updated a checklist item"
|
msgid "updated a checklist item"
|
||||||
msgstr "hat ein Checklistenelement aktualisiert"
|
msgstr "hat ein Checklistenelement aktualisiert"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:60
|
#: src/views/card/components/ActivityList.tsx:101
|
||||||
msgid "updated the description"
|
msgid "updated the description"
|
||||||
msgstr "hat die Beschreibung aktualisiert"
|
msgstr "hat die Beschreibung aktualisiert"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:75
|
#: src/views/card/components/ActivityList.tsx:116
|
||||||
msgid "updated the due date"
|
msgid "updated the due date"
|
||||||
msgstr "hat den Fälligkeitstermin aktualisiert"
|
msgstr "hat den Fälligkeitstermin aktualisiert"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:59
|
#: src/views/card/components/ActivityList.tsx:100
|
||||||
msgid "updated the title"
|
msgid "updated the title"
|
||||||
msgstr "hat den Titel aktualisiert"
|
msgstr "hat den Titel aktualisiert"
|
||||||
|
|
||||||
#. placeholder {0}: truncate(toTitle)
|
#. placeholder {0}: truncate(toTitle)
|
||||||
#: src/views/card/components/ActivityList.tsx:90
|
#: src/views/card/components/ActivityList.tsx:125
|
||||||
msgid "updated the title to <0>{0}</0>"
|
msgid "updated the title to <0>{0}</0>"
|
||||||
msgstr "hat den Titel in <0>{0}</0> geändert"
|
msgstr "hat den Titel in <0>{0}</0> geändert"
|
||||||
|
|
||||||
@@ -2429,8 +2450,8 @@ msgstr "Upgrade auf Pro"
|
|||||||
msgid "Upgrade to Pro ($29/month)"
|
msgid "Upgrade to Pro ($29/month)"
|
||||||
msgstr "Upgrade auf Pro ($29/Monat)"
|
msgstr "Upgrade auf Pro ($29/Monat)"
|
||||||
|
|
||||||
#: src/views/card/components/AttachmentUpload.tsx:32
|
#: src/views/card/components/AttachmentUpload.tsx:33
|
||||||
#: src/views/card/components/AttachmentUpload.tsx:78
|
#: src/views/card/components/AttachmentUpload.tsx:79
|
||||||
msgid "Upload failed"
|
msgid "Upload failed"
|
||||||
msgstr "Hochladen fehlgeschlagen"
|
msgstr "Hochladen fehlgeschlagen"
|
||||||
|
|
||||||
@@ -2483,7 +2504,7 @@ msgstr "Verwalte deine Abrechnung und dein Abonnement."
|
|||||||
msgid "View docs"
|
msgid "View docs"
|
||||||
msgstr "Dokumentation ansehen"
|
msgstr "Dokumentation ansehen"
|
||||||
|
|
||||||
#: src/views/public/board/index.tsx:141
|
#: src/views/public/board/index.tsx:142
|
||||||
msgid "View only"
|
msgid "View only"
|
||||||
msgstr "Nur ansehen"
|
msgstr "Nur ansehen"
|
||||||
|
|
||||||
@@ -2491,7 +2512,7 @@ msgstr "Nur ansehen"
|
|||||||
msgid "View our roadmap."
|
msgid "View our roadmap."
|
||||||
msgstr "Sieh dir unsere roadmap an."
|
msgstr "Sieh dir unsere roadmap an."
|
||||||
|
|
||||||
#: src/views/public/board/index.tsx:171
|
#: src/views/public/board/index.tsx:172
|
||||||
msgid "View workspace"
|
msgid "View workspace"
|
||||||
msgstr "Workspace anzeigen"
|
msgstr "Workspace anzeigen"
|
||||||
|
|
||||||
@@ -2536,10 +2557,10 @@ msgid "Why make an open source Trello?"
|
|||||||
msgstr "Warum ein open source Trello entwickeln?"
|
msgstr "Warum ein open source Trello entwickeln?"
|
||||||
|
|
||||||
#: src/components/SettingsLayout.tsx:39
|
#: src/components/SettingsLayout.tsx:39
|
||||||
#: src/views/board/index.tsx:386
|
#: src/views/board/index.tsx:382
|
||||||
#: src/views/boards/index.tsx:33
|
#: src/views/boards/index.tsx:33
|
||||||
#: src/views/members/index.tsx:173
|
#: src/views/members/index.tsx:173
|
||||||
#: src/views/public/board/index.tsx:113
|
#: src/views/public/board/index.tsx:114
|
||||||
#: src/views/public/boards/index.tsx:66
|
#: src/views/public/boards/index.tsx:66
|
||||||
msgid "Workspace"
|
msgid "Workspace"
|
||||||
msgstr "Arbeitsbereich"
|
msgstr "Arbeitsbereich"
|
||||||
@@ -2673,7 +2694,7 @@ msgstr "Deine Boards wurden importiert."
|
|||||||
msgid "Your display name has been updated."
|
msgid "Your display name has been updated."
|
||||||
msgstr "Dein Anzeigename wurde aktualisiert."
|
msgstr "Dein Anzeigename wurde aktualisiert."
|
||||||
|
|
||||||
#: src/views/card/components/AttachmentUpload.tsx:26
|
#: src/views/card/components/AttachmentUpload.tsx:27
|
||||||
msgid "Your file has been uploaded successfully."
|
msgid "Your file has been uploaded successfully."
|
||||||
msgstr "Ihre Datei wurde erfolgreich hochgeladen."
|
msgstr "Ihre Datei wurde erfolgreich hochgeladen."
|
||||||
|
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ msgstr ""
|
|||||||
"Language-Team: \n"
|
"Language-Team: \n"
|
||||||
"Plural-Forms: \n"
|
"Plural-Forms: \n"
|
||||||
|
|
||||||
#: src/views/card/components/Comment.tsx:123
|
#: src/views/card/components/Comment.tsx:124
|
||||||
msgid " (edited)"
|
msgid " (edited)"
|
||||||
msgstr " (edited)"
|
msgstr " (edited)"
|
||||||
|
|
||||||
@@ -41,7 +41,7 @@ msgid "{0} labels"
|
|||||||
msgstr "{0} labels"
|
msgstr "{0} labels"
|
||||||
|
|
||||||
#. placeholder {0}: isTemplate ? "Template" : "Board"
|
#. placeholder {0}: isTemplate ? "Template" : "Board"
|
||||||
#: src/views/board/index.tsx:412
|
#: src/views/board/index.tsx:408
|
||||||
msgid "{0} not found"
|
msgid "{0} not found"
|
||||||
msgstr "{0} not found"
|
msgstr "{0} not found"
|
||||||
|
|
||||||
@@ -112,12 +112,12 @@ msgstr "Activity logs"
|
|||||||
msgid "Add a card"
|
msgid "Add a card"
|
||||||
msgstr "Add a card"
|
msgstr "Add a card"
|
||||||
|
|
||||||
#: src/views/card/components/Comment.tsx:146
|
#: src/views/card/components/Comment.tsx:147
|
||||||
#: src/views/card/components/NewCommentForm.tsx:57
|
#: src/views/card/components/NewCommentForm.tsx:55
|
||||||
msgid "Add a comment..."
|
msgid "Add a comment..."
|
||||||
msgstr "Add a comment..."
|
msgstr "Add a comment..."
|
||||||
|
|
||||||
#: src/views/card/components/NewChecklistItemForm.tsx:140
|
#: src/views/card/components/NewChecklistItemForm.tsx:141
|
||||||
msgid "Add an item..."
|
msgid "Add an item..."
|
||||||
msgstr "Add an item..."
|
msgstr "Add an item..."
|
||||||
|
|
||||||
@@ -133,48 +133,53 @@ msgstr "Add description... (type '/' to open commands or '@' to mention)"
|
|||||||
#~ msgid "Add description... (type '/' to open commands)"
|
#~ msgid "Add description... (type '/' to open commands)"
|
||||||
#~ msgstr "Add description... (type '/' to open commands)"
|
#~ msgstr "Add description... (type '/' to open commands)"
|
||||||
|
|
||||||
#: src/views/card/components/ChecklistItemRow.tsx:172
|
#: src/views/card/components/ChecklistItemRow.tsx:195
|
||||||
msgid "Add details..."
|
msgid "Add details..."
|
||||||
msgstr "Add details..."
|
msgstr "Add details..."
|
||||||
|
|
||||||
#: src/views/card/components/LabelSelector.tsx:109
|
#: src/views/card/components/LabelSelector.tsx:110
|
||||||
#: src/views/card/components/LabelSelector.tsx:114
|
#: src/views/card/components/LabelSelector.tsx:115
|
||||||
msgid "Add label"
|
msgid "Add label"
|
||||||
msgstr "Add label"
|
msgstr "Add label"
|
||||||
|
|
||||||
#: src/views/card/components/MemberSelector.tsx:130
|
#: src/views/card/components/MemberSelector.tsx:131
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:257
|
#: src/views/members/components/InviteMemberForm.tsx:257
|
||||||
msgid "Add member"
|
msgid "Add member"
|
||||||
msgstr "Add member"
|
msgstr "Add member"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:66
|
#. placeholder {0}: mergedLabels.length
|
||||||
|
#: src/views/card/components/ActivityList.tsx:77
|
||||||
|
msgid "added {0} labels: <0>{labelList}</0>"
|
||||||
|
msgstr "added {0} labels: <0>{labelList}</0>"
|
||||||
|
|
||||||
|
#: src/views/card/components/ActivityList.tsx:107
|
||||||
msgid "added a checklist"
|
msgid "added a checklist"
|
||||||
msgstr "added a checklist"
|
msgstr "added a checklist"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:69
|
#: src/views/card/components/ActivityList.tsx:110
|
||||||
msgid "added a checklist item"
|
msgid "added a checklist item"
|
||||||
msgstr "added a checklist item"
|
msgstr "added a checklist item"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:62
|
#: src/views/card/components/ActivityList.tsx:103
|
||||||
msgid "added a label to the card"
|
msgid "added a label to the card"
|
||||||
msgstr "added a label to the card"
|
msgstr "added a label to the card"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:64
|
#: src/views/card/components/ActivityList.tsx:105
|
||||||
msgid "added a member to the card"
|
msgid "added a member to the card"
|
||||||
msgstr "added a member to the card"
|
msgstr "added a member to the card"
|
||||||
|
|
||||||
#. placeholder {0}: truncate(toTitle)
|
#. placeholder {0}: truncate(toTitle)
|
||||||
#: src/views/card/components/ActivityList.tsx:146
|
#: src/views/card/components/ActivityList.tsx:181
|
||||||
msgid "added checklist <0>{0}</0>"
|
msgid "added checklist <0>{0}</0>"
|
||||||
msgstr "added checklist <0>{0}</0>"
|
msgstr "added checklist <0>{0}</0>"
|
||||||
|
|
||||||
#. placeholder {0}: truncate(toTitle)
|
#. placeholder {0}: truncate(toTitle)
|
||||||
#: src/views/card/components/ActivityList.tsx:170
|
#: src/views/card/components/ActivityList.tsx:205
|
||||||
msgid "added checklist item <0>{0}</0>"
|
msgid "added checklist item <0>{0}</0>"
|
||||||
msgstr "added checklist item <0>{0}</0>"
|
msgstr "added checklist item <0>{0}</0>"
|
||||||
|
|
||||||
#. placeholder {0}: truncate(label)
|
#. placeholder {0}: truncate(label)
|
||||||
#: src/views/card/components/ActivityList.tsx:130
|
#: src/views/card/components/ActivityList.tsx:165
|
||||||
msgid "added label <0>{0}</0>"
|
msgid "added label <0>{0}</0>"
|
||||||
msgstr "added label <0>{0}</0>"
|
msgstr "added label <0>{0}</0>"
|
||||||
|
|
||||||
@@ -277,11 +282,11 @@ msgstr "Are you sure you want to delete this {0}?"
|
|||||||
msgid "Are you sure you want to delete this card?"
|
msgid "Are you sure you want to delete this card?"
|
||||||
msgstr "Are you sure you want to delete this card?"
|
msgstr "Are you sure you want to delete this card?"
|
||||||
|
|
||||||
#: src/views/card/components/DeleteChecklistConfirmation.tsx:55
|
#: src/views/card/components/DeleteChecklistConfirmation.tsx:56
|
||||||
msgid "Are you sure you want to delete this checklist?"
|
msgid "Are you sure you want to delete this checklist?"
|
||||||
msgstr "Are you sure you want to delete this checklist?"
|
msgstr "Are you sure you want to delete this checklist?"
|
||||||
|
|
||||||
#: src/views/card/components/DeleteCommentConfirmation.tsx:65
|
#: src/views/card/components/DeleteCommentConfirmation.tsx:66
|
||||||
msgid "Are you sure you want to delete this comment?"
|
msgid "Are you sure you want to delete this comment?"
|
||||||
msgstr "Are you sure you want to delete this comment?"
|
msgstr "Are you sure you want to delete this comment?"
|
||||||
|
|
||||||
@@ -298,7 +303,7 @@ msgstr "Are you sure you want to delete your account?"
|
|||||||
#~ msgstr "around the world"
|
#~ msgstr "around the world"
|
||||||
|
|
||||||
#. placeholder {0}: truncate(memberName)
|
#. placeholder {0}: truncate(memberName)
|
||||||
#: src/views/card/components/ActivityList.tsx:110
|
#: src/views/card/components/ActivityList.tsx:145
|
||||||
msgid "assigned <0>{0}</0> to the card"
|
msgid "assigned <0>{0}</0> to the card"
|
||||||
msgstr "assigned <0>{0}</0> to the card"
|
msgstr "assigned <0>{0}</0> to the card"
|
||||||
|
|
||||||
@@ -310,7 +315,7 @@ msgstr "assigned <0>{0}</0> to the card"
|
|||||||
msgid "Assignees"
|
msgid "Assignees"
|
||||||
msgstr "Assignees"
|
msgstr "Assignees"
|
||||||
|
|
||||||
#: src/views/card/components/AttachmentUpload.tsx:25
|
#: src/views/card/components/AttachmentUpload.tsx:26
|
||||||
msgid "Attachment uploaded"
|
msgid "Attachment uploaded"
|
||||||
msgstr "Attachment uploaded"
|
msgstr "Attachment uploaded"
|
||||||
|
|
||||||
@@ -352,9 +357,9 @@ msgstr "Billing portal"
|
|||||||
msgid "Blog Post"
|
msgid "Blog Post"
|
||||||
msgstr "Blog Post"
|
msgstr "Blog Post"
|
||||||
|
|
||||||
#: src/views/board/index.tsx:386
|
#: src/views/board/index.tsx:382
|
||||||
#: src/views/card/index.tsx:272
|
#: src/views/card/index.tsx:272
|
||||||
#: src/views/public/board/index.tsx:113
|
#: src/views/public/board/index.tsx:114
|
||||||
msgid "Board"
|
msgid "Board"
|
||||||
msgstr "Board"
|
msgstr "Board"
|
||||||
|
|
||||||
@@ -380,7 +385,7 @@ msgstr "Board name cannot exceed 100 characters"
|
|||||||
msgid "Board name is required"
|
msgid "Board name is required"
|
||||||
msgstr "Board name is required"
|
msgstr "Board name is required"
|
||||||
|
|
||||||
#: src/views/public/board/index.tsx:165
|
#: src/views/public/board/index.tsx:166
|
||||||
msgid "Board not found"
|
msgid "Board not found"
|
||||||
msgstr "Board not found"
|
msgstr "Board not found"
|
||||||
|
|
||||||
@@ -396,7 +401,7 @@ msgstr "Board URL can only contain letters, numbers, and hyphens"
|
|||||||
msgid "Board URL cannot exceed 60 characters"
|
msgid "Board URL cannot exceed 60 characters"
|
||||||
msgstr "Board URL cannot exceed 60 characters"
|
msgstr "Board URL cannot exceed 60 characters"
|
||||||
|
|
||||||
#: src/views/public/board/index.tsx:79
|
#: src/views/public/board/index.tsx:80
|
||||||
msgid "Board URL copied to clipboard"
|
msgid "Board URL copied to clipboard"
|
||||||
msgstr "Board URL copied to clipboard"
|
msgstr "Board URL copied to clipboard"
|
||||||
|
|
||||||
@@ -439,10 +444,10 @@ msgstr "Bug Report"
|
|||||||
|
|
||||||
#: src/components/DeleteLabelConfirmation.tsx:49
|
#: src/components/DeleteLabelConfirmation.tsx:49
|
||||||
#: src/views/board/components/DeleteBoardConfirmation.tsx:44
|
#: src/views/board/components/DeleteBoardConfirmation.tsx:44
|
||||||
#: src/views/card/components/Comment.tsx:158
|
#: src/views/card/components/Comment.tsx:159
|
||||||
#: src/views/card/components/DeleteCardConfirmation.tsx:86
|
#: src/views/card/components/DeleteCardConfirmation.tsx:86
|
||||||
#: src/views/card/components/DeleteChecklistConfirmation.tsx:63
|
#: src/views/card/components/DeleteChecklistConfirmation.tsx:64
|
||||||
#: src/views/card/components/DeleteCommentConfirmation.tsx:76
|
#: src/views/card/components/DeleteCommentConfirmation.tsx:77
|
||||||
#: src/views/members/components/DeleteMemberConfirmation.tsx:55
|
#: src/views/members/components/DeleteMemberConfirmation.tsx:55
|
||||||
#: src/views/settings/components/Avatar.tsx:306
|
#: src/views/settings/components/Avatar.tsx:306
|
||||||
#: src/views/settings/components/ChangePasswordConfirmation.tsx:168
|
#: src/views/settings/components/ChangePasswordConfirmation.tsx:168
|
||||||
@@ -480,8 +485,8 @@ msgstr "Change Password"
|
|||||||
msgid "Change your language preferences."
|
msgid "Change your language preferences."
|
||||||
msgstr "Change your language preferences."
|
msgstr "Change your language preferences."
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:220
|
#: src/views/card/components/ActivityList.tsx:255
|
||||||
#: src/views/card/components/ActivityList.tsx:234
|
#: src/views/card/components/ActivityList.tsx:269
|
||||||
msgid "changed the due date to <0>{formattedDate}</0>"
|
msgid "changed the due date to <0>{formattedDate}</0>"
|
||||||
msgstr "changed the due date to <0>{formattedDate}</0>"
|
msgstr "changed the due date to <0>{formattedDate}</0>"
|
||||||
|
|
||||||
@@ -494,7 +499,7 @@ msgstr "Check out some of our favorite open source projects."
|
|||||||
msgid "Check your inbox"
|
msgid "Check your inbox"
|
||||||
msgstr "Check your inbox"
|
msgstr "Check your inbox"
|
||||||
|
|
||||||
#: src/views/card/components/NewChecklistForm.tsx:118
|
#: src/views/card/components/NewChecklistForm.tsx:119
|
||||||
msgid "Checklist name"
|
msgid "Checklist name"
|
||||||
msgstr "Checklist name"
|
msgstr "Checklist name"
|
||||||
|
|
||||||
@@ -555,12 +560,12 @@ msgstr "Complete"
|
|||||||
msgid "Complete control and ownership:"
|
msgid "Complete control and ownership:"
|
||||||
msgstr "Complete control and ownership:"
|
msgstr "Complete control and ownership:"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:71
|
#: src/views/card/components/ActivityList.tsx:112
|
||||||
msgid "completed a checklist item"
|
msgid "completed a checklist item"
|
||||||
msgstr "completed a checklist item"
|
msgstr "completed a checklist item"
|
||||||
|
|
||||||
#. placeholder {0}: truncate(toTitle)
|
#. placeholder {0}: truncate(toTitle)
|
||||||
#: src/views/card/components/ActivityList.tsx:187
|
#: src/views/card/components/ActivityList.tsx:222
|
||||||
msgid "completed checklist item <0>{0}</0>"
|
msgid "completed checklist item <0>{0}</0>"
|
||||||
msgstr "completed checklist item <0>{0}</0>"
|
msgstr "completed checklist item <0>{0}</0>"
|
||||||
|
|
||||||
@@ -646,7 +651,7 @@ msgstr "Create API key"
|
|||||||
msgid "Create card"
|
msgid "Create card"
|
||||||
msgstr "Create card"
|
msgstr "Create card"
|
||||||
|
|
||||||
#: src/views/card/components/NewChecklistForm.tsx:134
|
#: src/views/card/components/NewChecklistForm.tsx:135
|
||||||
msgid "Create checklist"
|
msgid "Create checklist"
|
||||||
msgstr "Create checklist"
|
msgstr "Create checklist"
|
||||||
|
|
||||||
@@ -677,12 +682,12 @@ msgid "Create new key"
|
|||||||
msgstr "Create new key"
|
msgstr "Create new key"
|
||||||
|
|
||||||
#: src/views/board/components/NewCardForm.tsx:414
|
#: src/views/board/components/NewCardForm.tsx:414
|
||||||
#: src/views/card/components/LabelSelector.tsx:97
|
#: src/views/card/components/LabelSelector.tsx:98
|
||||||
msgid "Create new label"
|
msgid "Create new label"
|
||||||
msgstr "Create new label"
|
msgstr "Create new label"
|
||||||
|
|
||||||
#: src/views/board/index.tsx:65
|
#: src/views/board/index.tsx:64
|
||||||
#: src/views/board/index.tsx:503
|
#: src/views/board/index.tsx:499
|
||||||
msgid "Create new list"
|
msgid "Create new list"
|
||||||
msgstr "Create new list"
|
msgstr "Create new list"
|
||||||
|
|
||||||
@@ -699,7 +704,7 @@ msgstr "Create template"
|
|||||||
msgid "Create workspace"
|
msgid "Create workspace"
|
||||||
msgstr "Create workspace"
|
msgstr "Create workspace"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:58
|
#: src/views/card/components/ActivityList.tsx:99
|
||||||
msgid "created the card"
|
msgid "created the card"
|
||||||
msgstr "created the card"
|
msgstr "created the card"
|
||||||
|
|
||||||
@@ -765,8 +770,8 @@ msgstr "Deactivate invite link"
|
|||||||
#: src/components/LabelForm.tsx:228
|
#: src/components/LabelForm.tsx:228
|
||||||
#: src/views/board/components/DeleteBoardConfirmation.tsx:47
|
#: src/views/board/components/DeleteBoardConfirmation.tsx:47
|
||||||
#: src/views/card/components/DeleteCardConfirmation.tsx:92
|
#: src/views/card/components/DeleteCardConfirmation.tsx:92
|
||||||
#: src/views/card/components/DeleteChecklistConfirmation.tsx:66
|
#: src/views/card/components/DeleteChecklistConfirmation.tsx:67
|
||||||
#: src/views/card/components/DeleteCommentConfirmation.tsx:82
|
#: src/views/card/components/DeleteCommentConfirmation.tsx:83
|
||||||
msgid "Delete"
|
msgid "Delete"
|
||||||
msgstr "Delete"
|
msgstr "Delete"
|
||||||
|
|
||||||
@@ -784,7 +789,7 @@ msgstr "Delete board"
|
|||||||
msgid "Delete card"
|
msgid "Delete card"
|
||||||
msgstr "Delete card"
|
msgstr "Delete card"
|
||||||
|
|
||||||
#: src/views/card/components/Comment.tsx:91
|
#: src/views/card/components/Comment.tsx:92
|
||||||
msgid "Delete comment"
|
msgid "Delete comment"
|
||||||
msgstr "Delete comment"
|
msgstr "Delete comment"
|
||||||
|
|
||||||
@@ -802,21 +807,21 @@ msgstr "Delete template"
|
|||||||
msgid "Delete workspace"
|
msgid "Delete workspace"
|
||||||
msgstr "Delete workspace"
|
msgstr "Delete workspace"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:68
|
#: src/views/card/components/ActivityList.tsx:109
|
||||||
msgid "deleted a checklist"
|
msgid "deleted a checklist"
|
||||||
msgstr "deleted a checklist"
|
msgstr "deleted a checklist"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:73
|
#: src/views/card/components/ActivityList.tsx:114
|
||||||
msgid "deleted a checklist item"
|
msgid "deleted a checklist item"
|
||||||
msgstr "deleted a checklist item"
|
msgstr "deleted a checklist item"
|
||||||
|
|
||||||
#. placeholder {0}: truncate(fromTitle)
|
#. placeholder {0}: truncate(fromTitle)
|
||||||
#: src/views/card/components/ActivityList.tsx:162
|
#: src/views/card/components/ActivityList.tsx:197
|
||||||
msgid "deleted checklist <0>{0}</0>"
|
msgid "deleted checklist <0>{0}</0>"
|
||||||
msgstr "deleted checklist <0>{0}</0>"
|
msgstr "deleted checklist <0>{0}</0>"
|
||||||
|
|
||||||
#. placeholder {0}: truncate(fromTitle)
|
#. placeholder {0}: truncate(fromTitle)
|
||||||
#: src/views/card/components/ActivityList.tsx:205
|
#: src/views/card/components/ActivityList.tsx:240
|
||||||
msgid "deleted checklist item <0>{0}</0>"
|
msgid "deleted checklist item <0>{0}</0>"
|
||||||
msgstr "deleted checklist item <0>{0}</0>"
|
msgstr "deleted checklist item <0>{0}</0>"
|
||||||
|
|
||||||
@@ -882,13 +887,13 @@ msgstr "Don't have an account? <0><1>Sign up</1></0>"
|
|||||||
msgid "Done"
|
msgid "Done"
|
||||||
msgstr "Done"
|
msgstr "Done"
|
||||||
|
|
||||||
#: src/views/card/components/AttachmentThumbnails.tsx:141
|
#: src/views/card/components/AttachmentThumbnails.tsx:142
|
||||||
msgid "Download failed"
|
msgid "Download failed"
|
||||||
msgstr "Download failed"
|
msgstr "Download failed"
|
||||||
|
|
||||||
#: src/views/board/components/Filters.tsx:171
|
#: src/views/board/components/Filters.tsx:171
|
||||||
#: src/views/board/components/NewCardForm.tsx:469
|
#: src/views/board/components/NewCardForm.tsx:469
|
||||||
#: src/views/card/index.tsx:138
|
#: src/views/card/index.tsx:139
|
||||||
msgid "Due date"
|
msgid "Due date"
|
||||||
msgstr "Due date"
|
msgstr "Due date"
|
||||||
|
|
||||||
@@ -913,7 +918,7 @@ msgstr "Due tomorrow"
|
|||||||
msgid "Edit board URL"
|
msgid "Edit board URL"
|
||||||
msgstr "Edit board URL"
|
msgstr "Edit board URL"
|
||||||
|
|
||||||
#: src/views/card/components/Comment.tsx:82
|
#: src/views/card/components/Comment.tsx:83
|
||||||
msgid "Edit comment"
|
msgid "Edit comment"
|
||||||
msgstr "Edit comment"
|
msgstr "Edit comment"
|
||||||
|
|
||||||
@@ -1070,8 +1075,8 @@ msgstr "Failed to create board"
|
|||||||
msgid "Failed to login with {0}. Please try again."
|
msgid "Failed to login with {0}. Please try again."
|
||||||
msgstr "Failed to login with {0}. Please try again."
|
msgstr "Failed to login with {0}. Please try again."
|
||||||
|
|
||||||
#: src/views/card/components/AttachmentUpload.tsx:33
|
#: src/views/card/components/AttachmentUpload.tsx:34
|
||||||
#: src/views/card/components/AttachmentUpload.tsx:79
|
#: src/views/card/components/AttachmentUpload.tsx:80
|
||||||
msgid "Failed to upload attachment. Please try again."
|
msgid "Failed to upload attachment. Please try again."
|
||||||
msgstr "Failed to upload attachment. Please try again."
|
msgstr "Failed to upload attachment. Please try again."
|
||||||
|
|
||||||
@@ -1190,7 +1195,7 @@ msgstr "Get started by creating a new {0}"
|
|||||||
#~ msgid "Get started by creating a new board"
|
#~ msgid "Get started by creating a new board"
|
||||||
#~ msgstr "Get started by creating a new board"
|
#~ msgstr "Get started by creating a new board"
|
||||||
|
|
||||||
#: src/views/board/index.tsx:495
|
#: src/views/board/index.tsx:491
|
||||||
msgid "Get started by creating a new list"
|
msgid "Get started by creating a new list"
|
||||||
msgstr "Get started by creating a new list"
|
msgstr "Get started by creating a new list"
|
||||||
|
|
||||||
@@ -1385,7 +1390,7 @@ msgstr "Invite links"
|
|||||||
msgid "Invite links require a Team or Pro subscription. Please upgrade your workspace."
|
msgid "Invite links require a Team or Pro subscription. Please upgrade your workspace."
|
||||||
msgstr "Invite links require a Team or Pro subscription. Please upgrade your workspace."
|
msgstr "Invite links require a Team or Pro subscription. Please upgrade your workspace."
|
||||||
|
|
||||||
#: src/views/card/components/MemberSelector.tsx:111
|
#: src/views/card/components/MemberSelector.tsx:112
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:367
|
#: src/views/members/components/InviteMemberForm.tsx:367
|
||||||
msgid "Invite member"
|
msgid "Invite member"
|
||||||
msgstr "Invite member"
|
msgstr "Invite member"
|
||||||
@@ -1434,7 +1439,7 @@ msgstr "Keyboard Shortcuts"
|
|||||||
|
|
||||||
#: src/views/board/components/Filters.tsx:155
|
#: src/views/board/components/Filters.tsx:155
|
||||||
#: src/views/board/components/NewCardForm.tsx:418
|
#: src/views/board/components/NewCardForm.tsx:418
|
||||||
#: src/views/card/index.tsx:120
|
#: src/views/card/index.tsx:121
|
||||||
msgid "Labels"
|
msgid "Labels"
|
||||||
msgstr "Labels"
|
msgstr "Labels"
|
||||||
|
|
||||||
@@ -1484,11 +1489,11 @@ msgstr "License"
|
|||||||
msgid "Light"
|
msgid "Light"
|
||||||
msgstr "Light"
|
msgstr "Light"
|
||||||
|
|
||||||
#: src/views/public/board/index.tsx:77
|
#: src/views/public/board/index.tsx:78
|
||||||
msgid "Link copied"
|
msgid "Link copied"
|
||||||
msgstr "Link copied"
|
msgstr "Link copied"
|
||||||
|
|
||||||
#: src/views/card/index.tsx:112
|
#: src/views/card/index.tsx:113
|
||||||
msgid "List"
|
msgid "List"
|
||||||
msgstr "List"
|
msgstr "List"
|
||||||
|
|
||||||
@@ -1500,6 +1505,14 @@ msgstr "List name"
|
|||||||
msgid "Lists"
|
msgid "Lists"
|
||||||
msgstr "Lists"
|
msgstr "Lists"
|
||||||
|
|
||||||
|
#: src/views/card/components/ActivityList.tsx:530
|
||||||
|
msgid "Load more activities"
|
||||||
|
msgstr "Load more activities"
|
||||||
|
|
||||||
|
#: src/views/card/components/ActivityList.tsx:530
|
||||||
|
msgid "Loading..."
|
||||||
|
msgstr "Loading..."
|
||||||
|
|
||||||
#: src/views/auth/login/index.tsx:33
|
#: src/views/auth/login/index.tsx:33
|
||||||
msgid "Login | kan.bn"
|
msgid "Login | kan.bn"
|
||||||
msgstr "Login | kan.bn"
|
msgstr "Login | kan.bn"
|
||||||
@@ -1528,12 +1541,12 @@ msgstr "magic link"
|
|||||||
msgid "Make template"
|
msgid "Make template"
|
||||||
msgstr "Make template"
|
msgstr "Make template"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:72
|
#: src/views/card/components/ActivityList.tsx:113
|
||||||
msgid "marked a checklist item as incomplete"
|
msgid "marked a checklist item as incomplete"
|
||||||
msgstr "marked a checklist item as incomplete"
|
msgstr "marked a checklist item as incomplete"
|
||||||
|
|
||||||
#. placeholder {0}: truncate(toTitle)
|
#. placeholder {0}: truncate(toTitle)
|
||||||
#: src/views/card/components/ActivityList.tsx:196
|
#: src/views/card/components/ActivityList.tsx:231
|
||||||
msgid "marked checklist item <0>{0}</0> as incomplete"
|
msgid "marked checklist item <0>{0}</0> as incomplete"
|
||||||
msgstr "marked checklist item <0>{0}</0> as incomplete"
|
msgstr "marked checklist item <0>{0}</0> as incomplete"
|
||||||
|
|
||||||
@@ -1544,7 +1557,7 @@ msgstr "Medium Priority"
|
|||||||
#: src/components/SideNavigation.tsx:121
|
#: src/components/SideNavigation.tsx:121
|
||||||
#: src/views/board/components/Filters.tsx:147
|
#: src/views/board/components/Filters.tsx:147
|
||||||
#: src/views/board/components/NewCardForm.tsx:376
|
#: src/views/board/components/NewCardForm.tsx:376
|
||||||
#: src/views/card/index.tsx:129
|
#: src/views/card/index.tsx:130
|
||||||
#: src/views/members/index.tsx:178
|
#: src/views/members/index.tsx:178
|
||||||
msgid "Members"
|
msgid "Members"
|
||||||
msgstr "Members"
|
msgstr "Members"
|
||||||
@@ -1565,7 +1578,7 @@ msgstr "monthly billing"
|
|||||||
|
|
||||||
#. placeholder {0}: truncate(fromList)
|
#. placeholder {0}: truncate(fromList)
|
||||||
#. placeholder {1}: truncate(toList)
|
#. placeholder {1}: truncate(toList)
|
||||||
#: src/views/card/components/ActivityList.tsx:98
|
#: src/views/card/components/ActivityList.tsx:133
|
||||||
msgid "moved the card from <0>{0}</0> to<1>{1}</1>"
|
msgid "moved the card from <0>{0}</0> to<1>{1}</1>"
|
||||||
msgstr "moved the card from <0>{0}</0> to<1>{1}</1>"
|
msgstr "moved the card from <0>{0}</0> to<1>{1}</1>"
|
||||||
|
|
||||||
@@ -1573,7 +1586,7 @@ msgstr "moved the card from <0>{0}</0> to<1>{1}</1>"
|
|||||||
#~ msgid "moved the card from <0>{fromList}</0> to<1>{toList}</1>"
|
#~ msgid "moved the card from <0>{fromList}</0> to<1>{toList}</1>"
|
||||||
#~ msgstr "moved the card from <0>{fromList}</0> to<1>{toList}</1>"
|
#~ msgstr "moved the card from <0>{fromList}</0> to<1>{toList}</1>"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:61
|
#: src/views/card/components/ActivityList.tsx:102
|
||||||
msgid "moved the card to another list"
|
msgid "moved the card to another list"
|
||||||
msgstr "moved the card to another list"
|
msgstr "moved the card to another list"
|
||||||
|
|
||||||
@@ -1617,7 +1630,7 @@ msgstr "New API key"
|
|||||||
msgid "New card"
|
msgid "New card"
|
||||||
msgstr "New card"
|
msgstr "New card"
|
||||||
|
|
||||||
#: src/views/card/components/NewChecklistForm.tsx:102
|
#: src/views/card/components/NewChecklistForm.tsx:103
|
||||||
msgid "New checklist"
|
msgid "New checklist"
|
||||||
msgstr "New checklist"
|
msgstr "New checklist"
|
||||||
|
|
||||||
@@ -1630,7 +1643,7 @@ msgid "New label"
|
|||||||
msgstr "New label"
|
msgstr "New label"
|
||||||
|
|
||||||
#: src/views/board/components/NewListForm.tsx:113
|
#: src/views/board/components/NewListForm.tsx:113
|
||||||
#: src/views/board/index.tsx:466
|
#: src/views/board/index.tsx:462
|
||||||
msgid "New list"
|
msgid "New list"
|
||||||
msgstr "New list"
|
msgstr "New list"
|
||||||
|
|
||||||
@@ -1691,7 +1704,7 @@ msgstr "No credit card required"
|
|||||||
msgid "No dates"
|
msgid "No dates"
|
||||||
msgstr "No dates"
|
msgstr "No dates"
|
||||||
|
|
||||||
#: src/views/card/components/AttachmentThumbnails.tsx:142
|
#: src/views/card/components/AttachmentThumbnails.tsx:143
|
||||||
msgid "No download URL available for this attachment."
|
msgid "No download URL available for this attachment."
|
||||||
msgstr "No download URL available for this attachment."
|
msgstr "No download URL available for this attachment."
|
||||||
|
|
||||||
@@ -1699,7 +1712,7 @@ msgstr "No download URL available for this attachment."
|
|||||||
msgid "No keyboard shortcuts registered."
|
msgid "No keyboard shortcuts registered."
|
||||||
msgstr "No keyboard shortcuts registered."
|
msgstr "No keyboard shortcuts registered."
|
||||||
|
|
||||||
#: src/views/board/index.tsx:492
|
#: src/views/board/index.tsx:488
|
||||||
msgid "No lists"
|
msgid "No lists"
|
||||||
msgstr "No lists"
|
msgstr "No lists"
|
||||||
|
|
||||||
@@ -1850,24 +1863,25 @@ msgstr "Please select a file to upload."
|
|||||||
#: src/views/board/components/NewTemplateForm.tsx:77
|
#: src/views/board/components/NewTemplateForm.tsx:77
|
||||||
#: src/views/board/components/UpdateBoardSlugForm.tsx:73
|
#: src/views/board/components/UpdateBoardSlugForm.tsx:73
|
||||||
#: src/views/board/components/VisibilityButton.tsx:54
|
#: src/views/board/components/VisibilityButton.tsx:54
|
||||||
#: src/views/board/index.tsx:174
|
#: src/views/board/index.tsx:170
|
||||||
#: src/views/board/index.tsx:230
|
#: src/views/board/index.tsx:226
|
||||||
#: src/views/boards/components/ImportBoardsForm.tsx:205
|
#: src/views/boards/components/ImportBoardsForm.tsx:205
|
||||||
#: src/views/card/components/AttachmentThumbnails.tsx:73
|
#: src/views/card/components/AttachmentThumbnails.tsx:74
|
||||||
#: src/views/card/components/ChecklistItemRow.tsx:60
|
#: src/views/card/components/ChecklistItemRow.tsx:67
|
||||||
#: src/views/card/components/ChecklistItemRow.tsx:88
|
#: src/views/card/components/ChecklistItemRow.tsx:95
|
||||||
#: src/views/card/components/ChecklistNameInput.tsx:46
|
#: src/views/card/components/ChecklistNameInput.tsx:47
|
||||||
#: src/views/card/components/Comment.tsx:64
|
#: src/views/card/components/Checklists.tsx:81
|
||||||
|
#: src/views/card/components/Comment.tsx:65
|
||||||
#: src/views/card/components/DeleteCardConfirmation.tsx:52
|
#: src/views/card/components/DeleteCardConfirmation.tsx:52
|
||||||
#: src/views/card/components/DeleteChecklistConfirmation.tsx:37
|
#: src/views/card/components/DeleteChecklistConfirmation.tsx:38
|
||||||
#: src/views/card/components/DeleteCommentConfirmation.tsx:45
|
#: src/views/card/components/DeleteCommentConfirmation.tsx:46
|
||||||
#: src/views/card/components/DueDateSelector.tsx:59
|
#: src/views/card/components/DueDateSelector.tsx:60
|
||||||
#: src/views/card/components/LabelSelector.tsx:72
|
#: src/views/card/components/LabelSelector.tsx:73
|
||||||
#: src/views/card/components/ListSelector.tsx:52
|
#: src/views/card/components/ListSelector.tsx:53
|
||||||
#: src/views/card/components/MemberSelector.tsx:79
|
#: src/views/card/components/MemberSelector.tsx:80
|
||||||
#: src/views/card/components/NewChecklistForm.tsx:70
|
#: src/views/card/components/NewChecklistForm.tsx:71
|
||||||
#: src/views/card/components/NewChecklistItemForm.tsx:89
|
#: src/views/card/components/NewChecklistItemForm.tsx:90
|
||||||
#: src/views/card/components/NewCommentForm.tsx:31
|
#: src/views/card/components/NewCommentForm.tsx:32
|
||||||
#: src/views/card/index.tsx:187
|
#: src/views/card/index.tsx:187
|
||||||
#: src/views/card/index.tsx:200
|
#: src/views/card/index.tsx:200
|
||||||
#: src/views/members/components/DeleteMemberConfirmation.tsx:28
|
#: src/views/members/components/DeleteMemberConfirmation.tsx:28
|
||||||
@@ -1969,16 +1983,21 @@ msgstr "Remove"
|
|||||||
msgid "Remove member"
|
msgid "Remove member"
|
||||||
msgstr "Remove member"
|
msgstr "Remove member"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:63
|
#. placeholder {0}: mergedLabels.length
|
||||||
|
#: src/views/card/components/ActivityList.tsx:91
|
||||||
|
msgid "removed {0} labels: <0>{labelList}</0>"
|
||||||
|
msgstr "removed {0} labels: <0>{labelList}</0>"
|
||||||
|
|
||||||
|
#: src/views/card/components/ActivityList.tsx:104
|
||||||
msgid "removed a label from the card"
|
msgid "removed a label from the card"
|
||||||
msgstr "removed a label from the card"
|
msgstr "removed a label from the card"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:65
|
#: src/views/card/components/ActivityList.tsx:106
|
||||||
msgid "removed a member from the card"
|
msgid "removed a member from the card"
|
||||||
msgstr "removed a member from the card"
|
msgstr "removed a member from the card"
|
||||||
|
|
||||||
#. placeholder {0}: truncate(label)
|
#. placeholder {0}: truncate(label)
|
||||||
#: src/views/card/components/ActivityList.tsx:138
|
#: src/views/card/components/ActivityList.tsx:173
|
||||||
msgid "removed label <0>{0}</0>"
|
msgid "removed label <0>{0}</0>"
|
||||||
msgstr "removed label <0>{0}</0>"
|
msgstr "removed label <0>{0}</0>"
|
||||||
|
|
||||||
@@ -1986,22 +2005,22 @@ msgstr "removed label <0>{0}</0>"
|
|||||||
#~ msgid "removed label <0>{label}</0>"
|
#~ msgid "removed label <0>{label}</0>"
|
||||||
#~ msgstr "removed label <0>{label}</0>"
|
#~ msgstr "removed label <0>{label}</0>"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:76
|
#: src/views/card/components/ActivityList.tsx:117
|
||||||
#: src/views/card/components/ActivityList.tsx:241
|
#: src/views/card/components/ActivityList.tsx:276
|
||||||
msgid "removed the due date"
|
msgid "removed the due date"
|
||||||
msgstr "removed the due date"
|
msgstr "removed the due date"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:67
|
#: src/views/card/components/ActivityList.tsx:108
|
||||||
msgid "renamed a checklist"
|
msgid "renamed a checklist"
|
||||||
msgstr "renamed a checklist"
|
msgstr "renamed a checklist"
|
||||||
|
|
||||||
#. placeholder {0}: truncate(toTitle)
|
#. placeholder {0}: truncate(toTitle)
|
||||||
#: src/views/card/components/ActivityList.tsx:154
|
#: src/views/card/components/ActivityList.tsx:189
|
||||||
msgid "renamed checklist <0>{0}</0>"
|
msgid "renamed checklist <0>{0}</0>"
|
||||||
msgstr "renamed checklist <0>{0}</0>"
|
msgstr "renamed checklist <0>{0}</0>"
|
||||||
|
|
||||||
#. placeholder {0}: truncate(toTitle)
|
#. placeholder {0}: truncate(toTitle)
|
||||||
#: src/views/card/components/ActivityList.tsx:178
|
#: src/views/card/components/ActivityList.tsx:213
|
||||||
msgid "renamed checklist item to <0>{0}</0>"
|
msgid "renamed checklist item to <0>{0}</0>"
|
||||||
msgstr "renamed checklist item to <0>{0}</0>"
|
msgstr "renamed checklist item to <0>{0}</0>"
|
||||||
|
|
||||||
@@ -2044,7 +2063,7 @@ msgstr "Role"
|
|||||||
msgid "Run on your own infrastructure"
|
msgid "Run on your own infrastructure"
|
||||||
msgstr "Run on your own infrastructure"
|
msgstr "Run on your own infrastructure"
|
||||||
|
|
||||||
#: src/views/card/components/Comment.tsx:165
|
#: src/views/card/components/Comment.tsx:166
|
||||||
#: src/views/settings/components/Avatar.tsx:309
|
#: src/views/settings/components/Avatar.tsx:309
|
||||||
msgid "Save"
|
msgid "Save"
|
||||||
msgstr "Save"
|
msgstr "Save"
|
||||||
@@ -2082,7 +2101,7 @@ msgstr "Self Host"
|
|||||||
msgid "Self host with Github"
|
msgid "Self host with Github"
|
||||||
msgstr "Self host with Github"
|
msgstr "Self host with Github"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:107
|
#: src/views/card/components/ActivityList.tsx:142
|
||||||
msgid "self-assigned the card"
|
msgid "self-assigned the card"
|
||||||
msgstr "self-assigned the card"
|
msgstr "self-assigned the card"
|
||||||
|
|
||||||
@@ -2102,11 +2121,11 @@ msgstr "Send feedback"
|
|||||||
msgid "Senior"
|
msgid "Senior"
|
||||||
msgstr "Senior"
|
msgstr "Senior"
|
||||||
|
|
||||||
#: src/views/card/components/DueDateSelector.tsx:116
|
#: src/views/card/components/DueDateSelector.tsx:117
|
||||||
msgid "Set due date"
|
msgid "Set due date"
|
||||||
msgstr "Set due date"
|
msgstr "Set due date"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:74
|
#: src/views/card/components/ActivityList.tsx:115
|
||||||
msgid "set the due date"
|
msgid "set the due date"
|
||||||
msgstr "set the due date"
|
msgstr "set the due date"
|
||||||
|
|
||||||
@@ -2239,8 +2258,8 @@ msgstr "Team Plan"
|
|||||||
msgid "Teams"
|
msgid "Teams"
|
||||||
msgstr "Teams"
|
msgstr "Teams"
|
||||||
|
|
||||||
#: src/views/board/index.tsx:386
|
#: src/views/board/index.tsx:382
|
||||||
#: src/views/board/index.tsx:421
|
#: src/views/board/index.tsx:417
|
||||||
msgid "Template"
|
msgid "Template"
|
||||||
msgstr "Template"
|
msgstr "Template"
|
||||||
|
|
||||||
@@ -2305,8 +2324,8 @@ msgstr "They won't be able to access this workspace."
|
|||||||
#: src/components/DeleteLabelConfirmation.tsx:44
|
#: src/components/DeleteLabelConfirmation.tsx:44
|
||||||
#: src/views/board/components/DeleteBoardConfirmation.tsx:39
|
#: src/views/board/components/DeleteBoardConfirmation.tsx:39
|
||||||
#: src/views/card/components/DeleteCardConfirmation.tsx:78
|
#: src/views/card/components/DeleteCardConfirmation.tsx:78
|
||||||
#: src/views/card/components/DeleteChecklistConfirmation.tsx:58
|
#: src/views/card/components/DeleteChecklistConfirmation.tsx:59
|
||||||
#: src/views/card/components/DeleteCommentConfirmation.tsx:68
|
#: src/views/card/components/DeleteCommentConfirmation.tsx:69
|
||||||
msgid "This action can't be undone."
|
msgid "This action can't be undone."
|
||||||
msgstr "This action can't be undone."
|
msgstr "This action can't be undone."
|
||||||
|
|
||||||
@@ -2314,7 +2333,7 @@ msgstr "This action can't be undone."
|
|||||||
msgid "This API key will only be shown once. Please save it in a secure location."
|
msgid "This API key will only be shown once. Please save it in a secure location."
|
||||||
msgstr "This API key will only be shown once. Please save it in a secure location."
|
msgstr "This API key will only be shown once. Please save it in a secure location."
|
||||||
|
|
||||||
#: src/views/public/board/index.tsx:168
|
#: src/views/public/board/index.tsx:169
|
||||||
msgid "This board is private or does not exist"
|
msgid "This board is private or does not exist"
|
||||||
msgstr "This board is private or does not exist"
|
msgstr "This board is private or does not exist"
|
||||||
|
|
||||||
@@ -2384,15 +2403,15 @@ msgstr "Triaging"
|
|||||||
#~ msgid "Trusted by fast-moving teams"
|
#~ msgid "Trusted by fast-moving teams"
|
||||||
#~ msgstr "Trusted by fast-moving teams"
|
#~ msgstr "Trusted by fast-moving teams"
|
||||||
|
|
||||||
#: src/views/home/components/Logos.tsx:73
|
#: src/views/home/components/Logos.tsx:67
|
||||||
msgid "Trusted by fast-moving teams<0/>around the world"
|
msgid "Trusted by fast-moving teams<0/>around the world"
|
||||||
msgstr "Trusted by fast-moving teams<0/>around the world"
|
msgstr "Trusted by fast-moving teams<0/>around the world"
|
||||||
|
|
||||||
#: src/views/card/components/NewChecklistItemForm.tsx:88
|
#: src/views/card/components/NewChecklistItemForm.tsx:89
|
||||||
msgid "Unable to add checklist item"
|
msgid "Unable to add checklist item"
|
||||||
msgstr "Unable to add checklist item"
|
msgstr "Unable to add checklist item"
|
||||||
|
|
||||||
#: src/views/card/components/NewCommentForm.tsx:30
|
#: src/views/card/components/NewCommentForm.tsx:31
|
||||||
msgid "Unable to add comment"
|
msgid "Unable to add comment"
|
||||||
msgstr "Unable to add comment"
|
msgstr "Unable to add comment"
|
||||||
|
|
||||||
@@ -2404,7 +2423,7 @@ msgstr "Unable to add label"
|
|||||||
msgid "Unable to create card"
|
msgid "Unable to create card"
|
||||||
msgstr "Unable to create card"
|
msgstr "Unable to create card"
|
||||||
|
|
||||||
#: src/views/card/components/NewChecklistForm.tsx:69
|
#: src/views/card/components/NewChecklistForm.tsx:70
|
||||||
msgid "Unable to create checklist"
|
msgid "Unable to create checklist"
|
||||||
msgstr "Unable to create checklist"
|
msgstr "Unable to create checklist"
|
||||||
|
|
||||||
@@ -2421,7 +2440,7 @@ msgstr "Unable to create template"
|
|||||||
msgid "Unable to create workspace"
|
msgid "Unable to create workspace"
|
||||||
msgstr "Unable to create workspace"
|
msgstr "Unable to create workspace"
|
||||||
|
|
||||||
#: src/views/card/components/AttachmentThumbnails.tsx:72
|
#: src/views/card/components/AttachmentThumbnails.tsx:73
|
||||||
msgid "Unable to delete attachment"
|
msgid "Unable to delete attachment"
|
||||||
msgstr "Unable to delete attachment"
|
msgstr "Unable to delete attachment"
|
||||||
|
|
||||||
@@ -2429,15 +2448,15 @@ msgstr "Unable to delete attachment"
|
|||||||
msgid "Unable to delete card"
|
msgid "Unable to delete card"
|
||||||
msgstr "Unable to delete card"
|
msgstr "Unable to delete card"
|
||||||
|
|
||||||
#: src/views/card/components/DeleteChecklistConfirmation.tsx:36
|
#: src/views/card/components/DeleteChecklistConfirmation.tsx:37
|
||||||
msgid "Unable to delete checklist"
|
msgid "Unable to delete checklist"
|
||||||
msgstr "Unable to delete checklist"
|
msgstr "Unable to delete checklist"
|
||||||
|
|
||||||
#: src/views/card/components/ChecklistItemRow.tsx:87
|
#: src/views/card/components/ChecklistItemRow.tsx:94
|
||||||
msgid "Unable to delete checklist item"
|
msgid "Unable to delete checklist item"
|
||||||
msgstr "Unable to delete checklist item"
|
msgstr "Unable to delete checklist item"
|
||||||
|
|
||||||
#: src/views/card/components/DeleteCommentConfirmation.tsx:44
|
#: src/views/card/components/DeleteCommentConfirmation.tsx:45
|
||||||
msgid "Unable to delete comment"
|
msgid "Unable to delete comment"
|
||||||
msgstr "Unable to delete comment"
|
msgstr "Unable to delete comment"
|
||||||
|
|
||||||
@@ -2445,6 +2464,10 @@ msgstr "Unable to delete comment"
|
|||||||
msgid "Unable to remove member"
|
msgid "Unable to remove member"
|
||||||
msgstr "Unable to remove member"
|
msgstr "Unable to remove member"
|
||||||
|
|
||||||
|
#: src/views/card/components/Checklists.tsx:80
|
||||||
|
msgid "Unable to reorder checklist item"
|
||||||
|
msgstr "Unable to reorder checklist item"
|
||||||
|
|
||||||
#: src/components/FeedbackModal.tsx:40
|
#: src/components/FeedbackModal.tsx:40
|
||||||
msgid "Unable to send feedback"
|
msgid "Unable to send feedback"
|
||||||
msgstr "Unable to send feedback"
|
msgstr "Unable to send feedback"
|
||||||
@@ -2457,42 +2480,42 @@ msgstr "Unable to update board URL"
|
|||||||
msgid "Unable to update board visibility"
|
msgid "Unable to update board visibility"
|
||||||
msgstr "Unable to update board visibility"
|
msgstr "Unable to update board visibility"
|
||||||
|
|
||||||
#: src/views/board/index.tsx:229
|
#: src/views/board/index.tsx:225
|
||||||
#: src/views/card/index.tsx:186
|
#: src/views/card/index.tsx:186
|
||||||
msgid "Unable to update card"
|
msgid "Unable to update card"
|
||||||
msgstr "Unable to update card"
|
msgstr "Unable to update card"
|
||||||
|
|
||||||
#: src/views/card/components/ChecklistNameInput.tsx:45
|
#: src/views/card/components/ChecklistNameInput.tsx:46
|
||||||
msgid "Unable to update checklist"
|
msgid "Unable to update checklist"
|
||||||
msgstr "Unable to update checklist"
|
msgstr "Unable to update checklist"
|
||||||
|
|
||||||
#: src/views/card/components/ChecklistItemRow.tsx:59
|
#: src/views/card/components/ChecklistItemRow.tsx:66
|
||||||
msgid "Unable to update checklist item"
|
msgid "Unable to update checklist item"
|
||||||
msgstr "Unable to update checklist item"
|
msgstr "Unable to update checklist item"
|
||||||
|
|
||||||
#: src/views/card/components/Comment.tsx:63
|
#: src/views/card/components/Comment.tsx:64
|
||||||
msgid "Unable to update comment"
|
msgid "Unable to update comment"
|
||||||
msgstr "Unable to update comment"
|
msgstr "Unable to update comment"
|
||||||
|
|
||||||
#: src/views/card/components/DueDateSelector.tsx:58
|
#: src/views/card/components/DueDateSelector.tsx:59
|
||||||
msgid "Unable to update due date"
|
msgid "Unable to update due date"
|
||||||
msgstr "Unable to update due date"
|
msgstr "Unable to update due date"
|
||||||
|
|
||||||
#: src/views/card/components/LabelSelector.tsx:71
|
#: src/views/card/components/LabelSelector.tsx:72
|
||||||
msgid "Unable to update labels"
|
msgid "Unable to update labels"
|
||||||
msgstr "Unable to update labels"
|
msgstr "Unable to update labels"
|
||||||
|
|
||||||
#: src/views/board/index.tsx:173
|
#: src/views/board/index.tsx:169
|
||||||
#: src/views/card/components/ListSelector.tsx:51
|
#: src/views/card/components/ListSelector.tsx:52
|
||||||
msgid "Unable to update list"
|
msgid "Unable to update list"
|
||||||
msgstr "Unable to update list"
|
msgstr "Unable to update list"
|
||||||
|
|
||||||
#: src/views/card/components/MemberSelector.tsx:78
|
#: src/views/card/components/MemberSelector.tsx:79
|
||||||
msgid "Unable to update members"
|
msgid "Unable to update members"
|
||||||
msgstr "Unable to update members"
|
msgstr "Unable to update members"
|
||||||
|
|
||||||
#. placeholder {0}: truncate(memberName)
|
#. placeholder {0}: truncate(memberName)
|
||||||
#: src/views/card/components/ActivityList.tsx:121
|
#: src/views/card/components/ActivityList.tsx:156
|
||||||
msgid "unassigned <0>{0}</0> from the card"
|
msgid "unassigned <0>{0}</0> from the card"
|
||||||
msgstr "unassigned <0>{0}</0> from the card"
|
msgstr "unassigned <0>{0}</0> from the card"
|
||||||
|
|
||||||
@@ -2500,7 +2523,7 @@ msgstr "unassigned <0>{0}</0> from the card"
|
|||||||
#~ msgid "unassigned <0>{memberName}</0> from the card"
|
#~ msgid "unassigned <0>{memberName}</0> from the card"
|
||||||
#~ msgstr "unassigned <0>{memberName}</0> from the card"
|
#~ msgstr "unassigned <0>{memberName}</0> from the card"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:118
|
#: src/views/card/components/ActivityList.tsx:153
|
||||||
msgid "unassigned themselves from the card"
|
msgid "unassigned themselves from the card"
|
||||||
msgstr "unassigned themselves from the card"
|
msgstr "unassigned themselves from the card"
|
||||||
|
|
||||||
@@ -2559,24 +2582,24 @@ msgstr "Update"
|
|||||||
msgid "Update label"
|
msgid "Update label"
|
||||||
msgstr "Update label"
|
msgstr "Update label"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:70
|
#: src/views/card/components/ActivityList.tsx:111
|
||||||
msgid "updated a checklist item"
|
msgid "updated a checklist item"
|
||||||
msgstr "updated a checklist item"
|
msgstr "updated a checklist item"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:60
|
#: src/views/card/components/ActivityList.tsx:101
|
||||||
msgid "updated the description"
|
msgid "updated the description"
|
||||||
msgstr "updated the description"
|
msgstr "updated the description"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:75
|
#: src/views/card/components/ActivityList.tsx:116
|
||||||
msgid "updated the due date"
|
msgid "updated the due date"
|
||||||
msgstr "updated the due date"
|
msgstr "updated the due date"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:59
|
#: src/views/card/components/ActivityList.tsx:100
|
||||||
msgid "updated the title"
|
msgid "updated the title"
|
||||||
msgstr "updated the title"
|
msgstr "updated the title"
|
||||||
|
|
||||||
#. placeholder {0}: truncate(toTitle)
|
#. placeholder {0}: truncate(toTitle)
|
||||||
#: src/views/card/components/ActivityList.tsx:90
|
#: src/views/card/components/ActivityList.tsx:125
|
||||||
msgid "updated the title to <0>{0}</0>"
|
msgid "updated the title to <0>{0}</0>"
|
||||||
msgstr "updated the title to <0>{0}</0>"
|
msgstr "updated the title to <0>{0}</0>"
|
||||||
|
|
||||||
@@ -2602,8 +2625,8 @@ msgstr "Upgrade to Pro ($29/month)"
|
|||||||
#~ msgid "Upgrade to Team Plan"
|
#~ msgid "Upgrade to Team Plan"
|
||||||
#~ msgstr "Upgrade to Team Plan"
|
#~ msgstr "Upgrade to Team Plan"
|
||||||
|
|
||||||
#: src/views/card/components/AttachmentUpload.tsx:32
|
#: src/views/card/components/AttachmentUpload.tsx:33
|
||||||
#: src/views/card/components/AttachmentUpload.tsx:78
|
#: src/views/card/components/AttachmentUpload.tsx:79
|
||||||
msgid "Upload failed"
|
msgid "Upload failed"
|
||||||
msgstr "Upload failed"
|
msgstr "Upload failed"
|
||||||
|
|
||||||
@@ -2656,7 +2679,7 @@ msgstr "View and manage your billing and subscription."
|
|||||||
msgid "View docs"
|
msgid "View docs"
|
||||||
msgstr "View docs"
|
msgstr "View docs"
|
||||||
|
|
||||||
#: src/views/public/board/index.tsx:141
|
#: src/views/public/board/index.tsx:142
|
||||||
msgid "View only"
|
msgid "View only"
|
||||||
msgstr "View only"
|
msgstr "View only"
|
||||||
|
|
||||||
@@ -2664,7 +2687,7 @@ msgstr "View only"
|
|||||||
msgid "View our roadmap."
|
msgid "View our roadmap."
|
||||||
msgstr "View our roadmap."
|
msgstr "View our roadmap."
|
||||||
|
|
||||||
#: src/views/public/board/index.tsx:171
|
#: src/views/public/board/index.tsx:172
|
||||||
msgid "View workspace"
|
msgid "View workspace"
|
||||||
msgstr "View workspace"
|
msgstr "View workspace"
|
||||||
|
|
||||||
@@ -2717,10 +2740,10 @@ msgid "Why make an open source Trello?"
|
|||||||
msgstr "Why make an open source Trello?"
|
msgstr "Why make an open source Trello?"
|
||||||
|
|
||||||
#: src/components/SettingsLayout.tsx:39
|
#: src/components/SettingsLayout.tsx:39
|
||||||
#: src/views/board/index.tsx:386
|
#: src/views/board/index.tsx:382
|
||||||
#: src/views/boards/index.tsx:33
|
#: src/views/boards/index.tsx:33
|
||||||
#: src/views/members/index.tsx:173
|
#: src/views/members/index.tsx:173
|
||||||
#: src/views/public/board/index.tsx:113
|
#: src/views/public/board/index.tsx:114
|
||||||
#: src/views/public/boards/index.tsx:66
|
#: src/views/public/boards/index.tsx:66
|
||||||
msgid "Workspace"
|
msgid "Workspace"
|
||||||
msgstr "Workspace"
|
msgstr "Workspace"
|
||||||
@@ -2858,7 +2881,7 @@ msgstr "Your boards have been imported."
|
|||||||
msgid "Your display name has been updated."
|
msgid "Your display name has been updated."
|
||||||
msgstr "Your display name has been updated."
|
msgstr "Your display name has been updated."
|
||||||
|
|
||||||
#: src/views/card/components/AttachmentUpload.tsx:26
|
#: src/views/card/components/AttachmentUpload.tsx:27
|
||||||
msgid "Your file has been uploaded successfully."
|
msgid "Your file has been uploaded successfully."
|
||||||
msgstr "Your file has been uploaded successfully."
|
msgstr "Your file has been uploaded successfully."
|
||||||
|
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ msgstr ""
|
|||||||
"Language-Team: \n"
|
"Language-Team: \n"
|
||||||
"Plural-Forms: \n"
|
"Plural-Forms: \n"
|
||||||
|
|
||||||
#: src/views/card/components/Comment.tsx:123
|
#: src/views/card/components/Comment.tsx:124
|
||||||
msgid " (edited)"
|
msgid " (edited)"
|
||||||
msgstr " (editado)"
|
msgstr " (editado)"
|
||||||
|
|
||||||
@@ -41,7 +41,7 @@ msgid "{0} labels"
|
|||||||
msgstr "{0} etiquetas"
|
msgstr "{0} etiquetas"
|
||||||
|
|
||||||
#. placeholder {0}: isTemplate ? "Template" : "Board"
|
#. placeholder {0}: isTemplate ? "Template" : "Board"
|
||||||
#: src/views/board/index.tsx:412
|
#: src/views/board/index.tsx:408
|
||||||
msgid "{0} not found"
|
msgid "{0} not found"
|
||||||
msgstr "{0} no encontrado"
|
msgstr "{0} no encontrado"
|
||||||
|
|
||||||
@@ -100,12 +100,12 @@ msgstr "Registros de actividad"
|
|||||||
msgid "Add a card"
|
msgid "Add a card"
|
||||||
msgstr "Añadir una tarjeta"
|
msgstr "Añadir una tarjeta"
|
||||||
|
|
||||||
#: src/views/card/components/Comment.tsx:146
|
#: src/views/card/components/Comment.tsx:147
|
||||||
#: src/views/card/components/NewCommentForm.tsx:57
|
#: src/views/card/components/NewCommentForm.tsx:55
|
||||||
msgid "Add a comment..."
|
msgid "Add a comment..."
|
||||||
msgstr "Añadir un comentario..."
|
msgstr "Añadir un comentario..."
|
||||||
|
|
||||||
#: src/views/card/components/NewChecklistItemForm.tsx:140
|
#: src/views/card/components/NewChecklistItemForm.tsx:141
|
||||||
msgid "Add an item..."
|
msgid "Add an item..."
|
||||||
msgstr "Añadir un elemento..."
|
msgstr "Añadir un elemento..."
|
||||||
|
|
||||||
@@ -117,48 +117,53 @@ msgstr "Añadir lista de verificación"
|
|||||||
msgid "Add description... (type '/' to open commands or '@' to mention)"
|
msgid "Add description... (type '/' to open commands or '@' to mention)"
|
||||||
msgstr "Añadir descripción... (escribe '/' para abrir comandos o '@' para mencionar)"
|
msgstr "Añadir descripción... (escribe '/' para abrir comandos o '@' para mencionar)"
|
||||||
|
|
||||||
#: src/views/card/components/ChecklistItemRow.tsx:172
|
#: src/views/card/components/ChecklistItemRow.tsx:195
|
||||||
msgid "Add details..."
|
msgid "Add details..."
|
||||||
msgstr "Añadir detalles..."
|
msgstr "Añadir detalles..."
|
||||||
|
|
||||||
#: src/views/card/components/LabelSelector.tsx:109
|
#: src/views/card/components/LabelSelector.tsx:110
|
||||||
#: src/views/card/components/LabelSelector.tsx:114
|
#: src/views/card/components/LabelSelector.tsx:115
|
||||||
msgid "Add label"
|
msgid "Add label"
|
||||||
msgstr "Añadir etiqueta"
|
msgstr "Añadir etiqueta"
|
||||||
|
|
||||||
#: src/views/card/components/MemberSelector.tsx:130
|
#: src/views/card/components/MemberSelector.tsx:131
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:257
|
#: src/views/members/components/InviteMemberForm.tsx:257
|
||||||
msgid "Add member"
|
msgid "Add member"
|
||||||
msgstr "Añadir miembro"
|
msgstr "Añadir miembro"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:66
|
#. placeholder {0}: mergedLabels.length
|
||||||
|
#: src/views/card/components/ActivityList.tsx:77
|
||||||
|
msgid "added {0} labels: <0>{labelList}</0>"
|
||||||
|
msgstr "añadió {0} etiquetas: <0>{labelList}</0>"
|
||||||
|
|
||||||
|
#: src/views/card/components/ActivityList.tsx:107
|
||||||
msgid "added a checklist"
|
msgid "added a checklist"
|
||||||
msgstr "añadió una lista de verificación"
|
msgstr "añadió una lista de verificación"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:69
|
#: src/views/card/components/ActivityList.tsx:110
|
||||||
msgid "added a checklist item"
|
msgid "added a checklist item"
|
||||||
msgstr "añadió un elemento a la lista de verificación"
|
msgstr "añadió un elemento a la lista de verificación"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:62
|
#: src/views/card/components/ActivityList.tsx:103
|
||||||
msgid "added a label to the card"
|
msgid "added a label to the card"
|
||||||
msgstr "añadió una etiqueta a la tarjeta"
|
msgstr "añadió una etiqueta a la tarjeta"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:64
|
#: src/views/card/components/ActivityList.tsx:105
|
||||||
msgid "added a member to the card"
|
msgid "added a member to the card"
|
||||||
msgstr "añadió un miembro a la tarjeta"
|
msgstr "añadió un miembro a la tarjeta"
|
||||||
|
|
||||||
#. placeholder {0}: truncate(toTitle)
|
#. placeholder {0}: truncate(toTitle)
|
||||||
#: src/views/card/components/ActivityList.tsx:146
|
#: src/views/card/components/ActivityList.tsx:181
|
||||||
msgid "added checklist <0>{0}</0>"
|
msgid "added checklist <0>{0}</0>"
|
||||||
msgstr "añadió la lista de verificación <0>{0}</0>"
|
msgstr "añadió la lista de verificación <0>{0}</0>"
|
||||||
|
|
||||||
#. placeholder {0}: truncate(toTitle)
|
#. placeholder {0}: truncate(toTitle)
|
||||||
#: src/views/card/components/ActivityList.tsx:170
|
#: src/views/card/components/ActivityList.tsx:205
|
||||||
msgid "added checklist item <0>{0}</0>"
|
msgid "added checklist item <0>{0}</0>"
|
||||||
msgstr "añadió el elemento <0>{0}</0> a la lista de verificación"
|
msgstr "añadió el elemento <0>{0}</0> a la lista de verificación"
|
||||||
|
|
||||||
#. placeholder {0}: truncate(label)
|
#. placeholder {0}: truncate(label)
|
||||||
#: src/views/card/components/ActivityList.tsx:130
|
#: src/views/card/components/ActivityList.tsx:165
|
||||||
msgid "added label <0>{0}</0>"
|
msgid "added label <0>{0}</0>"
|
||||||
msgstr "añadió la etiqueta <0>{0}</0>"
|
msgstr "añadió la etiqueta <0>{0}</0>"
|
||||||
|
|
||||||
@@ -249,11 +254,11 @@ msgstr "¿Estás seguro de que quieres eliminar este {0}?"
|
|||||||
msgid "Are you sure you want to delete this card?"
|
msgid "Are you sure you want to delete this card?"
|
||||||
msgstr "¿Estás seguro de que quieres eliminar esta tarjeta?"
|
msgstr "¿Estás seguro de que quieres eliminar esta tarjeta?"
|
||||||
|
|
||||||
#: src/views/card/components/DeleteChecklistConfirmation.tsx:55
|
#: src/views/card/components/DeleteChecklistConfirmation.tsx:56
|
||||||
msgid "Are you sure you want to delete this checklist?"
|
msgid "Are you sure you want to delete this checklist?"
|
||||||
msgstr "¿Estás seguro de que quieres eliminar esta lista de verificación?"
|
msgstr "¿Estás seguro de que quieres eliminar esta lista de verificación?"
|
||||||
|
|
||||||
#: src/views/card/components/DeleteCommentConfirmation.tsx:65
|
#: src/views/card/components/DeleteCommentConfirmation.tsx:66
|
||||||
msgid "Are you sure you want to delete this comment?"
|
msgid "Are you sure you want to delete this comment?"
|
||||||
msgstr "¿Estás seguro de que quieres eliminar este comentario?"
|
msgstr "¿Estás seguro de que quieres eliminar este comentario?"
|
||||||
|
|
||||||
@@ -266,7 +271,7 @@ msgid "Are you sure you want to delete your account?"
|
|||||||
msgstr "¿Estás seguro de que quieres eliminar tu cuenta?"
|
msgstr "¿Estás seguro de que quieres eliminar tu cuenta?"
|
||||||
|
|
||||||
#. placeholder {0}: truncate(memberName)
|
#. placeholder {0}: truncate(memberName)
|
||||||
#: src/views/card/components/ActivityList.tsx:110
|
#: src/views/card/components/ActivityList.tsx:145
|
||||||
msgid "assigned <0>{0}</0> to the card"
|
msgid "assigned <0>{0}</0> to the card"
|
||||||
msgstr "asignó <0>{0}</0> a la tarjeta"
|
msgstr "asignó <0>{0}</0> a la tarjeta"
|
||||||
|
|
||||||
@@ -274,7 +279,7 @@ msgstr "asignó <0>{0}</0> a la tarjeta"
|
|||||||
msgid "Assignees"
|
msgid "Assignees"
|
||||||
msgstr "Asignados"
|
msgstr "Asignados"
|
||||||
|
|
||||||
#: src/views/card/components/AttachmentUpload.tsx:25
|
#: src/views/card/components/AttachmentUpload.tsx:26
|
||||||
msgid "Attachment uploaded"
|
msgid "Attachment uploaded"
|
||||||
msgstr "Archivo adjunto subido"
|
msgstr "Archivo adjunto subido"
|
||||||
|
|
||||||
@@ -312,9 +317,9 @@ msgstr "Portal de facturación"
|
|||||||
msgid "Blog Post"
|
msgid "Blog Post"
|
||||||
msgstr "Entrada de blog"
|
msgstr "Entrada de blog"
|
||||||
|
|
||||||
#: src/views/board/index.tsx:386
|
#: src/views/board/index.tsx:382
|
||||||
#: src/views/card/index.tsx:272
|
#: src/views/card/index.tsx:272
|
||||||
#: src/views/public/board/index.tsx:113
|
#: src/views/public/board/index.tsx:114
|
||||||
msgid "Board"
|
msgid "Board"
|
||||||
msgstr "Tablero"
|
msgstr "Tablero"
|
||||||
|
|
||||||
@@ -331,7 +336,7 @@ msgstr "El nombre del tablero no puede exceder los 100 caracteres"
|
|||||||
msgid "Board name is required"
|
msgid "Board name is required"
|
||||||
msgstr "El nombre del tablero es obligatorio"
|
msgstr "El nombre del tablero es obligatorio"
|
||||||
|
|
||||||
#: src/views/public/board/index.tsx:165
|
#: src/views/public/board/index.tsx:166
|
||||||
msgid "Board not found"
|
msgid "Board not found"
|
||||||
msgstr "Tablero no encontrado"
|
msgstr "Tablero no encontrado"
|
||||||
|
|
||||||
@@ -347,7 +352,7 @@ msgstr "La URL del tablero solo puede contener letras, números y guiones"
|
|||||||
msgid "Board URL cannot exceed 60 characters"
|
msgid "Board URL cannot exceed 60 characters"
|
||||||
msgstr "La URL del tablero no puede exceder los 60 caracteres"
|
msgstr "La URL del tablero no puede exceder los 60 caracteres"
|
||||||
|
|
||||||
#: src/views/public/board/index.tsx:79
|
#: src/views/public/board/index.tsx:80
|
||||||
msgid "Board URL copied to clipboard"
|
msgid "Board URL copied to clipboard"
|
||||||
msgstr "URL del tablero copiada al portapapeles"
|
msgstr "URL del tablero copiada al portapapeles"
|
||||||
|
|
||||||
@@ -382,10 +387,10 @@ msgstr "Informe de error"
|
|||||||
|
|
||||||
#: src/components/DeleteLabelConfirmation.tsx:49
|
#: src/components/DeleteLabelConfirmation.tsx:49
|
||||||
#: src/views/board/components/DeleteBoardConfirmation.tsx:44
|
#: src/views/board/components/DeleteBoardConfirmation.tsx:44
|
||||||
#: src/views/card/components/Comment.tsx:158
|
#: src/views/card/components/Comment.tsx:159
|
||||||
#: src/views/card/components/DeleteCardConfirmation.tsx:86
|
#: src/views/card/components/DeleteCardConfirmation.tsx:86
|
||||||
#: src/views/card/components/DeleteChecklistConfirmation.tsx:63
|
#: src/views/card/components/DeleteChecklistConfirmation.tsx:64
|
||||||
#: src/views/card/components/DeleteCommentConfirmation.tsx:76
|
#: src/views/card/components/DeleteCommentConfirmation.tsx:77
|
||||||
#: src/views/members/components/DeleteMemberConfirmation.tsx:55
|
#: src/views/members/components/DeleteMemberConfirmation.tsx:55
|
||||||
#: src/views/settings/components/Avatar.tsx:306
|
#: src/views/settings/components/Avatar.tsx:306
|
||||||
#: src/views/settings/components/ChangePasswordConfirmation.tsx:168
|
#: src/views/settings/components/ChangePasswordConfirmation.tsx:168
|
||||||
@@ -419,8 +424,8 @@ msgstr "Cambiar contraseña"
|
|||||||
msgid "Change your language preferences."
|
msgid "Change your language preferences."
|
||||||
msgstr "Cambia tus preferencias de idioma."
|
msgstr "Cambia tus preferencias de idioma."
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:220
|
#: src/views/card/components/ActivityList.tsx:255
|
||||||
#: src/views/card/components/ActivityList.tsx:234
|
#: src/views/card/components/ActivityList.tsx:269
|
||||||
msgid "changed the due date to <0>{formattedDate}</0>"
|
msgid "changed the due date to <0>{formattedDate}</0>"
|
||||||
msgstr "cambió la fecha de vencimiento a <0>{formattedDate}</0>"
|
msgstr "cambió la fecha de vencimiento a <0>{formattedDate}</0>"
|
||||||
|
|
||||||
@@ -433,7 +438,7 @@ msgstr "Descubre algunos de nuestros proyectos de código abierto favoritos."
|
|||||||
msgid "Check your inbox"
|
msgid "Check your inbox"
|
||||||
msgstr "Revisa tu bandeja de entrada"
|
msgstr "Revisa tu bandeja de entrada"
|
||||||
|
|
||||||
#: src/views/card/components/NewChecklistForm.tsx:118
|
#: src/views/card/components/NewChecklistForm.tsx:119
|
||||||
msgid "Checklist name"
|
msgid "Checklist name"
|
||||||
msgstr "Nombre de la lista de verificación"
|
msgstr "Nombre de la lista de verificación"
|
||||||
|
|
||||||
@@ -494,12 +499,12 @@ msgstr "Completado"
|
|||||||
msgid "Complete control and ownership:"
|
msgid "Complete control and ownership:"
|
||||||
msgstr "Control y propiedad completos:"
|
msgstr "Control y propiedad completos:"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:71
|
#: src/views/card/components/ActivityList.tsx:112
|
||||||
msgid "completed a checklist item"
|
msgid "completed a checklist item"
|
||||||
msgstr "completó un elemento de la lista de verificación"
|
msgstr "completó un elemento de la lista de verificación"
|
||||||
|
|
||||||
#. placeholder {0}: truncate(toTitle)
|
#. placeholder {0}: truncate(toTitle)
|
||||||
#: src/views/card/components/ActivityList.tsx:187
|
#: src/views/card/components/ActivityList.tsx:222
|
||||||
msgid "completed checklist item <0>{0}</0>"
|
msgid "completed checklist item <0>{0}</0>"
|
||||||
msgstr "completó el elemento <0>{0}</0> de la lista de verificación"
|
msgstr "completó el elemento <0>{0}</0> de la lista de verificación"
|
||||||
|
|
||||||
@@ -573,7 +578,7 @@ msgstr "Crear clave API"
|
|||||||
msgid "Create card"
|
msgid "Create card"
|
||||||
msgstr "Crear tarjeta"
|
msgstr "Crear tarjeta"
|
||||||
|
|
||||||
#: src/views/card/components/NewChecklistForm.tsx:134
|
#: src/views/card/components/NewChecklistForm.tsx:135
|
||||||
msgid "Create checklist"
|
msgid "Create checklist"
|
||||||
msgstr "Crear lista de verificación"
|
msgstr "Crear lista de verificación"
|
||||||
|
|
||||||
@@ -600,12 +605,12 @@ msgid "Create new key"
|
|||||||
msgstr "Crear nueva clave"
|
msgstr "Crear nueva clave"
|
||||||
|
|
||||||
#: src/views/board/components/NewCardForm.tsx:414
|
#: src/views/board/components/NewCardForm.tsx:414
|
||||||
#: src/views/card/components/LabelSelector.tsx:97
|
#: src/views/card/components/LabelSelector.tsx:98
|
||||||
msgid "Create new label"
|
msgid "Create new label"
|
||||||
msgstr "Crear nueva etiqueta"
|
msgstr "Crear nueva etiqueta"
|
||||||
|
|
||||||
#: src/views/board/index.tsx:65
|
#: src/views/board/index.tsx:64
|
||||||
#: src/views/board/index.tsx:503
|
#: src/views/board/index.tsx:499
|
||||||
msgid "Create new list"
|
msgid "Create new list"
|
||||||
msgstr "Crear nueva lista"
|
msgstr "Crear nueva lista"
|
||||||
|
|
||||||
@@ -618,7 +623,7 @@ msgstr "Crear plantilla"
|
|||||||
msgid "Create workspace"
|
msgid "Create workspace"
|
||||||
msgstr "Crear espacio de trabajo"
|
msgstr "Crear espacio de trabajo"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:58
|
#: src/views/card/components/ActivityList.tsx:99
|
||||||
msgid "created the card"
|
msgid "created the card"
|
||||||
msgstr "creó la tarjeta"
|
msgstr "creó la tarjeta"
|
||||||
|
|
||||||
@@ -676,8 +681,8 @@ msgstr "Desactivar enlace de invitación"
|
|||||||
#: src/components/LabelForm.tsx:228
|
#: src/components/LabelForm.tsx:228
|
||||||
#: src/views/board/components/DeleteBoardConfirmation.tsx:47
|
#: src/views/board/components/DeleteBoardConfirmation.tsx:47
|
||||||
#: src/views/card/components/DeleteCardConfirmation.tsx:92
|
#: src/views/card/components/DeleteCardConfirmation.tsx:92
|
||||||
#: src/views/card/components/DeleteChecklistConfirmation.tsx:66
|
#: src/views/card/components/DeleteChecklistConfirmation.tsx:67
|
||||||
#: src/views/card/components/DeleteCommentConfirmation.tsx:82
|
#: src/views/card/components/DeleteCommentConfirmation.tsx:83
|
||||||
msgid "Delete"
|
msgid "Delete"
|
||||||
msgstr "Eliminar"
|
msgstr "Eliminar"
|
||||||
|
|
||||||
@@ -695,7 +700,7 @@ msgstr "Eliminar tablero"
|
|||||||
msgid "Delete card"
|
msgid "Delete card"
|
||||||
msgstr "Eliminar tarjeta"
|
msgstr "Eliminar tarjeta"
|
||||||
|
|
||||||
#: src/views/card/components/Comment.tsx:91
|
#: src/views/card/components/Comment.tsx:92
|
||||||
msgid "Delete comment"
|
msgid "Delete comment"
|
||||||
msgstr "Eliminar comentario"
|
msgstr "Eliminar comentario"
|
||||||
|
|
||||||
@@ -713,21 +718,21 @@ msgstr "Eliminar plantilla"
|
|||||||
msgid "Delete workspace"
|
msgid "Delete workspace"
|
||||||
msgstr "Eliminar espacio de trabajo"
|
msgstr "Eliminar espacio de trabajo"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:68
|
#: src/views/card/components/ActivityList.tsx:109
|
||||||
msgid "deleted a checklist"
|
msgid "deleted a checklist"
|
||||||
msgstr "eliminó una lista de verificación"
|
msgstr "eliminó una lista de verificación"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:73
|
#: src/views/card/components/ActivityList.tsx:114
|
||||||
msgid "deleted a checklist item"
|
msgid "deleted a checklist item"
|
||||||
msgstr "eliminó un elemento de la lista de verificación"
|
msgstr "eliminó un elemento de la lista de verificación"
|
||||||
|
|
||||||
#. placeholder {0}: truncate(fromTitle)
|
#. placeholder {0}: truncate(fromTitle)
|
||||||
#: src/views/card/components/ActivityList.tsx:162
|
#: src/views/card/components/ActivityList.tsx:197
|
||||||
msgid "deleted checklist <0>{0}</0>"
|
msgid "deleted checklist <0>{0}</0>"
|
||||||
msgstr "eliminó la lista de verificación <0>{0}</0>"
|
msgstr "eliminó la lista de verificación <0>{0}</0>"
|
||||||
|
|
||||||
#. placeholder {0}: truncate(fromTitle)
|
#. placeholder {0}: truncate(fromTitle)
|
||||||
#: src/views/card/components/ActivityList.tsx:205
|
#: src/views/card/components/ActivityList.tsx:240
|
||||||
msgid "deleted checklist item <0>{0}</0>"
|
msgid "deleted checklist item <0>{0}</0>"
|
||||||
msgstr "eliminó el elemento <0>{0}</0> de la lista de verificación"
|
msgstr "eliminó el elemento <0>{0}</0> de la lista de verificación"
|
||||||
|
|
||||||
@@ -793,13 +798,13 @@ msgstr "¿No tienes una cuenta? <0><1>Regístrate</1></0>"
|
|||||||
msgid "Done"
|
msgid "Done"
|
||||||
msgstr "Terminado"
|
msgstr "Terminado"
|
||||||
|
|
||||||
#: src/views/card/components/AttachmentThumbnails.tsx:141
|
#: src/views/card/components/AttachmentThumbnails.tsx:142
|
||||||
msgid "Download failed"
|
msgid "Download failed"
|
||||||
msgstr "Error en la descarga"
|
msgstr "Error en la descarga"
|
||||||
|
|
||||||
#: src/views/board/components/Filters.tsx:171
|
#: src/views/board/components/Filters.tsx:171
|
||||||
#: src/views/board/components/NewCardForm.tsx:469
|
#: src/views/board/components/NewCardForm.tsx:469
|
||||||
#: src/views/card/index.tsx:138
|
#: src/views/card/index.tsx:139
|
||||||
msgid "Due date"
|
msgid "Due date"
|
||||||
msgstr "Fecha de vencimiento"
|
msgstr "Fecha de vencimiento"
|
||||||
|
|
||||||
@@ -824,7 +829,7 @@ msgstr "Vence mañana"
|
|||||||
msgid "Edit board URL"
|
msgid "Edit board URL"
|
||||||
msgstr "Editar URL del tablero"
|
msgstr "Editar URL del tablero"
|
||||||
|
|
||||||
#: src/views/card/components/Comment.tsx:82
|
#: src/views/card/components/Comment.tsx:83
|
||||||
msgid "Edit comment"
|
msgid "Edit comment"
|
||||||
msgstr "Editar comentario"
|
msgstr "Editar comentario"
|
||||||
|
|
||||||
@@ -981,8 +986,8 @@ msgstr "Error al crear el tablero"
|
|||||||
msgid "Failed to login with {0}. Please try again."
|
msgid "Failed to login with {0}. Please try again."
|
||||||
msgstr "Error al iniciar sesión con {0}. Por favor, inténtalo de nuevo."
|
msgstr "Error al iniciar sesión con {0}. Por favor, inténtalo de nuevo."
|
||||||
|
|
||||||
#: src/views/card/components/AttachmentUpload.tsx:33
|
#: src/views/card/components/AttachmentUpload.tsx:34
|
||||||
#: src/views/card/components/AttachmentUpload.tsx:79
|
#: src/views/card/components/AttachmentUpload.tsx:80
|
||||||
msgid "Failed to upload attachment. Please try again."
|
msgid "Failed to upload attachment. Please try again."
|
||||||
msgstr "Error al subir el archivo adjunto. Por favor, inténtalo de nuevo."
|
msgstr "Error al subir el archivo adjunto. Por favor, inténtalo de nuevo."
|
||||||
|
|
||||||
@@ -1042,8 +1047,6 @@ msgid "For long-term sustainability, we recognise all good open source projects
|
|||||||
msgstr "Para la sostenibilidad a largo plazo, reconocemos que todos los buenos proyectos de código abierto necesitan una fuente de ingresos. La nuestra proviene de la oferta de nube de pago para espacios de trabajo con múltiples usuarios y para slugs de espacio de trabajo personalizados. No hay obligación de usarla, y puedes alojar el software en tu propia infraestructura sin costo alguno."
|
msgstr "Para la sostenibilidad a largo plazo, reconocemos que todos los buenos proyectos de código abierto necesitan una fuente de ingresos. La nuestra proviene de la oferta de nube de pago para espacios de trabajo con múltiples usuarios y para slugs de espacio de trabajo personalizados. No hay obligación de usarla, y puedes alojar el software en tu propia infraestructura sin costo alguno."
|
||||||
|
|
||||||
#: src/views/pricing/components/Pricing.tsx:32
|
#: src/views/pricing/components/Pricing.tsx:32
|
||||||
#: src/views/pricing/components/Pricing.tsx:32
|
|
||||||
#: src/views/pricing/components/PricingTiers.tsx:30
|
|
||||||
#: src/views/pricing/components/PricingTiers.tsx:30
|
#: src/views/pricing/components/PricingTiers.tsx:30
|
||||||
msgid "Free"
|
msgid "Free"
|
||||||
msgstr "Gratis"
|
msgstr "Gratis"
|
||||||
@@ -1089,7 +1092,7 @@ msgstr "Comenzar"
|
|||||||
msgid "Get started by creating a new {0}"
|
msgid "Get started by creating a new {0}"
|
||||||
msgstr "Comienza creando un nuevo {0}"
|
msgstr "Comienza creando un nuevo {0}"
|
||||||
|
|
||||||
#: src/views/board/index.tsx:495
|
#: src/views/board/index.tsx:491
|
||||||
msgid "Get started by creating a new list"
|
msgid "Get started by creating a new list"
|
||||||
msgstr "Comienza creando una nueva lista"
|
msgstr "Comienza creando una nueva lista"
|
||||||
|
|
||||||
@@ -1276,7 +1279,7 @@ msgstr "Enlaces de invitación"
|
|||||||
msgid "Invite links require a Team or Pro subscription. Please upgrade your workspace."
|
msgid "Invite links require a Team or Pro subscription. Please upgrade your workspace."
|
||||||
msgstr "Los enlaces de invitación requieren una suscripción de Equipo o Pro. Por favor, actualiza tu espacio de trabajo."
|
msgstr "Los enlaces de invitación requieren una suscripción de Equipo o Pro. Por favor, actualiza tu espacio de trabajo."
|
||||||
|
|
||||||
#: src/views/card/components/MemberSelector.tsx:111
|
#: src/views/card/components/MemberSelector.tsx:112
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:367
|
#: src/views/members/components/InviteMemberForm.tsx:367
|
||||||
msgid "Invite member"
|
msgid "Invite member"
|
||||||
msgstr "Invitar miembro"
|
msgstr "Invitar miembro"
|
||||||
@@ -1325,7 +1328,7 @@ msgstr "Atajos de teclado"
|
|||||||
|
|
||||||
#: src/views/board/components/Filters.tsx:155
|
#: src/views/board/components/Filters.tsx:155
|
||||||
#: src/views/board/components/NewCardForm.tsx:418
|
#: src/views/board/components/NewCardForm.tsx:418
|
||||||
#: src/views/card/index.tsx:120
|
#: src/views/card/index.tsx:121
|
||||||
msgid "Labels"
|
msgid "Labels"
|
||||||
msgstr "Etiquetas"
|
msgstr "Etiquetas"
|
||||||
|
|
||||||
@@ -1375,11 +1378,11 @@ msgstr "Licencia"
|
|||||||
msgid "Light"
|
msgid "Light"
|
||||||
msgstr "Claro"
|
msgstr "Claro"
|
||||||
|
|
||||||
#: src/views/public/board/index.tsx:77
|
#: src/views/public/board/index.tsx:78
|
||||||
msgid "Link copied"
|
msgid "Link copied"
|
||||||
msgstr "Enlace copiado"
|
msgstr "Enlace copiado"
|
||||||
|
|
||||||
#: src/views/card/index.tsx:112
|
#: src/views/card/index.tsx:113
|
||||||
msgid "List"
|
msgid "List"
|
||||||
msgstr "Lista"
|
msgstr "Lista"
|
||||||
|
|
||||||
@@ -1391,6 +1394,14 @@ msgstr "Nombre de la lista"
|
|||||||
msgid "Lists"
|
msgid "Lists"
|
||||||
msgstr "Listas"
|
msgstr "Listas"
|
||||||
|
|
||||||
|
#: src/views/card/components/ActivityList.tsx:530
|
||||||
|
msgid "Load more activities"
|
||||||
|
msgstr "Cargar más actividades"
|
||||||
|
|
||||||
|
#: src/views/card/components/ActivityList.tsx:530
|
||||||
|
msgid "Loading..."
|
||||||
|
msgstr "Cargando..."
|
||||||
|
|
||||||
#: src/views/auth/login/index.tsx:33
|
#: src/views/auth/login/index.tsx:33
|
||||||
msgid "Login | kan.bn"
|
msgid "Login | kan.bn"
|
||||||
msgstr "Iniciar sesión | kan.bn"
|
msgstr "Iniciar sesión | kan.bn"
|
||||||
@@ -1419,12 +1430,12 @@ msgstr "enlace mágico"
|
|||||||
msgid "Make template"
|
msgid "Make template"
|
||||||
msgstr "Crear plantilla"
|
msgstr "Crear plantilla"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:72
|
#: src/views/card/components/ActivityList.tsx:113
|
||||||
msgid "marked a checklist item as incomplete"
|
msgid "marked a checklist item as incomplete"
|
||||||
msgstr "marcó un elemento de la lista de verificación como incompleto"
|
msgstr "marcó un elemento de la lista de verificación como incompleto"
|
||||||
|
|
||||||
#. placeholder {0}: truncate(toTitle)
|
#. placeholder {0}: truncate(toTitle)
|
||||||
#: src/views/card/components/ActivityList.tsx:196
|
#: src/views/card/components/ActivityList.tsx:231
|
||||||
msgid "marked checklist item <0>{0}</0> as incomplete"
|
msgid "marked checklist item <0>{0}</0> as incomplete"
|
||||||
msgstr "marcó el elemento <0>{0}</0> de la lista de verificación como incompleto"
|
msgstr "marcó el elemento <0>{0}</0> de la lista de verificación como incompleto"
|
||||||
|
|
||||||
@@ -1435,7 +1446,7 @@ msgstr "Prioridad media"
|
|||||||
#: src/components/SideNavigation.tsx:121
|
#: src/components/SideNavigation.tsx:121
|
||||||
#: src/views/board/components/Filters.tsx:147
|
#: src/views/board/components/Filters.tsx:147
|
||||||
#: src/views/board/components/NewCardForm.tsx:376
|
#: src/views/board/components/NewCardForm.tsx:376
|
||||||
#: src/views/card/index.tsx:129
|
#: src/views/card/index.tsx:130
|
||||||
#: src/views/members/index.tsx:178
|
#: src/views/members/index.tsx:178
|
||||||
msgid "Members"
|
msgid "Members"
|
||||||
msgstr "Miembros"
|
msgstr "Miembros"
|
||||||
@@ -1456,11 +1467,11 @@ msgstr "facturación mensual"
|
|||||||
|
|
||||||
#. placeholder {0}: truncate(fromList)
|
#. placeholder {0}: truncate(fromList)
|
||||||
#. placeholder {1}: truncate(toList)
|
#. placeholder {1}: truncate(toList)
|
||||||
#: src/views/card/components/ActivityList.tsx:98
|
#: src/views/card/components/ActivityList.tsx:133
|
||||||
msgid "moved the card from <0>{0}</0> to<1>{1}</1>"
|
msgid "moved the card from <0>{0}</0> to<1>{1}</1>"
|
||||||
msgstr "movió la tarjeta de <0>{0}</0> a<1>{1}</1>"
|
msgstr "movió la tarjeta de <0>{0}</0> a<1>{1}</1>"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:61
|
#: src/views/card/components/ActivityList.tsx:102
|
||||||
msgid "moved the card to another list"
|
msgid "moved the card to another list"
|
||||||
msgstr "movió la tarjeta a otra lista"
|
msgstr "movió la tarjeta a otra lista"
|
||||||
|
|
||||||
@@ -1496,7 +1507,7 @@ msgstr "Nueva clave API"
|
|||||||
msgid "New card"
|
msgid "New card"
|
||||||
msgstr "Nueva tarjeta"
|
msgstr "Nueva tarjeta"
|
||||||
|
|
||||||
#: src/views/card/components/NewChecklistForm.tsx:102
|
#: src/views/card/components/NewChecklistForm.tsx:103
|
||||||
msgid "New checklist"
|
msgid "New checklist"
|
||||||
msgstr "Nueva lista de verificación"
|
msgstr "Nueva lista de verificación"
|
||||||
|
|
||||||
@@ -1509,7 +1520,7 @@ msgid "New label"
|
|||||||
msgstr "Nueva etiqueta"
|
msgstr "Nueva etiqueta"
|
||||||
|
|
||||||
#: src/views/board/components/NewListForm.tsx:113
|
#: src/views/board/components/NewListForm.tsx:113
|
||||||
#: src/views/board/index.tsx:466
|
#: src/views/board/index.tsx:462
|
||||||
msgid "New list"
|
msgid "New list"
|
||||||
msgstr "Nueva lista"
|
msgstr "Nueva lista"
|
||||||
|
|
||||||
@@ -1562,7 +1573,7 @@ msgstr "No se requiere tarjeta de crédito"
|
|||||||
msgid "No dates"
|
msgid "No dates"
|
||||||
msgstr "Sin fechas"
|
msgstr "Sin fechas"
|
||||||
|
|
||||||
#: src/views/card/components/AttachmentThumbnails.tsx:142
|
#: src/views/card/components/AttachmentThumbnails.tsx:143
|
||||||
msgid "No download URL available for this attachment."
|
msgid "No download URL available for this attachment."
|
||||||
msgstr "No hay URL de descarga disponible para este archivo adjunto."
|
msgstr "No hay URL de descarga disponible para este archivo adjunto."
|
||||||
|
|
||||||
@@ -1570,7 +1581,7 @@ msgstr "No hay URL de descarga disponible para este archivo adjunto."
|
|||||||
msgid "No keyboard shortcuts registered."
|
msgid "No keyboard shortcuts registered."
|
||||||
msgstr "No hay atajos de teclado registrados."
|
msgstr "No hay atajos de teclado registrados."
|
||||||
|
|
||||||
#: src/views/board/index.tsx:492
|
#: src/views/board/index.tsx:488
|
||||||
msgid "No lists"
|
msgid "No lists"
|
||||||
msgstr "Sin listas"
|
msgstr "Sin listas"
|
||||||
|
|
||||||
@@ -1721,24 +1732,25 @@ msgstr "Por favor selecciona un archivo para subir."
|
|||||||
#: src/views/board/components/NewTemplateForm.tsx:77
|
#: src/views/board/components/NewTemplateForm.tsx:77
|
||||||
#: src/views/board/components/UpdateBoardSlugForm.tsx:73
|
#: src/views/board/components/UpdateBoardSlugForm.tsx:73
|
||||||
#: src/views/board/components/VisibilityButton.tsx:54
|
#: src/views/board/components/VisibilityButton.tsx:54
|
||||||
#: src/views/board/index.tsx:174
|
#: src/views/board/index.tsx:170
|
||||||
#: src/views/board/index.tsx:230
|
#: src/views/board/index.tsx:226
|
||||||
#: src/views/boards/components/ImportBoardsForm.tsx:205
|
#: src/views/boards/components/ImportBoardsForm.tsx:205
|
||||||
#: src/views/card/components/AttachmentThumbnails.tsx:73
|
#: src/views/card/components/AttachmentThumbnails.tsx:74
|
||||||
#: src/views/card/components/ChecklistItemRow.tsx:60
|
#: src/views/card/components/ChecklistItemRow.tsx:67
|
||||||
#: src/views/card/components/ChecklistItemRow.tsx:88
|
#: src/views/card/components/ChecklistItemRow.tsx:95
|
||||||
#: src/views/card/components/ChecklistNameInput.tsx:46
|
#: src/views/card/components/ChecklistNameInput.tsx:47
|
||||||
#: src/views/card/components/Comment.tsx:64
|
#: src/views/card/components/Checklists.tsx:81
|
||||||
|
#: src/views/card/components/Comment.tsx:65
|
||||||
#: src/views/card/components/DeleteCardConfirmation.tsx:52
|
#: src/views/card/components/DeleteCardConfirmation.tsx:52
|
||||||
#: src/views/card/components/DeleteChecklistConfirmation.tsx:37
|
#: src/views/card/components/DeleteChecklistConfirmation.tsx:38
|
||||||
#: src/views/card/components/DeleteCommentConfirmation.tsx:45
|
#: src/views/card/components/DeleteCommentConfirmation.tsx:46
|
||||||
#: src/views/card/components/DueDateSelector.tsx:59
|
#: src/views/card/components/DueDateSelector.tsx:60
|
||||||
#: src/views/card/components/LabelSelector.tsx:72
|
#: src/views/card/components/LabelSelector.tsx:73
|
||||||
#: src/views/card/components/ListSelector.tsx:52
|
#: src/views/card/components/ListSelector.tsx:53
|
||||||
#: src/views/card/components/MemberSelector.tsx:79
|
#: src/views/card/components/MemberSelector.tsx:80
|
||||||
#: src/views/card/components/NewChecklistForm.tsx:70
|
#: src/views/card/components/NewChecklistForm.tsx:71
|
||||||
#: src/views/card/components/NewChecklistItemForm.tsx:89
|
#: src/views/card/components/NewChecklistItemForm.tsx:90
|
||||||
#: src/views/card/components/NewCommentForm.tsx:31
|
#: src/views/card/components/NewCommentForm.tsx:32
|
||||||
#: src/views/card/index.tsx:187
|
#: src/views/card/index.tsx:187
|
||||||
#: src/views/card/index.tsx:200
|
#: src/views/card/index.tsx:200
|
||||||
#: src/views/members/components/DeleteMemberConfirmation.tsx:28
|
#: src/views/members/components/DeleteMemberConfirmation.tsx:28
|
||||||
@@ -1840,35 +1852,40 @@ msgstr "Eliminar"
|
|||||||
msgid "Remove member"
|
msgid "Remove member"
|
||||||
msgstr "Eliminar miembro"
|
msgstr "Eliminar miembro"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:63
|
#. placeholder {0}: mergedLabels.length
|
||||||
|
#: src/views/card/components/ActivityList.tsx:91
|
||||||
|
msgid "removed {0} labels: <0>{labelList}</0>"
|
||||||
|
msgstr "eliminó {0} etiquetas: <0>{labelList}</0>"
|
||||||
|
|
||||||
|
#: src/views/card/components/ActivityList.tsx:104
|
||||||
msgid "removed a label from the card"
|
msgid "removed a label from the card"
|
||||||
msgstr "eliminó una etiqueta de la tarjeta"
|
msgstr "eliminó una etiqueta de la tarjeta"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:65
|
#: src/views/card/components/ActivityList.tsx:106
|
||||||
msgid "removed a member from the card"
|
msgid "removed a member from the card"
|
||||||
msgstr "eliminó un miembro de la tarjeta"
|
msgstr "eliminó un miembro de la tarjeta"
|
||||||
|
|
||||||
#. placeholder {0}: truncate(label)
|
#. placeholder {0}: truncate(label)
|
||||||
#: src/views/card/components/ActivityList.tsx:138
|
#: src/views/card/components/ActivityList.tsx:173
|
||||||
msgid "removed label <0>{0}</0>"
|
msgid "removed label <0>{0}</0>"
|
||||||
msgstr "eliminó la etiqueta <0>{0}</0>"
|
msgstr "eliminó la etiqueta <0>{0}</0>"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:76
|
#: src/views/card/components/ActivityList.tsx:117
|
||||||
#: src/views/card/components/ActivityList.tsx:241
|
#: src/views/card/components/ActivityList.tsx:276
|
||||||
msgid "removed the due date"
|
msgid "removed the due date"
|
||||||
msgstr "eliminó la fecha de vencimiento"
|
msgstr "eliminó la fecha de vencimiento"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:67
|
#: src/views/card/components/ActivityList.tsx:108
|
||||||
msgid "renamed a checklist"
|
msgid "renamed a checklist"
|
||||||
msgstr "renombró una lista de verificación"
|
msgstr "renombró una lista de verificación"
|
||||||
|
|
||||||
#. placeholder {0}: truncate(toTitle)
|
#. placeholder {0}: truncate(toTitle)
|
||||||
#: src/views/card/components/ActivityList.tsx:154
|
#: src/views/card/components/ActivityList.tsx:189
|
||||||
msgid "renamed checklist <0>{0}</0>"
|
msgid "renamed checklist <0>{0}</0>"
|
||||||
msgstr "renombró la lista de verificación <0>{0}</0>"
|
msgstr "renombró la lista de verificación <0>{0}</0>"
|
||||||
|
|
||||||
#. placeholder {0}: truncate(toTitle)
|
#. placeholder {0}: truncate(toTitle)
|
||||||
#: src/views/card/components/ActivityList.tsx:178
|
#: src/views/card/components/ActivityList.tsx:213
|
||||||
msgid "renamed checklist item to <0>{0}</0>"
|
msgid "renamed checklist item to <0>{0}</0>"
|
||||||
msgstr "renombró el elemento de la lista de verificación a <0>{0}</0>"
|
msgstr "renombró el elemento de la lista de verificación a <0>{0}</0>"
|
||||||
|
|
||||||
@@ -1907,7 +1924,7 @@ msgstr "Rol"
|
|||||||
msgid "Run on your own infrastructure"
|
msgid "Run on your own infrastructure"
|
||||||
msgstr "Ejecuta en tu propia infraestructura"
|
msgstr "Ejecuta en tu propia infraestructura"
|
||||||
|
|
||||||
#: src/views/card/components/Comment.tsx:165
|
#: src/views/card/components/Comment.tsx:166
|
||||||
#: src/views/settings/components/Avatar.tsx:309
|
#: src/views/settings/components/Avatar.tsx:309
|
||||||
msgid "Save"
|
msgid "Save"
|
||||||
msgstr "Guardar"
|
msgstr "Guardar"
|
||||||
@@ -1945,7 +1962,7 @@ msgstr "Autoalojamiento"
|
|||||||
msgid "Self host with Github"
|
msgid "Self host with Github"
|
||||||
msgstr "Autoalojamiento con Github"
|
msgstr "Autoalojamiento con Github"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:107
|
#: src/views/card/components/ActivityList.tsx:142
|
||||||
msgid "self-assigned the card"
|
msgid "self-assigned the card"
|
||||||
msgstr "se autoasignó la tarjeta"
|
msgstr "se autoasignó la tarjeta"
|
||||||
|
|
||||||
@@ -1961,11 +1978,11 @@ msgstr "Enviar comentarios"
|
|||||||
msgid "Senior"
|
msgid "Senior"
|
||||||
msgstr "Senior"
|
msgstr "Senior"
|
||||||
|
|
||||||
#: src/views/card/components/DueDateSelector.tsx:116
|
#: src/views/card/components/DueDateSelector.tsx:117
|
||||||
msgid "Set due date"
|
msgid "Set due date"
|
||||||
msgstr "Establecer fecha de vencimiento"
|
msgstr "Establecer fecha de vencimiento"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:74
|
#: src/views/card/components/ActivityList.tsx:115
|
||||||
msgid "set the due date"
|
msgid "set the due date"
|
||||||
msgstr "estableció la fecha de vencimiento"
|
msgstr "estableció la fecha de vencimiento"
|
||||||
|
|
||||||
@@ -2090,8 +2107,8 @@ msgstr "Plan de Equipo"
|
|||||||
msgid "Teams"
|
msgid "Teams"
|
||||||
msgstr "Equipos"
|
msgstr "Equipos"
|
||||||
|
|
||||||
#: src/views/board/index.tsx:386
|
#: src/views/board/index.tsx:382
|
||||||
#: src/views/board/index.tsx:421
|
#: src/views/board/index.tsx:417
|
||||||
msgid "Template"
|
msgid "Template"
|
||||||
msgstr "Plantilla"
|
msgstr "Plantilla"
|
||||||
|
|
||||||
@@ -2156,8 +2173,8 @@ msgstr "No podrán acceder a este espacio de trabajo."
|
|||||||
#: src/components/DeleteLabelConfirmation.tsx:44
|
#: src/components/DeleteLabelConfirmation.tsx:44
|
||||||
#: src/views/board/components/DeleteBoardConfirmation.tsx:39
|
#: src/views/board/components/DeleteBoardConfirmation.tsx:39
|
||||||
#: src/views/card/components/DeleteCardConfirmation.tsx:78
|
#: src/views/card/components/DeleteCardConfirmation.tsx:78
|
||||||
#: src/views/card/components/DeleteChecklistConfirmation.tsx:58
|
#: src/views/card/components/DeleteChecklistConfirmation.tsx:59
|
||||||
#: src/views/card/components/DeleteCommentConfirmation.tsx:68
|
#: src/views/card/components/DeleteCommentConfirmation.tsx:69
|
||||||
msgid "This action can't be undone."
|
msgid "This action can't be undone."
|
||||||
msgstr "Esta acción no se puede deshacer."
|
msgstr "Esta acción no se puede deshacer."
|
||||||
|
|
||||||
@@ -2165,7 +2182,7 @@ msgstr "Esta acción no se puede deshacer."
|
|||||||
msgid "This API key will only be shown once. Please save it in a secure location."
|
msgid "This API key will only be shown once. Please save it in a secure location."
|
||||||
msgstr "Esta clave API solo se mostrará una vez. Por favor, guárdala en un lugar seguro."
|
msgstr "Esta clave API solo se mostrará una vez. Por favor, guárdala en un lugar seguro."
|
||||||
|
|
||||||
#: src/views/public/board/index.tsx:168
|
#: src/views/public/board/index.tsx:169
|
||||||
msgid "This board is private or does not exist"
|
msgid "This board is private or does not exist"
|
||||||
msgstr "Este tablero es privado o no existe"
|
msgstr "Este tablero es privado o no existe"
|
||||||
|
|
||||||
@@ -2227,27 +2244,27 @@ msgstr "Importaciones de Trello"
|
|||||||
msgid "Triaging"
|
msgid "Triaging"
|
||||||
msgstr "Clasificación"
|
msgstr "Clasificación"
|
||||||
|
|
||||||
#: src/views/home/components/Logos.tsx:73
|
#: src/views/home/components/Logos.tsx:67
|
||||||
msgid "Trusted by fast-moving teams<0/>around the world"
|
msgid "Trusted by fast-moving teams<0/>around the world"
|
||||||
msgstr "Equipos ágiles de todo el mundo<0/>confían en nosotros"
|
msgstr "Equipos ágiles de todo el mundo<0/>confían en nosotros"
|
||||||
|
|
||||||
#: src/views/card/components/NewChecklistItemForm.tsx:88
|
#: src/views/card/components/NewChecklistItemForm.tsx:89
|
||||||
msgid "Unable to add checklist item"
|
msgid "Unable to add checklist item"
|
||||||
msgstr "No se puede añadir el elemento a la lista de verificación"
|
msgstr "No se puede añadir el elemento a la lista de verificación"
|
||||||
|
|
||||||
#: src/views/card/components/NewCommentForm.tsx:30
|
#: src/views/card/components/NewCommentForm.tsx:31
|
||||||
msgid "Unable to add comment"
|
msgid "Unable to add comment"
|
||||||
msgstr "No se puede añadir el comentario"
|
msgstr "No se puede añadir el comentario"
|
||||||
|
|
||||||
#: src/views/card/index.tsx:199
|
#: src/views/card/index.tsx:199
|
||||||
msgid "Unable to add label"
|
msgid "Unable to add label"
|
||||||
msgstr ""
|
msgstr "No se puede añadir etiqueta"
|
||||||
|
|
||||||
#: src/views/board/components/NewCardForm.tsx:181
|
#: src/views/board/components/NewCardForm.tsx:181
|
||||||
msgid "Unable to create card"
|
msgid "Unable to create card"
|
||||||
msgstr "No se puede crear la tarjeta"
|
msgstr "No se puede crear la tarjeta"
|
||||||
|
|
||||||
#: src/views/card/components/NewChecklistForm.tsx:69
|
#: src/views/card/components/NewChecklistForm.tsx:70
|
||||||
msgid "Unable to create checklist"
|
msgid "Unable to create checklist"
|
||||||
msgstr "No se puede crear la lista de verificación"
|
msgstr "No se puede crear la lista de verificación"
|
||||||
|
|
||||||
@@ -2264,7 +2281,7 @@ msgstr "No se puede crear la plantilla"
|
|||||||
msgid "Unable to create workspace"
|
msgid "Unable to create workspace"
|
||||||
msgstr "No se puede crear el espacio de trabajo"
|
msgstr "No se puede crear el espacio de trabajo"
|
||||||
|
|
||||||
#: src/views/card/components/AttachmentThumbnails.tsx:72
|
#: src/views/card/components/AttachmentThumbnails.tsx:73
|
||||||
msgid "Unable to delete attachment"
|
msgid "Unable to delete attachment"
|
||||||
msgstr "No se puede eliminar el archivo adjunto"
|
msgstr "No se puede eliminar el archivo adjunto"
|
||||||
|
|
||||||
@@ -2272,15 +2289,15 @@ msgstr "No se puede eliminar el archivo adjunto"
|
|||||||
msgid "Unable to delete card"
|
msgid "Unable to delete card"
|
||||||
msgstr "No se puede eliminar la tarjeta"
|
msgstr "No se puede eliminar la tarjeta"
|
||||||
|
|
||||||
#: src/views/card/components/DeleteChecklistConfirmation.tsx:36
|
#: src/views/card/components/DeleteChecklistConfirmation.tsx:37
|
||||||
msgid "Unable to delete checklist"
|
msgid "Unable to delete checklist"
|
||||||
msgstr "No se puede eliminar la lista de verificación"
|
msgstr "No se puede eliminar la lista de verificación"
|
||||||
|
|
||||||
#: src/views/card/components/ChecklistItemRow.tsx:87
|
#: src/views/card/components/ChecklistItemRow.tsx:94
|
||||||
msgid "Unable to delete checklist item"
|
msgid "Unable to delete checklist item"
|
||||||
msgstr "No se puede eliminar el elemento de la lista de verificación"
|
msgstr "No se puede eliminar el elemento de la lista de verificación"
|
||||||
|
|
||||||
#: src/views/card/components/DeleteCommentConfirmation.tsx:44
|
#: src/views/card/components/DeleteCommentConfirmation.tsx:45
|
||||||
msgid "Unable to delete comment"
|
msgid "Unable to delete comment"
|
||||||
msgstr "No se puede eliminar el comentario"
|
msgstr "No se puede eliminar el comentario"
|
||||||
|
|
||||||
@@ -2288,6 +2305,10 @@ msgstr "No se puede eliminar el comentario"
|
|||||||
msgid "Unable to remove member"
|
msgid "Unable to remove member"
|
||||||
msgstr "No se puede eliminar al miembro"
|
msgstr "No se puede eliminar al miembro"
|
||||||
|
|
||||||
|
#: src/views/card/components/Checklists.tsx:80
|
||||||
|
msgid "Unable to reorder checklist item"
|
||||||
|
msgstr "No se puede reordenar el elemento de la lista de verificación"
|
||||||
|
|
||||||
#: src/components/FeedbackModal.tsx:40
|
#: src/components/FeedbackModal.tsx:40
|
||||||
msgid "Unable to send feedback"
|
msgid "Unable to send feedback"
|
||||||
msgstr "No se pudieron enviar los comentarios"
|
msgstr "No se pudieron enviar los comentarios"
|
||||||
@@ -2300,46 +2321,46 @@ msgstr "No se puede actualizar la URL del tablero"
|
|||||||
msgid "Unable to update board visibility"
|
msgid "Unable to update board visibility"
|
||||||
msgstr "No se puede actualizar la visibilidad del tablero"
|
msgstr "No se puede actualizar la visibilidad del tablero"
|
||||||
|
|
||||||
#: src/views/board/index.tsx:229
|
#: src/views/board/index.tsx:225
|
||||||
#: src/views/card/index.tsx:186
|
#: src/views/card/index.tsx:186
|
||||||
msgid "Unable to update card"
|
msgid "Unable to update card"
|
||||||
msgstr "No se puede actualizar la tarjeta"
|
msgstr "No se puede actualizar la tarjeta"
|
||||||
|
|
||||||
#: src/views/card/components/ChecklistNameInput.tsx:45
|
#: src/views/card/components/ChecklistNameInput.tsx:46
|
||||||
msgid "Unable to update checklist"
|
msgid "Unable to update checklist"
|
||||||
msgstr "No se puede actualizar la lista de verificación"
|
msgstr "No se puede actualizar la lista de verificación"
|
||||||
|
|
||||||
#: src/views/card/components/ChecklistItemRow.tsx:59
|
#: src/views/card/components/ChecklistItemRow.tsx:66
|
||||||
msgid "Unable to update checklist item"
|
msgid "Unable to update checklist item"
|
||||||
msgstr "No se puede actualizar el elemento de la lista de verificación"
|
msgstr "No se puede actualizar el elemento de la lista de verificación"
|
||||||
|
|
||||||
#: src/views/card/components/Comment.tsx:63
|
#: src/views/card/components/Comment.tsx:64
|
||||||
msgid "Unable to update comment"
|
msgid "Unable to update comment"
|
||||||
msgstr "No se puede actualizar el comentario"
|
msgstr "No se puede actualizar el comentario"
|
||||||
|
|
||||||
#: src/views/card/components/DueDateSelector.tsx:58
|
#: src/views/card/components/DueDateSelector.tsx:59
|
||||||
msgid "Unable to update due date"
|
msgid "Unable to update due date"
|
||||||
msgstr "No se puede actualizar la fecha de vencimiento"
|
msgstr "No se puede actualizar la fecha de vencimiento"
|
||||||
|
|
||||||
#: src/views/card/components/LabelSelector.tsx:71
|
#: src/views/card/components/LabelSelector.tsx:72
|
||||||
msgid "Unable to update labels"
|
msgid "Unable to update labels"
|
||||||
msgstr "No se pueden actualizar las etiquetas"
|
msgstr "No se pueden actualizar las etiquetas"
|
||||||
|
|
||||||
#: src/views/board/index.tsx:173
|
#: src/views/board/index.tsx:169
|
||||||
#: src/views/card/components/ListSelector.tsx:51
|
#: src/views/card/components/ListSelector.tsx:52
|
||||||
msgid "Unable to update list"
|
msgid "Unable to update list"
|
||||||
msgstr "No se puede actualizar la lista"
|
msgstr "No se puede actualizar la lista"
|
||||||
|
|
||||||
#: src/views/card/components/MemberSelector.tsx:78
|
#: src/views/card/components/MemberSelector.tsx:79
|
||||||
msgid "Unable to update members"
|
msgid "Unable to update members"
|
||||||
msgstr "No se pueden actualizar los miembros"
|
msgstr "No se pueden actualizar los miembros"
|
||||||
|
|
||||||
#. placeholder {0}: truncate(memberName)
|
#. placeholder {0}: truncate(memberName)
|
||||||
#: src/views/card/components/ActivityList.tsx:121
|
#: src/views/card/components/ActivityList.tsx:156
|
||||||
msgid "unassigned <0>{0}</0> from the card"
|
msgid "unassigned <0>{0}</0> from the card"
|
||||||
msgstr "desasignó <0>{0}</0> de la tarjeta"
|
msgstr "desasignó <0>{0}</0> de la tarjeta"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:118
|
#: src/views/card/components/ActivityList.tsx:153
|
||||||
msgid "unassigned themselves from the card"
|
msgid "unassigned themselves from the card"
|
||||||
msgstr "se desasignó de la tarjeta"
|
msgstr "se desasignó de la tarjeta"
|
||||||
|
|
||||||
@@ -2398,24 +2419,24 @@ msgstr "Actualizar"
|
|||||||
msgid "Update label"
|
msgid "Update label"
|
||||||
msgstr "Actualizar etiqueta"
|
msgstr "Actualizar etiqueta"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:70
|
#: src/views/card/components/ActivityList.tsx:111
|
||||||
msgid "updated a checklist item"
|
msgid "updated a checklist item"
|
||||||
msgstr "actualizó un elemento de la lista de verificación"
|
msgstr "actualizó un elemento de la lista de verificación"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:60
|
#: src/views/card/components/ActivityList.tsx:101
|
||||||
msgid "updated the description"
|
msgid "updated the description"
|
||||||
msgstr "actualizó la descripción"
|
msgstr "actualizó la descripción"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:75
|
#: src/views/card/components/ActivityList.tsx:116
|
||||||
msgid "updated the due date"
|
msgid "updated the due date"
|
||||||
msgstr "actualizó la fecha de vencimiento"
|
msgstr "actualizó la fecha de vencimiento"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:59
|
#: src/views/card/components/ActivityList.tsx:100
|
||||||
msgid "updated the title"
|
msgid "updated the title"
|
||||||
msgstr "actualizó el título"
|
msgstr "actualizó el título"
|
||||||
|
|
||||||
#. placeholder {0}: truncate(toTitle)
|
#. placeholder {0}: truncate(toTitle)
|
||||||
#: src/views/card/components/ActivityList.tsx:90
|
#: src/views/card/components/ActivityList.tsx:125
|
||||||
msgid "updated the title to <0>{0}</0>"
|
msgid "updated the title to <0>{0}</0>"
|
||||||
msgstr "actualizó el título a <0>{0}</0>"
|
msgstr "actualizó el título a <0>{0}</0>"
|
||||||
|
|
||||||
@@ -2429,8 +2450,8 @@ msgstr "Actualizar a Pro"
|
|||||||
msgid "Upgrade to Pro ($29/month)"
|
msgid "Upgrade to Pro ($29/month)"
|
||||||
msgstr "Actualizar a Pro ($29/mes)"
|
msgstr "Actualizar a Pro ($29/mes)"
|
||||||
|
|
||||||
#: src/views/card/components/AttachmentUpload.tsx:32
|
#: src/views/card/components/AttachmentUpload.tsx:33
|
||||||
#: src/views/card/components/AttachmentUpload.tsx:78
|
#: src/views/card/components/AttachmentUpload.tsx:79
|
||||||
msgid "Upload failed"
|
msgid "Upload failed"
|
||||||
msgstr "Error al subir"
|
msgstr "Error al subir"
|
||||||
|
|
||||||
@@ -2483,7 +2504,7 @@ msgstr "Ver y gestionar tu facturación y suscripción."
|
|||||||
msgid "View docs"
|
msgid "View docs"
|
||||||
msgstr "Ver documentación"
|
msgstr "Ver documentación"
|
||||||
|
|
||||||
#: src/views/public/board/index.tsx:141
|
#: src/views/public/board/index.tsx:142
|
||||||
msgid "View only"
|
msgid "View only"
|
||||||
msgstr "Solo visualización"
|
msgstr "Solo visualización"
|
||||||
|
|
||||||
@@ -2491,7 +2512,7 @@ msgstr "Solo visualización"
|
|||||||
msgid "View our roadmap."
|
msgid "View our roadmap."
|
||||||
msgstr "Ver nuestra hoja de ruta."
|
msgstr "Ver nuestra hoja de ruta."
|
||||||
|
|
||||||
#: src/views/public/board/index.tsx:171
|
#: src/views/public/board/index.tsx:172
|
||||||
msgid "View workspace"
|
msgid "View workspace"
|
||||||
msgstr "Ver espacio de trabajo"
|
msgstr "Ver espacio de trabajo"
|
||||||
|
|
||||||
@@ -2536,10 +2557,10 @@ msgid "Why make an open source Trello?"
|
|||||||
msgstr "¿Por qué crear un Trello de código abierto?"
|
msgstr "¿Por qué crear un Trello de código abierto?"
|
||||||
|
|
||||||
#: src/components/SettingsLayout.tsx:39
|
#: src/components/SettingsLayout.tsx:39
|
||||||
#: src/views/board/index.tsx:386
|
#: src/views/board/index.tsx:382
|
||||||
#: src/views/boards/index.tsx:33
|
#: src/views/boards/index.tsx:33
|
||||||
#: src/views/members/index.tsx:173
|
#: src/views/members/index.tsx:173
|
||||||
#: src/views/public/board/index.tsx:113
|
#: src/views/public/board/index.tsx:114
|
||||||
#: src/views/public/boards/index.tsx:66
|
#: src/views/public/boards/index.tsx:66
|
||||||
msgid "Workspace"
|
msgid "Workspace"
|
||||||
msgstr "Espacio de trabajo"
|
msgstr "Espacio de trabajo"
|
||||||
@@ -2673,7 +2694,7 @@ msgstr "Tus tableros han sido importados."
|
|||||||
msgid "Your display name has been updated."
|
msgid "Your display name has been updated."
|
||||||
msgstr "Tu nombre de visualización ha sido actualizado."
|
msgstr "Tu nombre de visualización ha sido actualizado."
|
||||||
|
|
||||||
#: src/views/card/components/AttachmentUpload.tsx:26
|
#: src/views/card/components/AttachmentUpload.tsx:27
|
||||||
msgid "Your file has been uploaded successfully."
|
msgid "Your file has been uploaded successfully."
|
||||||
msgstr "Tu archivo se ha subido correctamente."
|
msgstr "Tu archivo se ha subido correctamente."
|
||||||
|
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ msgstr ""
|
|||||||
"Language-Team: \n"
|
"Language-Team: \n"
|
||||||
"Plural-Forms: \n"
|
"Plural-Forms: \n"
|
||||||
|
|
||||||
#: src/views/card/components/Comment.tsx:123
|
#: src/views/card/components/Comment.tsx:124
|
||||||
msgid " (edited)"
|
msgid " (edited)"
|
||||||
msgstr " (modifié)"
|
msgstr " (modifié)"
|
||||||
|
|
||||||
@@ -41,7 +41,7 @@ msgid "{0} labels"
|
|||||||
msgstr "{0} étiquettes"
|
msgstr "{0} étiquettes"
|
||||||
|
|
||||||
#. placeholder {0}: isTemplate ? "Template" : "Board"
|
#. placeholder {0}: isTemplate ? "Template" : "Board"
|
||||||
#: src/views/board/index.tsx:412
|
#: src/views/board/index.tsx:408
|
||||||
msgid "{0} not found"
|
msgid "{0} not found"
|
||||||
msgstr "{0} introuvable"
|
msgstr "{0} introuvable"
|
||||||
|
|
||||||
@@ -100,12 +100,12 @@ msgstr "Journaux d'activité"
|
|||||||
msgid "Add a card"
|
msgid "Add a card"
|
||||||
msgstr "Ajouter une carte"
|
msgstr "Ajouter une carte"
|
||||||
|
|
||||||
#: src/views/card/components/Comment.tsx:146
|
#: src/views/card/components/Comment.tsx:147
|
||||||
#: src/views/card/components/NewCommentForm.tsx:57
|
#: src/views/card/components/NewCommentForm.tsx:55
|
||||||
msgid "Add a comment..."
|
msgid "Add a comment..."
|
||||||
msgstr "Ajouter un commentaire..."
|
msgstr "Ajouter un commentaire..."
|
||||||
|
|
||||||
#: src/views/card/components/NewChecklistItemForm.tsx:140
|
#: src/views/card/components/NewChecklistItemForm.tsx:141
|
||||||
msgid "Add an item..."
|
msgid "Add an item..."
|
||||||
msgstr "Ajouter un élément..."
|
msgstr "Ajouter un élément..."
|
||||||
|
|
||||||
@@ -117,48 +117,53 @@ msgstr "Ajouter une checklist"
|
|||||||
msgid "Add description... (type '/' to open commands or '@' to mention)"
|
msgid "Add description... (type '/' to open commands or '@' to mention)"
|
||||||
msgstr "Ajouter une description... (tapez '/' pour ouvrir les commandes ou '@' pour mentionner)"
|
msgstr "Ajouter une description... (tapez '/' pour ouvrir les commandes ou '@' pour mentionner)"
|
||||||
|
|
||||||
#: src/views/card/components/ChecklistItemRow.tsx:172
|
#: src/views/card/components/ChecklistItemRow.tsx:195
|
||||||
msgid "Add details..."
|
msgid "Add details..."
|
||||||
msgstr "Ajouter des détails..."
|
msgstr "Ajouter des détails..."
|
||||||
|
|
||||||
#: src/views/card/components/LabelSelector.tsx:109
|
#: src/views/card/components/LabelSelector.tsx:110
|
||||||
#: src/views/card/components/LabelSelector.tsx:114
|
#: src/views/card/components/LabelSelector.tsx:115
|
||||||
msgid "Add label"
|
msgid "Add label"
|
||||||
msgstr "Ajouter une étiquette"
|
msgstr "Ajouter une étiquette"
|
||||||
|
|
||||||
#: src/views/card/components/MemberSelector.tsx:130
|
#: src/views/card/components/MemberSelector.tsx:131
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:257
|
#: src/views/members/components/InviteMemberForm.tsx:257
|
||||||
msgid "Add member"
|
msgid "Add member"
|
||||||
msgstr "Ajouter un membre"
|
msgstr "Ajouter un membre"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:66
|
#. placeholder {0}: mergedLabels.length
|
||||||
|
#: src/views/card/components/ActivityList.tsx:77
|
||||||
|
msgid "added {0} labels: <0>{labelList}</0>"
|
||||||
|
msgstr "a ajouté {0} étiquettes : <0>{labelList}</0>"
|
||||||
|
|
||||||
|
#: src/views/card/components/ActivityList.tsx:107
|
||||||
msgid "added a checklist"
|
msgid "added a checklist"
|
||||||
msgstr "a ajouté une checklist"
|
msgstr "a ajouté une checklist"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:69
|
#: src/views/card/components/ActivityList.tsx:110
|
||||||
msgid "added a checklist item"
|
msgid "added a checklist item"
|
||||||
msgstr "a ajouté un élément à la checklist"
|
msgstr "a ajouté un élément à la checklist"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:62
|
#: src/views/card/components/ActivityList.tsx:103
|
||||||
msgid "added a label to the card"
|
msgid "added a label to the card"
|
||||||
msgstr "a ajouté une étiquette à la carte"
|
msgstr "a ajouté une étiquette à la carte"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:64
|
#: src/views/card/components/ActivityList.tsx:105
|
||||||
msgid "added a member to the card"
|
msgid "added a member to the card"
|
||||||
msgstr "a ajouté un membre à la carte"
|
msgstr "a ajouté un membre à la carte"
|
||||||
|
|
||||||
#. placeholder {0}: truncate(toTitle)
|
#. placeholder {0}: truncate(toTitle)
|
||||||
#: src/views/card/components/ActivityList.tsx:146
|
#: src/views/card/components/ActivityList.tsx:181
|
||||||
msgid "added checklist <0>{0}</0>"
|
msgid "added checklist <0>{0}</0>"
|
||||||
msgstr "a ajouté la checklist <0>{0}</0>"
|
msgstr "a ajouté la checklist <0>{0}</0>"
|
||||||
|
|
||||||
#. placeholder {0}: truncate(toTitle)
|
#. placeholder {0}: truncate(toTitle)
|
||||||
#: src/views/card/components/ActivityList.tsx:170
|
#: src/views/card/components/ActivityList.tsx:205
|
||||||
msgid "added checklist item <0>{0}</0>"
|
msgid "added checklist item <0>{0}</0>"
|
||||||
msgstr "a ajouté l'élément <0>{0}</0> à la checklist"
|
msgstr "a ajouté l'élément <0>{0}</0> à la checklist"
|
||||||
|
|
||||||
#. placeholder {0}: truncate(label)
|
#. placeholder {0}: truncate(label)
|
||||||
#: src/views/card/components/ActivityList.tsx:130
|
#: src/views/card/components/ActivityList.tsx:165
|
||||||
msgid "added label <0>{0}</0>"
|
msgid "added label <0>{0}</0>"
|
||||||
msgstr "a ajouté l'étiquette <0>{0}</0>"
|
msgstr "a ajouté l'étiquette <0>{0}</0>"
|
||||||
|
|
||||||
@@ -249,11 +254,11 @@ msgstr "Êtes-vous sûr de vouloir supprimer ce {0} ?"
|
|||||||
msgid "Are you sure you want to delete this card?"
|
msgid "Are you sure you want to delete this card?"
|
||||||
msgstr "Êtes-vous sûr de vouloir supprimer cette carte ?"
|
msgstr "Êtes-vous sûr de vouloir supprimer cette carte ?"
|
||||||
|
|
||||||
#: src/views/card/components/DeleteChecklistConfirmation.tsx:55
|
#: src/views/card/components/DeleteChecklistConfirmation.tsx:56
|
||||||
msgid "Are you sure you want to delete this checklist?"
|
msgid "Are you sure you want to delete this checklist?"
|
||||||
msgstr "Êtes-vous sûr de vouloir supprimer cette checklist ?"
|
msgstr "Êtes-vous sûr de vouloir supprimer cette checklist ?"
|
||||||
|
|
||||||
#: src/views/card/components/DeleteCommentConfirmation.tsx:65
|
#: src/views/card/components/DeleteCommentConfirmation.tsx:66
|
||||||
msgid "Are you sure you want to delete this comment?"
|
msgid "Are you sure you want to delete this comment?"
|
||||||
msgstr "Êtes-vous sûr de vouloir supprimer ce commentaire ?"
|
msgstr "Êtes-vous sûr de vouloir supprimer ce commentaire ?"
|
||||||
|
|
||||||
@@ -266,7 +271,7 @@ msgid "Are you sure you want to delete your account?"
|
|||||||
msgstr "Êtes-vous sûr de vouloir supprimer votre compte ?"
|
msgstr "Êtes-vous sûr de vouloir supprimer votre compte ?"
|
||||||
|
|
||||||
#. placeholder {0}: truncate(memberName)
|
#. placeholder {0}: truncate(memberName)
|
||||||
#: src/views/card/components/ActivityList.tsx:110
|
#: src/views/card/components/ActivityList.tsx:145
|
||||||
msgid "assigned <0>{0}</0> to the card"
|
msgid "assigned <0>{0}</0> to the card"
|
||||||
msgstr "a assigné <0>{0}</0> à la carte"
|
msgstr "a assigné <0>{0}</0> à la carte"
|
||||||
|
|
||||||
@@ -274,7 +279,7 @@ msgstr "a assigné <0>{0}</0> à la carte"
|
|||||||
msgid "Assignees"
|
msgid "Assignees"
|
||||||
msgstr "Assignés"
|
msgstr "Assignés"
|
||||||
|
|
||||||
#: src/views/card/components/AttachmentUpload.tsx:25
|
#: src/views/card/components/AttachmentUpload.tsx:26
|
||||||
msgid "Attachment uploaded"
|
msgid "Attachment uploaded"
|
||||||
msgstr "Pièce jointe téléversée"
|
msgstr "Pièce jointe téléversée"
|
||||||
|
|
||||||
@@ -312,9 +317,9 @@ msgstr "Portail de facturation"
|
|||||||
msgid "Blog Post"
|
msgid "Blog Post"
|
||||||
msgstr "Article de blog"
|
msgstr "Article de blog"
|
||||||
|
|
||||||
#: src/views/board/index.tsx:386
|
#: src/views/board/index.tsx:382
|
||||||
#: src/views/card/index.tsx:272
|
#: src/views/card/index.tsx:272
|
||||||
#: src/views/public/board/index.tsx:113
|
#: src/views/public/board/index.tsx:114
|
||||||
msgid "Board"
|
msgid "Board"
|
||||||
msgstr "Tableau"
|
msgstr "Tableau"
|
||||||
|
|
||||||
@@ -331,7 +336,7 @@ msgstr "Le nom du tableau ne peut pas dépasser 100 caractères"
|
|||||||
msgid "Board name is required"
|
msgid "Board name is required"
|
||||||
msgstr "Le nom du tableau est requis"
|
msgstr "Le nom du tableau est requis"
|
||||||
|
|
||||||
#: src/views/public/board/index.tsx:165
|
#: src/views/public/board/index.tsx:166
|
||||||
msgid "Board not found"
|
msgid "Board not found"
|
||||||
msgstr "Tableau introuvable"
|
msgstr "Tableau introuvable"
|
||||||
|
|
||||||
@@ -347,7 +352,7 @@ msgstr "L'URL du tableau ne peut contenir que des lettres, des chiffres et des t
|
|||||||
msgid "Board URL cannot exceed 60 characters"
|
msgid "Board URL cannot exceed 60 characters"
|
||||||
msgstr "L'URL du tableau ne peut pas dépasser 60 caractères"
|
msgstr "L'URL du tableau ne peut pas dépasser 60 caractères"
|
||||||
|
|
||||||
#: src/views/public/board/index.tsx:79
|
#: src/views/public/board/index.tsx:80
|
||||||
msgid "Board URL copied to clipboard"
|
msgid "Board URL copied to clipboard"
|
||||||
msgstr "URL du tableau copiée dans le presse-papiers"
|
msgstr "URL du tableau copiée dans le presse-papiers"
|
||||||
|
|
||||||
@@ -382,10 +387,10 @@ msgstr "Rapport de bug"
|
|||||||
|
|
||||||
#: src/components/DeleteLabelConfirmation.tsx:49
|
#: src/components/DeleteLabelConfirmation.tsx:49
|
||||||
#: src/views/board/components/DeleteBoardConfirmation.tsx:44
|
#: src/views/board/components/DeleteBoardConfirmation.tsx:44
|
||||||
#: src/views/card/components/Comment.tsx:158
|
#: src/views/card/components/Comment.tsx:159
|
||||||
#: src/views/card/components/DeleteCardConfirmation.tsx:86
|
#: src/views/card/components/DeleteCardConfirmation.tsx:86
|
||||||
#: src/views/card/components/DeleteChecklistConfirmation.tsx:63
|
#: src/views/card/components/DeleteChecklistConfirmation.tsx:64
|
||||||
#: src/views/card/components/DeleteCommentConfirmation.tsx:76
|
#: src/views/card/components/DeleteCommentConfirmation.tsx:77
|
||||||
#: src/views/members/components/DeleteMemberConfirmation.tsx:55
|
#: src/views/members/components/DeleteMemberConfirmation.tsx:55
|
||||||
#: src/views/settings/components/Avatar.tsx:306
|
#: src/views/settings/components/Avatar.tsx:306
|
||||||
#: src/views/settings/components/ChangePasswordConfirmation.tsx:168
|
#: src/views/settings/components/ChangePasswordConfirmation.tsx:168
|
||||||
@@ -419,8 +424,8 @@ msgstr "Modifier le mot de passe"
|
|||||||
msgid "Change your language preferences."
|
msgid "Change your language preferences."
|
||||||
msgstr "Modifiez vos préférences linguistiques."
|
msgstr "Modifiez vos préférences linguistiques."
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:220
|
#: src/views/card/components/ActivityList.tsx:255
|
||||||
#: src/views/card/components/ActivityList.tsx:234
|
#: src/views/card/components/ActivityList.tsx:269
|
||||||
msgid "changed the due date to <0>{formattedDate}</0>"
|
msgid "changed the due date to <0>{formattedDate}</0>"
|
||||||
msgstr "a modifié la date d'échéance pour <0>{formattedDate}</0>"
|
msgstr "a modifié la date d'échéance pour <0>{formattedDate}</0>"
|
||||||
|
|
||||||
@@ -433,7 +438,7 @@ msgstr "Découvrez certains de nos projets open source préférés."
|
|||||||
msgid "Check your inbox"
|
msgid "Check your inbox"
|
||||||
msgstr "Vérifiez votre boîte de réception"
|
msgstr "Vérifiez votre boîte de réception"
|
||||||
|
|
||||||
#: src/views/card/components/NewChecklistForm.tsx:118
|
#: src/views/card/components/NewChecklistForm.tsx:119
|
||||||
msgid "Checklist name"
|
msgid "Checklist name"
|
||||||
msgstr "Nom de la checklist"
|
msgstr "Nom de la checklist"
|
||||||
|
|
||||||
@@ -494,12 +499,12 @@ msgstr "Terminé"
|
|||||||
msgid "Complete control and ownership:"
|
msgid "Complete control and ownership:"
|
||||||
msgstr "Contrôle et propriété complets :"
|
msgstr "Contrôle et propriété complets :"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:71
|
#: src/views/card/components/ActivityList.tsx:112
|
||||||
msgid "completed a checklist item"
|
msgid "completed a checklist item"
|
||||||
msgstr "a terminé un élément de la checklist"
|
msgstr "a terminé un élément de la checklist"
|
||||||
|
|
||||||
#. placeholder {0}: truncate(toTitle)
|
#. placeholder {0}: truncate(toTitle)
|
||||||
#: src/views/card/components/ActivityList.tsx:187
|
#: src/views/card/components/ActivityList.tsx:222
|
||||||
msgid "completed checklist item <0>{0}</0>"
|
msgid "completed checklist item <0>{0}</0>"
|
||||||
msgstr "a terminé l'élément <0>{0}</0> de la checklist"
|
msgstr "a terminé l'élément <0>{0}</0> de la checklist"
|
||||||
|
|
||||||
@@ -573,7 +578,7 @@ msgstr "Créer une clé API"
|
|||||||
msgid "Create card"
|
msgid "Create card"
|
||||||
msgstr "Créer une carte"
|
msgstr "Créer une carte"
|
||||||
|
|
||||||
#: src/views/card/components/NewChecklistForm.tsx:134
|
#: src/views/card/components/NewChecklistForm.tsx:135
|
||||||
msgid "Create checklist"
|
msgid "Create checklist"
|
||||||
msgstr "Créer une checklist"
|
msgstr "Créer une checklist"
|
||||||
|
|
||||||
@@ -600,12 +605,12 @@ msgid "Create new key"
|
|||||||
msgstr "Créer une nouvelle clé"
|
msgstr "Créer une nouvelle clé"
|
||||||
|
|
||||||
#: src/views/board/components/NewCardForm.tsx:414
|
#: src/views/board/components/NewCardForm.tsx:414
|
||||||
#: src/views/card/components/LabelSelector.tsx:97
|
#: src/views/card/components/LabelSelector.tsx:98
|
||||||
msgid "Create new label"
|
msgid "Create new label"
|
||||||
msgstr "Créer une nouvelle étiquette"
|
msgstr "Créer une nouvelle étiquette"
|
||||||
|
|
||||||
#: src/views/board/index.tsx:65
|
#: src/views/board/index.tsx:64
|
||||||
#: src/views/board/index.tsx:503
|
#: src/views/board/index.tsx:499
|
||||||
msgid "Create new list"
|
msgid "Create new list"
|
||||||
msgstr "Créer une nouvelle liste"
|
msgstr "Créer une nouvelle liste"
|
||||||
|
|
||||||
@@ -618,7 +623,7 @@ msgstr "Créer un modèle"
|
|||||||
msgid "Create workspace"
|
msgid "Create workspace"
|
||||||
msgstr "Créer un espace de travail"
|
msgstr "Créer un espace de travail"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:58
|
#: src/views/card/components/ActivityList.tsx:99
|
||||||
msgid "created the card"
|
msgid "created the card"
|
||||||
msgstr "a créé la carte"
|
msgstr "a créé la carte"
|
||||||
|
|
||||||
@@ -676,8 +681,8 @@ msgstr "Désactiver le lien d'invitation"
|
|||||||
#: src/components/LabelForm.tsx:228
|
#: src/components/LabelForm.tsx:228
|
||||||
#: src/views/board/components/DeleteBoardConfirmation.tsx:47
|
#: src/views/board/components/DeleteBoardConfirmation.tsx:47
|
||||||
#: src/views/card/components/DeleteCardConfirmation.tsx:92
|
#: src/views/card/components/DeleteCardConfirmation.tsx:92
|
||||||
#: src/views/card/components/DeleteChecklistConfirmation.tsx:66
|
#: src/views/card/components/DeleteChecklistConfirmation.tsx:67
|
||||||
#: src/views/card/components/DeleteCommentConfirmation.tsx:82
|
#: src/views/card/components/DeleteCommentConfirmation.tsx:83
|
||||||
msgid "Delete"
|
msgid "Delete"
|
||||||
msgstr "Supprimer"
|
msgstr "Supprimer"
|
||||||
|
|
||||||
@@ -695,7 +700,7 @@ msgstr "Supprimer le tableau"
|
|||||||
msgid "Delete card"
|
msgid "Delete card"
|
||||||
msgstr "Supprimer la carte"
|
msgstr "Supprimer la carte"
|
||||||
|
|
||||||
#: src/views/card/components/Comment.tsx:91
|
#: src/views/card/components/Comment.tsx:92
|
||||||
msgid "Delete comment"
|
msgid "Delete comment"
|
||||||
msgstr "Supprimer le commentaire"
|
msgstr "Supprimer le commentaire"
|
||||||
|
|
||||||
@@ -713,21 +718,21 @@ msgstr "Supprimer le modèle"
|
|||||||
msgid "Delete workspace"
|
msgid "Delete workspace"
|
||||||
msgstr "Supprimer l'espace de travail"
|
msgstr "Supprimer l'espace de travail"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:68
|
#: src/views/card/components/ActivityList.tsx:109
|
||||||
msgid "deleted a checklist"
|
msgid "deleted a checklist"
|
||||||
msgstr "a supprimé une checklist"
|
msgstr "a supprimé une checklist"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:73
|
#: src/views/card/components/ActivityList.tsx:114
|
||||||
msgid "deleted a checklist item"
|
msgid "deleted a checklist item"
|
||||||
msgstr "a supprimé un élément de la checklist"
|
msgstr "a supprimé un élément de la checklist"
|
||||||
|
|
||||||
#. placeholder {0}: truncate(fromTitle)
|
#. placeholder {0}: truncate(fromTitle)
|
||||||
#: src/views/card/components/ActivityList.tsx:162
|
#: src/views/card/components/ActivityList.tsx:197
|
||||||
msgid "deleted checklist <0>{0}</0>"
|
msgid "deleted checklist <0>{0}</0>"
|
||||||
msgstr "a supprimé la checklist <0>{0}</0>"
|
msgstr "a supprimé la checklist <0>{0}</0>"
|
||||||
|
|
||||||
#. placeholder {0}: truncate(fromTitle)
|
#. placeholder {0}: truncate(fromTitle)
|
||||||
#: src/views/card/components/ActivityList.tsx:205
|
#: src/views/card/components/ActivityList.tsx:240
|
||||||
msgid "deleted checklist item <0>{0}</0>"
|
msgid "deleted checklist item <0>{0}</0>"
|
||||||
msgstr "a supprimé l'élément <0>{0}</0> de la checklist"
|
msgstr "a supprimé l'élément <0>{0}</0> de la checklist"
|
||||||
|
|
||||||
@@ -793,13 +798,13 @@ msgstr "Vous n'avez pas de compte ? <0><1>Inscrivez-vous</1></0>"
|
|||||||
msgid "Done"
|
msgid "Done"
|
||||||
msgstr "Fait"
|
msgstr "Fait"
|
||||||
|
|
||||||
#: src/views/card/components/AttachmentThumbnails.tsx:141
|
#: src/views/card/components/AttachmentThumbnails.tsx:142
|
||||||
msgid "Download failed"
|
msgid "Download failed"
|
||||||
msgstr "Échec du téléchargement"
|
msgstr "Échec du téléchargement"
|
||||||
|
|
||||||
#: src/views/board/components/Filters.tsx:171
|
#: src/views/board/components/Filters.tsx:171
|
||||||
#: src/views/board/components/NewCardForm.tsx:469
|
#: src/views/board/components/NewCardForm.tsx:469
|
||||||
#: src/views/card/index.tsx:138
|
#: src/views/card/index.tsx:139
|
||||||
msgid "Due date"
|
msgid "Due date"
|
||||||
msgstr "Date d'échéance"
|
msgstr "Date d'échéance"
|
||||||
|
|
||||||
@@ -824,7 +829,7 @@ msgstr "Échéance demain"
|
|||||||
msgid "Edit board URL"
|
msgid "Edit board URL"
|
||||||
msgstr "Modifier l'URL du tableau"
|
msgstr "Modifier l'URL du tableau"
|
||||||
|
|
||||||
#: src/views/card/components/Comment.tsx:82
|
#: src/views/card/components/Comment.tsx:83
|
||||||
msgid "Edit comment"
|
msgid "Edit comment"
|
||||||
msgstr "Modifier le commentaire"
|
msgstr "Modifier le commentaire"
|
||||||
|
|
||||||
@@ -981,8 +986,8 @@ msgstr "Échec de la création du tableau"
|
|||||||
msgid "Failed to login with {0}. Please try again."
|
msgid "Failed to login with {0}. Please try again."
|
||||||
msgstr "Échec de connexion avec {0}. Veuillez réessayer."
|
msgstr "Échec de connexion avec {0}. Veuillez réessayer."
|
||||||
|
|
||||||
#: src/views/card/components/AttachmentUpload.tsx:33
|
#: src/views/card/components/AttachmentUpload.tsx:34
|
||||||
#: src/views/card/components/AttachmentUpload.tsx:79
|
#: src/views/card/components/AttachmentUpload.tsx:80
|
||||||
msgid "Failed to upload attachment. Please try again."
|
msgid "Failed to upload attachment. Please try again."
|
||||||
msgstr "Échec du téléversement de la pièce jointe. Veuillez réessayer."
|
msgstr "Échec du téléversement de la pièce jointe. Veuillez réessayer."
|
||||||
|
|
||||||
@@ -1042,8 +1047,6 @@ msgid "For long-term sustainability, we recognise all good open source projects
|
|||||||
msgstr "Pour une durabilité à long terme, nous reconnaissons que tous les bons projets open source ont besoin d'une source de revenus. La nôtre provient de l'offre cloud payante pour les espaces de travail avec plusieurs utilisateurs et pour les slugs d'espace de travail personnalisés. Il n'y a aucune obligation de l'utiliser, et vous pouvez auto-héberger le logiciel sur votre propre infrastructure gratuitement."
|
msgstr "Pour une durabilité à long terme, nous reconnaissons que tous les bons projets open source ont besoin d'une source de revenus. La nôtre provient de l'offre cloud payante pour les espaces de travail avec plusieurs utilisateurs et pour les slugs d'espace de travail personnalisés. Il n'y a aucune obligation de l'utiliser, et vous pouvez auto-héberger le logiciel sur votre propre infrastructure gratuitement."
|
||||||
|
|
||||||
#: src/views/pricing/components/Pricing.tsx:32
|
#: src/views/pricing/components/Pricing.tsx:32
|
||||||
#: src/views/pricing/components/Pricing.tsx:32
|
|
||||||
#: src/views/pricing/components/PricingTiers.tsx:30
|
|
||||||
#: src/views/pricing/components/PricingTiers.tsx:30
|
#: src/views/pricing/components/PricingTiers.tsx:30
|
||||||
msgid "Free"
|
msgid "Free"
|
||||||
msgstr "Gratuit"
|
msgstr "Gratuit"
|
||||||
@@ -1089,7 +1092,7 @@ msgstr "Commencer"
|
|||||||
msgid "Get started by creating a new {0}"
|
msgid "Get started by creating a new {0}"
|
||||||
msgstr "Commencez par créer un nouveau {0}"
|
msgstr "Commencez par créer un nouveau {0}"
|
||||||
|
|
||||||
#: src/views/board/index.tsx:495
|
#: src/views/board/index.tsx:491
|
||||||
msgid "Get started by creating a new list"
|
msgid "Get started by creating a new list"
|
||||||
msgstr "Commencez par créer une nouvelle liste"
|
msgstr "Commencez par créer une nouvelle liste"
|
||||||
|
|
||||||
@@ -1276,7 +1279,7 @@ msgstr "Liens d'invitation"
|
|||||||
msgid "Invite links require a Team or Pro subscription. Please upgrade your workspace."
|
msgid "Invite links require a Team or Pro subscription. Please upgrade your workspace."
|
||||||
msgstr "Les liens d'invitation nécessitent un abonnement Team ou Pro. Veuillez mettre à niveau votre espace de travail."
|
msgstr "Les liens d'invitation nécessitent un abonnement Team ou Pro. Veuillez mettre à niveau votre espace de travail."
|
||||||
|
|
||||||
#: src/views/card/components/MemberSelector.tsx:111
|
#: src/views/card/components/MemberSelector.tsx:112
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:367
|
#: src/views/members/components/InviteMemberForm.tsx:367
|
||||||
msgid "Invite member"
|
msgid "Invite member"
|
||||||
msgstr "Inviter un membre"
|
msgstr "Inviter un membre"
|
||||||
@@ -1325,7 +1328,7 @@ msgstr "Raccourcis clavier"
|
|||||||
|
|
||||||
#: src/views/board/components/Filters.tsx:155
|
#: src/views/board/components/Filters.tsx:155
|
||||||
#: src/views/board/components/NewCardForm.tsx:418
|
#: src/views/board/components/NewCardForm.tsx:418
|
||||||
#: src/views/card/index.tsx:120
|
#: src/views/card/index.tsx:121
|
||||||
msgid "Labels"
|
msgid "Labels"
|
||||||
msgstr "Étiquettes"
|
msgstr "Étiquettes"
|
||||||
|
|
||||||
@@ -1375,11 +1378,11 @@ msgstr "Licence"
|
|||||||
msgid "Light"
|
msgid "Light"
|
||||||
msgstr "Clair"
|
msgstr "Clair"
|
||||||
|
|
||||||
#: src/views/public/board/index.tsx:77
|
#: src/views/public/board/index.tsx:78
|
||||||
msgid "Link copied"
|
msgid "Link copied"
|
||||||
msgstr "Lien copié"
|
msgstr "Lien copié"
|
||||||
|
|
||||||
#: src/views/card/index.tsx:112
|
#: src/views/card/index.tsx:113
|
||||||
msgid "List"
|
msgid "List"
|
||||||
msgstr "Liste"
|
msgstr "Liste"
|
||||||
|
|
||||||
@@ -1391,6 +1394,14 @@ msgstr "Nom de la liste"
|
|||||||
msgid "Lists"
|
msgid "Lists"
|
||||||
msgstr "Listes"
|
msgstr "Listes"
|
||||||
|
|
||||||
|
#: src/views/card/components/ActivityList.tsx:530
|
||||||
|
msgid "Load more activities"
|
||||||
|
msgstr "Charger plus d'activités"
|
||||||
|
|
||||||
|
#: src/views/card/components/ActivityList.tsx:530
|
||||||
|
msgid "Loading..."
|
||||||
|
msgstr "Chargement..."
|
||||||
|
|
||||||
#: src/views/auth/login/index.tsx:33
|
#: src/views/auth/login/index.tsx:33
|
||||||
msgid "Login | kan.bn"
|
msgid "Login | kan.bn"
|
||||||
msgstr "Connexion | kan.bn"
|
msgstr "Connexion | kan.bn"
|
||||||
@@ -1419,12 +1430,12 @@ msgstr "lien magique"
|
|||||||
msgid "Make template"
|
msgid "Make template"
|
||||||
msgstr "Créer un modèle"
|
msgstr "Créer un modèle"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:72
|
#: src/views/card/components/ActivityList.tsx:113
|
||||||
msgid "marked a checklist item as incomplete"
|
msgid "marked a checklist item as incomplete"
|
||||||
msgstr "a marqué un élément de la checklist comme incomplet"
|
msgstr "a marqué un élément de la checklist comme incomplet"
|
||||||
|
|
||||||
#. placeholder {0}: truncate(toTitle)
|
#. placeholder {0}: truncate(toTitle)
|
||||||
#: src/views/card/components/ActivityList.tsx:196
|
#: src/views/card/components/ActivityList.tsx:231
|
||||||
msgid "marked checklist item <0>{0}</0> as incomplete"
|
msgid "marked checklist item <0>{0}</0> as incomplete"
|
||||||
msgstr "a marqué l'élément <0>{0}</0> de la checklist comme incomplet"
|
msgstr "a marqué l'élément <0>{0}</0> de la checklist comme incomplet"
|
||||||
|
|
||||||
@@ -1435,7 +1446,7 @@ msgstr "Priorité moyenne"
|
|||||||
#: src/components/SideNavigation.tsx:121
|
#: src/components/SideNavigation.tsx:121
|
||||||
#: src/views/board/components/Filters.tsx:147
|
#: src/views/board/components/Filters.tsx:147
|
||||||
#: src/views/board/components/NewCardForm.tsx:376
|
#: src/views/board/components/NewCardForm.tsx:376
|
||||||
#: src/views/card/index.tsx:129
|
#: src/views/card/index.tsx:130
|
||||||
#: src/views/members/index.tsx:178
|
#: src/views/members/index.tsx:178
|
||||||
msgid "Members"
|
msgid "Members"
|
||||||
msgstr "Membres"
|
msgstr "Membres"
|
||||||
@@ -1456,11 +1467,11 @@ msgstr "facturation mensuelle"
|
|||||||
|
|
||||||
#. placeholder {0}: truncate(fromList)
|
#. placeholder {0}: truncate(fromList)
|
||||||
#. placeholder {1}: truncate(toList)
|
#. placeholder {1}: truncate(toList)
|
||||||
#: src/views/card/components/ActivityList.tsx:98
|
#: src/views/card/components/ActivityList.tsx:133
|
||||||
msgid "moved the card from <0>{0}</0> to<1>{1}</1>"
|
msgid "moved the card from <0>{0}</0> to<1>{1}</1>"
|
||||||
msgstr "a déplacé la carte de <0>{0}</0> vers <1>{1}</1>"
|
msgstr "a déplacé la carte de <0>{0}</0> vers <1>{1}</1>"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:61
|
#: src/views/card/components/ActivityList.tsx:102
|
||||||
msgid "moved the card to another list"
|
msgid "moved the card to another list"
|
||||||
msgstr "a déplacé la carte vers une autre liste"
|
msgstr "a déplacé la carte vers une autre liste"
|
||||||
|
|
||||||
@@ -1496,7 +1507,7 @@ msgstr "Nouvelle clé API"
|
|||||||
msgid "New card"
|
msgid "New card"
|
||||||
msgstr "Nouvelle carte"
|
msgstr "Nouvelle carte"
|
||||||
|
|
||||||
#: src/views/card/components/NewChecklistForm.tsx:102
|
#: src/views/card/components/NewChecklistForm.tsx:103
|
||||||
msgid "New checklist"
|
msgid "New checklist"
|
||||||
msgstr "Nouvelle checklist"
|
msgstr "Nouvelle checklist"
|
||||||
|
|
||||||
@@ -1509,7 +1520,7 @@ msgid "New label"
|
|||||||
msgstr "Nouvelle étiquette"
|
msgstr "Nouvelle étiquette"
|
||||||
|
|
||||||
#: src/views/board/components/NewListForm.tsx:113
|
#: src/views/board/components/NewListForm.tsx:113
|
||||||
#: src/views/board/index.tsx:466
|
#: src/views/board/index.tsx:462
|
||||||
msgid "New list"
|
msgid "New list"
|
||||||
msgstr "Nouvelle liste"
|
msgstr "Nouvelle liste"
|
||||||
|
|
||||||
@@ -1562,7 +1573,7 @@ msgstr "Aucune carte de crédit requise"
|
|||||||
msgid "No dates"
|
msgid "No dates"
|
||||||
msgstr "Aucune date"
|
msgstr "Aucune date"
|
||||||
|
|
||||||
#: src/views/card/components/AttachmentThumbnails.tsx:142
|
#: src/views/card/components/AttachmentThumbnails.tsx:143
|
||||||
msgid "No download URL available for this attachment."
|
msgid "No download URL available for this attachment."
|
||||||
msgstr "Aucune URL de téléchargement disponible pour cette pièce jointe."
|
msgstr "Aucune URL de téléchargement disponible pour cette pièce jointe."
|
||||||
|
|
||||||
@@ -1570,7 +1581,7 @@ msgstr "Aucune URL de téléchargement disponible pour cette pièce jointe."
|
|||||||
msgid "No keyboard shortcuts registered."
|
msgid "No keyboard shortcuts registered."
|
||||||
msgstr "Aucun raccourci clavier enregistré."
|
msgstr "Aucun raccourci clavier enregistré."
|
||||||
|
|
||||||
#: src/views/board/index.tsx:492
|
#: src/views/board/index.tsx:488
|
||||||
msgid "No lists"
|
msgid "No lists"
|
||||||
msgstr "Aucune liste"
|
msgstr "Aucune liste"
|
||||||
|
|
||||||
@@ -1721,24 +1732,25 @@ msgstr "Veuillez sélectionner un fichier à télécharger."
|
|||||||
#: src/views/board/components/NewTemplateForm.tsx:77
|
#: src/views/board/components/NewTemplateForm.tsx:77
|
||||||
#: src/views/board/components/UpdateBoardSlugForm.tsx:73
|
#: src/views/board/components/UpdateBoardSlugForm.tsx:73
|
||||||
#: src/views/board/components/VisibilityButton.tsx:54
|
#: src/views/board/components/VisibilityButton.tsx:54
|
||||||
#: src/views/board/index.tsx:174
|
#: src/views/board/index.tsx:170
|
||||||
#: src/views/board/index.tsx:230
|
#: src/views/board/index.tsx:226
|
||||||
#: src/views/boards/components/ImportBoardsForm.tsx:205
|
#: src/views/boards/components/ImportBoardsForm.tsx:205
|
||||||
#: src/views/card/components/AttachmentThumbnails.tsx:73
|
#: src/views/card/components/AttachmentThumbnails.tsx:74
|
||||||
#: src/views/card/components/ChecklistItemRow.tsx:60
|
#: src/views/card/components/ChecklistItemRow.tsx:67
|
||||||
#: src/views/card/components/ChecklistItemRow.tsx:88
|
#: src/views/card/components/ChecklistItemRow.tsx:95
|
||||||
#: src/views/card/components/ChecklistNameInput.tsx:46
|
#: src/views/card/components/ChecklistNameInput.tsx:47
|
||||||
#: src/views/card/components/Comment.tsx:64
|
#: src/views/card/components/Checklists.tsx:81
|
||||||
|
#: src/views/card/components/Comment.tsx:65
|
||||||
#: src/views/card/components/DeleteCardConfirmation.tsx:52
|
#: src/views/card/components/DeleteCardConfirmation.tsx:52
|
||||||
#: src/views/card/components/DeleteChecklistConfirmation.tsx:37
|
#: src/views/card/components/DeleteChecklistConfirmation.tsx:38
|
||||||
#: src/views/card/components/DeleteCommentConfirmation.tsx:45
|
#: src/views/card/components/DeleteCommentConfirmation.tsx:46
|
||||||
#: src/views/card/components/DueDateSelector.tsx:59
|
#: src/views/card/components/DueDateSelector.tsx:60
|
||||||
#: src/views/card/components/LabelSelector.tsx:72
|
#: src/views/card/components/LabelSelector.tsx:73
|
||||||
#: src/views/card/components/ListSelector.tsx:52
|
#: src/views/card/components/ListSelector.tsx:53
|
||||||
#: src/views/card/components/MemberSelector.tsx:79
|
#: src/views/card/components/MemberSelector.tsx:80
|
||||||
#: src/views/card/components/NewChecklistForm.tsx:70
|
#: src/views/card/components/NewChecklistForm.tsx:71
|
||||||
#: src/views/card/components/NewChecklistItemForm.tsx:89
|
#: src/views/card/components/NewChecklistItemForm.tsx:90
|
||||||
#: src/views/card/components/NewCommentForm.tsx:31
|
#: src/views/card/components/NewCommentForm.tsx:32
|
||||||
#: src/views/card/index.tsx:187
|
#: src/views/card/index.tsx:187
|
||||||
#: src/views/card/index.tsx:200
|
#: src/views/card/index.tsx:200
|
||||||
#: src/views/members/components/DeleteMemberConfirmation.tsx:28
|
#: src/views/members/components/DeleteMemberConfirmation.tsx:28
|
||||||
@@ -1840,35 +1852,40 @@ msgstr "Supprimer"
|
|||||||
msgid "Remove member"
|
msgid "Remove member"
|
||||||
msgstr "Supprimer le membre"
|
msgstr "Supprimer le membre"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:63
|
#. placeholder {0}: mergedLabels.length
|
||||||
|
#: src/views/card/components/ActivityList.tsx:91
|
||||||
|
msgid "removed {0} labels: <0>{labelList}</0>"
|
||||||
|
msgstr "a supprimé {0} étiquettes : <0>{labelList}</0>"
|
||||||
|
|
||||||
|
#: src/views/card/components/ActivityList.tsx:104
|
||||||
msgid "removed a label from the card"
|
msgid "removed a label from the card"
|
||||||
msgstr "a supprimé une étiquette de la carte"
|
msgstr "a supprimé une étiquette de la carte"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:65
|
#: src/views/card/components/ActivityList.tsx:106
|
||||||
msgid "removed a member from the card"
|
msgid "removed a member from the card"
|
||||||
msgstr "a retiré un membre de la carte"
|
msgstr "a retiré un membre de la carte"
|
||||||
|
|
||||||
#. placeholder {0}: truncate(label)
|
#. placeholder {0}: truncate(label)
|
||||||
#: src/views/card/components/ActivityList.tsx:138
|
#: src/views/card/components/ActivityList.tsx:173
|
||||||
msgid "removed label <0>{0}</0>"
|
msgid "removed label <0>{0}</0>"
|
||||||
msgstr "a supprimé l'étiquette <0>{0}</0>"
|
msgstr "a supprimé l'étiquette <0>{0}</0>"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:76
|
#: src/views/card/components/ActivityList.tsx:117
|
||||||
#: src/views/card/components/ActivityList.tsx:241
|
#: src/views/card/components/ActivityList.tsx:276
|
||||||
msgid "removed the due date"
|
msgid "removed the due date"
|
||||||
msgstr "a supprimé la date d'échéance"
|
msgstr "a supprimé la date d'échéance"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:67
|
#: src/views/card/components/ActivityList.tsx:108
|
||||||
msgid "renamed a checklist"
|
msgid "renamed a checklist"
|
||||||
msgstr "a renommé une checklist"
|
msgstr "a renommé une checklist"
|
||||||
|
|
||||||
#. placeholder {0}: truncate(toTitle)
|
#. placeholder {0}: truncate(toTitle)
|
||||||
#: src/views/card/components/ActivityList.tsx:154
|
#: src/views/card/components/ActivityList.tsx:189
|
||||||
msgid "renamed checklist <0>{0}</0>"
|
msgid "renamed checklist <0>{0}</0>"
|
||||||
msgstr "a renommé la checklist <0>{0}</0>"
|
msgstr "a renommé la checklist <0>{0}</0>"
|
||||||
|
|
||||||
#. placeholder {0}: truncate(toTitle)
|
#. placeholder {0}: truncate(toTitle)
|
||||||
#: src/views/card/components/ActivityList.tsx:178
|
#: src/views/card/components/ActivityList.tsx:213
|
||||||
msgid "renamed checklist item to <0>{0}</0>"
|
msgid "renamed checklist item to <0>{0}</0>"
|
||||||
msgstr "a renommé l'élément de la liste de contrôle en <0>{0}</0>"
|
msgstr "a renommé l'élément de la liste de contrôle en <0>{0}</0>"
|
||||||
|
|
||||||
@@ -1907,7 +1924,7 @@ msgstr "Rôle"
|
|||||||
msgid "Run on your own infrastructure"
|
msgid "Run on your own infrastructure"
|
||||||
msgstr "Exécutez sur votre propre infrastructure"
|
msgstr "Exécutez sur votre propre infrastructure"
|
||||||
|
|
||||||
#: src/views/card/components/Comment.tsx:165
|
#: src/views/card/components/Comment.tsx:166
|
||||||
#: src/views/settings/components/Avatar.tsx:309
|
#: src/views/settings/components/Avatar.tsx:309
|
||||||
msgid "Save"
|
msgid "Save"
|
||||||
msgstr "Enregistrer"
|
msgstr "Enregistrer"
|
||||||
@@ -1945,7 +1962,7 @@ msgstr "Auto-hébergement"
|
|||||||
msgid "Self host with Github"
|
msgid "Self host with Github"
|
||||||
msgstr "Auto-hébergement avec Github"
|
msgstr "Auto-hébergement avec Github"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:107
|
#: src/views/card/components/ActivityList.tsx:142
|
||||||
msgid "self-assigned the card"
|
msgid "self-assigned the card"
|
||||||
msgstr "s'est auto-assigné la carte"
|
msgstr "s'est auto-assigné la carte"
|
||||||
|
|
||||||
@@ -1961,11 +1978,11 @@ msgstr "Envoyer des commentaires"
|
|||||||
msgid "Senior"
|
msgid "Senior"
|
||||||
msgstr "Senior"
|
msgstr "Senior"
|
||||||
|
|
||||||
#: src/views/card/components/DueDateSelector.tsx:116
|
#: src/views/card/components/DueDateSelector.tsx:117
|
||||||
msgid "Set due date"
|
msgid "Set due date"
|
||||||
msgstr "Définir la date d'échéance"
|
msgstr "Définir la date d'échéance"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:74
|
#: src/views/card/components/ActivityList.tsx:115
|
||||||
msgid "set the due date"
|
msgid "set the due date"
|
||||||
msgstr "a défini la date d'échéance"
|
msgstr "a défini la date d'échéance"
|
||||||
|
|
||||||
@@ -2090,8 +2107,8 @@ msgstr "Forfait d'équipe"
|
|||||||
msgid "Teams"
|
msgid "Teams"
|
||||||
msgstr "Équipes"
|
msgstr "Équipes"
|
||||||
|
|
||||||
#: src/views/board/index.tsx:386
|
#: src/views/board/index.tsx:382
|
||||||
#: src/views/board/index.tsx:421
|
#: src/views/board/index.tsx:417
|
||||||
msgid "Template"
|
msgid "Template"
|
||||||
msgstr "Modèle"
|
msgstr "Modèle"
|
||||||
|
|
||||||
@@ -2156,8 +2173,8 @@ msgstr "Ils ne pourront plus accéder à cet espace de travail."
|
|||||||
#: src/components/DeleteLabelConfirmation.tsx:44
|
#: src/components/DeleteLabelConfirmation.tsx:44
|
||||||
#: src/views/board/components/DeleteBoardConfirmation.tsx:39
|
#: src/views/board/components/DeleteBoardConfirmation.tsx:39
|
||||||
#: src/views/card/components/DeleteCardConfirmation.tsx:78
|
#: src/views/card/components/DeleteCardConfirmation.tsx:78
|
||||||
#: src/views/card/components/DeleteChecklistConfirmation.tsx:58
|
#: src/views/card/components/DeleteChecklistConfirmation.tsx:59
|
||||||
#: src/views/card/components/DeleteCommentConfirmation.tsx:68
|
#: src/views/card/components/DeleteCommentConfirmation.tsx:69
|
||||||
msgid "This action can't be undone."
|
msgid "This action can't be undone."
|
||||||
msgstr "Cette action ne peut pas être annulée."
|
msgstr "Cette action ne peut pas être annulée."
|
||||||
|
|
||||||
@@ -2165,7 +2182,7 @@ msgstr "Cette action ne peut pas être annulée."
|
|||||||
msgid "This API key will only be shown once. Please save it in a secure location."
|
msgid "This API key will only be shown once. Please save it in a secure location."
|
||||||
msgstr "Cette clé API ne sera affichée qu'une seule fois. Veuillez la sauvegarder dans un emplacement sécurisé."
|
msgstr "Cette clé API ne sera affichée qu'une seule fois. Veuillez la sauvegarder dans un emplacement sécurisé."
|
||||||
|
|
||||||
#: src/views/public/board/index.tsx:168
|
#: src/views/public/board/index.tsx:169
|
||||||
msgid "This board is private or does not exist"
|
msgid "This board is private or does not exist"
|
||||||
msgstr "Ce tableau est privé ou n'existe pas"
|
msgstr "Ce tableau est privé ou n'existe pas"
|
||||||
|
|
||||||
@@ -2227,27 +2244,27 @@ msgstr "Importations Trello"
|
|||||||
msgid "Triaging"
|
msgid "Triaging"
|
||||||
msgstr "Triage"
|
msgstr "Triage"
|
||||||
|
|
||||||
#: src/views/home/components/Logos.tsx:73
|
#: src/views/home/components/Logos.tsx:67
|
||||||
msgid "Trusted by fast-moving teams<0/>around the world"
|
msgid "Trusted by fast-moving teams<0/>around the world"
|
||||||
msgstr "Approuvé par des équipes dynamiques<0/>du monde entier"
|
msgstr "Approuvé par des équipes dynamiques<0/>du monde entier"
|
||||||
|
|
||||||
#: src/views/card/components/NewChecklistItemForm.tsx:88
|
#: src/views/card/components/NewChecklistItemForm.tsx:89
|
||||||
msgid "Unable to add checklist item"
|
msgid "Unable to add checklist item"
|
||||||
msgstr "Impossible d'ajouter l'élément à la liste de contrôle"
|
msgstr "Impossible d'ajouter l'élément à la liste de contrôle"
|
||||||
|
|
||||||
#: src/views/card/components/NewCommentForm.tsx:30
|
#: src/views/card/components/NewCommentForm.tsx:31
|
||||||
msgid "Unable to add comment"
|
msgid "Unable to add comment"
|
||||||
msgstr "Impossible d'ajouter un commentaire"
|
msgstr "Impossible d'ajouter un commentaire"
|
||||||
|
|
||||||
#: src/views/card/index.tsx:199
|
#: src/views/card/index.tsx:199
|
||||||
msgid "Unable to add label"
|
msgid "Unable to add label"
|
||||||
msgstr ""
|
msgstr "Impossible d'ajouter l'étiquette"
|
||||||
|
|
||||||
#: src/views/board/components/NewCardForm.tsx:181
|
#: src/views/board/components/NewCardForm.tsx:181
|
||||||
msgid "Unable to create card"
|
msgid "Unable to create card"
|
||||||
msgstr "Impossible de créer la carte"
|
msgstr "Impossible de créer la carte"
|
||||||
|
|
||||||
#: src/views/card/components/NewChecklistForm.tsx:69
|
#: src/views/card/components/NewChecklistForm.tsx:70
|
||||||
msgid "Unable to create checklist"
|
msgid "Unable to create checklist"
|
||||||
msgstr "Impossible de créer la liste de contrôle"
|
msgstr "Impossible de créer la liste de contrôle"
|
||||||
|
|
||||||
@@ -2264,7 +2281,7 @@ msgstr "Impossible de créer le modèle"
|
|||||||
msgid "Unable to create workspace"
|
msgid "Unable to create workspace"
|
||||||
msgstr "Impossible de créer l'espace de travail"
|
msgstr "Impossible de créer l'espace de travail"
|
||||||
|
|
||||||
#: src/views/card/components/AttachmentThumbnails.tsx:72
|
#: src/views/card/components/AttachmentThumbnails.tsx:73
|
||||||
msgid "Unable to delete attachment"
|
msgid "Unable to delete attachment"
|
||||||
msgstr "Impossible de supprimer la pièce jointe"
|
msgstr "Impossible de supprimer la pièce jointe"
|
||||||
|
|
||||||
@@ -2272,15 +2289,15 @@ msgstr "Impossible de supprimer la pièce jointe"
|
|||||||
msgid "Unable to delete card"
|
msgid "Unable to delete card"
|
||||||
msgstr "Impossible de supprimer la carte"
|
msgstr "Impossible de supprimer la carte"
|
||||||
|
|
||||||
#: src/views/card/components/DeleteChecklistConfirmation.tsx:36
|
#: src/views/card/components/DeleteChecklistConfirmation.tsx:37
|
||||||
msgid "Unable to delete checklist"
|
msgid "Unable to delete checklist"
|
||||||
msgstr "Impossible de supprimer la liste de contrôle"
|
msgstr "Impossible de supprimer la liste de contrôle"
|
||||||
|
|
||||||
#: src/views/card/components/ChecklistItemRow.tsx:87
|
#: src/views/card/components/ChecklistItemRow.tsx:94
|
||||||
msgid "Unable to delete checklist item"
|
msgid "Unable to delete checklist item"
|
||||||
msgstr "Impossible de supprimer l'élément de la liste de contrôle"
|
msgstr "Impossible de supprimer l'élément de la liste de contrôle"
|
||||||
|
|
||||||
#: src/views/card/components/DeleteCommentConfirmation.tsx:44
|
#: src/views/card/components/DeleteCommentConfirmation.tsx:45
|
||||||
msgid "Unable to delete comment"
|
msgid "Unable to delete comment"
|
||||||
msgstr "Impossible de supprimer le commentaire"
|
msgstr "Impossible de supprimer le commentaire"
|
||||||
|
|
||||||
@@ -2288,6 +2305,10 @@ msgstr "Impossible de supprimer le commentaire"
|
|||||||
msgid "Unable to remove member"
|
msgid "Unable to remove member"
|
||||||
msgstr "Impossible de supprimer le membre"
|
msgstr "Impossible de supprimer le membre"
|
||||||
|
|
||||||
|
#: src/views/card/components/Checklists.tsx:80
|
||||||
|
msgid "Unable to reorder checklist item"
|
||||||
|
msgstr "Impossible de réorganiser l'élément de la liste de contrôle"
|
||||||
|
|
||||||
#: src/components/FeedbackModal.tsx:40
|
#: src/components/FeedbackModal.tsx:40
|
||||||
msgid "Unable to send feedback"
|
msgid "Unable to send feedback"
|
||||||
msgstr "Impossible d'envoyer les commentaires"
|
msgstr "Impossible d'envoyer les commentaires"
|
||||||
@@ -2300,46 +2321,46 @@ msgstr "Impossible de mettre à jour l'URL du tableau"
|
|||||||
msgid "Unable to update board visibility"
|
msgid "Unable to update board visibility"
|
||||||
msgstr "Impossible de mettre à jour la visibilité du tableau"
|
msgstr "Impossible de mettre à jour la visibilité du tableau"
|
||||||
|
|
||||||
#: src/views/board/index.tsx:229
|
#: src/views/board/index.tsx:225
|
||||||
#: src/views/card/index.tsx:186
|
#: src/views/card/index.tsx:186
|
||||||
msgid "Unable to update card"
|
msgid "Unable to update card"
|
||||||
msgstr "Impossible de mettre à jour la carte"
|
msgstr "Impossible de mettre à jour la carte"
|
||||||
|
|
||||||
#: src/views/card/components/ChecklistNameInput.tsx:45
|
#: src/views/card/components/ChecklistNameInput.tsx:46
|
||||||
msgid "Unable to update checklist"
|
msgid "Unable to update checklist"
|
||||||
msgstr "Impossible de mettre à jour la liste de contrôle"
|
msgstr "Impossible de mettre à jour la liste de contrôle"
|
||||||
|
|
||||||
#: src/views/card/components/ChecklistItemRow.tsx:59
|
#: src/views/card/components/ChecklistItemRow.tsx:66
|
||||||
msgid "Unable to update checklist item"
|
msgid "Unable to update checklist item"
|
||||||
msgstr "Impossible de mettre à jour l'élément de la liste de contrôle"
|
msgstr "Impossible de mettre à jour l'élément de la liste de contrôle"
|
||||||
|
|
||||||
#: src/views/card/components/Comment.tsx:63
|
#: src/views/card/components/Comment.tsx:64
|
||||||
msgid "Unable to update comment"
|
msgid "Unable to update comment"
|
||||||
msgstr "Impossible de mettre à jour le commentaire"
|
msgstr "Impossible de mettre à jour le commentaire"
|
||||||
|
|
||||||
#: src/views/card/components/DueDateSelector.tsx:58
|
#: src/views/card/components/DueDateSelector.tsx:59
|
||||||
msgid "Unable to update due date"
|
msgid "Unable to update due date"
|
||||||
msgstr "Impossible de mettre à jour la date d'échéance"
|
msgstr "Impossible de mettre à jour la date d'échéance"
|
||||||
|
|
||||||
#: src/views/card/components/LabelSelector.tsx:71
|
#: src/views/card/components/LabelSelector.tsx:72
|
||||||
msgid "Unable to update labels"
|
msgid "Unable to update labels"
|
||||||
msgstr "Impossible de mettre à jour les étiquettes"
|
msgstr "Impossible de mettre à jour les étiquettes"
|
||||||
|
|
||||||
#: src/views/board/index.tsx:173
|
#: src/views/board/index.tsx:169
|
||||||
#: src/views/card/components/ListSelector.tsx:51
|
#: src/views/card/components/ListSelector.tsx:52
|
||||||
msgid "Unable to update list"
|
msgid "Unable to update list"
|
||||||
msgstr "Impossible de mettre à jour la liste"
|
msgstr "Impossible de mettre à jour la liste"
|
||||||
|
|
||||||
#: src/views/card/components/MemberSelector.tsx:78
|
#: src/views/card/components/MemberSelector.tsx:79
|
||||||
msgid "Unable to update members"
|
msgid "Unable to update members"
|
||||||
msgstr "Impossible de mettre à jour les membres"
|
msgstr "Impossible de mettre à jour les membres"
|
||||||
|
|
||||||
#. placeholder {0}: truncate(memberName)
|
#. placeholder {0}: truncate(memberName)
|
||||||
#: src/views/card/components/ActivityList.tsx:121
|
#: src/views/card/components/ActivityList.tsx:156
|
||||||
msgid "unassigned <0>{0}</0> from the card"
|
msgid "unassigned <0>{0}</0> from the card"
|
||||||
msgstr "a désassigné <0>{0}</0> de la carte"
|
msgstr "a désassigné <0>{0}</0> de la carte"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:118
|
#: src/views/card/components/ActivityList.tsx:153
|
||||||
msgid "unassigned themselves from the card"
|
msgid "unassigned themselves from the card"
|
||||||
msgstr "s'est retiré de la carte"
|
msgstr "s'est retiré de la carte"
|
||||||
|
|
||||||
@@ -2398,24 +2419,24 @@ msgstr "Mettre à jour"
|
|||||||
msgid "Update label"
|
msgid "Update label"
|
||||||
msgstr "Mettre à jour l'étiquette"
|
msgstr "Mettre à jour l'étiquette"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:70
|
#: src/views/card/components/ActivityList.tsx:111
|
||||||
msgid "updated a checklist item"
|
msgid "updated a checklist item"
|
||||||
msgstr "a mis à jour un élément de la liste de contrôle"
|
msgstr "a mis à jour un élément de la liste de contrôle"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:60
|
#: src/views/card/components/ActivityList.tsx:101
|
||||||
msgid "updated the description"
|
msgid "updated the description"
|
||||||
msgstr "a mis à jour la description"
|
msgstr "a mis à jour la description"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:75
|
#: src/views/card/components/ActivityList.tsx:116
|
||||||
msgid "updated the due date"
|
msgid "updated the due date"
|
||||||
msgstr "a mis à jour la date d'échéance"
|
msgstr "a mis à jour la date d'échéance"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:59
|
#: src/views/card/components/ActivityList.tsx:100
|
||||||
msgid "updated the title"
|
msgid "updated the title"
|
||||||
msgstr "a mis à jour le titre"
|
msgstr "a mis à jour le titre"
|
||||||
|
|
||||||
#. placeholder {0}: truncate(toTitle)
|
#. placeholder {0}: truncate(toTitle)
|
||||||
#: src/views/card/components/ActivityList.tsx:90
|
#: src/views/card/components/ActivityList.tsx:125
|
||||||
msgid "updated the title to <0>{0}</0>"
|
msgid "updated the title to <0>{0}</0>"
|
||||||
msgstr "a mis à jour le titre en <0>{0}</0>"
|
msgstr "a mis à jour le titre en <0>{0}</0>"
|
||||||
|
|
||||||
@@ -2429,8 +2450,8 @@ msgstr "Passer à Pro"
|
|||||||
msgid "Upgrade to Pro ($29/month)"
|
msgid "Upgrade to Pro ($29/month)"
|
||||||
msgstr "Passer à Pro (29 $/mois)"
|
msgstr "Passer à Pro (29 $/mois)"
|
||||||
|
|
||||||
#: src/views/card/components/AttachmentUpload.tsx:32
|
#: src/views/card/components/AttachmentUpload.tsx:33
|
||||||
#: src/views/card/components/AttachmentUpload.tsx:78
|
#: src/views/card/components/AttachmentUpload.tsx:79
|
||||||
msgid "Upload failed"
|
msgid "Upload failed"
|
||||||
msgstr "Échec du téléversement"
|
msgstr "Échec du téléversement"
|
||||||
|
|
||||||
@@ -2483,7 +2504,7 @@ msgstr "Consultez et gérez votre facturation et votre abonnement."
|
|||||||
msgid "View docs"
|
msgid "View docs"
|
||||||
msgstr "Voir la documentation"
|
msgstr "Voir la documentation"
|
||||||
|
|
||||||
#: src/views/public/board/index.tsx:141
|
#: src/views/public/board/index.tsx:142
|
||||||
msgid "View only"
|
msgid "View only"
|
||||||
msgstr "Affichage uniquement"
|
msgstr "Affichage uniquement"
|
||||||
|
|
||||||
@@ -2491,7 +2512,7 @@ msgstr "Affichage uniquement"
|
|||||||
msgid "View our roadmap."
|
msgid "View our roadmap."
|
||||||
msgstr "Consultez notre feuille de route."
|
msgstr "Consultez notre feuille de route."
|
||||||
|
|
||||||
#: src/views/public/board/index.tsx:171
|
#: src/views/public/board/index.tsx:172
|
||||||
msgid "View workspace"
|
msgid "View workspace"
|
||||||
msgstr "Voir l'espace de travail"
|
msgstr "Voir l'espace de travail"
|
||||||
|
|
||||||
@@ -2536,10 +2557,10 @@ msgid "Why make an open source Trello?"
|
|||||||
msgstr "Pourquoi créer un Trello open source ?"
|
msgstr "Pourquoi créer un Trello open source ?"
|
||||||
|
|
||||||
#: src/components/SettingsLayout.tsx:39
|
#: src/components/SettingsLayout.tsx:39
|
||||||
#: src/views/board/index.tsx:386
|
#: src/views/board/index.tsx:382
|
||||||
#: src/views/boards/index.tsx:33
|
#: src/views/boards/index.tsx:33
|
||||||
#: src/views/members/index.tsx:173
|
#: src/views/members/index.tsx:173
|
||||||
#: src/views/public/board/index.tsx:113
|
#: src/views/public/board/index.tsx:114
|
||||||
#: src/views/public/boards/index.tsx:66
|
#: src/views/public/boards/index.tsx:66
|
||||||
msgid "Workspace"
|
msgid "Workspace"
|
||||||
msgstr "Espace de travail"
|
msgstr "Espace de travail"
|
||||||
@@ -2673,7 +2694,7 @@ msgstr "Vos tableaux ont été importés."
|
|||||||
msgid "Your display name has been updated."
|
msgid "Your display name has been updated."
|
||||||
msgstr "Votre nom d'affichage a été mis à jour."
|
msgstr "Votre nom d'affichage a été mis à jour."
|
||||||
|
|
||||||
#: src/views/card/components/AttachmentUpload.tsx:26
|
#: src/views/card/components/AttachmentUpload.tsx:27
|
||||||
msgid "Your file has been uploaded successfully."
|
msgid "Your file has been uploaded successfully."
|
||||||
msgstr "Votre fichier a été téléversé avec succès."
|
msgstr "Votre fichier a été téléversé avec succès."
|
||||||
|
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ msgstr ""
|
|||||||
"Language-Team: \n"
|
"Language-Team: \n"
|
||||||
"Plural-Forms: \n"
|
"Plural-Forms: \n"
|
||||||
|
|
||||||
#: src/views/card/components/Comment.tsx:123
|
#: src/views/card/components/Comment.tsx:124
|
||||||
msgid " (edited)"
|
msgid " (edited)"
|
||||||
msgstr " (modificato)"
|
msgstr " (modificato)"
|
||||||
|
|
||||||
@@ -41,7 +41,7 @@ msgid "{0} labels"
|
|||||||
msgstr "{0} etichette"
|
msgstr "{0} etichette"
|
||||||
|
|
||||||
#. placeholder {0}: isTemplate ? "Template" : "Board"
|
#. placeholder {0}: isTemplate ? "Template" : "Board"
|
||||||
#: src/views/board/index.tsx:412
|
#: src/views/board/index.tsx:408
|
||||||
msgid "{0} not found"
|
msgid "{0} not found"
|
||||||
msgstr "{0} non trovato"
|
msgstr "{0} non trovato"
|
||||||
|
|
||||||
@@ -100,12 +100,12 @@ msgstr "Registri attività"
|
|||||||
msgid "Add a card"
|
msgid "Add a card"
|
||||||
msgstr "Aggiungi una carta"
|
msgstr "Aggiungi una carta"
|
||||||
|
|
||||||
#: src/views/card/components/Comment.tsx:146
|
#: src/views/card/components/Comment.tsx:147
|
||||||
#: src/views/card/components/NewCommentForm.tsx:57
|
#: src/views/card/components/NewCommentForm.tsx:55
|
||||||
msgid "Add a comment..."
|
msgid "Add a comment..."
|
||||||
msgstr "Aggiungi un commento..."
|
msgstr "Aggiungi un commento..."
|
||||||
|
|
||||||
#: src/views/card/components/NewChecklistItemForm.tsx:140
|
#: src/views/card/components/NewChecklistItemForm.tsx:141
|
||||||
msgid "Add an item..."
|
msgid "Add an item..."
|
||||||
msgstr "Aggiungi un elemento..."
|
msgstr "Aggiungi un elemento..."
|
||||||
|
|
||||||
@@ -117,48 +117,53 @@ msgstr "Aggiungi checklist"
|
|||||||
msgid "Add description... (type '/' to open commands or '@' to mention)"
|
msgid "Add description... (type '/' to open commands or '@' to mention)"
|
||||||
msgstr "Aggiungi descrizione... (digita '/' per aprire i comandi o '@' per menzionare)"
|
msgstr "Aggiungi descrizione... (digita '/' per aprire i comandi o '@' per menzionare)"
|
||||||
|
|
||||||
#: src/views/card/components/ChecklistItemRow.tsx:172
|
#: src/views/card/components/ChecklistItemRow.tsx:195
|
||||||
msgid "Add details..."
|
msgid "Add details..."
|
||||||
msgstr "Aggiungi dettagli..."
|
msgstr "Aggiungi dettagli..."
|
||||||
|
|
||||||
#: src/views/card/components/LabelSelector.tsx:109
|
#: src/views/card/components/LabelSelector.tsx:110
|
||||||
#: src/views/card/components/LabelSelector.tsx:114
|
#: src/views/card/components/LabelSelector.tsx:115
|
||||||
msgid "Add label"
|
msgid "Add label"
|
||||||
msgstr "Aggiungi etichetta"
|
msgstr "Aggiungi etichetta"
|
||||||
|
|
||||||
#: src/views/card/components/MemberSelector.tsx:130
|
#: src/views/card/components/MemberSelector.tsx:131
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:257
|
#: src/views/members/components/InviteMemberForm.tsx:257
|
||||||
msgid "Add member"
|
msgid "Add member"
|
||||||
msgstr "Aggiungi membro"
|
msgstr "Aggiungi membro"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:66
|
#. placeholder {0}: mergedLabels.length
|
||||||
|
#: src/views/card/components/ActivityList.tsx:77
|
||||||
|
msgid "added {0} labels: <0>{labelList}</0>"
|
||||||
|
msgstr "ha aggiunto {0} etichette: <0>{labelList}</0>"
|
||||||
|
|
||||||
|
#: src/views/card/components/ActivityList.tsx:107
|
||||||
msgid "added a checklist"
|
msgid "added a checklist"
|
||||||
msgstr "ha aggiunto una checklist"
|
msgstr "ha aggiunto una checklist"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:69
|
#: src/views/card/components/ActivityList.tsx:110
|
||||||
msgid "added a checklist item"
|
msgid "added a checklist item"
|
||||||
msgstr "ha aggiunto un elemento alla checklist"
|
msgstr "ha aggiunto un elemento alla checklist"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:62
|
#: src/views/card/components/ActivityList.tsx:103
|
||||||
msgid "added a label to the card"
|
msgid "added a label to the card"
|
||||||
msgstr "ha aggiunto un'etichetta alla carta"
|
msgstr "ha aggiunto un'etichetta alla carta"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:64
|
#: src/views/card/components/ActivityList.tsx:105
|
||||||
msgid "added a member to the card"
|
msgid "added a member to the card"
|
||||||
msgstr "ha aggiunto un membro alla carta"
|
msgstr "ha aggiunto un membro alla carta"
|
||||||
|
|
||||||
#. placeholder {0}: truncate(toTitle)
|
#. placeholder {0}: truncate(toTitle)
|
||||||
#: src/views/card/components/ActivityList.tsx:146
|
#: src/views/card/components/ActivityList.tsx:181
|
||||||
msgid "added checklist <0>{0}</0>"
|
msgid "added checklist <0>{0}</0>"
|
||||||
msgstr "ha aggiunto la checklist <0>{0}</0>"
|
msgstr "ha aggiunto la checklist <0>{0}</0>"
|
||||||
|
|
||||||
#. placeholder {0}: truncate(toTitle)
|
#. placeholder {0}: truncate(toTitle)
|
||||||
#: src/views/card/components/ActivityList.tsx:170
|
#: src/views/card/components/ActivityList.tsx:205
|
||||||
msgid "added checklist item <0>{0}</0>"
|
msgid "added checklist item <0>{0}</0>"
|
||||||
msgstr "ha aggiunto l'elemento <0>{0}</0> alla checklist"
|
msgstr "ha aggiunto l'elemento <0>{0}</0> alla checklist"
|
||||||
|
|
||||||
#. placeholder {0}: truncate(label)
|
#. placeholder {0}: truncate(label)
|
||||||
#: src/views/card/components/ActivityList.tsx:130
|
#: src/views/card/components/ActivityList.tsx:165
|
||||||
msgid "added label <0>{0}</0>"
|
msgid "added label <0>{0}</0>"
|
||||||
msgstr "ha aggiunto l'etichetta <0>{0}</0>"
|
msgstr "ha aggiunto l'etichetta <0>{0}</0>"
|
||||||
|
|
||||||
@@ -249,11 +254,11 @@ msgstr "Sei sicuro di voler eliminare questo {0}?"
|
|||||||
msgid "Are you sure you want to delete this card?"
|
msgid "Are you sure you want to delete this card?"
|
||||||
msgstr "Sei sicuro di voler eliminare questa carta?"
|
msgstr "Sei sicuro di voler eliminare questa carta?"
|
||||||
|
|
||||||
#: src/views/card/components/DeleteChecklistConfirmation.tsx:55
|
#: src/views/card/components/DeleteChecklistConfirmation.tsx:56
|
||||||
msgid "Are you sure you want to delete this checklist?"
|
msgid "Are you sure you want to delete this checklist?"
|
||||||
msgstr "Sei sicuro di voler eliminare questa checklist?"
|
msgstr "Sei sicuro di voler eliminare questa checklist?"
|
||||||
|
|
||||||
#: src/views/card/components/DeleteCommentConfirmation.tsx:65
|
#: src/views/card/components/DeleteCommentConfirmation.tsx:66
|
||||||
msgid "Are you sure you want to delete this comment?"
|
msgid "Are you sure you want to delete this comment?"
|
||||||
msgstr "Sei sicuro di voler eliminare questo commento?"
|
msgstr "Sei sicuro di voler eliminare questo commento?"
|
||||||
|
|
||||||
@@ -266,7 +271,7 @@ msgid "Are you sure you want to delete your account?"
|
|||||||
msgstr "Sei sicuro di voler eliminare il tuo account?"
|
msgstr "Sei sicuro di voler eliminare il tuo account?"
|
||||||
|
|
||||||
#. placeholder {0}: truncate(memberName)
|
#. placeholder {0}: truncate(memberName)
|
||||||
#: src/views/card/components/ActivityList.tsx:110
|
#: src/views/card/components/ActivityList.tsx:145
|
||||||
msgid "assigned <0>{0}</0> to the card"
|
msgid "assigned <0>{0}</0> to the card"
|
||||||
msgstr "ha assegnato <0>{0}</0> alla scheda"
|
msgstr "ha assegnato <0>{0}</0> alla scheda"
|
||||||
|
|
||||||
@@ -274,7 +279,7 @@ msgstr "ha assegnato <0>{0}</0> alla scheda"
|
|||||||
msgid "Assignees"
|
msgid "Assignees"
|
||||||
msgstr "Assegnatari"
|
msgstr "Assegnatari"
|
||||||
|
|
||||||
#: src/views/card/components/AttachmentUpload.tsx:25
|
#: src/views/card/components/AttachmentUpload.tsx:26
|
||||||
msgid "Attachment uploaded"
|
msgid "Attachment uploaded"
|
||||||
msgstr "Allegato caricato"
|
msgstr "Allegato caricato"
|
||||||
|
|
||||||
@@ -312,9 +317,9 @@ msgstr "Portale di fatturazione"
|
|||||||
msgid "Blog Post"
|
msgid "Blog Post"
|
||||||
msgstr "Post del blog"
|
msgstr "Post del blog"
|
||||||
|
|
||||||
#: src/views/board/index.tsx:386
|
#: src/views/board/index.tsx:382
|
||||||
#: src/views/card/index.tsx:272
|
#: src/views/card/index.tsx:272
|
||||||
#: src/views/public/board/index.tsx:113
|
#: src/views/public/board/index.tsx:114
|
||||||
msgid "Board"
|
msgid "Board"
|
||||||
msgstr "Bacheca"
|
msgstr "Bacheca"
|
||||||
|
|
||||||
@@ -331,7 +336,7 @@ msgstr "Il nome della bacheca non può superare i 100 caratteri"
|
|||||||
msgid "Board name is required"
|
msgid "Board name is required"
|
||||||
msgstr "Il nome della bacheca è obbligatorio"
|
msgstr "Il nome della bacheca è obbligatorio"
|
||||||
|
|
||||||
#: src/views/public/board/index.tsx:165
|
#: src/views/public/board/index.tsx:166
|
||||||
msgid "Board not found"
|
msgid "Board not found"
|
||||||
msgstr "Bacheca non trovata"
|
msgstr "Bacheca non trovata"
|
||||||
|
|
||||||
@@ -347,7 +352,7 @@ msgstr "L'URL della bacheca può contenere solo lettere, numeri e trattini"
|
|||||||
msgid "Board URL cannot exceed 60 characters"
|
msgid "Board URL cannot exceed 60 characters"
|
||||||
msgstr "L'URL della bacheca non può superare i 60 caratteri"
|
msgstr "L'URL della bacheca non può superare i 60 caratteri"
|
||||||
|
|
||||||
#: src/views/public/board/index.tsx:79
|
#: src/views/public/board/index.tsx:80
|
||||||
msgid "Board URL copied to clipboard"
|
msgid "Board URL copied to clipboard"
|
||||||
msgstr "URL della bacheca copiato negli appunti"
|
msgstr "URL della bacheca copiato negli appunti"
|
||||||
|
|
||||||
@@ -382,10 +387,10 @@ msgstr "Segnalazione bug"
|
|||||||
|
|
||||||
#: src/components/DeleteLabelConfirmation.tsx:49
|
#: src/components/DeleteLabelConfirmation.tsx:49
|
||||||
#: src/views/board/components/DeleteBoardConfirmation.tsx:44
|
#: src/views/board/components/DeleteBoardConfirmation.tsx:44
|
||||||
#: src/views/card/components/Comment.tsx:158
|
#: src/views/card/components/Comment.tsx:159
|
||||||
#: src/views/card/components/DeleteCardConfirmation.tsx:86
|
#: src/views/card/components/DeleteCardConfirmation.tsx:86
|
||||||
#: src/views/card/components/DeleteChecklistConfirmation.tsx:63
|
#: src/views/card/components/DeleteChecklistConfirmation.tsx:64
|
||||||
#: src/views/card/components/DeleteCommentConfirmation.tsx:76
|
#: src/views/card/components/DeleteCommentConfirmation.tsx:77
|
||||||
#: src/views/members/components/DeleteMemberConfirmation.tsx:55
|
#: src/views/members/components/DeleteMemberConfirmation.tsx:55
|
||||||
#: src/views/settings/components/Avatar.tsx:306
|
#: src/views/settings/components/Avatar.tsx:306
|
||||||
#: src/views/settings/components/ChangePasswordConfirmation.tsx:168
|
#: src/views/settings/components/ChangePasswordConfirmation.tsx:168
|
||||||
@@ -419,8 +424,8 @@ msgstr "Cambia password"
|
|||||||
msgid "Change your language preferences."
|
msgid "Change your language preferences."
|
||||||
msgstr "Modifica le tue preferenze di lingua."
|
msgstr "Modifica le tue preferenze di lingua."
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:220
|
#: src/views/card/components/ActivityList.tsx:255
|
||||||
#: src/views/card/components/ActivityList.tsx:234
|
#: src/views/card/components/ActivityList.tsx:269
|
||||||
msgid "changed the due date to <0>{formattedDate}</0>"
|
msgid "changed the due date to <0>{formattedDate}</0>"
|
||||||
msgstr "ha cambiato la data di scadenza a <0>{formattedDate}</0>"
|
msgstr "ha cambiato la data di scadenza a <0>{formattedDate}</0>"
|
||||||
|
|
||||||
@@ -433,7 +438,7 @@ msgstr "Dai un'occhiata ad alcuni dei nostri progetti open source preferiti."
|
|||||||
msgid "Check your inbox"
|
msgid "Check your inbox"
|
||||||
msgstr "Controlla la tua casella di posta"
|
msgstr "Controlla la tua casella di posta"
|
||||||
|
|
||||||
#: src/views/card/components/NewChecklistForm.tsx:118
|
#: src/views/card/components/NewChecklistForm.tsx:119
|
||||||
msgid "Checklist name"
|
msgid "Checklist name"
|
||||||
msgstr "Nome della checklist"
|
msgstr "Nome della checklist"
|
||||||
|
|
||||||
@@ -494,12 +499,12 @@ msgstr "Completato"
|
|||||||
msgid "Complete control and ownership:"
|
msgid "Complete control and ownership:"
|
||||||
msgstr "Controllo e proprietà completi:"
|
msgstr "Controllo e proprietà completi:"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:71
|
#: src/views/card/components/ActivityList.tsx:112
|
||||||
msgid "completed a checklist item"
|
msgid "completed a checklist item"
|
||||||
msgstr "ha completato un elemento della checklist"
|
msgstr "ha completato un elemento della checklist"
|
||||||
|
|
||||||
#. placeholder {0}: truncate(toTitle)
|
#. placeholder {0}: truncate(toTitle)
|
||||||
#: src/views/card/components/ActivityList.tsx:187
|
#: src/views/card/components/ActivityList.tsx:222
|
||||||
msgid "completed checklist item <0>{0}</0>"
|
msgid "completed checklist item <0>{0}</0>"
|
||||||
msgstr "ha completato l'elemento <0>{0}</0> della checklist"
|
msgstr "ha completato l'elemento <0>{0}</0> della checklist"
|
||||||
|
|
||||||
@@ -573,7 +578,7 @@ msgstr "Crea chiave API"
|
|||||||
msgid "Create card"
|
msgid "Create card"
|
||||||
msgstr "Crea carta"
|
msgstr "Crea carta"
|
||||||
|
|
||||||
#: src/views/card/components/NewChecklistForm.tsx:134
|
#: src/views/card/components/NewChecklistForm.tsx:135
|
||||||
msgid "Create checklist"
|
msgid "Create checklist"
|
||||||
msgstr "Crea checklist"
|
msgstr "Crea checklist"
|
||||||
|
|
||||||
@@ -600,12 +605,12 @@ msgid "Create new key"
|
|||||||
msgstr "Crea nuova chiave"
|
msgstr "Crea nuova chiave"
|
||||||
|
|
||||||
#: src/views/board/components/NewCardForm.tsx:414
|
#: src/views/board/components/NewCardForm.tsx:414
|
||||||
#: src/views/card/components/LabelSelector.tsx:97
|
#: src/views/card/components/LabelSelector.tsx:98
|
||||||
msgid "Create new label"
|
msgid "Create new label"
|
||||||
msgstr "Crea nuova etichetta"
|
msgstr "Crea nuova etichetta"
|
||||||
|
|
||||||
#: src/views/board/index.tsx:65
|
#: src/views/board/index.tsx:64
|
||||||
#: src/views/board/index.tsx:503
|
#: src/views/board/index.tsx:499
|
||||||
msgid "Create new list"
|
msgid "Create new list"
|
||||||
msgstr "Crea nuova lista"
|
msgstr "Crea nuova lista"
|
||||||
|
|
||||||
@@ -618,7 +623,7 @@ msgstr "Crea template"
|
|||||||
msgid "Create workspace"
|
msgid "Create workspace"
|
||||||
msgstr "Crea spazio di lavoro"
|
msgstr "Crea spazio di lavoro"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:58
|
#: src/views/card/components/ActivityList.tsx:99
|
||||||
msgid "created the card"
|
msgid "created the card"
|
||||||
msgstr "ha creato la carta"
|
msgstr "ha creato la carta"
|
||||||
|
|
||||||
@@ -676,8 +681,8 @@ msgstr "Disattiva link di invito"
|
|||||||
#: src/components/LabelForm.tsx:228
|
#: src/components/LabelForm.tsx:228
|
||||||
#: src/views/board/components/DeleteBoardConfirmation.tsx:47
|
#: src/views/board/components/DeleteBoardConfirmation.tsx:47
|
||||||
#: src/views/card/components/DeleteCardConfirmation.tsx:92
|
#: src/views/card/components/DeleteCardConfirmation.tsx:92
|
||||||
#: src/views/card/components/DeleteChecklistConfirmation.tsx:66
|
#: src/views/card/components/DeleteChecklistConfirmation.tsx:67
|
||||||
#: src/views/card/components/DeleteCommentConfirmation.tsx:82
|
#: src/views/card/components/DeleteCommentConfirmation.tsx:83
|
||||||
msgid "Delete"
|
msgid "Delete"
|
||||||
msgstr "Elimina"
|
msgstr "Elimina"
|
||||||
|
|
||||||
@@ -695,7 +700,7 @@ msgstr "Elimina bacheca"
|
|||||||
msgid "Delete card"
|
msgid "Delete card"
|
||||||
msgstr "Elimina carta"
|
msgstr "Elimina carta"
|
||||||
|
|
||||||
#: src/views/card/components/Comment.tsx:91
|
#: src/views/card/components/Comment.tsx:92
|
||||||
msgid "Delete comment"
|
msgid "Delete comment"
|
||||||
msgstr "Elimina commento"
|
msgstr "Elimina commento"
|
||||||
|
|
||||||
@@ -713,21 +718,21 @@ msgstr "Elimina template"
|
|||||||
msgid "Delete workspace"
|
msgid "Delete workspace"
|
||||||
msgstr "Elimina spazio di lavoro"
|
msgstr "Elimina spazio di lavoro"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:68
|
#: src/views/card/components/ActivityList.tsx:109
|
||||||
msgid "deleted a checklist"
|
msgid "deleted a checklist"
|
||||||
msgstr "ha eliminato una checklist"
|
msgstr "ha eliminato una checklist"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:73
|
#: src/views/card/components/ActivityList.tsx:114
|
||||||
msgid "deleted a checklist item"
|
msgid "deleted a checklist item"
|
||||||
msgstr "ha eliminato un elemento della checklist"
|
msgstr "ha eliminato un elemento della checklist"
|
||||||
|
|
||||||
#. placeholder {0}: truncate(fromTitle)
|
#. placeholder {0}: truncate(fromTitle)
|
||||||
#: src/views/card/components/ActivityList.tsx:162
|
#: src/views/card/components/ActivityList.tsx:197
|
||||||
msgid "deleted checklist <0>{0}</0>"
|
msgid "deleted checklist <0>{0}</0>"
|
||||||
msgstr "ha eliminato la checklist <0>{0}</0>"
|
msgstr "ha eliminato la checklist <0>{0}</0>"
|
||||||
|
|
||||||
#. placeholder {0}: truncate(fromTitle)
|
#. placeholder {0}: truncate(fromTitle)
|
||||||
#: src/views/card/components/ActivityList.tsx:205
|
#: src/views/card/components/ActivityList.tsx:240
|
||||||
msgid "deleted checklist item <0>{0}</0>"
|
msgid "deleted checklist item <0>{0}</0>"
|
||||||
msgstr "ha eliminato l'elemento <0>{0}</0> della checklist"
|
msgstr "ha eliminato l'elemento <0>{0}</0> della checklist"
|
||||||
|
|
||||||
@@ -793,13 +798,13 @@ msgstr "Non hai un account? <0><1>Registrati</1></0>"
|
|||||||
msgid "Done"
|
msgid "Done"
|
||||||
msgstr "Fatto"
|
msgstr "Fatto"
|
||||||
|
|
||||||
#: src/views/card/components/AttachmentThumbnails.tsx:141
|
#: src/views/card/components/AttachmentThumbnails.tsx:142
|
||||||
msgid "Download failed"
|
msgid "Download failed"
|
||||||
msgstr "Download fallito"
|
msgstr "Download fallito"
|
||||||
|
|
||||||
#: src/views/board/components/Filters.tsx:171
|
#: src/views/board/components/Filters.tsx:171
|
||||||
#: src/views/board/components/NewCardForm.tsx:469
|
#: src/views/board/components/NewCardForm.tsx:469
|
||||||
#: src/views/card/index.tsx:138
|
#: src/views/card/index.tsx:139
|
||||||
msgid "Due date"
|
msgid "Due date"
|
||||||
msgstr "Data di scadenza"
|
msgstr "Data di scadenza"
|
||||||
|
|
||||||
@@ -824,7 +829,7 @@ msgstr "Scade domani"
|
|||||||
msgid "Edit board URL"
|
msgid "Edit board URL"
|
||||||
msgstr "Modifica URL della bacheca"
|
msgstr "Modifica URL della bacheca"
|
||||||
|
|
||||||
#: src/views/card/components/Comment.tsx:82
|
#: src/views/card/components/Comment.tsx:83
|
||||||
msgid "Edit comment"
|
msgid "Edit comment"
|
||||||
msgstr "Modifica commento"
|
msgstr "Modifica commento"
|
||||||
|
|
||||||
@@ -981,8 +986,8 @@ msgstr "Impossibile creare la bacheca"
|
|||||||
msgid "Failed to login with {0}. Please try again."
|
msgid "Failed to login with {0}. Please try again."
|
||||||
msgstr "Accesso con {0} fallito. Riprova."
|
msgstr "Accesso con {0} fallito. Riprova."
|
||||||
|
|
||||||
#: src/views/card/components/AttachmentUpload.tsx:33
|
#: src/views/card/components/AttachmentUpload.tsx:34
|
||||||
#: src/views/card/components/AttachmentUpload.tsx:79
|
#: src/views/card/components/AttachmentUpload.tsx:80
|
||||||
msgid "Failed to upload attachment. Please try again."
|
msgid "Failed to upload attachment. Please try again."
|
||||||
msgstr "Impossibile caricare l'allegato. Riprova."
|
msgstr "Impossibile caricare l'allegato. Riprova."
|
||||||
|
|
||||||
@@ -1042,8 +1047,6 @@ msgid "For long-term sustainability, we recognise all good open source projects
|
|||||||
msgstr "Per la sostenibilità a lungo termine, riconosciamo che tutti i buoni progetti open source necessitano di una fonte di entrate. La nostra proviene dall'offerta cloud a pagamento per gli spazi di lavoro con più utenti e per gli slug personalizzati degli spazi di lavoro. Non c'è alcun obbligo di utilizzarla, e puoi ospitare autonomamente il software sulla tua infrastruttura gratuitamente."
|
msgstr "Per la sostenibilità a lungo termine, riconosciamo che tutti i buoni progetti open source necessitano di una fonte di entrate. La nostra proviene dall'offerta cloud a pagamento per gli spazi di lavoro con più utenti e per gli slug personalizzati degli spazi di lavoro. Non c'è alcun obbligo di utilizzarla, e puoi ospitare autonomamente il software sulla tua infrastruttura gratuitamente."
|
||||||
|
|
||||||
#: src/views/pricing/components/Pricing.tsx:32
|
#: src/views/pricing/components/Pricing.tsx:32
|
||||||
#: src/views/pricing/components/Pricing.tsx:32
|
|
||||||
#: src/views/pricing/components/PricingTiers.tsx:30
|
|
||||||
#: src/views/pricing/components/PricingTiers.tsx:30
|
#: src/views/pricing/components/PricingTiers.tsx:30
|
||||||
msgid "Free"
|
msgid "Free"
|
||||||
msgstr "Gratuito"
|
msgstr "Gratuito"
|
||||||
@@ -1089,7 +1092,7 @@ msgstr "Inizia ora"
|
|||||||
msgid "Get started by creating a new {0}"
|
msgid "Get started by creating a new {0}"
|
||||||
msgstr "Inizia creando un nuovo {0}"
|
msgstr "Inizia creando un nuovo {0}"
|
||||||
|
|
||||||
#: src/views/board/index.tsx:495
|
#: src/views/board/index.tsx:491
|
||||||
msgid "Get started by creating a new list"
|
msgid "Get started by creating a new list"
|
||||||
msgstr "Inizia creando una nuova lista"
|
msgstr "Inizia creando una nuova lista"
|
||||||
|
|
||||||
@@ -1276,7 +1279,7 @@ msgstr "Link di invito"
|
|||||||
msgid "Invite links require a Team or Pro subscription. Please upgrade your workspace."
|
msgid "Invite links require a Team or Pro subscription. Please upgrade your workspace."
|
||||||
msgstr "I link di invito richiedono un abbonamento Team o Pro. Per favore aggiorna il tuo spazio di lavoro."
|
msgstr "I link di invito richiedono un abbonamento Team o Pro. Per favore aggiorna il tuo spazio di lavoro."
|
||||||
|
|
||||||
#: src/views/card/components/MemberSelector.tsx:111
|
#: src/views/card/components/MemberSelector.tsx:112
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:367
|
#: src/views/members/components/InviteMemberForm.tsx:367
|
||||||
msgid "Invite member"
|
msgid "Invite member"
|
||||||
msgstr "Invita membro"
|
msgstr "Invita membro"
|
||||||
@@ -1325,7 +1328,7 @@ msgstr "Scorciatoie da tastiera"
|
|||||||
|
|
||||||
#: src/views/board/components/Filters.tsx:155
|
#: src/views/board/components/Filters.tsx:155
|
||||||
#: src/views/board/components/NewCardForm.tsx:418
|
#: src/views/board/components/NewCardForm.tsx:418
|
||||||
#: src/views/card/index.tsx:120
|
#: src/views/card/index.tsx:121
|
||||||
msgid "Labels"
|
msgid "Labels"
|
||||||
msgstr "Etichette"
|
msgstr "Etichette"
|
||||||
|
|
||||||
@@ -1375,11 +1378,11 @@ msgstr "Licenza"
|
|||||||
msgid "Light"
|
msgid "Light"
|
||||||
msgstr "Chiaro"
|
msgstr "Chiaro"
|
||||||
|
|
||||||
#: src/views/public/board/index.tsx:77
|
#: src/views/public/board/index.tsx:78
|
||||||
msgid "Link copied"
|
msgid "Link copied"
|
||||||
msgstr "Link copiato"
|
msgstr "Link copiato"
|
||||||
|
|
||||||
#: src/views/card/index.tsx:112
|
#: src/views/card/index.tsx:113
|
||||||
msgid "List"
|
msgid "List"
|
||||||
msgstr "Lista"
|
msgstr "Lista"
|
||||||
|
|
||||||
@@ -1391,6 +1394,14 @@ msgstr "Nome lista"
|
|||||||
msgid "Lists"
|
msgid "Lists"
|
||||||
msgstr "Liste"
|
msgstr "Liste"
|
||||||
|
|
||||||
|
#: src/views/card/components/ActivityList.tsx:530
|
||||||
|
msgid "Load more activities"
|
||||||
|
msgstr "Carica altre attività"
|
||||||
|
|
||||||
|
#: src/views/card/components/ActivityList.tsx:530
|
||||||
|
msgid "Loading..."
|
||||||
|
msgstr "Caricamento in corso..."
|
||||||
|
|
||||||
#: src/views/auth/login/index.tsx:33
|
#: src/views/auth/login/index.tsx:33
|
||||||
msgid "Login | kan.bn"
|
msgid "Login | kan.bn"
|
||||||
msgstr "Login | kan.bn"
|
msgstr "Login | kan.bn"
|
||||||
@@ -1419,12 +1430,12 @@ msgstr "link magico"
|
|||||||
msgid "Make template"
|
msgid "Make template"
|
||||||
msgstr "Crea template"
|
msgstr "Crea template"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:72
|
#: src/views/card/components/ActivityList.tsx:113
|
||||||
msgid "marked a checklist item as incomplete"
|
msgid "marked a checklist item as incomplete"
|
||||||
msgstr "ha segnato un elemento della checklist come incompleto"
|
msgstr "ha segnato un elemento della checklist come incompleto"
|
||||||
|
|
||||||
#. placeholder {0}: truncate(toTitle)
|
#. placeholder {0}: truncate(toTitle)
|
||||||
#: src/views/card/components/ActivityList.tsx:196
|
#: src/views/card/components/ActivityList.tsx:231
|
||||||
msgid "marked checklist item <0>{0}</0> as incomplete"
|
msgid "marked checklist item <0>{0}</0> as incomplete"
|
||||||
msgstr "ha segnato l'elemento <0>{0}</0> della checklist come incompleto"
|
msgstr "ha segnato l'elemento <0>{0}</0> della checklist come incompleto"
|
||||||
|
|
||||||
@@ -1435,7 +1446,7 @@ msgstr "Media priorità"
|
|||||||
#: src/components/SideNavigation.tsx:121
|
#: src/components/SideNavigation.tsx:121
|
||||||
#: src/views/board/components/Filters.tsx:147
|
#: src/views/board/components/Filters.tsx:147
|
||||||
#: src/views/board/components/NewCardForm.tsx:376
|
#: src/views/board/components/NewCardForm.tsx:376
|
||||||
#: src/views/card/index.tsx:129
|
#: src/views/card/index.tsx:130
|
||||||
#: src/views/members/index.tsx:178
|
#: src/views/members/index.tsx:178
|
||||||
msgid "Members"
|
msgid "Members"
|
||||||
msgstr "Membri"
|
msgstr "Membri"
|
||||||
@@ -1456,11 +1467,11 @@ msgstr "fatturazione mensile"
|
|||||||
|
|
||||||
#. placeholder {0}: truncate(fromList)
|
#. placeholder {0}: truncate(fromList)
|
||||||
#. placeholder {1}: truncate(toList)
|
#. placeholder {1}: truncate(toList)
|
||||||
#: src/views/card/components/ActivityList.tsx:98
|
#: src/views/card/components/ActivityList.tsx:133
|
||||||
msgid "moved the card from <0>{0}</0> to<1>{1}</1>"
|
msgid "moved the card from <0>{0}</0> to<1>{1}</1>"
|
||||||
msgstr "ha spostato la scheda da <0>{0}</0> a<1>{1}</1>"
|
msgstr "ha spostato la scheda da <0>{0}</0> a<1>{1}</1>"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:61
|
#: src/views/card/components/ActivityList.tsx:102
|
||||||
msgid "moved the card to another list"
|
msgid "moved the card to another list"
|
||||||
msgstr "ha spostato la scheda in un'altra lista"
|
msgstr "ha spostato la scheda in un'altra lista"
|
||||||
|
|
||||||
@@ -1496,7 +1507,7 @@ msgstr "Nuova chiave API"
|
|||||||
msgid "New card"
|
msgid "New card"
|
||||||
msgstr "Nuova carta"
|
msgstr "Nuova carta"
|
||||||
|
|
||||||
#: src/views/card/components/NewChecklistForm.tsx:102
|
#: src/views/card/components/NewChecklistForm.tsx:103
|
||||||
msgid "New checklist"
|
msgid "New checklist"
|
||||||
msgstr "Nuova checklist"
|
msgstr "Nuova checklist"
|
||||||
|
|
||||||
@@ -1509,7 +1520,7 @@ msgid "New label"
|
|||||||
msgstr "Nuova etichetta"
|
msgstr "Nuova etichetta"
|
||||||
|
|
||||||
#: src/views/board/components/NewListForm.tsx:113
|
#: src/views/board/components/NewListForm.tsx:113
|
||||||
#: src/views/board/index.tsx:466
|
#: src/views/board/index.tsx:462
|
||||||
msgid "New list"
|
msgid "New list"
|
||||||
msgstr "Nuova lista"
|
msgstr "Nuova lista"
|
||||||
|
|
||||||
@@ -1562,7 +1573,7 @@ msgstr "Nessuna carta di credito richiesta"
|
|||||||
msgid "No dates"
|
msgid "No dates"
|
||||||
msgstr "Nessuna data"
|
msgstr "Nessuna data"
|
||||||
|
|
||||||
#: src/views/card/components/AttachmentThumbnails.tsx:142
|
#: src/views/card/components/AttachmentThumbnails.tsx:143
|
||||||
msgid "No download URL available for this attachment."
|
msgid "No download URL available for this attachment."
|
||||||
msgstr "Nessun URL di download disponibile per questo allegato."
|
msgstr "Nessun URL di download disponibile per questo allegato."
|
||||||
|
|
||||||
@@ -1570,7 +1581,7 @@ msgstr "Nessun URL di download disponibile per questo allegato."
|
|||||||
msgid "No keyboard shortcuts registered."
|
msgid "No keyboard shortcuts registered."
|
||||||
msgstr "Nessuna scorciatoia da tastiera registrata."
|
msgstr "Nessuna scorciatoia da tastiera registrata."
|
||||||
|
|
||||||
#: src/views/board/index.tsx:492
|
#: src/views/board/index.tsx:488
|
||||||
msgid "No lists"
|
msgid "No lists"
|
||||||
msgstr "Nessuna lista"
|
msgstr "Nessuna lista"
|
||||||
|
|
||||||
@@ -1721,24 +1732,25 @@ msgstr "Seleziona un file da caricare."
|
|||||||
#: src/views/board/components/NewTemplateForm.tsx:77
|
#: src/views/board/components/NewTemplateForm.tsx:77
|
||||||
#: src/views/board/components/UpdateBoardSlugForm.tsx:73
|
#: src/views/board/components/UpdateBoardSlugForm.tsx:73
|
||||||
#: src/views/board/components/VisibilityButton.tsx:54
|
#: src/views/board/components/VisibilityButton.tsx:54
|
||||||
#: src/views/board/index.tsx:174
|
#: src/views/board/index.tsx:170
|
||||||
#: src/views/board/index.tsx:230
|
#: src/views/board/index.tsx:226
|
||||||
#: src/views/boards/components/ImportBoardsForm.tsx:205
|
#: src/views/boards/components/ImportBoardsForm.tsx:205
|
||||||
#: src/views/card/components/AttachmentThumbnails.tsx:73
|
#: src/views/card/components/AttachmentThumbnails.tsx:74
|
||||||
#: src/views/card/components/ChecklistItemRow.tsx:60
|
#: src/views/card/components/ChecklistItemRow.tsx:67
|
||||||
#: src/views/card/components/ChecklistItemRow.tsx:88
|
#: src/views/card/components/ChecklistItemRow.tsx:95
|
||||||
#: src/views/card/components/ChecklistNameInput.tsx:46
|
#: src/views/card/components/ChecklistNameInput.tsx:47
|
||||||
#: src/views/card/components/Comment.tsx:64
|
#: src/views/card/components/Checklists.tsx:81
|
||||||
|
#: src/views/card/components/Comment.tsx:65
|
||||||
#: src/views/card/components/DeleteCardConfirmation.tsx:52
|
#: src/views/card/components/DeleteCardConfirmation.tsx:52
|
||||||
#: src/views/card/components/DeleteChecklistConfirmation.tsx:37
|
#: src/views/card/components/DeleteChecklistConfirmation.tsx:38
|
||||||
#: src/views/card/components/DeleteCommentConfirmation.tsx:45
|
#: src/views/card/components/DeleteCommentConfirmation.tsx:46
|
||||||
#: src/views/card/components/DueDateSelector.tsx:59
|
#: src/views/card/components/DueDateSelector.tsx:60
|
||||||
#: src/views/card/components/LabelSelector.tsx:72
|
#: src/views/card/components/LabelSelector.tsx:73
|
||||||
#: src/views/card/components/ListSelector.tsx:52
|
#: src/views/card/components/ListSelector.tsx:53
|
||||||
#: src/views/card/components/MemberSelector.tsx:79
|
#: src/views/card/components/MemberSelector.tsx:80
|
||||||
#: src/views/card/components/NewChecklistForm.tsx:70
|
#: src/views/card/components/NewChecklistForm.tsx:71
|
||||||
#: src/views/card/components/NewChecklistItemForm.tsx:89
|
#: src/views/card/components/NewChecklistItemForm.tsx:90
|
||||||
#: src/views/card/components/NewCommentForm.tsx:31
|
#: src/views/card/components/NewCommentForm.tsx:32
|
||||||
#: src/views/card/index.tsx:187
|
#: src/views/card/index.tsx:187
|
||||||
#: src/views/card/index.tsx:200
|
#: src/views/card/index.tsx:200
|
||||||
#: src/views/members/components/DeleteMemberConfirmation.tsx:28
|
#: src/views/members/components/DeleteMemberConfirmation.tsx:28
|
||||||
@@ -1840,35 +1852,40 @@ msgstr "Rimuovi"
|
|||||||
msgid "Remove member"
|
msgid "Remove member"
|
||||||
msgstr "Rimuovi membro"
|
msgstr "Rimuovi membro"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:63
|
#. placeholder {0}: mergedLabels.length
|
||||||
|
#: src/views/card/components/ActivityList.tsx:91
|
||||||
|
msgid "removed {0} labels: <0>{labelList}</0>"
|
||||||
|
msgstr "ha rimosso {0} etichette: <0>{labelList}</0>"
|
||||||
|
|
||||||
|
#: src/views/card/components/ActivityList.tsx:104
|
||||||
msgid "removed a label from the card"
|
msgid "removed a label from the card"
|
||||||
msgstr "ha rimosso un'etichetta dalla scheda"
|
msgstr "ha rimosso un'etichetta dalla scheda"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:65
|
#: src/views/card/components/ActivityList.tsx:106
|
||||||
msgid "removed a member from the card"
|
msgid "removed a member from the card"
|
||||||
msgstr "ha rimosso un membro dalla scheda"
|
msgstr "ha rimosso un membro dalla scheda"
|
||||||
|
|
||||||
#. placeholder {0}: truncate(label)
|
#. placeholder {0}: truncate(label)
|
||||||
#: src/views/card/components/ActivityList.tsx:138
|
#: src/views/card/components/ActivityList.tsx:173
|
||||||
msgid "removed label <0>{0}</0>"
|
msgid "removed label <0>{0}</0>"
|
||||||
msgstr "ha rimosso l'etichetta <0>{0}</0>"
|
msgstr "ha rimosso l'etichetta <0>{0}</0>"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:76
|
#: src/views/card/components/ActivityList.tsx:117
|
||||||
#: src/views/card/components/ActivityList.tsx:241
|
#: src/views/card/components/ActivityList.tsx:276
|
||||||
msgid "removed the due date"
|
msgid "removed the due date"
|
||||||
msgstr "ha rimosso la data di scadenza"
|
msgstr "ha rimosso la data di scadenza"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:67
|
#: src/views/card/components/ActivityList.tsx:108
|
||||||
msgid "renamed a checklist"
|
msgid "renamed a checklist"
|
||||||
msgstr "ha rinominato una checklist"
|
msgstr "ha rinominato una checklist"
|
||||||
|
|
||||||
#. placeholder {0}: truncate(toTitle)
|
#. placeholder {0}: truncate(toTitle)
|
||||||
#: src/views/card/components/ActivityList.tsx:154
|
#: src/views/card/components/ActivityList.tsx:189
|
||||||
msgid "renamed checklist <0>{0}</0>"
|
msgid "renamed checklist <0>{0}</0>"
|
||||||
msgstr "ha rinominato la checklist <0>{0}</0>"
|
msgstr "ha rinominato la checklist <0>{0}</0>"
|
||||||
|
|
||||||
#. placeholder {0}: truncate(toTitle)
|
#. placeholder {0}: truncate(toTitle)
|
||||||
#: src/views/card/components/ActivityList.tsx:178
|
#: src/views/card/components/ActivityList.tsx:213
|
||||||
msgid "renamed checklist item to <0>{0}</0>"
|
msgid "renamed checklist item to <0>{0}</0>"
|
||||||
msgstr "ha rinominato l'elemento della checklist in <0>{0}</0>"
|
msgstr "ha rinominato l'elemento della checklist in <0>{0}</0>"
|
||||||
|
|
||||||
@@ -1907,7 +1924,7 @@ msgstr "Ruolo"
|
|||||||
msgid "Run on your own infrastructure"
|
msgid "Run on your own infrastructure"
|
||||||
msgstr "Esegui sulla tua infrastruttura"
|
msgstr "Esegui sulla tua infrastruttura"
|
||||||
|
|
||||||
#: src/views/card/components/Comment.tsx:165
|
#: src/views/card/components/Comment.tsx:166
|
||||||
#: src/views/settings/components/Avatar.tsx:309
|
#: src/views/settings/components/Avatar.tsx:309
|
||||||
msgid "Save"
|
msgid "Save"
|
||||||
msgstr "Salva"
|
msgstr "Salva"
|
||||||
@@ -1945,7 +1962,7 @@ msgstr "Self Host"
|
|||||||
msgid "Self host with Github"
|
msgid "Self host with Github"
|
||||||
msgstr "Self host con Github"
|
msgstr "Self host con Github"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:107
|
#: src/views/card/components/ActivityList.tsx:142
|
||||||
msgid "self-assigned the card"
|
msgid "self-assigned the card"
|
||||||
msgstr "si è auto-assegnato la scheda"
|
msgstr "si è auto-assegnato la scheda"
|
||||||
|
|
||||||
@@ -1961,11 +1978,11 @@ msgstr "Invia feedback"
|
|||||||
msgid "Senior"
|
msgid "Senior"
|
||||||
msgstr "Senior"
|
msgstr "Senior"
|
||||||
|
|
||||||
#: src/views/card/components/DueDateSelector.tsx:116
|
#: src/views/card/components/DueDateSelector.tsx:117
|
||||||
msgid "Set due date"
|
msgid "Set due date"
|
||||||
msgstr "Imposta data di scadenza"
|
msgstr "Imposta data di scadenza"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:74
|
#: src/views/card/components/ActivityList.tsx:115
|
||||||
msgid "set the due date"
|
msgid "set the due date"
|
||||||
msgstr "ha impostato la data di scadenza"
|
msgstr "ha impostato la data di scadenza"
|
||||||
|
|
||||||
@@ -2090,8 +2107,8 @@ msgstr "Piano Team"
|
|||||||
msgid "Teams"
|
msgid "Teams"
|
||||||
msgstr "Team"
|
msgstr "Team"
|
||||||
|
|
||||||
#: src/views/board/index.tsx:386
|
#: src/views/board/index.tsx:382
|
||||||
#: src/views/board/index.tsx:421
|
#: src/views/board/index.tsx:417
|
||||||
msgid "Template"
|
msgid "Template"
|
||||||
msgstr "Template"
|
msgstr "Template"
|
||||||
|
|
||||||
@@ -2156,8 +2173,8 @@ msgstr "Non potranno accedere a questo spazio di lavoro."
|
|||||||
#: src/components/DeleteLabelConfirmation.tsx:44
|
#: src/components/DeleteLabelConfirmation.tsx:44
|
||||||
#: src/views/board/components/DeleteBoardConfirmation.tsx:39
|
#: src/views/board/components/DeleteBoardConfirmation.tsx:39
|
||||||
#: src/views/card/components/DeleteCardConfirmation.tsx:78
|
#: src/views/card/components/DeleteCardConfirmation.tsx:78
|
||||||
#: src/views/card/components/DeleteChecklistConfirmation.tsx:58
|
#: src/views/card/components/DeleteChecklistConfirmation.tsx:59
|
||||||
#: src/views/card/components/DeleteCommentConfirmation.tsx:68
|
#: src/views/card/components/DeleteCommentConfirmation.tsx:69
|
||||||
msgid "This action can't be undone."
|
msgid "This action can't be undone."
|
||||||
msgstr "Questa azione non può essere annullata."
|
msgstr "Questa azione non può essere annullata."
|
||||||
|
|
||||||
@@ -2165,7 +2182,7 @@ msgstr "Questa azione non può essere annullata."
|
|||||||
msgid "This API key will only be shown once. Please save it in a secure location."
|
msgid "This API key will only be shown once. Please save it in a secure location."
|
||||||
msgstr "Questa chiave API verrà mostrata una sola volta. Salvala in un luogo sicuro."
|
msgstr "Questa chiave API verrà mostrata una sola volta. Salvala in un luogo sicuro."
|
||||||
|
|
||||||
#: src/views/public/board/index.tsx:168
|
#: src/views/public/board/index.tsx:169
|
||||||
msgid "This board is private or does not exist"
|
msgid "This board is private or does not exist"
|
||||||
msgstr "Questa bacheca è privata o non esiste"
|
msgstr "Questa bacheca è privata o non esiste"
|
||||||
|
|
||||||
@@ -2227,27 +2244,27 @@ msgstr "Importazioni da Trello"
|
|||||||
msgid "Triaging"
|
msgid "Triaging"
|
||||||
msgstr "Smistamento"
|
msgstr "Smistamento"
|
||||||
|
|
||||||
#: src/views/home/components/Logos.tsx:73
|
#: src/views/home/components/Logos.tsx:67
|
||||||
msgid "Trusted by fast-moving teams<0/>around the world"
|
msgid "Trusted by fast-moving teams<0/>around the world"
|
||||||
msgstr "Team dinamici di tutto il mondo<0/>si fidano di noi"
|
msgstr "Team dinamici di tutto il mondo<0/>si fidano di noi"
|
||||||
|
|
||||||
#: src/views/card/components/NewChecklistItemForm.tsx:88
|
#: src/views/card/components/NewChecklistItemForm.tsx:89
|
||||||
msgid "Unable to add checklist item"
|
msgid "Unable to add checklist item"
|
||||||
msgstr "Impossibile aggiungere l'elemento della checklist"
|
msgstr "Impossibile aggiungere l'elemento della checklist"
|
||||||
|
|
||||||
#: src/views/card/components/NewCommentForm.tsx:30
|
#: src/views/card/components/NewCommentForm.tsx:31
|
||||||
msgid "Unable to add comment"
|
msgid "Unable to add comment"
|
||||||
msgstr "Impossibile aggiungere il commento"
|
msgstr "Impossibile aggiungere il commento"
|
||||||
|
|
||||||
#: src/views/card/index.tsx:199
|
#: src/views/card/index.tsx:199
|
||||||
msgid "Unable to add label"
|
msgid "Unable to add label"
|
||||||
msgstr ""
|
msgstr "Impossibile aggiungere etichetta"
|
||||||
|
|
||||||
#: src/views/board/components/NewCardForm.tsx:181
|
#: src/views/board/components/NewCardForm.tsx:181
|
||||||
msgid "Unable to create card"
|
msgid "Unable to create card"
|
||||||
msgstr "Impossibile creare la scheda"
|
msgstr "Impossibile creare la scheda"
|
||||||
|
|
||||||
#: src/views/card/components/NewChecklistForm.tsx:69
|
#: src/views/card/components/NewChecklistForm.tsx:70
|
||||||
msgid "Unable to create checklist"
|
msgid "Unable to create checklist"
|
||||||
msgstr "Impossibile creare la checklist"
|
msgstr "Impossibile creare la checklist"
|
||||||
|
|
||||||
@@ -2264,7 +2281,7 @@ msgstr "Impossibile creare il template"
|
|||||||
msgid "Unable to create workspace"
|
msgid "Unable to create workspace"
|
||||||
msgstr "Impossibile creare lo spazio di lavoro"
|
msgstr "Impossibile creare lo spazio di lavoro"
|
||||||
|
|
||||||
#: src/views/card/components/AttachmentThumbnails.tsx:72
|
#: src/views/card/components/AttachmentThumbnails.tsx:73
|
||||||
msgid "Unable to delete attachment"
|
msgid "Unable to delete attachment"
|
||||||
msgstr "Impossibile eliminare l'allegato"
|
msgstr "Impossibile eliminare l'allegato"
|
||||||
|
|
||||||
@@ -2272,15 +2289,15 @@ msgstr "Impossibile eliminare l'allegato"
|
|||||||
msgid "Unable to delete card"
|
msgid "Unable to delete card"
|
||||||
msgstr "Impossibile eliminare la scheda"
|
msgstr "Impossibile eliminare la scheda"
|
||||||
|
|
||||||
#: src/views/card/components/DeleteChecklistConfirmation.tsx:36
|
#: src/views/card/components/DeleteChecklistConfirmation.tsx:37
|
||||||
msgid "Unable to delete checklist"
|
msgid "Unable to delete checklist"
|
||||||
msgstr "Impossibile eliminare la checklist"
|
msgstr "Impossibile eliminare la checklist"
|
||||||
|
|
||||||
#: src/views/card/components/ChecklistItemRow.tsx:87
|
#: src/views/card/components/ChecklistItemRow.tsx:94
|
||||||
msgid "Unable to delete checklist item"
|
msgid "Unable to delete checklist item"
|
||||||
msgstr "Impossibile eliminare l'elemento della checklist"
|
msgstr "Impossibile eliminare l'elemento della checklist"
|
||||||
|
|
||||||
#: src/views/card/components/DeleteCommentConfirmation.tsx:44
|
#: src/views/card/components/DeleteCommentConfirmation.tsx:45
|
||||||
msgid "Unable to delete comment"
|
msgid "Unable to delete comment"
|
||||||
msgstr "Impossibile eliminare il commento"
|
msgstr "Impossibile eliminare il commento"
|
||||||
|
|
||||||
@@ -2288,6 +2305,10 @@ msgstr "Impossibile eliminare il commento"
|
|||||||
msgid "Unable to remove member"
|
msgid "Unable to remove member"
|
||||||
msgstr "Impossibile rimuovere il membro"
|
msgstr "Impossibile rimuovere il membro"
|
||||||
|
|
||||||
|
#: src/views/card/components/Checklists.tsx:80
|
||||||
|
msgid "Unable to reorder checklist item"
|
||||||
|
msgstr "Impossibile riordinare elemento della checklist"
|
||||||
|
|
||||||
#: src/components/FeedbackModal.tsx:40
|
#: src/components/FeedbackModal.tsx:40
|
||||||
msgid "Unable to send feedback"
|
msgid "Unable to send feedback"
|
||||||
msgstr "Impossibile inviare feedback"
|
msgstr "Impossibile inviare feedback"
|
||||||
@@ -2300,46 +2321,46 @@ msgstr "Impossibile aggiornare l'URL della bacheca"
|
|||||||
msgid "Unable to update board visibility"
|
msgid "Unable to update board visibility"
|
||||||
msgstr "Impossibile aggiornare la visibilità della bacheca"
|
msgstr "Impossibile aggiornare la visibilità della bacheca"
|
||||||
|
|
||||||
#: src/views/board/index.tsx:229
|
#: src/views/board/index.tsx:225
|
||||||
#: src/views/card/index.tsx:186
|
#: src/views/card/index.tsx:186
|
||||||
msgid "Unable to update card"
|
msgid "Unable to update card"
|
||||||
msgstr "Impossibile aggiornare la scheda"
|
msgstr "Impossibile aggiornare la scheda"
|
||||||
|
|
||||||
#: src/views/card/components/ChecklistNameInput.tsx:45
|
#: src/views/card/components/ChecklistNameInput.tsx:46
|
||||||
msgid "Unable to update checklist"
|
msgid "Unable to update checklist"
|
||||||
msgstr "Impossibile aggiornare la checklist"
|
msgstr "Impossibile aggiornare la checklist"
|
||||||
|
|
||||||
#: src/views/card/components/ChecklistItemRow.tsx:59
|
#: src/views/card/components/ChecklistItemRow.tsx:66
|
||||||
msgid "Unable to update checklist item"
|
msgid "Unable to update checklist item"
|
||||||
msgstr "Impossibile aggiornare l'elemento della checklist"
|
msgstr "Impossibile aggiornare l'elemento della checklist"
|
||||||
|
|
||||||
#: src/views/card/components/Comment.tsx:63
|
#: src/views/card/components/Comment.tsx:64
|
||||||
msgid "Unable to update comment"
|
msgid "Unable to update comment"
|
||||||
msgstr "Impossibile aggiornare il commento"
|
msgstr "Impossibile aggiornare il commento"
|
||||||
|
|
||||||
#: src/views/card/components/DueDateSelector.tsx:58
|
#: src/views/card/components/DueDateSelector.tsx:59
|
||||||
msgid "Unable to update due date"
|
msgid "Unable to update due date"
|
||||||
msgstr "Impossibile aggiornare la data di scadenza"
|
msgstr "Impossibile aggiornare la data di scadenza"
|
||||||
|
|
||||||
#: src/views/card/components/LabelSelector.tsx:71
|
#: src/views/card/components/LabelSelector.tsx:72
|
||||||
msgid "Unable to update labels"
|
msgid "Unable to update labels"
|
||||||
msgstr "Impossibile aggiornare le etichette"
|
msgstr "Impossibile aggiornare le etichette"
|
||||||
|
|
||||||
#: src/views/board/index.tsx:173
|
#: src/views/board/index.tsx:169
|
||||||
#: src/views/card/components/ListSelector.tsx:51
|
#: src/views/card/components/ListSelector.tsx:52
|
||||||
msgid "Unable to update list"
|
msgid "Unable to update list"
|
||||||
msgstr "Impossibile aggiornare la lista"
|
msgstr "Impossibile aggiornare la lista"
|
||||||
|
|
||||||
#: src/views/card/components/MemberSelector.tsx:78
|
#: src/views/card/components/MemberSelector.tsx:79
|
||||||
msgid "Unable to update members"
|
msgid "Unable to update members"
|
||||||
msgstr "Impossibile aggiornare i membri"
|
msgstr "Impossibile aggiornare i membri"
|
||||||
|
|
||||||
#. placeholder {0}: truncate(memberName)
|
#. placeholder {0}: truncate(memberName)
|
||||||
#: src/views/card/components/ActivityList.tsx:121
|
#: src/views/card/components/ActivityList.tsx:156
|
||||||
msgid "unassigned <0>{0}</0> from the card"
|
msgid "unassigned <0>{0}</0> from the card"
|
||||||
msgstr "ha rimosso l'assegnazione di <0>{0}</0> dalla scheda"
|
msgstr "ha rimosso l'assegnazione di <0>{0}</0> dalla scheda"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:118
|
#: src/views/card/components/ActivityList.tsx:153
|
||||||
msgid "unassigned themselves from the card"
|
msgid "unassigned themselves from the card"
|
||||||
msgstr "si è rimosso dall'assegnazione della scheda"
|
msgstr "si è rimosso dall'assegnazione della scheda"
|
||||||
|
|
||||||
@@ -2398,24 +2419,24 @@ msgstr "Aggiorna"
|
|||||||
msgid "Update label"
|
msgid "Update label"
|
||||||
msgstr "Aggiorna etichetta"
|
msgstr "Aggiorna etichetta"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:70
|
#: src/views/card/components/ActivityList.tsx:111
|
||||||
msgid "updated a checklist item"
|
msgid "updated a checklist item"
|
||||||
msgstr "ha aggiornato un elemento della checklist"
|
msgstr "ha aggiornato un elemento della checklist"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:60
|
#: src/views/card/components/ActivityList.tsx:101
|
||||||
msgid "updated the description"
|
msgid "updated the description"
|
||||||
msgstr "ha aggiornato la descrizione"
|
msgstr "ha aggiornato la descrizione"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:75
|
#: src/views/card/components/ActivityList.tsx:116
|
||||||
msgid "updated the due date"
|
msgid "updated the due date"
|
||||||
msgstr "ha aggiornato la data di scadenza"
|
msgstr "ha aggiornato la data di scadenza"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:59
|
#: src/views/card/components/ActivityList.tsx:100
|
||||||
msgid "updated the title"
|
msgid "updated the title"
|
||||||
msgstr "ha aggiornato il titolo"
|
msgstr "ha aggiornato il titolo"
|
||||||
|
|
||||||
#. placeholder {0}: truncate(toTitle)
|
#. placeholder {0}: truncate(toTitle)
|
||||||
#: src/views/card/components/ActivityList.tsx:90
|
#: src/views/card/components/ActivityList.tsx:125
|
||||||
msgid "updated the title to <0>{0}</0>"
|
msgid "updated the title to <0>{0}</0>"
|
||||||
msgstr "ha aggiornato il titolo in <0>{0}</0>"
|
msgstr "ha aggiornato il titolo in <0>{0}</0>"
|
||||||
|
|
||||||
@@ -2429,8 +2450,8 @@ msgstr "Passa a Pro"
|
|||||||
msgid "Upgrade to Pro ($29/month)"
|
msgid "Upgrade to Pro ($29/month)"
|
||||||
msgstr "Passa a Pro ($29/mese)"
|
msgstr "Passa a Pro ($29/mese)"
|
||||||
|
|
||||||
#: src/views/card/components/AttachmentUpload.tsx:32
|
#: src/views/card/components/AttachmentUpload.tsx:33
|
||||||
#: src/views/card/components/AttachmentUpload.tsx:78
|
#: src/views/card/components/AttachmentUpload.tsx:79
|
||||||
msgid "Upload failed"
|
msgid "Upload failed"
|
||||||
msgstr "Caricamento fallito"
|
msgstr "Caricamento fallito"
|
||||||
|
|
||||||
@@ -2483,7 +2504,7 @@ msgstr "Visualizza e gestisci la tua fatturazione e abbonamento."
|
|||||||
msgid "View docs"
|
msgid "View docs"
|
||||||
msgstr "Visualizza documenti"
|
msgstr "Visualizza documenti"
|
||||||
|
|
||||||
#: src/views/public/board/index.tsx:141
|
#: src/views/public/board/index.tsx:142
|
||||||
msgid "View only"
|
msgid "View only"
|
||||||
msgstr "Solo visualizzazione"
|
msgstr "Solo visualizzazione"
|
||||||
|
|
||||||
@@ -2491,7 +2512,7 @@ msgstr "Solo visualizzazione"
|
|||||||
msgid "View our roadmap."
|
msgid "View our roadmap."
|
||||||
msgstr "Visualizza la nostra roadmap."
|
msgstr "Visualizza la nostra roadmap."
|
||||||
|
|
||||||
#: src/views/public/board/index.tsx:171
|
#: src/views/public/board/index.tsx:172
|
||||||
msgid "View workspace"
|
msgid "View workspace"
|
||||||
msgstr "Visualizza spazio di lavoro"
|
msgstr "Visualizza spazio di lavoro"
|
||||||
|
|
||||||
@@ -2536,10 +2557,10 @@ msgid "Why make an open source Trello?"
|
|||||||
msgstr "Perché creare un Trello open source?"
|
msgstr "Perché creare un Trello open source?"
|
||||||
|
|
||||||
#: src/components/SettingsLayout.tsx:39
|
#: src/components/SettingsLayout.tsx:39
|
||||||
#: src/views/board/index.tsx:386
|
#: src/views/board/index.tsx:382
|
||||||
#: src/views/boards/index.tsx:33
|
#: src/views/boards/index.tsx:33
|
||||||
#: src/views/members/index.tsx:173
|
#: src/views/members/index.tsx:173
|
||||||
#: src/views/public/board/index.tsx:113
|
#: src/views/public/board/index.tsx:114
|
||||||
#: src/views/public/boards/index.tsx:66
|
#: src/views/public/boards/index.tsx:66
|
||||||
msgid "Workspace"
|
msgid "Workspace"
|
||||||
msgstr "Spazio di lavoro"
|
msgstr "Spazio di lavoro"
|
||||||
@@ -2673,7 +2694,7 @@ msgstr "Le tue bacheche sono state importate."
|
|||||||
msgid "Your display name has been updated."
|
msgid "Your display name has been updated."
|
||||||
msgstr "Il tuo nome visualizzato è stato aggiornato."
|
msgstr "Il tuo nome visualizzato è stato aggiornato."
|
||||||
|
|
||||||
#: src/views/card/components/AttachmentUpload.tsx:26
|
#: src/views/card/components/AttachmentUpload.tsx:27
|
||||||
msgid "Your file has been uploaded successfully."
|
msgid "Your file has been uploaded successfully."
|
||||||
msgstr "Il tuo file è stato caricato con successo."
|
msgstr "Il tuo file è stato caricato con successo."
|
||||||
|
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ msgstr ""
|
|||||||
"Language-Team: \n"
|
"Language-Team: \n"
|
||||||
"Plural-Forms: \n"
|
"Plural-Forms: \n"
|
||||||
|
|
||||||
#: src/views/card/components/Comment.tsx:123
|
#: src/views/card/components/Comment.tsx:124
|
||||||
msgid " (edited)"
|
msgid " (edited)"
|
||||||
msgstr " (bewerkt)"
|
msgstr " (bewerkt)"
|
||||||
|
|
||||||
@@ -41,7 +41,7 @@ msgid "{0} labels"
|
|||||||
msgstr "{0} labels"
|
msgstr "{0} labels"
|
||||||
|
|
||||||
#. placeholder {0}: isTemplate ? "Template" : "Board"
|
#. placeholder {0}: isTemplate ? "Template" : "Board"
|
||||||
#: src/views/board/index.tsx:412
|
#: src/views/board/index.tsx:408
|
||||||
msgid "{0} not found"
|
msgid "{0} not found"
|
||||||
msgstr "{0} niet gevonden"
|
msgstr "{0} niet gevonden"
|
||||||
|
|
||||||
@@ -100,12 +100,12 @@ msgstr "Activiteitenlogboeken"
|
|||||||
msgid "Add a card"
|
msgid "Add a card"
|
||||||
msgstr "Voeg een kaart toe"
|
msgstr "Voeg een kaart toe"
|
||||||
|
|
||||||
#: src/views/card/components/Comment.tsx:146
|
#: src/views/card/components/Comment.tsx:147
|
||||||
#: src/views/card/components/NewCommentForm.tsx:57
|
#: src/views/card/components/NewCommentForm.tsx:55
|
||||||
msgid "Add a comment..."
|
msgid "Add a comment..."
|
||||||
msgstr "Voeg een reactie toe..."
|
msgstr "Voeg een reactie toe..."
|
||||||
|
|
||||||
#: src/views/card/components/NewChecklistItemForm.tsx:140
|
#: src/views/card/components/NewChecklistItemForm.tsx:141
|
||||||
msgid "Add an item..."
|
msgid "Add an item..."
|
||||||
msgstr "Voeg een item toe..."
|
msgstr "Voeg een item toe..."
|
||||||
|
|
||||||
@@ -117,48 +117,53 @@ msgstr "Checklist toevoegen"
|
|||||||
msgid "Add description... (type '/' to open commands or '@' to mention)"
|
msgid "Add description... (type '/' to open commands or '@' to mention)"
|
||||||
msgstr "Beschrijving toevoegen... (typ '/' om commando's te openen of '@' om te vermelden)"
|
msgstr "Beschrijving toevoegen... (typ '/' om commando's te openen of '@' om te vermelden)"
|
||||||
|
|
||||||
#: src/views/card/components/ChecklistItemRow.tsx:172
|
#: src/views/card/components/ChecklistItemRow.tsx:195
|
||||||
msgid "Add details..."
|
msgid "Add details..."
|
||||||
msgstr "Details toevoegen..."
|
msgstr "Details toevoegen..."
|
||||||
|
|
||||||
#: src/views/card/components/LabelSelector.tsx:109
|
#: src/views/card/components/LabelSelector.tsx:110
|
||||||
#: src/views/card/components/LabelSelector.tsx:114
|
#: src/views/card/components/LabelSelector.tsx:115
|
||||||
msgid "Add label"
|
msgid "Add label"
|
||||||
msgstr "Label toevoegen"
|
msgstr "Label toevoegen"
|
||||||
|
|
||||||
#: src/views/card/components/MemberSelector.tsx:130
|
#: src/views/card/components/MemberSelector.tsx:131
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:257
|
#: src/views/members/components/InviteMemberForm.tsx:257
|
||||||
msgid "Add member"
|
msgid "Add member"
|
||||||
msgstr "Lid toevoegen"
|
msgstr "Lid toevoegen"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:66
|
#. placeholder {0}: mergedLabels.length
|
||||||
|
#: src/views/card/components/ActivityList.tsx:77
|
||||||
|
msgid "added {0} labels: <0>{labelList}</0>"
|
||||||
|
msgstr "{0} labels toegevoegd: <0>{labelList}</0>"
|
||||||
|
|
||||||
|
#: src/views/card/components/ActivityList.tsx:107
|
||||||
msgid "added a checklist"
|
msgid "added a checklist"
|
||||||
msgstr "heeft een checklist toegevoegd"
|
msgstr "heeft een checklist toegevoegd"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:69
|
#: src/views/card/components/ActivityList.tsx:110
|
||||||
msgid "added a checklist item"
|
msgid "added a checklist item"
|
||||||
msgstr "heeft een checklistitem toegevoegd"
|
msgstr "heeft een checklistitem toegevoegd"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:62
|
#: src/views/card/components/ActivityList.tsx:103
|
||||||
msgid "added a label to the card"
|
msgid "added a label to the card"
|
||||||
msgstr "heeft een label aan de kaart toegevoegd"
|
msgstr "heeft een label aan de kaart toegevoegd"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:64
|
#: src/views/card/components/ActivityList.tsx:105
|
||||||
msgid "added a member to the card"
|
msgid "added a member to the card"
|
||||||
msgstr "heeft een lid aan de kaart toegevoegd"
|
msgstr "heeft een lid aan de kaart toegevoegd"
|
||||||
|
|
||||||
#. placeholder {0}: truncate(toTitle)
|
#. placeholder {0}: truncate(toTitle)
|
||||||
#: src/views/card/components/ActivityList.tsx:146
|
#: src/views/card/components/ActivityList.tsx:181
|
||||||
msgid "added checklist <0>{0}</0>"
|
msgid "added checklist <0>{0}</0>"
|
||||||
msgstr "heeft checklist <0>{0}</0> toegevoegd"
|
msgstr "heeft checklist <0>{0}</0> toegevoegd"
|
||||||
|
|
||||||
#. placeholder {0}: truncate(toTitle)
|
#. placeholder {0}: truncate(toTitle)
|
||||||
#: src/views/card/components/ActivityList.tsx:170
|
#: src/views/card/components/ActivityList.tsx:205
|
||||||
msgid "added checklist item <0>{0}</0>"
|
msgid "added checklist item <0>{0}</0>"
|
||||||
msgstr "heeft checklistitem <0>{0}</0> toegevoegd"
|
msgstr "heeft checklistitem <0>{0}</0> toegevoegd"
|
||||||
|
|
||||||
#. placeholder {0}: truncate(label)
|
#. placeholder {0}: truncate(label)
|
||||||
#: src/views/card/components/ActivityList.tsx:130
|
#: src/views/card/components/ActivityList.tsx:165
|
||||||
msgid "added label <0>{0}</0>"
|
msgid "added label <0>{0}</0>"
|
||||||
msgstr "heeft label <0>{0}</0> toegevoegd"
|
msgstr "heeft label <0>{0}</0> toegevoegd"
|
||||||
|
|
||||||
@@ -249,11 +254,11 @@ msgstr "Weet je zeker dat je deze {0} wilt verwijderen?"
|
|||||||
msgid "Are you sure you want to delete this card?"
|
msgid "Are you sure you want to delete this card?"
|
||||||
msgstr "Weet je zeker dat je deze kaart wilt verwijderen?"
|
msgstr "Weet je zeker dat je deze kaart wilt verwijderen?"
|
||||||
|
|
||||||
#: src/views/card/components/DeleteChecklistConfirmation.tsx:55
|
#: src/views/card/components/DeleteChecklistConfirmation.tsx:56
|
||||||
msgid "Are you sure you want to delete this checklist?"
|
msgid "Are you sure you want to delete this checklist?"
|
||||||
msgstr "Weet je zeker dat je deze checklist wilt verwijderen?"
|
msgstr "Weet je zeker dat je deze checklist wilt verwijderen?"
|
||||||
|
|
||||||
#: src/views/card/components/DeleteCommentConfirmation.tsx:65
|
#: src/views/card/components/DeleteCommentConfirmation.tsx:66
|
||||||
msgid "Are you sure you want to delete this comment?"
|
msgid "Are you sure you want to delete this comment?"
|
||||||
msgstr "Weet je zeker dat je deze opmerking wilt verwijderen?"
|
msgstr "Weet je zeker dat je deze opmerking wilt verwijderen?"
|
||||||
|
|
||||||
@@ -266,7 +271,7 @@ msgid "Are you sure you want to delete your account?"
|
|||||||
msgstr "Weet je zeker dat je je account wilt verwijderen?"
|
msgstr "Weet je zeker dat je je account wilt verwijderen?"
|
||||||
|
|
||||||
#. placeholder {0}: truncate(memberName)
|
#. placeholder {0}: truncate(memberName)
|
||||||
#: src/views/card/components/ActivityList.tsx:110
|
#: src/views/card/components/ActivityList.tsx:145
|
||||||
msgid "assigned <0>{0}</0> to the card"
|
msgid "assigned <0>{0}</0> to the card"
|
||||||
msgstr "heeft <0>{0}</0> aan de kaart toegewezen"
|
msgstr "heeft <0>{0}</0> aan de kaart toegewezen"
|
||||||
|
|
||||||
@@ -274,7 +279,7 @@ msgstr "heeft <0>{0}</0> aan de kaart toegewezen"
|
|||||||
msgid "Assignees"
|
msgid "Assignees"
|
||||||
msgstr "Toegewezen personen"
|
msgstr "Toegewezen personen"
|
||||||
|
|
||||||
#: src/views/card/components/AttachmentUpload.tsx:25
|
#: src/views/card/components/AttachmentUpload.tsx:26
|
||||||
msgid "Attachment uploaded"
|
msgid "Attachment uploaded"
|
||||||
msgstr "Bijlage geüpload"
|
msgstr "Bijlage geüpload"
|
||||||
|
|
||||||
@@ -312,9 +317,9 @@ msgstr "Factureringsportaal"
|
|||||||
msgid "Blog Post"
|
msgid "Blog Post"
|
||||||
msgstr "Blogbericht"
|
msgstr "Blogbericht"
|
||||||
|
|
||||||
#: src/views/board/index.tsx:386
|
#: src/views/board/index.tsx:382
|
||||||
#: src/views/card/index.tsx:272
|
#: src/views/card/index.tsx:272
|
||||||
#: src/views/public/board/index.tsx:113
|
#: src/views/public/board/index.tsx:114
|
||||||
msgid "Board"
|
msgid "Board"
|
||||||
msgstr "Bord"
|
msgstr "Bord"
|
||||||
|
|
||||||
@@ -331,7 +336,7 @@ msgstr "Bordnaam mag niet langer zijn dan 100 tekens"
|
|||||||
msgid "Board name is required"
|
msgid "Board name is required"
|
||||||
msgstr "Bordnaam is verplicht"
|
msgstr "Bordnaam is verplicht"
|
||||||
|
|
||||||
#: src/views/public/board/index.tsx:165
|
#: src/views/public/board/index.tsx:166
|
||||||
msgid "Board not found"
|
msgid "Board not found"
|
||||||
msgstr "Bord niet gevonden"
|
msgstr "Bord niet gevonden"
|
||||||
|
|
||||||
@@ -347,7 +352,7 @@ msgstr "Board URL kan alleen letters, cijfers en koppeltekens bevatten"
|
|||||||
msgid "Board URL cannot exceed 60 characters"
|
msgid "Board URL cannot exceed 60 characters"
|
||||||
msgstr "Board URL mag niet langer zijn dan 60 tekens"
|
msgstr "Board URL mag niet langer zijn dan 60 tekens"
|
||||||
|
|
||||||
#: src/views/public/board/index.tsx:79
|
#: src/views/public/board/index.tsx:80
|
||||||
msgid "Board URL copied to clipboard"
|
msgid "Board URL copied to clipboard"
|
||||||
msgstr "Board URL gekopieerd naar klembord"
|
msgstr "Board URL gekopieerd naar klembord"
|
||||||
|
|
||||||
@@ -382,10 +387,10 @@ msgstr "Bugrapport"
|
|||||||
|
|
||||||
#: src/components/DeleteLabelConfirmation.tsx:49
|
#: src/components/DeleteLabelConfirmation.tsx:49
|
||||||
#: src/views/board/components/DeleteBoardConfirmation.tsx:44
|
#: src/views/board/components/DeleteBoardConfirmation.tsx:44
|
||||||
#: src/views/card/components/Comment.tsx:158
|
#: src/views/card/components/Comment.tsx:159
|
||||||
#: src/views/card/components/DeleteCardConfirmation.tsx:86
|
#: src/views/card/components/DeleteCardConfirmation.tsx:86
|
||||||
#: src/views/card/components/DeleteChecklistConfirmation.tsx:63
|
#: src/views/card/components/DeleteChecklistConfirmation.tsx:64
|
||||||
#: src/views/card/components/DeleteCommentConfirmation.tsx:76
|
#: src/views/card/components/DeleteCommentConfirmation.tsx:77
|
||||||
#: src/views/members/components/DeleteMemberConfirmation.tsx:55
|
#: src/views/members/components/DeleteMemberConfirmation.tsx:55
|
||||||
#: src/views/settings/components/Avatar.tsx:306
|
#: src/views/settings/components/Avatar.tsx:306
|
||||||
#: src/views/settings/components/ChangePasswordConfirmation.tsx:168
|
#: src/views/settings/components/ChangePasswordConfirmation.tsx:168
|
||||||
@@ -419,8 +424,8 @@ msgstr "Wachtwoord wijzigen"
|
|||||||
msgid "Change your language preferences."
|
msgid "Change your language preferences."
|
||||||
msgstr "Wijzig je taalvoorkeuren."
|
msgstr "Wijzig je taalvoorkeuren."
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:220
|
#: src/views/card/components/ActivityList.tsx:255
|
||||||
#: src/views/card/components/ActivityList.tsx:234
|
#: src/views/card/components/ActivityList.tsx:269
|
||||||
msgid "changed the due date to <0>{formattedDate}</0>"
|
msgid "changed the due date to <0>{formattedDate}</0>"
|
||||||
msgstr "heeft de vervaldatum gewijzigd naar <0>{formattedDate}</0>"
|
msgstr "heeft de vervaldatum gewijzigd naar <0>{formattedDate}</0>"
|
||||||
|
|
||||||
@@ -433,7 +438,7 @@ msgstr "Bekijk enkele van onze favoriete open source projecten."
|
|||||||
msgid "Check your inbox"
|
msgid "Check your inbox"
|
||||||
msgstr "Controleer je inbox"
|
msgstr "Controleer je inbox"
|
||||||
|
|
||||||
#: src/views/card/components/NewChecklistForm.tsx:118
|
#: src/views/card/components/NewChecklistForm.tsx:119
|
||||||
msgid "Checklist name"
|
msgid "Checklist name"
|
||||||
msgstr "Naam checklist"
|
msgstr "Naam checklist"
|
||||||
|
|
||||||
@@ -494,12 +499,12 @@ msgstr "Voltooid"
|
|||||||
msgid "Complete control and ownership:"
|
msgid "Complete control and ownership:"
|
||||||
msgstr "Volledige controle en eigendom:"
|
msgstr "Volledige controle en eigendom:"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:71
|
#: src/views/card/components/ActivityList.tsx:112
|
||||||
msgid "completed a checklist item"
|
msgid "completed a checklist item"
|
||||||
msgstr "heeft een checklistitem voltooid"
|
msgstr "heeft een checklistitem voltooid"
|
||||||
|
|
||||||
#. placeholder {0}: truncate(toTitle)
|
#. placeholder {0}: truncate(toTitle)
|
||||||
#: src/views/card/components/ActivityList.tsx:187
|
#: src/views/card/components/ActivityList.tsx:222
|
||||||
msgid "completed checklist item <0>{0}</0>"
|
msgid "completed checklist item <0>{0}</0>"
|
||||||
msgstr "heeft checklistitem <0>{0}</0> voltooid"
|
msgstr "heeft checklistitem <0>{0}</0> voltooid"
|
||||||
|
|
||||||
@@ -573,7 +578,7 @@ msgstr "API-sleutel aanmaken"
|
|||||||
msgid "Create card"
|
msgid "Create card"
|
||||||
msgstr "Maak kaart"
|
msgstr "Maak kaart"
|
||||||
|
|
||||||
#: src/views/card/components/NewChecklistForm.tsx:134
|
#: src/views/card/components/NewChecklistForm.tsx:135
|
||||||
msgid "Create checklist"
|
msgid "Create checklist"
|
||||||
msgstr "Checklist maken"
|
msgstr "Checklist maken"
|
||||||
|
|
||||||
@@ -600,12 +605,12 @@ msgid "Create new key"
|
|||||||
msgstr "Nieuwe sleutel aanmaken"
|
msgstr "Nieuwe sleutel aanmaken"
|
||||||
|
|
||||||
#: src/views/board/components/NewCardForm.tsx:414
|
#: src/views/board/components/NewCardForm.tsx:414
|
||||||
#: src/views/card/components/LabelSelector.tsx:97
|
#: src/views/card/components/LabelSelector.tsx:98
|
||||||
msgid "Create new label"
|
msgid "Create new label"
|
||||||
msgstr "Maak nieuw label"
|
msgstr "Maak nieuw label"
|
||||||
|
|
||||||
#: src/views/board/index.tsx:65
|
#: src/views/board/index.tsx:64
|
||||||
#: src/views/board/index.tsx:503
|
#: src/views/board/index.tsx:499
|
||||||
msgid "Create new list"
|
msgid "Create new list"
|
||||||
msgstr "Maak nieuwe lijst"
|
msgstr "Maak nieuwe lijst"
|
||||||
|
|
||||||
@@ -618,7 +623,7 @@ msgstr "Sjabloon maken"
|
|||||||
msgid "Create workspace"
|
msgid "Create workspace"
|
||||||
msgstr "Werkruimte maken"
|
msgstr "Werkruimte maken"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:58
|
#: src/views/card/components/ActivityList.tsx:99
|
||||||
msgid "created the card"
|
msgid "created the card"
|
||||||
msgstr "heeft de kaart aangemaakt"
|
msgstr "heeft de kaart aangemaakt"
|
||||||
|
|
||||||
@@ -676,8 +681,8 @@ msgstr "Uitnodigingslink deactiveren"
|
|||||||
#: src/components/LabelForm.tsx:228
|
#: src/components/LabelForm.tsx:228
|
||||||
#: src/views/board/components/DeleteBoardConfirmation.tsx:47
|
#: src/views/board/components/DeleteBoardConfirmation.tsx:47
|
||||||
#: src/views/card/components/DeleteCardConfirmation.tsx:92
|
#: src/views/card/components/DeleteCardConfirmation.tsx:92
|
||||||
#: src/views/card/components/DeleteChecklistConfirmation.tsx:66
|
#: src/views/card/components/DeleteChecklistConfirmation.tsx:67
|
||||||
#: src/views/card/components/DeleteCommentConfirmation.tsx:82
|
#: src/views/card/components/DeleteCommentConfirmation.tsx:83
|
||||||
msgid "Delete"
|
msgid "Delete"
|
||||||
msgstr "Verwijderen"
|
msgstr "Verwijderen"
|
||||||
|
|
||||||
@@ -695,7 +700,7 @@ msgstr "Board verwijderen"
|
|||||||
msgid "Delete card"
|
msgid "Delete card"
|
||||||
msgstr "Kaart verwijderen"
|
msgstr "Kaart verwijderen"
|
||||||
|
|
||||||
#: src/views/card/components/Comment.tsx:91
|
#: src/views/card/components/Comment.tsx:92
|
||||||
msgid "Delete comment"
|
msgid "Delete comment"
|
||||||
msgstr "Reactie verwijderen"
|
msgstr "Reactie verwijderen"
|
||||||
|
|
||||||
@@ -713,21 +718,21 @@ msgstr "Sjabloon verwijderen"
|
|||||||
msgid "Delete workspace"
|
msgid "Delete workspace"
|
||||||
msgstr "Werkruimte verwijderen"
|
msgstr "Werkruimte verwijderen"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:68
|
#: src/views/card/components/ActivityList.tsx:109
|
||||||
msgid "deleted a checklist"
|
msgid "deleted a checklist"
|
||||||
msgstr "heeft een checklist verwijderd"
|
msgstr "heeft een checklist verwijderd"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:73
|
#: src/views/card/components/ActivityList.tsx:114
|
||||||
msgid "deleted a checklist item"
|
msgid "deleted a checklist item"
|
||||||
msgstr "heeft een checklistitem verwijderd"
|
msgstr "heeft een checklistitem verwijderd"
|
||||||
|
|
||||||
#. placeholder {0}: truncate(fromTitle)
|
#. placeholder {0}: truncate(fromTitle)
|
||||||
#: src/views/card/components/ActivityList.tsx:162
|
#: src/views/card/components/ActivityList.tsx:197
|
||||||
msgid "deleted checklist <0>{0}</0>"
|
msgid "deleted checklist <0>{0}</0>"
|
||||||
msgstr "heeft checklist <0>{0}</0> verwijderd"
|
msgstr "heeft checklist <0>{0}</0> verwijderd"
|
||||||
|
|
||||||
#. placeholder {0}: truncate(fromTitle)
|
#. placeholder {0}: truncate(fromTitle)
|
||||||
#: src/views/card/components/ActivityList.tsx:205
|
#: src/views/card/components/ActivityList.tsx:240
|
||||||
msgid "deleted checklist item <0>{0}</0>"
|
msgid "deleted checklist item <0>{0}</0>"
|
||||||
msgstr "heeft checklistitem <0>{0}</0> verwijderd"
|
msgstr "heeft checklistitem <0>{0}</0> verwijderd"
|
||||||
|
|
||||||
@@ -793,13 +798,13 @@ msgstr "Heb je geen account? <0><1>Registreer je</1></0>"
|
|||||||
msgid "Done"
|
msgid "Done"
|
||||||
msgstr "Klaar"
|
msgstr "Klaar"
|
||||||
|
|
||||||
#: src/views/card/components/AttachmentThumbnails.tsx:141
|
#: src/views/card/components/AttachmentThumbnails.tsx:142
|
||||||
msgid "Download failed"
|
msgid "Download failed"
|
||||||
msgstr "Download mislukt"
|
msgstr "Download mislukt"
|
||||||
|
|
||||||
#: src/views/board/components/Filters.tsx:171
|
#: src/views/board/components/Filters.tsx:171
|
||||||
#: src/views/board/components/NewCardForm.tsx:469
|
#: src/views/board/components/NewCardForm.tsx:469
|
||||||
#: src/views/card/index.tsx:138
|
#: src/views/card/index.tsx:139
|
||||||
msgid "Due date"
|
msgid "Due date"
|
||||||
msgstr "Vervaldatum"
|
msgstr "Vervaldatum"
|
||||||
|
|
||||||
@@ -824,7 +829,7 @@ msgstr "Vervalt morgen"
|
|||||||
msgid "Edit board URL"
|
msgid "Edit board URL"
|
||||||
msgstr "Board URL bewerken"
|
msgstr "Board URL bewerken"
|
||||||
|
|
||||||
#: src/views/card/components/Comment.tsx:82
|
#: src/views/card/components/Comment.tsx:83
|
||||||
msgid "Edit comment"
|
msgid "Edit comment"
|
||||||
msgstr "Reactie bewerken"
|
msgstr "Reactie bewerken"
|
||||||
|
|
||||||
@@ -981,8 +986,8 @@ msgstr "Bord maken mislukt"
|
|||||||
msgid "Failed to login with {0}. Please try again."
|
msgid "Failed to login with {0}. Please try again."
|
||||||
msgstr "Inloggen met {0} is mislukt. Probeer het opnieuw."
|
msgstr "Inloggen met {0} is mislukt. Probeer het opnieuw."
|
||||||
|
|
||||||
#: src/views/card/components/AttachmentUpload.tsx:33
|
#: src/views/card/components/AttachmentUpload.tsx:34
|
||||||
#: src/views/card/components/AttachmentUpload.tsx:79
|
#: src/views/card/components/AttachmentUpload.tsx:80
|
||||||
msgid "Failed to upload attachment. Please try again."
|
msgid "Failed to upload attachment. Please try again."
|
||||||
msgstr "Bijlage uploaden mislukt. Probeer het opnieuw."
|
msgstr "Bijlage uploaden mislukt. Probeer het opnieuw."
|
||||||
|
|
||||||
@@ -1042,8 +1047,6 @@ msgid "For long-term sustainability, we recognise all good open source projects
|
|||||||
msgstr "Voor duurzaamheid op lange termijn erkennen we dat alle goede open source projecten een inkomstenbron nodig hebben. De onze komt van de betaalde cloudoplossing voor werkruimtes met meerdere gebruikers en voor aangepaste werkruimte-slugs. Er is geen verplichting om het te gebruiken, en je kunt de software gratis op je eigen infrastructuur hosten."
|
msgstr "Voor duurzaamheid op lange termijn erkennen we dat alle goede open source projecten een inkomstenbron nodig hebben. De onze komt van de betaalde cloudoplossing voor werkruimtes met meerdere gebruikers en voor aangepaste werkruimte-slugs. Er is geen verplichting om het te gebruiken, en je kunt de software gratis op je eigen infrastructuur hosten."
|
||||||
|
|
||||||
#: src/views/pricing/components/Pricing.tsx:32
|
#: src/views/pricing/components/Pricing.tsx:32
|
||||||
#: src/views/pricing/components/Pricing.tsx:32
|
|
||||||
#: src/views/pricing/components/PricingTiers.tsx:30
|
|
||||||
#: src/views/pricing/components/PricingTiers.tsx:30
|
#: src/views/pricing/components/PricingTiers.tsx:30
|
||||||
msgid "Free"
|
msgid "Free"
|
||||||
msgstr "Gratis"
|
msgstr "Gratis"
|
||||||
@@ -1089,7 +1092,7 @@ msgstr "Aan de slag"
|
|||||||
msgid "Get started by creating a new {0}"
|
msgid "Get started by creating a new {0}"
|
||||||
msgstr "Begin door een nieuwe {0} te maken"
|
msgstr "Begin door een nieuwe {0} te maken"
|
||||||
|
|
||||||
#: src/views/board/index.tsx:495
|
#: src/views/board/index.tsx:491
|
||||||
msgid "Get started by creating a new list"
|
msgid "Get started by creating a new list"
|
||||||
msgstr "Begin door een nieuwe lijst te maken"
|
msgstr "Begin door een nieuwe lijst te maken"
|
||||||
|
|
||||||
@@ -1276,7 +1279,7 @@ msgstr "Uitnodigingslinks"
|
|||||||
msgid "Invite links require a Team or Pro subscription. Please upgrade your workspace."
|
msgid "Invite links require a Team or Pro subscription. Please upgrade your workspace."
|
||||||
msgstr "Uitnodigingslinks vereisen een Team- of Pro-abonnement. Upgrade je werkruimte."
|
msgstr "Uitnodigingslinks vereisen een Team- of Pro-abonnement. Upgrade je werkruimte."
|
||||||
|
|
||||||
#: src/views/card/components/MemberSelector.tsx:111
|
#: src/views/card/components/MemberSelector.tsx:112
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:367
|
#: src/views/members/components/InviteMemberForm.tsx:367
|
||||||
msgid "Invite member"
|
msgid "Invite member"
|
||||||
msgstr "Lid uitnodigen"
|
msgstr "Lid uitnodigen"
|
||||||
@@ -1325,7 +1328,7 @@ msgstr "Sneltoetsen"
|
|||||||
|
|
||||||
#: src/views/board/components/Filters.tsx:155
|
#: src/views/board/components/Filters.tsx:155
|
||||||
#: src/views/board/components/NewCardForm.tsx:418
|
#: src/views/board/components/NewCardForm.tsx:418
|
||||||
#: src/views/card/index.tsx:120
|
#: src/views/card/index.tsx:121
|
||||||
msgid "Labels"
|
msgid "Labels"
|
||||||
msgstr "Labels"
|
msgstr "Labels"
|
||||||
|
|
||||||
@@ -1375,11 +1378,11 @@ msgstr "Licentie"
|
|||||||
msgid "Light"
|
msgid "Light"
|
||||||
msgstr "Licht"
|
msgstr "Licht"
|
||||||
|
|
||||||
#: src/views/public/board/index.tsx:77
|
#: src/views/public/board/index.tsx:78
|
||||||
msgid "Link copied"
|
msgid "Link copied"
|
||||||
msgstr "Link gekopieerd"
|
msgstr "Link gekopieerd"
|
||||||
|
|
||||||
#: src/views/card/index.tsx:112
|
#: src/views/card/index.tsx:113
|
||||||
msgid "List"
|
msgid "List"
|
||||||
msgstr "Lijst"
|
msgstr "Lijst"
|
||||||
|
|
||||||
@@ -1391,6 +1394,14 @@ msgstr "Lijstnaam"
|
|||||||
msgid "Lists"
|
msgid "Lists"
|
||||||
msgstr "Lijsten"
|
msgstr "Lijsten"
|
||||||
|
|
||||||
|
#: src/views/card/components/ActivityList.tsx:530
|
||||||
|
msgid "Load more activities"
|
||||||
|
msgstr "Meer activiteiten laden"
|
||||||
|
|
||||||
|
#: src/views/card/components/ActivityList.tsx:530
|
||||||
|
msgid "Loading..."
|
||||||
|
msgstr "Laden..."
|
||||||
|
|
||||||
#: src/views/auth/login/index.tsx:33
|
#: src/views/auth/login/index.tsx:33
|
||||||
msgid "Login | kan.bn"
|
msgid "Login | kan.bn"
|
||||||
msgstr "Login | kan.bn"
|
msgstr "Login | kan.bn"
|
||||||
@@ -1419,12 +1430,12 @@ msgstr "magische link"
|
|||||||
msgid "Make template"
|
msgid "Make template"
|
||||||
msgstr "Sjabloon maken"
|
msgstr "Sjabloon maken"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:72
|
#: src/views/card/components/ActivityList.tsx:113
|
||||||
msgid "marked a checklist item as incomplete"
|
msgid "marked a checklist item as incomplete"
|
||||||
msgstr "heeft een checklistitem als onvoltooid gemarkeerd"
|
msgstr "heeft een checklistitem als onvoltooid gemarkeerd"
|
||||||
|
|
||||||
#. placeholder {0}: truncate(toTitle)
|
#. placeholder {0}: truncate(toTitle)
|
||||||
#: src/views/card/components/ActivityList.tsx:196
|
#: src/views/card/components/ActivityList.tsx:231
|
||||||
msgid "marked checklist item <0>{0}</0> as incomplete"
|
msgid "marked checklist item <0>{0}</0> as incomplete"
|
||||||
msgstr "heeft checklistitem <0>{0}</0> als onvoltooid gemarkeerd"
|
msgstr "heeft checklistitem <0>{0}</0> als onvoltooid gemarkeerd"
|
||||||
|
|
||||||
@@ -1435,7 +1446,7 @@ msgstr "Gemiddelde prioriteit"
|
|||||||
#: src/components/SideNavigation.tsx:121
|
#: src/components/SideNavigation.tsx:121
|
||||||
#: src/views/board/components/Filters.tsx:147
|
#: src/views/board/components/Filters.tsx:147
|
||||||
#: src/views/board/components/NewCardForm.tsx:376
|
#: src/views/board/components/NewCardForm.tsx:376
|
||||||
#: src/views/card/index.tsx:129
|
#: src/views/card/index.tsx:130
|
||||||
#: src/views/members/index.tsx:178
|
#: src/views/members/index.tsx:178
|
||||||
msgid "Members"
|
msgid "Members"
|
||||||
msgstr "Leden"
|
msgstr "Leden"
|
||||||
@@ -1456,11 +1467,11 @@ msgstr "maandelijkse facturering"
|
|||||||
|
|
||||||
#. placeholder {0}: truncate(fromList)
|
#. placeholder {0}: truncate(fromList)
|
||||||
#. placeholder {1}: truncate(toList)
|
#. placeholder {1}: truncate(toList)
|
||||||
#: src/views/card/components/ActivityList.tsx:98
|
#: src/views/card/components/ActivityList.tsx:133
|
||||||
msgid "moved the card from <0>{0}</0> to<1>{1}</1>"
|
msgid "moved the card from <0>{0}</0> to<1>{1}</1>"
|
||||||
msgstr "heeft de kaart verplaatst van <0>{0}</0> naar<1>{1}</1>"
|
msgstr "heeft de kaart verplaatst van <0>{0}</0> naar<1>{1}</1>"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:61
|
#: src/views/card/components/ActivityList.tsx:102
|
||||||
msgid "moved the card to another list"
|
msgid "moved the card to another list"
|
||||||
msgstr "heeft de kaart naar een andere lijst verplaatst"
|
msgstr "heeft de kaart naar een andere lijst verplaatst"
|
||||||
|
|
||||||
@@ -1496,7 +1507,7 @@ msgstr "Nieuwe API-sleutel"
|
|||||||
msgid "New card"
|
msgid "New card"
|
||||||
msgstr "Nieuwe kaart"
|
msgstr "Nieuwe kaart"
|
||||||
|
|
||||||
#: src/views/card/components/NewChecklistForm.tsx:102
|
#: src/views/card/components/NewChecklistForm.tsx:103
|
||||||
msgid "New checklist"
|
msgid "New checklist"
|
||||||
msgstr "Nieuwe checklist"
|
msgstr "Nieuwe checklist"
|
||||||
|
|
||||||
@@ -1509,7 +1520,7 @@ msgid "New label"
|
|||||||
msgstr "Nieuw label"
|
msgstr "Nieuw label"
|
||||||
|
|
||||||
#: src/views/board/components/NewListForm.tsx:113
|
#: src/views/board/components/NewListForm.tsx:113
|
||||||
#: src/views/board/index.tsx:466
|
#: src/views/board/index.tsx:462
|
||||||
msgid "New list"
|
msgid "New list"
|
||||||
msgstr "Nieuwe lijst"
|
msgstr "Nieuwe lijst"
|
||||||
|
|
||||||
@@ -1562,7 +1573,7 @@ msgstr "Geen creditcard vereist"
|
|||||||
msgid "No dates"
|
msgid "No dates"
|
||||||
msgstr "Geen datums"
|
msgstr "Geen datums"
|
||||||
|
|
||||||
#: src/views/card/components/AttachmentThumbnails.tsx:142
|
#: src/views/card/components/AttachmentThumbnails.tsx:143
|
||||||
msgid "No download URL available for this attachment."
|
msgid "No download URL available for this attachment."
|
||||||
msgstr "Geen download-URL beschikbaar voor deze bijlage."
|
msgstr "Geen download-URL beschikbaar voor deze bijlage."
|
||||||
|
|
||||||
@@ -1570,7 +1581,7 @@ msgstr "Geen download-URL beschikbaar voor deze bijlage."
|
|||||||
msgid "No keyboard shortcuts registered."
|
msgid "No keyboard shortcuts registered."
|
||||||
msgstr "Geen sneltoetsen geregistreerd."
|
msgstr "Geen sneltoetsen geregistreerd."
|
||||||
|
|
||||||
#: src/views/board/index.tsx:492
|
#: src/views/board/index.tsx:488
|
||||||
msgid "No lists"
|
msgid "No lists"
|
||||||
msgstr "Geen lijsten"
|
msgstr "Geen lijsten"
|
||||||
|
|
||||||
@@ -1721,24 +1732,25 @@ msgstr "Selecteer een bestand om te uploaden."
|
|||||||
#: src/views/board/components/NewTemplateForm.tsx:77
|
#: src/views/board/components/NewTemplateForm.tsx:77
|
||||||
#: src/views/board/components/UpdateBoardSlugForm.tsx:73
|
#: src/views/board/components/UpdateBoardSlugForm.tsx:73
|
||||||
#: src/views/board/components/VisibilityButton.tsx:54
|
#: src/views/board/components/VisibilityButton.tsx:54
|
||||||
#: src/views/board/index.tsx:174
|
#: src/views/board/index.tsx:170
|
||||||
#: src/views/board/index.tsx:230
|
#: src/views/board/index.tsx:226
|
||||||
#: src/views/boards/components/ImportBoardsForm.tsx:205
|
#: src/views/boards/components/ImportBoardsForm.tsx:205
|
||||||
#: src/views/card/components/AttachmentThumbnails.tsx:73
|
#: src/views/card/components/AttachmentThumbnails.tsx:74
|
||||||
#: src/views/card/components/ChecklistItemRow.tsx:60
|
#: src/views/card/components/ChecklistItemRow.tsx:67
|
||||||
#: src/views/card/components/ChecklistItemRow.tsx:88
|
#: src/views/card/components/ChecklistItemRow.tsx:95
|
||||||
#: src/views/card/components/ChecklistNameInput.tsx:46
|
#: src/views/card/components/ChecklistNameInput.tsx:47
|
||||||
#: src/views/card/components/Comment.tsx:64
|
#: src/views/card/components/Checklists.tsx:81
|
||||||
|
#: src/views/card/components/Comment.tsx:65
|
||||||
#: src/views/card/components/DeleteCardConfirmation.tsx:52
|
#: src/views/card/components/DeleteCardConfirmation.tsx:52
|
||||||
#: src/views/card/components/DeleteChecklistConfirmation.tsx:37
|
#: src/views/card/components/DeleteChecklistConfirmation.tsx:38
|
||||||
#: src/views/card/components/DeleteCommentConfirmation.tsx:45
|
#: src/views/card/components/DeleteCommentConfirmation.tsx:46
|
||||||
#: src/views/card/components/DueDateSelector.tsx:59
|
#: src/views/card/components/DueDateSelector.tsx:60
|
||||||
#: src/views/card/components/LabelSelector.tsx:72
|
#: src/views/card/components/LabelSelector.tsx:73
|
||||||
#: src/views/card/components/ListSelector.tsx:52
|
#: src/views/card/components/ListSelector.tsx:53
|
||||||
#: src/views/card/components/MemberSelector.tsx:79
|
#: src/views/card/components/MemberSelector.tsx:80
|
||||||
#: src/views/card/components/NewChecklistForm.tsx:70
|
#: src/views/card/components/NewChecklistForm.tsx:71
|
||||||
#: src/views/card/components/NewChecklistItemForm.tsx:89
|
#: src/views/card/components/NewChecklistItemForm.tsx:90
|
||||||
#: src/views/card/components/NewCommentForm.tsx:31
|
#: src/views/card/components/NewCommentForm.tsx:32
|
||||||
#: src/views/card/index.tsx:187
|
#: src/views/card/index.tsx:187
|
||||||
#: src/views/card/index.tsx:200
|
#: src/views/card/index.tsx:200
|
||||||
#: src/views/members/components/DeleteMemberConfirmation.tsx:28
|
#: src/views/members/components/DeleteMemberConfirmation.tsx:28
|
||||||
@@ -1840,35 +1852,40 @@ msgstr "Verwijderen"
|
|||||||
msgid "Remove member"
|
msgid "Remove member"
|
||||||
msgstr "Lid verwijderen"
|
msgstr "Lid verwijderen"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:63
|
#. placeholder {0}: mergedLabels.length
|
||||||
|
#: src/views/card/components/ActivityList.tsx:91
|
||||||
|
msgid "removed {0} labels: <0>{labelList}</0>"
|
||||||
|
msgstr "{0} labels verwijderd: <0>{labelList}</0>"
|
||||||
|
|
||||||
|
#: src/views/card/components/ActivityList.tsx:104
|
||||||
msgid "removed a label from the card"
|
msgid "removed a label from the card"
|
||||||
msgstr "heeft een label van de kaart verwijderd"
|
msgstr "heeft een label van de kaart verwijderd"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:65
|
#: src/views/card/components/ActivityList.tsx:106
|
||||||
msgid "removed a member from the card"
|
msgid "removed a member from the card"
|
||||||
msgstr "heeft een lid van de kaart verwijderd"
|
msgstr "heeft een lid van de kaart verwijderd"
|
||||||
|
|
||||||
#. placeholder {0}: truncate(label)
|
#. placeholder {0}: truncate(label)
|
||||||
#: src/views/card/components/ActivityList.tsx:138
|
#: src/views/card/components/ActivityList.tsx:173
|
||||||
msgid "removed label <0>{0}</0>"
|
msgid "removed label <0>{0}</0>"
|
||||||
msgstr "heeft label <0>{0}</0> verwijderd"
|
msgstr "heeft label <0>{0}</0> verwijderd"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:76
|
#: src/views/card/components/ActivityList.tsx:117
|
||||||
#: src/views/card/components/ActivityList.tsx:241
|
#: src/views/card/components/ActivityList.tsx:276
|
||||||
msgid "removed the due date"
|
msgid "removed the due date"
|
||||||
msgstr "heeft de vervaldatum verwijderd"
|
msgstr "heeft de vervaldatum verwijderd"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:67
|
#: src/views/card/components/ActivityList.tsx:108
|
||||||
msgid "renamed a checklist"
|
msgid "renamed a checklist"
|
||||||
msgstr "heeft een checklist hernoemd"
|
msgstr "heeft een checklist hernoemd"
|
||||||
|
|
||||||
#. placeholder {0}: truncate(toTitle)
|
#. placeholder {0}: truncate(toTitle)
|
||||||
#: src/views/card/components/ActivityList.tsx:154
|
#: src/views/card/components/ActivityList.tsx:189
|
||||||
msgid "renamed checklist <0>{0}</0>"
|
msgid "renamed checklist <0>{0}</0>"
|
||||||
msgstr "heeft checklist <0>{0}</0> hernoemd"
|
msgstr "heeft checklist <0>{0}</0> hernoemd"
|
||||||
|
|
||||||
#. placeholder {0}: truncate(toTitle)
|
#. placeholder {0}: truncate(toTitle)
|
||||||
#: src/views/card/components/ActivityList.tsx:178
|
#: src/views/card/components/ActivityList.tsx:213
|
||||||
msgid "renamed checklist item to <0>{0}</0>"
|
msgid "renamed checklist item to <0>{0}</0>"
|
||||||
msgstr "checklistitem hernoemd naar <0>{0}</0>"
|
msgstr "checklistitem hernoemd naar <0>{0}</0>"
|
||||||
|
|
||||||
@@ -1907,7 +1924,7 @@ msgstr "Rol"
|
|||||||
msgid "Run on your own infrastructure"
|
msgid "Run on your own infrastructure"
|
||||||
msgstr "Draai op je eigen infrastructuur"
|
msgstr "Draai op je eigen infrastructuur"
|
||||||
|
|
||||||
#: src/views/card/components/Comment.tsx:165
|
#: src/views/card/components/Comment.tsx:166
|
||||||
#: src/views/settings/components/Avatar.tsx:309
|
#: src/views/settings/components/Avatar.tsx:309
|
||||||
msgid "Save"
|
msgid "Save"
|
||||||
msgstr "Opslaan"
|
msgstr "Opslaan"
|
||||||
@@ -1945,7 +1962,7 @@ msgstr "Zelf hosten"
|
|||||||
msgid "Self host with Github"
|
msgid "Self host with Github"
|
||||||
msgstr "Zelf hosten met Github"
|
msgstr "Zelf hosten met Github"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:107
|
#: src/views/card/components/ActivityList.tsx:142
|
||||||
msgid "self-assigned the card"
|
msgid "self-assigned the card"
|
||||||
msgstr "heeft de kaart aan zichzelf toegewezen"
|
msgstr "heeft de kaart aan zichzelf toegewezen"
|
||||||
|
|
||||||
@@ -1961,11 +1978,11 @@ msgstr "Feedback versturen"
|
|||||||
msgid "Senior"
|
msgid "Senior"
|
||||||
msgstr "Senior"
|
msgstr "Senior"
|
||||||
|
|
||||||
#: src/views/card/components/DueDateSelector.tsx:116
|
#: src/views/card/components/DueDateSelector.tsx:117
|
||||||
msgid "Set due date"
|
msgid "Set due date"
|
||||||
msgstr "Vervaldatum instellen"
|
msgstr "Vervaldatum instellen"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:74
|
#: src/views/card/components/ActivityList.tsx:115
|
||||||
msgid "set the due date"
|
msgid "set the due date"
|
||||||
msgstr "heeft de vervaldatum ingesteld"
|
msgstr "heeft de vervaldatum ingesteld"
|
||||||
|
|
||||||
@@ -2090,8 +2107,8 @@ msgstr "Teamplan"
|
|||||||
msgid "Teams"
|
msgid "Teams"
|
||||||
msgstr "Teams"
|
msgstr "Teams"
|
||||||
|
|
||||||
#: src/views/board/index.tsx:386
|
#: src/views/board/index.tsx:382
|
||||||
#: src/views/board/index.tsx:421
|
#: src/views/board/index.tsx:417
|
||||||
msgid "Template"
|
msgid "Template"
|
||||||
msgstr "Sjabloon"
|
msgstr "Sjabloon"
|
||||||
|
|
||||||
@@ -2156,8 +2173,8 @@ msgstr "Ze zullen geen toegang meer hebben tot deze werkruimte."
|
|||||||
#: src/components/DeleteLabelConfirmation.tsx:44
|
#: src/components/DeleteLabelConfirmation.tsx:44
|
||||||
#: src/views/board/components/DeleteBoardConfirmation.tsx:39
|
#: src/views/board/components/DeleteBoardConfirmation.tsx:39
|
||||||
#: src/views/card/components/DeleteCardConfirmation.tsx:78
|
#: src/views/card/components/DeleteCardConfirmation.tsx:78
|
||||||
#: src/views/card/components/DeleteChecklistConfirmation.tsx:58
|
#: src/views/card/components/DeleteChecklistConfirmation.tsx:59
|
||||||
#: src/views/card/components/DeleteCommentConfirmation.tsx:68
|
#: src/views/card/components/DeleteCommentConfirmation.tsx:69
|
||||||
msgid "This action can't be undone."
|
msgid "This action can't be undone."
|
||||||
msgstr "Deze actie kan niet ongedaan worden gemaakt."
|
msgstr "Deze actie kan niet ongedaan worden gemaakt."
|
||||||
|
|
||||||
@@ -2165,7 +2182,7 @@ msgstr "Deze actie kan niet ongedaan worden gemaakt."
|
|||||||
msgid "This API key will only be shown once. Please save it in a secure location."
|
msgid "This API key will only be shown once. Please save it in a secure location."
|
||||||
msgstr "Deze API-sleutel wordt slechts één keer getoond. Bewaar deze op een veilige plaats."
|
msgstr "Deze API-sleutel wordt slechts één keer getoond. Bewaar deze op een veilige plaats."
|
||||||
|
|
||||||
#: src/views/public/board/index.tsx:168
|
#: src/views/public/board/index.tsx:169
|
||||||
msgid "This board is private or does not exist"
|
msgid "This board is private or does not exist"
|
||||||
msgstr "Dit bord is privé of bestaat niet"
|
msgstr "Dit bord is privé of bestaat niet"
|
||||||
|
|
||||||
@@ -2227,27 +2244,27 @@ msgstr "Trello-imports"
|
|||||||
msgid "Triaging"
|
msgid "Triaging"
|
||||||
msgstr "Triage"
|
msgstr "Triage"
|
||||||
|
|
||||||
#: src/views/home/components/Logos.tsx:73
|
#: src/views/home/components/Logos.tsx:67
|
||||||
msgid "Trusted by fast-moving teams<0/>around the world"
|
msgid "Trusted by fast-moving teams<0/>around the world"
|
||||||
msgstr "Vertrouwd door snelbewegende teams<0/>over de hele wereld"
|
msgstr "Vertrouwd door snelbewegende teams<0/>over de hele wereld"
|
||||||
|
|
||||||
#: src/views/card/components/NewChecklistItemForm.tsx:88
|
#: src/views/card/components/NewChecklistItemForm.tsx:89
|
||||||
msgid "Unable to add checklist item"
|
msgid "Unable to add checklist item"
|
||||||
msgstr "Kan checklistitem niet toevoegen"
|
msgstr "Kan checklistitem niet toevoegen"
|
||||||
|
|
||||||
#: src/views/card/components/NewCommentForm.tsx:30
|
#: src/views/card/components/NewCommentForm.tsx:31
|
||||||
msgid "Unable to add comment"
|
msgid "Unable to add comment"
|
||||||
msgstr "Kan geen reactie toevoegen"
|
msgstr "Kan geen reactie toevoegen"
|
||||||
|
|
||||||
#: src/views/card/index.tsx:199
|
#: src/views/card/index.tsx:199
|
||||||
msgid "Unable to add label"
|
msgid "Unable to add label"
|
||||||
msgstr ""
|
msgstr "Kan label niet toevoegen"
|
||||||
|
|
||||||
#: src/views/board/components/NewCardForm.tsx:181
|
#: src/views/board/components/NewCardForm.tsx:181
|
||||||
msgid "Unable to create card"
|
msgid "Unable to create card"
|
||||||
msgstr "Kan kaart niet aanmaken"
|
msgstr "Kan kaart niet aanmaken"
|
||||||
|
|
||||||
#: src/views/card/components/NewChecklistForm.tsx:69
|
#: src/views/card/components/NewChecklistForm.tsx:70
|
||||||
msgid "Unable to create checklist"
|
msgid "Unable to create checklist"
|
||||||
msgstr "Kan checklist niet maken"
|
msgstr "Kan checklist niet maken"
|
||||||
|
|
||||||
@@ -2264,7 +2281,7 @@ msgstr "Kan sjabloon niet maken"
|
|||||||
msgid "Unable to create workspace"
|
msgid "Unable to create workspace"
|
||||||
msgstr "Kan werkruimte niet aanmaken"
|
msgstr "Kan werkruimte niet aanmaken"
|
||||||
|
|
||||||
#: src/views/card/components/AttachmentThumbnails.tsx:72
|
#: src/views/card/components/AttachmentThumbnails.tsx:73
|
||||||
msgid "Unable to delete attachment"
|
msgid "Unable to delete attachment"
|
||||||
msgstr "Kan bijlage niet verwijderen"
|
msgstr "Kan bijlage niet verwijderen"
|
||||||
|
|
||||||
@@ -2272,15 +2289,15 @@ msgstr "Kan bijlage niet verwijderen"
|
|||||||
msgid "Unable to delete card"
|
msgid "Unable to delete card"
|
||||||
msgstr "Kan kaart niet verwijderen"
|
msgstr "Kan kaart niet verwijderen"
|
||||||
|
|
||||||
#: src/views/card/components/DeleteChecklistConfirmation.tsx:36
|
#: src/views/card/components/DeleteChecklistConfirmation.tsx:37
|
||||||
msgid "Unable to delete checklist"
|
msgid "Unable to delete checklist"
|
||||||
msgstr "Kan checklist niet verwijderen"
|
msgstr "Kan checklist niet verwijderen"
|
||||||
|
|
||||||
#: src/views/card/components/ChecklistItemRow.tsx:87
|
#: src/views/card/components/ChecklistItemRow.tsx:94
|
||||||
msgid "Unable to delete checklist item"
|
msgid "Unable to delete checklist item"
|
||||||
msgstr "Kan checklistitem niet verwijderen"
|
msgstr "Kan checklistitem niet verwijderen"
|
||||||
|
|
||||||
#: src/views/card/components/DeleteCommentConfirmation.tsx:44
|
#: src/views/card/components/DeleteCommentConfirmation.tsx:45
|
||||||
msgid "Unable to delete comment"
|
msgid "Unable to delete comment"
|
||||||
msgstr "Kan opmerking niet verwijderen"
|
msgstr "Kan opmerking niet verwijderen"
|
||||||
|
|
||||||
@@ -2288,6 +2305,10 @@ msgstr "Kan opmerking niet verwijderen"
|
|||||||
msgid "Unable to remove member"
|
msgid "Unable to remove member"
|
||||||
msgstr "Kan lid niet verwijderen"
|
msgstr "Kan lid niet verwijderen"
|
||||||
|
|
||||||
|
#: src/views/card/components/Checklists.tsx:80
|
||||||
|
msgid "Unable to reorder checklist item"
|
||||||
|
msgstr "Kan checklistitem niet opnieuw ordenen"
|
||||||
|
|
||||||
#: src/components/FeedbackModal.tsx:40
|
#: src/components/FeedbackModal.tsx:40
|
||||||
msgid "Unable to send feedback"
|
msgid "Unable to send feedback"
|
||||||
msgstr "Feedback kon niet worden verzonden"
|
msgstr "Feedback kon niet worden verzonden"
|
||||||
@@ -2300,46 +2321,46 @@ msgstr "Kan board URL niet bijwerken"
|
|||||||
msgid "Unable to update board visibility"
|
msgid "Unable to update board visibility"
|
||||||
msgstr "Kan bordzichtbaarheid niet bijwerken"
|
msgstr "Kan bordzichtbaarheid niet bijwerken"
|
||||||
|
|
||||||
#: src/views/board/index.tsx:229
|
#: src/views/board/index.tsx:225
|
||||||
#: src/views/card/index.tsx:186
|
#: src/views/card/index.tsx:186
|
||||||
msgid "Unable to update card"
|
msgid "Unable to update card"
|
||||||
msgstr "Kan kaart niet bijwerken"
|
msgstr "Kan kaart niet bijwerken"
|
||||||
|
|
||||||
#: src/views/card/components/ChecklistNameInput.tsx:45
|
#: src/views/card/components/ChecklistNameInput.tsx:46
|
||||||
msgid "Unable to update checklist"
|
msgid "Unable to update checklist"
|
||||||
msgstr "Kan checklist niet bijwerken"
|
msgstr "Kan checklist niet bijwerken"
|
||||||
|
|
||||||
#: src/views/card/components/ChecklistItemRow.tsx:59
|
#: src/views/card/components/ChecklistItemRow.tsx:66
|
||||||
msgid "Unable to update checklist item"
|
msgid "Unable to update checklist item"
|
||||||
msgstr "Kan checklistitem niet bijwerken"
|
msgstr "Kan checklistitem niet bijwerken"
|
||||||
|
|
||||||
#: src/views/card/components/Comment.tsx:63
|
#: src/views/card/components/Comment.tsx:64
|
||||||
msgid "Unable to update comment"
|
msgid "Unable to update comment"
|
||||||
msgstr "Kan reactie niet bijwerken"
|
msgstr "Kan reactie niet bijwerken"
|
||||||
|
|
||||||
#: src/views/card/components/DueDateSelector.tsx:58
|
#: src/views/card/components/DueDateSelector.tsx:59
|
||||||
msgid "Unable to update due date"
|
msgid "Unable to update due date"
|
||||||
msgstr "Kan vervaldatum niet bijwerken"
|
msgstr "Kan vervaldatum niet bijwerken"
|
||||||
|
|
||||||
#: src/views/card/components/LabelSelector.tsx:71
|
#: src/views/card/components/LabelSelector.tsx:72
|
||||||
msgid "Unable to update labels"
|
msgid "Unable to update labels"
|
||||||
msgstr "Kan labels niet bijwerken"
|
msgstr "Kan labels niet bijwerken"
|
||||||
|
|
||||||
#: src/views/board/index.tsx:173
|
#: src/views/board/index.tsx:169
|
||||||
#: src/views/card/components/ListSelector.tsx:51
|
#: src/views/card/components/ListSelector.tsx:52
|
||||||
msgid "Unable to update list"
|
msgid "Unable to update list"
|
||||||
msgstr "Kan lijst niet bijwerken"
|
msgstr "Kan lijst niet bijwerken"
|
||||||
|
|
||||||
#: src/views/card/components/MemberSelector.tsx:78
|
#: src/views/card/components/MemberSelector.tsx:79
|
||||||
msgid "Unable to update members"
|
msgid "Unable to update members"
|
||||||
msgstr "Kan leden niet bijwerken"
|
msgstr "Kan leden niet bijwerken"
|
||||||
|
|
||||||
#. placeholder {0}: truncate(memberName)
|
#. placeholder {0}: truncate(memberName)
|
||||||
#: src/views/card/components/ActivityList.tsx:121
|
#: src/views/card/components/ActivityList.tsx:156
|
||||||
msgid "unassigned <0>{0}</0> from the card"
|
msgid "unassigned <0>{0}</0> from the card"
|
||||||
msgstr "<0>{0}</0> van de kaart verwijderd"
|
msgstr "<0>{0}</0> van de kaart verwijderd"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:118
|
#: src/views/card/components/ActivityList.tsx:153
|
||||||
msgid "unassigned themselves from the card"
|
msgid "unassigned themselves from the card"
|
||||||
msgstr "zichzelf van de kaart verwijderd"
|
msgstr "zichzelf van de kaart verwijderd"
|
||||||
|
|
||||||
@@ -2398,24 +2419,24 @@ msgstr "Bijwerken"
|
|||||||
msgid "Update label"
|
msgid "Update label"
|
||||||
msgstr "Label bijwerken"
|
msgstr "Label bijwerken"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:70
|
#: src/views/card/components/ActivityList.tsx:111
|
||||||
msgid "updated a checklist item"
|
msgid "updated a checklist item"
|
||||||
msgstr "een checklistitem bijgewerkt"
|
msgstr "een checklistitem bijgewerkt"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:60
|
#: src/views/card/components/ActivityList.tsx:101
|
||||||
msgid "updated the description"
|
msgid "updated the description"
|
||||||
msgstr "beschrijving bijgewerkt"
|
msgstr "beschrijving bijgewerkt"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:75
|
#: src/views/card/components/ActivityList.tsx:116
|
||||||
msgid "updated the due date"
|
msgid "updated the due date"
|
||||||
msgstr "heeft de vervaldatum bijgewerkt"
|
msgstr "heeft de vervaldatum bijgewerkt"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:59
|
#: src/views/card/components/ActivityList.tsx:100
|
||||||
msgid "updated the title"
|
msgid "updated the title"
|
||||||
msgstr "titel bijgewerkt"
|
msgstr "titel bijgewerkt"
|
||||||
|
|
||||||
#. placeholder {0}: truncate(toTitle)
|
#. placeholder {0}: truncate(toTitle)
|
||||||
#: src/views/card/components/ActivityList.tsx:90
|
#: src/views/card/components/ActivityList.tsx:125
|
||||||
msgid "updated the title to <0>{0}</0>"
|
msgid "updated the title to <0>{0}</0>"
|
||||||
msgstr "titel bijgewerkt naar <0>{0}</0>"
|
msgstr "titel bijgewerkt naar <0>{0}</0>"
|
||||||
|
|
||||||
@@ -2429,8 +2450,8 @@ msgstr "Upgraden naar Pro"
|
|||||||
msgid "Upgrade to Pro ($29/month)"
|
msgid "Upgrade to Pro ($29/month)"
|
||||||
msgstr "Upgrade naar Pro ($29/maand)"
|
msgstr "Upgrade naar Pro ($29/maand)"
|
||||||
|
|
||||||
#: src/views/card/components/AttachmentUpload.tsx:32
|
#: src/views/card/components/AttachmentUpload.tsx:33
|
||||||
#: src/views/card/components/AttachmentUpload.tsx:78
|
#: src/views/card/components/AttachmentUpload.tsx:79
|
||||||
msgid "Upload failed"
|
msgid "Upload failed"
|
||||||
msgstr "Uploaden mislukt"
|
msgstr "Uploaden mislukt"
|
||||||
|
|
||||||
@@ -2483,7 +2504,7 @@ msgstr "Bekijk en beheer je facturering en abonnement."
|
|||||||
msgid "View docs"
|
msgid "View docs"
|
||||||
msgstr "Bekijk documentatie"
|
msgstr "Bekijk documentatie"
|
||||||
|
|
||||||
#: src/views/public/board/index.tsx:141
|
#: src/views/public/board/index.tsx:142
|
||||||
msgid "View only"
|
msgid "View only"
|
||||||
msgstr "Alleen bekijken"
|
msgstr "Alleen bekijken"
|
||||||
|
|
||||||
@@ -2491,7 +2512,7 @@ msgstr "Alleen bekijken"
|
|||||||
msgid "View our roadmap."
|
msgid "View our roadmap."
|
||||||
msgstr "Bekijk onze roadmap."
|
msgstr "Bekijk onze roadmap."
|
||||||
|
|
||||||
#: src/views/public/board/index.tsx:171
|
#: src/views/public/board/index.tsx:172
|
||||||
msgid "View workspace"
|
msgid "View workspace"
|
||||||
msgstr "Werkruimte bekijken"
|
msgstr "Werkruimte bekijken"
|
||||||
|
|
||||||
@@ -2536,10 +2557,10 @@ msgid "Why make an open source Trello?"
|
|||||||
msgstr "Waarom een open source Trello maken?"
|
msgstr "Waarom een open source Trello maken?"
|
||||||
|
|
||||||
#: src/components/SettingsLayout.tsx:39
|
#: src/components/SettingsLayout.tsx:39
|
||||||
#: src/views/board/index.tsx:386
|
#: src/views/board/index.tsx:382
|
||||||
#: src/views/boards/index.tsx:33
|
#: src/views/boards/index.tsx:33
|
||||||
#: src/views/members/index.tsx:173
|
#: src/views/members/index.tsx:173
|
||||||
#: src/views/public/board/index.tsx:113
|
#: src/views/public/board/index.tsx:114
|
||||||
#: src/views/public/boards/index.tsx:66
|
#: src/views/public/boards/index.tsx:66
|
||||||
msgid "Workspace"
|
msgid "Workspace"
|
||||||
msgstr "Werkruimte"
|
msgstr "Werkruimte"
|
||||||
@@ -2673,7 +2694,7 @@ msgstr "Je borden zijn geïmporteerd."
|
|||||||
msgid "Your display name has been updated."
|
msgid "Your display name has been updated."
|
||||||
msgstr "Je weergavenaam is bijgewerkt."
|
msgstr "Je weergavenaam is bijgewerkt."
|
||||||
|
|
||||||
#: src/views/card/components/AttachmentUpload.tsx:26
|
#: src/views/card/components/AttachmentUpload.tsx:27
|
||||||
msgid "Your file has been uploaded successfully."
|
msgid "Your file has been uploaded successfully."
|
||||||
msgstr "Je bestand is succesvol geüpload."
|
msgstr "Je bestand is succesvol geüpload."
|
||||||
|
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ msgstr ""
|
|||||||
"Language-Team: \n"
|
"Language-Team: \n"
|
||||||
"Plural-Forms: \n"
|
"Plural-Forms: \n"
|
||||||
|
|
||||||
#: src/views/card/components/Comment.tsx:123
|
#: src/views/card/components/Comment.tsx:124
|
||||||
msgid " (edited)"
|
msgid " (edited)"
|
||||||
msgstr " (edytowano)"
|
msgstr " (edytowano)"
|
||||||
|
|
||||||
@@ -46,7 +46,7 @@ msgid "{0} labels"
|
|||||||
msgstr "{0} etykiety"
|
msgstr "{0} etykiety"
|
||||||
|
|
||||||
#. placeholder {0}: isTemplate ? "Template" : "Board"
|
#. placeholder {0}: isTemplate ? "Template" : "Board"
|
||||||
#: src/views/board/index.tsx:412
|
#: src/views/board/index.tsx:408
|
||||||
msgid "{0} not found"
|
msgid "{0} not found"
|
||||||
msgstr "{0} nie znaleziono"
|
msgstr "{0} nie znaleziono"
|
||||||
|
|
||||||
@@ -105,12 +105,12 @@ msgstr "Dzienniki aktywności"
|
|||||||
msgid "Add a card"
|
msgid "Add a card"
|
||||||
msgstr "Dodaj kartę"
|
msgstr "Dodaj kartę"
|
||||||
|
|
||||||
#: src/views/card/components/Comment.tsx:146
|
#: src/views/card/components/Comment.tsx:147
|
||||||
#: src/views/card/components/NewCommentForm.tsx:57
|
#: src/views/card/components/NewCommentForm.tsx:55
|
||||||
msgid "Add a comment..."
|
msgid "Add a comment..."
|
||||||
msgstr "Dodaj komentarz..."
|
msgstr "Dodaj komentarz..."
|
||||||
|
|
||||||
#: src/views/card/components/NewChecklistItemForm.tsx:140
|
#: src/views/card/components/NewChecklistItemForm.tsx:141
|
||||||
msgid "Add an item..."
|
msgid "Add an item..."
|
||||||
msgstr "Dodaj element..."
|
msgstr "Dodaj element..."
|
||||||
|
|
||||||
@@ -122,48 +122,53 @@ msgstr "Dodaj listę kontrolną"
|
|||||||
msgid "Add description... (type '/' to open commands or '@' to mention)"
|
msgid "Add description... (type '/' to open commands or '@' to mention)"
|
||||||
msgstr "Dodaj opis... (wpisz '/' aby otworzyć polecenia lub '@' aby wspomnieć)"
|
msgstr "Dodaj opis... (wpisz '/' aby otworzyć polecenia lub '@' aby wspomnieć)"
|
||||||
|
|
||||||
#: src/views/card/components/ChecklistItemRow.tsx:172
|
#: src/views/card/components/ChecklistItemRow.tsx:195
|
||||||
msgid "Add details..."
|
msgid "Add details..."
|
||||||
msgstr "Dodaj szczegóły..."
|
msgstr "Dodaj szczegóły..."
|
||||||
|
|
||||||
#: src/views/card/components/LabelSelector.tsx:109
|
#: src/views/card/components/LabelSelector.tsx:110
|
||||||
#: src/views/card/components/LabelSelector.tsx:114
|
#: src/views/card/components/LabelSelector.tsx:115
|
||||||
msgid "Add label"
|
msgid "Add label"
|
||||||
msgstr "Dodaj etykietę"
|
msgstr "Dodaj etykietę"
|
||||||
|
|
||||||
#: src/views/card/components/MemberSelector.tsx:130
|
#: src/views/card/components/MemberSelector.tsx:131
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:257
|
#: src/views/members/components/InviteMemberForm.tsx:257
|
||||||
msgid "Add member"
|
msgid "Add member"
|
||||||
msgstr "Dodaj członka"
|
msgstr "Dodaj członka"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:66
|
#. placeholder {0}: mergedLabels.length
|
||||||
|
#: src/views/card/components/ActivityList.tsx:77
|
||||||
|
msgid "added {0} labels: <0>{labelList}</0>"
|
||||||
|
msgstr "dodano {0} etykiety: <0>{labelList}</0>"
|
||||||
|
|
||||||
|
#: src/views/card/components/ActivityList.tsx:107
|
||||||
msgid "added a checklist"
|
msgid "added a checklist"
|
||||||
msgstr "dodał listę kontrolną"
|
msgstr "dodał listę kontrolną"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:69
|
#: src/views/card/components/ActivityList.tsx:110
|
||||||
msgid "added a checklist item"
|
msgid "added a checklist item"
|
||||||
msgstr "dodał(a) element listy kontrolnej"
|
msgstr "dodał(a) element listy kontrolnej"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:62
|
#: src/views/card/components/ActivityList.tsx:103
|
||||||
msgid "added a label to the card"
|
msgid "added a label to the card"
|
||||||
msgstr "dodał(a) etykietę do karty"
|
msgstr "dodał(a) etykietę do karty"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:64
|
#: src/views/card/components/ActivityList.tsx:105
|
||||||
msgid "added a member to the card"
|
msgid "added a member to the card"
|
||||||
msgstr "dodał(a) członka do karty"
|
msgstr "dodał(a) członka do karty"
|
||||||
|
|
||||||
#. placeholder {0}: truncate(toTitle)
|
#. placeholder {0}: truncate(toTitle)
|
||||||
#: src/views/card/components/ActivityList.tsx:146
|
#: src/views/card/components/ActivityList.tsx:181
|
||||||
msgid "added checklist <0>{0}</0>"
|
msgid "added checklist <0>{0}</0>"
|
||||||
msgstr "dodał(a) listę kontrolną <0>{0}</0>"
|
msgstr "dodał(a) listę kontrolną <0>{0}</0>"
|
||||||
|
|
||||||
#. placeholder {0}: truncate(toTitle)
|
#. placeholder {0}: truncate(toTitle)
|
||||||
#: src/views/card/components/ActivityList.tsx:170
|
#: src/views/card/components/ActivityList.tsx:205
|
||||||
msgid "added checklist item <0>{0}</0>"
|
msgid "added checklist item <0>{0}</0>"
|
||||||
msgstr "dodał(a) element listy kontrolnej <0>{0}</0>"
|
msgstr "dodał(a) element listy kontrolnej <0>{0}</0>"
|
||||||
|
|
||||||
#. placeholder {0}: truncate(label)
|
#. placeholder {0}: truncate(label)
|
||||||
#: src/views/card/components/ActivityList.tsx:130
|
#: src/views/card/components/ActivityList.tsx:165
|
||||||
msgid "added label <0>{0}</0>"
|
msgid "added label <0>{0}</0>"
|
||||||
msgstr "dodał(a) etykietę <0>{0}</0>"
|
msgstr "dodał(a) etykietę <0>{0}</0>"
|
||||||
|
|
||||||
@@ -254,11 +259,11 @@ msgstr "Czy na pewno chcesz usunąć ten {0}?"
|
|||||||
msgid "Are you sure you want to delete this card?"
|
msgid "Are you sure you want to delete this card?"
|
||||||
msgstr "Czy na pewno chcesz usunąć tę kartę?"
|
msgstr "Czy na pewno chcesz usunąć tę kartę?"
|
||||||
|
|
||||||
#: src/views/card/components/DeleteChecklistConfirmation.tsx:55
|
#: src/views/card/components/DeleteChecklistConfirmation.tsx:56
|
||||||
msgid "Are you sure you want to delete this checklist?"
|
msgid "Are you sure you want to delete this checklist?"
|
||||||
msgstr "Czy na pewno chcesz usunąć tę listę kontrolną?"
|
msgstr "Czy na pewno chcesz usunąć tę listę kontrolną?"
|
||||||
|
|
||||||
#: src/views/card/components/DeleteCommentConfirmation.tsx:65
|
#: src/views/card/components/DeleteCommentConfirmation.tsx:66
|
||||||
msgid "Are you sure you want to delete this comment?"
|
msgid "Are you sure you want to delete this comment?"
|
||||||
msgstr "Czy na pewno chcesz usunąć ten komentarz?"
|
msgstr "Czy na pewno chcesz usunąć ten komentarz?"
|
||||||
|
|
||||||
@@ -271,7 +276,7 @@ msgid "Are you sure you want to delete your account?"
|
|||||||
msgstr "Czy na pewno chcesz usunąć swoje konto?"
|
msgstr "Czy na pewno chcesz usunąć swoje konto?"
|
||||||
|
|
||||||
#. placeholder {0}: truncate(memberName)
|
#. placeholder {0}: truncate(memberName)
|
||||||
#: src/views/card/components/ActivityList.tsx:110
|
#: src/views/card/components/ActivityList.tsx:145
|
||||||
msgid "assigned <0>{0}</0> to the card"
|
msgid "assigned <0>{0}</0> to the card"
|
||||||
msgstr "przypisano <0>{0}</0> do karty"
|
msgstr "przypisano <0>{0}</0> do karty"
|
||||||
|
|
||||||
@@ -279,7 +284,7 @@ msgstr "przypisano <0>{0}</0> do karty"
|
|||||||
msgid "Assignees"
|
msgid "Assignees"
|
||||||
msgstr "Osoby przypisane"
|
msgstr "Osoby przypisane"
|
||||||
|
|
||||||
#: src/views/card/components/AttachmentUpload.tsx:25
|
#: src/views/card/components/AttachmentUpload.tsx:26
|
||||||
msgid "Attachment uploaded"
|
msgid "Attachment uploaded"
|
||||||
msgstr "Załącznik został przesłany"
|
msgstr "Załącznik został przesłany"
|
||||||
|
|
||||||
@@ -317,9 +322,9 @@ msgstr "Portal rozliczeniowy"
|
|||||||
msgid "Blog Post"
|
msgid "Blog Post"
|
||||||
msgstr "Post na blogu"
|
msgstr "Post na blogu"
|
||||||
|
|
||||||
#: src/views/board/index.tsx:386
|
#: src/views/board/index.tsx:382
|
||||||
#: src/views/card/index.tsx:272
|
#: src/views/card/index.tsx:272
|
||||||
#: src/views/public/board/index.tsx:113
|
#: src/views/public/board/index.tsx:114
|
||||||
msgid "Board"
|
msgid "Board"
|
||||||
msgstr "Tablica"
|
msgstr "Tablica"
|
||||||
|
|
||||||
@@ -336,7 +341,7 @@ msgstr "Nazwa tablicy nie może przekraczać 100 znaków"
|
|||||||
msgid "Board name is required"
|
msgid "Board name is required"
|
||||||
msgstr "Nazwa tablicy jest wymagana"
|
msgstr "Nazwa tablicy jest wymagana"
|
||||||
|
|
||||||
#: src/views/public/board/index.tsx:165
|
#: src/views/public/board/index.tsx:166
|
||||||
msgid "Board not found"
|
msgid "Board not found"
|
||||||
msgstr "Tablica nie została znaleziona"
|
msgstr "Tablica nie została znaleziona"
|
||||||
|
|
||||||
@@ -352,7 +357,7 @@ msgstr "Adres URL tablicy może zawierać tylko litery, cyfry i myślniki"
|
|||||||
msgid "Board URL cannot exceed 60 characters"
|
msgid "Board URL cannot exceed 60 characters"
|
||||||
msgstr "Adres URL tablicy nie może przekraczać 60 znaków"
|
msgstr "Adres URL tablicy nie może przekraczać 60 znaków"
|
||||||
|
|
||||||
#: src/views/public/board/index.tsx:79
|
#: src/views/public/board/index.tsx:80
|
||||||
msgid "Board URL copied to clipboard"
|
msgid "Board URL copied to clipboard"
|
||||||
msgstr "Adres URL tablicy został skopiowany do schowka"
|
msgstr "Adres URL tablicy został skopiowany do schowka"
|
||||||
|
|
||||||
@@ -387,10 +392,10 @@ msgstr "Zgłoszenie błędu"
|
|||||||
|
|
||||||
#: src/components/DeleteLabelConfirmation.tsx:49
|
#: src/components/DeleteLabelConfirmation.tsx:49
|
||||||
#: src/views/board/components/DeleteBoardConfirmation.tsx:44
|
#: src/views/board/components/DeleteBoardConfirmation.tsx:44
|
||||||
#: src/views/card/components/Comment.tsx:158
|
#: src/views/card/components/Comment.tsx:159
|
||||||
#: src/views/card/components/DeleteCardConfirmation.tsx:86
|
#: src/views/card/components/DeleteCardConfirmation.tsx:86
|
||||||
#: src/views/card/components/DeleteChecklistConfirmation.tsx:63
|
#: src/views/card/components/DeleteChecklistConfirmation.tsx:64
|
||||||
#: src/views/card/components/DeleteCommentConfirmation.tsx:76
|
#: src/views/card/components/DeleteCommentConfirmation.tsx:77
|
||||||
#: src/views/members/components/DeleteMemberConfirmation.tsx:55
|
#: src/views/members/components/DeleteMemberConfirmation.tsx:55
|
||||||
#: src/views/settings/components/Avatar.tsx:306
|
#: src/views/settings/components/Avatar.tsx:306
|
||||||
#: src/views/settings/components/ChangePasswordConfirmation.tsx:168
|
#: src/views/settings/components/ChangePasswordConfirmation.tsx:168
|
||||||
@@ -424,8 +429,8 @@ msgstr "Zmień hasło"
|
|||||||
msgid "Change your language preferences."
|
msgid "Change your language preferences."
|
||||||
msgstr "Zmień swoje preferencje językowe."
|
msgstr "Zmień swoje preferencje językowe."
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:220
|
#: src/views/card/components/ActivityList.tsx:255
|
||||||
#: src/views/card/components/ActivityList.tsx:234
|
#: src/views/card/components/ActivityList.tsx:269
|
||||||
msgid "changed the due date to <0>{formattedDate}</0>"
|
msgid "changed the due date to <0>{formattedDate}</0>"
|
||||||
msgstr "zmieniono termin na <0>{formattedDate}</0>"
|
msgstr "zmieniono termin na <0>{formattedDate}</0>"
|
||||||
|
|
||||||
@@ -438,7 +443,7 @@ msgstr "Sprawdź niektóre z naszych ulubionych projektów otwartoźródłowych.
|
|||||||
msgid "Check your inbox"
|
msgid "Check your inbox"
|
||||||
msgstr "Sprawdź swoją skrzynkę odbiorczą"
|
msgstr "Sprawdź swoją skrzynkę odbiorczą"
|
||||||
|
|
||||||
#: src/views/card/components/NewChecklistForm.tsx:118
|
#: src/views/card/components/NewChecklistForm.tsx:119
|
||||||
msgid "Checklist name"
|
msgid "Checklist name"
|
||||||
msgstr "Nazwa listy kontrolnej"
|
msgstr "Nazwa listy kontrolnej"
|
||||||
|
|
||||||
@@ -499,12 +504,12 @@ msgstr "Zakończ"
|
|||||||
msgid "Complete control and ownership:"
|
msgid "Complete control and ownership:"
|
||||||
msgstr "Pełna kontrola i własność:"
|
msgstr "Pełna kontrola i własność:"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:71
|
#: src/views/card/components/ActivityList.tsx:112
|
||||||
msgid "completed a checklist item"
|
msgid "completed a checklist item"
|
||||||
msgstr "ukończono element listy kontrolnej"
|
msgstr "ukończono element listy kontrolnej"
|
||||||
|
|
||||||
#. placeholder {0}: truncate(toTitle)
|
#. placeholder {0}: truncate(toTitle)
|
||||||
#: src/views/card/components/ActivityList.tsx:187
|
#: src/views/card/components/ActivityList.tsx:222
|
||||||
msgid "completed checklist item <0>{0}</0>"
|
msgid "completed checklist item <0>{0}</0>"
|
||||||
msgstr "ukończono element listy kontrolnej <0>{0}</0>"
|
msgstr "ukończono element listy kontrolnej <0>{0}</0>"
|
||||||
|
|
||||||
@@ -578,7 +583,7 @@ msgstr "Utwórz klucz API"
|
|||||||
msgid "Create card"
|
msgid "Create card"
|
||||||
msgstr "Utwórz kartę"
|
msgstr "Utwórz kartę"
|
||||||
|
|
||||||
#: src/views/card/components/NewChecklistForm.tsx:134
|
#: src/views/card/components/NewChecklistForm.tsx:135
|
||||||
msgid "Create checklist"
|
msgid "Create checklist"
|
||||||
msgstr "Utwórz listę kontrolną"
|
msgstr "Utwórz listę kontrolną"
|
||||||
|
|
||||||
@@ -605,12 +610,12 @@ msgid "Create new key"
|
|||||||
msgstr "Utwórz nowy klucz"
|
msgstr "Utwórz nowy klucz"
|
||||||
|
|
||||||
#: src/views/board/components/NewCardForm.tsx:414
|
#: src/views/board/components/NewCardForm.tsx:414
|
||||||
#: src/views/card/components/LabelSelector.tsx:97
|
#: src/views/card/components/LabelSelector.tsx:98
|
||||||
msgid "Create new label"
|
msgid "Create new label"
|
||||||
msgstr "Utwórz nową etykietę"
|
msgstr "Utwórz nową etykietę"
|
||||||
|
|
||||||
#: src/views/board/index.tsx:65
|
#: src/views/board/index.tsx:64
|
||||||
#: src/views/board/index.tsx:503
|
#: src/views/board/index.tsx:499
|
||||||
msgid "Create new list"
|
msgid "Create new list"
|
||||||
msgstr "Utwórz nową listę"
|
msgstr "Utwórz nową listę"
|
||||||
|
|
||||||
@@ -623,7 +628,7 @@ msgstr "Utwórz szablon"
|
|||||||
msgid "Create workspace"
|
msgid "Create workspace"
|
||||||
msgstr "Utwórz przestrzeń roboczą"
|
msgstr "Utwórz przestrzeń roboczą"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:58
|
#: src/views/card/components/ActivityList.tsx:99
|
||||||
msgid "created the card"
|
msgid "created the card"
|
||||||
msgstr "utworzył(a) kartę"
|
msgstr "utworzył(a) kartę"
|
||||||
|
|
||||||
@@ -681,8 +686,8 @@ msgstr "Dezaktywuj link zaproszenia"
|
|||||||
#: src/components/LabelForm.tsx:228
|
#: src/components/LabelForm.tsx:228
|
||||||
#: src/views/board/components/DeleteBoardConfirmation.tsx:47
|
#: src/views/board/components/DeleteBoardConfirmation.tsx:47
|
||||||
#: src/views/card/components/DeleteCardConfirmation.tsx:92
|
#: src/views/card/components/DeleteCardConfirmation.tsx:92
|
||||||
#: src/views/card/components/DeleteChecklistConfirmation.tsx:66
|
#: src/views/card/components/DeleteChecklistConfirmation.tsx:67
|
||||||
#: src/views/card/components/DeleteCommentConfirmation.tsx:82
|
#: src/views/card/components/DeleteCommentConfirmation.tsx:83
|
||||||
msgid "Delete"
|
msgid "Delete"
|
||||||
msgstr "Usuń"
|
msgstr "Usuń"
|
||||||
|
|
||||||
@@ -700,7 +705,7 @@ msgstr "Usuń tablicę"
|
|||||||
msgid "Delete card"
|
msgid "Delete card"
|
||||||
msgstr "Usuń kartę"
|
msgstr "Usuń kartę"
|
||||||
|
|
||||||
#: src/views/card/components/Comment.tsx:91
|
#: src/views/card/components/Comment.tsx:92
|
||||||
msgid "Delete comment"
|
msgid "Delete comment"
|
||||||
msgstr "Usuń komentarz"
|
msgstr "Usuń komentarz"
|
||||||
|
|
||||||
@@ -718,21 +723,21 @@ msgstr "Usuń szablon"
|
|||||||
msgid "Delete workspace"
|
msgid "Delete workspace"
|
||||||
msgstr "Usuń przestrzeń roboczą"
|
msgstr "Usuń przestrzeń roboczą"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:68
|
#: src/views/card/components/ActivityList.tsx:109
|
||||||
msgid "deleted a checklist"
|
msgid "deleted a checklist"
|
||||||
msgstr "usunięto listę kontrolną"
|
msgstr "usunięto listę kontrolną"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:73
|
#: src/views/card/components/ActivityList.tsx:114
|
||||||
msgid "deleted a checklist item"
|
msgid "deleted a checklist item"
|
||||||
msgstr "usunięto element listy kontrolnej"
|
msgstr "usunięto element listy kontrolnej"
|
||||||
|
|
||||||
#. placeholder {0}: truncate(fromTitle)
|
#. placeholder {0}: truncate(fromTitle)
|
||||||
#: src/views/card/components/ActivityList.tsx:162
|
#: src/views/card/components/ActivityList.tsx:197
|
||||||
msgid "deleted checklist <0>{0}</0>"
|
msgid "deleted checklist <0>{0}</0>"
|
||||||
msgstr "usunięto listę kontrolną <0>{0}</0>"
|
msgstr "usunięto listę kontrolną <0>{0}</0>"
|
||||||
|
|
||||||
#. placeholder {0}: truncate(fromTitle)
|
#. placeholder {0}: truncate(fromTitle)
|
||||||
#: src/views/card/components/ActivityList.tsx:205
|
#: src/views/card/components/ActivityList.tsx:240
|
||||||
msgid "deleted checklist item <0>{0}</0>"
|
msgid "deleted checklist item <0>{0}</0>"
|
||||||
msgstr "usunięto element listy kontrolnej <0>{0}</0>"
|
msgstr "usunięto element listy kontrolnej <0>{0}</0>"
|
||||||
|
|
||||||
@@ -798,13 +803,13 @@ msgstr "Nie masz konta? <0><1>Zarejestruj się</1></0>"
|
|||||||
msgid "Done"
|
msgid "Done"
|
||||||
msgstr "Gotowe"
|
msgstr "Gotowe"
|
||||||
|
|
||||||
#: src/views/card/components/AttachmentThumbnails.tsx:141
|
#: src/views/card/components/AttachmentThumbnails.tsx:142
|
||||||
msgid "Download failed"
|
msgid "Download failed"
|
||||||
msgstr "Pobieranie nie powiodło się"
|
msgstr "Pobieranie nie powiodło się"
|
||||||
|
|
||||||
#: src/views/board/components/Filters.tsx:171
|
#: src/views/board/components/Filters.tsx:171
|
||||||
#: src/views/board/components/NewCardForm.tsx:469
|
#: src/views/board/components/NewCardForm.tsx:469
|
||||||
#: src/views/card/index.tsx:138
|
#: src/views/card/index.tsx:139
|
||||||
msgid "Due date"
|
msgid "Due date"
|
||||||
msgstr "Termin"
|
msgstr "Termin"
|
||||||
|
|
||||||
@@ -829,7 +834,7 @@ msgstr "Termin na jutro"
|
|||||||
msgid "Edit board URL"
|
msgid "Edit board URL"
|
||||||
msgstr "Edytuj URL tablicy"
|
msgstr "Edytuj URL tablicy"
|
||||||
|
|
||||||
#: src/views/card/components/Comment.tsx:82
|
#: src/views/card/components/Comment.tsx:83
|
||||||
msgid "Edit comment"
|
msgid "Edit comment"
|
||||||
msgstr "Edytuj komentarz"
|
msgstr "Edytuj komentarz"
|
||||||
|
|
||||||
@@ -986,8 +991,8 @@ msgstr "Nie udało się utworzyć tablicy"
|
|||||||
msgid "Failed to login with {0}. Please try again."
|
msgid "Failed to login with {0}. Please try again."
|
||||||
msgstr "Nie udało się zalogować za pomocą {0}. Spróbuj ponownie."
|
msgstr "Nie udało się zalogować za pomocą {0}. Spróbuj ponownie."
|
||||||
|
|
||||||
#: src/views/card/components/AttachmentUpload.tsx:33
|
#: src/views/card/components/AttachmentUpload.tsx:34
|
||||||
#: src/views/card/components/AttachmentUpload.tsx:79
|
#: src/views/card/components/AttachmentUpload.tsx:80
|
||||||
msgid "Failed to upload attachment. Please try again."
|
msgid "Failed to upload attachment. Please try again."
|
||||||
msgstr "Nie udało się przesłać załącznika. Proszę spróbować ponownie."
|
msgstr "Nie udało się przesłać załącznika. Proszę spróbować ponownie."
|
||||||
|
|
||||||
@@ -1047,8 +1052,6 @@ msgid "For long-term sustainability, we recognise all good open source projects
|
|||||||
msgstr "Dla długoterminowej trwałości uznajemy, że wszystkie dobre projekty open source potrzebują źródła dochodu. Nasze pochodzi z płatnej oferty w chmurze dla przestrzeni roboczych z wieloma użytkownikami oraz dla niestandardowych nazw przestrzeni roboczych. Nie ma obowiązku korzystania z niej, a oprogramowanie można hostować samodzielnie na własnej infrastrukturze bezpłatnie."
|
msgstr "Dla długoterminowej trwałości uznajemy, że wszystkie dobre projekty open source potrzebują źródła dochodu. Nasze pochodzi z płatnej oferty w chmurze dla przestrzeni roboczych z wieloma użytkownikami oraz dla niestandardowych nazw przestrzeni roboczych. Nie ma obowiązku korzystania z niej, a oprogramowanie można hostować samodzielnie na własnej infrastrukturze bezpłatnie."
|
||||||
|
|
||||||
#: src/views/pricing/components/Pricing.tsx:32
|
#: src/views/pricing/components/Pricing.tsx:32
|
||||||
#: src/views/pricing/components/Pricing.tsx:32
|
|
||||||
#: src/views/pricing/components/PricingTiers.tsx:30
|
|
||||||
#: src/views/pricing/components/PricingTiers.tsx:30
|
#: src/views/pricing/components/PricingTiers.tsx:30
|
||||||
msgid "Free"
|
msgid "Free"
|
||||||
msgstr "Darmowy"
|
msgstr "Darmowy"
|
||||||
@@ -1094,7 +1097,7 @@ msgstr "Rozpocznij"
|
|||||||
msgid "Get started by creating a new {0}"
|
msgid "Get started by creating a new {0}"
|
||||||
msgstr "Rozpocznij, tworząc nowy {0}"
|
msgstr "Rozpocznij, tworząc nowy {0}"
|
||||||
|
|
||||||
#: src/views/board/index.tsx:495
|
#: src/views/board/index.tsx:491
|
||||||
msgid "Get started by creating a new list"
|
msgid "Get started by creating a new list"
|
||||||
msgstr "Rozpocznij, tworząc nową listę"
|
msgstr "Rozpocznij, tworząc nową listę"
|
||||||
|
|
||||||
@@ -1281,7 +1284,7 @@ msgstr "Linki zaproszeń"
|
|||||||
msgid "Invite links require a Team or Pro subscription. Please upgrade your workspace."
|
msgid "Invite links require a Team or Pro subscription. Please upgrade your workspace."
|
||||||
msgstr "Linki zaproszeń wymagają subskrypcji Team lub Pro. Proszę ulepszyć swoje środowisko pracy."
|
msgstr "Linki zaproszeń wymagają subskrypcji Team lub Pro. Proszę ulepszyć swoje środowisko pracy."
|
||||||
|
|
||||||
#: src/views/card/components/MemberSelector.tsx:111
|
#: src/views/card/components/MemberSelector.tsx:112
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:367
|
#: src/views/members/components/InviteMemberForm.tsx:367
|
||||||
msgid "Invite member"
|
msgid "Invite member"
|
||||||
msgstr "Zaproś członka"
|
msgstr "Zaproś członka"
|
||||||
@@ -1330,7 +1333,7 @@ msgstr "Skróty klawiaturowe"
|
|||||||
|
|
||||||
#: src/views/board/components/Filters.tsx:155
|
#: src/views/board/components/Filters.tsx:155
|
||||||
#: src/views/board/components/NewCardForm.tsx:418
|
#: src/views/board/components/NewCardForm.tsx:418
|
||||||
#: src/views/card/index.tsx:120
|
#: src/views/card/index.tsx:121
|
||||||
msgid "Labels"
|
msgid "Labels"
|
||||||
msgstr "Etykiety"
|
msgstr "Etykiety"
|
||||||
|
|
||||||
@@ -1380,11 +1383,11 @@ msgstr "Licencja"
|
|||||||
msgid "Light"
|
msgid "Light"
|
||||||
msgstr "Jasny"
|
msgstr "Jasny"
|
||||||
|
|
||||||
#: src/views/public/board/index.tsx:77
|
#: src/views/public/board/index.tsx:78
|
||||||
msgid "Link copied"
|
msgid "Link copied"
|
||||||
msgstr "Link skopiowany"
|
msgstr "Link skopiowany"
|
||||||
|
|
||||||
#: src/views/card/index.tsx:112
|
#: src/views/card/index.tsx:113
|
||||||
msgid "List"
|
msgid "List"
|
||||||
msgstr "Lista"
|
msgstr "Lista"
|
||||||
|
|
||||||
@@ -1396,6 +1399,14 @@ msgstr "Nazwa listy"
|
|||||||
msgid "Lists"
|
msgid "Lists"
|
||||||
msgstr "Listy"
|
msgstr "Listy"
|
||||||
|
|
||||||
|
#: src/views/card/components/ActivityList.tsx:530
|
||||||
|
msgid "Load more activities"
|
||||||
|
msgstr "Załaduj więcej aktywności"
|
||||||
|
|
||||||
|
#: src/views/card/components/ActivityList.tsx:530
|
||||||
|
msgid "Loading..."
|
||||||
|
msgstr "Ładowanie..."
|
||||||
|
|
||||||
#: src/views/auth/login/index.tsx:33
|
#: src/views/auth/login/index.tsx:33
|
||||||
msgid "Login | kan.bn"
|
msgid "Login | kan.bn"
|
||||||
msgstr "Zaloguj się | kan.bn"
|
msgstr "Zaloguj się | kan.bn"
|
||||||
@@ -1424,12 +1435,12 @@ msgstr "magiczny link"
|
|||||||
msgid "Make template"
|
msgid "Make template"
|
||||||
msgstr "Utwórz szablon"
|
msgstr "Utwórz szablon"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:72
|
#: src/views/card/components/ActivityList.tsx:113
|
||||||
msgid "marked a checklist item as incomplete"
|
msgid "marked a checklist item as incomplete"
|
||||||
msgstr "oznaczył element listy kontrolnej jako nieukończony"
|
msgstr "oznaczył element listy kontrolnej jako nieukończony"
|
||||||
|
|
||||||
#. placeholder {0}: truncate(toTitle)
|
#. placeholder {0}: truncate(toTitle)
|
||||||
#: src/views/card/components/ActivityList.tsx:196
|
#: src/views/card/components/ActivityList.tsx:231
|
||||||
msgid "marked checklist item <0>{0}</0> as incomplete"
|
msgid "marked checklist item <0>{0}</0> as incomplete"
|
||||||
msgstr "oznaczył element listy kontrolnej <0>{0}</0> jako nieukończony"
|
msgstr "oznaczył element listy kontrolnej <0>{0}</0> jako nieukończony"
|
||||||
|
|
||||||
@@ -1440,7 +1451,7 @@ msgstr "Średni priorytet"
|
|||||||
#: src/components/SideNavigation.tsx:121
|
#: src/components/SideNavigation.tsx:121
|
||||||
#: src/views/board/components/Filters.tsx:147
|
#: src/views/board/components/Filters.tsx:147
|
||||||
#: src/views/board/components/NewCardForm.tsx:376
|
#: src/views/board/components/NewCardForm.tsx:376
|
||||||
#: src/views/card/index.tsx:129
|
#: src/views/card/index.tsx:130
|
||||||
#: src/views/members/index.tsx:178
|
#: src/views/members/index.tsx:178
|
||||||
msgid "Members"
|
msgid "Members"
|
||||||
msgstr "Członkowie"
|
msgstr "Członkowie"
|
||||||
@@ -1461,11 +1472,11 @@ msgstr "rozliczenie miesięczne"
|
|||||||
|
|
||||||
#. placeholder {0}: truncate(fromList)
|
#. placeholder {0}: truncate(fromList)
|
||||||
#. placeholder {1}: truncate(toList)
|
#. placeholder {1}: truncate(toList)
|
||||||
#: src/views/card/components/ActivityList.tsx:98
|
#: src/views/card/components/ActivityList.tsx:133
|
||||||
msgid "moved the card from <0>{0}</0> to<1>{1}</1>"
|
msgid "moved the card from <0>{0}</0> to<1>{1}</1>"
|
||||||
msgstr "przeniesiono kartę z <0>{0}</0> do<1>{1}</1>"
|
msgstr "przeniesiono kartę z <0>{0}</0> do<1>{1}</1>"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:61
|
#: src/views/card/components/ActivityList.tsx:102
|
||||||
msgid "moved the card to another list"
|
msgid "moved the card to another list"
|
||||||
msgstr "przeniesiono kartę do innej listy"
|
msgstr "przeniesiono kartę do innej listy"
|
||||||
|
|
||||||
@@ -1501,7 +1512,7 @@ msgstr "Nowy klucz API"
|
|||||||
msgid "New card"
|
msgid "New card"
|
||||||
msgstr "Nowa karta"
|
msgstr "Nowa karta"
|
||||||
|
|
||||||
#: src/views/card/components/NewChecklistForm.tsx:102
|
#: src/views/card/components/NewChecklistForm.tsx:103
|
||||||
msgid "New checklist"
|
msgid "New checklist"
|
||||||
msgstr "Nowa lista kontrolna"
|
msgstr "Nowa lista kontrolna"
|
||||||
|
|
||||||
@@ -1514,7 +1525,7 @@ msgid "New label"
|
|||||||
msgstr "Nowa etykieta"
|
msgstr "Nowa etykieta"
|
||||||
|
|
||||||
#: src/views/board/components/NewListForm.tsx:113
|
#: src/views/board/components/NewListForm.tsx:113
|
||||||
#: src/views/board/index.tsx:466
|
#: src/views/board/index.tsx:462
|
||||||
msgid "New list"
|
msgid "New list"
|
||||||
msgstr "Nowa lista"
|
msgstr "Nowa lista"
|
||||||
|
|
||||||
@@ -1567,7 +1578,7 @@ msgstr "Nie wymagana karta kredytowa"
|
|||||||
msgid "No dates"
|
msgid "No dates"
|
||||||
msgstr "Brak terminów"
|
msgstr "Brak terminów"
|
||||||
|
|
||||||
#: src/views/card/components/AttachmentThumbnails.tsx:142
|
#: src/views/card/components/AttachmentThumbnails.tsx:143
|
||||||
msgid "No download URL available for this attachment."
|
msgid "No download URL available for this attachment."
|
||||||
msgstr "Brak dostępnego URL do pobrania tego załącznika."
|
msgstr "Brak dostępnego URL do pobrania tego załącznika."
|
||||||
|
|
||||||
@@ -1575,7 +1586,7 @@ msgstr "Brak dostępnego URL do pobrania tego załącznika."
|
|||||||
msgid "No keyboard shortcuts registered."
|
msgid "No keyboard shortcuts registered."
|
||||||
msgstr "Brak zarejestrowanych skrótów klawiaturowych."
|
msgstr "Brak zarejestrowanych skrótów klawiaturowych."
|
||||||
|
|
||||||
#: src/views/board/index.tsx:492
|
#: src/views/board/index.tsx:488
|
||||||
msgid "No lists"
|
msgid "No lists"
|
||||||
msgstr "Brak list"
|
msgstr "Brak list"
|
||||||
|
|
||||||
@@ -1726,24 +1737,25 @@ msgstr "Proszę wybrać plik do przesłania."
|
|||||||
#: src/views/board/components/NewTemplateForm.tsx:77
|
#: src/views/board/components/NewTemplateForm.tsx:77
|
||||||
#: src/views/board/components/UpdateBoardSlugForm.tsx:73
|
#: src/views/board/components/UpdateBoardSlugForm.tsx:73
|
||||||
#: src/views/board/components/VisibilityButton.tsx:54
|
#: src/views/board/components/VisibilityButton.tsx:54
|
||||||
#: src/views/board/index.tsx:174
|
#: src/views/board/index.tsx:170
|
||||||
#: src/views/board/index.tsx:230
|
#: src/views/board/index.tsx:226
|
||||||
#: src/views/boards/components/ImportBoardsForm.tsx:205
|
#: src/views/boards/components/ImportBoardsForm.tsx:205
|
||||||
#: src/views/card/components/AttachmentThumbnails.tsx:73
|
#: src/views/card/components/AttachmentThumbnails.tsx:74
|
||||||
#: src/views/card/components/ChecklistItemRow.tsx:60
|
#: src/views/card/components/ChecklistItemRow.tsx:67
|
||||||
#: src/views/card/components/ChecklistItemRow.tsx:88
|
#: src/views/card/components/ChecklistItemRow.tsx:95
|
||||||
#: src/views/card/components/ChecklistNameInput.tsx:46
|
#: src/views/card/components/ChecklistNameInput.tsx:47
|
||||||
#: src/views/card/components/Comment.tsx:64
|
#: src/views/card/components/Checklists.tsx:81
|
||||||
|
#: src/views/card/components/Comment.tsx:65
|
||||||
#: src/views/card/components/DeleteCardConfirmation.tsx:52
|
#: src/views/card/components/DeleteCardConfirmation.tsx:52
|
||||||
#: src/views/card/components/DeleteChecklistConfirmation.tsx:37
|
#: src/views/card/components/DeleteChecklistConfirmation.tsx:38
|
||||||
#: src/views/card/components/DeleteCommentConfirmation.tsx:45
|
#: src/views/card/components/DeleteCommentConfirmation.tsx:46
|
||||||
#: src/views/card/components/DueDateSelector.tsx:59
|
#: src/views/card/components/DueDateSelector.tsx:60
|
||||||
#: src/views/card/components/LabelSelector.tsx:72
|
#: src/views/card/components/LabelSelector.tsx:73
|
||||||
#: src/views/card/components/ListSelector.tsx:52
|
#: src/views/card/components/ListSelector.tsx:53
|
||||||
#: src/views/card/components/MemberSelector.tsx:79
|
#: src/views/card/components/MemberSelector.tsx:80
|
||||||
#: src/views/card/components/NewChecklistForm.tsx:70
|
#: src/views/card/components/NewChecklistForm.tsx:71
|
||||||
#: src/views/card/components/NewChecklistItemForm.tsx:89
|
#: src/views/card/components/NewChecklistItemForm.tsx:90
|
||||||
#: src/views/card/components/NewCommentForm.tsx:31
|
#: src/views/card/components/NewCommentForm.tsx:32
|
||||||
#: src/views/card/index.tsx:187
|
#: src/views/card/index.tsx:187
|
||||||
#: src/views/card/index.tsx:200
|
#: src/views/card/index.tsx:200
|
||||||
#: src/views/members/components/DeleteMemberConfirmation.tsx:28
|
#: src/views/members/components/DeleteMemberConfirmation.tsx:28
|
||||||
@@ -1845,35 +1857,40 @@ msgstr "Usuń"
|
|||||||
msgid "Remove member"
|
msgid "Remove member"
|
||||||
msgstr "Usuń członka"
|
msgstr "Usuń członka"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:63
|
#. placeholder {0}: mergedLabels.length
|
||||||
|
#: src/views/card/components/ActivityList.tsx:91
|
||||||
|
msgid "removed {0} labels: <0>{labelList}</0>"
|
||||||
|
msgstr "usunięto {0} etykiety: <0>{labelList}</0>"
|
||||||
|
|
||||||
|
#: src/views/card/components/ActivityList.tsx:104
|
||||||
msgid "removed a label from the card"
|
msgid "removed a label from the card"
|
||||||
msgstr "usunął etykietę z karty"
|
msgstr "usunął etykietę z karty"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:65
|
#: src/views/card/components/ActivityList.tsx:106
|
||||||
msgid "removed a member from the card"
|
msgid "removed a member from the card"
|
||||||
msgstr "usunął członka z karty"
|
msgstr "usunął członka z karty"
|
||||||
|
|
||||||
#. placeholder {0}: truncate(label)
|
#. placeholder {0}: truncate(label)
|
||||||
#: src/views/card/components/ActivityList.tsx:138
|
#: src/views/card/components/ActivityList.tsx:173
|
||||||
msgid "removed label <0>{0}</0>"
|
msgid "removed label <0>{0}</0>"
|
||||||
msgstr "usunięto etykietę <0>{0}</0>"
|
msgstr "usunięto etykietę <0>{0}</0>"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:76
|
#: src/views/card/components/ActivityList.tsx:117
|
||||||
#: src/views/card/components/ActivityList.tsx:241
|
#: src/views/card/components/ActivityList.tsx:276
|
||||||
msgid "removed the due date"
|
msgid "removed the due date"
|
||||||
msgstr "usunięto termin"
|
msgstr "usunięto termin"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:67
|
#: src/views/card/components/ActivityList.tsx:108
|
||||||
msgid "renamed a checklist"
|
msgid "renamed a checklist"
|
||||||
msgstr "zmieniono nazwę listy kontrolnej"
|
msgstr "zmieniono nazwę listy kontrolnej"
|
||||||
|
|
||||||
#. placeholder {0}: truncate(toTitle)
|
#. placeholder {0}: truncate(toTitle)
|
||||||
#: src/views/card/components/ActivityList.tsx:154
|
#: src/views/card/components/ActivityList.tsx:189
|
||||||
msgid "renamed checklist <0>{0}</0>"
|
msgid "renamed checklist <0>{0}</0>"
|
||||||
msgstr "zmieniono nazwę listy kontrolnej <0>{0}</0>"
|
msgstr "zmieniono nazwę listy kontrolnej <0>{0}</0>"
|
||||||
|
|
||||||
#. placeholder {0}: truncate(toTitle)
|
#. placeholder {0}: truncate(toTitle)
|
||||||
#: src/views/card/components/ActivityList.tsx:178
|
#: src/views/card/components/ActivityList.tsx:213
|
||||||
msgid "renamed checklist item to <0>{0}</0>"
|
msgid "renamed checklist item to <0>{0}</0>"
|
||||||
msgstr "zmieniono nazwę elementu listy kontrolnej na <0>{0}</0>"
|
msgstr "zmieniono nazwę elementu listy kontrolnej na <0>{0}</0>"
|
||||||
|
|
||||||
@@ -1912,7 +1929,7 @@ msgstr "Rola"
|
|||||||
msgid "Run on your own infrastructure"
|
msgid "Run on your own infrastructure"
|
||||||
msgstr "Uruchom na własnej infrastrukturze"
|
msgstr "Uruchom na własnej infrastrukturze"
|
||||||
|
|
||||||
#: src/views/card/components/Comment.tsx:165
|
#: src/views/card/components/Comment.tsx:166
|
||||||
#: src/views/settings/components/Avatar.tsx:309
|
#: src/views/settings/components/Avatar.tsx:309
|
||||||
msgid "Save"
|
msgid "Save"
|
||||||
msgstr "Zapisz"
|
msgstr "Zapisz"
|
||||||
@@ -1950,7 +1967,7 @@ msgstr "Hostuj samodzielnie"
|
|||||||
msgid "Self host with Github"
|
msgid "Self host with Github"
|
||||||
msgstr "Hostuj samodzielnie z Github"
|
msgstr "Hostuj samodzielnie z Github"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:107
|
#: src/views/card/components/ActivityList.tsx:142
|
||||||
msgid "self-assigned the card"
|
msgid "self-assigned the card"
|
||||||
msgstr "przypisał(a) sobie kartę"
|
msgstr "przypisał(a) sobie kartę"
|
||||||
|
|
||||||
@@ -1966,11 +1983,11 @@ msgstr "Prześlij opinię"
|
|||||||
msgid "Senior"
|
msgid "Senior"
|
||||||
msgstr "Starszy"
|
msgstr "Starszy"
|
||||||
|
|
||||||
#: src/views/card/components/DueDateSelector.tsx:116
|
#: src/views/card/components/DueDateSelector.tsx:117
|
||||||
msgid "Set due date"
|
msgid "Set due date"
|
||||||
msgstr "Ustaw termin"
|
msgstr "Ustaw termin"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:74
|
#: src/views/card/components/ActivityList.tsx:115
|
||||||
msgid "set the due date"
|
msgid "set the due date"
|
||||||
msgstr "ustawiono termin"
|
msgstr "ustawiono termin"
|
||||||
|
|
||||||
@@ -2095,8 +2112,8 @@ msgstr "Plan zespołowy"
|
|||||||
msgid "Teams"
|
msgid "Teams"
|
||||||
msgstr "Zespoły"
|
msgstr "Zespoły"
|
||||||
|
|
||||||
#: src/views/board/index.tsx:386
|
#: src/views/board/index.tsx:382
|
||||||
#: src/views/board/index.tsx:421
|
#: src/views/board/index.tsx:417
|
||||||
msgid "Template"
|
msgid "Template"
|
||||||
msgstr "Szablon"
|
msgstr "Szablon"
|
||||||
|
|
||||||
@@ -2161,8 +2178,8 @@ msgstr "Nie będą mieli dostępu do tego obszaru roboczego."
|
|||||||
#: src/components/DeleteLabelConfirmation.tsx:44
|
#: src/components/DeleteLabelConfirmation.tsx:44
|
||||||
#: src/views/board/components/DeleteBoardConfirmation.tsx:39
|
#: src/views/board/components/DeleteBoardConfirmation.tsx:39
|
||||||
#: src/views/card/components/DeleteCardConfirmation.tsx:78
|
#: src/views/card/components/DeleteCardConfirmation.tsx:78
|
||||||
#: src/views/card/components/DeleteChecklistConfirmation.tsx:58
|
#: src/views/card/components/DeleteChecklistConfirmation.tsx:59
|
||||||
#: src/views/card/components/DeleteCommentConfirmation.tsx:68
|
#: src/views/card/components/DeleteCommentConfirmation.tsx:69
|
||||||
msgid "This action can't be undone."
|
msgid "This action can't be undone."
|
||||||
msgstr "Tej akcji nie można cofnąć."
|
msgstr "Tej akcji nie można cofnąć."
|
||||||
|
|
||||||
@@ -2170,7 +2187,7 @@ msgstr "Tej akcji nie można cofnąć."
|
|||||||
msgid "This API key will only be shown once. Please save it in a secure location."
|
msgid "This API key will only be shown once. Please save it in a secure location."
|
||||||
msgstr "Ten klucz API zostanie wyświetlony tylko raz. Proszę zapisać go w bezpiecznym miejscu."
|
msgstr "Ten klucz API zostanie wyświetlony tylko raz. Proszę zapisać go w bezpiecznym miejscu."
|
||||||
|
|
||||||
#: src/views/public/board/index.tsx:168
|
#: src/views/public/board/index.tsx:169
|
||||||
msgid "This board is private or does not exist"
|
msgid "This board is private or does not exist"
|
||||||
msgstr "Ta tablica jest prywatna lub nie istnieje"
|
msgstr "Ta tablica jest prywatna lub nie istnieje"
|
||||||
|
|
||||||
@@ -2232,27 +2249,27 @@ msgstr "Importy Trello"
|
|||||||
msgid "Triaging"
|
msgid "Triaging"
|
||||||
msgstr "Sortowanie"
|
msgstr "Sortowanie"
|
||||||
|
|
||||||
#: src/views/home/components/Logos.tsx:73
|
#: src/views/home/components/Logos.tsx:67
|
||||||
msgid "Trusted by fast-moving teams<0/>around the world"
|
msgid "Trusted by fast-moving teams<0/>around the world"
|
||||||
msgstr "Zaufany przez dynamiczne zespoły<0/>na całym świecie"
|
msgstr "Zaufany przez dynamiczne zespoły<0/>na całym świecie"
|
||||||
|
|
||||||
#: src/views/card/components/NewChecklistItemForm.tsx:88
|
#: src/views/card/components/NewChecklistItemForm.tsx:89
|
||||||
msgid "Unable to add checklist item"
|
msgid "Unable to add checklist item"
|
||||||
msgstr "Nie można dodać elementu listy kontrolnej"
|
msgstr "Nie można dodać elementu listy kontrolnej"
|
||||||
|
|
||||||
#: src/views/card/components/NewCommentForm.tsx:30
|
#: src/views/card/components/NewCommentForm.tsx:31
|
||||||
msgid "Unable to add comment"
|
msgid "Unable to add comment"
|
||||||
msgstr "Nie można dodać komentarza"
|
msgstr "Nie można dodać komentarza"
|
||||||
|
|
||||||
#: src/views/card/index.tsx:199
|
#: src/views/card/index.tsx:199
|
||||||
msgid "Unable to add label"
|
msgid "Unable to add label"
|
||||||
msgstr ""
|
msgstr "Nie można dodać etykiety"
|
||||||
|
|
||||||
#: src/views/board/components/NewCardForm.tsx:181
|
#: src/views/board/components/NewCardForm.tsx:181
|
||||||
msgid "Unable to create card"
|
msgid "Unable to create card"
|
||||||
msgstr "Nie można utworzyć karty"
|
msgstr "Nie można utworzyć karty"
|
||||||
|
|
||||||
#: src/views/card/components/NewChecklistForm.tsx:69
|
#: src/views/card/components/NewChecklistForm.tsx:70
|
||||||
msgid "Unable to create checklist"
|
msgid "Unable to create checklist"
|
||||||
msgstr "Nie można utworzyć listy kontrolnej"
|
msgstr "Nie można utworzyć listy kontrolnej"
|
||||||
|
|
||||||
@@ -2269,7 +2286,7 @@ msgstr "Nie można utworzyć szablonu"
|
|||||||
msgid "Unable to create workspace"
|
msgid "Unable to create workspace"
|
||||||
msgstr "Nie można utworzyć przestrzeni roboczej"
|
msgstr "Nie można utworzyć przestrzeni roboczej"
|
||||||
|
|
||||||
#: src/views/card/components/AttachmentThumbnails.tsx:72
|
#: src/views/card/components/AttachmentThumbnails.tsx:73
|
||||||
msgid "Unable to delete attachment"
|
msgid "Unable to delete attachment"
|
||||||
msgstr "Nie można usunąć załącznika"
|
msgstr "Nie można usunąć załącznika"
|
||||||
|
|
||||||
@@ -2277,15 +2294,15 @@ msgstr "Nie można usunąć załącznika"
|
|||||||
msgid "Unable to delete card"
|
msgid "Unable to delete card"
|
||||||
msgstr "Nie można usunąć karty"
|
msgstr "Nie można usunąć karty"
|
||||||
|
|
||||||
#: src/views/card/components/DeleteChecklistConfirmation.tsx:36
|
#: src/views/card/components/DeleteChecklistConfirmation.tsx:37
|
||||||
msgid "Unable to delete checklist"
|
msgid "Unable to delete checklist"
|
||||||
msgstr "Nie można usunąć listy kontrolnej"
|
msgstr "Nie można usunąć listy kontrolnej"
|
||||||
|
|
||||||
#: src/views/card/components/ChecklistItemRow.tsx:87
|
#: src/views/card/components/ChecklistItemRow.tsx:94
|
||||||
msgid "Unable to delete checklist item"
|
msgid "Unable to delete checklist item"
|
||||||
msgstr "Nie można usunąć elementu listy kontrolnej"
|
msgstr "Nie można usunąć elementu listy kontrolnej"
|
||||||
|
|
||||||
#: src/views/card/components/DeleteCommentConfirmation.tsx:44
|
#: src/views/card/components/DeleteCommentConfirmation.tsx:45
|
||||||
msgid "Unable to delete comment"
|
msgid "Unable to delete comment"
|
||||||
msgstr "Nie można usunąć komentarza"
|
msgstr "Nie można usunąć komentarza"
|
||||||
|
|
||||||
@@ -2293,6 +2310,10 @@ msgstr "Nie można usunąć komentarza"
|
|||||||
msgid "Unable to remove member"
|
msgid "Unable to remove member"
|
||||||
msgstr "Nie można usunąć członka"
|
msgstr "Nie można usunąć członka"
|
||||||
|
|
||||||
|
#: src/views/card/components/Checklists.tsx:80
|
||||||
|
msgid "Unable to reorder checklist item"
|
||||||
|
msgstr "Nie można zmienić kolejności elementu listy kontrolnej"
|
||||||
|
|
||||||
#: src/components/FeedbackModal.tsx:40
|
#: src/components/FeedbackModal.tsx:40
|
||||||
msgid "Unable to send feedback"
|
msgid "Unable to send feedback"
|
||||||
msgstr "Nie można wysłać opinii"
|
msgstr "Nie można wysłać opinii"
|
||||||
@@ -2305,46 +2326,46 @@ msgstr "Nie można zaktualizować adresu URL tablicy"
|
|||||||
msgid "Unable to update board visibility"
|
msgid "Unable to update board visibility"
|
||||||
msgstr "Nie można zaktualizować widoczności tablicy"
|
msgstr "Nie można zaktualizować widoczności tablicy"
|
||||||
|
|
||||||
#: src/views/board/index.tsx:229
|
#: src/views/board/index.tsx:225
|
||||||
#: src/views/card/index.tsx:186
|
#: src/views/card/index.tsx:186
|
||||||
msgid "Unable to update card"
|
msgid "Unable to update card"
|
||||||
msgstr "Nie można zaktualizować karty"
|
msgstr "Nie można zaktualizować karty"
|
||||||
|
|
||||||
#: src/views/card/components/ChecklistNameInput.tsx:45
|
#: src/views/card/components/ChecklistNameInput.tsx:46
|
||||||
msgid "Unable to update checklist"
|
msgid "Unable to update checklist"
|
||||||
msgstr "Nie można zaktualizować listy kontrolnej"
|
msgstr "Nie można zaktualizować listy kontrolnej"
|
||||||
|
|
||||||
#: src/views/card/components/ChecklistItemRow.tsx:59
|
#: src/views/card/components/ChecklistItemRow.tsx:66
|
||||||
msgid "Unable to update checklist item"
|
msgid "Unable to update checklist item"
|
||||||
msgstr "Nie można zaktualizować elementu listy kontrolnej"
|
msgstr "Nie można zaktualizować elementu listy kontrolnej"
|
||||||
|
|
||||||
#: src/views/card/components/Comment.tsx:63
|
#: src/views/card/components/Comment.tsx:64
|
||||||
msgid "Unable to update comment"
|
msgid "Unable to update comment"
|
||||||
msgstr "Nie można zaktualizować komentarza"
|
msgstr "Nie można zaktualizować komentarza"
|
||||||
|
|
||||||
#: src/views/card/components/DueDateSelector.tsx:58
|
#: src/views/card/components/DueDateSelector.tsx:59
|
||||||
msgid "Unable to update due date"
|
msgid "Unable to update due date"
|
||||||
msgstr "Nie można zaktualizować terminu"
|
msgstr "Nie można zaktualizować terminu"
|
||||||
|
|
||||||
#: src/views/card/components/LabelSelector.tsx:71
|
#: src/views/card/components/LabelSelector.tsx:72
|
||||||
msgid "Unable to update labels"
|
msgid "Unable to update labels"
|
||||||
msgstr "Nie można zaktualizować etykiet"
|
msgstr "Nie można zaktualizować etykiet"
|
||||||
|
|
||||||
#: src/views/board/index.tsx:173
|
#: src/views/board/index.tsx:169
|
||||||
#: src/views/card/components/ListSelector.tsx:51
|
#: src/views/card/components/ListSelector.tsx:52
|
||||||
msgid "Unable to update list"
|
msgid "Unable to update list"
|
||||||
msgstr "Nie można zaktualizować listy"
|
msgstr "Nie można zaktualizować listy"
|
||||||
|
|
||||||
#: src/views/card/components/MemberSelector.tsx:78
|
#: src/views/card/components/MemberSelector.tsx:79
|
||||||
msgid "Unable to update members"
|
msgid "Unable to update members"
|
||||||
msgstr "Nie można zaktualizować członków"
|
msgstr "Nie można zaktualizować członków"
|
||||||
|
|
||||||
#. placeholder {0}: truncate(memberName)
|
#. placeholder {0}: truncate(memberName)
|
||||||
#: src/views/card/components/ActivityList.tsx:121
|
#: src/views/card/components/ActivityList.tsx:156
|
||||||
msgid "unassigned <0>{0}</0> from the card"
|
msgid "unassigned <0>{0}</0> from the card"
|
||||||
msgstr "usunięto przypisanie <0>{0}</0> z karty"
|
msgstr "usunięto przypisanie <0>{0}</0> z karty"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:118
|
#: src/views/card/components/ActivityList.tsx:153
|
||||||
msgid "unassigned themselves from the card"
|
msgid "unassigned themselves from the card"
|
||||||
msgstr "usunęli swoje przypisanie z karty"
|
msgstr "usunęli swoje przypisanie z karty"
|
||||||
|
|
||||||
@@ -2403,24 +2424,24 @@ msgstr "Aktualizuj"
|
|||||||
msgid "Update label"
|
msgid "Update label"
|
||||||
msgstr "Zaktualizuj etykietę"
|
msgstr "Zaktualizuj etykietę"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:70
|
#: src/views/card/components/ActivityList.tsx:111
|
||||||
msgid "updated a checklist item"
|
msgid "updated a checklist item"
|
||||||
msgstr "zaktualizowano element listy kontrolnej"
|
msgstr "zaktualizowano element listy kontrolnej"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:60
|
#: src/views/card/components/ActivityList.tsx:101
|
||||||
msgid "updated the description"
|
msgid "updated the description"
|
||||||
msgstr "zaktualizowano opis"
|
msgstr "zaktualizowano opis"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:75
|
#: src/views/card/components/ActivityList.tsx:116
|
||||||
msgid "updated the due date"
|
msgid "updated the due date"
|
||||||
msgstr "zaktualizowano termin"
|
msgstr "zaktualizowano termin"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:59
|
#: src/views/card/components/ActivityList.tsx:100
|
||||||
msgid "updated the title"
|
msgid "updated the title"
|
||||||
msgstr "zaktualizowano tytuł"
|
msgstr "zaktualizowano tytuł"
|
||||||
|
|
||||||
#. placeholder {0}: truncate(toTitle)
|
#. placeholder {0}: truncate(toTitle)
|
||||||
#: src/views/card/components/ActivityList.tsx:90
|
#: src/views/card/components/ActivityList.tsx:125
|
||||||
msgid "updated the title to <0>{0}</0>"
|
msgid "updated the title to <0>{0}</0>"
|
||||||
msgstr "zaktualizowano tytuł na <0>{0}</0>"
|
msgstr "zaktualizowano tytuł na <0>{0}</0>"
|
||||||
|
|
||||||
@@ -2434,8 +2455,8 @@ msgstr "Ulepsz do planu Pro"
|
|||||||
msgid "Upgrade to Pro ($29/month)"
|
msgid "Upgrade to Pro ($29/month)"
|
||||||
msgstr "Ulepsz do planu Pro (29 USD/miesiąc)"
|
msgstr "Ulepsz do planu Pro (29 USD/miesiąc)"
|
||||||
|
|
||||||
#: src/views/card/components/AttachmentUpload.tsx:32
|
#: src/views/card/components/AttachmentUpload.tsx:33
|
||||||
#: src/views/card/components/AttachmentUpload.tsx:78
|
#: src/views/card/components/AttachmentUpload.tsx:79
|
||||||
msgid "Upload failed"
|
msgid "Upload failed"
|
||||||
msgstr "Przesyłanie nie powiodło się"
|
msgstr "Przesyłanie nie powiodło się"
|
||||||
|
|
||||||
@@ -2488,7 +2509,7 @@ msgstr "Zobacz i zarządzaj swoimi płatnościami i subskrypcją."
|
|||||||
msgid "View docs"
|
msgid "View docs"
|
||||||
msgstr "Zobacz dokumentację"
|
msgstr "Zobacz dokumentację"
|
||||||
|
|
||||||
#: src/views/public/board/index.tsx:141
|
#: src/views/public/board/index.tsx:142
|
||||||
msgid "View only"
|
msgid "View only"
|
||||||
msgstr "Tylko podgląd"
|
msgstr "Tylko podgląd"
|
||||||
|
|
||||||
@@ -2496,7 +2517,7 @@ msgstr "Tylko podgląd"
|
|||||||
msgid "View our roadmap."
|
msgid "View our roadmap."
|
||||||
msgstr "Zobacz nasz plan ulepszeń."
|
msgstr "Zobacz nasz plan ulepszeń."
|
||||||
|
|
||||||
#: src/views/public/board/index.tsx:171
|
#: src/views/public/board/index.tsx:172
|
||||||
msgid "View workspace"
|
msgid "View workspace"
|
||||||
msgstr "Zobacz obszar roboczy"
|
msgstr "Zobacz obszar roboczy"
|
||||||
|
|
||||||
@@ -2541,10 +2562,10 @@ msgid "Why make an open source Trello?"
|
|||||||
msgstr "Dlaczego próbujecie stworzyć Trello w wersji otwartoźródłowej?"
|
msgstr "Dlaczego próbujecie stworzyć Trello w wersji otwartoźródłowej?"
|
||||||
|
|
||||||
#: src/components/SettingsLayout.tsx:39
|
#: src/components/SettingsLayout.tsx:39
|
||||||
#: src/views/board/index.tsx:386
|
#: src/views/board/index.tsx:382
|
||||||
#: src/views/boards/index.tsx:33
|
#: src/views/boards/index.tsx:33
|
||||||
#: src/views/members/index.tsx:173
|
#: src/views/members/index.tsx:173
|
||||||
#: src/views/public/board/index.tsx:113
|
#: src/views/public/board/index.tsx:114
|
||||||
#: src/views/public/boards/index.tsx:66
|
#: src/views/public/boards/index.tsx:66
|
||||||
msgid "Workspace"
|
msgid "Workspace"
|
||||||
msgstr "Obszar roboczy"
|
msgstr "Obszar roboczy"
|
||||||
@@ -2678,7 +2699,7 @@ msgstr "Twoje tablice zostały zaimportowane."
|
|||||||
msgid "Your display name has been updated."
|
msgid "Your display name has been updated."
|
||||||
msgstr "Twoja nazwa wyświetlana została zaktualizowana."
|
msgstr "Twoja nazwa wyświetlana została zaktualizowana."
|
||||||
|
|
||||||
#: src/views/card/components/AttachmentUpload.tsx:26
|
#: src/views/card/components/AttachmentUpload.tsx:27
|
||||||
msgid "Your file has been uploaded successfully."
|
msgid "Your file has been uploaded successfully."
|
||||||
msgstr "Twój plik został pomyślnie przesłany."
|
msgstr "Twój plik został pomyślnie przesłany."
|
||||||
|
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ msgstr ""
|
|||||||
"Language-Team: \n"
|
"Language-Team: \n"
|
||||||
"Plural-Forms: \n"
|
"Plural-Forms: \n"
|
||||||
|
|
||||||
#: src/views/card/components/Comment.tsx:123
|
#: src/views/card/components/Comment.tsx:124
|
||||||
msgid " (edited)"
|
msgid " (edited)"
|
||||||
msgstr " (отредактировано)"
|
msgstr " (отредактировано)"
|
||||||
|
|
||||||
@@ -41,7 +41,7 @@ msgid "{0} labels"
|
|||||||
msgstr "{0} метки"
|
msgstr "{0} метки"
|
||||||
|
|
||||||
#. placeholder {0}: isTemplate ? "Template" : "Board"
|
#. placeholder {0}: isTemplate ? "Template" : "Board"
|
||||||
#: src/views/board/index.tsx:412
|
#: src/views/board/index.tsx:408
|
||||||
msgid "{0} not found"
|
msgid "{0} not found"
|
||||||
msgstr "{0} не найден"
|
msgstr "{0} не найден"
|
||||||
|
|
||||||
@@ -100,12 +100,12 @@ msgstr "Журналы активности"
|
|||||||
msgid "Add a card"
|
msgid "Add a card"
|
||||||
msgstr "Добавить карточку"
|
msgstr "Добавить карточку"
|
||||||
|
|
||||||
#: src/views/card/components/Comment.tsx:146
|
#: src/views/card/components/Comment.tsx:147
|
||||||
#: src/views/card/components/NewCommentForm.tsx:57
|
#: src/views/card/components/NewCommentForm.tsx:55
|
||||||
msgid "Add a comment..."
|
msgid "Add a comment..."
|
||||||
msgstr "Добавить комментарий..."
|
msgstr "Добавить комментарий..."
|
||||||
|
|
||||||
#: src/views/card/components/NewChecklistItemForm.tsx:140
|
#: src/views/card/components/NewChecklistItemForm.tsx:141
|
||||||
msgid "Add an item..."
|
msgid "Add an item..."
|
||||||
msgstr "Добавить элемент..."
|
msgstr "Добавить элемент..."
|
||||||
|
|
||||||
@@ -117,48 +117,53 @@ msgstr "Добавить чек-лист"
|
|||||||
msgid "Add description... (type '/' to open commands or '@' to mention)"
|
msgid "Add description... (type '/' to open commands or '@' to mention)"
|
||||||
msgstr "Добавить описание... (введите '/' для открытия команд или '@' для упоминания)"
|
msgstr "Добавить описание... (введите '/' для открытия команд или '@' для упоминания)"
|
||||||
|
|
||||||
#: src/views/card/components/ChecklistItemRow.tsx:172
|
#: src/views/card/components/ChecklistItemRow.tsx:195
|
||||||
msgid "Add details..."
|
msgid "Add details..."
|
||||||
msgstr "Добавить детали..."
|
msgstr "Добавить детали..."
|
||||||
|
|
||||||
#: src/views/card/components/LabelSelector.tsx:109
|
#: src/views/card/components/LabelSelector.tsx:110
|
||||||
#: src/views/card/components/LabelSelector.tsx:114
|
#: src/views/card/components/LabelSelector.tsx:115
|
||||||
msgid "Add label"
|
msgid "Add label"
|
||||||
msgstr "Добавить метку"
|
msgstr "Добавить метку"
|
||||||
|
|
||||||
#: src/views/card/components/MemberSelector.tsx:130
|
#: src/views/card/components/MemberSelector.tsx:131
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:257
|
#: src/views/members/components/InviteMemberForm.tsx:257
|
||||||
msgid "Add member"
|
msgid "Add member"
|
||||||
msgstr "Добавить участника"
|
msgstr "Добавить участника"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:66
|
#. placeholder {0}: mergedLabels.length
|
||||||
|
#: src/views/card/components/ActivityList.tsx:77
|
||||||
|
msgid "added {0} labels: <0>{labelList}</0>"
|
||||||
|
msgstr "добавил {0} метки: <0>{labelList}</0>"
|
||||||
|
|
||||||
|
#: src/views/card/components/ActivityList.tsx:107
|
||||||
msgid "added a checklist"
|
msgid "added a checklist"
|
||||||
msgstr "добавил(а) чек-лист"
|
msgstr "добавил(а) чек-лист"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:69
|
#: src/views/card/components/ActivityList.tsx:110
|
||||||
msgid "added a checklist item"
|
msgid "added a checklist item"
|
||||||
msgstr "добавил(а) элемент чек-листа"
|
msgstr "добавил(а) элемент чек-листа"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:62
|
#: src/views/card/components/ActivityList.tsx:103
|
||||||
msgid "added a label to the card"
|
msgid "added a label to the card"
|
||||||
msgstr "добавил(а) метку к карточке"
|
msgstr "добавил(а) метку к карточке"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:64
|
#: src/views/card/components/ActivityList.tsx:105
|
||||||
msgid "added a member to the card"
|
msgid "added a member to the card"
|
||||||
msgstr "добавил(а) участника к карточке"
|
msgstr "добавил(а) участника к карточке"
|
||||||
|
|
||||||
#. placeholder {0}: truncate(toTitle)
|
#. placeholder {0}: truncate(toTitle)
|
||||||
#: src/views/card/components/ActivityList.tsx:146
|
#: src/views/card/components/ActivityList.tsx:181
|
||||||
msgid "added checklist <0>{0}</0>"
|
msgid "added checklist <0>{0}</0>"
|
||||||
msgstr "добавлен контрольный список <0>{0}</0>"
|
msgstr "добавлен контрольный список <0>{0}</0>"
|
||||||
|
|
||||||
#. placeholder {0}: truncate(toTitle)
|
#. placeholder {0}: truncate(toTitle)
|
||||||
#: src/views/card/components/ActivityList.tsx:170
|
#: src/views/card/components/ActivityList.tsx:205
|
||||||
msgid "added checklist item <0>{0}</0>"
|
msgid "added checklist item <0>{0}</0>"
|
||||||
msgstr "добавлен элемент контрольного списка <0>{0}</0>"
|
msgstr "добавлен элемент контрольного списка <0>{0}</0>"
|
||||||
|
|
||||||
#. placeholder {0}: truncate(label)
|
#. placeholder {0}: truncate(label)
|
||||||
#: src/views/card/components/ActivityList.tsx:130
|
#: src/views/card/components/ActivityList.tsx:165
|
||||||
msgid "added label <0>{0}</0>"
|
msgid "added label <0>{0}</0>"
|
||||||
msgstr "добавлена метка <0>{0}</0>"
|
msgstr "добавлена метка <0>{0}</0>"
|
||||||
|
|
||||||
@@ -249,11 +254,11 @@ msgstr "Вы уверены, что хотите удалить этот {0}?"
|
|||||||
msgid "Are you sure you want to delete this card?"
|
msgid "Are you sure you want to delete this card?"
|
||||||
msgstr "Вы уверены, что хотите удалить эту карточку?"
|
msgstr "Вы уверены, что хотите удалить эту карточку?"
|
||||||
|
|
||||||
#: src/views/card/components/DeleteChecklistConfirmation.tsx:55
|
#: src/views/card/components/DeleteChecklistConfirmation.tsx:56
|
||||||
msgid "Are you sure you want to delete this checklist?"
|
msgid "Are you sure you want to delete this checklist?"
|
||||||
msgstr "Вы уверены, что хотите удалить этот контрольный список?"
|
msgstr "Вы уверены, что хотите удалить этот контрольный список?"
|
||||||
|
|
||||||
#: src/views/card/components/DeleteCommentConfirmation.tsx:65
|
#: src/views/card/components/DeleteCommentConfirmation.tsx:66
|
||||||
msgid "Are you sure you want to delete this comment?"
|
msgid "Are you sure you want to delete this comment?"
|
||||||
msgstr "Вы уверены, что хотите удалить этот комментарий?"
|
msgstr "Вы уверены, что хотите удалить этот комментарий?"
|
||||||
|
|
||||||
@@ -266,7 +271,7 @@ msgid "Are you sure you want to delete your account?"
|
|||||||
msgstr "Вы уверены, что хотите удалить свой аккаунт?"
|
msgstr "Вы уверены, что хотите удалить свой аккаунт?"
|
||||||
|
|
||||||
#. placeholder {0}: truncate(memberName)
|
#. placeholder {0}: truncate(memberName)
|
||||||
#: src/views/card/components/ActivityList.tsx:110
|
#: src/views/card/components/ActivityList.tsx:145
|
||||||
msgid "assigned <0>{0}</0> to the card"
|
msgid "assigned <0>{0}</0> to the card"
|
||||||
msgstr "назначено <0>{0}</0> к карточке"
|
msgstr "назначено <0>{0}</0> к карточке"
|
||||||
|
|
||||||
@@ -274,7 +279,7 @@ msgstr "назначено <0>{0}</0> к карточке"
|
|||||||
msgid "Assignees"
|
msgid "Assignees"
|
||||||
msgstr "Исполнители"
|
msgstr "Исполнители"
|
||||||
|
|
||||||
#: src/views/card/components/AttachmentUpload.tsx:25
|
#: src/views/card/components/AttachmentUpload.tsx:26
|
||||||
msgid "Attachment uploaded"
|
msgid "Attachment uploaded"
|
||||||
msgstr "Вложение загружено"
|
msgstr "Вложение загружено"
|
||||||
|
|
||||||
@@ -312,9 +317,9 @@ msgstr "Портал выставления счетов"
|
|||||||
msgid "Blog Post"
|
msgid "Blog Post"
|
||||||
msgstr "Пост в блоге"
|
msgstr "Пост в блоге"
|
||||||
|
|
||||||
#: src/views/board/index.tsx:386
|
#: src/views/board/index.tsx:382
|
||||||
#: src/views/card/index.tsx:272
|
#: src/views/card/index.tsx:272
|
||||||
#: src/views/public/board/index.tsx:113
|
#: src/views/public/board/index.tsx:114
|
||||||
msgid "Board"
|
msgid "Board"
|
||||||
msgstr "Доска"
|
msgstr "Доска"
|
||||||
|
|
||||||
@@ -331,7 +336,7 @@ msgstr "Название доски не может превышать 100 си
|
|||||||
msgid "Board name is required"
|
msgid "Board name is required"
|
||||||
msgstr "Название доски обязательно"
|
msgstr "Название доски обязательно"
|
||||||
|
|
||||||
#: src/views/public/board/index.tsx:165
|
#: src/views/public/board/index.tsx:166
|
||||||
msgid "Board not found"
|
msgid "Board not found"
|
||||||
msgstr "Доска не найдена"
|
msgstr "Доска не найдена"
|
||||||
|
|
||||||
@@ -347,7 +352,7 @@ msgstr "URL доски может содержать только буквы, ц
|
|||||||
msgid "Board URL cannot exceed 60 characters"
|
msgid "Board URL cannot exceed 60 characters"
|
||||||
msgstr "URL доски не может превышать 60 символов"
|
msgstr "URL доски не может превышать 60 символов"
|
||||||
|
|
||||||
#: src/views/public/board/index.tsx:79
|
#: src/views/public/board/index.tsx:80
|
||||||
msgid "Board URL copied to clipboard"
|
msgid "Board URL copied to clipboard"
|
||||||
msgstr "URL доски скопирован в буфер обмена"
|
msgstr "URL доски скопирован в буфер обмена"
|
||||||
|
|
||||||
@@ -382,10 +387,10 @@ msgstr "Отчет об ошибке"
|
|||||||
|
|
||||||
#: src/components/DeleteLabelConfirmation.tsx:49
|
#: src/components/DeleteLabelConfirmation.tsx:49
|
||||||
#: src/views/board/components/DeleteBoardConfirmation.tsx:44
|
#: src/views/board/components/DeleteBoardConfirmation.tsx:44
|
||||||
#: src/views/card/components/Comment.tsx:158
|
#: src/views/card/components/Comment.tsx:159
|
||||||
#: src/views/card/components/DeleteCardConfirmation.tsx:86
|
#: src/views/card/components/DeleteCardConfirmation.tsx:86
|
||||||
#: src/views/card/components/DeleteChecklistConfirmation.tsx:63
|
#: src/views/card/components/DeleteChecklistConfirmation.tsx:64
|
||||||
#: src/views/card/components/DeleteCommentConfirmation.tsx:76
|
#: src/views/card/components/DeleteCommentConfirmation.tsx:77
|
||||||
#: src/views/members/components/DeleteMemberConfirmation.tsx:55
|
#: src/views/members/components/DeleteMemberConfirmation.tsx:55
|
||||||
#: src/views/settings/components/Avatar.tsx:306
|
#: src/views/settings/components/Avatar.tsx:306
|
||||||
#: src/views/settings/components/ChangePasswordConfirmation.tsx:168
|
#: src/views/settings/components/ChangePasswordConfirmation.tsx:168
|
||||||
@@ -419,8 +424,8 @@ msgstr "Изменить пароль"
|
|||||||
msgid "Change your language preferences."
|
msgid "Change your language preferences."
|
||||||
msgstr "Измените настройки языка."
|
msgstr "Измените настройки языка."
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:220
|
#: src/views/card/components/ActivityList.tsx:255
|
||||||
#: src/views/card/components/ActivityList.tsx:234
|
#: src/views/card/components/ActivityList.tsx:269
|
||||||
msgid "changed the due date to <0>{formattedDate}</0>"
|
msgid "changed the due date to <0>{formattedDate}</0>"
|
||||||
msgstr "изменил(а) дату выполнения на <0>{formattedDate}</0>"
|
msgstr "изменил(а) дату выполнения на <0>{formattedDate}</0>"
|
||||||
|
|
||||||
@@ -433,7 +438,7 @@ msgstr "Ознакомьтесь с некоторыми из наших люб
|
|||||||
msgid "Check your inbox"
|
msgid "Check your inbox"
|
||||||
msgstr "Проверьте ваш почтовый ящик"
|
msgstr "Проверьте ваш почтовый ящик"
|
||||||
|
|
||||||
#: src/views/card/components/NewChecklistForm.tsx:118
|
#: src/views/card/components/NewChecklistForm.tsx:119
|
||||||
msgid "Checklist name"
|
msgid "Checklist name"
|
||||||
msgstr "Название контрольного списка"
|
msgstr "Название контрольного списка"
|
||||||
|
|
||||||
@@ -494,12 +499,12 @@ msgstr "Завершить"
|
|||||||
msgid "Complete control and ownership:"
|
msgid "Complete control and ownership:"
|
||||||
msgstr "Полный контроль и владение:"
|
msgstr "Полный контроль и владение:"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:71
|
#: src/views/card/components/ActivityList.tsx:112
|
||||||
msgid "completed a checklist item"
|
msgid "completed a checklist item"
|
||||||
msgstr "завершил элемент контрольного списка"
|
msgstr "завершил элемент контрольного списка"
|
||||||
|
|
||||||
#. placeholder {0}: truncate(toTitle)
|
#. placeholder {0}: truncate(toTitle)
|
||||||
#: src/views/card/components/ActivityList.tsx:187
|
#: src/views/card/components/ActivityList.tsx:222
|
||||||
msgid "completed checklist item <0>{0}</0>"
|
msgid "completed checklist item <0>{0}</0>"
|
||||||
msgstr "завершил элемент контрольного списка <0>{0}</0>"
|
msgstr "завершил элемент контрольного списка <0>{0}</0>"
|
||||||
|
|
||||||
@@ -573,7 +578,7 @@ msgstr "Создать API-ключ"
|
|||||||
msgid "Create card"
|
msgid "Create card"
|
||||||
msgstr "Создать карточку"
|
msgstr "Создать карточку"
|
||||||
|
|
||||||
#: src/views/card/components/NewChecklistForm.tsx:134
|
#: src/views/card/components/NewChecklistForm.tsx:135
|
||||||
msgid "Create checklist"
|
msgid "Create checklist"
|
||||||
msgstr "Создать чек-лист"
|
msgstr "Создать чек-лист"
|
||||||
|
|
||||||
@@ -600,12 +605,12 @@ msgid "Create new key"
|
|||||||
msgstr "Создать новый ключ"
|
msgstr "Создать новый ключ"
|
||||||
|
|
||||||
#: src/views/board/components/NewCardForm.tsx:414
|
#: src/views/board/components/NewCardForm.tsx:414
|
||||||
#: src/views/card/components/LabelSelector.tsx:97
|
#: src/views/card/components/LabelSelector.tsx:98
|
||||||
msgid "Create new label"
|
msgid "Create new label"
|
||||||
msgstr "Создать новую метку"
|
msgstr "Создать новую метку"
|
||||||
|
|
||||||
#: src/views/board/index.tsx:65
|
#: src/views/board/index.tsx:64
|
||||||
#: src/views/board/index.tsx:503
|
#: src/views/board/index.tsx:499
|
||||||
msgid "Create new list"
|
msgid "Create new list"
|
||||||
msgstr "Создать новый список"
|
msgstr "Создать новый список"
|
||||||
|
|
||||||
@@ -618,7 +623,7 @@ msgstr "Создать шаблон"
|
|||||||
msgid "Create workspace"
|
msgid "Create workspace"
|
||||||
msgstr "Создать рабочее пространство"
|
msgstr "Создать рабочее пространство"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:58
|
#: src/views/card/components/ActivityList.tsx:99
|
||||||
msgid "created the card"
|
msgid "created the card"
|
||||||
msgstr "создал(а) карточку"
|
msgstr "создал(а) карточку"
|
||||||
|
|
||||||
@@ -676,8 +681,8 @@ msgstr "Деактивировать ссылку-приглашение"
|
|||||||
#: src/components/LabelForm.tsx:228
|
#: src/components/LabelForm.tsx:228
|
||||||
#: src/views/board/components/DeleteBoardConfirmation.tsx:47
|
#: src/views/board/components/DeleteBoardConfirmation.tsx:47
|
||||||
#: src/views/card/components/DeleteCardConfirmation.tsx:92
|
#: src/views/card/components/DeleteCardConfirmation.tsx:92
|
||||||
#: src/views/card/components/DeleteChecklistConfirmation.tsx:66
|
#: src/views/card/components/DeleteChecklistConfirmation.tsx:67
|
||||||
#: src/views/card/components/DeleteCommentConfirmation.tsx:82
|
#: src/views/card/components/DeleteCommentConfirmation.tsx:83
|
||||||
msgid "Delete"
|
msgid "Delete"
|
||||||
msgstr "Удалить"
|
msgstr "Удалить"
|
||||||
|
|
||||||
@@ -695,7 +700,7 @@ msgstr "Удалить доску"
|
|||||||
msgid "Delete card"
|
msgid "Delete card"
|
||||||
msgstr "Удалить карточку"
|
msgstr "Удалить карточку"
|
||||||
|
|
||||||
#: src/views/card/components/Comment.tsx:91
|
#: src/views/card/components/Comment.tsx:92
|
||||||
msgid "Delete comment"
|
msgid "Delete comment"
|
||||||
msgstr "Удалить комментарий"
|
msgstr "Удалить комментарий"
|
||||||
|
|
||||||
@@ -713,21 +718,21 @@ msgstr "Удалить шаблон"
|
|||||||
msgid "Delete workspace"
|
msgid "Delete workspace"
|
||||||
msgstr "Удалить рабочее пространство"
|
msgstr "Удалить рабочее пространство"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:68
|
#: src/views/card/components/ActivityList.tsx:109
|
||||||
msgid "deleted a checklist"
|
msgid "deleted a checklist"
|
||||||
msgstr "удалил контрольный список"
|
msgstr "удалил контрольный список"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:73
|
#: src/views/card/components/ActivityList.tsx:114
|
||||||
msgid "deleted a checklist item"
|
msgid "deleted a checklist item"
|
||||||
msgstr "удалил элемент контрольного списка"
|
msgstr "удалил элемент контрольного списка"
|
||||||
|
|
||||||
#. placeholder {0}: truncate(fromTitle)
|
#. placeholder {0}: truncate(fromTitle)
|
||||||
#: src/views/card/components/ActivityList.tsx:162
|
#: src/views/card/components/ActivityList.tsx:197
|
||||||
msgid "deleted checklist <0>{0}</0>"
|
msgid "deleted checklist <0>{0}</0>"
|
||||||
msgstr "удалил контрольный список <0>{0}</0>"
|
msgstr "удалил контрольный список <0>{0}</0>"
|
||||||
|
|
||||||
#. placeholder {0}: truncate(fromTitle)
|
#. placeholder {0}: truncate(fromTitle)
|
||||||
#: src/views/card/components/ActivityList.tsx:205
|
#: src/views/card/components/ActivityList.tsx:240
|
||||||
msgid "deleted checklist item <0>{0}</0>"
|
msgid "deleted checklist item <0>{0}</0>"
|
||||||
msgstr "удалил элемент контрольного списка <0>{0}</0>"
|
msgstr "удалил элемент контрольного списка <0>{0}</0>"
|
||||||
|
|
||||||
@@ -793,13 +798,13 @@ msgstr "Нет аккаунта? <0><1>Зарегистрируйтесь</1></0
|
|||||||
msgid "Done"
|
msgid "Done"
|
||||||
msgstr "Готово"
|
msgstr "Готово"
|
||||||
|
|
||||||
#: src/views/card/components/AttachmentThumbnails.tsx:141
|
#: src/views/card/components/AttachmentThumbnails.tsx:142
|
||||||
msgid "Download failed"
|
msgid "Download failed"
|
||||||
msgstr "Не удалось загрузить"
|
msgstr "Не удалось загрузить"
|
||||||
|
|
||||||
#: src/views/board/components/Filters.tsx:171
|
#: src/views/board/components/Filters.tsx:171
|
||||||
#: src/views/board/components/NewCardForm.tsx:469
|
#: src/views/board/components/NewCardForm.tsx:469
|
||||||
#: src/views/card/index.tsx:138
|
#: src/views/card/index.tsx:139
|
||||||
msgid "Due date"
|
msgid "Due date"
|
||||||
msgstr "Дата выполнения"
|
msgstr "Дата выполнения"
|
||||||
|
|
||||||
@@ -824,7 +829,7 @@ msgstr "Срок завтра"
|
|||||||
msgid "Edit board URL"
|
msgid "Edit board URL"
|
||||||
msgstr "Изменить URL доски"
|
msgstr "Изменить URL доски"
|
||||||
|
|
||||||
#: src/views/card/components/Comment.tsx:82
|
#: src/views/card/components/Comment.tsx:83
|
||||||
msgid "Edit comment"
|
msgid "Edit comment"
|
||||||
msgstr "Редактировать комментарий"
|
msgstr "Редактировать комментарий"
|
||||||
|
|
||||||
@@ -981,8 +986,8 @@ msgstr "Не удалось создать доску"
|
|||||||
msgid "Failed to login with {0}. Please try again."
|
msgid "Failed to login with {0}. Please try again."
|
||||||
msgstr "Не удалось войти с {0}. Пожалуйста, попробуйте снова."
|
msgstr "Не удалось войти с {0}. Пожалуйста, попробуйте снова."
|
||||||
|
|
||||||
#: src/views/card/components/AttachmentUpload.tsx:33
|
#: src/views/card/components/AttachmentUpload.tsx:34
|
||||||
#: src/views/card/components/AttachmentUpload.tsx:79
|
#: src/views/card/components/AttachmentUpload.tsx:80
|
||||||
msgid "Failed to upload attachment. Please try again."
|
msgid "Failed to upload attachment. Please try again."
|
||||||
msgstr "Не удалось загрузить вложение. Пожалуйста, попробуйте еще раз."
|
msgstr "Не удалось загрузить вложение. Пожалуйста, попробуйте еще раз."
|
||||||
|
|
||||||
@@ -1042,8 +1047,6 @@ msgid "For long-term sustainability, we recognise all good open source projects
|
|||||||
msgstr "Для долгосрочной устойчивости мы признаем, что всем хорошим проектам с открытым исходным кодом необходим источник дохода. Наш доход поступает от платного облачного предложения для рабочих пространств с несколькими пользователями и для пользовательских идентификаторов рабочих пространств. Нет обязательства использовать его, и вы можете самостоятельно разместить программное обеспечение на своей инфраструктуре бесплатно."
|
msgstr "Для долгосрочной устойчивости мы признаем, что всем хорошим проектам с открытым исходным кодом необходим источник дохода. Наш доход поступает от платного облачного предложения для рабочих пространств с несколькими пользователями и для пользовательских идентификаторов рабочих пространств. Нет обязательства использовать его, и вы можете самостоятельно разместить программное обеспечение на своей инфраструктуре бесплатно."
|
||||||
|
|
||||||
#: src/views/pricing/components/Pricing.tsx:32
|
#: src/views/pricing/components/Pricing.tsx:32
|
||||||
#: src/views/pricing/components/Pricing.tsx:32
|
|
||||||
#: src/views/pricing/components/PricingTiers.tsx:30
|
|
||||||
#: src/views/pricing/components/PricingTiers.tsx:30
|
#: src/views/pricing/components/PricingTiers.tsx:30
|
||||||
msgid "Free"
|
msgid "Free"
|
||||||
msgstr "Бесплатно"
|
msgstr "Бесплатно"
|
||||||
@@ -1089,7 +1092,7 @@ msgstr "Начать"
|
|||||||
msgid "Get started by creating a new {0}"
|
msgid "Get started by creating a new {0}"
|
||||||
msgstr "Начните с создания нового {0}"
|
msgstr "Начните с создания нового {0}"
|
||||||
|
|
||||||
#: src/views/board/index.tsx:495
|
#: src/views/board/index.tsx:491
|
||||||
msgid "Get started by creating a new list"
|
msgid "Get started by creating a new list"
|
||||||
msgstr "Начните с создания нового списка"
|
msgstr "Начните с создания нового списка"
|
||||||
|
|
||||||
@@ -1276,7 +1279,7 @@ msgstr "Ссылки-приглашения"
|
|||||||
msgid "Invite links require a Team or Pro subscription. Please upgrade your workspace."
|
msgid "Invite links require a Team or Pro subscription. Please upgrade your workspace."
|
||||||
msgstr "Ссылки для приглашений требуют подписки Team или Pro. Пожалуйста, обновите ваше рабочее пространство."
|
msgstr "Ссылки для приглашений требуют подписки Team или Pro. Пожалуйста, обновите ваше рабочее пространство."
|
||||||
|
|
||||||
#: src/views/card/components/MemberSelector.tsx:111
|
#: src/views/card/components/MemberSelector.tsx:112
|
||||||
#: src/views/members/components/InviteMemberForm.tsx:367
|
#: src/views/members/components/InviteMemberForm.tsx:367
|
||||||
msgid "Invite member"
|
msgid "Invite member"
|
||||||
msgstr "Пригласить участника"
|
msgstr "Пригласить участника"
|
||||||
@@ -1325,7 +1328,7 @@ msgstr "Горячие клавиши"
|
|||||||
|
|
||||||
#: src/views/board/components/Filters.tsx:155
|
#: src/views/board/components/Filters.tsx:155
|
||||||
#: src/views/board/components/NewCardForm.tsx:418
|
#: src/views/board/components/NewCardForm.tsx:418
|
||||||
#: src/views/card/index.tsx:120
|
#: src/views/card/index.tsx:121
|
||||||
msgid "Labels"
|
msgid "Labels"
|
||||||
msgstr "Метки"
|
msgstr "Метки"
|
||||||
|
|
||||||
@@ -1375,11 +1378,11 @@ msgstr "Лицензия"
|
|||||||
msgid "Light"
|
msgid "Light"
|
||||||
msgstr "Светлый"
|
msgstr "Светлый"
|
||||||
|
|
||||||
#: src/views/public/board/index.tsx:77
|
#: src/views/public/board/index.tsx:78
|
||||||
msgid "Link copied"
|
msgid "Link copied"
|
||||||
msgstr "Ссылка скопирована"
|
msgstr "Ссылка скопирована"
|
||||||
|
|
||||||
#: src/views/card/index.tsx:112
|
#: src/views/card/index.tsx:113
|
||||||
msgid "List"
|
msgid "List"
|
||||||
msgstr "Список"
|
msgstr "Список"
|
||||||
|
|
||||||
@@ -1391,6 +1394,14 @@ msgstr "Название списка"
|
|||||||
msgid "Lists"
|
msgid "Lists"
|
||||||
msgstr "Списки"
|
msgstr "Списки"
|
||||||
|
|
||||||
|
#: src/views/card/components/ActivityList.tsx:530
|
||||||
|
msgid "Load more activities"
|
||||||
|
msgstr "Загрузить больше действий"
|
||||||
|
|
||||||
|
#: src/views/card/components/ActivityList.tsx:530
|
||||||
|
msgid "Loading..."
|
||||||
|
msgstr "Загрузка..."
|
||||||
|
|
||||||
#: src/views/auth/login/index.tsx:33
|
#: src/views/auth/login/index.tsx:33
|
||||||
msgid "Login | kan.bn"
|
msgid "Login | kan.bn"
|
||||||
msgstr "Вход | kan.bn"
|
msgstr "Вход | kan.bn"
|
||||||
@@ -1419,12 +1430,12 @@ msgstr "магическая ссылка"
|
|||||||
msgid "Make template"
|
msgid "Make template"
|
||||||
msgstr "Создать шаблон"
|
msgstr "Создать шаблон"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:72
|
#: src/views/card/components/ActivityList.tsx:113
|
||||||
msgid "marked a checklist item as incomplete"
|
msgid "marked a checklist item as incomplete"
|
||||||
msgstr "отметил элемент контрольного списка как незавершённый"
|
msgstr "отметил элемент контрольного списка как незавершённый"
|
||||||
|
|
||||||
#. placeholder {0}: truncate(toTitle)
|
#. placeholder {0}: truncate(toTitle)
|
||||||
#: src/views/card/components/ActivityList.tsx:196
|
#: src/views/card/components/ActivityList.tsx:231
|
||||||
msgid "marked checklist item <0>{0}</0> as incomplete"
|
msgid "marked checklist item <0>{0}</0> as incomplete"
|
||||||
msgstr "отметил элемент контрольного списка <0>{0}</0> как незавершённый"
|
msgstr "отметил элемент контрольного списка <0>{0}</0> как незавершённый"
|
||||||
|
|
||||||
@@ -1435,7 +1446,7 @@ msgstr "Средний приоритет"
|
|||||||
#: src/components/SideNavigation.tsx:121
|
#: src/components/SideNavigation.tsx:121
|
||||||
#: src/views/board/components/Filters.tsx:147
|
#: src/views/board/components/Filters.tsx:147
|
||||||
#: src/views/board/components/NewCardForm.tsx:376
|
#: src/views/board/components/NewCardForm.tsx:376
|
||||||
#: src/views/card/index.tsx:129
|
#: src/views/card/index.tsx:130
|
||||||
#: src/views/members/index.tsx:178
|
#: src/views/members/index.tsx:178
|
||||||
msgid "Members"
|
msgid "Members"
|
||||||
msgstr "Участники"
|
msgstr "Участники"
|
||||||
@@ -1456,11 +1467,11 @@ msgstr "ежемесячная оплата"
|
|||||||
|
|
||||||
#. placeholder {0}: truncate(fromList)
|
#. placeholder {0}: truncate(fromList)
|
||||||
#. placeholder {1}: truncate(toList)
|
#. placeholder {1}: truncate(toList)
|
||||||
#: src/views/card/components/ActivityList.tsx:98
|
#: src/views/card/components/ActivityList.tsx:133
|
||||||
msgid "moved the card from <0>{0}</0> to<1>{1}</1>"
|
msgid "moved the card from <0>{0}</0> to<1>{1}</1>"
|
||||||
msgstr "переместил карточку из <0>{0}</0> в <1>{1}</1>"
|
msgstr "переместил карточку из <0>{0}</0> в <1>{1}</1>"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:61
|
#: src/views/card/components/ActivityList.tsx:102
|
||||||
msgid "moved the card to another list"
|
msgid "moved the card to another list"
|
||||||
msgstr "переместил карточку в другой список"
|
msgstr "переместил карточку в другой список"
|
||||||
|
|
||||||
@@ -1496,7 +1507,7 @@ msgstr "Новый API-ключ"
|
|||||||
msgid "New card"
|
msgid "New card"
|
||||||
msgstr "Новая карточка"
|
msgstr "Новая карточка"
|
||||||
|
|
||||||
#: src/views/card/components/NewChecklistForm.tsx:102
|
#: src/views/card/components/NewChecklistForm.tsx:103
|
||||||
msgid "New checklist"
|
msgid "New checklist"
|
||||||
msgstr "Новый контрольный список"
|
msgstr "Новый контрольный список"
|
||||||
|
|
||||||
@@ -1509,7 +1520,7 @@ msgid "New label"
|
|||||||
msgstr "Новая метка"
|
msgstr "Новая метка"
|
||||||
|
|
||||||
#: src/views/board/components/NewListForm.tsx:113
|
#: src/views/board/components/NewListForm.tsx:113
|
||||||
#: src/views/board/index.tsx:466
|
#: src/views/board/index.tsx:462
|
||||||
msgid "New list"
|
msgid "New list"
|
||||||
msgstr "Новый список"
|
msgstr "Новый список"
|
||||||
|
|
||||||
@@ -1562,7 +1573,7 @@ msgstr "Кредитная карта не требуется"
|
|||||||
msgid "No dates"
|
msgid "No dates"
|
||||||
msgstr "Нет дат"
|
msgstr "Нет дат"
|
||||||
|
|
||||||
#: src/views/card/components/AttachmentThumbnails.tsx:142
|
#: src/views/card/components/AttachmentThumbnails.tsx:143
|
||||||
msgid "No download URL available for this attachment."
|
msgid "No download URL available for this attachment."
|
||||||
msgstr "URL для загрузки этого вложения недоступен."
|
msgstr "URL для загрузки этого вложения недоступен."
|
||||||
|
|
||||||
@@ -1570,7 +1581,7 @@ msgstr "URL для загрузки этого вложения недоступ
|
|||||||
msgid "No keyboard shortcuts registered."
|
msgid "No keyboard shortcuts registered."
|
||||||
msgstr "Горячие клавиши не зарегистрированы."
|
msgstr "Горячие клавиши не зарегистрированы."
|
||||||
|
|
||||||
#: src/views/board/index.tsx:492
|
#: src/views/board/index.tsx:488
|
||||||
msgid "No lists"
|
msgid "No lists"
|
||||||
msgstr "Нет списков"
|
msgstr "Нет списков"
|
||||||
|
|
||||||
@@ -1721,24 +1732,25 @@ msgstr "Пожалуйста, выберите файл для загрузки.
|
|||||||
#: src/views/board/components/NewTemplateForm.tsx:77
|
#: src/views/board/components/NewTemplateForm.tsx:77
|
||||||
#: src/views/board/components/UpdateBoardSlugForm.tsx:73
|
#: src/views/board/components/UpdateBoardSlugForm.tsx:73
|
||||||
#: src/views/board/components/VisibilityButton.tsx:54
|
#: src/views/board/components/VisibilityButton.tsx:54
|
||||||
#: src/views/board/index.tsx:174
|
#: src/views/board/index.tsx:170
|
||||||
#: src/views/board/index.tsx:230
|
#: src/views/board/index.tsx:226
|
||||||
#: src/views/boards/components/ImportBoardsForm.tsx:205
|
#: src/views/boards/components/ImportBoardsForm.tsx:205
|
||||||
#: src/views/card/components/AttachmentThumbnails.tsx:73
|
#: src/views/card/components/AttachmentThumbnails.tsx:74
|
||||||
#: src/views/card/components/ChecklistItemRow.tsx:60
|
#: src/views/card/components/ChecklistItemRow.tsx:67
|
||||||
#: src/views/card/components/ChecklistItemRow.tsx:88
|
#: src/views/card/components/ChecklistItemRow.tsx:95
|
||||||
#: src/views/card/components/ChecklistNameInput.tsx:46
|
#: src/views/card/components/ChecklistNameInput.tsx:47
|
||||||
#: src/views/card/components/Comment.tsx:64
|
#: src/views/card/components/Checklists.tsx:81
|
||||||
|
#: src/views/card/components/Comment.tsx:65
|
||||||
#: src/views/card/components/DeleteCardConfirmation.tsx:52
|
#: src/views/card/components/DeleteCardConfirmation.tsx:52
|
||||||
#: src/views/card/components/DeleteChecklistConfirmation.tsx:37
|
#: src/views/card/components/DeleteChecklistConfirmation.tsx:38
|
||||||
#: src/views/card/components/DeleteCommentConfirmation.tsx:45
|
#: src/views/card/components/DeleteCommentConfirmation.tsx:46
|
||||||
#: src/views/card/components/DueDateSelector.tsx:59
|
#: src/views/card/components/DueDateSelector.tsx:60
|
||||||
#: src/views/card/components/LabelSelector.tsx:72
|
#: src/views/card/components/LabelSelector.tsx:73
|
||||||
#: src/views/card/components/ListSelector.tsx:52
|
#: src/views/card/components/ListSelector.tsx:53
|
||||||
#: src/views/card/components/MemberSelector.tsx:79
|
#: src/views/card/components/MemberSelector.tsx:80
|
||||||
#: src/views/card/components/NewChecklistForm.tsx:70
|
#: src/views/card/components/NewChecklistForm.tsx:71
|
||||||
#: src/views/card/components/NewChecklistItemForm.tsx:89
|
#: src/views/card/components/NewChecklistItemForm.tsx:90
|
||||||
#: src/views/card/components/NewCommentForm.tsx:31
|
#: src/views/card/components/NewCommentForm.tsx:32
|
||||||
#: src/views/card/index.tsx:187
|
#: src/views/card/index.tsx:187
|
||||||
#: src/views/card/index.tsx:200
|
#: src/views/card/index.tsx:200
|
||||||
#: src/views/members/components/DeleteMemberConfirmation.tsx:28
|
#: src/views/members/components/DeleteMemberConfirmation.tsx:28
|
||||||
@@ -1840,35 +1852,40 @@ msgstr "Удалить"
|
|||||||
msgid "Remove member"
|
msgid "Remove member"
|
||||||
msgstr "Удалить участника"
|
msgstr "Удалить участника"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:63
|
#. placeholder {0}: mergedLabels.length
|
||||||
|
#: src/views/card/components/ActivityList.tsx:91
|
||||||
|
msgid "removed {0} labels: <0>{labelList}</0>"
|
||||||
|
msgstr "удалил {0} метки: <0>{labelList}</0>"
|
||||||
|
|
||||||
|
#: src/views/card/components/ActivityList.tsx:104
|
||||||
msgid "removed a label from the card"
|
msgid "removed a label from the card"
|
||||||
msgstr "удалил метку с карточки"
|
msgstr "удалил метку с карточки"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:65
|
#: src/views/card/components/ActivityList.tsx:106
|
||||||
msgid "removed a member from the card"
|
msgid "removed a member from the card"
|
||||||
msgstr "удалил участника из карточки"
|
msgstr "удалил участника из карточки"
|
||||||
|
|
||||||
#. placeholder {0}: truncate(label)
|
#. placeholder {0}: truncate(label)
|
||||||
#: src/views/card/components/ActivityList.tsx:138
|
#: src/views/card/components/ActivityList.tsx:173
|
||||||
msgid "removed label <0>{0}</0>"
|
msgid "removed label <0>{0}</0>"
|
||||||
msgstr "удалил метку <0>{0}</0>"
|
msgstr "удалил метку <0>{0}</0>"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:76
|
#: src/views/card/components/ActivityList.tsx:117
|
||||||
#: src/views/card/components/ActivityList.tsx:241
|
#: src/views/card/components/ActivityList.tsx:276
|
||||||
msgid "removed the due date"
|
msgid "removed the due date"
|
||||||
msgstr "удалил(а) дату выполнения"
|
msgstr "удалил(а) дату выполнения"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:67
|
#: src/views/card/components/ActivityList.tsx:108
|
||||||
msgid "renamed a checklist"
|
msgid "renamed a checklist"
|
||||||
msgstr "переименовал контрольный список"
|
msgstr "переименовал контрольный список"
|
||||||
|
|
||||||
#. placeholder {0}: truncate(toTitle)
|
#. placeholder {0}: truncate(toTitle)
|
||||||
#: src/views/card/components/ActivityList.tsx:154
|
#: src/views/card/components/ActivityList.tsx:189
|
||||||
msgid "renamed checklist <0>{0}</0>"
|
msgid "renamed checklist <0>{0}</0>"
|
||||||
msgstr "переименовал контрольный список <0>{0}</0>"
|
msgstr "переименовал контрольный список <0>{0}</0>"
|
||||||
|
|
||||||
#. placeholder {0}: truncate(toTitle)
|
#. placeholder {0}: truncate(toTitle)
|
||||||
#: src/views/card/components/ActivityList.tsx:178
|
#: src/views/card/components/ActivityList.tsx:213
|
||||||
msgid "renamed checklist item to <0>{0}</0>"
|
msgid "renamed checklist item to <0>{0}</0>"
|
||||||
msgstr "переименовал элемент контрольного списка в <0>{0}</0>"
|
msgstr "переименовал элемент контрольного списка в <0>{0}</0>"
|
||||||
|
|
||||||
@@ -1907,7 +1924,7 @@ msgstr "Роль"
|
|||||||
msgid "Run on your own infrastructure"
|
msgid "Run on your own infrastructure"
|
||||||
msgstr "Запустите на своей инфраструктуре"
|
msgstr "Запустите на своей инфраструктуре"
|
||||||
|
|
||||||
#: src/views/card/components/Comment.tsx:165
|
#: src/views/card/components/Comment.tsx:166
|
||||||
#: src/views/settings/components/Avatar.tsx:309
|
#: src/views/settings/components/Avatar.tsx:309
|
||||||
msgid "Save"
|
msgid "Save"
|
||||||
msgstr "Сохранить"
|
msgstr "Сохранить"
|
||||||
@@ -1945,7 +1962,7 @@ msgstr "Самостоятельный хостинг"
|
|||||||
msgid "Self host with Github"
|
msgid "Self host with Github"
|
||||||
msgstr "Самостоятельный хостинг с Github"
|
msgstr "Самостоятельный хостинг с Github"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:107
|
#: src/views/card/components/ActivityList.tsx:142
|
||||||
msgid "self-assigned the card"
|
msgid "self-assigned the card"
|
||||||
msgstr "самостоятельно назначил карточку"
|
msgstr "самостоятельно назначил карточку"
|
||||||
|
|
||||||
@@ -1961,11 +1978,11 @@ msgstr "Отправить отзыв"
|
|||||||
msgid "Senior"
|
msgid "Senior"
|
||||||
msgstr "Старший"
|
msgstr "Старший"
|
||||||
|
|
||||||
#: src/views/card/components/DueDateSelector.tsx:116
|
#: src/views/card/components/DueDateSelector.tsx:117
|
||||||
msgid "Set due date"
|
msgid "Set due date"
|
||||||
msgstr "Установить дату выполнения"
|
msgstr "Установить дату выполнения"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:74
|
#: src/views/card/components/ActivityList.tsx:115
|
||||||
msgid "set the due date"
|
msgid "set the due date"
|
||||||
msgstr "установил(а) дату выполнения"
|
msgstr "установил(а) дату выполнения"
|
||||||
|
|
||||||
@@ -2090,8 +2107,8 @@ msgstr "Командный план"
|
|||||||
msgid "Teams"
|
msgid "Teams"
|
||||||
msgstr "Команды"
|
msgstr "Команды"
|
||||||
|
|
||||||
#: src/views/board/index.tsx:386
|
#: src/views/board/index.tsx:382
|
||||||
#: src/views/board/index.tsx:421
|
#: src/views/board/index.tsx:417
|
||||||
msgid "Template"
|
msgid "Template"
|
||||||
msgstr "Шаблон"
|
msgstr "Шаблон"
|
||||||
|
|
||||||
@@ -2156,8 +2173,8 @@ msgstr "Они не смогут получить доступ к этому р
|
|||||||
#: src/components/DeleteLabelConfirmation.tsx:44
|
#: src/components/DeleteLabelConfirmation.tsx:44
|
||||||
#: src/views/board/components/DeleteBoardConfirmation.tsx:39
|
#: src/views/board/components/DeleteBoardConfirmation.tsx:39
|
||||||
#: src/views/card/components/DeleteCardConfirmation.tsx:78
|
#: src/views/card/components/DeleteCardConfirmation.tsx:78
|
||||||
#: src/views/card/components/DeleteChecklistConfirmation.tsx:58
|
#: src/views/card/components/DeleteChecklistConfirmation.tsx:59
|
||||||
#: src/views/card/components/DeleteCommentConfirmation.tsx:68
|
#: src/views/card/components/DeleteCommentConfirmation.tsx:69
|
||||||
msgid "This action can't be undone."
|
msgid "This action can't be undone."
|
||||||
msgstr "Это действие нельзя будет отменить."
|
msgstr "Это действие нельзя будет отменить."
|
||||||
|
|
||||||
@@ -2165,7 +2182,7 @@ msgstr "Это действие нельзя будет отменить."
|
|||||||
msgid "This API key will only be shown once. Please save it in a secure location."
|
msgid "This API key will only be shown once. Please save it in a secure location."
|
||||||
msgstr "Этот API-ключ будет показан только один раз. Пожалуйста, сохраните его в безопасном месте."
|
msgstr "Этот API-ключ будет показан только один раз. Пожалуйста, сохраните его в безопасном месте."
|
||||||
|
|
||||||
#: src/views/public/board/index.tsx:168
|
#: src/views/public/board/index.tsx:169
|
||||||
msgid "This board is private or does not exist"
|
msgid "This board is private or does not exist"
|
||||||
msgstr "Эта доска является приватной или не существует."
|
msgstr "Эта доска является приватной или не существует."
|
||||||
|
|
||||||
@@ -2227,27 +2244,27 @@ msgstr "Импорт Trello"
|
|||||||
msgid "Triaging"
|
msgid "Triaging"
|
||||||
msgstr "Сортировка"
|
msgstr "Сортировка"
|
||||||
|
|
||||||
#: src/views/home/components/Logos.tsx:73
|
#: src/views/home/components/Logos.tsx:67
|
||||||
msgid "Trusted by fast-moving teams<0/>around the world"
|
msgid "Trusted by fast-moving teams<0/>around the world"
|
||||||
msgstr "Доверяют динамичным командам<0/>по всему миру"
|
msgstr "Доверяют динамичным командам<0/>по всему миру"
|
||||||
|
|
||||||
#: src/views/card/components/NewChecklistItemForm.tsx:88
|
#: src/views/card/components/NewChecklistItemForm.tsx:89
|
||||||
msgid "Unable to add checklist item"
|
msgid "Unable to add checklist item"
|
||||||
msgstr "Не удалось добавить элемент контрольного списка."
|
msgstr "Не удалось добавить элемент контрольного списка."
|
||||||
|
|
||||||
#: src/views/card/components/NewCommentForm.tsx:30
|
#: src/views/card/components/NewCommentForm.tsx:31
|
||||||
msgid "Unable to add comment"
|
msgid "Unable to add comment"
|
||||||
msgstr "Не удалось добавить комментарий."
|
msgstr "Не удалось добавить комментарий."
|
||||||
|
|
||||||
#: src/views/card/index.tsx:199
|
#: src/views/card/index.tsx:199
|
||||||
msgid "Unable to add label"
|
msgid "Unable to add label"
|
||||||
msgstr ""
|
msgstr "Не удалось добавить метку"
|
||||||
|
|
||||||
#: src/views/board/components/NewCardForm.tsx:181
|
#: src/views/board/components/NewCardForm.tsx:181
|
||||||
msgid "Unable to create card"
|
msgid "Unable to create card"
|
||||||
msgstr "Не удалось создать карточку."
|
msgstr "Не удалось создать карточку."
|
||||||
|
|
||||||
#: src/views/card/components/NewChecklistForm.tsx:69
|
#: src/views/card/components/NewChecklistForm.tsx:70
|
||||||
msgid "Unable to create checklist"
|
msgid "Unable to create checklist"
|
||||||
msgstr "Не удалось создать контрольный список."
|
msgstr "Не удалось создать контрольный список."
|
||||||
|
|
||||||
@@ -2264,7 +2281,7 @@ msgstr "Не удалось создать шаблон"
|
|||||||
msgid "Unable to create workspace"
|
msgid "Unable to create workspace"
|
||||||
msgstr "Не удалось создать рабочее пространство."
|
msgstr "Не удалось создать рабочее пространство."
|
||||||
|
|
||||||
#: src/views/card/components/AttachmentThumbnails.tsx:72
|
#: src/views/card/components/AttachmentThumbnails.tsx:73
|
||||||
msgid "Unable to delete attachment"
|
msgid "Unable to delete attachment"
|
||||||
msgstr "Не удалось удалить вложение"
|
msgstr "Не удалось удалить вложение"
|
||||||
|
|
||||||
@@ -2272,15 +2289,15 @@ msgstr "Не удалось удалить вложение"
|
|||||||
msgid "Unable to delete card"
|
msgid "Unable to delete card"
|
||||||
msgstr "Не удалось удалить карточку."
|
msgstr "Не удалось удалить карточку."
|
||||||
|
|
||||||
#: src/views/card/components/DeleteChecklistConfirmation.tsx:36
|
#: src/views/card/components/DeleteChecklistConfirmation.tsx:37
|
||||||
msgid "Unable to delete checklist"
|
msgid "Unable to delete checklist"
|
||||||
msgstr "Не удалось удалить контрольный список"
|
msgstr "Не удалось удалить контрольный список"
|
||||||
|
|
||||||
#: src/views/card/components/ChecklistItemRow.tsx:87
|
#: src/views/card/components/ChecklistItemRow.tsx:94
|
||||||
msgid "Unable to delete checklist item"
|
msgid "Unable to delete checklist item"
|
||||||
msgstr "Не удалось удалить элемент контрольного списка"
|
msgstr "Не удалось удалить элемент контрольного списка"
|
||||||
|
|
||||||
#: src/views/card/components/DeleteCommentConfirmation.tsx:44
|
#: src/views/card/components/DeleteCommentConfirmation.tsx:45
|
||||||
msgid "Unable to delete comment"
|
msgid "Unable to delete comment"
|
||||||
msgstr "Не удалось удалить комментарий"
|
msgstr "Не удалось удалить комментарий"
|
||||||
|
|
||||||
@@ -2288,6 +2305,10 @@ msgstr "Не удалось удалить комментарий"
|
|||||||
msgid "Unable to remove member"
|
msgid "Unable to remove member"
|
||||||
msgstr "Не удалось удалить участника"
|
msgstr "Не удалось удалить участника"
|
||||||
|
|
||||||
|
#: src/views/card/components/Checklists.tsx:80
|
||||||
|
msgid "Unable to reorder checklist item"
|
||||||
|
msgstr "Не удалось изменить порядок элемента контрольного списка"
|
||||||
|
|
||||||
#: src/components/FeedbackModal.tsx:40
|
#: src/components/FeedbackModal.tsx:40
|
||||||
msgid "Unable to send feedback"
|
msgid "Unable to send feedback"
|
||||||
msgstr "Не удалось отправить отзыв"
|
msgstr "Не удалось отправить отзыв"
|
||||||
@@ -2300,46 +2321,46 @@ msgstr "Не удалось обновить URL доски"
|
|||||||
msgid "Unable to update board visibility"
|
msgid "Unable to update board visibility"
|
||||||
msgstr "Не удалось обновить видимость доски"
|
msgstr "Не удалось обновить видимость доски"
|
||||||
|
|
||||||
#: src/views/board/index.tsx:229
|
#: src/views/board/index.tsx:225
|
||||||
#: src/views/card/index.tsx:186
|
#: src/views/card/index.tsx:186
|
||||||
msgid "Unable to update card"
|
msgid "Unable to update card"
|
||||||
msgstr "Не удалось обновить карточку"
|
msgstr "Не удалось обновить карточку"
|
||||||
|
|
||||||
#: src/views/card/components/ChecklistNameInput.tsx:45
|
#: src/views/card/components/ChecklistNameInput.tsx:46
|
||||||
msgid "Unable to update checklist"
|
msgid "Unable to update checklist"
|
||||||
msgstr "Не удалось обновить контрольный список"
|
msgstr "Не удалось обновить контрольный список"
|
||||||
|
|
||||||
#: src/views/card/components/ChecklistItemRow.tsx:59
|
#: src/views/card/components/ChecklistItemRow.tsx:66
|
||||||
msgid "Unable to update checklist item"
|
msgid "Unable to update checklist item"
|
||||||
msgstr "Не удалось обновить элемент контрольного списка"
|
msgstr "Не удалось обновить элемент контрольного списка"
|
||||||
|
|
||||||
#: src/views/card/components/Comment.tsx:63
|
#: src/views/card/components/Comment.tsx:64
|
||||||
msgid "Unable to update comment"
|
msgid "Unable to update comment"
|
||||||
msgstr "Не удалось обновить комментарий"
|
msgstr "Не удалось обновить комментарий"
|
||||||
|
|
||||||
#: src/views/card/components/DueDateSelector.tsx:58
|
#: src/views/card/components/DueDateSelector.tsx:59
|
||||||
msgid "Unable to update due date"
|
msgid "Unable to update due date"
|
||||||
msgstr "Не удалось обновить дату выполнения"
|
msgstr "Не удалось обновить дату выполнения"
|
||||||
|
|
||||||
#: src/views/card/components/LabelSelector.tsx:71
|
#: src/views/card/components/LabelSelector.tsx:72
|
||||||
msgid "Unable to update labels"
|
msgid "Unable to update labels"
|
||||||
msgstr "Не удалось обновить метки"
|
msgstr "Не удалось обновить метки"
|
||||||
|
|
||||||
#: src/views/board/index.tsx:173
|
#: src/views/board/index.tsx:169
|
||||||
#: src/views/card/components/ListSelector.tsx:51
|
#: src/views/card/components/ListSelector.tsx:52
|
||||||
msgid "Unable to update list"
|
msgid "Unable to update list"
|
||||||
msgstr "Не удалось обновить список"
|
msgstr "Не удалось обновить список"
|
||||||
|
|
||||||
#: src/views/card/components/MemberSelector.tsx:78
|
#: src/views/card/components/MemberSelector.tsx:79
|
||||||
msgid "Unable to update members"
|
msgid "Unable to update members"
|
||||||
msgstr "Не удалось обновить участников"
|
msgstr "Не удалось обновить участников"
|
||||||
|
|
||||||
#. placeholder {0}: truncate(memberName)
|
#. placeholder {0}: truncate(memberName)
|
||||||
#: src/views/card/components/ActivityList.tsx:121
|
#: src/views/card/components/ActivityList.tsx:156
|
||||||
msgid "unassigned <0>{0}</0> from the card"
|
msgid "unassigned <0>{0}</0> from the card"
|
||||||
msgstr "удалил(а) <0>{0}</0> из карточки"
|
msgstr "удалил(а) <0>{0}</0> из карточки"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:118
|
#: src/views/card/components/ActivityList.tsx:153
|
||||||
msgid "unassigned themselves from the card"
|
msgid "unassigned themselves from the card"
|
||||||
msgstr "удалил(а) себя из карточки"
|
msgstr "удалил(а) себя из карточки"
|
||||||
|
|
||||||
@@ -2398,24 +2419,24 @@ msgstr "Обновить"
|
|||||||
msgid "Update label"
|
msgid "Update label"
|
||||||
msgstr "Обновить метку"
|
msgstr "Обновить метку"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:70
|
#: src/views/card/components/ActivityList.tsx:111
|
||||||
msgid "updated a checklist item"
|
msgid "updated a checklist item"
|
||||||
msgstr "обновлен элемент контрольного списка"
|
msgstr "обновлен элемент контрольного списка"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:60
|
#: src/views/card/components/ActivityList.tsx:101
|
||||||
msgid "updated the description"
|
msgid "updated the description"
|
||||||
msgstr "обновлено описание"
|
msgstr "обновлено описание"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:75
|
#: src/views/card/components/ActivityList.tsx:116
|
||||||
msgid "updated the due date"
|
msgid "updated the due date"
|
||||||
msgstr "обновил(а) дату выполнения"
|
msgstr "обновил(а) дату выполнения"
|
||||||
|
|
||||||
#: src/views/card/components/ActivityList.tsx:59
|
#: src/views/card/components/ActivityList.tsx:100
|
||||||
msgid "updated the title"
|
msgid "updated the title"
|
||||||
msgstr "обновлен заголовок"
|
msgstr "обновлен заголовок"
|
||||||
|
|
||||||
#. placeholder {0}: truncate(toTitle)
|
#. placeholder {0}: truncate(toTitle)
|
||||||
#: src/views/card/components/ActivityList.tsx:90
|
#: src/views/card/components/ActivityList.tsx:125
|
||||||
msgid "updated the title to <0>{0}</0>"
|
msgid "updated the title to <0>{0}</0>"
|
||||||
msgstr "обновлен заголовок на <0>{0}</0>"
|
msgstr "обновлен заголовок на <0>{0}</0>"
|
||||||
|
|
||||||
@@ -2429,8 +2450,8 @@ msgstr "Обновить до Pro"
|
|||||||
msgid "Upgrade to Pro ($29/month)"
|
msgid "Upgrade to Pro ($29/month)"
|
||||||
msgstr "Обновить до Pro ($29/месяц)"
|
msgstr "Обновить до Pro ($29/месяц)"
|
||||||
|
|
||||||
#: src/views/card/components/AttachmentUpload.tsx:32
|
#: src/views/card/components/AttachmentUpload.tsx:33
|
||||||
#: src/views/card/components/AttachmentUpload.tsx:78
|
#: src/views/card/components/AttachmentUpload.tsx:79
|
||||||
msgid "Upload failed"
|
msgid "Upload failed"
|
||||||
msgstr "Не удалось загрузить"
|
msgstr "Не удалось загрузить"
|
||||||
|
|
||||||
@@ -2483,7 +2504,7 @@ msgstr "Просмотр и управление вашими счетами и
|
|||||||
msgid "View docs"
|
msgid "View docs"
|
||||||
msgstr "Просмотреть документацию"
|
msgstr "Просмотреть документацию"
|
||||||
|
|
||||||
#: src/views/public/board/index.tsx:141
|
#: src/views/public/board/index.tsx:142
|
||||||
msgid "View only"
|
msgid "View only"
|
||||||
msgstr "Только просмотр"
|
msgstr "Только просмотр"
|
||||||
|
|
||||||
@@ -2491,7 +2512,7 @@ msgstr "Только просмотр"
|
|||||||
msgid "View our roadmap."
|
msgid "View our roadmap."
|
||||||
msgstr "Просмотреть нашу дорожную карту."
|
msgstr "Просмотреть нашу дорожную карту."
|
||||||
|
|
||||||
#: src/views/public/board/index.tsx:171
|
#: src/views/public/board/index.tsx:172
|
||||||
msgid "View workspace"
|
msgid "View workspace"
|
||||||
msgstr "Просмотреть рабочее пространство"
|
msgstr "Просмотреть рабочее пространство"
|
||||||
|
|
||||||
@@ -2536,10 +2557,10 @@ msgid "Why make an open source Trello?"
|
|||||||
msgstr "Зачем создавать Trello с открытым исходным кодом?"
|
msgstr "Зачем создавать Trello с открытым исходным кодом?"
|
||||||
|
|
||||||
#: src/components/SettingsLayout.tsx:39
|
#: src/components/SettingsLayout.tsx:39
|
||||||
#: src/views/board/index.tsx:386
|
#: src/views/board/index.tsx:382
|
||||||
#: src/views/boards/index.tsx:33
|
#: src/views/boards/index.tsx:33
|
||||||
#: src/views/members/index.tsx:173
|
#: src/views/members/index.tsx:173
|
||||||
#: src/views/public/board/index.tsx:113
|
#: src/views/public/board/index.tsx:114
|
||||||
#: src/views/public/boards/index.tsx:66
|
#: src/views/public/boards/index.tsx:66
|
||||||
msgid "Workspace"
|
msgid "Workspace"
|
||||||
msgstr "Рабочее пространство"
|
msgstr "Рабочее пространство"
|
||||||
@@ -2673,7 +2694,7 @@ msgstr "Ваши доски были импортированы."
|
|||||||
msgid "Your display name has been updated."
|
msgid "Your display name has been updated."
|
||||||
msgstr "Ваше отображаемое имя было обновлено."
|
msgstr "Ваше отображаемое имя было обновлено."
|
||||||
|
|
||||||
#: src/views/card/components/AttachmentUpload.tsx:26
|
#: src/views/card/components/AttachmentUpload.tsx:27
|
||||||
msgid "Your file has been uploaded successfully."
|
msgid "Your file has been uploaded successfully."
|
||||||
msgstr "Ваш файл успешно загружен."
|
msgstr "Ваш файл успешно загружен."
|
||||||
|
|
||||||
|
|||||||
@@ -88,6 +88,7 @@ export default async function handler(
|
|||||||
|
|
||||||
const session = await stripe.checkout.sessions.create({
|
const session = await stripe.checkout.sessions.create({
|
||||||
mode: "subscription",
|
mode: "subscription",
|
||||||
|
payment_method_collection: "always",
|
||||||
line_items: [
|
line_items: [
|
||||||
{
|
{
|
||||||
price: process.env.STRIPE_PRO_PLAN_MONTHLY_PRICE_ID,
|
price: process.env.STRIPE_PRO_PLAN_MONTHLY_PRICE_ID,
|
||||||
|
|||||||
16
apps/web/src/utils/cardInvalidation.ts
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
import type { api } from "~/utils/api";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Invalidates all card-related queries for a given card.
|
||||||
|
* Use this after any mutation that affects card data or activities.
|
||||||
|
*/
|
||||||
|
export async function invalidateCard(
|
||||||
|
utils: ReturnType<typeof api.useUtils>,
|
||||||
|
cardPublicId: string,
|
||||||
|
) {
|
||||||
|
await Promise.all([
|
||||||
|
utils.card.byId.invalidate({ cardPublicId }),
|
||||||
|
utils.card.getActivities.invalidate({ cardPublicId }),
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
@@ -29,7 +29,6 @@ import { useModal } from "~/providers/modal";
|
|||||||
import { usePopup } from "~/providers/popup";
|
import { usePopup } from "~/providers/popup";
|
||||||
import { useWorkspace } from "~/providers/workspace";
|
import { useWorkspace } from "~/providers/workspace";
|
||||||
import { api } from "~/utils/api";
|
import { api } from "~/utils/api";
|
||||||
import { convertDueDateFiltersToRanges } from "~/utils/dueDateFilters";
|
|
||||||
import { formatToArray } from "~/utils/helpers";
|
import { formatToArray } from "~/utils/helpers";
|
||||||
import BoardDropdown from "./components/BoardDropdown";
|
import BoardDropdown from "./components/BoardDropdown";
|
||||||
import Card from "./components/Card";
|
import Card from "./components/Card";
|
||||||
@@ -97,20 +96,17 @@ export default function BoardPage({ isTemplate }: { isTemplate?: boolean }) {
|
|||||||
| "no-due-date"
|
| "no-due-date"
|
||||||
)[];
|
)[];
|
||||||
|
|
||||||
const queryParams: {
|
const boardType: "regular" | "template" = isTemplate ? "template" : "regular";
|
||||||
boardPublicId: string;
|
|
||||||
members: string[];
|
const queryParams = {
|
||||||
labels: string[];
|
|
||||||
lists: string[];
|
|
||||||
dueDate: ReturnType<typeof convertDueDateFiltersToRanges>;
|
|
||||||
type: "regular" | "template";
|
|
||||||
} = {
|
|
||||||
boardPublicId: boardId ?? "",
|
boardPublicId: boardId ?? "",
|
||||||
members: formatToArray(router.query.members),
|
members: formatToArray(router.query.members),
|
||||||
labels: formatToArray(router.query.labels),
|
labels: formatToArray(router.query.labels),
|
||||||
lists: formatToArray(router.query.lists),
|
lists: formatToArray(router.query.lists),
|
||||||
dueDate: convertDueDateFiltersToRanges(semanticFilters),
|
...(semanticFilters.length > 0 && {
|
||||||
type: isTemplate ? "template" : "regular",
|
dueDateFilters: semanticFilters,
|
||||||
|
}),
|
||||||
|
type: boardType,
|
||||||
};
|
};
|
||||||
|
|
||||||
const {
|
const {
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ import type { Locale as DateFnsLocale } from "date-fns";
|
|||||||
import { t } from "@lingui/core/macro";
|
import { t } from "@lingui/core/macro";
|
||||||
import { Trans } from "@lingui/react/macro";
|
import { Trans } from "@lingui/react/macro";
|
||||||
import { format, formatDistanceToNow, isSameYear } from "date-fns";
|
import { format, formatDistanceToNow, isSameYear } from "date-fns";
|
||||||
|
import { useEffect, useRef, useState } from "react";
|
||||||
import {
|
import {
|
||||||
HiOutlineArrowLeft,
|
HiOutlineArrowLeft,
|
||||||
HiOutlineArrowRight,
|
HiOutlineArrowRight,
|
||||||
@@ -15,11 +16,15 @@ import {
|
|||||||
HiOutlineUserPlus,
|
HiOutlineUserPlus,
|
||||||
} from "react-icons/hi2";
|
} from "react-icons/hi2";
|
||||||
|
|
||||||
import type { GetCardByIdOutput } from "@kan/api/types";
|
import type {
|
||||||
|
GetCardActivitiesOutput,
|
||||||
|
GetCardByIdOutput,
|
||||||
|
} from "@kan/api/types";
|
||||||
import { authClient } from "@kan/auth/client";
|
import { authClient } from "@kan/auth/client";
|
||||||
|
|
||||||
import Avatar from "~/components/Avatar";
|
import Avatar from "~/components/Avatar";
|
||||||
import { useLocalisation } from "~/hooks/useLocalisation";
|
import { useLocalisation } from "~/hooks/useLocalisation";
|
||||||
|
import { api } from "~/utils/api";
|
||||||
import Comment from "./Comment";
|
import Comment from "./Comment";
|
||||||
|
|
||||||
type ActivityType =
|
type ActivityType =
|
||||||
@@ -41,6 +46,7 @@ const getActivityText = ({
|
|||||||
fromTitle,
|
fromTitle,
|
||||||
toDueDate,
|
toDueDate,
|
||||||
dateLocale,
|
dateLocale,
|
||||||
|
mergedLabels,
|
||||||
}: {
|
}: {
|
||||||
type: ActivityType;
|
type: ActivityType;
|
||||||
toTitle: string | null;
|
toTitle: string | null;
|
||||||
@@ -53,7 +59,42 @@ const getActivityText = ({
|
|||||||
fromDueDate?: Date | null;
|
fromDueDate?: Date | null;
|
||||||
toDueDate?: Date | null;
|
toDueDate?: Date | null;
|
||||||
dateLocale: DateFnsLocale;
|
dateLocale: DateFnsLocale;
|
||||||
|
mergedLabels?: string[];
|
||||||
}) => {
|
}) => {
|
||||||
|
const TextHighlight = ({ children }: { children: React.ReactNode }) => (
|
||||||
|
<span className="font-medium text-light-1000 dark:text-dark-1000">
|
||||||
|
{children}
|
||||||
|
</span>
|
||||||
|
);
|
||||||
|
|
||||||
|
if (
|
||||||
|
type === "card.updated.label.added" &&
|
||||||
|
mergedLabels &&
|
||||||
|
mergedLabels.length > 1
|
||||||
|
) {
|
||||||
|
const labelList = mergedLabels.join(", ");
|
||||||
|
return (
|
||||||
|
<Trans>
|
||||||
|
added {mergedLabels.length} labels:{" "}
|
||||||
|
<TextHighlight>{labelList}</TextHighlight>
|
||||||
|
</Trans>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (
|
||||||
|
type === "card.updated.label.removed" &&
|
||||||
|
mergedLabels &&
|
||||||
|
mergedLabels.length > 1
|
||||||
|
) {
|
||||||
|
const labelList = mergedLabels.join(", ");
|
||||||
|
return (
|
||||||
|
<Trans>
|
||||||
|
removed {mergedLabels.length} labels:{" "}
|
||||||
|
<TextHighlight>{labelList}</TextHighlight>
|
||||||
|
</Trans>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
const ACTIVITY_TYPE_MAP = {
|
const ACTIVITY_TYPE_MAP = {
|
||||||
"card.created": t`created the card`,
|
"card.created": t`created the card`,
|
||||||
"card.updated.title": t`updated the title`,
|
"card.updated.title": t`updated the title`,
|
||||||
@@ -79,12 +120,6 @@ const getActivityText = ({
|
|||||||
if (!(type in ACTIVITY_TYPE_MAP)) return null;
|
if (!(type in ACTIVITY_TYPE_MAP)) return null;
|
||||||
const baseText = ACTIVITY_TYPE_MAP[type as keyof typeof ACTIVITY_TYPE_MAP];
|
const baseText = ACTIVITY_TYPE_MAP[type as keyof typeof ACTIVITY_TYPE_MAP];
|
||||||
|
|
||||||
const TextHighlight = ({ children }: { children: React.ReactNode }) => (
|
|
||||||
<span className="font-medium text-light-1000 dark:text-dark-1000">
|
|
||||||
{children}
|
|
||||||
</span>
|
|
||||||
);
|
|
||||||
|
|
||||||
if (type === "card.updated.title" && toTitle) {
|
if (type === "card.updated.title" && toTitle) {
|
||||||
return (
|
return (
|
||||||
<Trans>
|
<Trans>
|
||||||
@@ -281,37 +316,151 @@ const getActivityIcon = (
|
|||||||
return ACTIVITY_ICON_MAP[type] ?? null;
|
return ACTIVITY_ICON_MAP[type] ?? null;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const ACTIVITIES_PAGE_SIZE = 20;
|
||||||
|
|
||||||
const ActivityList = ({
|
const ActivityList = ({
|
||||||
activities,
|
|
||||||
cardPublicId,
|
cardPublicId,
|
||||||
isLoading,
|
isLoading: cardIsLoading,
|
||||||
isAdmin,
|
isAdmin,
|
||||||
isViewOnly,
|
isViewOnly,
|
||||||
}: {
|
}: {
|
||||||
activities: NonNullable<GetCardByIdOutput>["activities"];
|
|
||||||
cardPublicId: string;
|
cardPublicId: string;
|
||||||
isLoading: boolean;
|
isLoading: boolean;
|
||||||
isAdmin?: boolean;
|
isAdmin?: boolean;
|
||||||
isViewOnly?: boolean;
|
isViewOnly?: boolean;
|
||||||
}) => {
|
}) => {
|
||||||
const { data } = authClient.useSession();
|
const { dateLocale, locale } = useLocalisation();
|
||||||
const { dateLocale } = useLocalisation();
|
const { data: sessionData } = authClient.useSession();
|
||||||
|
const utils = api.useUtils();
|
||||||
|
const [allActivities, setAllActivities] = useState<
|
||||||
|
GetCardActivitiesOutput["activities"]
|
||||||
|
>([]);
|
||||||
|
const [hasMore, setHasMore] = useState(true);
|
||||||
|
const [isLoadingMore, setIsLoadingMore] = useState(false);
|
||||||
|
|
||||||
|
const isFullyExpandedRef = useRef(false);
|
||||||
|
const lastDataUpdatedAtRef = useRef<number | null>(null);
|
||||||
|
|
||||||
|
const {
|
||||||
|
data: firstPageData,
|
||||||
|
isFetching: isFetchingFirst,
|
||||||
|
dataUpdatedAt,
|
||||||
|
} = api.card.getActivities.useQuery(
|
||||||
|
{
|
||||||
|
cardPublicId,
|
||||||
|
limit: ACTIVITIES_PAGE_SIZE,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
enabled: !!cardPublicId,
|
||||||
|
},
|
||||||
|
);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
if (firstPageData && dataUpdatedAt !== lastDataUpdatedAtRef.current) {
|
||||||
|
lastDataUpdatedAtRef.current = dataUpdatedAt;
|
||||||
|
|
||||||
|
if (isFullyExpandedRef.current && firstPageData.hasMore) {
|
||||||
|
setAllActivities(firstPageData.activities);
|
||||||
|
setHasMore(firstPageData.hasMore);
|
||||||
|
|
||||||
|
const fetchAllRemaining = async () => {
|
||||||
|
let currentActivities = [...firstPageData.activities];
|
||||||
|
let currentHasMore = firstPageData.hasMore;
|
||||||
|
|
||||||
|
while (currentHasMore) {
|
||||||
|
const lastActivity =
|
||||||
|
currentActivities[currentActivities.length - 1];
|
||||||
|
if (!lastActivity) break;
|
||||||
|
|
||||||
|
const nextCursor = new Date(lastActivity.createdAt).toISOString();
|
||||||
|
const nextPage = await utils.card.getActivities.fetch({
|
||||||
|
cardPublicId,
|
||||||
|
limit: ACTIVITIES_PAGE_SIZE,
|
||||||
|
cursor: nextCursor,
|
||||||
|
});
|
||||||
|
|
||||||
|
if (nextPage) {
|
||||||
|
const existingIds = new Set(
|
||||||
|
currentActivities.map((a) => a.publicId),
|
||||||
|
);
|
||||||
|
const newActivities = nextPage.activities.filter(
|
||||||
|
(a: { publicId: string }) => !existingIds.has(a.publicId),
|
||||||
|
);
|
||||||
|
currentActivities = [...currentActivities, ...newActivities];
|
||||||
|
currentHasMore = nextPage.hasMore;
|
||||||
|
} else {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
setAllActivities(currentActivities);
|
||||||
|
setHasMore(false);
|
||||||
|
};
|
||||||
|
|
||||||
|
fetchAllRemaining();
|
||||||
|
} else {
|
||||||
|
setAllActivities(firstPageData.activities);
|
||||||
|
setHasMore(firstPageData.hasMore);
|
||||||
|
|
||||||
|
if (!firstPageData.hasMore) {
|
||||||
|
isFullyExpandedRef.current = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}, [firstPageData, dataUpdatedAt, cardPublicId, utils.card.getActivities]);
|
||||||
|
|
||||||
|
const handleLoadMore = async () => {
|
||||||
|
if (isLoadingMore || !hasMore || allActivities.length === 0) return;
|
||||||
|
|
||||||
|
const lastActivity = allActivities[allActivities.length - 1];
|
||||||
|
if (!lastActivity) return;
|
||||||
|
|
||||||
|
setIsLoadingMore(true);
|
||||||
|
try {
|
||||||
|
const nextCursor = new Date(lastActivity.createdAt).toISOString();
|
||||||
|
const nextPage = await utils.card.getActivities.fetch({
|
||||||
|
cardPublicId,
|
||||||
|
limit: ACTIVITIES_PAGE_SIZE,
|
||||||
|
cursor: nextCursor,
|
||||||
|
});
|
||||||
|
|
||||||
|
if (nextPage) {
|
||||||
|
const existingIds = new Set(allActivities.map((a) => a.publicId));
|
||||||
|
const newActivities = nextPage.activities.filter(
|
||||||
|
(a: { publicId: string }) => !existingIds.has(a.publicId),
|
||||||
|
);
|
||||||
|
setAllActivities((prev) => [...prev, ...newActivities]);
|
||||||
|
setHasMore(nextPage.hasMore);
|
||||||
|
|
||||||
|
if (!nextPage.hasMore) {
|
||||||
|
isFullyExpandedRef.current = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} finally {
|
||||||
|
setIsLoadingMore(false);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const isFetching = isFetchingFirst || isLoadingMore;
|
||||||
|
const isLoading =
|
||||||
|
cardIsLoading || (isFetchingFirst && allActivities.length === 0);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="flex flex-col space-y-4 pt-4">
|
<div className="flex flex-col space-y-4 pt-4">
|
||||||
{activities.map((activity, index) => {
|
{allActivities.map((activity, index) => {
|
||||||
const activityText = getActivityText({
|
const activityText = getActivityText({
|
||||||
type: activity.type,
|
type: activity.type,
|
||||||
toTitle: activity.toTitle,
|
toTitle: activity.toTitle,
|
||||||
fromList: activity.fromList?.name ?? null,
|
fromList: activity.fromList?.name ?? null,
|
||||||
toList: activity.toList?.name ?? null,
|
toList: activity.toList?.name ?? null,
|
||||||
memberName: activity.member?.user?.name ?? null,
|
memberName: activity.member?.user?.name ?? null,
|
||||||
isSelf: activity.member?.user?.id === data?.user.id,
|
isSelf: activity.member?.user?.id === sessionData?.user.id,
|
||||||
label: activity.label?.name ?? null,
|
label: activity.label?.name ?? null,
|
||||||
fromTitle: activity.fromTitle ?? null,
|
fromTitle: activity.fromTitle ?? null,
|
||||||
fromDueDate: activity.fromDueDate ?? null,
|
fromDueDate: activity.fromDueDate ?? null,
|
||||||
toDueDate: activity.toDueDate ?? null,
|
toDueDate: activity.toDueDate ?? null,
|
||||||
dateLocale: dateLocale,
|
dateLocale: dateLocale,
|
||||||
|
mergedLabels: (activity as any).mergedLabels,
|
||||||
});
|
});
|
||||||
|
|
||||||
if (activity.type === "card.updated.comment.added")
|
if (activity.type === "card.updated.comment.added")
|
||||||
@@ -326,7 +475,7 @@ const ActivityList = ({
|
|||||||
createdAt={activity.createdAt.toISOString()}
|
createdAt={activity.createdAt.toISOString()}
|
||||||
comment={activity.comment?.comment}
|
comment={activity.comment?.comment}
|
||||||
isEdited={!!activity.comment?.updatedAt}
|
isEdited={!!activity.comment?.updatedAt}
|
||||||
isAuthor={activity.comment?.createdBy === data?.user.id}
|
isAuthor={activity.comment?.createdBy === sessionData?.user.id}
|
||||||
isAdmin={isAdmin ?? false}
|
isAdmin={isAdmin ?? false}
|
||||||
isViewOnly={!!isViewOnly}
|
isViewOnly={!!isViewOnly}
|
||||||
/>
|
/>
|
||||||
@@ -351,11 +500,9 @@ const ActivityList = ({
|
|||||||
)}
|
)}
|
||||||
isLoading={isLoading}
|
isLoading={isLoading}
|
||||||
/>
|
/>
|
||||||
{index !== activities.length - 1 &&
|
{index !== allActivities.length - 1 && (
|
||||||
activities[index + 1]?.type !==
|
<div className="absolute bottom-[-14px] left-1/2 top-[30px] w-0.5 -translate-x-1/2 bg-light-600 dark:bg-dark-600" />
|
||||||
"card.updated.comment.added" && (
|
)}
|
||||||
<div className="absolute bottom-[-14px] left-1/2 top-[30px] w-0.5 -translate-x-1/2 bg-light-600 dark:bg-dark-600" />
|
|
||||||
)}
|
|
||||||
</div>
|
</div>
|
||||||
<p className="text-sm">
|
<p className="text-sm">
|
||||||
<span className="font-medium dark:text-dark-1000">{`${activity.user?.name} `}</span>
|
<span className="font-medium dark:text-dark-1000">{`${activity.user?.name} `}</span>
|
||||||
@@ -373,6 +520,17 @@ const ActivityList = ({
|
|||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
})}
|
})}
|
||||||
|
{hasMore && (
|
||||||
|
<div className="flex justify-center pt-4">
|
||||||
|
<button
|
||||||
|
onClick={handleLoadMore}
|
||||||
|
disabled={isFetching}
|
||||||
|
className="text-sm font-medium text-light-900 hover:text-light-1000 disabled:opacity-50 dark:text-dark-800 dark:hover:text-dark-1000"
|
||||||
|
>
|
||||||
|
{isFetching ? t`Loading...` : t`Load more activities`}
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ import {
|
|||||||
|
|
||||||
import { usePopup } from "~/providers/popup";
|
import { usePopup } from "~/providers/popup";
|
||||||
import { api } from "~/utils/api";
|
import { api } from "~/utils/api";
|
||||||
|
import { invalidateCard } from "~/utils/cardInvalidation";
|
||||||
|
|
||||||
interface Attachment {
|
interface Attachment {
|
||||||
publicId: string;
|
publicId: string;
|
||||||
@@ -81,7 +82,7 @@ export function AttachmentThumbnails({
|
|||||||
},
|
},
|
||||||
onSettled: async () => {
|
onSettled: async () => {
|
||||||
if (isReadOnly) return;
|
if (isReadOnly) return;
|
||||||
await utils.card.byId.invalidate({ cardPublicId });
|
await invalidateCard(utils, cardPublicId);
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ import Button from "~/components/Button";
|
|||||||
import { useModal } from "~/providers/modal";
|
import { useModal } from "~/providers/modal";
|
||||||
import { usePopup } from "~/providers/popup";
|
import { usePopup } from "~/providers/popup";
|
||||||
import { api } from "~/utils/api";
|
import { api } from "~/utils/api";
|
||||||
|
import { invalidateCard } from "~/utils/cardInvalidation";
|
||||||
|
|
||||||
export function AttachmentUpload({ cardPublicId }: { cardPublicId: string }) {
|
export function AttachmentUpload({ cardPublicId }: { cardPublicId: string }) {
|
||||||
const { openModal } = useModal();
|
const { openModal } = useModal();
|
||||||
@@ -20,7 +21,7 @@ export function AttachmentUpload({ cardPublicId }: { cardPublicId: string }) {
|
|||||||
const generateUploadUrl = api.attachment.generateUploadUrl.useMutation();
|
const generateUploadUrl = api.attachment.generateUploadUrl.useMutation();
|
||||||
const confirmAttachment = api.attachment.confirm.useMutation({
|
const confirmAttachment = api.attachment.confirm.useMutation({
|
||||||
onSuccess: async () => {
|
onSuccess: async () => {
|
||||||
await utils.card.byId.invalidate({ cardPublicId });
|
await invalidateCard(utils, cardPublicId);
|
||||||
showPopup({
|
showPopup({
|
||||||
header: t`Attachment uploaded`,
|
header: t`Attachment uploaded`,
|
||||||
message: t`Your file has been uploaded successfully.`,
|
message: t`Your file has been uploaded successfully.`,
|
||||||
|
|||||||
@@ -1,11 +1,14 @@
|
|||||||
|
import type { DraggableProvided } from "react-beautiful-dnd";
|
||||||
import { t } from "@lingui/core/macro";
|
import { t } from "@lingui/core/macro";
|
||||||
import { useEffect, useState } from "react";
|
import { useEffect, useState } from "react";
|
||||||
import ContentEditable from "react-contenteditable";
|
import ContentEditable from "react-contenteditable";
|
||||||
import { HiXMark } from "react-icons/hi2";
|
import { HiXMark } from "react-icons/hi2";
|
||||||
|
import { RiDraggable } from "react-icons/ri";
|
||||||
import { twMerge } from "tailwind-merge";
|
import { twMerge } from "tailwind-merge";
|
||||||
|
|
||||||
import { usePopup } from "~/providers/popup";
|
import { usePopup } from "~/providers/popup";
|
||||||
import { api } from "~/utils/api";
|
import { api } from "~/utils/api";
|
||||||
|
import { invalidateCard } from "~/utils/cardInvalidation";
|
||||||
|
|
||||||
interface ChecklistItemRowProps {
|
interface ChecklistItemRowProps {
|
||||||
item: {
|
item: {
|
||||||
@@ -14,13 +17,19 @@ interface ChecklistItemRowProps {
|
|||||||
completed: boolean;
|
completed: boolean;
|
||||||
};
|
};
|
||||||
cardPublicId: string;
|
cardPublicId: string;
|
||||||
|
onCreateNewItem?: () => void;
|
||||||
viewOnly?: boolean;
|
viewOnly?: boolean;
|
||||||
|
dragHandleProps?: DraggableProvided["dragHandleProps"];
|
||||||
|
isDragging?: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
export default function ChecklistItemRow({
|
export default function ChecklistItemRow({
|
||||||
item,
|
item,
|
||||||
cardPublicId,
|
cardPublicId,
|
||||||
|
onCreateNewItem,
|
||||||
viewOnly = false,
|
viewOnly = false,
|
||||||
|
dragHandleProps,
|
||||||
|
isDragging = false,
|
||||||
}: ChecklistItemRowProps) {
|
}: ChecklistItemRowProps) {
|
||||||
const utils = api.useUtils();
|
const utils = api.useUtils();
|
||||||
const { showPopup } = usePopup();
|
const { showPopup } = usePopup();
|
||||||
@@ -62,7 +71,7 @@ export default function ChecklistItemRow({
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
onSettled: async () => {
|
onSettled: async () => {
|
||||||
await utils.card.byId.invalidate({ cardPublicId });
|
await invalidateCard(utils, cardPublicId);
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -90,7 +99,7 @@ export default function ChecklistItemRow({
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
onSettled: async () => {
|
onSettled: async () => {
|
||||||
await utils.card.byId.invalidate({ cardPublicId });
|
await invalidateCard(utils, cardPublicId);
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -138,7 +147,23 @@ export default function ChecklistItemRow({
|
|||||||
};
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="group relative flex items-start gap-3 rounded-md py-2 pl-4 hover:bg-light-100 dark:hover:bg-dark-100">
|
<div
|
||||||
|
className={twMerge(
|
||||||
|
"group relative flex items-start gap-3 rounded-md py-2 pl-4 hover:bg-light-100 dark:hover:bg-dark-100",
|
||||||
|
isDragging && "opacity-80",
|
||||||
|
)}
|
||||||
|
>
|
||||||
|
{!viewOnly && (
|
||||||
|
<div
|
||||||
|
{...dragHandleProps}
|
||||||
|
className="absolute left-0 top-1/2 flex h-[20px] w-[20px] -translate-x-full -translate-y-1/2 cursor-grab items-center justify-center pr-1 opacity-0 transition-opacity group-hover:opacity-75 hover:opacity-100 active:cursor-grabbing"
|
||||||
|
>
|
||||||
|
<RiDraggable className="h-4 w-4 text-light-700 dark:text-dark-700" />
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
|
|
||||||
|
{viewOnly && <div className="w-[20px] flex-shrink-0" />}
|
||||||
|
|
||||||
<label
|
<label
|
||||||
className={`relative mt-[2px] inline-flex h-[16px] w-[16px] flex-shrink-0 items-center justify-center`}
|
className={`relative mt-[2px] inline-flex h-[16px] w-[16px] flex-shrink-0 items-center justify-center`}
|
||||||
>
|
>
|
||||||
@@ -164,7 +189,10 @@ export default function ChecklistItemRow({
|
|||||||
disabled={viewOnly}
|
disabled={viewOnly}
|
||||||
onChange={(e) => setTitle(e.target.value)}
|
onChange={(e) => setTitle(e.target.value)}
|
||||||
// @ts-expect-error - valid event
|
// @ts-expect-error - valid event
|
||||||
onBlur={(e: Event) => commitTitle(e.target.innerHTML as string)}
|
onBlur={(e: Event) => {
|
||||||
|
const innerHTML = (e.target as HTMLElement).innerHTML;
|
||||||
|
commitTitle(innerHTML);
|
||||||
|
}}
|
||||||
className={twMerge(
|
className={twMerge(
|
||||||
"m-0 min-h-[20px] w-full p-0 text-sm leading-[20px] text-light-950 outline-none focus-visible:outline-none dark:text-dark-950",
|
"m-0 min-h-[20px] w-full p-0 text-sm leading-[20px] text-light-950 outline-none focus-visible:outline-none dark:text-dark-950",
|
||||||
viewOnly && "cursor-default",
|
viewOnly && "cursor-default",
|
||||||
@@ -174,7 +202,9 @@ export default function ChecklistItemRow({
|
|||||||
if (viewOnly) return;
|
if (viewOnly) return;
|
||||||
if (e.key === "Enter") {
|
if (e.key === "Enter") {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
commitTitle(title);
|
const innerHTML = (e.currentTarget as HTMLElement).innerHTML;
|
||||||
|
commitTitle(innerHTML);
|
||||||
|
onCreateNewItem?.();
|
||||||
}
|
}
|
||||||
if (e.key === "Escape") {
|
if (e.key === "Escape") {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import { twMerge } from "tailwind-merge";
|
|||||||
|
|
||||||
import { usePopup } from "~/providers/popup";
|
import { usePopup } from "~/providers/popup";
|
||||||
import { api } from "~/utils/api";
|
import { api } from "~/utils/api";
|
||||||
|
import { invalidateCard } from "~/utils/cardInvalidation";
|
||||||
|
|
||||||
export default function ChecklistNameInput({
|
export default function ChecklistNameInput({
|
||||||
checklistPublicId,
|
checklistPublicId,
|
||||||
@@ -48,7 +49,7 @@ export default function ChecklistNameInput({
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
onSettled: async () => {
|
onSettled: async () => {
|
||||||
await utils.card.byId.invalidate({ cardPublicId });
|
await invalidateCard(utils, cardPublicId);
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,13 @@
|
|||||||
|
import type { DropResult } from "react-beautiful-dnd";
|
||||||
|
import { t } from "@lingui/core/macro";
|
||||||
|
import { DragDropContext, Draggable } from "react-beautiful-dnd";
|
||||||
import { HiPlus, HiXMark } from "react-icons/hi2";
|
import { HiPlus, HiXMark } from "react-icons/hi2";
|
||||||
|
|
||||||
import CircularProgress from "~/components/CircularProgress";
|
import CircularProgress from "~/components/CircularProgress";
|
||||||
|
import { StrictModeDroppable as Droppable } from "~/components/StrictModeDroppable";
|
||||||
import { useModal } from "~/providers/modal";
|
import { useModal } from "~/providers/modal";
|
||||||
|
import { usePopup } from "~/providers/popup";
|
||||||
|
import { api } from "~/utils/api";
|
||||||
import ChecklistItemRow from "./ChecklistItemRow";
|
import ChecklistItemRow from "./ChecklistItemRow";
|
||||||
import ChecklistNameInput from "./ChecklistNameInput";
|
import ChecklistNameInput from "./ChecklistNameInput";
|
||||||
import NewChecklistItemForm from "./NewChecklistItemForm";
|
import NewChecklistItemForm from "./NewChecklistItemForm";
|
||||||
@@ -34,109 +40,206 @@ export default function Checklists({
|
|||||||
viewOnly = false,
|
viewOnly = false,
|
||||||
}: ChecklistsProps) {
|
}: ChecklistsProps) {
|
||||||
const { openModal } = useModal();
|
const { openModal } = useModal();
|
||||||
|
const { showPopup } = usePopup();
|
||||||
|
|
||||||
if (!checklists || checklists.length === 0) return null;
|
const utils = api.useUtils();
|
||||||
|
|
||||||
|
const reorderItemMutation = api.checklist.updateItem.useMutation({
|
||||||
|
onMutate: async (vars) => {
|
||||||
|
await utils.card.byId.cancel({ cardPublicId });
|
||||||
|
const previous = utils.card.byId.getData({ cardPublicId });
|
||||||
|
|
||||||
|
utils.card.byId.setData({ cardPublicId }, (old) => {
|
||||||
|
if (!old) return old;
|
||||||
|
|
||||||
|
const updatedChecklists = old.checklists.map((cl) => {
|
||||||
|
const itemIndex = cl.items.findIndex(
|
||||||
|
(item) => item.publicId === vars.checklistItemPublicId,
|
||||||
|
);
|
||||||
|
|
||||||
|
if (itemIndex === -1 || vars.index === undefined) return cl;
|
||||||
|
|
||||||
|
const newIndex = vars.index;
|
||||||
|
const items = Array.from(cl.items);
|
||||||
|
const [movedItem] = items.splice(itemIndex, 1);
|
||||||
|
if (!movedItem) return cl;
|
||||||
|
items.splice(newIndex, 0, movedItem);
|
||||||
|
|
||||||
|
return { ...cl, items };
|
||||||
|
});
|
||||||
|
|
||||||
|
return { ...old, checklists: updatedChecklists } as typeof old;
|
||||||
|
});
|
||||||
|
|
||||||
|
return { previous };
|
||||||
|
},
|
||||||
|
onError: (_err, _vars, ctx) => {
|
||||||
|
if (ctx?.previous)
|
||||||
|
utils.card.byId.setData({ cardPublicId }, ctx.previous);
|
||||||
|
showPopup({
|
||||||
|
header: t`Unable to reorder checklist item`,
|
||||||
|
message: t`Please try again later, or contact customer support.`,
|
||||||
|
icon: "error",
|
||||||
|
});
|
||||||
|
},
|
||||||
|
onSettled: async () => {
|
||||||
|
await utils.card.byId.invalidate({ cardPublicId });
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
const onDragEnd = (result: DropResult) => {
|
||||||
|
if (!result.destination) return;
|
||||||
|
|
||||||
|
const { source, destination, draggableId } = result;
|
||||||
|
|
||||||
|
if (source.droppableId !== destination.droppableId) return;
|
||||||
|
|
||||||
|
if (source.index === destination.index) return;
|
||||||
|
|
||||||
|
reorderItemMutation.mutate({
|
||||||
|
checklistItemPublicId: draggableId,
|
||||||
|
index: destination.index,
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
if (checklists.length === 0) return null;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="border-light-300 pb-4 dark:border-dark-300">
|
<DragDropContext onDragEnd={onDragEnd}>
|
||||||
<div>
|
<div className="border-light-300 pb-4 dark:border-dark-300">
|
||||||
{checklists.map((checklist) => {
|
<div>
|
||||||
const completedItems = checklist.items.filter(
|
{checklists.map((checklist) => {
|
||||||
(item) => item.completed,
|
const completedItems = checklist.items.filter(
|
||||||
);
|
(item) => item.completed,
|
||||||
const progress =
|
);
|
||||||
checklist.items.length > 0 && completedItems.length > 0
|
const progress =
|
||||||
? (completedItems.length / checklist.items.length) * 100
|
checklist.items.length > 0 && completedItems.length > 0
|
||||||
: 2;
|
? (completedItems.length / checklist.items.length) * 100
|
||||||
|
: 2;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div key={checklist.publicId} className="mb-4">
|
<div key={checklist.publicId} className="mb-4">
|
||||||
<div className="mb-2 flex items-center font-medium text-light-1000 dark:text-dark-1000">
|
<div className="mb-2 flex items-center font-medium text-light-1000 dark:text-dark-1000">
|
||||||
<div className="min-w-0 flex-1">
|
<div className="min-w-0 flex-1">
|
||||||
<ChecklistNameInput
|
<ChecklistNameInput
|
||||||
checklistPublicId={checklist.publicId}
|
checklistPublicId={checklist.publicId}
|
||||||
initialName={checklist.name}
|
initialName={checklist.name}
|
||||||
cardPublicId={cardPublicId}
|
cardPublicId={cardPublicId}
|
||||||
viewOnly={viewOnly}
|
viewOnly={viewOnly}
|
||||||
/>
|
/>
|
||||||
</div>
|
|
||||||
{!viewOnly && (
|
|
||||||
<div className="ml-2 flex flex-shrink-0 items-center gap-2">
|
|
||||||
<div className="flex items-center gap-1 rounded-full border-[1px] border-light-300 px-2 py-1 dark:border-dark-300">
|
|
||||||
<CircularProgress
|
|
||||||
progress={progress}
|
|
||||||
size="sm"
|
|
||||||
className="flex-shrink-0"
|
|
||||||
/>
|
|
||||||
<span className="text-[11px] text-light-900 dark:text-dark-700">
|
|
||||||
{completedItems.length}/{checklist.items.length}
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<button
|
|
||||||
className="rounded-md p-1 text-light-900 hover:bg-light-100 dark:text-dark-700 dark:hover:bg-dark-100"
|
|
||||||
onClick={() =>
|
|
||||||
openModal("DELETE_CHECKLIST", checklist.publicId)
|
|
||||||
}
|
|
||||||
>
|
|
||||||
<HiXMark size={16} />
|
|
||||||
</button>
|
|
||||||
<button
|
|
||||||
onClick={() =>
|
|
||||||
setActiveChecklistForm?.(checklist.publicId)
|
|
||||||
}
|
|
||||||
className="rounded-md p-1 text-light-900 hover:bg-light-100 dark:text-dark-700 dark:hover:bg-dark-100"
|
|
||||||
>
|
|
||||||
<HiPlus size={16} />
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
)}
|
{!viewOnly && (
|
||||||
{viewOnly && (
|
<div className="ml-2 flex flex-shrink-0 items-center gap-2">
|
||||||
<div className="ml-2 flex flex-shrink-0 items-center gap-2">
|
<div className="flex items-center gap-1 rounded-full border-[1px] border-light-300 px-2 py-1 dark:border-dark-300">
|
||||||
<div className="flex items-center gap-1 rounded-full border-[1px] border-light-300 px-2 py-1 dark:border-dark-300">
|
<CircularProgress
|
||||||
<CircularProgress
|
progress={progress}
|
||||||
progress={progress}
|
size="sm"
|
||||||
size="sm"
|
className="flex-shrink-0"
|
||||||
className="flex-shrink-0"
|
/>
|
||||||
/>
|
<span className="text-[11px] text-light-900 dark:text-dark-700">
|
||||||
<span className="text-[11px] text-light-900 dark:text-dark-700">
|
{completedItems.length}/{checklist.items.length}
|
||||||
{completedItems.length}/{checklist.items.length}
|
</span>
|
||||||
</span>
|
</div>
|
||||||
|
<div>
|
||||||
|
<button
|
||||||
|
className="rounded-md p-1 text-light-900 hover:bg-light-100 dark:text-dark-700 dark:hover:bg-dark-100"
|
||||||
|
onClick={() =>
|
||||||
|
openModal("DELETE_CHECKLIST", checklist.publicId)
|
||||||
|
}
|
||||||
|
>
|
||||||
|
<HiXMark size={16} />
|
||||||
|
</button>
|
||||||
|
<button
|
||||||
|
onClick={() =>
|
||||||
|
setActiveChecklistForm?.(checklist.publicId)
|
||||||
|
}
|
||||||
|
className="rounded-md p-1 text-light-900 hover:bg-light-100 dark:text-dark-700 dark:hover:bg-dark-100"
|
||||||
|
>
|
||||||
|
<HiPlus size={16} />
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
)}
|
||||||
|
{viewOnly && (
|
||||||
|
<div className="ml-2 flex flex-shrink-0 items-center gap-2">
|
||||||
|
<div className="flex items-center gap-1 rounded-full border-[1px] border-light-300 px-2 py-1 dark:border-dark-300">
|
||||||
|
<CircularProgress
|
||||||
|
progress={progress}
|
||||||
|
size="sm"
|
||||||
|
className="flex-shrink-0"
|
||||||
|
/>
|
||||||
|
<span className="text-[11px] text-light-900 dark:text-dark-700">
|
||||||
|
{completedItems.length}/{checklist.items.length}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<Droppable
|
||||||
|
droppableId={checklist.publicId}
|
||||||
|
type="CHECKLIST_ITEM"
|
||||||
|
isDropDisabled={viewOnly}
|
||||||
|
>
|
||||||
|
{(provided) => (
|
||||||
|
<div
|
||||||
|
ref={provided.innerRef}
|
||||||
|
{...provided.droppableProps}
|
||||||
|
className="ml-1"
|
||||||
|
>
|
||||||
|
{checklist.items.map((item, index) => (
|
||||||
|
<Draggable
|
||||||
|
key={item.publicId}
|
||||||
|
draggableId={item.publicId}
|
||||||
|
index={index}
|
||||||
|
isDragDisabled={viewOnly}
|
||||||
|
>
|
||||||
|
{(provided, snapshot) => (
|
||||||
|
<div
|
||||||
|
ref={provided.innerRef}
|
||||||
|
{...provided.draggableProps}
|
||||||
|
style={{
|
||||||
|
...provided.draggableProps.style,
|
||||||
|
opacity: snapshot.isDragging ? 0.8 : 1,
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<ChecklistItemRow
|
||||||
|
item={{
|
||||||
|
publicId: item.publicId,
|
||||||
|
title: item.title,
|
||||||
|
completed: item.completed,
|
||||||
|
}}
|
||||||
|
cardPublicId={cardPublicId}
|
||||||
|
onCreateNewItem={() =>
|
||||||
|
setActiveChecklistForm?.(checklist.publicId)
|
||||||
|
}
|
||||||
|
viewOnly={viewOnly}
|
||||||
|
dragHandleProps={provided.dragHandleProps}
|
||||||
|
isDragging={snapshot.isDragging}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
|
</Draggable>
|
||||||
|
))}
|
||||||
|
{provided.placeholder}
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
|
</Droppable>
|
||||||
|
{activeChecklistForm === checklist.publicId && !viewOnly && (
|
||||||
|
<div className="ml-1">
|
||||||
|
<NewChecklistItemForm
|
||||||
|
checklistPublicId={checklist.publicId}
|
||||||
|
cardPublicId={cardPublicId}
|
||||||
|
onCancel={() => setActiveChecklistForm?.(null)}
|
||||||
|
readOnly={viewOnly}
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
|
);
|
||||||
<div className="ml-1">
|
})}
|
||||||
{checklist.items.map((item) => (
|
</div>
|
||||||
<ChecklistItemRow
|
|
||||||
key={item.publicId}
|
|
||||||
item={{
|
|
||||||
publicId: item.publicId,
|
|
||||||
title: item.title,
|
|
||||||
completed: item.completed,
|
|
||||||
}}
|
|
||||||
cardPublicId={cardPublicId}
|
|
||||||
viewOnly={viewOnly}
|
|
||||||
/>
|
|
||||||
))}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
{activeChecklistForm === checklist.publicId && !viewOnly && (
|
|
||||||
<div className="ml-1">
|
|
||||||
<NewChecklistItemForm
|
|
||||||
checklistPublicId={checklist.publicId}
|
|
||||||
cardPublicId={cardPublicId}
|
|
||||||
onCancel={() => setActiveChecklistForm?.(null)}
|
|
||||||
readOnly={viewOnly}
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
)}
|
|
||||||
</div>
|
|
||||||
);
|
|
||||||
})}
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</DragDropContext>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ import Dropdown from "~/components/Dropdown";
|
|||||||
import { useModal } from "~/providers/modal";
|
import { useModal } from "~/providers/modal";
|
||||||
import { usePopup } from "~/providers/popup";
|
import { usePopup } from "~/providers/popup";
|
||||||
import { api } from "~/utils/api";
|
import { api } from "~/utils/api";
|
||||||
|
import { invalidateCard } from "~/utils/cardInvalidation";
|
||||||
|
|
||||||
interface FormValues {
|
interface FormValues {
|
||||||
comment: string;
|
comment: string;
|
||||||
@@ -55,7 +56,7 @@ const Comment = ({
|
|||||||
|
|
||||||
const updateCommentMutation = api.card.updateComment.useMutation({
|
const updateCommentMutation = api.card.updateComment.useMutation({
|
||||||
onSuccess: async () => {
|
onSuccess: async () => {
|
||||||
await utils.card.byId.refetch();
|
await invalidateCard(utils, cardPublicId);
|
||||||
setIsEditing(false);
|
setIsEditing(false);
|
||||||
},
|
},
|
||||||
onError: () => {
|
onError: () => {
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import Button from "~/components/Button";
|
|||||||
import { useModal } from "~/providers/modal";
|
import { useModal } from "~/providers/modal";
|
||||||
import { usePopup } from "~/providers/popup";
|
import { usePopup } from "~/providers/popup";
|
||||||
import { api } from "~/utils/api";
|
import { api } from "~/utils/api";
|
||||||
|
import { invalidateCard } from "~/utils/cardInvalidation";
|
||||||
|
|
||||||
export function DeleteChecklistConfirmation({
|
export function DeleteChecklistConfirmation({
|
||||||
cardPublicId,
|
cardPublicId,
|
||||||
@@ -40,7 +41,7 @@ export function DeleteChecklistConfirmation({
|
|||||||
},
|
},
|
||||||
onSettled: async () => {
|
onSettled: async () => {
|
||||||
closeModal();
|
closeModal();
|
||||||
await utils.card.byId.invalidate({ cardPublicId });
|
await invalidateCard(utils, cardPublicId);
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import Button from "~/components/Button";
|
|||||||
import { useModal } from "~/providers/modal";
|
import { useModal } from "~/providers/modal";
|
||||||
import { usePopup } from "~/providers/popup";
|
import { usePopup } from "~/providers/popup";
|
||||||
import { api } from "~/utils/api";
|
import { api } from "~/utils/api";
|
||||||
|
import { invalidateCard } from "~/utils/cardInvalidation";
|
||||||
|
|
||||||
interface DeleteCommentConfirmationProps {
|
interface DeleteCommentConfirmationProps {
|
||||||
cardPublicId: string;
|
cardPublicId: string;
|
||||||
@@ -47,7 +48,7 @@ export function DeleteCommentConfirmation({
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
onSettled: async () => {
|
onSettled: async () => {
|
||||||
await utils.card.byId.invalidate(queryParams);
|
await invalidateCard(utils, cardPublicId);
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import { HiMiniPlus } from "react-icons/hi2";
|
|||||||
import DateSelector from "~/components/DateSelector";
|
import DateSelector from "~/components/DateSelector";
|
||||||
import { usePopup } from "~/providers/popup";
|
import { usePopup } from "~/providers/popup";
|
||||||
import { api } from "~/utils/api";
|
import { api } from "~/utils/api";
|
||||||
|
import { invalidateCard } from "~/utils/cardInvalidation";
|
||||||
|
|
||||||
interface DueDateSelectorProps {
|
interface DueDateSelectorProps {
|
||||||
cardPublicId: string;
|
cardPublicId: string;
|
||||||
@@ -61,7 +62,7 @@ export function DueDateSelector({
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
onSettled: async () => {
|
onSettled: async () => {
|
||||||
await utils.card.byId.invalidate({ cardPublicId });
|
await invalidateCard(utils, cardPublicId);
|
||||||
await utils.board.byId.invalidate();
|
await utils.board.byId.invalidate();
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import CheckboxDropdown from "~/components/CheckboxDropdown";
|
|||||||
import { useModal } from "~/providers/modal";
|
import { useModal } from "~/providers/modal";
|
||||||
import { usePopup } from "~/providers/popup";
|
import { usePopup } from "~/providers/popup";
|
||||||
import { api } from "~/utils/api";
|
import { api } from "~/utils/api";
|
||||||
|
import { invalidateCard } from "~/utils/cardInvalidation";
|
||||||
|
|
||||||
interface LabelSelectorProps {
|
interface LabelSelectorProps {
|
||||||
cardPublicId: string;
|
cardPublicId: string;
|
||||||
@@ -74,7 +75,7 @@ export default function LabelSelector({
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
onSettled: async () => {
|
onSettled: async () => {
|
||||||
await utils.card.byId.invalidate({ cardPublicId });
|
await invalidateCard(utils, cardPublicId);
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ import { t } from "@lingui/core/macro";
|
|||||||
import CheckboxDropdown from "~/components/CheckboxDropdown";
|
import CheckboxDropdown from "~/components/CheckboxDropdown";
|
||||||
import { usePopup } from "~/providers/popup";
|
import { usePopup } from "~/providers/popup";
|
||||||
import { api } from "~/utils/api";
|
import { api } from "~/utils/api";
|
||||||
|
import { invalidateCard } from "~/utils/cardInvalidation";
|
||||||
|
|
||||||
interface ListSelectorProps {
|
interface ListSelectorProps {
|
||||||
cardPublicId: string;
|
cardPublicId: string;
|
||||||
@@ -54,7 +55,7 @@ export default function ListSelector({
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
onSettled: async () => {
|
onSettled: async () => {
|
||||||
await utils.card.byId.invalidate({ cardPublicId });
|
await invalidateCard(utils, cardPublicId);
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import CheckboxDropdown from "~/components/CheckboxDropdown";
|
|||||||
import { useModal } from "~/providers/modal";
|
import { useModal } from "~/providers/modal";
|
||||||
import { usePopup } from "~/providers/popup";
|
import { usePopup } from "~/providers/popup";
|
||||||
import { api } from "~/utils/api";
|
import { api } from "~/utils/api";
|
||||||
|
import { invalidateCard } from "~/utils/cardInvalidation";
|
||||||
|
|
||||||
interface MemberSelectorProps {
|
interface MemberSelectorProps {
|
||||||
cardPublicId: string;
|
cardPublicId: string;
|
||||||
@@ -81,7 +82,7 @@ export default function MemberSelector({
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
onSettled: async () => {
|
onSettled: async () => {
|
||||||
await utils.card.byId.invalidate({ cardPublicId });
|
await invalidateCard(utils, cardPublicId);
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ import Input from "~/components/Input";
|
|||||||
import { useModal } from "~/providers/modal";
|
import { useModal } from "~/providers/modal";
|
||||||
import { usePopup } from "~/providers/popup";
|
import { usePopup } from "~/providers/popup";
|
||||||
import { api } from "~/utils/api";
|
import { api } from "~/utils/api";
|
||||||
|
import { invalidateCard } from "~/utils/cardInvalidation";
|
||||||
|
|
||||||
interface NewChecklistFormInput {
|
interface NewChecklistFormInput {
|
||||||
name: string;
|
name: string;
|
||||||
@@ -72,7 +73,7 @@ export function NewChecklistForm({ cardPublicId }: { cardPublicId: string }) {
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
onSettled: async (_data, _error, vars) => {
|
onSettled: async (_data, _error, vars) => {
|
||||||
await utils.card.byId.invalidate({ cardPublicId: vars.cardPublicId });
|
await invalidateCard(utils, vars.cardPublicId);
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import { generateUID } from "@kan/shared/utils";
|
|||||||
|
|
||||||
import { usePopup } from "~/providers/popup";
|
import { usePopup } from "~/providers/popup";
|
||||||
import { api } from "~/utils/api";
|
import { api } from "~/utils/api";
|
||||||
|
import { invalidateCard } from "~/utils/cardInvalidation";
|
||||||
|
|
||||||
interface FormValues {
|
interface FormValues {
|
||||||
title: string;
|
title: string;
|
||||||
@@ -91,7 +92,7 @@ const NewChecklistItemForm = ({
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
onSettled: async () => {
|
onSettled: async () => {
|
||||||
await utils.card.byId.invalidate({ cardPublicId });
|
await invalidateCard(utils, cardPublicId);
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import { HiOutlineArrowUp } from "react-icons/hi2";
|
|||||||
import LoadingSpinner from "~/components/LoadingSpinner";
|
import LoadingSpinner from "~/components/LoadingSpinner";
|
||||||
import { usePopup } from "~/providers/popup";
|
import { usePopup } from "~/providers/popup";
|
||||||
import { api } from "~/utils/api";
|
import { api } from "~/utils/api";
|
||||||
|
import { invalidateCard } from "~/utils/cardInvalidation";
|
||||||
|
|
||||||
interface FormValues {
|
interface FormValues {
|
||||||
comment: string;
|
comment: string;
|
||||||
@@ -34,10 +35,7 @@ const NewCommentForm = ({ cardPublicId }: { cardPublicId: string }) => {
|
|||||||
},
|
},
|
||||||
onSettled: async () => {
|
onSettled: async () => {
|
||||||
reset();
|
reset();
|
||||||
await utils.card.byId.invalidate(queryParams);
|
await invalidateCard(utils, cardPublicId);
|
||||||
},
|
|
||||||
onSuccess: async () => {
|
|
||||||
await utils.card.byId.refetch();
|
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ import { useModal } from "~/providers/modal";
|
|||||||
import { usePopup } from "~/providers/popup";
|
import { usePopup } from "~/providers/popup";
|
||||||
import { useWorkspace } from "~/providers/workspace";
|
import { useWorkspace } from "~/providers/workspace";
|
||||||
import { api } from "~/utils/api";
|
import { api } from "~/utils/api";
|
||||||
|
import { invalidateCard } from "~/utils/cardInvalidation";
|
||||||
import { formatMemberDisplayName, getAvatarUrl } from "~/utils/helpers";
|
import { formatMemberDisplayName, getAvatarUrl } from "~/utils/helpers";
|
||||||
import { DeleteLabelConfirmation } from "../../components/DeleteLabelConfirmation";
|
import { DeleteLabelConfirmation } from "../../components/DeleteLabelConfirmation";
|
||||||
import ActivityList from "./components/ActivityList";
|
import ActivityList from "./components/ActivityList";
|
||||||
@@ -178,7 +179,6 @@ export default function CardPage({ isTemplate }: { isTemplate?: boolean }) {
|
|||||||
|
|
||||||
const board = card?.list.board;
|
const board = card?.list.board;
|
||||||
const boardId = board?.publicId;
|
const boardId = board?.publicId;
|
||||||
const activities = card?.activities;
|
|
||||||
|
|
||||||
const updateCard = api.card.update.useMutation({
|
const updateCard = api.card.update.useMutation({
|
||||||
onError: () => {
|
onError: () => {
|
||||||
@@ -189,7 +189,7 @@ export default function CardPage({ isTemplate }: { isTemplate?: boolean }) {
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
onSettled: async () => {
|
onSettled: async () => {
|
||||||
await utils.card.byId.invalidate({ cardPublicId: cardId });
|
if (cardId) await invalidateCard(utils, cardId);
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -388,7 +388,6 @@ export default function CardPage({ isTemplate }: { isTemplate?: boolean }) {
|
|||||||
<div>
|
<div>
|
||||||
<ActivityList
|
<ActivityList
|
||||||
cardPublicId={cardId}
|
cardPublicId={cardId}
|
||||||
activities={activities ?? []}
|
|
||||||
isLoading={!card}
|
isLoading={!card}
|
||||||
isAdmin={workspace.role === "admin"}
|
isAdmin={workspace.role === "admin"}
|
||||||
/>
|
/>
|
||||||
|
|||||||
@@ -2,7 +2,6 @@ import type { FC, SVGProps } from "react";
|
|||||||
import { Trans } from "@lingui/react/macro";
|
import { Trans } from "@lingui/react/macro";
|
||||||
|
|
||||||
import AirbusLogo from "~/assets/logos/airbus.svg";
|
import AirbusLogo from "~/assets/logos/airbus.svg";
|
||||||
import BitwardenLogo from "~/assets/logos/bitwarden.svg";
|
|
||||||
import CouchbaseLogo from "~/assets/logos/couchbase.svg";
|
import CouchbaseLogo from "~/assets/logos/couchbase.svg";
|
||||||
import DeloitteLogo from "~/assets/logos/deloitte.svg";
|
import DeloitteLogo from "~/assets/logos/deloitte.svg";
|
||||||
import FastCompanyLogo from "~/assets/logos/fast_company.svg";
|
import FastCompanyLogo from "~/assets/logos/fast_company.svg";
|
||||||
@@ -31,36 +30,31 @@ export default function Logos() {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: 3,
|
id: 3,
|
||||||
component: BitwardenLogo as LogoComponent,
|
|
||||||
alt: "Bitwarden Logo",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: 4,
|
|
||||||
component: CouchbaseLogo as LogoComponent,
|
component: CouchbaseLogo as LogoComponent,
|
||||||
alt: "Couchbase Logo",
|
alt: "Couchbase Logo",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: 5,
|
id: 4,
|
||||||
component: LegoLogo as LogoComponent,
|
component: LegoLogo as LogoComponent,
|
||||||
alt: "Lego Logo",
|
alt: "Lego Logo",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: 6,
|
id: 5,
|
||||||
component: AirbusLogo as LogoComponent,
|
component: AirbusLogo as LogoComponent,
|
||||||
alt: "Airbus Logo",
|
alt: "Airbus Logo",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: 7,
|
id: 6,
|
||||||
component: DeloitteLogo as LogoComponent,
|
component: DeloitteLogo as LogoComponent,
|
||||||
alt: "Deloitte Logo",
|
alt: "Deloitte Logo",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: 8,
|
id: 7,
|
||||||
component: WakamLogo as LogoComponent,
|
component: WakamLogo as LogoComponent,
|
||||||
alt: "Wakam Logo",
|
alt: "Wakam Logo",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: 9,
|
id: 8,
|
||||||
component: LinkedinLogo as LogoComponent,
|
component: LinkedinLogo as LogoComponent,
|
||||||
alt: "Linked In Logo",
|
alt: "Linked In Logo",
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -161,7 +161,6 @@ export function CardModal({
|
|||||||
{cardPublicId && (
|
{cardPublicId && (
|
||||||
<ActivityList
|
<ActivityList
|
||||||
cardPublicId={cardPublicId}
|
cardPublicId={cardPublicId}
|
||||||
activities={data?.activities ?? []}
|
|
||||||
isLoading={isLoading}
|
isLoading={isLoading}
|
||||||
isViewOnly={true}
|
isViewOnly={true}
|
||||||
/>
|
/>
|
||||||
|
|||||||
@@ -15,7 +15,6 @@ import ThemeToggle from "~/components/ThemeToggle";
|
|||||||
import { useModal } from "~/providers/modal";
|
import { useModal } from "~/providers/modal";
|
||||||
import { usePopup } from "~/providers/popup";
|
import { usePopup } from "~/providers/popup";
|
||||||
import { api } from "~/utils/api";
|
import { api } from "~/utils/api";
|
||||||
import { convertDueDateFiltersToRanges } from "~/utils/dueDateFilters";
|
|
||||||
import { formatToArray } from "~/utils/helpers";
|
import { formatToArray } from "~/utils/helpers";
|
||||||
import Card from "~/views/board/components/Card";
|
import Card from "~/views/board/components/Card";
|
||||||
import Filters from "~/views/board/components/Filters";
|
import Filters from "~/views/board/components/Filters";
|
||||||
@@ -55,7 +54,9 @@ export default function PublicBoardView() {
|
|||||||
members: formatToArray(router.query.members),
|
members: formatToArray(router.query.members),
|
||||||
labels: formatToArray(router.query.labels),
|
labels: formatToArray(router.query.labels),
|
||||||
lists: formatToArray(router.query.lists),
|
lists: formatToArray(router.query.lists),
|
||||||
dueDate: convertDueDateFiltersToRanges(dueDateFilters),
|
...(dueDateFilters.length > 0 && {
|
||||||
|
dueDateFilters: dueDateFilters,
|
||||||
|
}),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
enabled: router.isReady && !!boardSlug,
|
enabled: router.isReady && !!boardSlug,
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ services:
|
|||||||
- .env
|
- .env
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
environment:
|
environment:
|
||||||
|
- KAN_ADMIN_API_KEY=${KAN_ADMIN_API_KEY}
|
||||||
- NEXT_PUBLIC_KAN_ENV=${NEXT_PUBLIC_KAN_ENV}
|
- NEXT_PUBLIC_KAN_ENV=${NEXT_PUBLIC_KAN_ENV}
|
||||||
- NEXT_PUBLIC_BASE_URL=${NEXT_PUBLIC_BASE_URL}
|
- NEXT_PUBLIC_BASE_URL=${NEXT_PUBLIC_BASE_URL}
|
||||||
- BETTER_AUTH_SECRET=${BETTER_AUTH_SECRET}
|
- BETTER_AUTH_SECRET=${BETTER_AUTH_SECRET}
|
||||||
|
|||||||
@@ -18,6 +18,9 @@ services:
|
|||||||
- BETTER_AUTH_SECRET=${BETTER_AUTH_SECRET}
|
- BETTER_AUTH_SECRET=${BETTER_AUTH_SECRET}
|
||||||
- POSTGRES_URL=${POSTGRES_URL}
|
- POSTGRES_URL=${POSTGRES_URL}
|
||||||
|
|
||||||
|
# Admin API key (optional)
|
||||||
|
- KAN_ADMIN_API_KEY=${KAN_ADMIN_API_KEY}
|
||||||
|
|
||||||
# SMTP (optional)
|
# SMTP (optional)
|
||||||
- SMTP_HOST=${SMTP_HOST}
|
- SMTP_HOST=${SMTP_HOST}
|
||||||
- SMTP_PORT=${SMTP_PORT}
|
- SMTP_PORT=${SMTP_PORT}
|
||||||
|
|||||||
@@ -9,5 +9,15 @@ export const openApiDocument = generateOpenApiDocument(appRouter, {
|
|||||||
version: "1.0.0",
|
version: "1.0.0",
|
||||||
baseUrl: `${env("NEXT_PUBLIC_BASE_URL")}/api/v1`,
|
baseUrl: `${env("NEXT_PUBLIC_BASE_URL")}/api/v1`,
|
||||||
docsUrl: "docs.kan.bn",
|
docsUrl: "docs.kan.bn",
|
||||||
tags: ["Auth", "Users", "Boards", "Lists", "Cards", "Labels", "Imports", "Integrations"],
|
tags: [
|
||||||
|
"Auth",
|
||||||
|
"Users",
|
||||||
|
"Boards",
|
||||||
|
"Lists",
|
||||||
|
"Cards",
|
||||||
|
"Labels",
|
||||||
|
"Imports",
|
||||||
|
"Integrations",
|
||||||
|
"Health",
|
||||||
|
],
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ import { boardRouter } from "./routers/board";
|
|||||||
import { cardRouter } from "./routers/card";
|
import { cardRouter } from "./routers/card";
|
||||||
import { checklistRouter } from "./routers/checklist";
|
import { checklistRouter } from "./routers/checklist";
|
||||||
import { feedbackRouter } from "./routers/feedback";
|
import { feedbackRouter } from "./routers/feedback";
|
||||||
|
import { healthRouter } from "./routers/health";
|
||||||
import { importRouter } from "./routers/import";
|
import { importRouter } from "./routers/import";
|
||||||
import { integrationRouter } from "./routers/integration";
|
import { integrationRouter } from "./routers/integration";
|
||||||
import { labelRouter } from "./routers/label";
|
import { labelRouter } from "./routers/label";
|
||||||
@@ -18,6 +19,7 @@ export const appRouter = createTRPCRouter({
|
|||||||
card: cardRouter,
|
card: cardRouter,
|
||||||
checklist: checklistRouter,
|
checklist: checklistRouter,
|
||||||
feedback: feedbackRouter,
|
feedback: feedbackRouter,
|
||||||
|
health: healthRouter,
|
||||||
label: labelRouter,
|
label: labelRouter,
|
||||||
list: listRouter,
|
list: listRouter,
|
||||||
member: memberRouter,
|
member: memberRouter,
|
||||||
|
|||||||
@@ -8,17 +8,15 @@ import * as labelRepo from "@kan/db/repository/label.repo";
|
|||||||
import * as listRepo from "@kan/db/repository/list.repo";
|
import * as listRepo from "@kan/db/repository/list.repo";
|
||||||
import * as workspaceRepo from "@kan/db/repository/workspace.repo";
|
import * as workspaceRepo from "@kan/db/repository/workspace.repo";
|
||||||
import { colours } from "@kan/shared/constants";
|
import { colours } from "@kan/shared/constants";
|
||||||
import { generateSlug, generateUID } from "@kan/shared/utils";
|
import {
|
||||||
|
convertDueDateFiltersToRanges,
|
||||||
|
generateSlug,
|
||||||
|
generateUID,
|
||||||
|
} from "@kan/shared/utils";
|
||||||
|
|
||||||
import { createTRPCRouter, protectedProcedure, publicProcedure } from "../trpc";
|
import { createTRPCRouter, protectedProcedure, publicProcedure } from "../trpc";
|
||||||
import { assertUserInWorkspace } from "../utils/auth";
|
import { assertUserInWorkspace } from "../utils/auth";
|
||||||
|
|
||||||
const dueDateFilterSchema = z.object({
|
|
||||||
startDate: z.string().datetime().optional(),
|
|
||||||
endDate: z.string().datetime().optional(),
|
|
||||||
hasNoDueDate: z.boolean().optional(),
|
|
||||||
});
|
|
||||||
|
|
||||||
export const boardRouter = createTRPCRouter({
|
export const boardRouter = createTRPCRouter({
|
||||||
all: protectedProcedure
|
all: protectedProcedure
|
||||||
.meta({
|
.meta({
|
||||||
@@ -85,7 +83,18 @@ export const boardRouter = createTRPCRouter({
|
|||||||
members: z.array(z.string().min(12)).optional(),
|
members: z.array(z.string().min(12)).optional(),
|
||||||
labels: z.array(z.string().min(12)).optional(),
|
labels: z.array(z.string().min(12)).optional(),
|
||||||
lists: z.array(z.string().min(12)).optional(),
|
lists: z.array(z.string().min(12)).optional(),
|
||||||
dueDate: z.array(dueDateFilterSchema).optional(),
|
dueDateFilters: z
|
||||||
|
.array(
|
||||||
|
z.enum([
|
||||||
|
"overdue",
|
||||||
|
"today",
|
||||||
|
"tomorrow",
|
||||||
|
"next-week",
|
||||||
|
"next-month",
|
||||||
|
"no-due-date",
|
||||||
|
]),
|
||||||
|
)
|
||||||
|
.optional(),
|
||||||
type: z.enum(["regular", "template"]).optional(),
|
type: z.enum(["regular", "template"]).optional(),
|
||||||
}),
|
}),
|
||||||
)
|
)
|
||||||
@@ -112,6 +121,11 @@ export const boardRouter = createTRPCRouter({
|
|||||||
|
|
||||||
await assertUserInWorkspace(ctx.db, userId, board.workspaceId);
|
await assertUserInWorkspace(ctx.db, userId, board.workspaceId);
|
||||||
|
|
||||||
|
// Convert semantic string filters to date ranges expected by the repo
|
||||||
|
const dueDateFilters = input.dueDateFilters
|
||||||
|
? convertDueDateFiltersToRanges(input.dueDateFilters)
|
||||||
|
: [];
|
||||||
|
|
||||||
const result = await boardRepo.getByPublicId(
|
const result = await boardRepo.getByPublicId(
|
||||||
ctx.db,
|
ctx.db,
|
||||||
input.boardPublicId,
|
input.boardPublicId,
|
||||||
@@ -119,14 +133,7 @@ export const boardRouter = createTRPCRouter({
|
|||||||
members: input.members ?? [],
|
members: input.members ?? [],
|
||||||
labels: input.labels ?? [],
|
labels: input.labels ?? [],
|
||||||
lists: input.lists ?? [],
|
lists: input.lists ?? [],
|
||||||
dueDate:
|
dueDate: dueDateFilters,
|
||||||
input.dueDate?.map((filter) => ({
|
|
||||||
startDate: filter.startDate
|
|
||||||
? new Date(filter.startDate)
|
|
||||||
: undefined,
|
|
||||||
endDate: filter.endDate ? new Date(filter.endDate) : undefined,
|
|
||||||
hasNoDueDate: filter.hasNoDueDate,
|
|
||||||
})) ?? [],
|
|
||||||
type: input.type,
|
type: input.type,
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
@@ -160,7 +167,18 @@ export const boardRouter = createTRPCRouter({
|
|||||||
members: z.array(z.string().min(12)).optional(),
|
members: z.array(z.string().min(12)).optional(),
|
||||||
labels: z.array(z.string().min(12)).optional(),
|
labels: z.array(z.string().min(12)).optional(),
|
||||||
lists: z.array(z.string().min(12)).optional(),
|
lists: z.array(z.string().min(12)).optional(),
|
||||||
dueDate: z.array(dueDateFilterSchema).optional(),
|
dueDateFilters: z
|
||||||
|
.array(
|
||||||
|
z.enum([
|
||||||
|
"overdue",
|
||||||
|
"today",
|
||||||
|
"tomorrow",
|
||||||
|
"next-week",
|
||||||
|
"next-month",
|
||||||
|
"no-due-date",
|
||||||
|
]),
|
||||||
|
)
|
||||||
|
.optional(),
|
||||||
}),
|
}),
|
||||||
)
|
)
|
||||||
.output(z.custom<Awaited<ReturnType<typeof boardRepo.getBySlug>>>())
|
.output(z.custom<Awaited<ReturnType<typeof boardRepo.getBySlug>>>())
|
||||||
@@ -176,6 +194,11 @@ export const boardRouter = createTRPCRouter({
|
|||||||
code: "NOT_FOUND",
|
code: "NOT_FOUND",
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Convert semantic string filters to date ranges expected by the repo
|
||||||
|
const dueDateFilters = input.dueDateFilters
|
||||||
|
? convertDueDateFiltersToRanges(input.dueDateFilters)
|
||||||
|
: [];
|
||||||
|
|
||||||
const result = await boardRepo.getBySlug(
|
const result = await boardRepo.getBySlug(
|
||||||
ctx.db,
|
ctx.db,
|
||||||
input.boardSlug,
|
input.boardSlug,
|
||||||
@@ -184,14 +207,7 @@ export const boardRouter = createTRPCRouter({
|
|||||||
members: input.members ?? [],
|
members: input.members ?? [],
|
||||||
labels: input.labels ?? [],
|
labels: input.labels ?? [],
|
||||||
lists: input.lists ?? [],
|
lists: input.lists ?? [],
|
||||||
dueDate:
|
dueDate: dueDateFilters,
|
||||||
input.dueDate?.map((filter) => ({
|
|
||||||
startDate: filter.startDate
|
|
||||||
? new Date(filter.startDate)
|
|
||||||
: undefined,
|
|
||||||
endDate: filter.endDate ? new Date(filter.endDate) : undefined,
|
|
||||||
hasNoDueDate: filter.hasNoDueDate,
|
|
||||||
})) ?? [],
|
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -306,12 +322,6 @@ export const boardRouter = createTRPCRouter({
|
|||||||
sourceBoardId: sourceBoardInfo.id,
|
sourceBoardId: sourceBoardInfo.id,
|
||||||
});
|
});
|
||||||
|
|
||||||
if (!result)
|
|
||||||
throw new TRPCError({
|
|
||||||
message: `Failed to create board from source`,
|
|
||||||
code: "INTERNAL_SERVER_ERROR",
|
|
||||||
});
|
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ import * as listRepo from "@kan/db/repository/list.repo";
|
|||||||
import * as workspaceRepo from "@kan/db/repository/workspace.repo";
|
import * as workspaceRepo from "@kan/db/repository/workspace.repo";
|
||||||
|
|
||||||
import { createTRPCRouter, protectedProcedure, publicProcedure } from "../trpc";
|
import { createTRPCRouter, protectedProcedure, publicProcedure } from "../trpc";
|
||||||
|
import { mergeActivities } from "../utils/activities";
|
||||||
import { assertUserInWorkspace } from "../utils/auth";
|
import { assertUserInWorkspace } from "../utils/auth";
|
||||||
import { generateDownloadUrl } from "../utils/s3";
|
import { generateDownloadUrl } from "../utils/s3";
|
||||||
|
|
||||||
@@ -26,7 +27,7 @@ export const cardRouter = createTRPCRouter({
|
|||||||
})
|
})
|
||||||
.input(
|
.input(
|
||||||
z.object({
|
z.object({
|
||||||
title: z.string().min(1),
|
title: z.string().min(1).max(2000),
|
||||||
description: z.string().max(10000),
|
description: z.string().max(10000),
|
||||||
listPublicId: z.string().min(12),
|
listPublicId: z.string().min(12),
|
||||||
labelPublicIds: z.array(z.string().min(12)),
|
labelPublicIds: z.array(z.string().min(12)),
|
||||||
@@ -670,6 +671,81 @@ export const cardRouter = createTRPCRouter({
|
|||||||
|
|
||||||
return { ...result, attachments: [] };
|
return { ...result, attachments: [] };
|
||||||
}),
|
}),
|
||||||
|
getActivities: publicProcedure
|
||||||
|
.meta({
|
||||||
|
openapi: {
|
||||||
|
summary: "Get paginated card activities",
|
||||||
|
method: "GET",
|
||||||
|
path: "/cards/{cardPublicId}/activities",
|
||||||
|
description:
|
||||||
|
"Retrieves paginated activities for a card with merged frequent changes",
|
||||||
|
tags: ["Cards"],
|
||||||
|
},
|
||||||
|
})
|
||||||
|
.input(
|
||||||
|
z.object({
|
||||||
|
cardPublicId: z.string().min(12),
|
||||||
|
limit: z.number().min(1).max(100).optional().default(10),
|
||||||
|
cursor: z.string().datetime().optional(), // ISO datetime string
|
||||||
|
}),
|
||||||
|
)
|
||||||
|
.output(
|
||||||
|
z.object({
|
||||||
|
activities: z.array(
|
||||||
|
z.custom<
|
||||||
|
NonNullable<
|
||||||
|
Awaited<
|
||||||
|
ReturnType<typeof cardActivityRepo.getPaginatedActivities>
|
||||||
|
>
|
||||||
|
>["activities"][number]
|
||||||
|
>(),
|
||||||
|
),
|
||||||
|
hasMore: z.boolean(),
|
||||||
|
nextCursor: z.string().datetime().nullable(),
|
||||||
|
}),
|
||||||
|
)
|
||||||
|
.query(async ({ ctx, input }) => {
|
||||||
|
const card = await cardRepo.getWorkspaceAndCardIdByCardPublicId(
|
||||||
|
ctx.db,
|
||||||
|
input.cardPublicId,
|
||||||
|
);
|
||||||
|
|
||||||
|
if (!card)
|
||||||
|
throw new TRPCError({
|
||||||
|
message: `Card with public ID ${input.cardPublicId} not found`,
|
||||||
|
code: "NOT_FOUND",
|
||||||
|
});
|
||||||
|
|
||||||
|
if (card.workspaceVisibility === "private") {
|
||||||
|
const userId = ctx.user?.id;
|
||||||
|
|
||||||
|
if (!userId)
|
||||||
|
throw new TRPCError({
|
||||||
|
message: `User not authenticated`,
|
||||||
|
code: "UNAUTHORIZED",
|
||||||
|
});
|
||||||
|
|
||||||
|
await assertUserInWorkspace(ctx.db, userId, card.workspaceId);
|
||||||
|
}
|
||||||
|
|
||||||
|
const cursor = input.cursor ? new Date(input.cursor) : undefined;
|
||||||
|
const result = await cardActivityRepo.getPaginatedActivities(
|
||||||
|
ctx.db,
|
||||||
|
card.id,
|
||||||
|
{
|
||||||
|
limit: input.limit,
|
||||||
|
cursor,
|
||||||
|
},
|
||||||
|
);
|
||||||
|
|
||||||
|
const mergedActivities = mergeActivities(result.activities);
|
||||||
|
|
||||||
|
return {
|
||||||
|
activities: mergedActivities,
|
||||||
|
hasMore: result.hasMore,
|
||||||
|
nextCursor: result.nextCursor?.toISOString() ?? null,
|
||||||
|
};
|
||||||
|
}),
|
||||||
update: protectedProcedure
|
update: protectedProcedure
|
||||||
.meta({
|
.meta({
|
||||||
openapi: {
|
openapi: {
|
||||||
@@ -684,7 +760,7 @@ export const cardRouter = createTRPCRouter({
|
|||||||
.input(
|
.input(
|
||||||
z.object({
|
z.object({
|
||||||
cardPublicId: z.string().min(12),
|
cardPublicId: z.string().min(12),
|
||||||
title: z.string().min(1).optional(),
|
title: z.string().min(1).max(2000).optional(),
|
||||||
description: z.string().optional(),
|
description: z.string().optional(),
|
||||||
index: z.number().optional(),
|
index: z.number().optional(),
|
||||||
listPublicId: z.string().min(12).optional(),
|
listPublicId: z.string().min(12).optional(),
|
||||||
|
|||||||
@@ -269,7 +269,7 @@ export const checklistRouter = createTRPCRouter({
|
|||||||
.meta({
|
.meta({
|
||||||
openapi: {
|
openapi: {
|
||||||
summary: "Update a checklist item",
|
summary: "Update a checklist item",
|
||||||
method: "PUT",
|
method: "PATCH",
|
||||||
path: "/checklists/items/{checklistItemPublicId}",
|
path: "/checklists/items/{checklistItemPublicId}",
|
||||||
description: "Updates a checklist item (title/completed)",
|
description: "Updates a checklist item (title/completed)",
|
||||||
tags: ["Cards"],
|
tags: ["Cards"],
|
||||||
@@ -281,6 +281,7 @@ export const checklistRouter = createTRPCRouter({
|
|||||||
checklistItemPublicId: z.string().length(12),
|
checklistItemPublicId: z.string().length(12),
|
||||||
title: z.string().min(1).max(500).optional(),
|
title: z.string().min(1).max(500).optional(),
|
||||||
completed: z.boolean().optional(),
|
completed: z.boolean().optional(),
|
||||||
|
index: z.number().int().min(0).optional(),
|
||||||
}),
|
}),
|
||||||
)
|
)
|
||||||
.output(checklistItemSchema)
|
.output(checklistItemSchema)
|
||||||
@@ -312,17 +313,30 @@ export const checklistRouter = createTRPCRouter({
|
|||||||
|
|
||||||
const previousTitle = item.title;
|
const previousTitle = item.title;
|
||||||
|
|
||||||
const updated = await checklistRepo.updateItemById(ctx.db, {
|
let updatedItem;
|
||||||
id: item.id,
|
|
||||||
title: input.title,
|
if (input.title !== undefined || input.completed !== undefined) {
|
||||||
completed: input.completed,
|
updatedItem = await checklistRepo.updateItemById(ctx.db, {
|
||||||
});
|
id: item.id,
|
||||||
|
title: input.title,
|
||||||
|
completed: input.completed,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
if (input.index !== undefined) {
|
||||||
|
updatedItem = await checklistRepo.reorderItem(ctx.db, {
|
||||||
|
itemId: item.id,
|
||||||
|
newIndex: input.index,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!updatedItem) {
|
||||||
|
throw new TRPCError({
|
||||||
|
message: `Failed to update checklist item`,
|
||||||
|
code: "INTERNAL_SERVER_ERROR",
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
if (!updated)
|
|
||||||
throw new TRPCError({
|
|
||||||
message: `Failed to update checklist item`,
|
|
||||||
code: "INTERNAL_SERVER_ERROR",
|
|
||||||
});
|
|
||||||
|
|
||||||
// Log completion toggle
|
// Log completion toggle
|
||||||
if (input.completed !== undefined) {
|
if (input.completed !== undefined) {
|
||||||
@@ -331,7 +345,7 @@ export const checklistRouter = createTRPCRouter({
|
|||||||
? "card.updated.checklist.item.completed"
|
? "card.updated.checklist.item.completed"
|
||||||
: "card.updated.checklist.item.uncompleted",
|
: "card.updated.checklist.item.uncompleted",
|
||||||
cardId: item.checklist.cardId,
|
cardId: item.checklist.cardId,
|
||||||
toTitle: updated.title,
|
toTitle: updatedItem.title,
|
||||||
createdBy: userId,
|
createdBy: userId,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -342,12 +356,13 @@ export const checklistRouter = createTRPCRouter({
|
|||||||
type: "card.updated.checklist.item.updated",
|
type: "card.updated.checklist.item.updated",
|
||||||
cardId: item.checklist.cardId,
|
cardId: item.checklist.cardId,
|
||||||
fromTitle: previousTitle,
|
fromTitle: previousTitle,
|
||||||
toTitle: updated.title,
|
toTitle: updatedItem.title,
|
||||||
createdBy: userId,
|
createdBy: userId,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
return updated;
|
return updatedItem;
|
||||||
|
|
||||||
}),
|
}),
|
||||||
deleteItem: protectedProcedure
|
deleteItem: protectedProcedure
|
||||||
.meta({
|
.meta({
|
||||||
|
|||||||
203
packages/api/src/routers/health.ts
Normal file
@@ -0,0 +1,203 @@
|
|||||||
|
import { HeadBucketCommand } from "@aws-sdk/client-s3";
|
||||||
|
import { TRPCError } from "@trpc/server";
|
||||||
|
import { sql } from "drizzle-orm";
|
||||||
|
import { env } from "next-runtime-env";
|
||||||
|
import { z } from "zod";
|
||||||
|
|
||||||
|
import type { dbClient } from "@kan/db/client";
|
||||||
|
import * as boardRepo from "@kan/db/repository/board.repo";
|
||||||
|
import * as cardRepo from "@kan/db/repository/card.repo";
|
||||||
|
import * as cardActivityRepo from "@kan/db/repository/cardActivity.repo";
|
||||||
|
import * as cardAttachmentRepo from "@kan/db/repository/cardAttachment.repo";
|
||||||
|
import * as cardCommentRepo from "@kan/db/repository/cardComment.repo";
|
||||||
|
import * as checklistRepo from "@kan/db/repository/checklist.repo";
|
||||||
|
import * as importRepo from "@kan/db/repository/import.repo";
|
||||||
|
import * as inviteLinkRepo from "@kan/db/repository/inviteLink.repo";
|
||||||
|
import * as labelRepo from "@kan/db/repository/label.repo";
|
||||||
|
import * as listRepo from "@kan/db/repository/list.repo";
|
||||||
|
import * as memberRepo from "@kan/db/repository/member.repo";
|
||||||
|
import * as userRepo from "@kan/db/repository/user.repo";
|
||||||
|
import * as workspaceRepo from "@kan/db/repository/workspace.repo";
|
||||||
|
|
||||||
|
import {
|
||||||
|
adminProtectedProcedure,
|
||||||
|
createTRPCRouter,
|
||||||
|
publicProcedure,
|
||||||
|
} from "../trpc";
|
||||||
|
import { createS3Client } from "../utils/s3";
|
||||||
|
|
||||||
|
const checkDatabaseConnection = async (db: dbClient) => {
|
||||||
|
try {
|
||||||
|
await db.execute(sql`SELECT 1`);
|
||||||
|
return true;
|
||||||
|
} catch {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const checkS3Connection = async () => {
|
||||||
|
try {
|
||||||
|
// Check if S3 is configured
|
||||||
|
if (
|
||||||
|
!process.env.S3_ENDPOINT ||
|
||||||
|
!process.env.S3_ACCESS_KEY_ID ||
|
||||||
|
!process.env.S3_SECRET_ACCESS_KEY
|
||||||
|
) {
|
||||||
|
// S3 is optional, so return true if not configured
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
const client = createS3Client();
|
||||||
|
const avatarBucketName = env("NEXT_PUBLIC_AVATAR_BUCKET_NAME");
|
||||||
|
const attachmentsBucketName = env("NEXT_PUBLIC_ATTACHMENTS_BUCKET_NAME");
|
||||||
|
|
||||||
|
await client.send(new HeadBucketCommand({ Bucket: avatarBucketName }));
|
||||||
|
await client.send(new HeadBucketCommand({ Bucket: attachmentsBucketName }));
|
||||||
|
|
||||||
|
return true;
|
||||||
|
} catch (error) {
|
||||||
|
console.error(error);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
export const healthRouter = createTRPCRouter({
|
||||||
|
health: publicProcedure
|
||||||
|
.meta({
|
||||||
|
openapi: {
|
||||||
|
method: "GET",
|
||||||
|
path: "/health",
|
||||||
|
summary: "Health check",
|
||||||
|
description:
|
||||||
|
"Returns the health status of the application and its dependencies",
|
||||||
|
tags: ["Health"],
|
||||||
|
protect: false,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
.input(z.void())
|
||||||
|
.output(
|
||||||
|
z.object({
|
||||||
|
status: z.enum(["ok", "error"]),
|
||||||
|
database: z.enum(["ok", "error"]).optional(),
|
||||||
|
storage: z.enum(["ok", "error", "not_configured"]).optional(),
|
||||||
|
}),
|
||||||
|
)
|
||||||
|
.query(async ({ ctx }) => {
|
||||||
|
const dbHealthy = await checkDatabaseConnection(ctx.db);
|
||||||
|
const s3Healthy = await checkS3Connection();
|
||||||
|
const s3Configured = !!(
|
||||||
|
process.env.S3_ENDPOINT &&
|
||||||
|
process.env.S3_ACCESS_KEY_ID &&
|
||||||
|
process.env.S3_SECRET_ACCESS_KEY
|
||||||
|
);
|
||||||
|
|
||||||
|
const database = dbHealthy ? "ok" : "error";
|
||||||
|
const storage = !s3Configured
|
||||||
|
? "not_configured"
|
||||||
|
: s3Healthy
|
||||||
|
? "ok"
|
||||||
|
: "error";
|
||||||
|
|
||||||
|
// Overall status is "ok" only if database is healthy and (storage is not configured or storage is healthy)
|
||||||
|
const status = dbHealthy && (!s3Configured || s3Healthy) ? "ok" : "error";
|
||||||
|
|
||||||
|
return {
|
||||||
|
status,
|
||||||
|
database,
|
||||||
|
storage,
|
||||||
|
};
|
||||||
|
}),
|
||||||
|
stats: adminProtectedProcedure
|
||||||
|
.meta({
|
||||||
|
openapi: {
|
||||||
|
method: "GET",
|
||||||
|
path: "/stats",
|
||||||
|
summary: "Get statistics",
|
||||||
|
description:
|
||||||
|
"Returns statistics about the application (workspaces, users, cards, etc.)",
|
||||||
|
tags: ["Health"],
|
||||||
|
protect: true,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
.input(z.void())
|
||||||
|
.output(
|
||||||
|
z.object({
|
||||||
|
users: z.number(),
|
||||||
|
workspaces: z.number(),
|
||||||
|
boards: z.number(),
|
||||||
|
lists: z.number(),
|
||||||
|
cards: z.number(),
|
||||||
|
cardComments: z.number(),
|
||||||
|
cardAttachments: z.number(),
|
||||||
|
cardActivityLogs: z.number(),
|
||||||
|
labels: z.number(),
|
||||||
|
checklists: z.number(),
|
||||||
|
checklistItems: z.number(),
|
||||||
|
activeMembers: z.number(),
|
||||||
|
activeInviteLinks: z.number(),
|
||||||
|
imports: z.number(),
|
||||||
|
}),
|
||||||
|
)
|
||||||
|
.query(async ({ ctx }) => {
|
||||||
|
try {
|
||||||
|
// Execute all count queries in parallel
|
||||||
|
const [
|
||||||
|
usersCount,
|
||||||
|
workspacesCount,
|
||||||
|
boardsCount,
|
||||||
|
listsCount,
|
||||||
|
cardsCount,
|
||||||
|
cardCommentsCount,
|
||||||
|
checklistItemsCount,
|
||||||
|
checklistsCount,
|
||||||
|
labelsCount,
|
||||||
|
cardAttachmentsCount,
|
||||||
|
cardActivitiesCount,
|
||||||
|
activeMembersCount,
|
||||||
|
activeInviteLinksCount,
|
||||||
|
importsCount,
|
||||||
|
cardActivityLogsCount,
|
||||||
|
] = await Promise.all([
|
||||||
|
userRepo.getCount(ctx.db),
|
||||||
|
workspaceRepo.getCount(ctx.db),
|
||||||
|
boardRepo.getCount(ctx.db),
|
||||||
|
listRepo.getCount(ctx.db),
|
||||||
|
cardRepo.getCount(ctx.db),
|
||||||
|
cardCommentRepo.getCount(ctx.db),
|
||||||
|
checklistRepo.getCountItems(ctx.db),
|
||||||
|
checklistRepo.getCount(ctx.db),
|
||||||
|
labelRepo.getCount(ctx.db),
|
||||||
|
cardAttachmentRepo.getCount(ctx.db),
|
||||||
|
cardActivityRepo.getCount(ctx.db),
|
||||||
|
memberRepo.getActiveCount(ctx.db),
|
||||||
|
inviteLinkRepo.getActiveCount(ctx.db),
|
||||||
|
importRepo.getCount(ctx.db),
|
||||||
|
memberRepo.getActiveCount(ctx.db),
|
||||||
|
cardActivityRepo.getCount(ctx.db),
|
||||||
|
]);
|
||||||
|
|
||||||
|
return {
|
||||||
|
users: usersCount,
|
||||||
|
workspaces: workspacesCount,
|
||||||
|
boards: boardsCount,
|
||||||
|
lists: listsCount,
|
||||||
|
cards: cardsCount,
|
||||||
|
cardComments: cardCommentsCount,
|
||||||
|
checklistItems: checklistItemsCount,
|
||||||
|
checklists: checklistsCount,
|
||||||
|
labels: labelsCount,
|
||||||
|
cardAttachments: cardAttachmentsCount,
|
||||||
|
cardActivities: cardActivitiesCount,
|
||||||
|
activeMembers: activeMembersCount,
|
||||||
|
activeInviteLinks: activeInviteLinksCount,
|
||||||
|
imports: importsCount,
|
||||||
|
cardActivityLogs: cardActivityLogsCount,
|
||||||
|
};
|
||||||
|
} catch (error) {
|
||||||
|
throw new TRPCError({
|
||||||
|
message: `Failed to retrieve statistics: ${error instanceof Error ? error.message : "Unknown error"}`,
|
||||||
|
code: "INTERNAL_SERVER_ERROR",
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
});
|
||||||
@@ -52,7 +52,7 @@ interface TrelloCheckItem {
|
|||||||
|
|
||||||
interface TrelloCard {
|
interface TrelloCard {
|
||||||
id: string;
|
id: string;
|
||||||
name: string;
|
name: string | null;
|
||||||
desc: string;
|
desc: string;
|
||||||
idList: string;
|
idList: string;
|
||||||
labels: TrelloLabel[];
|
labels: TrelloLabel[];
|
||||||
@@ -290,7 +290,7 @@ export const importRouter = createTRPCRouter({
|
|||||||
if (list.cards.length && newListId) {
|
if (list.cards.length && newListId) {
|
||||||
const cardsInsert = list.cards.map((card, index) => ({
|
const cardsInsert = list.cards.map((card, index) => ({
|
||||||
publicId: generateUID(),
|
publicId: generateUID(),
|
||||||
title: card.name,
|
title: (card.name?.trim() ?? "Untitled Card").slice(0, 2000),
|
||||||
description: card.description,
|
description: card.description,
|
||||||
createdBy: userId,
|
createdBy: userId,
|
||||||
listId: newListId,
|
listId: newListId,
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ import type { CreateNextContextOptions } from "@trpc/server/adapters/next";
|
|||||||
import type { NextApiRequest } from "next";
|
import type { NextApiRequest } from "next";
|
||||||
import type { OpenApiMeta } from "trpc-to-openapi";
|
import type { OpenApiMeta } from "trpc-to-openapi";
|
||||||
import { initTRPC, TRPCError } from "@trpc/server";
|
import { initTRPC, TRPCError } from "@trpc/server";
|
||||||
|
import { env } from "next-runtime-env";
|
||||||
import superjson from "superjson";
|
import superjson from "superjson";
|
||||||
import { ZodError } from "zod";
|
import { ZodError } from "zod";
|
||||||
|
|
||||||
@@ -45,6 +46,7 @@ interface CreateContextOptions {
|
|||||||
user: User | null | undefined;
|
user: User | null | undefined;
|
||||||
db: dbClient;
|
db: dbClient;
|
||||||
auth: ReturnType<typeof createAuthWithHeaders>;
|
auth: ReturnType<typeof createAuthWithHeaders>;
|
||||||
|
headers: Headers;
|
||||||
}
|
}
|
||||||
|
|
||||||
export const createInnerTRPCContext = (opts: CreateContextOptions) => {
|
export const createInnerTRPCContext = (opts: CreateContextOptions) => {
|
||||||
@@ -52,6 +54,7 @@ export const createInnerTRPCContext = (opts: CreateContextOptions) => {
|
|||||||
user: opts.user,
|
user: opts.user,
|
||||||
db: opts.db,
|
db: opts.db,
|
||||||
auth: opts.auth,
|
auth: opts.auth,
|
||||||
|
headers: opts.headers,
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -63,7 +66,7 @@ export const createTRPCContext = async ({ req }: CreateNextContextOptions) => {
|
|||||||
|
|
||||||
const session = await auth.api.getSession();
|
const session = await auth.api.getSession();
|
||||||
|
|
||||||
return createInnerTRPCContext({ db, user: session?.user, auth });
|
return createInnerTRPCContext({ db, user: session?.user, auth, headers });
|
||||||
};
|
};
|
||||||
|
|
||||||
export const createNextApiContext = async (req: NextApiRequest) => {
|
export const createNextApiContext = async (req: NextApiRequest) => {
|
||||||
@@ -74,7 +77,7 @@ export const createNextApiContext = async (req: NextApiRequest) => {
|
|||||||
|
|
||||||
const session = await auth.api.getSession();
|
const session = await auth.api.getSession();
|
||||||
|
|
||||||
return createInnerTRPCContext({ db, user: session?.user, auth });
|
return createInnerTRPCContext({ db, user: session?.user, auth, headers });
|
||||||
};
|
};
|
||||||
|
|
||||||
export const createRESTContext = async ({ req }: CreateNextContextOptions) => {
|
export const createRESTContext = async ({ req }: CreateNextContextOptions) => {
|
||||||
@@ -91,7 +94,7 @@ export const createRESTContext = async ({ req }: CreateNextContextOptions) => {
|
|||||||
throw error;
|
throw error;
|
||||||
}
|
}
|
||||||
|
|
||||||
return createInnerTRPCContext({ db, user: session?.user, auth });
|
return createInnerTRPCContext({ db, user: session?.user, auth, headers });
|
||||||
};
|
};
|
||||||
|
|
||||||
const t = initTRPC
|
const t = initTRPC
|
||||||
@@ -129,9 +132,28 @@ const enforceUserIsAuthed = t.middleware(async ({ ctx, next }) => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const enforceUserIsAdmin = t.middleware(async ({ ctx, next }) => {
|
||||||
|
if (ctx.headers.get("x-admin-api-key") !== env("KAN_ADMIN_API_KEY")) {
|
||||||
|
throw new TRPCError({ code: "UNAUTHORIZED" });
|
||||||
|
}
|
||||||
|
|
||||||
|
return next({
|
||||||
|
ctx,
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
export const protectedProcedure = t.procedure.use(enforceUserIsAuthed).meta({
|
export const protectedProcedure = t.procedure.use(enforceUserIsAuthed).meta({
|
||||||
openapi: {
|
openapi: {
|
||||||
method: "GET",
|
method: "GET",
|
||||||
path: "/protected",
|
path: "/protected",
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
export const adminProtectedProcedure = t.procedure
|
||||||
|
.use(enforceUserIsAdmin)
|
||||||
|
.meta({
|
||||||
|
openapi: {
|
||||||
|
method: "GET",
|
||||||
|
path: "/admin/protected",
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ import type { RouterInputs, RouterOutputs } from "../index";
|
|||||||
|
|
||||||
export type GetBoardByIdOutput = RouterOutputs["board"]["byId"];
|
export type GetBoardByIdOutput = RouterOutputs["board"]["byId"];
|
||||||
export type GetCardByIdOutput = RouterOutputs["card"]["byId"];
|
export type GetCardByIdOutput = RouterOutputs["card"]["byId"];
|
||||||
|
export type GetCardActivitiesOutput = RouterOutputs["card"]["getActivities"];
|
||||||
export type UpdateBoardInput = RouterInputs["board"]["update"];
|
export type UpdateBoardInput = RouterInputs["board"]["update"];
|
||||||
export type NewLabelInput = RouterInputs["label"]["create"];
|
export type NewLabelInput = RouterInputs["label"]["create"];
|
||||||
export type NewListInput = RouterInputs["list"]["create"];
|
export type NewListInput = RouterInputs["list"]["create"];
|
||||||
|
|||||||
109
packages/api/src/utils/activities.ts
Normal file
@@ -0,0 +1,109 @@
|
|||||||
|
import type { PaginatedActivitiesResult } from "@kan/db/repository/cardActivity.repo";
|
||||||
|
import type { ActivityType } from "@kan/db/schema";
|
||||||
|
|
||||||
|
type ActivityBase = PaginatedActivitiesResult["activities"][number];
|
||||||
|
|
||||||
|
interface Activity extends ActivityBase {
|
||||||
|
mergeCount?: number; // number of activities merged into this one
|
||||||
|
mergedLabels?: string[]; // list of label names when merging label activities
|
||||||
|
}
|
||||||
|
|
||||||
|
// types that can be merged with simple count
|
||||||
|
const MERGEABLE_COUNT_TYPES: readonly ActivityType[] = [
|
||||||
|
"card.updated.description",
|
||||||
|
];
|
||||||
|
|
||||||
|
// types that merge with a list of items
|
||||||
|
const MERGEABLE_LIST_TYPES: readonly ActivityType[] = [
|
||||||
|
"card.updated.label.added",
|
||||||
|
"card.updated.label.removed",
|
||||||
|
];
|
||||||
|
|
||||||
|
const MERGE_TIME_WINDOW_MS = 5 * 60 * 1000; // 5 minutes window for merging activities
|
||||||
|
|
||||||
|
export function mergeActivities(activities: Activity[]): Activity[] {
|
||||||
|
if (activities.length === 0) return [];
|
||||||
|
|
||||||
|
const merged: Activity[] = [];
|
||||||
|
let i = 0;
|
||||||
|
|
||||||
|
while (i < activities.length) {
|
||||||
|
const current = activities[i];
|
||||||
|
if (!current) {
|
||||||
|
i++;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
const currentType = current.type;
|
||||||
|
|
||||||
|
const isCountMergeable = MERGEABLE_COUNT_TYPES.includes(currentType);
|
||||||
|
const isListMergeable = MERGEABLE_LIST_TYPES.includes(currentType);
|
||||||
|
const canMerge = (isCountMergeable || isListMergeable) && current.user?.id;
|
||||||
|
|
||||||
|
if (!canMerge) {
|
||||||
|
merged.push(current);
|
||||||
|
i++;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
const group: Activity[] = [current];
|
||||||
|
let j = i + 1;
|
||||||
|
|
||||||
|
while (j < activities.length) {
|
||||||
|
const next = activities[j];
|
||||||
|
if (!next) break;
|
||||||
|
|
||||||
|
const timeDiff =
|
||||||
|
new Date(next.createdAt).getTime() -
|
||||||
|
new Date(current.createdAt).getTime();
|
||||||
|
|
||||||
|
if (
|
||||||
|
next.type === current.type &&
|
||||||
|
next.user?.id === current.user?.id &&
|
||||||
|
timeDiff >= 0 && // next is newer or same time
|
||||||
|
timeDiff <= MERGE_TIME_WINDOW_MS
|
||||||
|
) {
|
||||||
|
group.push(next);
|
||||||
|
j++;
|
||||||
|
} else {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (group.length > 1) {
|
||||||
|
const oldest = group[0];
|
||||||
|
const latest = group[group.length - 1];
|
||||||
|
|
||||||
|
if (oldest && latest) {
|
||||||
|
if (isListMergeable) {
|
||||||
|
const labelNames = group
|
||||||
|
.map((a) => a.label?.name)
|
||||||
|
.filter((name): name is string => !!name);
|
||||||
|
|
||||||
|
merged.push({
|
||||||
|
...oldest,
|
||||||
|
createdAt: oldest.createdAt,
|
||||||
|
mergeCount: group.length,
|
||||||
|
mergedLabels: labelNames,
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
merged.push({
|
||||||
|
...oldest,
|
||||||
|
createdAt: oldest.createdAt,
|
||||||
|
toDescription: latest.toDescription,
|
||||||
|
fromDescription: oldest.fromDescription,
|
||||||
|
mergeCount: group.length,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
merged.push(current);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
merged.push(current);
|
||||||
|
}
|
||||||
|
|
||||||
|
i = j;
|
||||||
|
}
|
||||||
|
|
||||||
|
return merged;
|
||||||
|
}
|
||||||
@@ -78,8 +78,7 @@ export const configuredProviders = socialProviderList.reduce<
|
|||||||
Object.keys(acc).includes("google") &&
|
Object.keys(acc).includes("google") &&
|
||||||
acc[provider]
|
acc[provider]
|
||||||
) {
|
) {
|
||||||
const allowed = process.env.BETTER_AUTH_ALLOWED_DOMAINS
|
const allowed = process.env.BETTER_AUTH_ALLOWED_DOMAINS?.split(",")
|
||||||
?.split(",")
|
|
||||||
.map((d) => d.trim().toLowerCase())
|
.map((d) => d.trim().toLowerCase())
|
||||||
.filter(Boolean);
|
.filter(Boolean);
|
||||||
if (allowed && allowed.length > 0) {
|
if (allowed && allowed.length > 0) {
|
||||||
@@ -299,9 +298,8 @@ export const initAuth = (db: dbClient) => {
|
|||||||
}),
|
}),
|
||||||
]
|
]
|
||||||
: []),
|
: []),
|
||||||
// @todo: hasing is disabled due to a bug in the api key plugin
|
|
||||||
apiKey({
|
apiKey({
|
||||||
disableKeyHashing: true,
|
enableSessionForAPIKeys: true,
|
||||||
rateLimit: {
|
rateLimit: {
|
||||||
enabled: true,
|
enabled: true,
|
||||||
timeWindow: 1000 * 60, // 1 minute
|
timeWindow: 1000 * 60, // 1 minute
|
||||||
@@ -341,6 +339,37 @@ export const initAuth = (db: dbClient) => {
|
|||||||
discoveryUrl: process.env.OIDC_DISCOVERY_URL,
|
discoveryUrl: process.env.OIDC_DISCOVERY_URL,
|
||||||
scopes: ["openid", "email", "profile"],
|
scopes: ["openid", "email", "profile"],
|
||||||
pkce: true,
|
pkce: true,
|
||||||
|
mapProfileToUser: (profile: {
|
||||||
|
name?: string;
|
||||||
|
display_name?: string;
|
||||||
|
preferred_username?: string;
|
||||||
|
given_name?: string;
|
||||||
|
family_name?: string;
|
||||||
|
email?: string;
|
||||||
|
email_verified?: boolean;
|
||||||
|
sub?: string;
|
||||||
|
picture?: string;
|
||||||
|
avatar?: string;
|
||||||
|
}) => {
|
||||||
|
console.log("OIDC profile:", profile);
|
||||||
|
|
||||||
|
const name =
|
||||||
|
profile.name ??
|
||||||
|
profile.display_name ??
|
||||||
|
profile.preferred_username ??
|
||||||
|
(profile.given_name && profile.family_name
|
||||||
|
? `${profile.given_name} ${profile.family_name}`.trim()
|
||||||
|
: (profile.given_name ?? profile.family_name)) ??
|
||||||
|
profile.sub ??
|
||||||
|
"";
|
||||||
|
|
||||||
|
return {
|
||||||
|
email: profile.email,
|
||||||
|
name: name,
|
||||||
|
emailVerified: profile.email_verified ?? false,
|
||||||
|
image: profile.picture ?? profile.avatar ?? null,
|
||||||
|
};
|
||||||
|
},
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
}),
|
}),
|
||||||
@@ -365,8 +394,7 @@ export const initAuth = (db: dbClient) => {
|
|||||||
// Fall through to any additional checks below
|
// Fall through to any additional checks below
|
||||||
}
|
}
|
||||||
// Enforce allowed domains (OIDC/social) if configured
|
// Enforce allowed domains (OIDC/social) if configured
|
||||||
const allowed = process.env.BETTER_AUTH_ALLOWED_DOMAINS
|
const allowed = process.env.BETTER_AUTH_ALLOWED_DOMAINS?.split(",")
|
||||||
?.split(",")
|
|
||||||
.map((d) => d.trim().toLowerCase())
|
.map((d) => d.trim().toLowerCase())
|
||||||
.filter(Boolean);
|
.filter(Boolean);
|
||||||
if (allowed && allowed.length > 0) {
|
if (allowed && allowed.length > 0) {
|
||||||
|
|||||||
@@ -0,0 +1,3 @@
|
|||||||
|
ALTER TABLE "card_activity" ALTER COLUMN "fromTitle" SET DATA TYPE text;--> statement-breakpoint
|
||||||
|
ALTER TABLE "card_activity" ALTER COLUMN "toTitle" SET DATA TYPE text;--> statement-breakpoint
|
||||||
|
ALTER TABLE "card" ALTER COLUMN "title" SET DATA TYPE text;
|
||||||
2975
packages/db/migrations/meta/20251229220153_snapshot.json
Normal file
@@ -148,6 +148,13 @@
|
|||||||
"when": 1764621815672,
|
"when": 1764621815672,
|
||||||
"tag": "20251201204335_AddCardDueDates",
|
"tag": "20251201204335_AddCardDueDates",
|
||||||
"breakpoints": true
|
"breakpoints": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idx": 21,
|
||||||
|
"version": "7",
|
||||||
|
"when": 1767045713686,
|
||||||
|
"tag": "20251229220153_UpdateCardTitleFromVarcharToText",
|
||||||
|
"breakpoints": true
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -1,6 +1,7 @@
|
|||||||
import {
|
import {
|
||||||
and,
|
and,
|
||||||
asc,
|
asc,
|
||||||
|
count,
|
||||||
desc,
|
desc,
|
||||||
eq,
|
eq,
|
||||||
gte,
|
gte,
|
||||||
@@ -29,6 +30,15 @@ import {
|
|||||||
} from "@kan/db/schema";
|
} from "@kan/db/schema";
|
||||||
import { generateUID } from "@kan/shared/utils";
|
import { generateUID } from "@kan/shared/utils";
|
||||||
|
|
||||||
|
export const getCount = async (db: dbClient) => {
|
||||||
|
const result = await db
|
||||||
|
.select({ count: count() })
|
||||||
|
.from(boards)
|
||||||
|
.where(isNull(boards.deletedAt));
|
||||||
|
|
||||||
|
return result[0]?.count ?? 0;
|
||||||
|
};
|
||||||
|
|
||||||
export const getAllByWorkspaceId = (
|
export const getAllByWorkspaceId = (
|
||||||
db: dbClient,
|
db: dbClient,
|
||||||
workspaceId: number,
|
workspaceId: number,
|
||||||
|
|||||||
@@ -1,4 +1,14 @@
|
|||||||
import { and, asc, desc, eq, gt, inArray, isNull, sql } from "drizzle-orm";
|
import {
|
||||||
|
and,
|
||||||
|
asc,
|
||||||
|
count,
|
||||||
|
desc,
|
||||||
|
eq,
|
||||||
|
gt,
|
||||||
|
inArray,
|
||||||
|
isNull,
|
||||||
|
sql,
|
||||||
|
} from "drizzle-orm";
|
||||||
|
|
||||||
import type { dbClient } from "@kan/db/client";
|
import type { dbClient } from "@kan/db/client";
|
||||||
import {
|
import {
|
||||||
@@ -15,6 +25,15 @@ import {
|
|||||||
} from "@kan/db/schema";
|
} from "@kan/db/schema";
|
||||||
import { generateUID } from "@kan/shared/utils";
|
import { generateUID } from "@kan/shared/utils";
|
||||||
|
|
||||||
|
export const getCount = async (db: dbClient) => {
|
||||||
|
const result = await db
|
||||||
|
.select({ count: count() })
|
||||||
|
.from(cards)
|
||||||
|
.where(isNull(cards.deletedAt));
|
||||||
|
|
||||||
|
return result[0]?.count ?? 0;
|
||||||
|
};
|
||||||
|
|
||||||
export const create = async (
|
export const create = async (
|
||||||
db: dbClient,
|
db: dbClient,
|
||||||
cardInput: {
|
cardInput: {
|
||||||
|
|||||||
@@ -1,8 +1,16 @@
|
|||||||
|
import { and, asc, count, eq, gt, inArray, isNull, or } from "drizzle-orm";
|
||||||
|
|
||||||
import type { dbClient } from "@kan/db/client";
|
import type { dbClient } from "@kan/db/client";
|
||||||
import type { ActivityType } from "@kan/db/schema";
|
import type { ActivityType } from "@kan/db/schema";
|
||||||
import { cardActivities } from "@kan/db/schema";
|
import { cardActivities, comments } from "@kan/db/schema";
|
||||||
import { generateUID } from "@kan/shared/utils";
|
import { generateUID } from "@kan/shared/utils";
|
||||||
|
|
||||||
|
export const getCount = async (db: dbClient) => {
|
||||||
|
const result = await db.select({ count: count() }).from(cardActivities);
|
||||||
|
|
||||||
|
return result[0]?.count ?? 0;
|
||||||
|
};
|
||||||
|
|
||||||
export const create = async (
|
export const create = async (
|
||||||
db: dbClient,
|
db: dbClient,
|
||||||
activityInput: {
|
activityInput: {
|
||||||
@@ -89,3 +97,114 @@ export const bulkCreate = async (
|
|||||||
|
|
||||||
return results;
|
return results;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export const getPaginatedActivities = async (
|
||||||
|
db: dbClient,
|
||||||
|
cardId: number,
|
||||||
|
options?: {
|
||||||
|
limit?: number;
|
||||||
|
cursor?: Date; // createdAt cursor for pagination
|
||||||
|
},
|
||||||
|
) => {
|
||||||
|
const limit = options?.limit ?? 20;
|
||||||
|
const cursor = options?.cursor;
|
||||||
|
|
||||||
|
const validComments = await db
|
||||||
|
.select({ id: comments.id })
|
||||||
|
.from(comments)
|
||||||
|
.where(and(eq(comments.cardId, cardId), isNull(comments.deletedAt)));
|
||||||
|
|
||||||
|
const validCommentIds = validComments.map((comment) => comment.id);
|
||||||
|
|
||||||
|
const activities = await db.query.cardActivities.findMany({
|
||||||
|
columns: {
|
||||||
|
publicId: true,
|
||||||
|
type: true,
|
||||||
|
createdAt: true,
|
||||||
|
fromIndex: true,
|
||||||
|
toIndex: true,
|
||||||
|
fromTitle: true,
|
||||||
|
toTitle: true,
|
||||||
|
fromDescription: true,
|
||||||
|
toDescription: true,
|
||||||
|
fromDueDate: true,
|
||||||
|
toDueDate: true,
|
||||||
|
},
|
||||||
|
where: and(
|
||||||
|
eq(cardActivities.cardId, cardId),
|
||||||
|
cursor ? gt(cardActivities.createdAt, cursor) : undefined,
|
||||||
|
or(
|
||||||
|
isNull(cardActivities.commentId),
|
||||||
|
inArray(cardActivities.commentId, validCommentIds),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
with: {
|
||||||
|
fromList: {
|
||||||
|
columns: {
|
||||||
|
publicId: true,
|
||||||
|
name: true,
|
||||||
|
index: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
toList: {
|
||||||
|
columns: {
|
||||||
|
publicId: true,
|
||||||
|
name: true,
|
||||||
|
index: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
label: {
|
||||||
|
columns: {
|
||||||
|
publicId: true,
|
||||||
|
name: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
member: {
|
||||||
|
columns: {
|
||||||
|
publicId: true,
|
||||||
|
},
|
||||||
|
with: {
|
||||||
|
user: {
|
||||||
|
columns: {
|
||||||
|
id: true,
|
||||||
|
name: true,
|
||||||
|
email: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
user: {
|
||||||
|
columns: {
|
||||||
|
id: true,
|
||||||
|
name: true,
|
||||||
|
email: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
comment: {
|
||||||
|
columns: {
|
||||||
|
publicId: true,
|
||||||
|
comment: true,
|
||||||
|
createdBy: true,
|
||||||
|
updatedAt: true,
|
||||||
|
deletedAt: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
orderBy: asc(cardActivities.createdAt), // required for merging and pagination
|
||||||
|
limit: limit + 1, // fetch one extra to check if there are more
|
||||||
|
});
|
||||||
|
|
||||||
|
const hasMore = activities.length > limit;
|
||||||
|
const items = activities.slice(0, limit);
|
||||||
|
const nextCursor = hasMore ? items[items.length - 1]?.createdAt : undefined;
|
||||||
|
|
||||||
|
return {
|
||||||
|
activities: items,
|
||||||
|
hasMore,
|
||||||
|
nextCursor,
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
export type PaginatedActivitiesResult = Awaited<
|
||||||
|
ReturnType<typeof getPaginatedActivities>
|
||||||
|
>;
|
||||||
|
|||||||
@@ -1,9 +1,18 @@
|
|||||||
import { and, eq, isNull } from "drizzle-orm";
|
import { and, count, eq, isNull } from "drizzle-orm";
|
||||||
|
|
||||||
import type { dbClient } from "@kan/db/client";
|
import type { dbClient } from "@kan/db/client";
|
||||||
import { cardAttachments } from "@kan/db/schema";
|
import { cardAttachments } from "@kan/db/schema";
|
||||||
import { generateUID } from "@kan/shared/utils";
|
import { generateUID } from "@kan/shared/utils";
|
||||||
|
|
||||||
|
export const getCount = async (db: dbClient) => {
|
||||||
|
const result = await db
|
||||||
|
.select({ count: count() })
|
||||||
|
.from(cardAttachments)
|
||||||
|
.where(isNull(cardAttachments.deletedAt));
|
||||||
|
|
||||||
|
return result[0]?.count ?? 0;
|
||||||
|
};
|
||||||
|
|
||||||
export const create = async (
|
export const create = async (
|
||||||
db: dbClient,
|
db: dbClient,
|
||||||
attachmentInput: {
|
attachmentInput: {
|
||||||
|
|||||||
@@ -1,9 +1,18 @@
|
|||||||
import { eq } from "drizzle-orm";
|
import { count, eq, isNull } from "drizzle-orm";
|
||||||
|
|
||||||
import type { dbClient } from "@kan/db/client";
|
import type { dbClient } from "@kan/db/client";
|
||||||
import { comments } from "@kan/db/schema";
|
import { comments } from "@kan/db/schema";
|
||||||
import { generateUID } from "@kan/shared/utils";
|
import { generateUID } from "@kan/shared/utils";
|
||||||
|
|
||||||
|
export const getCount = async (db: dbClient) => {
|
||||||
|
const result = await db
|
||||||
|
.select({ count: count() })
|
||||||
|
.from(comments)
|
||||||
|
.where(isNull(comments.deletedAt));
|
||||||
|
|
||||||
|
return result[0]?.count ?? 0;
|
||||||
|
};
|
||||||
|
|
||||||
export const create = async (
|
export const create = async (
|
||||||
db: dbClient,
|
db: dbClient,
|
||||||
commentInput: {
|
commentInput: {
|
||||||
|
|||||||
@@ -1,9 +1,25 @@
|
|||||||
import { and, desc, eq, isNull } from "drizzle-orm";
|
import { and, count, desc, eq, isNull, sql } from "drizzle-orm";
|
||||||
|
|
||||||
import type { dbClient } from "@kan/db/client";
|
import type { dbClient } from "@kan/db/client";
|
||||||
import { checklistItems, checklists } from "@kan/db/schema";
|
import { checklistItems, checklists } from "@kan/db/schema";
|
||||||
import { generateUID } from "@kan/shared/utils";
|
import { generateUID } from "@kan/shared/utils";
|
||||||
|
|
||||||
|
export const getCount = async (db: dbClient) => {
|
||||||
|
const result = await db
|
||||||
|
.select({ count: count() })
|
||||||
|
.from(checklists)
|
||||||
|
.where(isNull(checklists.deletedAt));
|
||||||
|
return result[0]?.count ?? 0;
|
||||||
|
};
|
||||||
|
|
||||||
|
export const getCountItems = async (db: dbClient) => {
|
||||||
|
const result = await db
|
||||||
|
.select({ count: count() })
|
||||||
|
.from(checklistItems)
|
||||||
|
.where(isNull(checklistItems.deletedAt));
|
||||||
|
return result[0]?.count ?? 0;
|
||||||
|
};
|
||||||
|
|
||||||
export const create = async (
|
export const create = async (
|
||||||
db: dbClient,
|
db: dbClient,
|
||||||
checklistInput: {
|
checklistInput: {
|
||||||
@@ -341,3 +357,88 @@ const groupByKey = <T extends Record<string, unknown>>(
|
|||||||
}
|
}
|
||||||
return grouped;
|
return grouped;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export const reorderItem = async (
|
||||||
|
db: dbClient,
|
||||||
|
args: {
|
||||||
|
itemId: number;
|
||||||
|
newIndex: number;
|
||||||
|
},
|
||||||
|
) => {
|
||||||
|
return db.transaction(async (tx) => {
|
||||||
|
const item = await tx.query.checklistItems.findFirst({
|
||||||
|
columns: {
|
||||||
|
id: true,
|
||||||
|
index: true,
|
||||||
|
checklistId: true,
|
||||||
|
},
|
||||||
|
where: and(
|
||||||
|
eq(checklistItems.id, args.itemId),
|
||||||
|
isNull(checklistItems.deletedAt),
|
||||||
|
),
|
||||||
|
});
|
||||||
|
|
||||||
|
if (!item) {
|
||||||
|
throw new Error(`Checklist item not found for ID ${args.itemId}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
const currentIndex = item.index;
|
||||||
|
const newIndex = args.newIndex;
|
||||||
|
|
||||||
|
if (currentIndex === newIndex) {
|
||||||
|
const unchanged = await tx.query.checklistItems.findFirst({
|
||||||
|
columns: {
|
||||||
|
publicId: true,
|
||||||
|
title: true,
|
||||||
|
completed: true,
|
||||||
|
},
|
||||||
|
where: and(
|
||||||
|
eq(checklistItems.id, args.itemId),
|
||||||
|
isNull(checklistItems.deletedAt),
|
||||||
|
),
|
||||||
|
});
|
||||||
|
|
||||||
|
if (!unchanged) {
|
||||||
|
throw new Error(`Checklist item not found for ID ${args.itemId}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
return unchanged;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (currentIndex < newIndex) {
|
||||||
|
await tx.execute(sql`
|
||||||
|
UPDATE card_checklist_item
|
||||||
|
SET index = index - 1
|
||||||
|
WHERE "checklistId" = ${item.checklistId}
|
||||||
|
AND index > ${currentIndex}
|
||||||
|
AND index <= ${newIndex}
|
||||||
|
AND "deletedAt" IS NULL
|
||||||
|
`);
|
||||||
|
} else {
|
||||||
|
await tx.execute(sql`
|
||||||
|
UPDATE card_checklist_item
|
||||||
|
SET index = index + 1
|
||||||
|
WHERE "checklistId" = ${item.checklistId}
|
||||||
|
AND index >= ${newIndex}
|
||||||
|
AND index < ${currentIndex}
|
||||||
|
AND "deletedAt" IS NULL
|
||||||
|
`);
|
||||||
|
}
|
||||||
|
|
||||||
|
const [updated] = await tx
|
||||||
|
.update(checklistItems)
|
||||||
|
.set({ index: newIndex })
|
||||||
|
.where(eq(checklistItems.id, args.itemId))
|
||||||
|
.returning({
|
||||||
|
publicId: checklistItems.publicId,
|
||||||
|
title: checklistItems.title,
|
||||||
|
completed: checklistItems.completed,
|
||||||
|
});
|
||||||
|
|
||||||
|
if (!updated) {
|
||||||
|
throw new Error(`Failed to update checklist item with ID ${args.itemId}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
return updated;
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|||||||
@@ -1,9 +1,15 @@
|
|||||||
import { eq } from "drizzle-orm";
|
import { count, eq } from "drizzle-orm";
|
||||||
|
|
||||||
import type { dbClient } from "@kan/db/client";
|
import type { dbClient } from "@kan/db/client";
|
||||||
import { imports } from "@kan/db/schema";
|
import { imports } from "@kan/db/schema";
|
||||||
import { generateUID } from "@kan/shared/utils";
|
import { generateUID } from "@kan/shared/utils";
|
||||||
|
|
||||||
|
export const getCount = async (db: dbClient) => {
|
||||||
|
const result = await db.select({ count: count() }).from(imports);
|
||||||
|
|
||||||
|
return result[0]?.count ?? 0;
|
||||||
|
};
|
||||||
|
|
||||||
export const create = async (
|
export const create = async (
|
||||||
db: dbClient,
|
db: dbClient,
|
||||||
importInput: { source: string; createdBy: string },
|
importInput: { source: string; createdBy: string },
|
||||||
|
|||||||
@@ -1,9 +1,18 @@
|
|||||||
import { and, eq, gt } from "drizzle-orm";
|
import { and, count, eq } from "drizzle-orm";
|
||||||
|
|
||||||
import type { dbClient } from "@kan/db/client";
|
import type { dbClient } from "@kan/db/client";
|
||||||
import { workspaceInviteLinks } from "@kan/db/schema";
|
import { workspaceInviteLinks } from "@kan/db/schema";
|
||||||
import { generateUID } from "@kan/shared/utils";
|
import { generateUID } from "@kan/shared/utils";
|
||||||
|
|
||||||
|
export const getActiveCount = async (db: dbClient) => {
|
||||||
|
const result = await db
|
||||||
|
.select({ count: count() })
|
||||||
|
.from(workspaceInviteLinks)
|
||||||
|
.where(eq(workspaceInviteLinks.status, "active"));
|
||||||
|
|
||||||
|
return result[0]?.count ?? 0;
|
||||||
|
};
|
||||||
|
|
||||||
export const createInviteLink = async (
|
export const createInviteLink = async (
|
||||||
db: dbClient,
|
db: dbClient,
|
||||||
args: {
|
args: {
|
||||||
|
|||||||
@@ -1,9 +1,18 @@
|
|||||||
import { and, eq, inArray, isNull } from "drizzle-orm";
|
import { and, count, eq, inArray, isNull } from "drizzle-orm";
|
||||||
|
|
||||||
import type { dbClient } from "@kan/db/client";
|
import type { dbClient } from "@kan/db/client";
|
||||||
import { cardsToLabels, labels } from "@kan/db/schema";
|
import { cardsToLabels, labels } from "@kan/db/schema";
|
||||||
import { generateUID } from "@kan/shared/utils";
|
import { generateUID } from "@kan/shared/utils";
|
||||||
|
|
||||||
|
export const getCount = async (db: dbClient) => {
|
||||||
|
const result = await db
|
||||||
|
.select({ count: count() })
|
||||||
|
.from(labels)
|
||||||
|
.where(isNull(labels.deletedAt));
|
||||||
|
|
||||||
|
return result[0]?.count ?? 0;
|
||||||
|
};
|
||||||
|
|
||||||
export const create = async (
|
export const create = async (
|
||||||
db: dbClient,
|
db: dbClient,
|
||||||
labelInput: {
|
labelInput: {
|
||||||
|
|||||||
@@ -1,9 +1,18 @@
|
|||||||
import { and, desc, eq, gt, isNull, sql } from "drizzle-orm";
|
import { and, count, desc, eq, gt, isNull, sql } from "drizzle-orm";
|
||||||
|
|
||||||
import type { dbClient } from "@kan/db/client";
|
import type { dbClient } from "@kan/db/client";
|
||||||
import { lists } from "@kan/db/schema";
|
import { lists } from "@kan/db/schema";
|
||||||
import { generateUID } from "@kan/shared/utils";
|
import { generateUID } from "@kan/shared/utils";
|
||||||
|
|
||||||
|
export const getCount = async (db: dbClient) => {
|
||||||
|
const result = await db
|
||||||
|
.select({ count: count() })
|
||||||
|
.from(lists)
|
||||||
|
.where(isNull(lists.deletedAt));
|
||||||
|
|
||||||
|
return result[0]?.count ?? 0;
|
||||||
|
};
|
||||||
|
|
||||||
export const create = async (
|
export const create = async (
|
||||||
db: dbClient,
|
db: dbClient,
|
||||||
listInput: {
|
listInput: {
|
||||||
|
|||||||
@@ -1,10 +1,24 @@
|
|||||||
import { and, eq, isNull } from "drizzle-orm";
|
import { and, count, eq, isNull } from "drizzle-orm";
|
||||||
|
|
||||||
import type { dbClient } from "@kan/db/client";
|
import type { dbClient } from "@kan/db/client";
|
||||||
import type { MemberRole, MemberStatus } from "@kan/db/schema";
|
import type { MemberRole, MemberStatus } from "@kan/db/schema";
|
||||||
import { workspaceMembers } from "@kan/db/schema";
|
import { workspaceMembers } from "@kan/db/schema";
|
||||||
import { generateUID } from "@kan/shared/utils";
|
import { generateUID } from "@kan/shared/utils";
|
||||||
|
|
||||||
|
export const getActiveCount = async (db: dbClient) => {
|
||||||
|
const result = await db
|
||||||
|
.select({ count: count() })
|
||||||
|
.from(workspaceMembers)
|
||||||
|
.where(
|
||||||
|
and(
|
||||||
|
isNull(workspaceMembers.deletedAt),
|
||||||
|
eq(workspaceMembers.status, "active"),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
|
||||||
|
return result[0]?.count ?? 0;
|
||||||
|
};
|
||||||
|
|
||||||
export const create = async (
|
export const create = async (
|
||||||
db: dbClient,
|
db: dbClient,
|
||||||
memberInput: {
|
memberInput: {
|
||||||
|
|||||||
@@ -1,9 +1,15 @@
|
|||||||
import { desc, eq } from "drizzle-orm";
|
import { count, desc, eq } from "drizzle-orm";
|
||||||
import { v4 as uuidv4 } from "uuid";
|
import { v4 as uuidv4 } from "uuid";
|
||||||
|
|
||||||
import type { dbClient } from "@kan/db/client";
|
import type { dbClient } from "@kan/db/client";
|
||||||
import { apikey, users } from "@kan/db/schema";
|
import { apikey, users } from "@kan/db/schema";
|
||||||
|
|
||||||
|
export const getCount = async (db: dbClient) => {
|
||||||
|
const result = await db.select({ count: count() }).from(users);
|
||||||
|
|
||||||
|
return result[0]?.count ?? 0;
|
||||||
|
};
|
||||||
|
|
||||||
export const getById = async (db: dbClient, userId: string) => {
|
export const getById = async (db: dbClient, userId: string) => {
|
||||||
return await db.query.users.findFirst({
|
return await db.query.users.findFirst({
|
||||||
columns: {
|
columns: {
|
||||||
|
|||||||
@@ -1,4 +1,14 @@
|
|||||||
import { and, desc, eq, ilike, inArray, isNull, or, sql } from "drizzle-orm";
|
import {
|
||||||
|
and,
|
||||||
|
count,
|
||||||
|
desc,
|
||||||
|
eq,
|
||||||
|
ilike,
|
||||||
|
inArray,
|
||||||
|
isNull,
|
||||||
|
or,
|
||||||
|
sql,
|
||||||
|
} from "drizzle-orm";
|
||||||
|
|
||||||
import type { dbClient } from "@kan/db/client";
|
import type { dbClient } from "@kan/db/client";
|
||||||
import {
|
import {
|
||||||
@@ -10,6 +20,15 @@ import {
|
|||||||
} from "@kan/db/schema";
|
} from "@kan/db/schema";
|
||||||
import { generateUID } from "@kan/shared/utils";
|
import { generateUID } from "@kan/shared/utils";
|
||||||
|
|
||||||
|
export const getCount = async (db: dbClient) => {
|
||||||
|
const result = await db
|
||||||
|
.select({ count: count() })
|
||||||
|
.from(workspaces)
|
||||||
|
.where(isNull(workspaces.deletedAt));
|
||||||
|
|
||||||
|
return result[0]?.count ?? 0;
|
||||||
|
};
|
||||||
|
|
||||||
export const create = async (
|
export const create = async (
|
||||||
db: dbClient,
|
db: dbClient,
|
||||||
workspaceInput: {
|
workspaceInput: {
|
||||||
|
|||||||
@@ -57,7 +57,7 @@ export const activityTypeEnum = pgEnum("card_activity_type", activityTypes);
|
|||||||
export const cards = pgTable("card", {
|
export const cards = pgTable("card", {
|
||||||
id: bigserial("id", { mode: "number" }).primaryKey(),
|
id: bigserial("id", { mode: "number" }).primaryKey(),
|
||||||
publicId: varchar("publicId", { length: 12 }).notNull().unique(),
|
publicId: varchar("publicId", { length: 12 }).notNull().unique(),
|
||||||
title: varchar("title", { length: 255 }).notNull(),
|
title: text("title").notNull(),
|
||||||
description: text("description"),
|
description: text("description"),
|
||||||
index: integer("index").notNull(),
|
index: integer("index").notNull(),
|
||||||
createdBy: uuid("createdBy").references(() => users.id, {
|
createdBy: uuid("createdBy").references(() => users.id, {
|
||||||
@@ -127,8 +127,8 @@ export const cardActivities = pgTable("card_activity", {
|
|||||||
workspaceMemberId: bigint("workspaceMemberId", {
|
workspaceMemberId: bigint("workspaceMemberId", {
|
||||||
mode: "number",
|
mode: "number",
|
||||||
}).references(() => workspaceMembers.id, { onDelete: "set null" }),
|
}).references(() => workspaceMembers.id, { onDelete: "set null" }),
|
||||||
fromTitle: varchar("fromTitle", { length: 255 }),
|
fromTitle: text("fromTitle"),
|
||||||
toTitle: varchar("toTitle", { length: 255 }),
|
toTitle: text("toTitle"),
|
||||||
fromDescription: text("fromDescription"),
|
fromDescription: text("fromDescription"),
|
||||||
toDescription: text("toDescription"),
|
toDescription: text("toDescription"),
|
||||||
createdBy: uuid("createdBy").references(() => users.id, {
|
createdBy: uuid("createdBy").references(() => users.id, {
|
||||||
|
|||||||
@@ -36,6 +36,7 @@
|
|||||||
},
|
},
|
||||||
"prettier": "@kan/prettier-config",
|
"prettier": "@kan/prettier-config",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"date-fns": "^4.1.0",
|
||||||
"jose": "^6.1.2",
|
"jose": "^6.1.2",
|
||||||
"nanoid": "^5.0.9",
|
"nanoid": "^5.0.9",
|
||||||
"next-runtime-env": "^1.7.2"
|
"next-runtime-env": "^1.7.2"
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { addDays, endOfDay, startOfDay } from "date-fns";
|
import { addDays, endOfDay, startOfDay } from "date-fns";
|
||||||
|
|
||||||
type DueDateFilterKey =
|
export type DueDateFilterKey =
|
||||||
| "overdue"
|
| "overdue"
|
||||||
| "today"
|
| "today"
|
||||||
| "tomorrow"
|
| "tomorrow"
|
||||||
@@ -9,8 +9,8 @@ type DueDateFilterKey =
|
|||||||
| "no-due-date";
|
| "no-due-date";
|
||||||
|
|
||||||
export interface DueDateFilter {
|
export interface DueDateFilter {
|
||||||
startDate?: string;
|
startDate?: Date;
|
||||||
endDate?: string;
|
endDate?: Date;
|
||||||
hasNoDueDate?: boolean;
|
hasNoDueDate?: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -21,35 +21,35 @@ export const convertDueDateFiltersToRanges = (
|
|||||||
|
|
||||||
const today = startOfDay(new Date());
|
const today = startOfDay(new Date());
|
||||||
const tomorrow = addDays(today, 1);
|
const tomorrow = addDays(today, 1);
|
||||||
const nextWeekEnd = addDays(today, 8); // 7 days ahead
|
const nextWeekEnd = addDays(today, 8);
|
||||||
const nextMonthEnd = addDays(today, 31); // 30 days ahead
|
const nextMonthEnd = addDays(today, 31);
|
||||||
|
|
||||||
return filters.map((filter) => {
|
return filters.map((filter) => {
|
||||||
switch (filter) {
|
switch (filter) {
|
||||||
case "overdue":
|
case "overdue":
|
||||||
return {
|
return {
|
||||||
endDate: today.toISOString(),
|
endDate: today,
|
||||||
};
|
};
|
||||||
case "today":
|
case "today":
|
||||||
return {
|
return {
|
||||||
startDate: today.toISOString(),
|
startDate: today,
|
||||||
endDate: endOfDay(today).toISOString(),
|
endDate: endOfDay(today),
|
||||||
};
|
};
|
||||||
case "tomorrow":
|
case "tomorrow":
|
||||||
return {
|
return {
|
||||||
startDate: tomorrow.toISOString(),
|
startDate: tomorrow,
|
||||||
endDate: endOfDay(tomorrow).toISOString(),
|
endDate: endOfDay(tomorrow),
|
||||||
};
|
};
|
||||||
case "next-week": {
|
case "next-week": {
|
||||||
return {
|
return {
|
||||||
startDate: today.toISOString(),
|
startDate: today,
|
||||||
endDate: nextWeekEnd.toISOString(),
|
endDate: nextWeekEnd,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
case "next-month": {
|
case "next-month": {
|
||||||
return {
|
return {
|
||||||
startDate: nextWeekEnd.toISOString(),
|
startDate: nextWeekEnd,
|
||||||
endDate: nextMonthEnd.toISOString(),
|
endDate: nextMonthEnd,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
case "no-due-date":
|
case "no-due-date":
|
||||||
@@ -2,3 +2,4 @@ export * from "./generateUID";
|
|||||||
export * from "./generateSlug";
|
export * from "./generateSlug";
|
||||||
export * from "./subscriptions";
|
export * from "./subscriptions";
|
||||||
export * from "./email";
|
export * from "./email";
|
||||||
|
export * from "./dueDateFilters";
|
||||||
|
|||||||
161
pnpm-lock.yaml
generated
@@ -153,7 +153,7 @@ importers:
|
|||||||
version: 11.5.0(@trpc/server@11.5.0(typescript@5.9.2))(typescript@5.9.2)
|
version: 11.5.0(@trpc/server@11.5.0(typescript@5.9.2))(typescript@5.9.2)
|
||||||
'@trpc/next':
|
'@trpc/next':
|
||||||
specifier: ^11.0.0-rc.660
|
specifier: ^11.0.0-rc.660
|
||||||
version: 11.5.0(@tanstack/react-query@5.85.6(react@18.3.1))(@trpc/client@11.5.0(@trpc/server@11.5.0(typescript@5.9.2))(typescript@5.9.2))(@trpc/react-query@11.5.0(@tanstack/react-query@5.85.6(react@18.3.1))(@trpc/client@11.5.0(@trpc/server@11.5.0(typescript@5.9.2))(typescript@5.9.2))(@trpc/server@11.5.0(typescript@5.9.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2))(@trpc/server@11.5.0(typescript@5.9.2))(next@16.0.8(@babel/core@7.28.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2)
|
version: 11.5.0(@tanstack/react-query@5.85.6(react@18.3.1))(@trpc/client@11.5.0(@trpc/server@11.5.0(typescript@5.9.2))(typescript@5.9.2))(@trpc/react-query@11.5.0(@tanstack/react-query@5.85.6(react@18.3.1))(@trpc/client@11.5.0(@trpc/server@11.5.0(typescript@5.9.2))(typescript@5.9.2))(@trpc/server@11.5.0(typescript@5.9.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2))(@trpc/server@11.5.0(typescript@5.9.2))(next@15.5.9(@babel/core@7.28.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2)
|
||||||
'@trpc/react-query':
|
'@trpc/react-query':
|
||||||
specifier: 'catalog:'
|
specifier: 'catalog:'
|
||||||
version: 11.5.0(@tanstack/react-query@5.85.6(react@18.3.1))(@trpc/client@11.5.0(@trpc/server@11.5.0(typescript@5.9.2))(typescript@5.9.2))(@trpc/server@11.5.0(typescript@5.9.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2)
|
version: 11.5.0(@tanstack/react-query@5.85.6(react@18.3.1))(@trpc/client@11.5.0(@trpc/server@11.5.0(typescript@5.9.2))(typescript@5.9.2))(@trpc/server@11.5.0(typescript@5.9.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2)
|
||||||
@@ -165,13 +165,13 @@ importers:
|
|||||||
version: 4.1.0
|
version: 4.1.0
|
||||||
geist:
|
geist:
|
||||||
specifier: ^1.3.1
|
specifier: ^1.3.1
|
||||||
version: 1.4.2(next@16.0.8(@babel/core@7.28.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))
|
version: 1.4.2(next@15.5.9(@babel/core@7.28.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))
|
||||||
jose:
|
jose:
|
||||||
specifier: ^6.1.2
|
specifier: ^6.1.2
|
||||||
version: 6.1.2
|
version: 6.1.2
|
||||||
next:
|
next:
|
||||||
specifier: ^16.0.8
|
specifier: 15.5.9
|
||||||
version: 16.0.8(@babel/core@7.28.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
version: 15.5.9(@babel/core@7.28.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||||
next-runtime-env:
|
next-runtime-env:
|
||||||
specifier: ^1.7.2
|
specifier: ^1.7.2
|
||||||
version: 1.8.0
|
version: 1.8.0
|
||||||
@@ -180,7 +180,7 @@ importers:
|
|||||||
version: 0.4.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
version: 0.4.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||||
nextjs-cors:
|
nextjs-cors:
|
||||||
specifier: ^2.2.0
|
specifier: ^2.2.0
|
||||||
version: 2.2.0(next@16.0.8(@babel/core@7.28.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))
|
version: 2.2.0(next@15.5.9(@babel/core@7.28.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))
|
||||||
posthog-js:
|
posthog-js:
|
||||||
specifier: ^1.254.0
|
specifier: ^1.254.0
|
||||||
version: 1.261.0
|
version: 1.261.0
|
||||||
@@ -250,7 +250,7 @@ importers:
|
|||||||
version: 5.4.1(typescript@5.9.2)(webpack@5.101.3)
|
version: 5.4.1(typescript@5.9.2)(webpack@5.101.3)
|
||||||
'@lingui/swc-plugin':
|
'@lingui/swc-plugin':
|
||||||
specifier: ^5.5.2
|
specifier: ^5.5.2
|
||||||
version: 5.6.1(@lingui/core@5.4.1(@lingui/babel-plugin-lingui-macro@5.4.1(typescript@5.9.2)))(next@16.0.8(@babel/core@7.28.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))
|
version: 5.6.1(@lingui/core@5.4.1(@lingui/babel-plugin-lingui-macro@5.4.1(typescript@5.9.2)))(next@15.5.9(@babel/core@7.28.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))
|
||||||
'@svgr/webpack':
|
'@svgr/webpack':
|
||||||
specifier: ^8.1.0
|
specifier: ^8.1.0
|
||||||
version: 8.1.0(typescript@5.9.2)
|
version: 8.1.0(typescript@5.9.2)
|
||||||
@@ -471,6 +471,9 @@ importers:
|
|||||||
|
|
||||||
packages/shared:
|
packages/shared:
|
||||||
dependencies:
|
dependencies:
|
||||||
|
date-fns:
|
||||||
|
specifier: ^4.1.0
|
||||||
|
version: 4.1.0
|
||||||
jose:
|
jose:
|
||||||
specifier: ^6.1.2
|
specifier: ^6.1.2
|
||||||
version: 6.1.2
|
version: 6.1.2
|
||||||
@@ -2591,54 +2594,105 @@ packages:
|
|||||||
'@mintlify/models': 0.0.25
|
'@mintlify/models': 0.0.25
|
||||||
openapi-types: 12.x
|
openapi-types: 12.x
|
||||||
|
|
||||||
|
'@next/env@15.5.9':
|
||||||
|
resolution: {integrity: sha512-4GlTZ+EJM7WaW2HEZcyU317tIQDjkQIyENDLxYJfSWlfqguN+dHkZgyQTV/7ykvobU7yEH5gKvreNrH4B6QgIg==}
|
||||||
|
|
||||||
'@next/env@16.0.8':
|
'@next/env@16.0.8':
|
||||||
resolution: {integrity: sha512-xP4WrQZuj9MdmLJy3eWFHepo+R3vznsMSS8Dy3wdA7FKpjCiesQ6DxZvdGziQisj0tEtCgBKJzjcAc4yZOgLEQ==}
|
resolution: {integrity: sha512-xP4WrQZuj9MdmLJy3eWFHepo+R3vznsMSS8Dy3wdA7FKpjCiesQ6DxZvdGziQisj0tEtCgBKJzjcAc4yZOgLEQ==}
|
||||||
|
|
||||||
'@next/eslint-plugin-next@14.2.32':
|
'@next/eslint-plugin-next@14.2.32':
|
||||||
resolution: {integrity: sha512-tyZMX8g4cWg/uPW4NxiJK13t62Pab47SKGJGVZJa6YtFwtfrXovH4j1n9tdpRdXW03PGQBugYEVGM7OhWfytdA==}
|
resolution: {integrity: sha512-tyZMX8g4cWg/uPW4NxiJK13t62Pab47SKGJGVZJa6YtFwtfrXovH4j1n9tdpRdXW03PGQBugYEVGM7OhWfytdA==}
|
||||||
|
|
||||||
|
'@next/swc-darwin-arm64@15.5.7':
|
||||||
|
resolution: {integrity: sha512-IZwtxCEpI91HVU/rAUOOobWSZv4P2DeTtNaCdHqLcTJU4wdNXgAySvKa/qJCgR5m6KI8UsKDXtO2B31jcaw1Yw==}
|
||||||
|
engines: {node: '>= 10'}
|
||||||
|
cpu: [arm64]
|
||||||
|
os: [darwin]
|
||||||
|
|
||||||
'@next/swc-darwin-arm64@16.0.8':
|
'@next/swc-darwin-arm64@16.0.8':
|
||||||
resolution: {integrity: sha512-yjVMvTQN21ZHOclQnhSFbjBTEizle+1uo4NV6L4rtS9WO3nfjaeJYw+H91G+nEf3Ef43TaEZvY5mPWfB/De7tA==}
|
resolution: {integrity: sha512-yjVMvTQN21ZHOclQnhSFbjBTEizle+1uo4NV6L4rtS9WO3nfjaeJYw+H91G+nEf3Ef43TaEZvY5mPWfB/De7tA==}
|
||||||
engines: {node: '>= 10'}
|
engines: {node: '>= 10'}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [darwin]
|
os: [darwin]
|
||||||
|
|
||||||
|
'@next/swc-darwin-x64@15.5.7':
|
||||||
|
resolution: {integrity: sha512-UP6CaDBcqaCBuiq/gfCEJw7sPEoX1aIjZHnBWN9v9qYHQdMKvCKcAVs4OX1vIjeE+tC5EIuwDTVIoXpUes29lg==}
|
||||||
|
engines: {node: '>= 10'}
|
||||||
|
cpu: [x64]
|
||||||
|
os: [darwin]
|
||||||
|
|
||||||
'@next/swc-darwin-x64@16.0.8':
|
'@next/swc-darwin-x64@16.0.8':
|
||||||
resolution: {integrity: sha512-+zu2N3QQ0ZOb6RyqQKfcu/pn0UPGmg+mUDqpAAEviAcEVEYgDckemOpiMRsBP3IsEKpcoKuNzekDcPczEeEIzA==}
|
resolution: {integrity: sha512-+zu2N3QQ0ZOb6RyqQKfcu/pn0UPGmg+mUDqpAAEviAcEVEYgDckemOpiMRsBP3IsEKpcoKuNzekDcPczEeEIzA==}
|
||||||
engines: {node: '>= 10'}
|
engines: {node: '>= 10'}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [darwin]
|
os: [darwin]
|
||||||
|
|
||||||
|
'@next/swc-linux-arm64-gnu@15.5.7':
|
||||||
|
resolution: {integrity: sha512-NCslw3GrNIw7OgmRBxHtdWFQYhexoUCq+0oS2ccjyYLtcn1SzGzeM54jpTFonIMUjNbHmpKpziXnpxhSWLcmBA==}
|
||||||
|
engines: {node: '>= 10'}
|
||||||
|
cpu: [arm64]
|
||||||
|
os: [linux]
|
||||||
|
|
||||||
'@next/swc-linux-arm64-gnu@16.0.8':
|
'@next/swc-linux-arm64-gnu@16.0.8':
|
||||||
resolution: {integrity: sha512-LConttk+BeD0e6RG0jGEP9GfvdaBVMYsLJ5aDDweKiJVVCu6sGvo+Ohz9nQhvj7EQDVVRJMCGhl19DmJwGr6bQ==}
|
resolution: {integrity: sha512-LConttk+BeD0e6RG0jGEP9GfvdaBVMYsLJ5aDDweKiJVVCu6sGvo+Ohz9nQhvj7EQDVVRJMCGhl19DmJwGr6bQ==}
|
||||||
engines: {node: '>= 10'}
|
engines: {node: '>= 10'}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
|
||||||
|
'@next/swc-linux-arm64-musl@15.5.7':
|
||||||
|
resolution: {integrity: sha512-nfymt+SE5cvtTrG9u1wdoxBr9bVB7mtKTcj0ltRn6gkP/2Nu1zM5ei8rwP9qKQP0Y//umK+TtkKgNtfboBxRrw==}
|
||||||
|
engines: {node: '>= 10'}
|
||||||
|
cpu: [arm64]
|
||||||
|
os: [linux]
|
||||||
|
|
||||||
'@next/swc-linux-arm64-musl@16.0.8':
|
'@next/swc-linux-arm64-musl@16.0.8':
|
||||||
resolution: {integrity: sha512-JaXFAlqn8fJV+GhhA9lpg6da/NCN/v9ub98n3HoayoUSPOVdoxEEt86iT58jXqQCs/R3dv5ZnxGkW8aF4obMrQ==}
|
resolution: {integrity: sha512-JaXFAlqn8fJV+GhhA9lpg6da/NCN/v9ub98n3HoayoUSPOVdoxEEt86iT58jXqQCs/R3dv5ZnxGkW8aF4obMrQ==}
|
||||||
engines: {node: '>= 10'}
|
engines: {node: '>= 10'}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
|
||||||
|
'@next/swc-linux-x64-gnu@15.5.7':
|
||||||
|
resolution: {integrity: sha512-hvXcZvCaaEbCZcVzcY7E1uXN9xWZfFvkNHwbe/n4OkRhFWrs1J1QV+4U1BN06tXLdaS4DazEGXwgqnu/VMcmqw==}
|
||||||
|
engines: {node: '>= 10'}
|
||||||
|
cpu: [x64]
|
||||||
|
os: [linux]
|
||||||
|
|
||||||
'@next/swc-linux-x64-gnu@16.0.8':
|
'@next/swc-linux-x64-gnu@16.0.8':
|
||||||
resolution: {integrity: sha512-O7M9it6HyNhsJp3HNAsJoHk5BUsfj7hRshfptpGcVsPZ1u0KQ/oVy8oxF7tlwxA5tR43VUP0yRmAGm1us514ng==}
|
resolution: {integrity: sha512-O7M9it6HyNhsJp3HNAsJoHk5BUsfj7hRshfptpGcVsPZ1u0KQ/oVy8oxF7tlwxA5tR43VUP0yRmAGm1us514ng==}
|
||||||
engines: {node: '>= 10'}
|
engines: {node: '>= 10'}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
|
||||||
|
'@next/swc-linux-x64-musl@15.5.7':
|
||||||
|
resolution: {integrity: sha512-4IUO539b8FmF0odY6/SqANJdgwn1xs1GkPO5doZugwZ3ETF6JUdckk7RGmsfSf7ws8Qb2YB5It33mvNL/0acqA==}
|
||||||
|
engines: {node: '>= 10'}
|
||||||
|
cpu: [x64]
|
||||||
|
os: [linux]
|
||||||
|
|
||||||
'@next/swc-linux-x64-musl@16.0.8':
|
'@next/swc-linux-x64-musl@16.0.8':
|
||||||
resolution: {integrity: sha512-8+KClEC/GLI2dLYcrWwHu5JyC5cZYCFnccVIvmxpo6K+XQt4qzqM5L4coofNDZYkct/VCCyJWGbZZDsg6w6LFA==}
|
resolution: {integrity: sha512-8+KClEC/GLI2dLYcrWwHu5JyC5cZYCFnccVIvmxpo6K+XQt4qzqM5L4coofNDZYkct/VCCyJWGbZZDsg6w6LFA==}
|
||||||
engines: {node: '>= 10'}
|
engines: {node: '>= 10'}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
|
||||||
|
'@next/swc-win32-arm64-msvc@15.5.7':
|
||||||
|
resolution: {integrity: sha512-CpJVTkYI3ZajQkC5vajM7/ApKJUOlm6uP4BknM3XKvJ7VXAvCqSjSLmM0LKdYzn6nBJVSjdclx8nYJSa3xlTgQ==}
|
||||||
|
engines: {node: '>= 10'}
|
||||||
|
cpu: [arm64]
|
||||||
|
os: [win32]
|
||||||
|
|
||||||
'@next/swc-win32-arm64-msvc@16.0.8':
|
'@next/swc-win32-arm64-msvc@16.0.8':
|
||||||
resolution: {integrity: sha512-rpQ/PgTEgH68SiXmhu/cJ2hk9aZ6YgFvspzQWe2I9HufY6g7V02DXRr/xrVqOaKm2lenBFPNQ+KAaeveywqV+A==}
|
resolution: {integrity: sha512-rpQ/PgTEgH68SiXmhu/cJ2hk9aZ6YgFvspzQWe2I9HufY6g7V02DXRr/xrVqOaKm2lenBFPNQ+KAaeveywqV+A==}
|
||||||
engines: {node: '>= 10'}
|
engines: {node: '>= 10'}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [win32]
|
os: [win32]
|
||||||
|
|
||||||
|
'@next/swc-win32-x64-msvc@15.5.7':
|
||||||
|
resolution: {integrity: sha512-gMzgBX164I6DN+9/PGA+9dQiwmTkE4TloBNx8Kv9UiGARsr9Nba7IpcBRA1iTV9vwlYnrE3Uy6I7Aj6qLjQuqw==}
|
||||||
|
engines: {node: '>= 10'}
|
||||||
|
cpu: [x64]
|
||||||
|
os: [win32]
|
||||||
|
|
||||||
'@next/swc-win32-x64-msvc@16.0.8':
|
'@next/swc-win32-x64-msvc@16.0.8':
|
||||||
resolution: {integrity: sha512-jWpWjWcMQu2iZz4pEK2IktcfR+OA9+cCG8zenyLpcW8rN4rzjfOzH4yj/b1FiEAZHKS+5Vq8+bZyHi+2yqHbFA==}
|
resolution: {integrity: sha512-jWpWjWcMQu2iZz4pEK2IktcfR+OA9+cCG8zenyLpcW8rN4rzjfOzH4yj/b1FiEAZHKS+5Vq8+bZyHi+2yqHbFA==}
|
||||||
engines: {node: '>= 10'}
|
engines: {node: '>= 10'}
|
||||||
@@ -6202,9 +6256,31 @@ packages:
|
|||||||
react: ^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc
|
react: ^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc
|
||||||
react-dom: ^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc
|
react-dom: ^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc
|
||||||
|
|
||||||
|
next@15.5.9:
|
||||||
|
resolution: {integrity: sha512-agNLK89seZEtC5zUHwtut0+tNrc0Xw4FT/Dg+B/VLEo9pAcS9rtTKpek3V6kVcVwsB2YlqMaHdfZL4eLEVYuCg==}
|
||||||
|
engines: {node: ^18.18.0 || ^19.8.0 || >= 20.0.0}
|
||||||
|
hasBin: true
|
||||||
|
peerDependencies:
|
||||||
|
'@opentelemetry/api': ^1.1.0
|
||||||
|
'@playwright/test': ^1.51.1
|
||||||
|
babel-plugin-react-compiler: '*'
|
||||||
|
react: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0
|
||||||
|
react-dom: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0
|
||||||
|
sass: ^1.3.0
|
||||||
|
peerDependenciesMeta:
|
||||||
|
'@opentelemetry/api':
|
||||||
|
optional: true
|
||||||
|
'@playwright/test':
|
||||||
|
optional: true
|
||||||
|
babel-plugin-react-compiler:
|
||||||
|
optional: true
|
||||||
|
sass:
|
||||||
|
optional: true
|
||||||
|
|
||||||
next@16.0.8:
|
next@16.0.8:
|
||||||
resolution: {integrity: sha512-LmcZzG04JuzNXi48s5P+TnJBsTGPJunViNKV/iE4uM6kstjTQsQhvsAv+xF6MJxU2Pr26tl15eVbp0jQnsv6/g==}
|
resolution: {integrity: sha512-LmcZzG04JuzNXi48s5P+TnJBsTGPJunViNKV/iE4uM6kstjTQsQhvsAv+xF6MJxU2Pr26tl15eVbp0jQnsv6/g==}
|
||||||
engines: {node: '>=20.9.0'}
|
engines: {node: '>=20.9.0'}
|
||||||
|
deprecated: This version has a security vulnerability. Please upgrade to a patched version. See https://nextjs.org/blog/security-update-2025-12-11 for more details.
|
||||||
hasBin: true
|
hasBin: true
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
'@opentelemetry/api': ^1.1.0
|
'@opentelemetry/api': ^1.1.0
|
||||||
@@ -10071,11 +10147,11 @@ snapshots:
|
|||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
'@lingui/babel-plugin-lingui-macro': 5.4.1(typescript@5.9.2)
|
'@lingui/babel-plugin-lingui-macro': 5.4.1(typescript@5.9.2)
|
||||||
|
|
||||||
'@lingui/swc-plugin@5.6.1(@lingui/core@5.4.1(@lingui/babel-plugin-lingui-macro@5.4.1(typescript@5.9.2)))(next@16.0.8(@babel/core@7.28.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))':
|
'@lingui/swc-plugin@5.6.1(@lingui/core@5.4.1(@lingui/babel-plugin-lingui-macro@5.4.1(typescript@5.9.2)))(next@15.5.9(@babel/core@7.28.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@lingui/core': 5.4.1(@lingui/babel-plugin-lingui-macro@5.4.1(typescript@5.9.2))
|
'@lingui/core': 5.4.1(@lingui/babel-plugin-lingui-macro@5.4.1(typescript@5.9.2))
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
next: 16.0.8(@babel/core@7.28.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
next: 15.5.9(@babel/core@7.28.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||||
|
|
||||||
'@messageformat/parser@5.1.1':
|
'@messageformat/parser@5.1.1':
|
||||||
dependencies:
|
dependencies:
|
||||||
@@ -10185,33 +10261,60 @@ snapshots:
|
|||||||
zod: 3.25.76
|
zod: 3.25.76
|
||||||
zod-to-json-schema: 3.24.6(zod@3.25.76)
|
zod-to-json-schema: 3.24.6(zod@3.25.76)
|
||||||
|
|
||||||
'@next/env@16.0.8': {}
|
'@next/env@15.5.9': {}
|
||||||
|
|
||||||
|
'@next/env@16.0.8':
|
||||||
|
optional: true
|
||||||
|
|
||||||
'@next/eslint-plugin-next@14.2.32':
|
'@next/eslint-plugin-next@14.2.32':
|
||||||
dependencies:
|
dependencies:
|
||||||
glob: 10.3.10
|
glob: 10.3.10
|
||||||
|
|
||||||
|
'@next/swc-darwin-arm64@15.5.7':
|
||||||
|
optional: true
|
||||||
|
|
||||||
'@next/swc-darwin-arm64@16.0.8':
|
'@next/swc-darwin-arm64@16.0.8':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
|
'@next/swc-darwin-x64@15.5.7':
|
||||||
|
optional: true
|
||||||
|
|
||||||
'@next/swc-darwin-x64@16.0.8':
|
'@next/swc-darwin-x64@16.0.8':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
|
'@next/swc-linux-arm64-gnu@15.5.7':
|
||||||
|
optional: true
|
||||||
|
|
||||||
'@next/swc-linux-arm64-gnu@16.0.8':
|
'@next/swc-linux-arm64-gnu@16.0.8':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
|
'@next/swc-linux-arm64-musl@15.5.7':
|
||||||
|
optional: true
|
||||||
|
|
||||||
'@next/swc-linux-arm64-musl@16.0.8':
|
'@next/swc-linux-arm64-musl@16.0.8':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
|
'@next/swc-linux-x64-gnu@15.5.7':
|
||||||
|
optional: true
|
||||||
|
|
||||||
'@next/swc-linux-x64-gnu@16.0.8':
|
'@next/swc-linux-x64-gnu@16.0.8':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
|
'@next/swc-linux-x64-musl@15.5.7':
|
||||||
|
optional: true
|
||||||
|
|
||||||
'@next/swc-linux-x64-musl@16.0.8':
|
'@next/swc-linux-x64-musl@16.0.8':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
|
'@next/swc-win32-arm64-msvc@15.5.7':
|
||||||
|
optional: true
|
||||||
|
|
||||||
'@next/swc-win32-arm64-msvc@16.0.8':
|
'@next/swc-win32-arm64-msvc@16.0.8':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
|
'@next/swc-win32-x64-msvc@15.5.7':
|
||||||
|
optional: true
|
||||||
|
|
||||||
'@next/swc-win32-x64-msvc@16.0.8':
|
'@next/swc-win32-x64-msvc@16.0.8':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
@@ -11175,11 +11278,11 @@ snapshots:
|
|||||||
'@trpc/server': 11.5.0(typescript@5.9.2)
|
'@trpc/server': 11.5.0(typescript@5.9.2)
|
||||||
typescript: 5.9.2
|
typescript: 5.9.2
|
||||||
|
|
||||||
'@trpc/next@11.5.0(@tanstack/react-query@5.85.6(react@18.3.1))(@trpc/client@11.5.0(@trpc/server@11.5.0(typescript@5.9.2))(typescript@5.9.2))(@trpc/react-query@11.5.0(@tanstack/react-query@5.85.6(react@18.3.1))(@trpc/client@11.5.0(@trpc/server@11.5.0(typescript@5.9.2))(typescript@5.9.2))(@trpc/server@11.5.0(typescript@5.9.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2))(@trpc/server@11.5.0(typescript@5.9.2))(next@16.0.8(@babel/core@7.28.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2)':
|
'@trpc/next@11.5.0(@tanstack/react-query@5.85.6(react@18.3.1))(@trpc/client@11.5.0(@trpc/server@11.5.0(typescript@5.9.2))(typescript@5.9.2))(@trpc/react-query@11.5.0(@tanstack/react-query@5.85.6(react@18.3.1))(@trpc/client@11.5.0(@trpc/server@11.5.0(typescript@5.9.2))(typescript@5.9.2))(@trpc/server@11.5.0(typescript@5.9.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2))(@trpc/server@11.5.0(typescript@5.9.2))(next@15.5.9(@babel/core@7.28.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.2)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@trpc/client': 11.5.0(@trpc/server@11.5.0(typescript@5.9.2))(typescript@5.9.2)
|
'@trpc/client': 11.5.0(@trpc/server@11.5.0(typescript@5.9.2))(typescript@5.9.2)
|
||||||
'@trpc/server': 11.5.0(typescript@5.9.2)
|
'@trpc/server': 11.5.0(typescript@5.9.2)
|
||||||
next: 16.0.8(@babel/core@7.28.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
next: 15.5.9(@babel/core@7.28.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||||
react: 18.3.1
|
react: 18.3.1
|
||||||
react-dom: 18.3.1(react@18.3.1)
|
react-dom: 18.3.1(react@18.3.1)
|
||||||
typescript: 5.9.2
|
typescript: 5.9.2
|
||||||
@@ -11845,7 +11948,7 @@ snapshots:
|
|||||||
nanostores: 1.1.0
|
nanostores: 1.1.0
|
||||||
zod: 4.1.13
|
zod: 4.1.13
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
next: 16.0.8(@babel/core@7.28.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
next: 16.0.8(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||||
react: 18.3.1
|
react: 18.3.1
|
||||||
react-dom: 18.3.1(react@18.3.1)
|
react-dom: 18.3.1(react@18.3.1)
|
||||||
|
|
||||||
@@ -13089,9 +13192,9 @@ snapshots:
|
|||||||
|
|
||||||
gcd@0.0.1: {}
|
gcd@0.0.1: {}
|
||||||
|
|
||||||
geist@1.4.2(next@16.0.8(@babel/core@7.28.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)):
|
geist@1.4.2(next@15.5.9(@babel/core@7.28.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)):
|
||||||
dependencies:
|
dependencies:
|
||||||
next: 16.0.8(@babel/core@7.28.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
next: 15.5.9(@babel/core@7.28.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||||
|
|
||||||
gensync@1.0.0-beta.2: {}
|
gensync@1.0.0-beta.2: {}
|
||||||
|
|
||||||
@@ -14619,7 +14722,30 @@ snapshots:
|
|||||||
react: 18.3.1
|
react: 18.3.1
|
||||||
react-dom: 18.3.1(react@18.3.1)
|
react-dom: 18.3.1(react@18.3.1)
|
||||||
|
|
||||||
next@16.0.8(@babel/core@7.28.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
|
next@15.5.9(@babel/core@7.28.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
|
||||||
|
dependencies:
|
||||||
|
'@next/env': 15.5.9
|
||||||
|
'@swc/helpers': 0.5.15
|
||||||
|
caniuse-lite: 1.0.30001760
|
||||||
|
postcss: 8.4.31
|
||||||
|
react: 18.3.1
|
||||||
|
react-dom: 18.3.1(react@18.3.1)
|
||||||
|
styled-jsx: 5.1.6(@babel/core@7.28.3)(react@18.3.1)
|
||||||
|
optionalDependencies:
|
||||||
|
'@next/swc-darwin-arm64': 15.5.7
|
||||||
|
'@next/swc-darwin-x64': 15.5.7
|
||||||
|
'@next/swc-linux-arm64-gnu': 15.5.7
|
||||||
|
'@next/swc-linux-arm64-musl': 15.5.7
|
||||||
|
'@next/swc-linux-x64-gnu': 15.5.7
|
||||||
|
'@next/swc-linux-x64-musl': 15.5.7
|
||||||
|
'@next/swc-win32-arm64-msvc': 15.5.7
|
||||||
|
'@next/swc-win32-x64-msvc': 15.5.7
|
||||||
|
sharp: 0.34.5
|
||||||
|
transitivePeerDependencies:
|
||||||
|
- '@babel/core'
|
||||||
|
- babel-plugin-macros
|
||||||
|
|
||||||
|
next@16.0.8(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@next/env': 16.0.8
|
'@next/env': 16.0.8
|
||||||
'@swc/helpers': 0.5.15
|
'@swc/helpers': 0.5.15
|
||||||
@@ -14641,11 +14767,12 @@ snapshots:
|
|||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- '@babel/core'
|
- '@babel/core'
|
||||||
- babel-plugin-macros
|
- babel-plugin-macros
|
||||||
|
optional: true
|
||||||
|
|
||||||
nextjs-cors@2.2.0(next@16.0.8(@babel/core@7.28.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)):
|
nextjs-cors@2.2.0(next@15.5.9(@babel/core@7.28.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)):
|
||||||
dependencies:
|
dependencies:
|
||||||
cors: 2.8.5
|
cors: 2.8.5
|
||||||
next: 16.0.8(@babel/core@7.28.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
next: 15.5.9(@babel/core@7.28.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||||
|
|
||||||
no-case@2.3.2:
|
no-case@2.3.2:
|
||||||
dependencies:
|
dependencies:
|
||||||
|
|||||||
@@ -46,6 +46,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"globalEnv": [
|
"globalEnv": [
|
||||||
|
"KAN_ADMIN_API_KEY",
|
||||||
"POSTGRES_URL",
|
"POSTGRES_URL",
|
||||||
"TRELLO_APP_API_KEY",
|
"TRELLO_APP_API_KEY",
|
||||||
"TRELLO_APP_SECRET",
|
"TRELLO_APP_SECRET",
|
||||||
|
|||||||