From 979e3f3e71367cc8e8f32ba0448abf3a297eb6c9 Mon Sep 17 00:00:00 2001 From: David Nguyen Date: Fri, 15 Nov 2024 21:34:39 +0700 Subject: [PATCH 01/12] fix: always allow access to billing (#1476) --- .../billing/billing-portal-button.tsx | 5 +- .../app/(dashboard)/settings/billing/page.tsx | 112 ++++++++++-------- 2 files changed, 66 insertions(+), 51 deletions(-) diff --git a/apps/web/src/app/(dashboard)/settings/billing/billing-portal-button.tsx b/apps/web/src/app/(dashboard)/settings/billing/billing-portal-button.tsx index da230908a..c8ab8c132 100644 --- a/apps/web/src/app/(dashboard)/settings/billing/billing-portal-button.tsx +++ b/apps/web/src/app/(dashboard)/settings/billing/billing-portal-button.tsx @@ -12,9 +12,10 @@ import { createBillingPortal } from './create-billing-portal.action'; export type BillingPortalButtonProps = { buttonProps?: React.ComponentProps; + children?: React.ReactNode; }; -export const BillingPortalButton = ({ buttonProps }: BillingPortalButtonProps) => { +export const BillingPortalButton = ({ buttonProps, children }: BillingPortalButtonProps) => { const { _ } = useLingui(); const { toast } = useToast(); @@ -63,7 +64,7 @@ export const BillingPortalButton = ({ buttonProps }: BillingPortalButtonProps) = onClick={async () => handleFetchPortalUrl()} loading={isFetchingPortalUrl} > - Manage Subscription + {children || Manage Subscription} ); }; diff --git a/apps/web/src/app/(dashboard)/settings/billing/page.tsx b/apps/web/src/app/(dashboard)/settings/billing/page.tsx index e60698818..05be0c6cb 100644 --- a/apps/web/src/app/(dashboard)/settings/billing/page.tsx +++ b/apps/web/src/app/(dashboard)/settings/billing/page.tsx @@ -68,60 +68,74 @@ export default async function BillingSettingsPage() { return (
-

- Billing -

+
+
+

+ Billing +

-
- {isMissingOrInactiveOrFreePlan && ( -

- - You are currently on the Free Plan. - -

- )} - - {/* Todo: Translation */} - {!isMissingOrInactiveOrFreePlan && - match(subscription.status) - .with('ACTIVE', () => ( -

- {subscriptionProduct ? ( - - You are currently subscribed to{' '} - {subscriptionProduct.name} - - ) : ( - You currently have an active plan - )} - - {subscription.periodEnd && ( - - {' '} - which is set to{' '} - {subscription.cancelAtPeriodEnd ? ( - - end on{' '} - {i18n.date(subscription.periodEnd)}. - - ) : ( - - automatically renew on{' '} - {i18n.date(subscription.periodEnd)}. - - )} - - )} -

- )) - .with('PAST_DUE', () => ( +
+ {isMissingOrInactiveOrFreePlan && (

- Your current plan is past due. Please update your payment information. + You are currently on the Free Plan.

- )) - .otherwise(() => null)} + )} + + {/* Todo: Translation */} + {!isMissingOrInactiveOrFreePlan && + match(subscription.status) + .with('ACTIVE', () => ( +

+ {subscriptionProduct ? ( + + You are currently subscribed to{' '} + {subscriptionProduct.name} + + ) : ( + You currently have an active plan + )} + + {subscription.periodEnd && ( + + {' '} + which is set to{' '} + {subscription.cancelAtPeriodEnd ? ( + + end on{' '} + + {i18n.date(subscription.periodEnd)}. + + + ) : ( + + automatically renew on{' '} + + {i18n.date(subscription.periodEnd)}. + + + )} + + )} +

+ )) + .with('PAST_DUE', () => ( +

+ + Your current plan is past due. Please update your payment information. + +

+ )) + .otherwise(() => null)} +
+
+ + {isMissingOrInactiveOrFreePlan && ( + + Manage billing + + )}

From f15f9ecdd1ea4069ef35391d3a28b34a87868b3d Mon Sep 17 00:00:00 2001 From: David Nguyen Date: Fri, 15 Nov 2024 21:47:22 +0700 Subject: [PATCH 02/12] chore: update docs --- packages/api/v1/contract.ts | 3 +++ packages/api/v1/schema.ts | 5 ++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/packages/api/v1/contract.ts b/packages/api/v1/contract.ts index cd90c31c4..c21358c28 100644 --- a/packages/api/v1/contract.ts +++ b/packages/api/v1/contract.ts @@ -168,6 +168,9 @@ export const ApiContractV1 = c.router( 500: ZUnsuccessfulResponseSchema, }, summary: 'Send a document for signing', + // I'm aware this should be in the variable itself, which it is, however it's difficult for users to find in our current UI. + description: + 'Notes\n\n`sendEmail` - Whether to send an email to the recipients asking them to action the document. If you disable this, you will need to manually distribute the document to the recipients using the generated signing links. Defaults to true', }, resendDocument: { diff --git a/packages/api/v1/schema.ts b/packages/api/v1/schema.ts index a4fab1089..87e17ba8b 100644 --- a/packages/api/v1/schema.ts +++ b/packages/api/v1/schema.ts @@ -67,7 +67,10 @@ export type TSuccessfulDocumentResponseSchema = z.infer ({ sendEmail: true }))); From 08a446fefd51a182c329ac125baee005a7ce894c Mon Sep 17 00:00:00 2001 From: Lucas Smith Date: Sat, 16 Nov 2024 09:17:45 +1100 Subject: [PATCH 03/12] feat: support windows for 2fa tokens (#1478) ## Description When using 2fa enabled authentication on direct templates we run into an issue where a 2fa token has been attached to a field but it's submitted at a later point. To better facilitate this we have introduced the ability to have a window of valid tokens. This won't affect other signing methods since tokens are verified immediately after they're entered. ## Related Issue N/A ## Changes Made - Updated our validate2FAToken method to use a window based approach rather than the default verify method. ## Testing Performed - Created a series of tokens and tested upon different intervals and windows to confirm functionality works as expected. --- .../lib/server-only/2fa/verify-2fa-token.ts | 28 +++++++++++++++---- .../document/is-recipient-authorized.ts | 1 + 2 files changed, 24 insertions(+), 5 deletions(-) diff --git a/packages/lib/server-only/2fa/verify-2fa-token.ts b/packages/lib/server-only/2fa/verify-2fa-token.ts index 0e8ec6afc..c5a4c3c95 100644 --- a/packages/lib/server-only/2fa/verify-2fa-token.ts +++ b/packages/lib/server-only/2fa/verify-2fa-token.ts @@ -1,21 +1,25 @@ import { base32 } from '@scure/base'; -import { TOTPController } from 'oslo/otp'; +import { generateHOTP } from 'oslo/otp'; import type { User } from '@documenso/prisma/client'; import { DOCUMENSO_ENCRYPTION_KEY } from '../../constants/crypto'; import { symmetricDecrypt } from '../../universal/crypto'; -const totp = new TOTPController(); - type VerifyTwoFactorAuthenticationTokenOptions = { user: User; totpCode: string; + // The number of windows to look back + window?: number; + // The duration that the token is valid for in seconds + period?: number; }; export const verifyTwoFactorAuthenticationToken = async ({ user, totpCode, + window = 1, + period = 30_000, }: VerifyTwoFactorAuthenticationTokenOptions) => { const key = DOCUMENSO_ENCRYPTION_KEY; @@ -27,7 +31,21 @@ export const verifyTwoFactorAuthenticationToken = async ({ 'utf-8', ); - const isValidToken = await totp.verify(totpCode, base32.decode(secret)); + const decodedSecret = base32.decode(secret); - return isValidToken; + let now = Date.now(); + + for (let i = 0; i < window; i++) { + const counter = Math.floor(now / period); + + const hotp = await generateHOTP(decodedSecret, counter); + + if (totpCode === hotp) { + return true; + } + + now -= period; + } + + return false; }; diff --git a/packages/lib/server-only/document/is-recipient-authorized.ts b/packages/lib/server-only/document/is-recipient-authorized.ts index 151235fe2..e9596211a 100644 --- a/packages/lib/server-only/document/is-recipient-authorized.ts +++ b/packages/lib/server-only/document/is-recipient-authorized.ts @@ -112,6 +112,7 @@ export const isRecipientAuthorized = async ({ return await verifyTwoFactorAuthenticationToken({ user, totpCode: token, + window: 10, // 5 minutes worth of tokens }); }) .exhaustive(); From b0829e6cdf4a912ed487f52985ea7739fa7c31ff Mon Sep 17 00:00:00 2001 From: Mythie Date: Sat, 16 Nov 2024 09:23:05 +1100 Subject: [PATCH 04/12] v1.8.0-rc.3 --- apps/marketing/package.json | 2 +- apps/web/package.json | 2 +- package-lock.json | 8 ++++---- package.json | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/apps/marketing/package.json b/apps/marketing/package.json index ce7cb7365..127b57a71 100644 --- a/apps/marketing/package.json +++ b/apps/marketing/package.json @@ -1,6 +1,6 @@ { "name": "@documenso/marketing", - "version": "1.8.0-rc.2", + "version": "1.8.0-rc.3", "private": true, "license": "AGPL-3.0", "scripts": { diff --git a/apps/web/package.json b/apps/web/package.json index 43882258c..a53ecc72b 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -1,6 +1,6 @@ { "name": "@documenso/web", - "version": "1.8.0-rc.2", + "version": "1.8.0-rc.3", "private": true, "license": "AGPL-3.0", "scripts": { diff --git a/package-lock.json b/package-lock.json index 3630993da..c484c2ebc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@documenso/root", - "version": "1.8.0-rc.2", + "version": "1.8.0-rc.3", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@documenso/root", - "version": "1.8.0-rc.2", + "version": "1.8.0-rc.3", "workspaces": [ "apps/*", "packages/*" @@ -80,7 +80,7 @@ }, "apps/marketing": { "name": "@documenso/marketing", - "version": "1.8.0-rc.2", + "version": "1.8.0-rc.3", "license": "AGPL-3.0", "dependencies": { "@documenso/assets": "*", @@ -441,7 +441,7 @@ }, "apps/web": { "name": "@documenso/web", - "version": "1.8.0-rc.2", + "version": "1.8.0-rc.3", "license": "AGPL-3.0", "dependencies": { "@documenso/api": "*", diff --git a/package.json b/package.json index f7f0398cb..56b8b5fdb 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "private": true, - "version": "1.8.0-rc.2", + "version": "1.8.0-rc.3", "scripts": { "build": "turbo run build", "build:web": "turbo run build --filter=@documenso/web", From 57ad7c150b54aaa69f7420b62f28303248987afe Mon Sep 17 00:00:00 2001 From: Lucas Smith Date: Mon, 18 Nov 2024 08:40:25 +1100 Subject: [PATCH 05/12] chore: add translations (#1474) --- packages/lib/translations/de/common.po | 46 +++++--- packages/lib/translations/de/marketing.po | 3 +- packages/lib/translations/de/web.po | 29 ++--- packages/lib/translations/es/common.po | 46 +++++--- packages/lib/translations/es/marketing.po | 3 +- packages/lib/translations/es/web.po | 29 ++--- packages/lib/translations/fr/common.po | 46 +++++--- packages/lib/translations/fr/marketing.po | 3 +- packages/lib/translations/fr/web.po | 27 ++--- packages/lib/translations/pl/common.po | 125 ++++++++++++++++----- packages/lib/translations/pl/marketing.po | 2 +- packages/lib/translations/pl/web.po | 130 +++++++++++++++------- 12 files changed, 331 insertions(+), 158 deletions(-) diff --git a/packages/lib/translations/de/common.po b/packages/lib/translations/de/common.po index 8c038f400..327cb229d 100644 --- a/packages/lib/translations/de/common.po +++ b/packages/lib/translations/de/common.po @@ -8,7 +8,7 @@ msgstr "" "Language: de\n" "Project-Id-Version: documenso-app\n" "Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2024-11-12 05:45\n" +"PO-Revision-Date: 2024-11-14 12:05\n" "Last-Translator: \n" "Language-Team: German\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" @@ -209,11 +209,11 @@ msgstr "{recipientName} {action} ein Dokument, indem Sie einen Ihrer direkten Li #: packages/email/templates/document-rejected.tsx:27 msgid "{recipientName} has rejected the document '{documentName}'" -msgstr "" +msgstr "{recipientName} hat das Dokument '{documentName}' abgelehnt" #: packages/email/template-components/template-document-rejected.tsx:25 msgid "{signerName} has rejected the document \"{documentName}\"." -msgstr "" +msgstr "{signerName} hat das Dokument \"{documentName}\" abgelehnt." #: packages/email/template-components/template-document-invite.tsx:68 msgid "{teamName} has invited you to {0}" @@ -241,7 +241,7 @@ msgstr "{userName} hat ihre Aufgabe abgeschlossen" #: packages/lib/utils/document-audit-logs.ts:355 msgid "{userName} rejected the document" -msgstr "" +msgstr "{userName} hat das Dokument abgelehnt" #: packages/lib/utils/document-audit-logs.ts:341 msgid "{userName} signed the document" @@ -672,11 +672,11 @@ msgstr "Empfänger des direkten Links" #: packages/lib/jobs/definitions/emails/send-rejection-emails.ts:149 msgid "Document \"{0}\" - Rejected by {1}" -msgstr "" +msgstr "Dokument \"{0}\" - Abgelehnt von {1}" #: packages/lib/jobs/definitions/emails/send-rejection-emails.ts:109 msgid "Document \"{0}\" - Rejection Confirmed" -msgstr "" +msgstr "Dokument \"{0}\" - Ablehnung Bestätigt" #: packages/ui/components/document/document-global-auth-access-select.tsx:62 #: packages/ui/primitives/document-flow/add-settings.tsx:216 @@ -750,7 +750,10 @@ msgstr "E-Mail über ausstehende Dokumente" #: packages/email/template-components/template-document-rejected.tsx:21 msgid "Document Rejected" -msgstr "" +msgstr "Dokument Abgelehnt" + +#~ msgid "Document Rejection Confirmed" +#~ msgstr "Document Rejection Confirmed" #: packages/lib/utils/document-audit-logs.ts:330 msgid "Document sent" @@ -927,6 +930,9 @@ msgstr "Zurück" msgid "Green" msgstr "Grün" +#~ msgid "Hello {recipientName}," +#~ msgstr "Hello {recipientName}," + #: packages/email/templates/reset-password.tsx:56 msgid "Hi, {userName} <0>({userEmail})" msgstr "Hallo, {userName} <0>({userEmail})" @@ -1182,7 +1188,7 @@ msgstr "Nur lesen" #: packages/email/template-components/template-document-rejected.tsx:32 msgid "Reason for rejection: {rejectionReason}" -msgstr "" +msgstr "Grund für die Ablehnung: {rejectionReason}" #: packages/ui/components/recipient/recipient-role-select.tsx:95 msgid "Receives copy" @@ -1218,15 +1224,15 @@ msgstr "Weiterleitungs-URL" #: packages/email/template-components/template-document-invite.tsx:96 msgid "Reject Document" -msgstr "" +msgstr "Dokument Ablehnen" #: packages/email/template-components/template-document-rejection-confirmed.tsx:22 msgid "Rejection Confirmed" -msgstr "" +msgstr "Ablehnung Bestätigt" #: packages/email/template-components/template-document-rejection-confirmed.tsx:34 msgid "Rejection reason: {reason}" -msgstr "" +msgstr "Ablehnungsgrund: {reason}" #: packages/lib/server-only/document/resend-document.tsx:192 msgid "Reminder: {0}" @@ -1473,9 +1479,12 @@ msgstr "Die Authentifizierung, die erforderlich ist, damit Empfänger das Signat msgid "The authentication required for recipients to view the document." msgstr "Die Authentifizierung, die erforderlich ist, damit Empfänger das Dokument anzeigen können." +#~ msgid "The document owner has been notified of this rejection. No further action is required from you at this time." +#~ msgstr "The document owner has been notified of this rejection. No further action is required from you at this time." + #: packages/email/template-components/template-document-rejection-confirmed.tsx:39 msgid "The document owner has been notified of this rejection. No further action is required from you at this time. The document owner may contact you with any questions regarding this rejection." -msgstr "" +msgstr "Der Dokumenteninhaber wurde über diese Ablehnung informiert. Es sind derzeit keine weiteren Maßnahmen von Ihnen erforderlich. Der Dokumenteninhaber kann Sie bei Fragen zu dieser Ablehnung kontaktieren." #: packages/ui/components/document/document-send-email-message-helper.tsx:31 msgid "The document's name" @@ -1557,9 +1566,12 @@ msgstr "Dieses Dokument ist durch ein Passwort geschützt. Bitte geben Sie das P msgid "This document was sent using <0>Documenso." msgstr "Dieses Dokument wurde mit <0>Documenso. gesendet" +#~ msgid "This email confirms that you have rejected the document \"{documentName}\" sent by {documentOwnerName}." +#~ msgstr "This email confirms that you have rejected the document \"{documentName}\" sent by {documentOwnerName}." + #: packages/email/template-components/template-document-rejection-confirmed.tsx:26 msgid "This email confirms that you have rejected the document <0>\"{documentName}\" sent by {documentOwnerName}." -msgstr "" +msgstr "Diese E-Mail bestätigt, dass Sie das Dokument <0>\"{documentName}\" abgelehnt haben, das von {documentOwnerName} gesendet wurde." #: packages/ui/components/document/document-email-checkboxes.tsx:94 msgid "This email is sent to the recipient if they are removed from a pending document." @@ -1738,7 +1750,7 @@ msgstr "Sie können die folgenden Variablen in Ihrer Nachricht verwenden:" #: packages/email/template-components/template-document-rejected.tsx:37 msgid "You can view the document and its status by clicking the button below." -msgstr "" +msgstr "Sie können das Dokument und seinen Status einsehen, indem Sie auf die Schaltfläche unten klicken." #: packages/ui/primitives/document-dropzone.tsx:43 msgid "You cannot upload documents at this time." @@ -1775,7 +1787,10 @@ msgstr "Sie haben Ihr Dokumentenlimit erreicht." #: packages/email/templates/document-rejection-confirmed.tsx:27 msgid "You have rejected the document '{documentName}'" -msgstr "" +msgstr "Sie haben das Dokument '{documentName}' abgelehnt" + +#~ msgid "You have rejected the document \"{documentName}\"" +#~ msgstr "You have rejected the document \"{documentName}\"" #: packages/email/template-components/template-document-self-signed.tsx:42 msgid "You have signed “{documentName}”" @@ -1793,3 +1808,4 @@ msgstr "Dein Passwort wurde aktualisiert." #: packages/email/templates/team-delete.tsx:32 msgid "Your team has been deleted" msgstr "Dein Team wurde gelöscht" + diff --git a/packages/lib/translations/de/marketing.po b/packages/lib/translations/de/marketing.po index 921e62f26..be5e125a9 100644 --- a/packages/lib/translations/de/marketing.po +++ b/packages/lib/translations/de/marketing.po @@ -8,7 +8,7 @@ msgstr "" "Language: de\n" "Project-Id-Version: documenso-app\n" "Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2024-11-12 05:45\n" +"PO-Revision-Date: 2024-11-14 12:05\n" "Last-Translator: \n" "Language-Team: German\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" @@ -602,3 +602,4 @@ msgstr "Sie können Documenso kostenlos selbst hosten oder unsere sofort einsatz #: apps/marketing/src/components/(marketing)/carousel.tsx:272 msgid "Your browser does not support the video tag." msgstr "Ihr Browser unterstützt das Video-Tag nicht." + diff --git a/packages/lib/translations/de/web.po b/packages/lib/translations/de/web.po index 04bd78277..46bfa1baa 100644 --- a/packages/lib/translations/de/web.po +++ b/packages/lib/translations/de/web.po @@ -8,7 +8,7 @@ msgstr "" "Language: de\n" "Project-Id-Version: documenso-app\n" "Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2024-11-12 05:45\n" +"PO-Revision-Date: 2024-11-14 12:05\n" "Last-Translator: \n" "Language-Team: German\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" @@ -38,11 +38,13 @@ msgstr "\"{email}\" im Namen von \"{teamName}\" hat Sie eingeladen, \"Beispieldo #~ msgid "" #~ "\"{placeholderEmail}\" on behalf of \"{0}\" has invited you to sign \"example\n" #~ "document\"." -#~ msgstr "\"{placeholderEmail}\" im Namen von \"{0}\" hat Sie eingeladen, \"Beispieldokument\" zu unterschreiben." +#~ msgstr "" +#~ "\"{placeholderEmail}\" on behalf of \"{0}\" has invited you to sign \"example\n" +#~ "document\"." #: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:209 msgid "\"{placeholderEmail}\" on behalf of \"{0}\" has invited you to sign \"example document\"." -msgstr "" +msgstr "\"{placeholderEmail}\" im Namen von \"{0}\" hat Sie eingeladen, \"Beispieldokument\" zu unterzeichnen." #: apps/web/src/components/(teams)/forms/update-team-form.tsx:241 msgid "\"{teamUrl}\" has invited you to sign \"example document\"." @@ -666,7 +668,7 @@ msgstr "Bist du sicher, dass du dieses Token löschen möchtest?" #: apps/web/src/app/(signing)/sign/[token]/reject-document-dialog.tsx:120 msgid "Are you sure you want to reject this document? This action cannot be undone." -msgstr "" +msgstr "Sind Sie sicher, dass Sie dieses Dokument ablehnen möchten? Diese Aktion kann nicht rückgängig gemacht werden." #: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:188 msgid "Are you sure you want to remove the <0>{passkeyName} passkey." @@ -1522,7 +1524,7 @@ msgstr "Dokument erneut gesendet" #: apps/web/src/app/(signing)/sign/[token]/rejected/page.tsx:83 msgid "Document Rejected" -msgstr "" +msgstr "Dokument abgelehnt" #: apps/web/src/app/(dashboard)/admin/documents/[id]/admin-actions.tsx:36 msgid "Document resealed" @@ -2403,7 +2405,7 @@ msgstr "Keine aktiven Entwürfe" #: apps/web/src/app/(signing)/sign/[token]/rejected/page.tsx:99 msgid "No further action is required from you at this time." -msgstr "" +msgstr "Es sind derzeit keine weiteren Maßnahmen Ihrerseits erforderlich." #: apps/web/src/app/(teams)/t/[teamUrl]/settings/billing/page.tsx:42 msgid "No payment required" @@ -2705,7 +2707,7 @@ msgstr "Bitte beachten Sie, dass Sie den Zugriff auf alle mit diesem Team verbun #: apps/web/src/app/(signing)/sign/[token]/reject-document-dialog.tsx:37 msgid "Please provide a reason" -msgstr "" +msgstr "Bitte geben Sie einen Grund an" #: apps/web/src/components/forms/2fa/disable-authenticator-app-dialog.tsx:127 msgid "Please provide a token from the authenticator, or a backup code. If you do not have a backup code available, please contact support." @@ -2825,11 +2827,11 @@ msgstr "Grund" #: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:146 msgid "Reason for rejection:" -msgstr "" +msgstr "Grund für die Ablehnung:" #: apps/web/src/app/(signing)/sign/[token]/reject-document-dialog.tsx:38 msgid "Reason must be less than 500 characters" -msgstr "" +msgstr "Der Grund muss weniger als 500 Zeichen lang sein" #: apps/web/src/app/(signing)/sign/[token]/document-action-auth-dialog.tsx:62 msgid "Reauthentication is required to sign this field" @@ -2887,12 +2889,12 @@ msgstr "Registrierung erfolgreich" #: apps/web/src/app/(signing)/sign/[token]/reject-document-dialog.tsx:116 #: apps/web/src/app/(signing)/sign/[token]/reject-document-dialog.tsx:162 msgid "Reject Document" -msgstr "" +msgstr "Dokument ablehnen" #: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:141 #: apps/web/src/components/(dashboard)/avatar/stack-avatars-with-tooltip.tsx:101 msgid "Rejected" -msgstr "" +msgstr "Abgelehnt" #: apps/web/src/app/(unauthenticated)/forgot-password/page.tsx:34 msgid "Remembered your password? <0>Sign In" @@ -3681,7 +3683,7 @@ msgstr "Das Dokument ist jetzt abgeschlossen. Bitte folgen Sie allen Anweisungen #: apps/web/src/app/(signing)/sign/[token]/rejected/page.tsx:92 msgid "The document owner has been notified of your decision. They may contact you with further instructions if necessary." -msgstr "" +msgstr "Der Dokumenteneigentümer wurde über Ihre Entscheidung informiert. Er kann Sie bei Bedarf mit weiteren Anweisungen kontaktieren." #: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:182 msgid "The document was created but could not be sent to recipients." @@ -4886,7 +4888,7 @@ msgstr "Sie haben Ihr Dokumentenlimit erreicht. <0>Upgrade your account to conti #: apps/web/src/app/(signing)/sign/[token]/rejected/page.tsx:88 msgid "You have rejected this document" -msgstr "" +msgstr "Sie haben dieses Dokument abgelehnt" #: apps/web/src/components/(teams)/dialogs/leave-team-dialog.tsx:50 msgid "You have successfully left this team." @@ -5115,3 +5117,4 @@ msgstr "Ihr Token wurde erfolgreich erstellt! Stellen Sie sicher, dass Sie es ko #: apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx:86 msgid "Your tokens will be shown here once you create them." msgstr "Ihre Tokens werden hier angezeigt, sobald Sie sie erstellt haben." + diff --git a/packages/lib/translations/es/common.po b/packages/lib/translations/es/common.po index c2b62ca5e..043d97241 100644 --- a/packages/lib/translations/es/common.po +++ b/packages/lib/translations/es/common.po @@ -8,7 +8,7 @@ msgstr "" "Language: es\n" "Project-Id-Version: documenso-app\n" "Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2024-11-12 05:45\n" +"PO-Revision-Date: 2024-11-14 12:05\n" "Last-Translator: \n" "Language-Team: Spanish\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" @@ -209,11 +209,11 @@ msgstr "{recipientName} {action} un documento utilizando uno de tus enlaces dire #: packages/email/templates/document-rejected.tsx:27 msgid "{recipientName} has rejected the document '{documentName}'" -msgstr "" +msgstr "{recipientName} ha rechazado el documento '{documentName}'" #: packages/email/template-components/template-document-rejected.tsx:25 msgid "{signerName} has rejected the document \"{documentName}\"." -msgstr "" +msgstr "{signerName} ha rechazado el documento \"{documentName}\"." #: packages/email/template-components/template-document-invite.tsx:68 msgid "{teamName} has invited you to {0}" @@ -241,7 +241,7 @@ msgstr "{userName} completó su tarea" #: packages/lib/utils/document-audit-logs.ts:355 msgid "{userName} rejected the document" -msgstr "" +msgstr "{userName} rechazó el documento" #: packages/lib/utils/document-audit-logs.ts:341 msgid "{userName} signed the document" @@ -672,11 +672,11 @@ msgstr "Receptor de enlace directo" #: packages/lib/jobs/definitions/emails/send-rejection-emails.ts:149 msgid "Document \"{0}\" - Rejected by {1}" -msgstr "" +msgstr "Documento \"{0}\" - Rechazado por {1}" #: packages/lib/jobs/definitions/emails/send-rejection-emails.ts:109 msgid "Document \"{0}\" - Rejection Confirmed" -msgstr "" +msgstr "Documento \"{0}\" - Rechazo confirmado" #: packages/ui/components/document/document-global-auth-access-select.tsx:62 #: packages/ui/primitives/document-flow/add-settings.tsx:216 @@ -750,7 +750,10 @@ msgstr "Correo electrónico de documento pendiente" #: packages/email/template-components/template-document-rejected.tsx:21 msgid "Document Rejected" -msgstr "" +msgstr "Documento Rechazado" + +#~ msgid "Document Rejection Confirmed" +#~ msgstr "Document Rejection Confirmed" #: packages/lib/utils/document-audit-logs.ts:330 msgid "Document sent" @@ -927,6 +930,9 @@ msgstr "Regresar" msgid "Green" msgstr "Verde" +#~ msgid "Hello {recipientName}," +#~ msgstr "Hello {recipientName}," + #: packages/email/templates/reset-password.tsx:56 msgid "Hi, {userName} <0>({userEmail})" msgstr "Hola, {userName} <0>({userEmail})" @@ -1182,7 +1188,7 @@ msgstr "Solo lectura" #: packages/email/template-components/template-document-rejected.tsx:32 msgid "Reason for rejection: {rejectionReason}" -msgstr "" +msgstr "Razón del rechazo: {rejectionReason}" #: packages/ui/components/recipient/recipient-role-select.tsx:95 msgid "Receives copy" @@ -1218,15 +1224,15 @@ msgstr "URL de redirección" #: packages/email/template-components/template-document-invite.tsx:96 msgid "Reject Document" -msgstr "" +msgstr "Rechazar Documento" #: packages/email/template-components/template-document-rejection-confirmed.tsx:22 msgid "Rejection Confirmed" -msgstr "" +msgstr "Rechazo Confirmado" #: packages/email/template-components/template-document-rejection-confirmed.tsx:34 msgid "Rejection reason: {reason}" -msgstr "" +msgstr "Razón del rechazo: {reason}" #: packages/lib/server-only/document/resend-document.tsx:192 msgid "Reminder: {0}" @@ -1473,9 +1479,12 @@ msgstr "La autenticación requerida para que los destinatarios firmen el campo d msgid "The authentication required for recipients to view the document." msgstr "La autenticación requerida para que los destinatarios vean el documento." +#~ msgid "The document owner has been notified of this rejection. No further action is required from you at this time." +#~ msgstr "The document owner has been notified of this rejection. No further action is required from you at this time." + #: packages/email/template-components/template-document-rejection-confirmed.tsx:39 msgid "The document owner has been notified of this rejection. No further action is required from you at this time. The document owner may contact you with any questions regarding this rejection." -msgstr "" +msgstr "El propietario del documento ha sido notificado de este rechazo. No se requiere ninguna acción adicional de su parte en este momento. El propietario del documento puede contactarlo con cualquier pregunta relacionada con este rechazo." #: packages/ui/components/document/document-send-email-message-helper.tsx:31 msgid "The document's name" @@ -1557,9 +1566,12 @@ msgstr "Este documento está protegido por contraseña. Por favor ingrese la con msgid "This document was sent using <0>Documenso." msgstr "Este documento fue enviado usando <0>Documenso." +#~ msgid "This email confirms that you have rejected the document \"{documentName}\" sent by {documentOwnerName}." +#~ msgstr "This email confirms that you have rejected the document \"{documentName}\" sent by {documentOwnerName}." + #: packages/email/template-components/template-document-rejection-confirmed.tsx:26 msgid "This email confirms that you have rejected the document <0>\"{documentName}\" sent by {documentOwnerName}." -msgstr "" +msgstr "Este correo electrónico confirma que ha rechazado el documento <0>\"{documentName}\" enviado por {documentOwnerName}." #: packages/ui/components/document/document-email-checkboxes.tsx:94 msgid "This email is sent to the recipient if they are removed from a pending document." @@ -1738,7 +1750,7 @@ msgstr "Puede usar las siguientes variables en su mensaje:" #: packages/email/template-components/template-document-rejected.tsx:37 msgid "You can view the document and its status by clicking the button below." -msgstr "" +msgstr "Puede ver el documento y su estado haciendo clic en el botón de abajo." #: packages/ui/primitives/document-dropzone.tsx:43 msgid "You cannot upload documents at this time." @@ -1775,7 +1787,10 @@ msgstr "Ha alcanzado su límite de documentos." #: packages/email/templates/document-rejection-confirmed.tsx:27 msgid "You have rejected the document '{documentName}'" -msgstr "" +msgstr "Ha rechazado el documento '{documentName}'" + +#~ msgid "You have rejected the document \"{documentName}\"" +#~ msgstr "You have rejected the document \"{documentName}\"" #: packages/email/template-components/template-document-self-signed.tsx:42 msgid "You have signed “{documentName}”" @@ -1793,3 +1808,4 @@ msgstr "Tu contraseña ha sido actualizada." #: packages/email/templates/team-delete.tsx:32 msgid "Your team has been deleted" msgstr "Tu equipo ha sido eliminado" + diff --git a/packages/lib/translations/es/marketing.po b/packages/lib/translations/es/marketing.po index 2c4d26002..8057083c5 100644 --- a/packages/lib/translations/es/marketing.po +++ b/packages/lib/translations/es/marketing.po @@ -8,7 +8,7 @@ msgstr "" "Language: es\n" "Project-Id-Version: documenso-app\n" "Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2024-11-12 05:45\n" +"PO-Revision-Date: 2024-11-14 12:05\n" "Last-Translator: \n" "Language-Team: Spanish\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" @@ -602,3 +602,4 @@ msgstr "Puedes autoalojar Documenso de forma gratuita o usar nuestra versión al #: apps/marketing/src/components/(marketing)/carousel.tsx:272 msgid "Your browser does not support the video tag." msgstr "Tu navegador no soporta la etiqueta de video." + diff --git a/packages/lib/translations/es/web.po b/packages/lib/translations/es/web.po index 74af4a986..8f7115374 100644 --- a/packages/lib/translations/es/web.po +++ b/packages/lib/translations/es/web.po @@ -8,7 +8,7 @@ msgstr "" "Language: es\n" "Project-Id-Version: documenso-app\n" "Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2024-11-12 05:45\n" +"PO-Revision-Date: 2024-11-14 12:05\n" "Last-Translator: \n" "Language-Team: Spanish\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" @@ -39,12 +39,12 @@ msgstr "\"{email}\" en nombre de \"{teamName}\" te ha invitado a firmar \"ejempl #~ "\"{placeholderEmail}\" on behalf of \"{0}\" has invited you to sign \"example\n" #~ "document\"." #~ msgstr "" -#~ "\"{placeholderEmail}\" en nombre de \"{0}\" te ha invitado a firmar \"ejemplo\n" -#~ "documento\"." +#~ "\"{placeholderEmail}\" on behalf of \"{0}\" has invited you to sign \"example\n" +#~ "document\"." #: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:209 msgid "\"{placeholderEmail}\" on behalf of \"{0}\" has invited you to sign \"example document\"." -msgstr "" +msgstr "\"{placeholderEmail}\" en nombre de \"{0}\" te ha invitado a firmar \"documento de ejemplo\"." #: apps/web/src/components/(teams)/forms/update-team-form.tsx:241 msgid "\"{teamUrl}\" has invited you to sign \"example document\"." @@ -668,7 +668,7 @@ msgstr "¿Estás seguro de que deseas eliminar este token?" #: apps/web/src/app/(signing)/sign/[token]/reject-document-dialog.tsx:120 msgid "Are you sure you want to reject this document? This action cannot be undone." -msgstr "" +msgstr "Are you sure you want to reject this document? This action cannot be undone." #: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:188 msgid "Are you sure you want to remove the <0>{passkeyName} passkey." @@ -1524,7 +1524,7 @@ msgstr "Documento reenviado" #: apps/web/src/app/(signing)/sign/[token]/rejected/page.tsx:83 msgid "Document Rejected" -msgstr "" +msgstr "Document Rejected" #: apps/web/src/app/(dashboard)/admin/documents/[id]/admin-actions.tsx:36 msgid "Document resealed" @@ -2405,7 +2405,7 @@ msgstr "No hay borradores activos" #: apps/web/src/app/(signing)/sign/[token]/rejected/page.tsx:99 msgid "No further action is required from you at this time." -msgstr "" +msgstr "No further action is required from you at this time." #: apps/web/src/app/(teams)/t/[teamUrl]/settings/billing/page.tsx:42 msgid "No payment required" @@ -2707,7 +2707,7 @@ msgstr "Por favor, ten en cuenta que perderás acceso a todos los documentos aso #: apps/web/src/app/(signing)/sign/[token]/reject-document-dialog.tsx:37 msgid "Please provide a reason" -msgstr "" +msgstr "Please provide a reason" #: apps/web/src/components/forms/2fa/disable-authenticator-app-dialog.tsx:127 msgid "Please provide a token from the authenticator, or a backup code. If you do not have a backup code available, please contact support." @@ -2827,11 +2827,11 @@ msgstr "Razón" #: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:146 msgid "Reason for rejection:" -msgstr "" +msgstr "Reason for rejection:" #: apps/web/src/app/(signing)/sign/[token]/reject-document-dialog.tsx:38 msgid "Reason must be less than 500 characters" -msgstr "" +msgstr "Reason must be less than 500 characters" #: apps/web/src/app/(signing)/sign/[token]/document-action-auth-dialog.tsx:62 msgid "Reauthentication is required to sign this field" @@ -2889,12 +2889,12 @@ msgstr "Registro exitoso" #: apps/web/src/app/(signing)/sign/[token]/reject-document-dialog.tsx:116 #: apps/web/src/app/(signing)/sign/[token]/reject-document-dialog.tsx:162 msgid "Reject Document" -msgstr "" +msgstr "Reject Document" #: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:141 #: apps/web/src/components/(dashboard)/avatar/stack-avatars-with-tooltip.tsx:101 msgid "Rejected" -msgstr "" +msgstr "Rejected" #: apps/web/src/app/(unauthenticated)/forgot-password/page.tsx:34 msgid "Remembered your password? <0>Sign In" @@ -3683,7 +3683,7 @@ msgstr "El documento ahora está completado, por favor sigue cualquier instrucci #: apps/web/src/app/(signing)/sign/[token]/rejected/page.tsx:92 msgid "The document owner has been notified of your decision. They may contact you with further instructions if necessary." -msgstr "" +msgstr "The document owner has been notified of your decision. They may contact you with further instructions if necessary." #: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:182 msgid "The document was created but could not be sent to recipients." @@ -4888,7 +4888,7 @@ msgstr "Has alcanzado tu límite de documentos. <0>¡Actualiza tu cuenta para co #: apps/web/src/app/(signing)/sign/[token]/rejected/page.tsx:88 msgid "You have rejected this document" -msgstr "" +msgstr "You have rejected this document" #: apps/web/src/components/(teams)/dialogs/leave-team-dialog.tsx:50 msgid "You have successfully left this team." @@ -5117,3 +5117,4 @@ msgstr "¡Tu token se creó con éxito! ¡Asegúrate de copiarlo porque no podr #: apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx:86 msgid "Your tokens will be shown here once you create them." msgstr "Tus tokens se mostrarán aquí una vez que los crees." + diff --git a/packages/lib/translations/fr/common.po b/packages/lib/translations/fr/common.po index 9ca3f67c9..bcb217b12 100644 --- a/packages/lib/translations/fr/common.po +++ b/packages/lib/translations/fr/common.po @@ -8,7 +8,7 @@ msgstr "" "Language: fr\n" "Project-Id-Version: documenso-app\n" "Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2024-11-12 05:45\n" +"PO-Revision-Date: 2024-11-14 12:05\n" "Last-Translator: \n" "Language-Team: French\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" @@ -209,11 +209,11 @@ msgstr "{recipientName} {action} un document en utilisant l'un de vos liens dire #: packages/email/templates/document-rejected.tsx:27 msgid "{recipientName} has rejected the document '{documentName}'" -msgstr "" +msgstr "{recipientName} a rejeté le document '{documentName}'" #: packages/email/template-components/template-document-rejected.tsx:25 msgid "{signerName} has rejected the document \"{documentName}\"." -msgstr "" +msgstr "{signerName} a rejeté le document \"{documentName}\"." #: packages/email/template-components/template-document-invite.tsx:68 msgid "{teamName} has invited you to {0}" @@ -241,7 +241,7 @@ msgstr "{userName} a complété sa tâche" #: packages/lib/utils/document-audit-logs.ts:355 msgid "{userName} rejected the document" -msgstr "" +msgstr "{userName} a rejeté le document" #: packages/lib/utils/document-audit-logs.ts:341 msgid "{userName} signed the document" @@ -672,11 +672,11 @@ msgstr "Receveur de lien direct" #: packages/lib/jobs/definitions/emails/send-rejection-emails.ts:149 msgid "Document \"{0}\" - Rejected by {1}" -msgstr "" +msgstr "Document \"{0}\" - Rejeté par {1}" #: packages/lib/jobs/definitions/emails/send-rejection-emails.ts:109 msgid "Document \"{0}\" - Rejection Confirmed" -msgstr "" +msgstr "Document \"{0}\" - Rejet Confirmé" #: packages/ui/components/document/document-global-auth-access-select.tsx:62 #: packages/ui/primitives/document-flow/add-settings.tsx:216 @@ -750,7 +750,10 @@ msgstr "E-mail de document en attente" #: packages/email/template-components/template-document-rejected.tsx:21 msgid "Document Rejected" -msgstr "" +msgstr "Document Rejeté" + +#~ msgid "Document Rejection Confirmed" +#~ msgstr "Document Rejection Confirmed" #: packages/lib/utils/document-audit-logs.ts:330 msgid "Document sent" @@ -927,6 +930,9 @@ msgstr "Retourner" msgid "Green" msgstr "Vert" +#~ msgid "Hello {recipientName}," +#~ msgstr "Hello {recipientName}," + #: packages/email/templates/reset-password.tsx:56 msgid "Hi, {userName} <0>({userEmail})" msgstr "Bonjour, {userName} <0>({userEmail})" @@ -1182,7 +1188,7 @@ msgstr "Lecture seule" #: packages/email/template-components/template-document-rejected.tsx:32 msgid "Reason for rejection: {rejectionReason}" -msgstr "" +msgstr "Raison du rejet : {rejectionReason}" #: packages/ui/components/recipient/recipient-role-select.tsx:95 msgid "Receives copy" @@ -1218,15 +1224,15 @@ msgstr "URL de redirection" #: packages/email/template-components/template-document-invite.tsx:96 msgid "Reject Document" -msgstr "" +msgstr "Rejeter le Document" #: packages/email/template-components/template-document-rejection-confirmed.tsx:22 msgid "Rejection Confirmed" -msgstr "" +msgstr "Rejet Confirmé" #: packages/email/template-components/template-document-rejection-confirmed.tsx:34 msgid "Rejection reason: {reason}" -msgstr "" +msgstr "Motif du rejet : {reason}" #: packages/lib/server-only/document/resend-document.tsx:192 msgid "Reminder: {0}" @@ -1473,9 +1479,12 @@ msgstr "L'authentification requise pour que les destinataires signent le champ d msgid "The authentication required for recipients to view the document." msgstr "L'authentification requise pour que les destinataires visualisent le document." +#~ msgid "The document owner has been notified of this rejection. No further action is required from you at this time." +#~ msgstr "The document owner has been notified of this rejection. No further action is required from you at this time." + #: packages/email/template-components/template-document-rejection-confirmed.tsx:39 msgid "The document owner has been notified of this rejection. No further action is required from you at this time. The document owner may contact you with any questions regarding this rejection." -msgstr "" +msgstr "Le propriétaire du document a été informé de ce rejet. Aucune action supplémentaire n'est requise de votre part pour le moment. Le propriétaire du document peut vous contacter pour toute question concernant ce rejet." #: packages/ui/components/document/document-send-email-message-helper.tsx:31 msgid "The document's name" @@ -1557,9 +1566,12 @@ msgstr "Ce document est protégé par mot de passe. Veuillez entrer le mot de pa msgid "This document was sent using <0>Documenso." msgstr "Ce document a été envoyé via <0>Documenso." +#~ msgid "This email confirms that you have rejected the document \"{documentName}\" sent by {documentOwnerName}." +#~ msgstr "This email confirms that you have rejected the document \"{documentName}\" sent by {documentOwnerName}." + #: packages/email/template-components/template-document-rejection-confirmed.tsx:26 msgid "This email confirms that you have rejected the document <0>\"{documentName}\" sent by {documentOwnerName}." -msgstr "" +msgstr "Cet e-mail confirme que vous avez rejeté le document <0>\"{documentName}\" envoyé par {documentOwnerName}." #: packages/ui/components/document/document-email-checkboxes.tsx:94 msgid "This email is sent to the recipient if they are removed from a pending document." @@ -1738,7 +1750,7 @@ msgstr "Vous pouvez utiliser les variables suivantes dans votre message :" #: packages/email/template-components/template-document-rejected.tsx:37 msgid "You can view the document and its status by clicking the button below." -msgstr "" +msgstr "Vous pouvez voir le document et son statut en cliquant sur le bouton ci-dessous." #: packages/ui/primitives/document-dropzone.tsx:43 msgid "You cannot upload documents at this time." @@ -1775,7 +1787,10 @@ msgstr "Vous avez atteint votre limite de documents." #: packages/email/templates/document-rejection-confirmed.tsx:27 msgid "You have rejected the document '{documentName}'" -msgstr "" +msgstr "Vous avez rejeté le document '{documentName}'" + +#~ msgid "You have rejected the document \"{documentName}\"" +#~ msgstr "You have rejected the document \"{documentName}\"" #: packages/email/template-components/template-document-self-signed.tsx:42 msgid "You have signed “{documentName}”" @@ -1793,3 +1808,4 @@ msgstr "Votre mot de passe a été mis à jour." #: packages/email/templates/team-delete.tsx:32 msgid "Your team has been deleted" msgstr "Votre équipe a été supprimée" + diff --git a/packages/lib/translations/fr/marketing.po b/packages/lib/translations/fr/marketing.po index a5193775f..1f0b041a6 100644 --- a/packages/lib/translations/fr/marketing.po +++ b/packages/lib/translations/fr/marketing.po @@ -8,7 +8,7 @@ msgstr "" "Language: fr\n" "Project-Id-Version: documenso-app\n" "Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2024-11-12 05:45\n" +"PO-Revision-Date: 2024-11-14 12:05\n" "Last-Translator: \n" "Language-Team: French\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" @@ -602,3 +602,4 @@ msgstr "Vous pouvez auto-héberger Documenso gratuitement ou utiliser notre vers #: apps/marketing/src/components/(marketing)/carousel.tsx:272 msgid "Your browser does not support the video tag." msgstr "Votre navigateur ne prend pas en charge la balise vidéo." + diff --git a/packages/lib/translations/fr/web.po b/packages/lib/translations/fr/web.po index 356b56de5..c59be0939 100644 --- a/packages/lib/translations/fr/web.po +++ b/packages/lib/translations/fr/web.po @@ -8,7 +8,7 @@ msgstr "" "Language: fr\n" "Project-Id-Version: documenso-app\n" "Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2024-11-12 05:45\n" +"PO-Revision-Date: 2024-11-14 12:05\n" "Last-Translator: \n" "Language-Team: French\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" @@ -39,12 +39,12 @@ msgstr "\"{email}\" au nom de \"{teamName}\" vous a invité à signer \"example #~ "\"{placeholderEmail}\" on behalf of \"{0}\" has invited you to sign \"example\n" #~ "document\"." #~ msgstr "" -#~ "\"{placeholderEmail}\" au nom de \"{0}\" vous a invité à signer \"example\n" +#~ "\"{placeholderEmail}\" on behalf of \"{0}\" has invited you to sign \"example\n" #~ "document\"." #: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:209 msgid "\"{placeholderEmail}\" on behalf of \"{0}\" has invited you to sign \"example document\"." -msgstr "" +msgstr "\"{placeholderEmail}\" au nom de \"{0}\" vous a invité à signer \"exemple de document\"." #: apps/web/src/components/(teams)/forms/update-team-form.tsx:241 msgid "\"{teamUrl}\" has invited you to sign \"example document\"." @@ -668,7 +668,7 @@ msgstr "Êtes-vous sûr de vouloir supprimer ce jeton ?" #: apps/web/src/app/(signing)/sign/[token]/reject-document-dialog.tsx:120 msgid "Are you sure you want to reject this document? This action cannot be undone." -msgstr "" +msgstr "Êtes-vous sûr de vouloir rejeter ce document ? Cette action ne peut pas être annulée." #: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:188 msgid "Are you sure you want to remove the <0>{passkeyName} passkey." @@ -1524,7 +1524,7 @@ msgstr "Document renvoyé" #: apps/web/src/app/(signing)/sign/[token]/rejected/page.tsx:83 msgid "Document Rejected" -msgstr "" +msgstr "Document rejeté" #: apps/web/src/app/(dashboard)/admin/documents/[id]/admin-actions.tsx:36 msgid "Document resealed" @@ -2405,7 +2405,7 @@ msgstr "Pas de brouillons actifs" #: apps/web/src/app/(signing)/sign/[token]/rejected/page.tsx:99 msgid "No further action is required from you at this time." -msgstr "" +msgstr "Aucune autre action n'est requise de votre part pour le moment." #: apps/web/src/app/(teams)/t/[teamUrl]/settings/billing/page.tsx:42 msgid "No payment required" @@ -2707,7 +2707,7 @@ msgstr "Veuillez noter que vous perdrez l'accès à tous les documents associés #: apps/web/src/app/(signing)/sign/[token]/reject-document-dialog.tsx:37 msgid "Please provide a reason" -msgstr "" +msgstr "Veuillez fournir une raison" #: apps/web/src/components/forms/2fa/disable-authenticator-app-dialog.tsx:127 msgid "Please provide a token from the authenticator, or a backup code. If you do not have a backup code available, please contact support." @@ -2827,11 +2827,11 @@ msgstr "Raison" #: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:146 msgid "Reason for rejection:" -msgstr "" +msgstr "Raison du rejet :" #: apps/web/src/app/(signing)/sign/[token]/reject-document-dialog.tsx:38 msgid "Reason must be less than 500 characters" -msgstr "" +msgstr "La raison doit contenir moins de 500 caractères" #: apps/web/src/app/(signing)/sign/[token]/document-action-auth-dialog.tsx:62 msgid "Reauthentication is required to sign this field" @@ -2889,12 +2889,12 @@ msgstr "Inscription réussie" #: apps/web/src/app/(signing)/sign/[token]/reject-document-dialog.tsx:116 #: apps/web/src/app/(signing)/sign/[token]/reject-document-dialog.tsx:162 msgid "Reject Document" -msgstr "" +msgstr "Rejeter le document" #: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:141 #: apps/web/src/components/(dashboard)/avatar/stack-avatars-with-tooltip.tsx:101 msgid "Rejected" -msgstr "" +msgstr "Rejeté" #: apps/web/src/app/(unauthenticated)/forgot-password/page.tsx:34 msgid "Remembered your password? <0>Sign In" @@ -3683,7 +3683,7 @@ msgstr "Le document est maintenant complet, veuillez suivre toutes les instructi #: apps/web/src/app/(signing)/sign/[token]/rejected/page.tsx:92 msgid "The document owner has been notified of your decision. They may contact you with further instructions if necessary." -msgstr "" +msgstr "Le propriétaire du document a été informé de votre décision. Il peut vous contacter pour des instructions supplémentaires si nécessaire." #: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:182 msgid "The document was created but could not be sent to recipients." @@ -4888,7 +4888,7 @@ msgstr "Vous avez atteint votre limite de documents. <0>Mettez à niveau votre c #: apps/web/src/app/(signing)/sign/[token]/rejected/page.tsx:88 msgid "You have rejected this document" -msgstr "" +msgstr "Vous avez rejeté ce document" #: apps/web/src/components/(teams)/dialogs/leave-team-dialog.tsx:50 msgid "You have successfully left this team." @@ -5117,3 +5117,4 @@ msgstr "Votre jeton a été créé avec succès ! Assurez-vous de le copier car #: apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx:86 msgid "Your tokens will be shown here once you create them." msgstr "Vos jetons seront affichés ici une fois que vous les aurez créés." + diff --git a/packages/lib/translations/pl/common.po b/packages/lib/translations/pl/common.po index a16dc9eb5..54f02c577 100644 --- a/packages/lib/translations/pl/common.po +++ b/packages/lib/translations/pl/common.po @@ -8,7 +8,7 @@ msgstr "" "Language: pl\n" "Project-Id-Version: documenso-app\n" "Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2024-11-12 08:43\n" +"PO-Revision-Date: 2024-11-14 12:05\n" "Last-Translator: \n" "Language-Team: Polish\n" "Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n" @@ -79,7 +79,7 @@ msgstr "{inviterName} anulował dokument {documentName}, nie musisz go już podp msgid "{inviterName} has cancelled the document<0/>\"{documentName}\"" msgstr "{inviterName} anulował dokument<0/>\"{documentName}\"" -#: packages/email/template-components/template-document-invite.tsx:65 +#: packages/email/template-components/template-document-invite.tsx:75 msgid "{inviterName} has invited you to {0}<0/>\"{documentName}\"" msgstr "{inviterName} zaprosił Cię do {0}<0/>\"{documentName}\"" @@ -99,7 +99,7 @@ msgstr "{inviterName} usunął Cię z dokumentu {documentName}." msgid "{inviterName} has removed you from the document<0/>\"{documentName}\"" msgstr "{inviterName} usunął cię z dokumentu<0/>„{documentName}”" -#: packages/email/template-components/template-document-invite.tsx:53 +#: packages/email/template-components/template-document-invite.tsx:63 msgid "{inviterName} on behalf of {teamName} has invited you to {0}" msgstr "{inviterName} w imieniu {teamName} zaprosił cię do {0}" @@ -151,11 +151,11 @@ msgstr "{prefix} usunął pole" msgid "{prefix} removed a recipient" msgstr "{prefix} usunął odbiorcę" -#: packages/lib/utils/document-audit-logs.ts:355 +#: packages/lib/utils/document-audit-logs.ts:365 msgid "{prefix} resent an email to {0}" msgstr "{prefix} ponownie wysłał e-mail do {0}" -#: packages/lib/utils/document-audit-logs.ts:356 +#: packages/lib/utils/document-audit-logs.ts:366 msgid "{prefix} sent an email to {0}" msgstr "{prefix} wysłał e-mail do {0}" @@ -207,7 +207,15 @@ msgstr "{prefix} zaktualizowana widoczność dokumentu" msgid "{recipientName} {action} a document by using one of your direct links" msgstr "{recipientName} {action} dokument, korzystając z jednego z Twoich bezpośrednich linków" -#: packages/email/template-components/template-document-invite.tsx:58 +#: packages/email/templates/document-rejected.tsx:27 +msgid "{recipientName} has rejected the document '{documentName}'" +msgstr "{recipientName} odrzucił dokument '{documentName}'" + +#: packages/email/template-components/template-document-rejected.tsx:25 +msgid "{signerName} has rejected the document \"{documentName}\"." +msgstr "{signerName} odrzucił dokument \"{documentName}\"." + +#: packages/email/template-components/template-document-invite.tsx:68 msgid "{teamName} has invited you to {0}" msgstr "{teamName} zaprosił cię do {0}" @@ -231,6 +239,10 @@ msgstr "{userName} dodał CC do dokumentu" msgid "{userName} completed their task" msgstr "{userName} zakończył swoje zadanie" +#: packages/lib/utils/document-audit-logs.ts:355 +msgid "{userName} rejected the document" +msgstr "{userName} odrzucił dokument" + #: packages/lib/utils/document-audit-logs.ts:341 msgid "{userName} signed the document" msgstr "{userName} podpisał dokument" @@ -398,7 +410,7 @@ msgstr "Dodaj kolejną opcję" msgid "Add another value" msgstr "Dodaj kolejną wartość" -#: packages/ui/primitives/document-flow/add-signers.tsx:662 +#: packages/ui/primitives/document-flow/add-signers.tsx:691 msgid "Add myself" msgstr "Dodaj siebie" @@ -410,7 +422,7 @@ msgstr "Dodaj siebie" msgid "Add Placeholder Recipient" msgstr "Dodaj odbiorcę zastępczego" -#: packages/ui/primitives/document-flow/add-signers.tsx:651 +#: packages/ui/primitives/document-flow/add-signers.tsx:680 msgid "Add Signer" msgstr "Dodaj sygnatariusza" @@ -460,7 +472,7 @@ msgstr "Wystąpił błąd podczas ładowania dokumentu." msgid "Approve" msgstr "Zatwierdź" -#: packages/email/template-components/template-document-invite.tsx:89 +#: packages/email/template-components/template-document-invite.tsx:106 msgid "Approve Document" msgstr "Zatwierdź dokument" @@ -590,7 +602,7 @@ msgstr "Kontynuuj" #~ msgid "Continue by {0} the document." #~ msgstr "Continue by {0} the document." -#: packages/email/template-components/template-document-invite.tsx:76 +#: packages/email/template-components/template-document-invite.tsx:86 msgid "Continue by approving the document." msgstr "Kontynuuj, zatwierdzając dokument." @@ -598,11 +610,11 @@ msgstr "Kontynuuj, zatwierdzając dokument." msgid "Continue by downloading the document." msgstr "Kontynuuj, pobierając dokument." -#: packages/email/template-components/template-document-invite.tsx:74 +#: packages/email/template-components/template-document-invite.tsx:84 msgid "Continue by signing the document." msgstr "Kontynuuj, podpisując dokument." -#: packages/email/template-components/template-document-invite.tsx:75 +#: packages/email/template-components/template-document-invite.tsx:85 msgid "Continue by viewing the document." msgstr "Kontynuuj, wyświetlając dokument." @@ -658,6 +670,14 @@ msgstr "Nie prosiłeś o zmianę hasła? Jesteśmy tutaj, aby pomóc Ci zabezpie msgid "Direct link receiver" msgstr "Odbiorca linku bezpośredniego" +#: packages/lib/jobs/definitions/emails/send-rejection-emails.ts:149 +msgid "Document \"{0}\" - Rejected by {1}" +msgstr "Dokument \"{0}\" - Odrzucony przez {1}" + +#: packages/lib/jobs/definitions/emails/send-rejection-emails.ts:109 +msgid "Document \"{0}\" - Rejection Confirmed" +msgstr "Dokument \"{0}\" - Odrzucenie potwierdzone" + #: packages/ui/components/document/document-global-auth-access-select.tsx:62 #: packages/ui/primitives/document-flow/add-settings.tsx:216 #: packages/ui/primitives/template-flow/add-template-settings.tsx:202 @@ -673,8 +693,8 @@ msgstr "Zaktualizowano autoryzację dostępu do dokumentu" msgid "Document Cancelled" msgstr "Dokument anulowany" -#: packages/lib/utils/document-audit-logs.ts:359 -#: packages/lib/utils/document-audit-logs.ts:360 +#: packages/lib/utils/document-audit-logs.ts:369 +#: packages/lib/utils/document-audit-logs.ts:370 msgid "Document completed" msgstr "Dokument ukończony" @@ -728,6 +748,13 @@ msgstr "Dokument otwarty" msgid "Document pending email" msgstr "E-mail oczekującego dokumentu" +#: packages/email/template-components/template-document-rejected.tsx:21 +msgid "Document Rejected" +msgstr "Dokument odrzucone" + +#~ msgid "Document Rejection Confirmed" +#~ msgstr "Document Rejection Confirmed" + #: packages/lib/utils/document-audit-logs.ts:330 msgid "Document sent" msgstr "Dokument wysłany" @@ -773,8 +800,8 @@ msgstr "Opcje rozwijane" #: packages/lib/constants/document.ts:28 #: packages/ui/primitives/document-flow/add-fields.tsx:875 #: packages/ui/primitives/document-flow/add-signature.tsx:272 -#: packages/ui/primitives/document-flow/add-signers.tsx:500 -#: packages/ui/primitives/document-flow/add-signers.tsx:507 +#: packages/ui/primitives/document-flow/add-signers.tsx:512 +#: packages/ui/primitives/document-flow/add-signers.tsx:519 #: packages/ui/primitives/document-flow/types.ts:54 #: packages/ui/primitives/template-flow/add-template-fields.tsx:638 #: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:463 @@ -790,11 +817,11 @@ msgstr "Email jest wymagany" msgid "Email Options" msgstr "Opcje e-mail" -#: packages/lib/utils/document-audit-logs.ts:353 +#: packages/lib/utils/document-audit-logs.ts:363 msgid "Email resent" msgstr "E-mail wysłany ponownie" -#: packages/lib/utils/document-audit-logs.ts:353 +#: packages/lib/utils/document-audit-logs.ts:363 msgid "Email sent" msgstr "E-mail wysłany" @@ -903,6 +930,9 @@ msgstr "Wróć" msgid "Green" msgstr "Zielony" +#~ msgid "Hello {recipientName}," +#~ msgstr "Hello {recipientName}," + #: packages/email/templates/reset-password.tsx:56 msgid "Hi, {userName} <0>({userEmail})" msgstr "Cześć, {userName} <0>({userEmail})" @@ -988,8 +1018,8 @@ msgstr "Min" #: packages/ui/primitives/document-flow/add-fields.tsx:901 #: packages/ui/primitives/document-flow/add-signature.tsx:298 -#: packages/ui/primitives/document-flow/add-signers.tsx:535 -#: packages/ui/primitives/document-flow/add-signers.tsx:541 +#: packages/ui/primitives/document-flow/add-signers.tsx:550 +#: packages/ui/primitives/document-flow/add-signers.tsx:556 #: packages/ui/primitives/document-flow/types.ts:55 #: packages/ui/primitives/template-flow/add-template-fields.tsx:664 #: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:498 @@ -1107,7 +1137,7 @@ msgstr "Wybierz numer" msgid "Placeholder" msgstr "Zastępczy tekst" -#: packages/email/template-components/template-document-invite.tsx:46 +#: packages/email/template-components/template-document-invite.tsx:56 msgid "Please {0} your document<0/>\"{documentName}\"" msgstr "Proszę {0} Twój dokument<0/>\"{documentName}\"" @@ -1156,11 +1186,16 @@ msgstr "Wartości radiowe" msgid "Read only" msgstr "Tylko do odczytu" +#: packages/email/template-components/template-document-rejected.tsx:32 +msgid "Reason for rejection: {rejectionReason}" +msgstr "Powód odrzucenia: {rejectionReason}" + #: packages/ui/components/recipient/recipient-role-select.tsx:95 msgid "Receives copy" msgstr "Otrzymuje kopię" #: packages/lib/utils/document-audit-logs.ts:338 +#: packages/lib/utils/document-audit-logs.ts:353 msgid "Recipient" msgstr "Odbiorca" @@ -1187,6 +1222,18 @@ msgstr "Czerwony" msgid "Redirect URL" msgstr "Adres URL przekierowania" +#: packages/email/template-components/template-document-invite.tsx:96 +msgid "Reject Document" +msgstr "Odrzuć dokument" + +#: packages/email/template-components/template-document-rejection-confirmed.tsx:22 +msgid "Rejection Confirmed" +msgstr "Odmowa potwierdzona" + +#: packages/email/template-components/template-document-rejection-confirmed.tsx:34 +msgid "Rejection reason: {reason}" +msgstr "Powód odrzucenia: {reason}" + #: packages/lib/server-only/document/resend-document.tsx:192 msgid "Reminder: {0}" msgstr "Przypomnienie: {0}" @@ -1306,7 +1353,7 @@ msgstr "Udostępnij link" msgid "Share your signing experience!" msgstr "Podziel się swoim doświadczeniem podpisywania!" -#: packages/ui/primitives/document-flow/add-signers.tsx:680 +#: packages/ui/primitives/document-flow/add-signers.tsx:709 #: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:655 msgid "Show advanced settings" msgstr "Pokaż ustawienia zaawansowane" @@ -1315,7 +1362,7 @@ msgstr "Pokaż ustawienia zaawansowane" msgid "Sign" msgstr "Podpisz" -#: packages/email/template-components/template-document-invite.tsx:87 +#: packages/email/template-components/template-document-invite.tsx:104 msgid "Sign Document" msgstr "Podpisz dokument" @@ -1351,8 +1398,8 @@ msgstr "Podpisujący muszą mieć unikalne emaile" msgid "Signing" msgstr "Podpisywanie" -#: packages/lib/server-only/document/send-completed-email.ts:111 -#: packages/lib/server-only/document/send-completed-email.ts:191 +#: packages/lib/server-only/document/send-completed-email.ts:114 +#: packages/lib/server-only/document/send-completed-email.ts:194 msgid "Signing Complete!" msgstr "Podpisywanie zakończone!" @@ -1432,6 +1479,13 @@ msgstr "Uwierzytelnianie wymagane dla odbiorców do podpisania pola podpisu." msgid "The authentication required for recipients to view the document." msgstr "Uwierzytelnianie wymagane dla odbiorców do wyświetlenia dokumentu." +#~ msgid "The document owner has been notified of this rejection. No further action is required from you at this time." +#~ msgstr "The document owner has been notified of this rejection. No further action is required from you at this time." + +#: packages/email/template-components/template-document-rejection-confirmed.tsx:39 +msgid "The document owner has been notified of this rejection. No further action is required from you at this time. The document owner may contact you with any questions regarding this rejection." +msgstr "Właściciel dokumentu został poinformowany o tym odrzuceniu. W tej chwili nie są wymagane żadne dalsze działania z Twojej strony. Właściciel dokumentu może się z Tobą skontaktować z pytaniami dotyczącymi tego odrzucenia." + #: packages/ui/components/document/document-send-email-message-helper.tsx:31 msgid "The document's name" msgstr "Nazwa dokumentu" @@ -1512,6 +1566,13 @@ msgstr "Ten dokument jest zabezpieczony hasłem. Proszę wprowadzić hasło, aby msgid "This document was sent using <0>Documenso." msgstr "Ten dokument został wysłany za pomocą <0>Documenso." +#~ msgid "This email confirms that you have rejected the document \"{documentName}\" sent by {documentOwnerName}." +#~ msgstr "This email confirms that you have rejected the document \"{documentName}\" sent by {documentOwnerName}." + +#: packages/email/template-components/template-document-rejection-confirmed.tsx:26 +msgid "This email confirms that you have rejected the document <0>\"{documentName}\" sent by {documentOwnerName}." +msgstr "Ten email potwierdza, że odrzuciłeś dokument <0>\"{documentName}\" wysłany przez {documentOwnerName}." + #: packages/ui/components/document/document-email-checkboxes.tsx:94 msgid "This email is sent to the recipient if they are removed from a pending document." msgstr "Ten e-mail jest wysyłany do odbiorcy, jeśli zostanie usunięty z oczekującego dokumentu." @@ -1608,7 +1669,8 @@ msgstr "Wyświetl wszystkie dokumenty wysłane do i z tego adresu e-mail" msgid "View document" msgstr "Zobacz dokument" -#: packages/email/template-components/template-document-invite.tsx:88 +#: packages/email/template-components/template-document-invite.tsx:105 +#: packages/email/template-components/template-document-rejected.tsx:44 #: packages/ui/primitives/document-flow/add-subject.tsx:90 #: packages/ui/primitives/document-flow/add-subject.tsx:91 msgid "View Document" @@ -1686,6 +1748,10 @@ msgstr "Możesz w każdej chwili cofnąć dostęp w ustawieniach zespołu na Doc msgid "You can use the following variables in your message:" msgstr "Możesz użyć następujących zmiennych w swojej wiadomości:" +#: packages/email/template-components/template-document-rejected.tsx:37 +msgid "You can view the document and its status by clicking the button below." +msgstr "Możesz zobaczyć dokument i jego status, klikając przycisk poniżej." + #: packages/ui/primitives/document-dropzone.tsx:43 msgid "You cannot upload documents at this time." msgstr "Nie możesz przesyłać dokumentów w tej chwili." @@ -1719,6 +1785,13 @@ msgstr "Rozpocząłeś dokument {0}, który wymaga, abyś go {recipientActionVer msgid "You have reached your document limit." msgstr "Osiągnąłeś limit dokumentów." +#: packages/email/templates/document-rejection-confirmed.tsx:27 +msgid "You have rejected the document '{documentName}'" +msgstr "Odrzuciłeś dokument '{documentName}'" + +#~ msgid "You have rejected the document \"{documentName}\"" +#~ msgstr "You have rejected the document \"{documentName}\"" + #: packages/email/template-components/template-document-self-signed.tsx:42 msgid "You have signed “{documentName}”" msgstr "Podpisałeś „{documentName}”" diff --git a/packages/lib/translations/pl/marketing.po b/packages/lib/translations/pl/marketing.po index 58fa6e928..831dc7d6c 100644 --- a/packages/lib/translations/pl/marketing.po +++ b/packages/lib/translations/pl/marketing.po @@ -8,7 +8,7 @@ msgstr "" "Language: pl\n" "Project-Id-Version: documenso-app\n" "Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2024-11-12 08:43\n" +"PO-Revision-Date: 2024-11-14 12:05\n" "Last-Translator: \n" "Language-Team: Polish\n" "Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n" diff --git a/packages/lib/translations/pl/web.po b/packages/lib/translations/pl/web.po index d42f19a19..bb24b0446 100644 --- a/packages/lib/translations/pl/web.po +++ b/packages/lib/translations/pl/web.po @@ -8,7 +8,7 @@ msgstr "" "Language: pl\n" "Project-Id-Version: documenso-app\n" "Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2024-11-12 08:43\n" +"PO-Revision-Date: 2024-11-14 12:05\n" "Last-Translator: \n" "Language-Team: Polish\n" "Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n" @@ -50,15 +50,15 @@ msgstr "\"{placeholderEmail}\" w imieniu \"{0}\" zaprosił Cię do podpisania \" msgid "\"{teamUrl}\" has invited you to sign \"example document\"." msgstr "\"{teamUrl}\" zaprosił Cię do podpisania \"przykładowego dokumentu\"." -#: apps/web/src/app/(signing)/sign/[token]/signing-page-view.tsx:78 +#: apps/web/src/app/(signing)/sign/[token]/signing-page-view.tsx:79 msgid "({0}) has invited you to approve this document" msgstr "({0}) zaprosił Cię do zatwierdzenia tego dokumentu" -#: apps/web/src/app/(signing)/sign/[token]/signing-page-view.tsx:75 +#: apps/web/src/app/(signing)/sign/[token]/signing-page-view.tsx:76 msgid "({0}) has invited you to sign this document" msgstr "({0}) zaprosił Cię do podpisania tego dokumentu" -#: apps/web/src/app/(signing)/sign/[token]/signing-page-view.tsx:72 +#: apps/web/src/app/(signing)/sign/[token]/signing-page-view.tsx:73 msgid "({0}) has invited you to view this document" msgstr "({0}) zaprosił Cię do przeglądania tego dokumentu" @@ -658,7 +658,7 @@ msgstr "Zatwierdź" msgid "Approve Document" msgstr "Zatwierdź dokument" -#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:85 +#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:94 msgid "Approved" msgstr "Zatwierdzono" @@ -666,6 +666,10 @@ msgstr "Zatwierdzono" msgid "Are you sure you want to delete this token?" msgstr "Czy na pewno chcesz usunąć ten token?" +#: apps/web/src/app/(signing)/sign/[token]/reject-document-dialog.tsx:120 +msgid "Are you sure you want to reject this document? This action cannot be undone." +msgstr "Czy na pewno chcesz odrzucić ten dokument? Ta akcja nie może być cofnięta." + #: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:188 msgid "Are you sure you want to remove the <0>{passkeyName} passkey." msgstr "Czy na pewno chcesz usunąć klucz hasła <0>{passkeyName}?" @@ -814,6 +818,7 @@ msgstr "Korzystając z funkcji podpisu elektronicznego, wyrażasz zgodę na prze #: apps/web/src/app/(signing)/sign/[token]/form.tsx:220 #: apps/web/src/app/(signing)/sign/[token]/name-field.tsx:215 #: apps/web/src/app/(signing)/sign/[token]/number-field.tsx:327 +#: apps/web/src/app/(signing)/sign/[token]/reject-document-dialog.tsx:153 #: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:113 #: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:248 #: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:333 @@ -946,7 +951,7 @@ msgid "Complete Viewing" msgstr "Zakończ przeglądanie" #: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:208 -#: apps/web/src/components/(dashboard)/avatar/stack-avatars-with-tooltip.tsx:62 +#: apps/web/src/components/(dashboard)/avatar/stack-avatars-with-tooltip.tsx:77 #: apps/web/src/components/formatter/document-status.tsx:28 msgid "Completed" msgstr "Zakończono" @@ -1043,7 +1048,7 @@ msgstr "Kontroluje formatowanie wiadomości, która zostanie wysłana podczas za msgid "Copied" msgstr "Skopiowano" -#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:133 +#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:162 #: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:77 #: apps/web/src/app/(dashboard)/templates/template-direct-link-badge.tsx:31 #: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:163 @@ -1517,6 +1522,10 @@ msgstr "Preferencje dokumentu zaktualizowane" msgid "Document re-sent" msgstr "Dokument ponownie wysłany" +#: apps/web/src/app/(signing)/sign/[token]/rejected/page.tsx:83 +msgid "Document Rejected" +msgstr "Dokument Odrzucone" + #: apps/web/src/app/(dashboard)/admin/documents/[id]/admin-actions.tsx:36 msgid "Document resealed" msgstr "Dokument ponownie zaplombowany" @@ -2300,7 +2309,7 @@ msgstr "Członek od" msgid "Members" msgstr "Członkowie" -#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:46 +#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:55 #: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recipients.tsx:35 msgid "Modify recipients" msgstr "Modyfikuj odbiorców" @@ -2394,6 +2403,10 @@ msgstr "Następne pole" msgid "No active drafts" msgstr "Brak aktywnych szkiców" +#: apps/web/src/app/(signing)/sign/[token]/rejected/page.tsx:99 +msgid "No further action is required from you at this time." +msgstr "Nie są wymagane żadne dalsze działania z Twojej strony w tym momencie." + #: apps/web/src/app/(teams)/t/[teamUrl]/settings/billing/page.tsx:42 msgid "No payment required" msgstr "Brak wymaganej płatności" @@ -2410,7 +2423,7 @@ msgstr "Brak ostatnich aktywności" msgid "No recent documents" msgstr "Brak ostatnich dokumentów" -#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:61 +#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:70 #: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recipients.tsx:49 #: apps/web/src/components/document/document-recipient-link-copy-dialog.tsx:96 msgid "No recipients" @@ -2498,26 +2511,26 @@ msgstr "Tylko menedżerowie i wyżej mogą uzyskać dostęp do dokumentu i go wy #: apps/web/src/app/(teams)/t/[teamUrl]/not-found.tsx:19 #: apps/web/src/components/partials/not-found.tsx:49 msgid "Oops! Something went wrong." -msgstr "Oops! Something went wrong." +msgstr "Ups! Coś poszło nie tak." -#: apps/web/src/components/(dashboard)/avatar/stack-avatars-with-tooltip.tsx:101 +#: apps/web/src/components/(dashboard)/avatar/stack-avatars-with-tooltip.tsx:140 msgid "Opened" -msgstr "Lub" +msgstr "Otwarto" #: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:337 #: apps/web/src/components/forms/signup.tsx:243 #: apps/web/src/components/forms/signup.tsx:267 #: apps/web/src/components/forms/v2/signup.tsx:383 msgid "Or" -msgstr "Lub kontynuuj z" +msgstr "Lub" #: apps/web/src/components/forms/signin.tsx:390 msgid "Or continue with" -msgstr "Or continue with" +msgstr "Lub kontynuuj z" #: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:341 msgid "Otherwise, the document will be created as a draft." -msgstr "Otherwise, the document will be created as a draft." +msgstr "W przeciwnym razie dokument zostanie utworzony jako wersja robocza." #: apps/web/src/app/(dashboard)/admin/documents/document-results.tsx:86 #: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:103 @@ -2525,35 +2538,35 @@ msgstr "Otherwise, the document will be created as a draft." #: apps/web/src/components/(teams)/tables/current-user-teams-data-table.tsx:86 #: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:109 msgid "Owner" -msgstr "Opłacona" +msgstr "Właściciel" #: apps/web/src/components/(teams)/tables/team-billing-invoices-data-table.tsx:79 msgid "Paid" -msgstr "Klucz dostępu" +msgstr "Opłacono" #: apps/web/src/components/forms/signin.tsx:435 msgid "Passkey" -msgstr "Klucz dostępu już istnieje dla podanego autoryzatora" +msgstr "Klucz dostępu" #: apps/web/src/app/(dashboard)/settings/security/passkeys/create-passkey-dialog.tsx:229 msgid "Passkey already exists for the provided authenticator" -msgstr "Passkey already exists for the provided authenticator" +msgstr "Klucz dostępu już istnieje dla podanego uwierzytelniającego" #: apps/web/src/app/(dashboard)/settings/security/passkeys/create-passkey-dialog.tsx:219 msgid "Passkey creation cancelled due to one of the following reasons:" -msgstr "Passkey creation cancelled due to one of the following reasons:" +msgstr "Tworzenie klucza dostępu anulowane z jednego z następujących powodów:" #: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:88 msgid "Passkey has been removed" -msgstr "Klucz dostępu został zaktualizowany" +msgstr "Klucz dostępu został usunięty" #: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:68 msgid "Passkey has been updated" -msgstr "Nazwa klucza dostępu" +msgstr "Klucz dostępu został zaktualizowany" #: apps/web/src/app/(dashboard)/settings/security/passkeys/create-passkey-dialog.tsx:177 msgid "Passkey name" -msgstr "Klucze dostępu" +msgstr "Nazwa klucza dostępu" #: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:121 msgid "Passkey Re-Authentication" @@ -2562,15 +2575,15 @@ msgstr "Ponowna autoryzacja za pomocą klucza" #: apps/web/src/app/(dashboard)/settings/security/page.tsx:106 #: apps/web/src/app/(dashboard)/settings/security/passkeys/page.tsx:32 msgid "Passkeys" -msgstr "Passkeys" +msgstr "Klucze dostępu" #: apps/web/src/app/(dashboard)/settings/security/passkeys/create-passkey-dialog.tsx:158 msgid "Passkeys allow you to sign in and authenticate using biometrics, password managers, etc." -msgstr "Passkeys allow you to sign in and authenticate using biometrics, password managers, etc." +msgstr "Klucze dostępu pozwalają na logowanie i uwierzytelnianie przy użyciu danych biometrycznych, menedżerów haseł itp." #: apps/web/src/components/forms/signin.tsx:161 msgid "Passkeys are not supported on this browser" -msgstr "Hasło" +msgstr "Klucze dostępu nie są obsługiwane w tej przeglądarce" #: apps/web/src/components/(dashboard)/common/command-menu.tsx:70 #: apps/web/src/components/forms/password.tsx:123 @@ -2579,34 +2592,34 @@ msgstr "Hasło" #: apps/web/src/components/forms/signup.tsx:196 #: apps/web/src/components/forms/v2/signup.tsx:344 msgid "Password" -msgstr "Hasło zaktualizowane" +msgstr "Hasło" #: apps/web/src/components/forms/password.tsx:71 #: apps/web/src/components/forms/reset-password.tsx:72 msgid "Password updated" -msgstr "Zapłać" +msgstr "Hasło zaktualizowane" #: apps/web/src/components/(teams)/tables/pending-user-teams-data-table-actions.tsx:46 msgid "Pay" -msgstr "Pay" +msgstr "Zapłać" #: apps/web/src/components/(teams)/dialogs/create-team-checkout-dialog.tsx:89 msgid "Payment is required to finalise the creation of your team." -msgstr "Payment is required to finalise the creation of your team." +msgstr "Płatność jest wymagana do zakończenia tworzenia zespołu." #: apps/web/src/app/(teams)/t/[teamUrl]/layout-billing-banner.tsx:82 #: apps/web/src/app/(teams)/t/[teamUrl]/layout-billing-banner.tsx:107 msgid "Payment overdue" -msgstr "Oczekujące" +msgstr "Płatność zaległa" -#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:122 +#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:131 #: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:211 #: apps/web/src/components/(teams)/tables/teams-member-page-data-table.tsx:82 #: apps/web/src/components/(teams)/tables/user-settings-teams-page-data-table.tsx:77 #: apps/web/src/components/document/document-read-only-fields.tsx:89 #: apps/web/src/components/formatter/document-status.tsx:22 msgid "Pending" -msgstr "Oczekujące dokumenty" +msgstr "Oczekujące" #: apps/web/src/components/(dashboard)/common/command-menu.tsx:51 msgid "Pending documents" @@ -2618,11 +2631,11 @@ msgstr "Oczekujące zaproszenia" #: apps/web/src/app/(dashboard)/settings/teams/team-invitations.tsx:62 msgid "Pending invitations" -msgstr "Pending invitations" +msgstr "Oczekujące zaproszenia" #: apps/web/src/components/(teams)/tables/pending-user-teams-data-table-actions.tsx:28 msgid "Pending team deleted." -msgstr "Pending team deleted." +msgstr "Oczekujący zespół usunięty." #: apps/web/src/components/(dashboard)/layout/menu-switcher.tsx:134 msgid "Personal" @@ -2692,6 +2705,10 @@ msgstr "Please note that this action is irreversible. Once confirmed, your webho msgid "Please note that you will lose access to all documents associated with this team & all the members will be removed and notified" msgstr "Please note that you will lose access to all documents associated with this team & all the members will be removed and notified" +#: apps/web/src/app/(signing)/sign/[token]/reject-document-dialog.tsx:37 +msgid "Please provide a reason" +msgstr "Proszę podać powód" + #: apps/web/src/components/forms/2fa/disable-authenticator-app-dialog.tsx:127 msgid "Please provide a token from the authenticator, or a backup code. If you do not have a backup code available, please contact support." msgstr "Proszę podać token z swojego autoryzatora lub kod zapasowy." @@ -2800,7 +2817,7 @@ msgstr "Gotowe" msgid "Read the full <0>signature disclosure." msgstr "Przeczytaj pełne <0>ujawnienie podpisu." -#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:97 +#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:106 msgid "Ready" msgstr "Wymagana ponowna autoryzacja, aby podpisać to pole" @@ -2808,6 +2825,14 @@ msgstr "Wymagana ponowna autoryzacja, aby podpisać to pole" msgid "Reason" msgstr "Powód" +#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:146 +msgid "Reason for rejection:" +msgstr "Powód odrzucenia:" + +#: apps/web/src/app/(signing)/sign/[token]/reject-document-dialog.tsx:38 +msgid "Reason must be less than 500 characters" +msgstr "Powód musi mieć mniej niż 500 znaków" + #: apps/web/src/app/(signing)/sign/[token]/document-action-auth-dialog.tsx:62 msgid "Reauthentication is required to sign this field" msgstr "Ostatnia aktywność" @@ -2832,7 +2857,7 @@ msgid "Recipient updated" msgstr "Odbiorca zaktualizowany" #: apps/web/src/app/(dashboard)/admin/documents/[id]/page.tsx:66 -#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:40 +#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:49 #: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recipients.tsx:30 #: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:139 msgid "Recipients" @@ -2860,6 +2885,17 @@ msgstr "Kody odzyskiwania" msgid "Registration Successful" msgstr "Rejestracja zakończona sukcesem" +#: apps/web/src/app/(signing)/sign/[token]/reject-document-dialog.tsx:109 +#: apps/web/src/app/(signing)/sign/[token]/reject-document-dialog.tsx:116 +#: apps/web/src/app/(signing)/sign/[token]/reject-document-dialog.tsx:162 +msgid "Reject Document" +msgstr "Odrzuć dokument" + +#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:141 +#: apps/web/src/components/(dashboard)/avatar/stack-avatars-with-tooltip.tsx:101 +msgid "Rejected" +msgstr "Odrzucony" + #: apps/web/src/app/(unauthenticated)/forgot-password/page.tsx:34 msgid "Remembered your password? <0>Sign In" msgstr "Pamiętasz swoje hasło? <0>Zaloguj się" @@ -3089,7 +3125,7 @@ msgstr "Wysyłanie e-maila resetującego..." msgid "Sending..." msgstr "Wysyłanie..." -#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:92 +#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:101 #: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:248 msgid "Sent" msgstr "Wysłano" @@ -3236,7 +3272,7 @@ msgstr "Zebrane podpisy" msgid "Signatures will appear once the document has been completed" msgstr "Podpisy pojawią się po ukończeniu dokumentu" -#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:105 +#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:114 #: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:270 #: apps/web/src/components/document/document-read-only-fields.tsx:84 msgid "Signed" @@ -3645,6 +3681,10 @@ msgstr "Dokument został pomyślnie przeniesiony do wybranego zespołu." msgid "The document is now completed, please follow any instructions provided within the parent application." msgstr "Dokument jest teraz zakończony, proszę postępować zgodnie z wszelkimi instrukcjami podanymi w aplikacji nadrzędnej." +#: apps/web/src/app/(signing)/sign/[token]/rejected/page.tsx:92 +msgid "The document owner has been notified of your decision. They may contact you with further instructions if necessary." +msgstr "Właściciel dokumentu został poinformowany o Twojej decyzji. Mogą się z Tobą skontaktować w celu podania dalszych instrukcji, jeśli to konieczne." + #: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:182 msgid "The document was created but could not be sent to recipients." msgstr "Dokument został utworzony, ale nie mógł zostać wysłany do odbiorców." @@ -3699,7 +3739,7 @@ msgstr "Odbiorca został pomyślnie zaktualizowany" msgid "The selected team member will receive an email which they must accept before the team is transferred" msgstr "Wybrany członek zespołu otrzyma e-mail, który musi zaakceptować przed przeniesieniem zespołu" -#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:134 +#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:163 #: apps/web/src/components/(dashboard)/avatar/avatar-with-recipient.tsx:41 #: apps/web/src/components/document/document-recipient-link-copy-dialog.tsx:118 msgid "The signing link has been copied to your clipboard." @@ -4141,7 +4181,7 @@ msgstr "Nie można się zalogować" msgid "Unauthorized" msgstr "Nieautoryzowany" -#: apps/web/src/components/(dashboard)/avatar/stack-avatars-with-tooltip.tsx:116 +#: apps/web/src/components/(dashboard)/avatar/stack-avatars-with-tooltip.tsx:155 msgid "Uncompleted" msgstr "Niezakończony" @@ -4386,12 +4426,12 @@ msgstr "Wyświetl kody odzyskiwania" msgid "View teams" msgstr "Wyświetl zespoły" -#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:111 +#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:120 #: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:259 msgid "Viewed" msgstr "Wyświetlono" -#: apps/web/src/components/(dashboard)/avatar/stack-avatars-with-tooltip.tsx:86 +#: apps/web/src/components/(dashboard)/avatar/stack-avatars-with-tooltip.tsx:125 msgid "Waiting" msgstr "Czekam" @@ -4846,6 +4886,10 @@ msgstr "Osiągnąłeś limit dokumentów." msgid "You have reached your document limit. <0>Upgrade your account to continue!" msgstr "Osiągnąłeś limit dokumentów. <0>Ulepsz swoje konto, aby kontynuować!" +#: apps/web/src/app/(signing)/sign/[token]/rejected/page.tsx:88 +msgid "You have rejected this document" +msgstr "Odrzuciłeś ten dokument" + #: apps/web/src/components/(teams)/dialogs/leave-team-dialog.tsx:50 msgid "You have successfully left this team." msgstr "Sukces! Opuszczono ten zespół." From 9bdd5c31cc4d1933777fb2ec0a8e8d8865f81927 Mon Sep 17 00:00:00 2001 From: Ephraim Duncan <55143799+ephraimduncan@users.noreply.github.com> Date: Mon, 18 Nov 2024 08:54:51 +0000 Subject: [PATCH 06/12] fix: sort recipients for template with signing order (#1468) --- .../add-template-placeholder-recipients.tsx | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx b/packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx index b9b8dd4a8..50335dac1 100644 --- a/packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx +++ b/packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx @@ -1,6 +1,6 @@ 'use client'; -import React, { useCallback, useEffect, useId, useMemo, useRef, useState } from 'react'; +import { useCallback, useEffect, useId, useMemo, useRef, useState } from 'react'; import type { DropResult, SensorAPI } from '@hello-pangea/dnd'; import { DragDropContext, Draggable, Droppable } from '@hello-pangea/dnd'; @@ -94,7 +94,7 @@ export const AddTemplatePlaceholderRecipientsFormPartial = ({ ]; } - return recipients.map((recipient, index) => ({ + let mappedRecipients = recipients.map((recipient, index) => ({ nativeId: recipient.id, formId: String(recipient.id), name: recipient.name, @@ -103,6 +103,14 @@ export const AddTemplatePlaceholderRecipientsFormPartial = ({ actionAuth: ZRecipientAuthOptionsSchema.parse(recipient.authOptions)?.actionAuth ?? undefined, signingOrder: recipient.signingOrder ?? index + 1, })); + + if (signingOrder === DocumentSigningOrder.SEQUENTIAL) { + mappedRecipients = mappedRecipients.sort( + (a, b) => (a.signingOrder ?? 0) - (b.signingOrder ?? 0), + ); + } + + return mappedRecipients; }; const form = useForm({ From 0eff336175f5c112a6e7c952c15f1e2a6a255e48 Mon Sep 17 00:00:00 2001 From: Mythie Date: Tue, 19 Nov 2024 16:44:25 +1100 Subject: [PATCH 07/12] v1.8.0-rc.4 --- apps/marketing/package.json | 2 +- apps/web/package.json | 2 +- package-lock.json | 8 ++++---- package.json | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/apps/marketing/package.json b/apps/marketing/package.json index 127b57a71..5d4abe5ce 100644 --- a/apps/marketing/package.json +++ b/apps/marketing/package.json @@ -1,6 +1,6 @@ { "name": "@documenso/marketing", - "version": "1.8.0-rc.3", + "version": "1.8.0-rc.4", "private": true, "license": "AGPL-3.0", "scripts": { diff --git a/apps/web/package.json b/apps/web/package.json index a53ecc72b..21e61a5f3 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -1,6 +1,6 @@ { "name": "@documenso/web", - "version": "1.8.0-rc.3", + "version": "1.8.0-rc.4", "private": true, "license": "AGPL-3.0", "scripts": { diff --git a/package-lock.json b/package-lock.json index c484c2ebc..f7838ee3c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@documenso/root", - "version": "1.8.0-rc.3", + "version": "1.8.0-rc.4", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@documenso/root", - "version": "1.8.0-rc.3", + "version": "1.8.0-rc.4", "workspaces": [ "apps/*", "packages/*" @@ -80,7 +80,7 @@ }, "apps/marketing": { "name": "@documenso/marketing", - "version": "1.8.0-rc.3", + "version": "1.8.0-rc.4", "license": "AGPL-3.0", "dependencies": { "@documenso/assets": "*", @@ -441,7 +441,7 @@ }, "apps/web": { "name": "@documenso/web", - "version": "1.8.0-rc.3", + "version": "1.8.0-rc.4", "license": "AGPL-3.0", "dependencies": { "@documenso/api": "*", diff --git a/package.json b/package.json index 56b8b5fdb..a8b3ca7b8 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "private": true, - "version": "1.8.0-rc.3", + "version": "1.8.0-rc.4", "scripts": { "build": "turbo run build", "build:web": "turbo run build --filter=@documenso/web", From 9ef8b1f0c390a0a4f58d7913daa6335291767294 Mon Sep 17 00:00:00 2001 From: Lucas Smith Date: Wed, 20 Nov 2024 10:59:09 +1100 Subject: [PATCH 08/12] feat: automatically sign fields in large documents (#1484) ## Description Adds a dialog that will display when a certain field threshold is reached asking the user if they would like to sign non-critical fields such as name, date, initials, and email with information that is already available. This has not been added to direct templates since we would often not have all the pre-requisite knowledge since users are mostly anonymous. Additionally, this has not been added to the embedding view since it may detract from the experience for some. Will not prompt the user if there is action authentication on the document. See the below demo: https://github.com/user-attachments/assets/71739b5c-1323-4da9-89fd-a1145c9714d5 ## Related Issue #1281 (Older PR relating to the feature) ## Changes Made - Added a new auto-sign dialog that will automatically trigger once certain criteria is met. ## Testing Performed - Tested that the dialog displays when the threshold is met - Tested that the dialog is hidden when the threshold is not met - Tested that the messaging during errors is correct - Tested that the dialog does not display when 2FA or Passkeys are required --- .../app/(signing)/sign/[token]/auto-sign.tsx | 237 ++++++++++++++++++ .../sign/[token]/signing-page-view.tsx | 3 + packages/lib/translations/de/common.po | 7 +- packages/lib/translations/de/marketing.po | 1 - packages/lib/translations/de/web.po | 44 +++- packages/lib/translations/en/common.po | 6 + packages/lib/translations/en/web.po | 43 +++- packages/lib/translations/es/common.po | 7 +- packages/lib/translations/es/marketing.po | 1 - packages/lib/translations/es/web.po | 44 +++- packages/lib/translations/fr/common.po | 7 +- packages/lib/translations/fr/marketing.po | 1 - packages/lib/translations/fr/web.po | 44 +++- packages/ui/primitives/dialog.tsx | 2 +- packages/ui/primitives/document-flow/types.ts | 8 +- 15 files changed, 401 insertions(+), 54 deletions(-) create mode 100644 apps/web/src/app/(signing)/sign/[token]/auto-sign.tsx diff --git a/apps/web/src/app/(signing)/sign/[token]/auto-sign.tsx b/apps/web/src/app/(signing)/sign/[token]/auto-sign.tsx new file mode 100644 index 000000000..d404d0d6b --- /dev/null +++ b/apps/web/src/app/(signing)/sign/[token]/auto-sign.tsx @@ -0,0 +1,237 @@ +'use client'; + +import { useState, useTransition } from 'react'; + +import { useRouter } from 'next/navigation'; + +import { Plural, Trans, msg } from '@lingui/macro'; +import { useLingui } from '@lingui/react'; +import { useForm } from 'react-hook-form'; +import { P, match } from 'ts-pattern'; + +import { unsafe_useEffectOnce } from '@documenso/lib/client-only/hooks/use-effect-once'; +import { DocumentAuth } from '@documenso/lib/types/document-auth'; +import { extractInitials } from '@documenso/lib/utils/recipient-formatter'; +import type { Field, Recipient } from '@documenso/prisma/client'; +import { FieldType } from '@documenso/prisma/client'; +import { trpc } from '@documenso/trpc/react'; +import { Button } from '@documenso/ui/primitives/button'; +import { + Dialog, + DialogContent, + DialogFooter, + DialogHeader, + DialogTitle, +} from '@documenso/ui/primitives/dialog'; +import { FRIENDLY_FIELD_TYPE } from '@documenso/ui/primitives/document-flow/types'; +import { Form } from '@documenso/ui/primitives/form/form'; +import { useToast } from '@documenso/ui/primitives/use-toast'; + +import { SigningDisclosure } from '~/components/general/signing-disclosure'; + +import { useRequiredDocumentAuthContext } from './document-auth-provider'; +import { useRequiredSigningContext } from './provider'; + +const AUTO_SIGNABLE_FIELD_TYPES: string[] = [ + FieldType.NAME, + FieldType.INITIALS, + FieldType.EMAIL, + FieldType.DATE, +]; + +// The action auth types that are not allowed to be auto signed +// +// Reasoning: If the action auth is a passkey or 2FA, it's likely that the owner of the document +// intends on having the user manually sign due to the additional security measures employed for +// other field types. +const NON_AUTO_SIGNABLE_ACTION_AUTH_TYPES: string[] = [ + DocumentAuth.PASSKEY, + DocumentAuth.TWO_FACTOR_AUTH, +]; + +// The threshold for the number of fields that could be autosigned before displaying the dialog +// +// Reasoning: If there aren't that many fields, it's likely going to be easier to manually sign each one +// while for larger documents with many fields it will be beneficial to sign away the boilerplate fields. +const AUTO_SIGN_THRESHOLD = 5; + +export type AutoSignProps = { + recipient: Pick; + fields: Field[]; +}; + +export const AutoSign = ({ recipient, fields }: AutoSignProps) => { + const { _ } = useLingui(); + const { toast } = useToast(); + + const router = useRouter(); + + const { email, fullName } = useRequiredSigningContext(); + const { derivedRecipientActionAuth } = useRequiredDocumentAuthContext(); + + const [open, setOpen] = useState(false); + const [isPending, startTransition] = useTransition(); + + const form = useForm(); + + const { mutateAsync: signFieldWithToken } = trpc.field.signFieldWithToken.useMutation(); + + const autoSignableFields = fields.filter((field) => { + if (field.inserted) { + return false; + } + + if (!AUTO_SIGNABLE_FIELD_TYPES.includes(field.type)) { + return false; + } + + if (field.type === FieldType.NAME && !fullName) { + return false; + } + + if (field.type === FieldType.INITIALS && !fullName) { + return false; + } + + if (field.type === FieldType.EMAIL && !email) { + return false; + } + + return true; + }); + + const actionAuthAllowsAutoSign = !NON_AUTO_SIGNABLE_ACTION_AUTH_TYPES.includes( + derivedRecipientActionAuth ?? '', + ); + + const onSubmit = async () => { + const results = await Promise.allSettled( + autoSignableFields.map(async (field) => { + const value = match(field.type) + .with(FieldType.NAME, () => fullName) + .with(FieldType.INITIALS, () => extractInitials(fullName)) + .with(FieldType.EMAIL, () => email) + .with(FieldType.DATE, () => new Date().toISOString()) + .otherwise(() => ''); + + const authOptions = match(derivedRecipientActionAuth) + .with(DocumentAuth.ACCOUNT, () => ({ + type: DocumentAuth.ACCOUNT, + })) + .with(DocumentAuth.EXPLICIT_NONE, () => ({ + type: DocumentAuth.EXPLICIT_NONE, + })) + .with(null, () => undefined) + .with( + P.union(DocumentAuth.PASSKEY, DocumentAuth.TWO_FACTOR_AUTH), + // This is a bit dirty, but the sentinel value used here is incredibly short-lived. + () => 'NOT_SUPPORTED' as const, + ) + .exhaustive(); + + if (authOptions === 'NOT_SUPPORTED') { + throw new Error('Action auth is not supported for auto signing'); + } + + if (!value) { + throw new Error('No value to sign'); + } + + return await signFieldWithToken({ + token: recipient.token, + fieldId: field.id, + value, + isBase64: false, + authOptions, + }); + }), + ); + + if (results.some((result) => result.status === 'rejected')) { + toast({ + title: _(msg`Error`), + description: _( + msg`An error occurred while auto-signing the document, some fields may not be signed. Please review and manually sign any remaining fields.`, + ), + duration: 5000, + variant: 'destructive', + }); + } + + startTransition(() => { + router.refresh(); + + setOpen(false); + }); + }; + + unsafe_useEffectOnce(() => { + if (actionAuthAllowsAutoSign && autoSignableFields.length > AUTO_SIGN_THRESHOLD) { + setOpen(true); + } + }); + + return ( + + + + Automatically sign fields + + +
+

+ + When you sign a document, we can automatically fill in and sign the following fields + using information that has already been provided. You can also manually sign or remove + any automatically signed fields afterwards if you desire. + +

+ +
    + {AUTO_SIGNABLE_FIELD_TYPES.map((fieldType) => ( +
  • + {_(FRIENDLY_FIELD_TYPE[fieldType as FieldType])} + + ( + f.type === fieldType).length} + one="1 matching field" + other="# matching fields" + /> + ) + +
  • + ))} +
+
+ + + +
+ + + + + + +
+ +
+
+ ); +}; diff --git a/apps/web/src/app/(signing)/sign/[token]/signing-page-view.tsx b/apps/web/src/app/(signing)/sign/[token]/signing-page-view.tsx index 8cda4fc0a..16242381a 100644 --- a/apps/web/src/app/(signing)/sign/[token]/signing-page-view.tsx +++ b/apps/web/src/app/(signing)/sign/[token]/signing-page-view.tsx @@ -22,6 +22,7 @@ import { LazyPDFViewer } from '@documenso/ui/primitives/lazy-pdf-viewer'; import { DocumentReadOnlyFields } from '~/components/document/document-read-only-fields'; +import { AutoSign } from './auto-sign'; import { CheckboxField } from './checkbox-field'; import { DateField } from './date-field'; import { DropdownField } from './dropdown-field'; @@ -113,6 +114,8 @@ export const SigningPageView = ({ + + {fields.map((field) => match(field.type) diff --git a/packages/lib/translations/de/common.po b/packages/lib/translations/de/common.po index 327cb229d..4d5231ffa 100644 --- a/packages/lib/translations/de/common.po +++ b/packages/lib/translations/de/common.po @@ -550,6 +550,10 @@ msgstr "Ccers" msgid "Character Limit" msgstr "Zeichenbeschränkung" +#: packages/ui/primitives/document-flow/types.ts:58 +msgid "Checkbox" +msgstr "" + #: packages/ui/primitives/document-flow/field-items-advanced-settings/checkbox-field.tsx:197 msgid "Checkbox values" msgstr "Checkbox-Werte" @@ -1170,6 +1174,7 @@ msgstr "Bitte bestätige deine E-Mail-Adresse" msgid "Please try again or contact our support." msgstr "Bitte versuchen Sie es erneut oder kontaktieren Sie unseren Support." +#: packages/ui/primitives/document-flow/types.ts:57 #: packages/ui/primitives/template-flow/add-template-fields.tsx:768 msgid "Radio" msgstr "Radio" @@ -1291,6 +1296,7 @@ msgid "Search languages..." msgstr "Sprachen suchen..." #: packages/ui/primitives/document-flow/field-items-advanced-settings/dropdown-field.tsx:115 +#: packages/ui/primitives/document-flow/types.ts:59 msgid "Select" msgstr "Auswählen" @@ -1808,4 +1814,3 @@ msgstr "Dein Passwort wurde aktualisiert." #: packages/email/templates/team-delete.tsx:32 msgid "Your team has been deleted" msgstr "Dein Team wurde gelöscht" - diff --git a/packages/lib/translations/de/marketing.po b/packages/lib/translations/de/marketing.po index be5e125a9..4b28d6658 100644 --- a/packages/lib/translations/de/marketing.po +++ b/packages/lib/translations/de/marketing.po @@ -602,4 +602,3 @@ msgstr "Sie können Documenso kostenlos selbst hosten oder unsere sofort einsatz #: apps/marketing/src/components/(marketing)/carousel.tsx:272 msgid "Your browser does not support the video tag." msgstr "Ihr Browser unterstützt das Video-Tag nicht." - diff --git a/packages/lib/translations/de/web.po b/packages/lib/translations/de/web.po index 46bfa1baa..c16c942f9 100644 --- a/packages/lib/translations/de/web.po +++ b/packages/lib/translations/de/web.po @@ -50,15 +50,15 @@ msgstr "\"{placeholderEmail}\" im Namen von \"{0}\" hat Sie eingeladen, \"Beispi msgid "\"{teamUrl}\" has invited you to sign \"example document\"." msgstr "\"{teamUrl}\" hat Sie eingeladen, \"Beispieldokument\" zu unterschreiben." -#: apps/web/src/app/(signing)/sign/[token]/signing-page-view.tsx:79 +#: apps/web/src/app/(signing)/sign/[token]/signing-page-view.tsx:80 msgid "({0}) has invited you to approve this document" msgstr "({0}) hat dich eingeladen, dieses Dokument zu genehmigen" -#: apps/web/src/app/(signing)/sign/[token]/signing-page-view.tsx:76 +#: apps/web/src/app/(signing)/sign/[token]/signing-page-view.tsx:77 msgid "({0}) has invited you to sign this document" msgstr "({0}) hat dich eingeladen, dieses Dokument zu unterzeichnen" -#: apps/web/src/app/(signing)/sign/[token]/signing-page-view.tsx:73 +#: apps/web/src/app/(signing)/sign/[token]/signing-page-view.tsx:74 msgid "({0}) has invited you to view this document" msgstr "({0}) hat dich eingeladen, dieses Dokument zu betrachten" @@ -84,6 +84,10 @@ msgstr "{0, plural, one {# Sitz} other {# Sitze}}" msgid "{0, plural, one {<0>You have <1>1 pending team invitation} other {<2>You have <3># pending team invitations}}" msgstr "{0, plural, one {<0>Du hast <1>1 ausstehende Team-Einladung} other {<2>Du hast <3># ausstehende Team-Einladungen}}" +#: apps/web/src/app/(signing)/sign/[token]/auto-sign.tsx:196 +msgid "{0, plural, one {1 matching field} other {# matching fields}}" +msgstr "" + #: apps/web/src/app/(dashboard)/documents/[id]/edit/document-edit-page-view.tsx:129 msgid "{0, plural, one {1 Recipient} other {# Recipients}}" msgstr "{0, plural, one {1 Empfänger} other {# Empfänger}}" @@ -96,6 +100,10 @@ msgstr "{0, plural, one {Warte auf 1 Empfänger} other {Warte auf # Empfänger}} msgid "{0, plural, zero {Select values} other {# selected...}}" msgstr "{0, plural, zero {Werte auswählen} other {# ausgewählt...}}" +#: apps/web/src/app/(signing)/sign/[token]/auto-sign.tsx:193 +msgid "{0}" +msgstr "" + #: apps/web/src/components/templates/manage-public-template-dialog.tsx:249 msgid "{0} direct signing templates" msgstr "{0} direkte Signaturvorlagen" @@ -474,6 +482,10 @@ msgstr "Ein Fehler ist aufgetreten, während Unterzeichner hinzugefügt wurden." msgid "An error occurred while adding the fields." msgstr "Ein Fehler ist aufgetreten, während die Felder hinzugefügt wurden." +#: apps/web/src/app/(signing)/sign/[token]/auto-sign.tsx:154 +msgid "An error occurred while auto-signing the document, some fields may not be signed. Please review and manually sign any remaining fields." +msgstr "" + #: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:176 msgid "An error occurred while creating document from template." msgstr "Ein Fehler ist aufgetreten, während das Dokument aus der Vorlage erstellt wurde." @@ -748,7 +760,7 @@ msgstr "Banner aktualisiert" msgid "Basic details" msgstr "Basisdetails" -#: apps/web/src/app/(dashboard)/settings/billing/page.tsx:72 +#: apps/web/src/app/(dashboard)/settings/billing/page.tsx:74 #: apps/web/src/app/(teams)/t/[teamUrl]/settings/billing/page.tsx:61 #: apps/web/src/components/(dashboard)/settings/layout/desktop-nav.tsx:117 #: apps/web/src/components/(dashboard)/settings/layout/mobile-nav.tsx:120 @@ -810,6 +822,7 @@ msgstr "Durch die Verwendung der elektronischen Unterschriftsfunktion stimmen Si #: apps/web/src/app/(dashboard)/templates/duplicate-template-dialog.tsx:78 #: apps/web/src/app/(dashboard)/templates/move-template-dialog.tsx:119 #: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:472 +#: apps/web/src/app/(signing)/sign/[token]/auto-sign.tsx:220 #: apps/web/src/app/(signing)/sign/[token]/document-action-auth-2fa.tsx:178 #: apps/web/src/app/(signing)/sign/[token]/document-action-auth-account.tsx:71 #: apps/web/src/app/(signing)/sign/[token]/document-action-auth-passkey.tsx:164 @@ -1799,6 +1812,7 @@ msgstr "Geben Sie hier Ihren Text ein" #: apps/web/src/app/(dashboard)/templates/duplicate-template-dialog.tsx:51 #: apps/web/src/app/(dashboard)/templates/move-template-dialog.tsx:56 #: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:175 +#: apps/web/src/app/(signing)/sign/[token]/auto-sign.tsx:152 #: apps/web/src/app/(signing)/sign/[token]/checkbox-field.tsx:122 #: apps/web/src/app/(signing)/sign/[token]/checkbox-field.tsx:151 #: apps/web/src/app/(signing)/sign/[token]/checkbox-field.tsx:212 @@ -2230,6 +2244,10 @@ msgstr "Verwalten Sie alle Teams, mit denen Sie derzeit verbunden sind." msgid "Manage and view template" msgstr "Vorlage verwalten und anzeigen" +#: apps/web/src/app/(dashboard)/settings/billing/page.tsx:136 +msgid "Manage billing" +msgstr "" + #: apps/web/src/components/templates/manage-public-template-dialog.tsx:341 msgid "Manage details for this public template" msgstr "Details für diese öffentliche Vorlage verwalten" @@ -2250,7 +2268,7 @@ msgstr "Passkeys verwalten" msgid "Manage subscription" msgstr "Abonnement verwalten" -#: apps/web/src/app/(dashboard)/settings/billing/billing-portal-button.tsx:66 +#: apps/web/src/app/(dashboard)/settings/billing/billing-portal-button.tsx:67 msgid "Manage Subscription" msgstr "Abonnement verwalten" @@ -3175,6 +3193,7 @@ msgstr "Vorlagen in Ihrem Team-Öffentliches Profil anzeigen, damit Ihre Zielgru #: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:114 #: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:139 #: apps/web/src/app/(profile)/p/[url]/page.tsx:192 +#: apps/web/src/app/(signing)/sign/[token]/auto-sign.tsx:229 #: apps/web/src/app/(signing)/sign/[token]/document-action-auth-2fa.tsx:182 #: apps/web/src/app/(signing)/sign/[token]/name-field.tsx:224 #: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:124 @@ -3331,7 +3350,7 @@ msgstr "Website Einstellungen" #: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:80 #: apps/web/src/app/(dashboard)/documents/duplicate-document-dialog.tsx:72 #: apps/web/src/app/(dashboard)/settings/billing/billing-plans.tsx:62 -#: apps/web/src/app/(dashboard)/settings/billing/billing-portal-button.tsx:50 +#: apps/web/src/app/(dashboard)/settings/billing/billing-portal-button.tsx:51 #: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:124 #: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:73 #: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:93 @@ -4451,7 +4470,7 @@ msgstr "Möchten Sie auffällige Signatur-Links wie diesen senden? <0>Überprüf msgid "Want your own public profile?" msgstr "Möchten Sie Ihr eigenes öffentliches Profil haben?" -#: apps/web/src/app/(dashboard)/settings/billing/billing-portal-button.tsx:40 +#: apps/web/src/app/(dashboard)/settings/billing/billing-portal-button.tsx:41 #: apps/web/src/app/(teams)/t/[teamUrl]/layout-billing-banner.tsx:55 #: apps/web/src/components/(teams)/team-billing-portal-button.tsx:31 msgid "We are unable to proceed to the billing portal at this time. Please try again, or contact support." @@ -4715,6 +4734,10 @@ msgstr "Hast du stattdessen versucht, dieses Dokument zu bearbeiten?" msgid "When you click continue, you will be prompted to add the first available authenticator on your system." msgstr "Wenn Sie auf Fortfahren klicken, werden Sie aufgefordert, den ersten verfügbaren Authenticator auf Ihrem System hinzuzufügen." +#: apps/web/src/app/(signing)/sign/[token]/auto-sign.tsx:183 +msgid "When you sign a document, we can automatically fill in and sign the following fields using information that has already been provided. You can also manually sign or remove any automatically signed fields afterwards if you desire." +msgstr "" + #: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:36 msgid "When you use our platform to affix your electronic signature to documents, you are consenting to do so under the Electronic Signatures in Global and National Commerce Act (E-Sign Act) and other applicable laws. This action indicates your agreement to use electronic means to sign documents and receive notifications." msgstr "Wenn Sie unsere Plattform nutzen, um Ihre elektronische Unterschrift auf Dokumente anzubringen, stimmen Sie zu, dies unter dem Gesetz über elektronische Unterschriften im globalen und nationalen Handel (E-Sign-Gesetz) und anderen anwendbaren Gesetzen zu tun. Diese Handlung zeigt Ihre Zustimmung zur Verwendung elektronischer Mittel zum Unterzeichnen von Dokumenten und zum Empfang von Benachrichtigungen an." @@ -4784,7 +4807,7 @@ msgstr "Sie stehen kurz davor, den folgenden Benutzer aus <0>{teamName} zu e msgid "You are about to revoke access for team <0>{0} ({1}) to use your email." msgstr "Sie stehen kurz davor, den Zugriff für das Team <0>{0} ({1}) zu widerrufen." -#: apps/web/src/app/(dashboard)/settings/billing/page.tsx:78 +#: apps/web/src/app/(dashboard)/settings/billing/page.tsx:80 msgid "You are currently on the <0>Free Plan." msgstr "Sie befinden sich derzeit im <0>kostenlosen Plan." @@ -4836,7 +4859,7 @@ msgstr "Sie können ein Teammitglied, das eine höhere Rolle als Sie hat, nicht msgid "You cannot upload encrypted PDFs" msgstr "Sie können keine verschlüsselten PDFs hochladen" -#: apps/web/src/app/(dashboard)/settings/billing/billing-portal-button.tsx:45 +#: apps/web/src/app/(dashboard)/settings/billing/billing-portal-button.tsx:46 msgid "You do not currently have a customer record, this should not happen. Please contact support for assistance." msgstr "Sie haben derzeit keinen Kundenrecord, das sollte nicht passieren. Bitte kontaktieren Sie den Support um Hilfe." @@ -4982,7 +5005,7 @@ msgstr "Ihre Marken-Website-URL" msgid "Your branding preferences have been updated" msgstr "Ihre Markenpräferenzen wurden aktualisiert" -#: apps/web/src/app/(dashboard)/settings/billing/page.tsx:119 +#: apps/web/src/app/(dashboard)/settings/billing/page.tsx:125 msgid "Your current plan is past due. Please update your payment information." msgstr "Ihr aktueller Plan ist überfällig. Bitte aktualisieren Sie Ihre Zahlungsinformationen." @@ -5117,4 +5140,3 @@ msgstr "Ihr Token wurde erfolgreich erstellt! Stellen Sie sicher, dass Sie es ko #: apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx:86 msgid "Your tokens will be shown here once you create them." msgstr "Ihre Tokens werden hier angezeigt, sobald Sie sie erstellt haben." - diff --git a/packages/lib/translations/en/common.po b/packages/lib/translations/en/common.po index c3b6366b8..76369780c 100644 --- a/packages/lib/translations/en/common.po +++ b/packages/lib/translations/en/common.po @@ -545,6 +545,10 @@ msgstr "Ccers" msgid "Character Limit" msgstr "Character Limit" +#: packages/ui/primitives/document-flow/types.ts:58 +msgid "Checkbox" +msgstr "Checkbox" + #: packages/ui/primitives/document-flow/field-items-advanced-settings/checkbox-field.tsx:197 msgid "Checkbox values" msgstr "Checkbox values" @@ -1165,6 +1169,7 @@ msgstr "Please confirm your email address" msgid "Please try again or contact our support." msgstr "Please try again or contact our support." +#: packages/ui/primitives/document-flow/types.ts:57 #: packages/ui/primitives/template-flow/add-template-fields.tsx:768 msgid "Radio" msgstr "Radio" @@ -1286,6 +1291,7 @@ msgid "Search languages..." msgstr "Search languages..." #: packages/ui/primitives/document-flow/field-items-advanced-settings/dropdown-field.tsx:115 +#: packages/ui/primitives/document-flow/types.ts:59 msgid "Select" msgstr "Select" diff --git a/packages/lib/translations/en/web.po b/packages/lib/translations/en/web.po index 1c51f58e6..1ac45613e 100644 --- a/packages/lib/translations/en/web.po +++ b/packages/lib/translations/en/web.po @@ -45,15 +45,15 @@ msgstr "\"{placeholderEmail}\" on behalf of \"{0}\" has invited you to sign \"ex msgid "\"{teamUrl}\" has invited you to sign \"example document\"." msgstr "\"{teamUrl}\" has invited you to sign \"example document\"." -#: apps/web/src/app/(signing)/sign/[token]/signing-page-view.tsx:79 +#: apps/web/src/app/(signing)/sign/[token]/signing-page-view.tsx:80 msgid "({0}) has invited you to approve this document" msgstr "({0}) has invited you to approve this document" -#: apps/web/src/app/(signing)/sign/[token]/signing-page-view.tsx:76 +#: apps/web/src/app/(signing)/sign/[token]/signing-page-view.tsx:77 msgid "({0}) has invited you to sign this document" msgstr "({0}) has invited you to sign this document" -#: apps/web/src/app/(signing)/sign/[token]/signing-page-view.tsx:73 +#: apps/web/src/app/(signing)/sign/[token]/signing-page-view.tsx:74 msgid "({0}) has invited you to view this document" msgstr "({0}) has invited you to view this document" @@ -79,6 +79,10 @@ msgstr "{0, plural, one {# Seat} other {# Seats}}" msgid "{0, plural, one {<0>You have <1>1 pending team invitation} other {<2>You have <3># pending team invitations}}" msgstr "{0, plural, one {<0>You have <1>1 pending team invitation} other {<2>You have <3># pending team invitations}}" +#: apps/web/src/app/(signing)/sign/[token]/auto-sign.tsx:196 +msgid "{0, plural, one {1 matching field} other {# matching fields}}" +msgstr "{0, plural, one {1 matching field} other {# matching fields}}" + #: apps/web/src/app/(dashboard)/documents/[id]/edit/document-edit-page-view.tsx:129 msgid "{0, plural, one {1 Recipient} other {# Recipients}}" msgstr "{0, plural, one {1 Recipient} other {# Recipients}}" @@ -91,6 +95,10 @@ msgstr "{0, plural, one {Waiting on 1 recipient} other {Waiting on # recipients} msgid "{0, plural, zero {Select values} other {# selected...}}" msgstr "{0, plural, zero {Select values} other {# selected...}}" +#: apps/web/src/app/(signing)/sign/[token]/auto-sign.tsx:193 +msgid "{0}" +msgstr "{0}" + #: apps/web/src/components/templates/manage-public-template-dialog.tsx:249 msgid "{0} direct signing templates" msgstr "{0} direct signing templates" @@ -469,6 +477,10 @@ msgstr "An error occurred while adding signers." msgid "An error occurred while adding the fields." msgstr "An error occurred while adding the fields." +#: apps/web/src/app/(signing)/sign/[token]/auto-sign.tsx:154 +msgid "An error occurred while auto-signing the document, some fields may not be signed. Please review and manually sign any remaining fields." +msgstr "An error occurred while auto-signing the document, some fields may not be signed. Please review and manually sign any remaining fields." + #: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:176 msgid "An error occurred while creating document from template." msgstr "An error occurred while creating document from template." @@ -743,7 +755,7 @@ msgstr "Banner Updated" msgid "Basic details" msgstr "Basic details" -#: apps/web/src/app/(dashboard)/settings/billing/page.tsx:72 +#: apps/web/src/app/(dashboard)/settings/billing/page.tsx:74 #: apps/web/src/app/(teams)/t/[teamUrl]/settings/billing/page.tsx:61 #: apps/web/src/components/(dashboard)/settings/layout/desktop-nav.tsx:117 #: apps/web/src/components/(dashboard)/settings/layout/mobile-nav.tsx:120 @@ -805,6 +817,7 @@ msgstr "By using the electronic signature feature, you are consenting to conduct #: apps/web/src/app/(dashboard)/templates/duplicate-template-dialog.tsx:78 #: apps/web/src/app/(dashboard)/templates/move-template-dialog.tsx:119 #: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:472 +#: apps/web/src/app/(signing)/sign/[token]/auto-sign.tsx:220 #: apps/web/src/app/(signing)/sign/[token]/document-action-auth-2fa.tsx:178 #: apps/web/src/app/(signing)/sign/[token]/document-action-auth-account.tsx:71 #: apps/web/src/app/(signing)/sign/[token]/document-action-auth-passkey.tsx:164 @@ -1794,6 +1807,7 @@ msgstr "Enter your text here" #: apps/web/src/app/(dashboard)/templates/duplicate-template-dialog.tsx:51 #: apps/web/src/app/(dashboard)/templates/move-template-dialog.tsx:56 #: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:175 +#: apps/web/src/app/(signing)/sign/[token]/auto-sign.tsx:152 #: apps/web/src/app/(signing)/sign/[token]/checkbox-field.tsx:122 #: apps/web/src/app/(signing)/sign/[token]/checkbox-field.tsx:151 #: apps/web/src/app/(signing)/sign/[token]/checkbox-field.tsx:212 @@ -2225,6 +2239,10 @@ msgstr "Manage all teams you are currently associated with." msgid "Manage and view template" msgstr "Manage and view template" +#: apps/web/src/app/(dashboard)/settings/billing/page.tsx:136 +msgid "Manage billing" +msgstr "Manage billing" + #: apps/web/src/components/templates/manage-public-template-dialog.tsx:341 msgid "Manage details for this public template" msgstr "Manage details for this public template" @@ -2245,7 +2263,7 @@ msgstr "Manage passkeys" msgid "Manage subscription" msgstr "Manage subscription" -#: apps/web/src/app/(dashboard)/settings/billing/billing-portal-button.tsx:66 +#: apps/web/src/app/(dashboard)/settings/billing/billing-portal-button.tsx:67 msgid "Manage Subscription" msgstr "Manage Subscription" @@ -3170,6 +3188,7 @@ msgstr "Show templates in your team public profile for your audience to sign and #: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:114 #: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:139 #: apps/web/src/app/(profile)/p/[url]/page.tsx:192 +#: apps/web/src/app/(signing)/sign/[token]/auto-sign.tsx:229 #: apps/web/src/app/(signing)/sign/[token]/document-action-auth-2fa.tsx:182 #: apps/web/src/app/(signing)/sign/[token]/name-field.tsx:224 #: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:124 @@ -3326,7 +3345,7 @@ msgstr "Site Settings" #: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:80 #: apps/web/src/app/(dashboard)/documents/duplicate-document-dialog.tsx:72 #: apps/web/src/app/(dashboard)/settings/billing/billing-plans.tsx:62 -#: apps/web/src/app/(dashboard)/settings/billing/billing-portal-button.tsx:50 +#: apps/web/src/app/(dashboard)/settings/billing/billing-portal-button.tsx:51 #: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:124 #: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:73 #: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:93 @@ -4446,7 +4465,7 @@ msgstr "Want to send slick signing links like this one? <0>Check out Documenso.< msgid "Want your own public profile?" msgstr "Want your own public profile?" -#: apps/web/src/app/(dashboard)/settings/billing/billing-portal-button.tsx:40 +#: apps/web/src/app/(dashboard)/settings/billing/billing-portal-button.tsx:41 #: apps/web/src/app/(teams)/t/[teamUrl]/layout-billing-banner.tsx:55 #: apps/web/src/components/(teams)/team-billing-portal-button.tsx:31 msgid "We are unable to proceed to the billing portal at this time. Please try again, or contact support." @@ -4710,6 +4729,10 @@ msgstr "Were you trying to edit this document instead?" msgid "When you click continue, you will be prompted to add the first available authenticator on your system." msgstr "When you click continue, you will be prompted to add the first available authenticator on your system." +#: apps/web/src/app/(signing)/sign/[token]/auto-sign.tsx:183 +msgid "When you sign a document, we can automatically fill in and sign the following fields using information that has already been provided. You can also manually sign or remove any automatically signed fields afterwards if you desire." +msgstr "When you sign a document, we can automatically fill in and sign the following fields using information that has already been provided. You can also manually sign or remove any automatically signed fields afterwards if you desire." + #: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:36 msgid "When you use our platform to affix your electronic signature to documents, you are consenting to do so under the Electronic Signatures in Global and National Commerce Act (E-Sign Act) and other applicable laws. This action indicates your agreement to use electronic means to sign documents and receive notifications." msgstr "When you use our platform to affix your electronic signature to documents, you are consenting to do so under the Electronic Signatures in Global and National Commerce Act (E-Sign Act) and other applicable laws. This action indicates your agreement to use electronic means to sign documents and receive notifications." @@ -4779,7 +4802,7 @@ msgstr "You are about to remove the following user from <0>{teamName}." msgid "You are about to revoke access for team <0>{0} ({1}) to use your email." msgstr "You are about to revoke access for team <0>{0} ({1}) to use your email." -#: apps/web/src/app/(dashboard)/settings/billing/page.tsx:78 +#: apps/web/src/app/(dashboard)/settings/billing/page.tsx:80 msgid "You are currently on the <0>Free Plan." msgstr "You are currently on the <0>Free Plan." @@ -4831,7 +4854,7 @@ msgstr "You cannot modify a team member who has a higher role than you." msgid "You cannot upload encrypted PDFs" msgstr "You cannot upload encrypted PDFs" -#: apps/web/src/app/(dashboard)/settings/billing/billing-portal-button.tsx:45 +#: apps/web/src/app/(dashboard)/settings/billing/billing-portal-button.tsx:46 msgid "You do not currently have a customer record, this should not happen. Please contact support for assistance." msgstr "You do not currently have a customer record, this should not happen. Please contact support for assistance." @@ -4977,7 +5000,7 @@ msgstr "Your brand website URL" msgid "Your branding preferences have been updated" msgstr "Your branding preferences have been updated" -#: apps/web/src/app/(dashboard)/settings/billing/page.tsx:119 +#: apps/web/src/app/(dashboard)/settings/billing/page.tsx:125 msgid "Your current plan is past due. Please update your payment information." msgstr "Your current plan is past due. Please update your payment information." diff --git a/packages/lib/translations/es/common.po b/packages/lib/translations/es/common.po index 043d97241..8192959e8 100644 --- a/packages/lib/translations/es/common.po +++ b/packages/lib/translations/es/common.po @@ -550,6 +550,10 @@ msgstr "Ccers" msgid "Character Limit" msgstr "Límite de caracteres" +#: packages/ui/primitives/document-flow/types.ts:58 +msgid "Checkbox" +msgstr "" + #: packages/ui/primitives/document-flow/field-items-advanced-settings/checkbox-field.tsx:197 msgid "Checkbox values" msgstr "Valores de Checkbox" @@ -1170,6 +1174,7 @@ msgstr "Por favor confirma tu dirección de correo electrónico" msgid "Please try again or contact our support." msgstr "Por favor, inténtalo de nuevo o contacta a nuestro soporte." +#: packages/ui/primitives/document-flow/types.ts:57 #: packages/ui/primitives/template-flow/add-template-fields.tsx:768 msgid "Radio" msgstr "Radio" @@ -1291,6 +1296,7 @@ msgid "Search languages..." msgstr "Buscar idiomas..." #: packages/ui/primitives/document-flow/field-items-advanced-settings/dropdown-field.tsx:115 +#: packages/ui/primitives/document-flow/types.ts:59 msgid "Select" msgstr "Seleccionar" @@ -1808,4 +1814,3 @@ msgstr "Tu contraseña ha sido actualizada." #: packages/email/templates/team-delete.tsx:32 msgid "Your team has been deleted" msgstr "Tu equipo ha sido eliminado" - diff --git a/packages/lib/translations/es/marketing.po b/packages/lib/translations/es/marketing.po index 8057083c5..76c01ff7b 100644 --- a/packages/lib/translations/es/marketing.po +++ b/packages/lib/translations/es/marketing.po @@ -602,4 +602,3 @@ msgstr "Puedes autoalojar Documenso de forma gratuita o usar nuestra versión al #: apps/marketing/src/components/(marketing)/carousel.tsx:272 msgid "Your browser does not support the video tag." msgstr "Tu navegador no soporta la etiqueta de video." - diff --git a/packages/lib/translations/es/web.po b/packages/lib/translations/es/web.po index 8f7115374..f8afb17d2 100644 --- a/packages/lib/translations/es/web.po +++ b/packages/lib/translations/es/web.po @@ -50,15 +50,15 @@ msgstr "\"{placeholderEmail}\" en nombre de \"{0}\" te ha invitado a firmar \"do msgid "\"{teamUrl}\" has invited you to sign \"example document\"." msgstr "\"{teamUrl}\" te ha invitado a firmar \"ejemplo de documento\"." -#: apps/web/src/app/(signing)/sign/[token]/signing-page-view.tsx:79 +#: apps/web/src/app/(signing)/sign/[token]/signing-page-view.tsx:80 msgid "({0}) has invited you to approve this document" msgstr "({0}) te ha invitado a aprobar este documento" -#: apps/web/src/app/(signing)/sign/[token]/signing-page-view.tsx:76 +#: apps/web/src/app/(signing)/sign/[token]/signing-page-view.tsx:77 msgid "({0}) has invited you to sign this document" msgstr "({0}) te ha invitado a firmar este documento" -#: apps/web/src/app/(signing)/sign/[token]/signing-page-view.tsx:73 +#: apps/web/src/app/(signing)/sign/[token]/signing-page-view.tsx:74 msgid "({0}) has invited you to view this document" msgstr "({0}) te ha invitado a ver este documento" @@ -84,6 +84,10 @@ msgstr "{0, plural, one {# Asiento} other {# Asientos}}" msgid "{0, plural, one {<0>You have <1>1 pending team invitation} other {<2>You have <3># pending team invitations}}" msgstr "{0, plural, one {<0>Tienes <1>1 invitación de equipo pendiente} other {<2>Tienes <3># invitaciones de equipo pendientes}}" +#: apps/web/src/app/(signing)/sign/[token]/auto-sign.tsx:196 +msgid "{0, plural, one {1 matching field} other {# matching fields}}" +msgstr "" + #: apps/web/src/app/(dashboard)/documents/[id]/edit/document-edit-page-view.tsx:129 msgid "{0, plural, one {1 Recipient} other {# Recipients}}" msgstr "{0, plural, one {1 Destinatario} other {# Destinatarios}}" @@ -96,6 +100,10 @@ msgstr "{0, plural, one {Esperando 1 destinatario} other {Esperando # destinatar msgid "{0, plural, zero {Select values} other {# selected...}}" msgstr "{0, plural, zero {Selecciona valores} other {# seleccionados...}}" +#: apps/web/src/app/(signing)/sign/[token]/auto-sign.tsx:193 +msgid "{0}" +msgstr "" + #: apps/web/src/components/templates/manage-public-template-dialog.tsx:249 msgid "{0} direct signing templates" msgstr "{0} plantillas de firma directa" @@ -474,6 +482,10 @@ msgstr "Ocurrió un error al agregar firmantes." msgid "An error occurred while adding the fields." msgstr "Ocurrió un error al agregar los campos." +#: apps/web/src/app/(signing)/sign/[token]/auto-sign.tsx:154 +msgid "An error occurred while auto-signing the document, some fields may not be signed. Please review and manually sign any remaining fields." +msgstr "" + #: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:176 msgid "An error occurred while creating document from template." msgstr "Ocurrió un error al crear el documento a partir de la plantilla." @@ -748,7 +760,7 @@ msgstr "Banner actualizado" msgid "Basic details" msgstr "Detalles básicos" -#: apps/web/src/app/(dashboard)/settings/billing/page.tsx:72 +#: apps/web/src/app/(dashboard)/settings/billing/page.tsx:74 #: apps/web/src/app/(teams)/t/[teamUrl]/settings/billing/page.tsx:61 #: apps/web/src/components/(dashboard)/settings/layout/desktop-nav.tsx:117 #: apps/web/src/components/(dashboard)/settings/layout/mobile-nav.tsx:120 @@ -810,6 +822,7 @@ msgstr "Al utilizar la función de firma electrónica, usted está consintiendo #: apps/web/src/app/(dashboard)/templates/duplicate-template-dialog.tsx:78 #: apps/web/src/app/(dashboard)/templates/move-template-dialog.tsx:119 #: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:472 +#: apps/web/src/app/(signing)/sign/[token]/auto-sign.tsx:220 #: apps/web/src/app/(signing)/sign/[token]/document-action-auth-2fa.tsx:178 #: apps/web/src/app/(signing)/sign/[token]/document-action-auth-account.tsx:71 #: apps/web/src/app/(signing)/sign/[token]/document-action-auth-passkey.tsx:164 @@ -1799,6 +1812,7 @@ msgstr "Ingresa tu texto aquí" #: apps/web/src/app/(dashboard)/templates/duplicate-template-dialog.tsx:51 #: apps/web/src/app/(dashboard)/templates/move-template-dialog.tsx:56 #: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:175 +#: apps/web/src/app/(signing)/sign/[token]/auto-sign.tsx:152 #: apps/web/src/app/(signing)/sign/[token]/checkbox-field.tsx:122 #: apps/web/src/app/(signing)/sign/[token]/checkbox-field.tsx:151 #: apps/web/src/app/(signing)/sign/[token]/checkbox-field.tsx:212 @@ -2230,6 +2244,10 @@ msgstr "Gestionar todos los equipos con los que estás asociado actualmente." msgid "Manage and view template" msgstr "Gestionar y ver plantilla" +#: apps/web/src/app/(dashboard)/settings/billing/page.tsx:136 +msgid "Manage billing" +msgstr "" + #: apps/web/src/components/templates/manage-public-template-dialog.tsx:341 msgid "Manage details for this public template" msgstr "Gestionar detalles de esta plantilla pública" @@ -2250,7 +2268,7 @@ msgstr "Gestionar claves de acceso" msgid "Manage subscription" msgstr "Gestionar suscripción" -#: apps/web/src/app/(dashboard)/settings/billing/billing-portal-button.tsx:66 +#: apps/web/src/app/(dashboard)/settings/billing/billing-portal-button.tsx:67 msgid "Manage Subscription" msgstr "Gestionar Suscripción" @@ -3175,6 +3193,7 @@ msgstr "Mostrar plantillas en el perfil público de tu equipo para que tu audien #: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:114 #: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:139 #: apps/web/src/app/(profile)/p/[url]/page.tsx:192 +#: apps/web/src/app/(signing)/sign/[token]/auto-sign.tsx:229 #: apps/web/src/app/(signing)/sign/[token]/document-action-auth-2fa.tsx:182 #: apps/web/src/app/(signing)/sign/[token]/name-field.tsx:224 #: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:124 @@ -3331,7 +3350,7 @@ msgstr "Configuraciones del sitio" #: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:80 #: apps/web/src/app/(dashboard)/documents/duplicate-document-dialog.tsx:72 #: apps/web/src/app/(dashboard)/settings/billing/billing-plans.tsx:62 -#: apps/web/src/app/(dashboard)/settings/billing/billing-portal-button.tsx:50 +#: apps/web/src/app/(dashboard)/settings/billing/billing-portal-button.tsx:51 #: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:124 #: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:73 #: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:93 @@ -4451,7 +4470,7 @@ msgstr "¿Quieres enviar enlaces de firma elegantes como este? <0>Consulta Docum msgid "Want your own public profile?" msgstr "¿Quieres tu propio perfil público?" -#: apps/web/src/app/(dashboard)/settings/billing/billing-portal-button.tsx:40 +#: apps/web/src/app/(dashboard)/settings/billing/billing-portal-button.tsx:41 #: apps/web/src/app/(teams)/t/[teamUrl]/layout-billing-banner.tsx:55 #: apps/web/src/components/(teams)/team-billing-portal-button.tsx:31 msgid "We are unable to proceed to the billing portal at this time. Please try again, or contact support." @@ -4715,6 +4734,10 @@ msgstr "¿Estabas intentando editar este documento en su lugar?" msgid "When you click continue, you will be prompted to add the first available authenticator on your system." msgstr "Cuando haces clic en continuar, se te pedirá que añadas el primer autenticador disponible en tu sistema." +#: apps/web/src/app/(signing)/sign/[token]/auto-sign.tsx:183 +msgid "When you sign a document, we can automatically fill in and sign the following fields using information that has already been provided. You can also manually sign or remove any automatically signed fields afterwards if you desire." +msgstr "" + #: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:36 msgid "When you use our platform to affix your electronic signature to documents, you are consenting to do so under the Electronic Signatures in Global and National Commerce Act (E-Sign Act) and other applicable laws. This action indicates your agreement to use electronic means to sign documents and receive notifications." msgstr "Cuando utilice nuestra plataforma para colocar su firma electrónica en documentos, está consintiendo hacerlo bajo la Ley de Firmas Electrónicas en el Comercio Global y Nacional (Ley E-Sign) y otras leyes aplicables. Esta acción indica su aceptación de usar medios electrónicos para firmar documentos y recibir notificaciones." @@ -4784,7 +4807,7 @@ msgstr "Estás a punto de eliminar al siguiente usuario de <0>{teamName}." msgid "You are about to revoke access for team <0>{0} ({1}) to use your email." msgstr "Estás a punto de revocar el acceso para el equipo <0>{0} ({1}) para usar tu correo electrónico." -#: apps/web/src/app/(dashboard)/settings/billing/page.tsx:78 +#: apps/web/src/app/(dashboard)/settings/billing/page.tsx:80 msgid "You are currently on the <0>Free Plan." msgstr "Actualmente estás en el <0>Plan Gratuito." @@ -4836,7 +4859,7 @@ msgstr "No puedes modificar a un miembro del equipo que tenga un rol más alto q msgid "You cannot upload encrypted PDFs" msgstr "No puedes subir PDFs encriptados" -#: apps/web/src/app/(dashboard)/settings/billing/billing-portal-button.tsx:45 +#: apps/web/src/app/(dashboard)/settings/billing/billing-portal-button.tsx:46 msgid "You do not currently have a customer record, this should not happen. Please contact support for assistance." msgstr "Actualmente no tienes un registro de cliente, esto no debería suceder. Por favor contacta a soporte para obtener asistencia." @@ -4982,7 +5005,7 @@ msgstr "La URL de tu sitio web de marca" msgid "Your branding preferences have been updated" msgstr "Tus preferencias de marca han sido actualizadas" -#: apps/web/src/app/(dashboard)/settings/billing/page.tsx:119 +#: apps/web/src/app/(dashboard)/settings/billing/page.tsx:125 msgid "Your current plan is past due. Please update your payment information." msgstr "Tu plan actual está vencido. Por favor actualiza tu información de pago." @@ -5117,4 +5140,3 @@ msgstr "¡Tu token se creó con éxito! ¡Asegúrate de copiarlo porque no podr #: apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx:86 msgid "Your tokens will be shown here once you create them." msgstr "Tus tokens se mostrarán aquí una vez que los crees." - diff --git a/packages/lib/translations/fr/common.po b/packages/lib/translations/fr/common.po index bcb217b12..4afc2f58e 100644 --- a/packages/lib/translations/fr/common.po +++ b/packages/lib/translations/fr/common.po @@ -550,6 +550,10 @@ msgstr "Ccers" msgid "Character Limit" msgstr "Limite de caractères" +#: packages/ui/primitives/document-flow/types.ts:58 +msgid "Checkbox" +msgstr "" + #: packages/ui/primitives/document-flow/field-items-advanced-settings/checkbox-field.tsx:197 msgid "Checkbox values" msgstr "Valeurs de case à cocher" @@ -1170,6 +1174,7 @@ msgstr "Veuillez confirmer votre adresse email" msgid "Please try again or contact our support." msgstr "Veuillez réessayer ou contacter notre support." +#: packages/ui/primitives/document-flow/types.ts:57 #: packages/ui/primitives/template-flow/add-template-fields.tsx:768 msgid "Radio" msgstr "Radio" @@ -1291,6 +1296,7 @@ msgid "Search languages..." msgstr "Rechercher des langues..." #: packages/ui/primitives/document-flow/field-items-advanced-settings/dropdown-field.tsx:115 +#: packages/ui/primitives/document-flow/types.ts:59 msgid "Select" msgstr "Sélectionner" @@ -1808,4 +1814,3 @@ msgstr "Votre mot de passe a été mis à jour." #: packages/email/templates/team-delete.tsx:32 msgid "Your team has been deleted" msgstr "Votre équipe a été supprimée" - diff --git a/packages/lib/translations/fr/marketing.po b/packages/lib/translations/fr/marketing.po index 1f0b041a6..7884377f4 100644 --- a/packages/lib/translations/fr/marketing.po +++ b/packages/lib/translations/fr/marketing.po @@ -602,4 +602,3 @@ msgstr "Vous pouvez auto-héberger Documenso gratuitement ou utiliser notre vers #: apps/marketing/src/components/(marketing)/carousel.tsx:272 msgid "Your browser does not support the video tag." msgstr "Votre navigateur ne prend pas en charge la balise vidéo." - diff --git a/packages/lib/translations/fr/web.po b/packages/lib/translations/fr/web.po index c59be0939..e02763d93 100644 --- a/packages/lib/translations/fr/web.po +++ b/packages/lib/translations/fr/web.po @@ -50,15 +50,15 @@ msgstr "\"{placeholderEmail}\" au nom de \"{0}\" vous a invité à signer \"exem msgid "\"{teamUrl}\" has invited you to sign \"example document\"." msgstr "\"{teamUrl}\" vous a invité à signer \"example document\"." -#: apps/web/src/app/(signing)/sign/[token]/signing-page-view.tsx:79 +#: apps/web/src/app/(signing)/sign/[token]/signing-page-view.tsx:80 msgid "({0}) has invited you to approve this document" msgstr "({0}) vous a invité à approuver ce document" -#: apps/web/src/app/(signing)/sign/[token]/signing-page-view.tsx:76 +#: apps/web/src/app/(signing)/sign/[token]/signing-page-view.tsx:77 msgid "({0}) has invited you to sign this document" msgstr "({0}) vous a invité à signer ce document" -#: apps/web/src/app/(signing)/sign/[token]/signing-page-view.tsx:73 +#: apps/web/src/app/(signing)/sign/[token]/signing-page-view.tsx:74 msgid "({0}) has invited you to view this document" msgstr "({0}) vous a invité à consulter ce document" @@ -84,6 +84,10 @@ msgstr "{0, plural, one {# siège} other {# sièges}}" msgid "{0, plural, one {<0>You have <1>1 pending team invitation} other {<2>You have <3># pending team invitations}}" msgstr "{0, plural, one {<0>Vous avez <1>1 invitation d'équipe en attente} other {<2>Vous avez <3># invitations d'équipe en attente}}" +#: apps/web/src/app/(signing)/sign/[token]/auto-sign.tsx:196 +msgid "{0, plural, one {1 matching field} other {# matching fields}}" +msgstr "" + #: apps/web/src/app/(dashboard)/documents/[id]/edit/document-edit-page-view.tsx:129 msgid "{0, plural, one {1 Recipient} other {# Recipients}}" msgstr "{0, plural, one {1 Destinataire} other {# Destinataires}}" @@ -96,6 +100,10 @@ msgstr "{0, plural, one {En attente d'1 destinataire} other {En attente de # des msgid "{0, plural, zero {Select values} other {# selected...}}" msgstr "{0, plural, zero {Sélectionner des valeurs} other {# sélectionnées...}}" +#: apps/web/src/app/(signing)/sign/[token]/auto-sign.tsx:193 +msgid "{0}" +msgstr "" + #: apps/web/src/components/templates/manage-public-template-dialog.tsx:249 msgid "{0} direct signing templates" msgstr "{0} modèles de signature directe" @@ -474,6 +482,10 @@ msgstr "Une erreur est survenue lors de l'ajout de signataires." msgid "An error occurred while adding the fields." msgstr "Une erreur est survenue lors de l'ajout des champs." +#: apps/web/src/app/(signing)/sign/[token]/auto-sign.tsx:154 +msgid "An error occurred while auto-signing the document, some fields may not be signed. Please review and manually sign any remaining fields." +msgstr "" + #: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:176 msgid "An error occurred while creating document from template." msgstr "Une erreur est survenue lors de la création du document à partir d'un modèle." @@ -748,7 +760,7 @@ msgstr "Bannière mise à jour" msgid "Basic details" msgstr "Détails de base" -#: apps/web/src/app/(dashboard)/settings/billing/page.tsx:72 +#: apps/web/src/app/(dashboard)/settings/billing/page.tsx:74 #: apps/web/src/app/(teams)/t/[teamUrl]/settings/billing/page.tsx:61 #: apps/web/src/components/(dashboard)/settings/layout/desktop-nav.tsx:117 #: apps/web/src/components/(dashboard)/settings/layout/mobile-nav.tsx:120 @@ -810,6 +822,7 @@ msgstr "En utilisant la fonctionnalité de signature électronique, vous consent #: apps/web/src/app/(dashboard)/templates/duplicate-template-dialog.tsx:78 #: apps/web/src/app/(dashboard)/templates/move-template-dialog.tsx:119 #: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:472 +#: apps/web/src/app/(signing)/sign/[token]/auto-sign.tsx:220 #: apps/web/src/app/(signing)/sign/[token]/document-action-auth-2fa.tsx:178 #: apps/web/src/app/(signing)/sign/[token]/document-action-auth-account.tsx:71 #: apps/web/src/app/(signing)/sign/[token]/document-action-auth-passkey.tsx:164 @@ -1799,6 +1812,7 @@ msgstr "Entrez votre texte ici" #: apps/web/src/app/(dashboard)/templates/duplicate-template-dialog.tsx:51 #: apps/web/src/app/(dashboard)/templates/move-template-dialog.tsx:56 #: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:175 +#: apps/web/src/app/(signing)/sign/[token]/auto-sign.tsx:152 #: apps/web/src/app/(signing)/sign/[token]/checkbox-field.tsx:122 #: apps/web/src/app/(signing)/sign/[token]/checkbox-field.tsx:151 #: apps/web/src/app/(signing)/sign/[token]/checkbox-field.tsx:212 @@ -2230,6 +2244,10 @@ msgstr "Gérer toutes les équipes avec lesquelles vous êtes actuellement assoc msgid "Manage and view template" msgstr "Gérer et afficher le modèle" +#: apps/web/src/app/(dashboard)/settings/billing/page.tsx:136 +msgid "Manage billing" +msgstr "" + #: apps/web/src/components/templates/manage-public-template-dialog.tsx:341 msgid "Manage details for this public template" msgstr "Gérer les détails de ce modèle public" @@ -2250,7 +2268,7 @@ msgstr "Gérer les clés d'accès" msgid "Manage subscription" msgstr "Gérer l'abonnement" -#: apps/web/src/app/(dashboard)/settings/billing/billing-portal-button.tsx:66 +#: apps/web/src/app/(dashboard)/settings/billing/billing-portal-button.tsx:67 msgid "Manage Subscription" msgstr "Gérer l'abonnement" @@ -3175,6 +3193,7 @@ msgstr "Afficher des modèles dans le profil public de votre équipe pour que vo #: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:114 #: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:139 #: apps/web/src/app/(profile)/p/[url]/page.tsx:192 +#: apps/web/src/app/(signing)/sign/[token]/auto-sign.tsx:229 #: apps/web/src/app/(signing)/sign/[token]/document-action-auth-2fa.tsx:182 #: apps/web/src/app/(signing)/sign/[token]/name-field.tsx:224 #: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:124 @@ -3331,7 +3350,7 @@ msgstr "Paramètres du site" #: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:80 #: apps/web/src/app/(dashboard)/documents/duplicate-document-dialog.tsx:72 #: apps/web/src/app/(dashboard)/settings/billing/billing-plans.tsx:62 -#: apps/web/src/app/(dashboard)/settings/billing/billing-portal-button.tsx:50 +#: apps/web/src/app/(dashboard)/settings/billing/billing-portal-button.tsx:51 #: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:124 #: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:73 #: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:93 @@ -4451,7 +4470,7 @@ msgstr "Vous voulez envoyer des liens de signature élégants comme celui-ci ? < msgid "Want your own public profile?" msgstr "Vous voulez votre propre profil public ?" -#: apps/web/src/app/(dashboard)/settings/billing/billing-portal-button.tsx:40 +#: apps/web/src/app/(dashboard)/settings/billing/billing-portal-button.tsx:41 #: apps/web/src/app/(teams)/t/[teamUrl]/layout-billing-banner.tsx:55 #: apps/web/src/components/(teams)/team-billing-portal-button.tsx:31 msgid "We are unable to proceed to the billing portal at this time. Please try again, or contact support." @@ -4715,6 +4734,10 @@ msgstr "Essayiez-vous d'éditer ce document à la place ?" msgid "When you click continue, you will be prompted to add the first available authenticator on your system." msgstr "Lorsque vous cliquez sur continuer, vous serez invité à ajouter le premier authentificateur disponible sur votre système." +#: apps/web/src/app/(signing)/sign/[token]/auto-sign.tsx:183 +msgid "When you sign a document, we can automatically fill in and sign the following fields using information that has already been provided. You can also manually sign or remove any automatically signed fields afterwards if you desire." +msgstr "" + #: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:36 msgid "When you use our platform to affix your electronic signature to documents, you are consenting to do so under the Electronic Signatures in Global and National Commerce Act (E-Sign Act) and other applicable laws. This action indicates your agreement to use electronic means to sign documents and receive notifications." msgstr "Lorsque vous utilisez notre plateforme pour apposer votre signature électronique sur des documents, vous consentez à le faire conformément à la loi sur les signatures électroniques dans le commerce mondial et national (E-Sign Act) et aux autres lois applicables. Cette action indique votre accord à utiliser des moyens électroniques pour signer des documents et recevoir des notifications." @@ -4784,7 +4807,7 @@ msgstr "Vous êtes sur le point de supprimer l'utilisateur suivant de <0>{teamNa msgid "You are about to revoke access for team <0>{0} ({1}) to use your email." msgstr "Vous êtes sur le point de révoquer l'accès de l'équipe <0>{0} ({1}) à votre e-mail." -#: apps/web/src/app/(dashboard)/settings/billing/page.tsx:78 +#: apps/web/src/app/(dashboard)/settings/billing/page.tsx:80 msgid "You are currently on the <0>Free Plan." msgstr "Vous êtes actuellement sur le <0>Plan Gratuit." @@ -4836,7 +4859,7 @@ msgstr "Vous ne pouvez pas modifier un membre de l'équipe qui a un rôle plus msgid "You cannot upload encrypted PDFs" msgstr "Vous ne pouvez pas télécharger de PDF cryptés" -#: apps/web/src/app/(dashboard)/settings/billing/billing-portal-button.tsx:45 +#: apps/web/src/app/(dashboard)/settings/billing/billing-portal-button.tsx:46 msgid "You do not currently have a customer record, this should not happen. Please contact support for assistance." msgstr "Vous n'avez actuellement pas de dossier client, cela ne devrait pas se produire. Veuillez contacter le support pour obtenir de l'aide." @@ -4982,7 +5005,7 @@ msgstr "L'URL de votre site web de marque" msgid "Your branding preferences have been updated" msgstr "Vos préférences de branding ont été mises à jour" -#: apps/web/src/app/(dashboard)/settings/billing/page.tsx:119 +#: apps/web/src/app/(dashboard)/settings/billing/page.tsx:125 msgid "Your current plan is past due. Please update your payment information." msgstr "Votre plan actuel est en retard. Veuillez mettre à jour vos informations de paiement." @@ -5117,4 +5140,3 @@ msgstr "Votre jeton a été créé avec succès ! Assurez-vous de le copier car #: apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx:86 msgid "Your tokens will be shown here once you create them." msgstr "Vos jetons seront affichés ici une fois que vous les aurez créés." - diff --git a/packages/ui/primitives/dialog.tsx b/packages/ui/primitives/dialog.tsx index 0b607aaf8..ce15515e1 100644 --- a/packages/ui/primitives/dialog.tsx +++ b/packages/ui/primitives/dialog.tsx @@ -113,7 +113,7 @@ const DialogTitle = React.forwardRef< >(({ className, ...props }, ref) => ( )); diff --git a/packages/ui/primitives/document-flow/types.ts b/packages/ui/primitives/document-flow/types.ts index ca43ae2fc..613fe0403 100644 --- a/packages/ui/primitives/document-flow/types.ts +++ b/packages/ui/primitives/document-flow/types.ts @@ -45,7 +45,7 @@ export const ZDocumentFlowFormSchema = z.object({ export type TDocumentFlowFormSchema = z.infer; -export const FRIENDLY_FIELD_TYPE: Record = { +export const FRIENDLY_FIELD_TYPE: Record = { [FieldType.SIGNATURE]: msg`Signature`, [FieldType.FREE_SIGNATURE]: msg`Free Signature`, [FieldType.INITIALS]: msg`Initials`, @@ -54,9 +54,9 @@ export const FRIENDLY_FIELD_TYPE: Record [FieldType.EMAIL]: msg`Email`, [FieldType.NAME]: msg`Name`, [FieldType.NUMBER]: msg`Number`, - [FieldType.RADIO]: `Radio`, - [FieldType.CHECKBOX]: `Checkbox`, - [FieldType.DROPDOWN]: `Select`, + [FieldType.RADIO]: msg`Radio`, + [FieldType.CHECKBOX]: msg`Checkbox`, + [FieldType.DROPDOWN]: msg`Select`, }; export interface DocumentFlowStep { From 83e7a3c222c7c7938a075fa634da9197a744d82b Mon Sep 17 00:00:00 2001 From: Lucas Smith Date: Wed, 20 Nov 2024 22:49:30 +1100 Subject: [PATCH 09/12] fix: improve field sizing (#1486) ## Description Allows for smaller field sizing in addition to improving our styling when displaying labels on smaller fields. This is the minimum currently supported field size until we perform a more extensive refactor of our current drag and drop system. ## Related Issue Reported via support channels ## Changes Made - Updated our minimum size constraints - Attempted to add a general autosizing component for text and failed - Updated styling in a bunch of places to use the css `clamp()` method for dynamic sizing. --- .../app/(signing)/sign/[token]/date-field.tsx | 4 +- .../(signing)/sign/[token]/dropdown-field.tsx | 6 +- .../(signing)/sign/[token]/email-field.tsx | 4 +- .../(signing)/sign/[token]/initials-field.tsx | 4 +- .../app/(signing)/sign/[token]/name-field.tsx | 2 +- .../(signing)/sign/[token]/number-field.tsx | 7 +- .../sign/[token]/signature-field.tsx | 2 +- .../app/(signing)/sign/[token]/text-field.tsx | 8 +- .../(dashboard)/avatar/stack-avatar.tsx | 2 - package-lock.json | 23 ++- packages/lib/translations/de/common.po | 82 ++++----- packages/lib/translations/de/web.po | 20 +-- packages/lib/translations/en/common.po | 82 ++++----- packages/lib/translations/en/web.po | 20 +-- packages/lib/translations/es/common.po | 82 ++++----- packages/lib/translations/es/web.po | 20 +-- packages/lib/translations/fr/common.po | 82 ++++----- packages/lib/translations/fr/web.po | 20 +-- packages/tailwind-config/index.cjs | 6 +- packages/tailwind-config/package.json | 8 +- packages/ui/primitives/auto-sized-text.tsx | 157 ++++++++++++++++++ .../primitives/document-flow/add-fields.tsx | 23 ++- .../primitives/document-flow/field-icon.tsx | 7 +- .../primitives/document-flow/field-item.tsx | 8 +- .../document-flow/show-field-item.tsx | 8 +- .../template-flow/add-template-fields.tsx | 23 ++- 26 files changed, 448 insertions(+), 262 deletions(-) create mode 100644 packages/ui/primitives/auto-sized-text.tsx diff --git a/apps/web/src/app/(signing)/sign/[token]/date-field.tsx b/apps/web/src/app/(signing)/sign/[token]/date-field.tsx index 379ce1d4c..5b573d6f6 100644 --- a/apps/web/src/app/(signing)/sign/[token]/date-field.tsx +++ b/apps/web/src/app/(signing)/sign/[token]/date-field.tsx @@ -144,13 +144,13 @@ export const DateField = ({ )} {!field.inserted && ( -

+

Date

)} {field.inserted && ( -

+

{localDateString}

)} diff --git a/apps/web/src/app/(signing)/sign/[token]/dropdown-field.tsx b/apps/web/src/app/(signing)/sign/[token]/dropdown-field.tsx index d47bd91be..ccc7df777 100644 --- a/apps/web/src/app/(signing)/sign/[token]/dropdown-field.tsx +++ b/apps/web/src/app/(signing)/sign/[token]/dropdown-field.tsx @@ -178,7 +178,7 @@ export const DropdownField = ({ )} {!field.inserted && ( -

+