From b762561f11df49d6e0aa93f3f181392f3655f26c Mon Sep 17 00:00:00 2001 From: Konrad <11725227+mKoonrad@users.noreply.github.com> Date: Mon, 9 Feb 2026 00:52:00 +0100 Subject: [PATCH 01/33] chore(i18n): add context to ambiguous message (#2454) --- .../_authenticated+/t.$teamUrl+/settings.public-profile.tsx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.public-profile.tsx b/apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.public-profile.tsx index e4453d960..ca0ccbef4 100644 --- a/apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.public-profile.tsx +++ b/apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.public-profile.tsx @@ -207,7 +207,9 @@ export default function PublicProfilePage({ loaderData }: Route.ComponentProps) directTemplates={enabledPrivateDirectTemplates} trigger={ - Link template + + Link template + } /> From da89ce7c9a8b499bf47b098ae91940ff16eb3a53 Mon Sep 17 00:00:00 2001 From: Konrad <11725227+mKoonrad@users.noreply.github.com> Date: Mon, 9 Feb 2026 00:52:50 +0100 Subject: [PATCH 02/33] fix(i18n): add localization context to dialog messages (#2452) --- .../app/components/dialogs/organisation-group-delete-dialog.tsx | 2 +- apps/remix/app/components/dialogs/team-group-delete-dialog.tsx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/remix/app/components/dialogs/organisation-group-delete-dialog.tsx b/apps/remix/app/components/dialogs/organisation-group-delete-dialog.tsx index 17a389622..6b63fe87d 100644 --- a/apps/remix/app/components/dialogs/organisation-group-delete-dialog.tsx +++ b/apps/remix/app/components/dialogs/organisation-group-delete-dialog.tsx @@ -77,7 +77,7 @@ export const OrganisationGroupDeleteDialog = ({ - + You are about to remove the following group from{' '} {organisation.name}. diff --git a/apps/remix/app/components/dialogs/team-group-delete-dialog.tsx b/apps/remix/app/components/dialogs/team-group-delete-dialog.tsx index f42fd4630..5496419c7 100644 --- a/apps/remix/app/components/dialogs/team-group-delete-dialog.tsx +++ b/apps/remix/app/components/dialogs/team-group-delete-dialog.tsx @@ -81,7 +81,7 @@ export const TeamGroupDeleteDialog = ({ - + You are about to remove the following group from{' '} {team.name}. From e3b0087be62dfd43595c0ebf096ecdb7a5e82b30 Mon Sep 17 00:00:00 2001 From: Ephraim Duncan <55143799+ephraimduncan@users.noreply.github.com> Date: Mon, 9 Feb 2026 00:24:45 +0000 Subject: [PATCH 03/33] feat: create plain customer (#2442) Co-authored-by: Catalin Pit --- .../server-only/user/submit-support-ticket.ts | 35 +++++++++++++++++-- 1 file changed, 33 insertions(+), 2 deletions(-) diff --git a/packages/lib/server-only/user/submit-support-ticket.ts b/packages/lib/server-only/user/submit-support-ticket.ts index 91c55800d..283cfd7b8 100644 --- a/packages/lib/server-only/user/submit-support-ticket.ts +++ b/packages/lib/server-only/user/submit-support-ticket.ts @@ -20,6 +20,12 @@ export const submitSupportTicket = async ({ organisationId, teamId, }: SubmitSupportTicketOptions) => { + if (!plainClient) { + throw new AppError(AppErrorCode.NOT_SETUP, { + message: 'Support ticket system is not configured', + }); + } + const user = await prisma.user.findFirst({ where: { id: userId, @@ -52,6 +58,29 @@ export const submitSupportTicket = async ({ }) : null; + // Ensure the customer exists in Plain before creating a thread + const plainCustomer = await plainClient.upsertCustomer({ + identifier: { + emailAddress: user.email, + }, + onCreate: { + // If the user doesn't have a name, default to their email + fullName: user.name || user.email, + email: { + email: user.email, + isVerified: !!user.emailVerified, + }, + }, + // No need to update the customer if it already exists + onUpdate: {}, + }); + + if (plainCustomer.error) { + throw new AppError(AppErrorCode.UNKNOWN_ERROR, { + message: `Failed to create customer in support system: ${plainCustomer.error.message}`, + }); + } + const customMessage = ` Organisation: ${organisation.name} (${organisation.id}) Team: ${team ? `${team.name} (${team.id})` : 'No team provided'} @@ -60,12 +89,14 @@ ${message}`; const res = await plainClient.createThread({ title: subject, - customerIdentifier: { emailAddress: user.email }, + customerIdentifier: { customerId: plainCustomer.data.customer.id }, components: [{ componentText: { text: customMessage } }], }); if (res.error) { - throw new Error(res.error.message); + throw new AppError(AppErrorCode.UNKNOWN_ERROR, { + message: `Failed to create support ticket: ${res.error.message}`, + }); } return res; From e222a872d2d852ca2cd78f3235670b6430571243 Mon Sep 17 00:00:00 2001 From: Konrad <11725227+mKoonrad@users.noreply.github.com> Date: Mon, 9 Feb 2026 03:20:12 +0100 Subject: [PATCH 04/33] fix(i18n): rewrite audit log messages to support correct grammar (#2455) --- packages/lib/utils/document-audit-logs.ts | 254 +++++++++++++--------- 1 file changed, 153 insertions(+), 101 deletions(-) diff --git a/packages/lib/utils/document-audit-logs.ts b/packages/lib/utils/document-audit-logs.ts index e427804d6..a769680d8 100644 --- a/packages/lib/utils/document-audit-logs.ts +++ b/packages/lib/utils/document-audit-logs.ts @@ -294,8 +294,10 @@ export const formatDocumentAuditLogAction = ( auditLog: TDocumentAuditLog, userId?: number, ) => { - const prefix = - userId === auditLog.userId ? i18n._(msg`You`) : auditLog.name || auditLog.email || ''; + const isCurrentUser = userId === auditLog.userId; + const user = auditLog.name || auditLog.email || ''; + + const prefix = isCurrentUser ? i18n._(msg`You`) : user || ''; const description = match(auditLog) .with({ type: DOCUMENT_AUDIT_LOG_TYPE.FIELD_CREATED }, () => ({ @@ -303,245 +305,295 @@ export const formatDocumentAuditLogAction = ( message: `A field was added`, context: `Audit log format`, }), - identified: msg`${prefix} added a field`, + you: msg`You added a field`, + user: msg`${user} added a field`, })) .with({ type: DOCUMENT_AUDIT_LOG_TYPE.FIELD_DELETED }, () => ({ anonymous: msg({ message: `A field was removed`, context: `Audit log format`, }), - identified: msg`${prefix} removed a field`, + you: msg`You removed a field`, + user: msg`${user} removed a field`, })) .with({ type: DOCUMENT_AUDIT_LOG_TYPE.FIELD_UPDATED }, () => ({ anonymous: msg({ message: `A field was updated`, context: `Audit log format`, }), - identified: msg`${prefix} updated a field`, + you: msg`You updated a field`, + user: msg`${user} updated a field`, })) .with({ type: DOCUMENT_AUDIT_LOG_TYPE.RECIPIENT_CREATED }, () => ({ anonymous: msg({ message: `A recipient was added`, context: `Audit log format`, }), - identified: msg`${prefix} added a recipient`, + you: msg`You added a recipient`, + user: msg`${user} added a recipient`, })) .with({ type: DOCUMENT_AUDIT_LOG_TYPE.RECIPIENT_DELETED }, () => ({ anonymous: msg({ message: `A recipient was removed`, context: `Audit log format`, }), - identified: msg`${prefix} removed a recipient`, + you: msg`You removed a recipient`, + user: msg`${user} removed a recipient`, })) .with({ type: DOCUMENT_AUDIT_LOG_TYPE.RECIPIENT_UPDATED }, () => ({ anonymous: msg({ message: `A recipient was updated`, context: `Audit log format`, }), - identified: msg`${prefix} updated a recipient`, + you: msg`You updated a recipient`, + user: msg`${user} updated a recipient`, })) .with({ type: DOCUMENT_AUDIT_LOG_TYPE.DOCUMENT_CREATED }, () => ({ anonymous: msg({ message: `Document created`, context: `Audit log format`, }), - identified: msg`${prefix} created the document`, + you: msg`You created the document`, + user: msg`${user} created the document`, })) .with({ type: DOCUMENT_AUDIT_LOG_TYPE.DOCUMENT_DELETED }, () => ({ anonymous: msg({ message: `Document deleted`, context: `Audit log format`, }), - identified: msg`${prefix} deleted the document`, + you: msg`You deleted the document`, + user: msg`${user} deleted the document`, })) .with({ type: DOCUMENT_AUDIT_LOG_TYPE.DOCUMENT_FIELDS_AUTO_INSERTED }, () => ({ anonymous: msg({ message: `System auto inserted fields`, context: `Audit log format`, }), - identified: msg`System auto inserted fields`, + you: msg({ + message: `System auto inserted fields`, + context: `Audit log format`, + }), + user: msg({ + message: `System auto inserted fields`, + context: `Audit log format`, + }), })) .with({ type: DOCUMENT_AUDIT_LOG_TYPE.DOCUMENT_FIELD_INSERTED }, () => ({ anonymous: msg({ message: `Field signed`, context: `Audit log format`, }), - identified: msg`${prefix} signed a field`, + you: msg`You signed a field`, + user: msg`${user} signed a field`, })) .with({ type: DOCUMENT_AUDIT_LOG_TYPE.DOCUMENT_FIELD_UNINSERTED }, () => ({ anonymous: msg({ message: `Field unsigned`, context: `Audit log format`, }), - identified: msg`${prefix} unsigned a field`, + you: msg`You unsigned a field`, + user: msg`${user} unsigned a field`, })) .with({ type: DOCUMENT_AUDIT_LOG_TYPE.DOCUMENT_FIELD_PREFILLED }, () => ({ anonymous: msg({ message: `Field prefilled by assistant`, context: `Audit log format`, }), - identified: msg`${prefix} prefilled a field`, + you: msg`You prefilled a field`, + user: msg`${user} prefilled a field`, })) .with({ type: DOCUMENT_AUDIT_LOG_TYPE.DOCUMENT_VISIBILITY_UPDATED }, () => ({ anonymous: msg({ message: `Document visibility updated`, context: `Audit log format`, }), - identified: msg`${prefix} updated the document visibility`, + you: msg`You updated the document visibility`, + user: msg`${user} updated the document visibility`, })) .with({ type: DOCUMENT_AUDIT_LOG_TYPE.DOCUMENT_GLOBAL_AUTH_ACCESS_UPDATED }, () => ({ anonymous: msg({ message: `Document access auth updated`, context: `Audit log format`, }), - identified: msg`${prefix} updated the document access auth requirements`, + you: msg`You updated the document access auth requirements`, + user: msg`${user} updated the document access auth requirements`, })) .with({ type: DOCUMENT_AUDIT_LOG_TYPE.DOCUMENT_GLOBAL_AUTH_ACTION_UPDATED }, () => ({ anonymous: msg({ message: `Document signing auth updated`, context: `Audit log format`, }), - identified: msg`${prefix} updated the document signing auth requirements`, + you: msg`You updated the document signing auth requirements`, + user: msg`${user} updated the document signing auth requirements`, })) .with({ type: DOCUMENT_AUDIT_LOG_TYPE.DOCUMENT_META_UPDATED }, () => ({ anonymous: msg({ message: `Document updated`, context: `Audit log format`, }), - identified: msg`${prefix} updated the document`, + you: msg`You updated the document`, + user: msg`${user} updated the document`, })) .with({ type: DOCUMENT_AUDIT_LOG_TYPE.DOCUMENT_OPENED }, () => ({ anonymous: msg({ message: `Document opened`, context: `Audit log format`, }), - identified: msg`${prefix} opened the document`, + you: msg`You opened the document`, + user: msg`${user} opened the document`, })) .with({ type: DOCUMENT_AUDIT_LOG_TYPE.DOCUMENT_VIEWED }, () => ({ anonymous: msg({ message: `Document viewed`, context: `Audit log format`, }), - identified: msg`${prefix} viewed the document`, + you: msg`You viewed the document`, + user: msg`${user} viewed the document`, })) .with({ type: DOCUMENT_AUDIT_LOG_TYPE.DOCUMENT_TITLE_UPDATED }, () => ({ anonymous: msg({ message: `Document title updated`, context: `Audit log format`, }), - identified: msg`${prefix} updated the document title`, + you: msg`You updated the document title`, + user: msg`${user} updated the document title`, })) .with({ type: DOCUMENT_AUDIT_LOG_TYPE.DOCUMENT_EXTERNAL_ID_UPDATED }, () => ({ anonymous: msg({ message: `Document external ID updated`, context: `Audit log format`, }), - identified: msg`${prefix} updated the document external ID`, + you: msg`You updated the document external ID`, + user: msg`${user} updated the document external ID`, })) .with({ type: DOCUMENT_AUDIT_LOG_TYPE.DOCUMENT_SENT }, () => ({ anonymous: msg({ message: `Document sent`, context: `Audit log format`, }), - identified: msg`${prefix} sent the document`, + you: msg`You sent the document`, + user: msg`${user} sent the document`, })) .with({ type: DOCUMENT_AUDIT_LOG_TYPE.DOCUMENT_MOVED_TO_TEAM }, () => ({ anonymous: msg({ message: `Document moved to team`, context: `Audit log format`, }), - identified: msg`${prefix} moved the document to team`, + you: msg`You moved the document to team`, + user: msg`${user} moved the document to team`, })) .with({ type: DOCUMENT_AUDIT_LOG_TYPE.DOCUMENT_RECIPIENT_COMPLETED }, ({ data }) => { - const userName = prefix || i18n._(msg`Recipient`); - - const result = match(data.recipientRole) - .with(RecipientRole.SIGNER, () => msg`${userName} signed the document`) - .with(RecipientRole.VIEWER, () => msg`${userName} viewed the document`) - .with(RecipientRole.APPROVER, () => msg`${userName} approved the document`) - .with(RecipientRole.CC, () => msg`${userName} CC'd the document`) - .otherwise(() => msg`${userName} completed their task`); - - return { - anonymous: result, - identified: result, - }; + return match(data.recipientRole) + .with(RecipientRole.SIGNER, () => ({ + anonymous: msg`Recipient signed the document`, + you: msg`You signed the document`, + user: msg`${user} signed the document`, + })) + .with(RecipientRole.VIEWER, () => ({ + anonymous: msg`Recipient viewed the document`, + you: msg`You viewed the document`, + user: msg`${user} viewed the document`, + })) + .with(RecipientRole.APPROVER, () => ({ + anonymous: msg`Recipient approved the document`, + you: msg`You approved the document`, + user: msg`${user} approved the document`, + })) + .with(RecipientRole.CC, () => ({ + anonymous: msg`Recipient CC'd the document`, + you: msg`You CC'd the document`, + user: msg`${user} CC'd the document`, + })) + .otherwise(() => ({ + anonymous: msg`Recipient completed their task`, + you: msg`You completed your task`, + user: msg`${user} completed their task`, + })); }) - .with({ type: DOCUMENT_AUDIT_LOG_TYPE.DOCUMENT_RECIPIENT_REJECTED }, ({ data }) => { - const userName = prefix || i18n._(msg`Recipient`); - - const result = msg`${userName} rejected the document`; - - return { - anonymous: result, - identified: result, - }; - }) - .with({ type: DOCUMENT_AUDIT_LOG_TYPE.DOCUMENT_ACCESS_AUTH_2FA_REQUESTED }, ({ data }) => { - const userName = prefix || i18n._(msg`Recipient`); - - const result = msg`${userName} requested a 2FA token for the document`; - - return { - anonymous: result, - identified: result, - }; - }) - .with({ type: DOCUMENT_AUDIT_LOG_TYPE.DOCUMENT_ACCESS_AUTH_2FA_VALIDATED }, ({ data }) => { - const userName = prefix || i18n._(msg`Recipient`); - - const result = msg`${userName} validated a 2FA token for the document`; - - return { - anonymous: result, - identified: result, - }; - }) - .with({ type: DOCUMENT_AUDIT_LOG_TYPE.DOCUMENT_ACCESS_AUTH_2FA_FAILED }, ({ data }) => { - const userName = prefix || i18n._(msg`Recipient`); - - const result = msg`${userName} failed to validate a 2FA token for the document`; - - return { - anonymous: result, - identified: result, - }; - }) - .with({ type: DOCUMENT_AUDIT_LOG_TYPE.EMAIL_SENT }, ({ data }) => ({ - anonymous: data.isResending ? msg`Email resent` : msg`Email sent`, - identified: data.isResending - ? msg`${prefix} resent an email to ${data.recipientEmail}` - : msg`${prefix} sent an email to ${data.recipientEmail}`, + .with({ type: DOCUMENT_AUDIT_LOG_TYPE.DOCUMENT_RECIPIENT_REJECTED }, () => ({ + anonymous: msg`Recipient rejected the document`, + you: msg`You rejected the document`, + user: msg`${user} rejected the document`, })) + .with({ type: DOCUMENT_AUDIT_LOG_TYPE.DOCUMENT_ACCESS_AUTH_2FA_REQUESTED }, () => ({ + anonymous: msg`Recipient requested a 2FA token for the document`, + you: msg`You requested a 2FA token for the document`, + user: msg`${user} requested a 2FA token for the document`, + })) + .with({ type: DOCUMENT_AUDIT_LOG_TYPE.DOCUMENT_ACCESS_AUTH_2FA_VALIDATED }, () => ({ + anonymous: msg`Recipient validated a 2FA token for the document`, + you: msg`You validated a 2FA token for the document`, + user: msg`${user} validated a 2FA token for the document`, + })) + .with({ type: DOCUMENT_AUDIT_LOG_TYPE.DOCUMENT_ACCESS_AUTH_2FA_FAILED }, () => ({ + anonymous: msg`Recipient failed to validate a 2FA token for the document`, + you: msg`You failed to validate a 2FA token for the document`, + user: msg`${user} failed to validate a 2FA token for the document`, + })) + .with({ type: DOCUMENT_AUDIT_LOG_TYPE.EMAIL_SENT }, ({ data }) => { + if (data.isResending) { + return { + anonymous: msg({ + message: `Email resent`, + context: `Audit log format`, + }), + you: msg`You resent an email to ${data.recipientEmail}`, + user: msg`${user} resent an email to ${data.recipientEmail}`, + }; + } + return { + anonymous: msg({ + message: `Email sent`, + context: `Audit log format`, + }), + you: msg`You sent an email to ${data.recipientEmail}`, + user: msg`${user} sent an email to ${data.recipientEmail}`, + }; + }) .with({ type: DOCUMENT_AUDIT_LOG_TYPE.DOCUMENT_COMPLETED }, () => ({ - anonymous: msg({ - message: `Document completed`, - context: `Audit log format`, - }), - identified: msg({ - message: `Document completed`, - context: `Audit log format`, - }), + anonymous: msg({ message: `Document completed`, context: `Audit log format` }), + you: msg({ message: `Document completed`, context: `Audit log format` }), + user: msg({ message: `Document completed`, context: `Audit log format` }), })) .with({ type: DOCUMENT_AUDIT_LOG_TYPE.ENVELOPE_ITEM_CREATED }, ({ data }) => ({ - anonymous: msg`Envelope item created`, - identified: msg`${prefix} created an envelope item with title ${data.envelopeItemTitle}`, - })) - .with({ type: DOCUMENT_AUDIT_LOG_TYPE.ENVELOPE_ITEM_DELETED }, ({ data }) => ({ - anonymous: msg`Envelope item deleted`, - identified: msg`${prefix} deleted an envelope item with title ${data.envelopeItemTitle}`, - })) - .with({ type: DOCUMENT_AUDIT_LOG_TYPE.DOCUMENT_DELEGATED_OWNER_CREATED }, ({ data }) => ({ anonymous: msg({ - message: `Document ownership delegated`, + message: `Envelope item created`, context: `Audit log format`, }), - identified: msg`The document ownership was delegated to ${data.delegatedOwnerName || data.delegatedOwnerEmail} on behalf of ${data.teamName}`, + you: msg`You created an envelope item with title ${data.envelopeItemTitle}`, + user: msg`${user} created an envelope item with title ${data.envelopeItemTitle}`, })) + .with({ type: DOCUMENT_AUDIT_LOG_TYPE.ENVELOPE_ITEM_DELETED }, ({ data }) => ({ + anonymous: msg({ + message: `Envelope item deleted`, + context: `Audit log format`, + }), + you: msg`You deleted an envelope item with title ${data.envelopeItemTitle}`, + user: msg`${user} deleted an envelope item with title ${data.envelopeItemTitle}`, + })) + .with({ type: DOCUMENT_AUDIT_LOG_TYPE.DOCUMENT_DELEGATED_OWNER_CREATED }, ({ data }) => { + const message = msg({ + message: `The document ownership was delegated to ${data.delegatedOwnerName || data.delegatedOwnerEmail} on behalf of ${data.teamName}`, + context: `Audit log format`, + }); + return { + anonymous: message, + you: message, + user: message, + }; + }) .exhaustive(); + let selectedDescription = description.anonymous; + + if (isCurrentUser) { + selectedDescription = description.you; + } else if (user) { + selectedDescription = description.user; + } + return { prefix, - description: i18n._(prefix ? description.identified : description.anonymous), + description: i18n._(selectedDescription), }; }; From d91414697d4cc0fc782d733be2b381d64b19caa8 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 9 Feb 2026 17:30:46 +1100 Subject: [PATCH 05/33] chore: extract translations (#2429) --- packages/lib/translations/de/web.po | 668 ++++++++++++++++++------- packages/lib/translations/en/web.po | 652 +++++++++++++++++------- packages/lib/translations/es/web.po | 668 ++++++++++++++++++------- packages/lib/translations/fr/web.po | 668 ++++++++++++++++++------- packages/lib/translations/it/web.po | 668 ++++++++++++++++++------- packages/lib/translations/ja/web.po | 668 ++++++++++++++++++------- packages/lib/translations/ko/web.po | 668 ++++++++++++++++++------- packages/lib/translations/nl/web.po | 668 ++++++++++++++++++------- packages/lib/translations/pl/web.po | 668 ++++++++++++++++++------- packages/lib/translations/pt-BR/web.po | 666 +++++++++++++++++------- packages/lib/translations/zh/web.po | 668 ++++++++++++++++++------- 11 files changed, 5326 insertions(+), 2004 deletions(-) diff --git a/packages/lib/translations/de/web.po b/packages/lib/translations/de/web.po index 313a8050a..cf164eccd 100644 --- a/packages/lib/translations/de/web.po +++ b/packages/lib/translations/de/web.po @@ -22,6 +22,11 @@ msgstr "" msgid ".PDF documents accepted (max {APP_DOCUMENT_UPLOAD_SIZE_LIMIT}MB)" msgstr ".PDF-Dokumente akzeptiert (max. {APP_DOCUMENT_UPLOAD_SIZE_LIMIT} MB)" +#. placeholder {0}: invalidEmails[0].value +#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx +msgid "\"{0}\" is not a valid email address." +msgstr "" + #. placeholder {0}: field.customText #. placeholder {1}: timezone || '' #: apps/remix/app/components/general/document-signing/document-signing-date-field.tsx @@ -101,6 +106,17 @@ msgstr "{0, plural, one {# Feld} other {# Felder}}" msgid "{0, plural, one {# folder} other {# folders}}" msgstr "{0, plural, one {# Ordner} other {# Ordner}}" +#. placeholder {0}: result.deletedCount +#. placeholder {1}: result.failedIds.length +#: apps/remix/app/components/dialogs/envelopes-bulk-delete-dialog.tsx +msgid "{0, plural, one {# item deleted.} other {# items deleted.}} {1, plural, one {# item could not be deleted.} other {# items could not be deleted.}}" +msgstr "" + +#. placeholder {0}: result.deletedCount +#: apps/remix/app/components/dialogs/envelopes-bulk-delete-dialog.tsx +msgid "{0, plural, one {# item has been deleted.} other {# items have been deleted.}}" +msgstr "" + #. placeholder {0}: detectedRecipients.length #: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx msgid "{0, plural, one {# recipient have been added from AI detection.} other {# recipients have been added from AI detection.}}" @@ -243,17 +259,6 @@ msgstr "{0} hat Sie eingeladen, das Dokument \"{1}\" {recipientActionVerb}." msgid "{0} invited you to {recipientActionVerb} a document" msgstr "{0} hat dich eingeladen, ein Dokument {recipientActionVerb}" -#. placeholder {0}: result.deletedCount -#. placeholder {1}: result.failedIds.length -#: apps/remix/app/components/dialogs/envelopes-bulk-delete-dialog.tsx -msgid "{0} item(s) deleted. {1} item(s) could not be deleted." -msgstr "" - -#. placeholder {0}: result.deletedCount -#: apps/remix/app/components/dialogs/envelopes-bulk-delete-dialog.tsx -msgid "{0} item(s) have been deleted." -msgstr "" - #. placeholder {0}: remaining.documents #. placeholder {1}: quota.documents #: apps/remix/app/components/general/document/document-upload-button-legacy.tsx @@ -346,110 +351,6 @@ msgstr "{MAXIMUM_PASSKEYS, plural, one {Sie können nicht mehr als # Zugangsschl msgid "{maximumEnvelopeItemCount, plural, one {You cannot upload more than # item per envelope.} other {You cannot upload more than # items per envelope.}}" msgstr "{maximumEnvelopeItemCount, plural, one {Sie können nicht mehr als # Element pro Umschlag hochladen.} other {Sie können nicht mehr als # Elemente pro Umschlag hochladen.}}" -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} added a field" -msgstr "{prefix} hat ein Feld hinzugefügt" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} added a recipient" -msgstr "{prefix} hat einen Empfänger hinzugefügt" - -#. placeholder {0}: data.envelopeItemTitle -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} created an envelope item with title {0}" -msgstr "{prefix} hat ein Umschlag-Element mit dem Titel {0} erstellt" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} created the document" -msgstr "{prefix} hat das Dokument erstellt" - -#. placeholder {0}: data.envelopeItemTitle -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} deleted an envelope item with title {0}" -msgstr "{prefix} hat ein Umschlag-Element mit dem Titel {0} gelöscht" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} deleted the document" -msgstr "{prefix} hat das Dokument gelöscht" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} moved the document to team" -msgstr "{prefix} hat das Dokument ins Team verschoben" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} opened the document" -msgstr "{prefix} hat das Dokument geöffnet" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} prefilled a field" -msgstr "{prefix} hat ein Feld vorab ausgefüllt" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} removed a field" -msgstr "{prefix} hat ein Feld entfernt" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} removed a recipient" -msgstr "{prefix} hat einen Empfänger entfernt" - -#. placeholder {0}: data.recipientEmail -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} resent an email to {0}" -msgstr "{prefix} hat eine E-Mail an {0} erneut gesendet" - -#. placeholder {0}: data.recipientEmail -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} sent an email to {0}" -msgstr "{prefix} hat eine E-Mail an {0} gesendet" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} sent the document" -msgstr "{prefix} hat das Dokument gesendet" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} signed a field" -msgstr "{prefix} hat ein Feld unterschrieben" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} unsigned a field" -msgstr "{prefix} hat ein Feld ungültig gemacht" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} updated a field" -msgstr "{prefix} hat ein Feld aktualisiert" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} updated a recipient" -msgstr "{prefix} hat einen Empfänger aktualisiert" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} updated the document" -msgstr "{prefix} hat das Dokument aktualisiert" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} updated the document access auth requirements" -msgstr "{prefix} hat die Anforderungen an die Dokumentenzugriffsautorisierung aktualisiert" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} updated the document external ID" -msgstr "{prefix} hat die externe ID des Dokuments aktualisiert" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} updated the document signing auth requirements" -msgstr "{prefix} hat die Authentifizierungsanforderungen für die Dokumentenunterzeichnung aktualisiert" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} updated the document title" -msgstr "{prefix} hat den Titel des Dokuments aktualisiert" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} updated the document visibility" -msgstr "{prefix} hat die Sichtbarkeit des Dokuments aktualisiert" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} viewed the document" -msgstr "{prefix} hat das Dokument angesehen" - #: apps/remix/app/components/general/direct-template/direct-template-page.tsx msgid "{recipientActionVerb} document" msgstr "{recipientActionVerb} Dokument" @@ -510,47 +411,148 @@ msgstr "{teamName} hat dich eingeladen, {0}<0/>\"{documentName}\"" msgid "{teamName} has invited you to {action} {documentName}" msgstr "{teamName} hat Sie eingeladen, {action} {documentName}" +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} added a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} added a recipient" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} approved the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} CC'd the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} completed their task" +msgstr "" + +#. placeholder {0}: data.envelopeItemTitle +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} created an envelope item with title {0}" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} created the document" +msgstr "" + +#. placeholder {0}: data.envelopeItemTitle +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} deleted an envelope item with title {0}" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} deleted the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} failed to validate a 2FA token for the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} moved the document to team" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} opened the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} prefilled a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} rejected the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} removed a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} removed a recipient" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} requested a 2FA token for the document" +msgstr "" + +#. placeholder {0}: data.recipientEmail +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} resent an email to {0}" +msgstr "" + +#. placeholder {0}: data.recipientEmail +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} sent an email to {0}" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} sent the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} signed a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} signed the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} unsigned a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} updated a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} updated a recipient" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} updated the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} updated the document access auth requirements" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} updated the document external ID" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} updated the document signing auth requirements" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} updated the document title" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} updated the document visibility" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} validated a 2FA token for the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} viewed the document" +msgstr "" + #: apps/remix/app/components/tables/internal-audit-log-table.tsx #: packages/lib/server-only/pdf/render-audit-logs.ts msgid "{userAgent}" msgstr "{userAgent}" -#: packages/lib/utils/document-audit-logs.ts -msgid "{userName} approved the document" -msgstr "{userName} hat das Dokument genehmigt" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{userName} CC'd the document" -msgstr "{userName} hat das Dokument in CC gesetzt" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{userName} completed their task" -msgstr "{userName} hat ihre Aufgabe abgeschlossen" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{userName} failed to validate a 2FA token for the document" -msgstr "{userName} konnte das 2FA-Token für das Dokument nicht validieren" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{userName} rejected the document" -msgstr "{userName} hat das Dokument abgelehnt" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{userName} requested a 2FA token for the document" -msgstr "{userName} hat ein 2FA-Token für das Dokument angefordert" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{userName} signed the document" -msgstr "{userName} hat das Dokument unterschrieben" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{userName} validated a 2FA token for the document" -msgstr "{userName} hat ein 2FA-Token für das Dokument validiert" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{userName} viewed the document" -msgstr "{userName} hat das Dokument angesehen" - #: apps/remix/app/components/dialogs/sign-field-checkbox-dialog.tsx msgid "{validationLength, plural, one {Select at least # option} other {Select at least # options}}" msgstr "{validationLength, plural, one {Wählen Sie mindestens # Option} other {Wählen Sie mindestens # Optionen}}" @@ -1084,6 +1086,7 @@ msgstr "Aktionen" msgid "Active" msgstr "Aktiv" +#: apps/remix/app/components/general/admin-license-card.tsx #: apps/remix/app/components/tables/user-billing-organisations-table.tsx msgctxt "Subscription status" msgid "Active" @@ -1258,6 +1261,10 @@ msgstr "Empfänger hinzufügen" msgid "Add Recipients" msgstr "Empfänger hinzufügen" +#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx +msgid "Add recipients to your document" +msgstr "" + #: apps/remix/app/components/embed/authoring/configure-document-recipients.tsx #: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx #: packages/ui/primitives/document-flow/add-signers.tsx @@ -2197,6 +2204,10 @@ msgstr "Durch die Verwendung der elektronischen Unterschriftsfunktion stimmen Si msgid "Can prepare" msgstr "Kann vorbereiten" +#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx +msgid "Can't find someone?" +msgstr "" + #: apps/remix/app/components/dialogs/admin-organisation-create-dialog.tsx #: apps/remix/app/components/dialogs/admin-organisation-member-update-dialog.tsx #: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx @@ -2359,7 +2370,9 @@ msgstr "Diagramme" #: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx #: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-drag-drop.tsx #: packages/lib/utils/fields.ts +#: packages/ui/primitives/document-flow/add-fields.tsx #: packages/ui/primitives/document-flow/types.ts +#: packages/ui/primitives/template-flow/add-template-fields.tsx msgid "Checkbox" msgstr "Kontrollkästchen" @@ -2516,7 +2529,6 @@ msgstr "Vergleichen Sie alle Pläne und Funktionen im Detail" #: apps/remix/app/components/embed/embed-document-signing-page-v1.tsx #: apps/remix/app/components/embed/embed-document-signing-page-v1.tsx #: apps/remix/app/components/embed/multisign/multi-sign-document-signing-view.tsx -#: apps/remix/app/components/forms/signup.tsx #: apps/remix/app/components/general/document-signing/document-signing-complete-dialog.tsx #: apps/remix/app/components/general/document-signing/document-signing-complete-dialog.tsx msgid "Complete" @@ -2864,6 +2876,7 @@ msgstr "Erstellen Sie ein Support-Ticket" msgid "Create a team to collaborate with your team members." msgstr "Ein Team erstellen, um mit Ihren Teammitgliedern zusammenzuarbeiten." +#: apps/remix/app/components/forms/signup.tsx #: apps/remix/app/routes/_unauthenticated+/organisation.invite.$token.tsx #: packages/email/template-components/template-document-self-signed.tsx msgid "Create account" @@ -3562,6 +3575,10 @@ msgstr "Möchten Sie diese Vorlage löschen?" msgid "Do you want to duplicate this template?" msgstr "Möchten Sie diese Vorlage duplizieren?" +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "Documenso License" +msgstr "" + #: apps/remix/app/components/dialogs/account-delete-dialog.tsx msgid "Documenso will delete <0>all of your documents0>, along with all of your completed documents, signatures, and all other resources belonging to your Account." msgstr "Documenso wird <0>alle Ihre Dokumente0> löschen, zusammen mit allen abgeschlossenen Dokumenten, Unterschriften und allen anderen Ressourcen, die zu Ihrem Konto gehören." @@ -3629,6 +3646,7 @@ msgstr "Dokument storniert" msgid "Document completed" msgstr "Dokument abgeschlossen" +#: packages/lib/utils/document-audit-logs.ts #: packages/lib/utils/document-audit-logs.ts #: packages/lib/utils/document-audit-logs.ts msgctxt "Audit log format" @@ -3769,11 +3787,6 @@ msgctxt "Audit log format" msgid "Document opened" msgstr "Dokument geöffnet" -#: packages/lib/utils/document-audit-logs.ts -msgctxt "Audit log format" -msgid "Document ownership delegated" -msgstr "Dokumenteigentum delegiert" - #: apps/remix/app/components/general/document/document-status.tsx msgid "Document pending" msgstr "Dokument ausstehend" @@ -4270,8 +4283,9 @@ msgid "Email preferences updated" msgstr "E-Mail-Präferenzen aktualisiert" #: packages/lib/utils/document-audit-logs.ts +msgctxt "Audit log format" msgid "Email resent" -msgstr "E-Mail erneut gesendet" +msgstr "" #: apps/remix/app/components/dialogs/envelope-distribute-dialog.tsx #: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx @@ -4281,8 +4295,9 @@ msgid "Email Sender" msgstr "E-Mail-Absender" #: packages/lib/utils/document-audit-logs.ts +msgctxt "Audit log format" msgid "Email sent" -msgstr "E-Mail gesendet" +msgstr "" #: apps/remix/app/routes/_unauthenticated+/check-email.tsx msgid "Email sent!" @@ -4526,12 +4541,14 @@ msgid "Envelope Item Count" msgstr "Anzahl der Umschlag-Elemente" #: packages/lib/utils/document-audit-logs.ts +msgctxt "Audit log format" msgid "Envelope item created" -msgstr "Umschlag-Element erstellt" +msgstr "" #: packages/lib/utils/document-audit-logs.ts +msgctxt "Audit log format" msgid "Envelope item deleted" -msgstr "Umschlag-Element gelöscht" +msgstr "" #: apps/remix/app/components/dialogs/envelope-redistribute-dialog.tsx msgid "Envelope resent" @@ -4669,6 +4686,15 @@ msgstr "Zeitüberschreitung überschritten" msgid "Expired" msgstr "Abgelaufen" +#: apps/remix/app/components/general/admin-license-card.tsx +msgctxt "Subscription status" +msgid "Expired" +msgstr "" + +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "Expires" +msgstr "" + #. placeholder {0}: DateTime.fromMillis(Math.max(millisecondsRemaining, 0)).toFormat( 'mm:ss', ) #: apps/remix/app/components/general/document-signing/access-auth-2fa-form.tsx msgid "Expires in {0}" @@ -4742,6 +4768,10 @@ msgstr "Einstellungen konnten nicht gespeichert werden." msgid "Failed to sign out all sessions" msgstr "Fehler beim Abmelden aller Sitzungen" +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "Failed to sync license" +msgstr "" + #: apps/remix/app/routes/_authenticated+/settings+/security.linked-accounts.tsx msgid "Failed to unlink account" msgstr "Konto konnte nicht entkoppelt werden" @@ -4780,6 +4810,10 @@ msgstr "Fehlgeschlagen: {failedCount}" msgid "Feature Flags" msgstr "Funktionsflaggen" +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "Features" +msgstr "" + #: packages/ui/primitives/document-flow/field-items-advanced-settings/text-field.tsx msgid "Field character limit" msgstr "Zeichenbeschränkung des Feldes" @@ -5335,7 +5369,9 @@ msgstr "Geerbter Abonnementsanspruch" #: apps/remix/app/components/general/document-signing/document-signing-initials-field.tsx #: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-drag-drop.tsx #: packages/lib/utils/fields.ts +#: packages/ui/primitives/document-flow/add-fields.tsx #: packages/ui/primitives/document-flow/types.ts +#: packages/ui/primitives/template-flow/add-template-fields.tsx msgid "Initials" msgstr "Initialen" @@ -5363,11 +5399,20 @@ msgstr "Ungültiger Code. Bitte versuchen Sie es erneut." msgid "Invalid domains" msgstr "Ungültige Domains" +#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx #: packages/lib/types/recipient.ts #: packages/ui/primitives/document-flow/add-signers.types.ts msgid "Invalid email" msgstr "Ungültige E-Mail" +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "Invalid License Key" +msgstr "" + +#: apps/remix/app/components/general/admin-license-status-banner.tsx +msgid "Invalid License Type - Your Documenso instance is using features that are not part of your license." +msgstr "" + #: apps/remix/app/routes/_unauthenticated+/team.verify.email.$token.tsx msgid "Invalid link" msgstr "Ungültiger Link" @@ -5419,6 +5464,7 @@ msgid "Invite Members" msgstr "Mitglieder einladen" #: apps/remix/app/components/dialogs/organisation-member-invite-dialog.tsx +#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx msgid "Invite organisation members" msgstr "Organisationsmitglieder einladen" @@ -5426,6 +5472,10 @@ msgstr "Organisationsmitglieder einladen" msgid "Invite team members to collaborate" msgstr "Laden Sie Teammitglieder zur Zusammenarbeit ein" +#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx +msgid "Invite them to the organisation first" +msgstr "" + #: apps/remix/app/components/tables/organisation-member-invites-table.tsx msgid "Invited At" msgstr "Eingeladen am" @@ -5570,6 +5620,12 @@ msgstr "Zuletzt verwendet" msgid "Last Year" msgstr "Letztes Jahr" +#: apps/remix/app/components/forms/subscription-claim-form.tsx +#: apps/remix/app/components/general/admin-license-card.tsx +#: apps/remix/app/routes/_authenticated+/admin+/organisations.$id.tsx +msgid "Learn more" +msgstr "" + #: apps/remix/app/components/dialogs/organisation-leave-dialog.tsx #: apps/remix/app/components/tables/user-organisations-table.tsx msgid "Leave" @@ -5602,6 +5658,27 @@ msgstr "Buchstabenspacing" msgid "Letter Spacing" msgstr "Buchstabenspacing" +#: apps/remix/app/components/general/admin-license-card.tsx +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "License" +msgstr "" + +#: apps/remix/app/components/general/admin-license-status-banner.tsx +msgid "License Expired - Please renew your license to continue using enterprise features." +msgstr "" + +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "License Key" +msgstr "" + +#: apps/remix/app/components/general/admin-license-status-banner.tsx +msgid "License Payment Overdue - Please update your payment to avoid service disruptions." +msgstr "" + +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "License synced" +msgstr "" + #: apps/remix/app/components/general/app-command-menu.tsx msgid "Light Mode" msgstr "Lichtmodus" @@ -5627,8 +5704,9 @@ msgid "Link expires in 30 minutes." msgstr "Link läuft in 30 Minuten ab." #: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.public-profile.tsx +msgctxt "Action button to link template to public profile" msgid "Link template" -msgstr "Vorlage verlinken" +msgstr "" #: packages/email/templates/organisation-account-link-confirmation.tsx msgid "Link your Documenso account" @@ -5677,6 +5755,7 @@ msgstr "Dokument wird geladen..." msgid "Loading suggestions..." msgstr "Lade Vorschläge ..." +#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx #: apps/remix/app/components/general/document/document-page-view-recent-activity.tsx msgid "Loading..." msgstr "Wird geladen..." @@ -5954,6 +6033,10 @@ msgstr "Mitte" msgid "Min" msgstr "Min" +#: apps/remix/app/components/general/admin-license-status-banner.tsx +msgid "Missing License - Your Documenso instance is using features that require a license." +msgstr "" + #: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page.tsx msgid "Missing Recipients" msgstr "Fehlende Empfänger" @@ -6027,6 +6110,7 @@ msgid "My Folder" msgstr "Mein Ordner" #: apps/remix/app/components/tables/internal-audit-log-table.tsx +#: apps/remix/app/routes/_internal+/[__htmltopdf]+/certificate.tsx #: packages/lib/server-only/pdf/render-audit-logs.ts msgid "N/A" msgstr "N/A" @@ -6145,6 +6229,10 @@ msgstr "Keine Dokumente gefunden" msgid "No email detected" msgstr "Keine E‑Mail erkannt" +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "No features enabled" +msgstr "" + #: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx msgid "No fields were detected in your document." msgstr "In Ihrem Dokument wurden keine Felder erkannt." @@ -6165,6 +6253,18 @@ msgstr "Keine Ordner gefunden, die \"{searchTerm}\" entsprechen" msgid "No further action is required from you at this time." msgstr "Es sind derzeit keine weiteren Maßnahmen Ihrerseits erforderlich." +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "No License Configured" +msgstr "" + +#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx +msgid "No members selected" +msgstr "" + +#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx +msgid "No organisation members available" +msgstr "" + #: apps/remix/app/routes/_authenticated+/dashboard.tsx msgid "No organisations found" msgstr "Keine Organisationen gefunden" @@ -6665,6 +6765,7 @@ msgstr "Passwort aktualisiert" msgid "Password updated!" msgstr "Passwort aktualisiert!" +#: apps/remix/app/components/general/admin-license-card.tsx #: apps/remix/app/components/tables/user-billing-organisations-table.tsx msgctxt "Subscription status" msgid "Past Due" @@ -6935,6 +7036,10 @@ msgstr "Bitte überprüfen Sie das Dokument vor der Unterzeichnung." msgid "Please select a PDF file" msgstr "Bitte wählen Sie eine PDF-Datei aus" +#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx +msgid "Please select at least one member to add to the team." +msgstr "" + #: apps/remix/app/components/general/document-signing/access-auth-2fa-form.tsx msgid "Please select how you'd like to receive your verification code." msgstr "Bitte wählen Sie, wie Sie Ihren Verifizierungscode erhalten möchten." @@ -7091,7 +7196,9 @@ msgstr "Schnellaktionen" #: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx #: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-drag-drop.tsx #: packages/lib/utils/fields.ts +#: packages/ui/primitives/document-flow/add-fields.tsx #: packages/ui/primitives/document-flow/types.ts +#: packages/ui/primitives/template-flow/add-template-fields.tsx msgid "Radio" msgstr "Radio" @@ -7176,11 +7283,6 @@ msgstr "Neueste Dokumente" #: apps/remix/app/components/general/template/template-page-view-documents-table.tsx #: apps/remix/app/components/tables/documents-table.tsx #: apps/remix/app/components/tables/inbox-table.tsx -#: packages/lib/utils/document-audit-logs.ts -#: packages/lib/utils/document-audit-logs.ts -#: packages/lib/utils/document-audit-logs.ts -#: packages/lib/utils/document-audit-logs.ts -#: packages/lib/utils/document-audit-logs.ts msgid "Recipient" msgstr "Empfänger" @@ -7201,14 +7303,42 @@ msgstr "Empfänger {0}" msgid "Recipient action authentication" msgstr "Empfängeraktion Authentifizierung" +#: packages/lib/utils/document-audit-logs.ts +msgid "Recipient approved the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "Recipient CC'd the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "Recipient completed their task" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "Recipient failed to validate a 2FA token for the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "Recipient rejected the document" +msgstr "" + #: packages/ui/components/document/document-email-checkboxes.tsx msgid "Recipient removed email" msgstr "E-Mail des entfernten Empfängers" +#: packages/lib/utils/document-audit-logs.ts +msgid "Recipient requested a 2FA token for the document" +msgstr "" + #: packages/ui/components/document/document-email-checkboxes.tsx msgid "Recipient signed email" msgstr "E-Mail über Empfänger-unterschrieben" +#: packages/lib/utils/document-audit-logs.ts +msgid "Recipient signed the document" +msgstr "" + #: packages/ui/components/document/document-email-checkboxes.tsx msgid "Recipient signing request email" msgstr "E-Mail zur Unterzeichnungsanfrage des Empfängers" @@ -7217,10 +7347,20 @@ msgstr "E-Mail zur Unterzeichnungsanfrage des Empfängers" msgid "Recipient updated" msgstr "Empfänger aktualisiert" +#: packages/lib/utils/document-audit-logs.ts +msgid "Recipient validated a 2FA token for the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "Recipient viewed the document" +msgstr "" + #: apps/remix/app/components/embed/authoring/configure-document-recipients.tsx #: apps/remix/app/components/general/document/document-page-view-recipients.tsx +#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx #: apps/remix/app/components/general/template/template-page-view-recipients.tsx #: apps/remix/app/routes/_authenticated+/admin+/documents.$id.tsx +#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/documents.$id.logs.tsx #: apps/remix/app/routes/_internal+/[__htmltopdf]+/audit-log.tsx #: packages/lib/server-only/pdf/render-audit-logs.ts msgid "Recipients" @@ -7725,6 +7865,10 @@ msgstr "Sicherheit" msgid "Security activity" msgstr "Sicherheitsaktivität" +#: apps/remix/app/components/general/admin-license-status-banner.tsx +msgid "See Documentation" +msgstr "" + #: apps/remix/app/routes/_authenticated+/admin+/documents.$id.tsx msgid "See the background jobs tab for the status" msgstr "Der Status kann im Hintergrundjobs-Tab eingesehen werden" @@ -7853,15 +7997,18 @@ msgstr "Option auswählen" msgid "Select Options" msgstr "Optionen auswählen" +#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx +msgid "Select or add recipients" +msgstr "" + +#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx +msgid "Select or enter email address" +msgstr "" + #: apps/remix/app/components/general/document-signing/document-signing-auth-passkey.tsx msgid "Select passkey" msgstr "Passkey auswählen" -#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx -#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx -msgid "Select recipients" -msgstr "Empfänger auswählen" - #: apps/remix/app/components/tables/documents-table.tsx #: apps/remix/app/components/tables/templates-table.tsx msgid "Select row" @@ -8217,6 +8364,7 @@ msgstr "Registrieren mit OIDC" #: packages/lib/utils/fields.ts #: packages/ui/primitives/document-flow/add-fields.tsx #: packages/ui/primitives/document-flow/types.ts +#: packages/ui/primitives/field-selector.tsx #: packages/ui/primitives/template-flow/add-template-fields.tsx msgid "Signature" msgstr "Unterschrift" @@ -8681,10 +8829,12 @@ msgstr "E-Mail-Domains synchronisieren" msgid "Sync failed, changes not saved" msgstr "Synchronisierung fehlgeschlagen, Änderungen nicht gespeichert" -#: packages/lib/utils/document-audit-logs.ts -msgid "System auto inserted fields" -msgstr "Automatisch vom System eingefügte Felder" +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "Sync license from server" +msgstr "" +#: packages/lib/utils/document-audit-logs.ts +#: packages/lib/utils/document-audit-logs.ts #: packages/lib/utils/document-audit-logs.ts msgctxt "Audit log format" msgid "System auto inserted fields" @@ -9075,8 +9225,9 @@ msgstr "Der Dokumenteneigentümer wurde über Ihre Entscheidung informiert. Er k #. placeholder {0}: data.delegatedOwnerName || data.delegatedOwnerEmail #. placeholder {1}: data.teamName #: packages/lib/utils/document-audit-logs.ts +msgctxt "Audit log format" msgid "The document ownership was delegated to {0} on behalf of {1}" -msgstr "Das Dokumenteigentum wurde im Namen von {1} an {0} delegiert" +msgstr "" #: apps/remix/app/components/dialogs/template-use-dialog.tsx msgid "The document was created but could not be sent to recipients." @@ -9696,6 +9847,10 @@ msgstr "Um {0} diese {1}, müssen Sie angemeldet sein." msgid "To accept this invitation you must create an account." msgstr "Um diese Einladung anzunehmen, müssen Sie ein Konto erstellen." +#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx +msgid "To add members to this team, you must first add them to the organisation." +msgstr "" + #: apps/remix/app/components/dialogs/team-member-create-dialog.tsx msgid "To be able to add members to a team, you must first add them to the organisation. For more information, please see the <0>documentation0>." msgstr "Um Mitglieder zu einem Team hinzufügen zu können, müssen Sie sie zuerst zur Organisation hinzufügen. Weitere Informationen finden Sie in der <0>Dokumentation0>." @@ -9886,6 +10041,10 @@ msgstr "Tippen" msgid "Type a command or search..." msgstr "Geben Sie einen Befehl ein oder suchen Sie..." +#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx +msgid "Type an email address to add a recipient" +msgstr "" + #: packages/ui/primitives/signature-pad/signature-pad-type.tsx msgid "Type your signature" msgstr "Geben Sie Ihre Unterschrift ein" @@ -10372,10 +10531,6 @@ msgstr "Validierung fehlgeschlagen" msgid "Value" msgstr "Wert" -#: packages/lib/types/field-meta.ts -msgid "Value must be a number" -msgstr "Wert muss eine Zahl sein" - #: packages/email/template-components/template-access-auth-2fa.tsx msgid "Verification Code Required" msgstr "Verifizierungscode erforderlich" @@ -11115,6 +11270,18 @@ msgstr "Ja" msgid "You" msgstr "Du" +#: packages/lib/utils/document-audit-logs.ts +msgid "You added a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You added a recipient" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You approved the document" +msgstr "" + #: apps/remix/app/components/general/document-signing/document-signing-complete-dialog.tsx msgid "You are about to complete approving the following document" msgstr "Sie sind im Begriff, die Genehmigung des folgenden Dokuments abzuschließen" @@ -11179,11 +11346,16 @@ msgid "You are about to remove the following email from <0>{0}0>." msgstr "Sie sind dabei, die folgende E-Mail von <0>{0}0> zu entfernen." #. placeholder {0}: organisation.name -#. placeholder {0}: team.name #: apps/remix/app/components/dialogs/organisation-group-delete-dialog.tsx -#: apps/remix/app/components/dialogs/team-group-delete-dialog.tsx +msgctxt "Removing group from organisation" msgid "You are about to remove the following group from <0>{0}0>." -msgstr "Sie sind dabei, die folgende Gruppe von <0>{0}0> zu entfernen." +msgstr "" + +#. placeholder {0}: team.name +#: apps/remix/app/components/dialogs/team-group-delete-dialog.tsx +msgctxt "Removing group from team" +msgid "You are about to remove the following group from <0>{0}0>." +msgstr "" #. placeholder {0}: organisation.name #: apps/remix/app/components/dialogs/organisation-member-delete-dialog.tsx @@ -11361,6 +11533,23 @@ msgstr "Sie können derzeit keine Dokumente hochladen." msgid "You cannot upload encrypted PDFs." msgstr "Du kannst keine verschlüsselten PDFs hochladen." +#: packages/lib/utils/document-audit-logs.ts +msgid "You CC'd the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You completed your task" +msgstr "" + +#. placeholder {0}: data.envelopeItemTitle +#: packages/lib/utils/document-audit-logs.ts +msgid "You created an envelope item with title {0}" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You created the document" +msgstr "" + #: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.billing.tsx msgid "You currently have an inactive <0>{currentProductName}0> subscription" msgstr "Sie haben derzeit ein inaktives <0>{currentProductName}0> Abonnement" @@ -11369,6 +11558,15 @@ msgstr "Sie haben derzeit ein inaktives <0>{currentProductName}0> Abonnement" msgid "You currently have no access to any teams within this organisation. Please contact your organisation to request access." msgstr "Derzeit haben Sie keinen Zugriff auf Teams in dieser Organisation. Bitte kontaktieren Sie Ihre Organisation, um Zugriff zu erhalten." +#. placeholder {0}: data.envelopeItemTitle +#: packages/lib/utils/document-audit-logs.ts +msgid "You deleted an envelope item with title {0}" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You deleted the document" +msgstr "" + #: apps/remix/app/components/forms/token.tsx msgid "You do not have permission to create a token for this team." msgstr "Sie haben keine Berechtigung, ein Token für dieses Team zu erstellen." @@ -11381,6 +11579,10 @@ msgstr "Sie verwalten die Abrechnung für keine Organisation." msgid "You don't need to sign it anymore." msgstr "Du musst es nicht mehr unterschreiben." +#: packages/lib/utils/document-audit-logs.ts +msgid "You failed to validate a 2FA token for the document" +msgstr "" + #. placeholder {0}: data.organisationName #: apps/remix/app/routes/_unauthenticated+/organisation.invite.$token.tsx msgid "You have accepted an invitation from <0>{0}0> to join their organisation." @@ -11543,6 +11745,10 @@ msgstr "Sie haben die Teamgruppe aktualisiert." msgid "You have verified your email address for <0>{0}0>." msgstr "Sie haben Ihre E-Mail-Adresse für <0>{0}0> bestätigt." +#: packages/lib/utils/document-audit-logs.ts +msgid "You moved the document to team" +msgstr "" + #: apps/remix/app/components/dialogs/organisation-delete-dialog.tsx #: apps/remix/app/components/dialogs/team-delete-dialog.tsx #: apps/remix/app/components/dialogs/token-delete-dialog.tsx @@ -11584,6 +11790,97 @@ msgstr "Sie müssen angemeldet sein, um diese Seite anzuzeigen." msgid "You need to setup 2FA to mark this document as viewed." msgstr "Sie müssen 2FA einrichten, um dieses Dokument als angesehen zu markieren." +#: packages/lib/utils/document-audit-logs.ts +msgid "You opened the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You prefilled a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You rejected the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You removed a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You removed a recipient" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You requested a 2FA token for the document" +msgstr "" + +#. placeholder {0}: data.recipientEmail +#: packages/lib/utils/document-audit-logs.ts +msgid "You resent an email to {0}" +msgstr "" + +#. placeholder {0}: data.recipientEmail +#: packages/lib/utils/document-audit-logs.ts +msgid "You sent an email to {0}" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You sent the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You signed a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You signed the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You unsigned a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You updated a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You updated a recipient" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You updated the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You updated the document access auth requirements" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You updated the document external ID" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You updated the document signing auth requirements" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You updated the document title" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You updated the document visibility" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You validated a 2FA token for the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +#: packages/lib/utils/document-audit-logs.ts +msgid "You viewed the document" +msgstr "" + #: apps/remix/app/components/dialogs/admin-organisation-create-dialog.tsx msgid "You will need to configure any claims or subscription after creating this organisation" msgstr "Sie müssen nach der Erstellung dieser Organisation alle Ansprüche oder Abonnements konfigurieren." @@ -11642,6 +11939,11 @@ msgstr "Ihre Massenversandoperation für Vorlage \"{templateName}\" ist abgeschl msgid "Your current {currentProductName} plan is past due. Please update your payment information." msgstr "Ihr aktueller {currentProductName} Plan ist überfällig. Bitte aktualisieren Sie Ihre Zahlungsinformationen." +#: apps/remix/app/components/forms/subscription-claim-form.tsx +#: apps/remix/app/routes/_authenticated+/admin+/organisations.$id.tsx +msgid "Your current license does not include these features." +msgstr "" + #: apps/remix/app/routes/_authenticated+/o.$orgUrl.support.tsx msgid "Your current plan includes the following support channels:" msgstr "Ihr aktueller Plan umfasst die folgenden Support-Kanäle:" diff --git a/packages/lib/translations/en/web.po b/packages/lib/translations/en/web.po index a3e6b311e..99031a451 100644 --- a/packages/lib/translations/en/web.po +++ b/packages/lib/translations/en/web.po @@ -17,6 +17,11 @@ msgstr "" msgid ".PDF documents accepted (max {APP_DOCUMENT_UPLOAD_SIZE_LIMIT}MB)" msgstr ".PDF documents accepted (max {APP_DOCUMENT_UPLOAD_SIZE_LIMIT}MB)" +#. placeholder {0}: invalidEmails[0].value +#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx +msgid "\"{0}\" is not a valid email address." +msgstr "\"{0}\" is not a valid email address." + #. placeholder {0}: field.customText #. placeholder {1}: timezone || '' #: apps/remix/app/components/general/document-signing/document-signing-date-field.tsx @@ -96,6 +101,17 @@ msgstr "{0, plural, one {# field} other {# fields}}" msgid "{0, plural, one {# folder} other {# folders}}" msgstr "{0, plural, one {# folder} other {# folders}}" +#. placeholder {0}: result.deletedCount +#. placeholder {1}: result.failedIds.length +#: apps/remix/app/components/dialogs/envelopes-bulk-delete-dialog.tsx +msgid "{0, plural, one {# item deleted.} other {# items deleted.}} {1, plural, one {# item could not be deleted.} other {# items could not be deleted.}}" +msgstr "{0, plural, one {# item deleted.} other {# items deleted.}} {1, plural, one {# item could not be deleted.} other {# items could not be deleted.}}" + +#. placeholder {0}: result.deletedCount +#: apps/remix/app/components/dialogs/envelopes-bulk-delete-dialog.tsx +msgid "{0, plural, one {# item has been deleted.} other {# items have been deleted.}}" +msgstr "{0, plural, one {# item has been deleted.} other {# items have been deleted.}}" + #. placeholder {0}: detectedRecipients.length #: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx msgid "{0, plural, one {# recipient have been added from AI detection.} other {# recipients have been added from AI detection.}}" @@ -238,17 +254,6 @@ msgstr "{0} has invited you to {recipientActionVerb} the document \"{1}\"." msgid "{0} invited you to {recipientActionVerb} a document" msgstr "{0} invited you to {recipientActionVerb} a document" -#. placeholder {0}: result.deletedCount -#. placeholder {1}: result.failedIds.length -#: apps/remix/app/components/dialogs/envelopes-bulk-delete-dialog.tsx -msgid "{0} item(s) deleted. {1} item(s) could not be deleted." -msgstr "{0} item(s) deleted. {1} item(s) could not be deleted." - -#. placeholder {0}: result.deletedCount -#: apps/remix/app/components/dialogs/envelopes-bulk-delete-dialog.tsx -msgid "{0} item(s) have been deleted." -msgstr "{0} item(s) have been deleted." - #. placeholder {0}: remaining.documents #. placeholder {1}: quota.documents #: apps/remix/app/components/general/document/document-upload-button-legacy.tsx @@ -341,110 +346,6 @@ msgstr "{MAXIMUM_PASSKEYS, plural, one {You cannot have more than # passkey.} ot msgid "{maximumEnvelopeItemCount, plural, one {You cannot upload more than # item per envelope.} other {You cannot upload more than # items per envelope.}}" msgstr "{maximumEnvelopeItemCount, plural, one {You cannot upload more than # item per envelope.} other {You cannot upload more than # items per envelope.}}" -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} added a field" -msgstr "{prefix} added a field" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} added a recipient" -msgstr "{prefix} added a recipient" - -#. placeholder {0}: data.envelopeItemTitle -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} created an envelope item with title {0}" -msgstr "{prefix} created an envelope item with title {0}" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} created the document" -msgstr "{prefix} created the document" - -#. placeholder {0}: data.envelopeItemTitle -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} deleted an envelope item with title {0}" -msgstr "{prefix} deleted an envelope item with title {0}" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} deleted the document" -msgstr "{prefix} deleted the document" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} moved the document to team" -msgstr "{prefix} moved the document to team" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} opened the document" -msgstr "{prefix} opened the document" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} prefilled a field" -msgstr "{prefix} prefilled a field" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} removed a field" -msgstr "{prefix} removed a field" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} removed a recipient" -msgstr "{prefix} removed a recipient" - -#. placeholder {0}: data.recipientEmail -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} resent an email to {0}" -msgstr "{prefix} resent an email to {0}" - -#. placeholder {0}: data.recipientEmail -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} sent an email to {0}" -msgstr "{prefix} sent an email to {0}" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} sent the document" -msgstr "{prefix} sent the document" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} signed a field" -msgstr "{prefix} signed a field" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} unsigned a field" -msgstr "{prefix} unsigned a field" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} updated a field" -msgstr "{prefix} updated a field" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} updated a recipient" -msgstr "{prefix} updated a recipient" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} updated the document" -msgstr "{prefix} updated the document" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} updated the document access auth requirements" -msgstr "{prefix} updated the document access auth requirements" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} updated the document external ID" -msgstr "{prefix} updated the document external ID" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} updated the document signing auth requirements" -msgstr "{prefix} updated the document signing auth requirements" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} updated the document title" -msgstr "{prefix} updated the document title" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} updated the document visibility" -msgstr "{prefix} updated the document visibility" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} viewed the document" -msgstr "{prefix} viewed the document" - #: apps/remix/app/components/general/direct-template/direct-template-page.tsx msgid "{recipientActionVerb} document" msgstr "{recipientActionVerb} document" @@ -505,47 +406,148 @@ msgstr "{teamName} has invited you to {0}<0/>\"{documentName}\"" msgid "{teamName} has invited you to {action} {documentName}" msgstr "{teamName} has invited you to {action} {documentName}" +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} added a field" +msgstr "{user} added a field" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} added a recipient" +msgstr "{user} added a recipient" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} approved the document" +msgstr "{user} approved the document" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} CC'd the document" +msgstr "{user} CC'd the document" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} completed their task" +msgstr "{user} completed their task" + +#. placeholder {0}: data.envelopeItemTitle +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} created an envelope item with title {0}" +msgstr "{user} created an envelope item with title {0}" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} created the document" +msgstr "{user} created the document" + +#. placeholder {0}: data.envelopeItemTitle +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} deleted an envelope item with title {0}" +msgstr "{user} deleted an envelope item with title {0}" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} deleted the document" +msgstr "{user} deleted the document" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} failed to validate a 2FA token for the document" +msgstr "{user} failed to validate a 2FA token for the document" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} moved the document to team" +msgstr "{user} moved the document to team" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} opened the document" +msgstr "{user} opened the document" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} prefilled a field" +msgstr "{user} prefilled a field" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} rejected the document" +msgstr "{user} rejected the document" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} removed a field" +msgstr "{user} removed a field" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} removed a recipient" +msgstr "{user} removed a recipient" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} requested a 2FA token for the document" +msgstr "{user} requested a 2FA token for the document" + +#. placeholder {0}: data.recipientEmail +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} resent an email to {0}" +msgstr "{user} resent an email to {0}" + +#. placeholder {0}: data.recipientEmail +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} sent an email to {0}" +msgstr "{user} sent an email to {0}" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} sent the document" +msgstr "{user} sent the document" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} signed a field" +msgstr "{user} signed a field" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} signed the document" +msgstr "{user} signed the document" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} unsigned a field" +msgstr "{user} unsigned a field" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} updated a field" +msgstr "{user} updated a field" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} updated a recipient" +msgstr "{user} updated a recipient" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} updated the document" +msgstr "{user} updated the document" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} updated the document access auth requirements" +msgstr "{user} updated the document access auth requirements" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} updated the document external ID" +msgstr "{user} updated the document external ID" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} updated the document signing auth requirements" +msgstr "{user} updated the document signing auth requirements" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} updated the document title" +msgstr "{user} updated the document title" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} updated the document visibility" +msgstr "{user} updated the document visibility" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} validated a 2FA token for the document" +msgstr "{user} validated a 2FA token for the document" + +#: packages/lib/utils/document-audit-logs.ts +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} viewed the document" +msgstr "{user} viewed the document" + #: apps/remix/app/components/tables/internal-audit-log-table.tsx #: packages/lib/server-only/pdf/render-audit-logs.ts msgid "{userAgent}" msgstr "{userAgent}" -#: packages/lib/utils/document-audit-logs.ts -msgid "{userName} approved the document" -msgstr "{userName} approved the document" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{userName} CC'd the document" -msgstr "{userName} CC'd the document" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{userName} completed their task" -msgstr "{userName} completed their task" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{userName} failed to validate a 2FA token for the document" -msgstr "{userName} failed to validate a 2FA token for the document" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{userName} rejected the document" -msgstr "{userName} rejected the document" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{userName} requested a 2FA token for the document" -msgstr "{userName} requested a 2FA token for the document" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{userName} signed the document" -msgstr "{userName} signed the document" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{userName} validated a 2FA token for the document" -msgstr "{userName} validated a 2FA token for the document" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{userName} viewed the document" -msgstr "{userName} viewed the document" - #: apps/remix/app/components/dialogs/sign-field-checkbox-dialog.tsx msgid "{validationLength, plural, one {Select at least # option} other {Select at least # options}}" msgstr "{validationLength, plural, one {Select at least # option} other {Select at least # options}}" @@ -1079,6 +1081,7 @@ msgstr "Actions" msgid "Active" msgstr "Active" +#: apps/remix/app/components/general/admin-license-card.tsx #: apps/remix/app/components/tables/user-billing-organisations-table.tsx msgctxt "Subscription status" msgid "Active" @@ -1253,6 +1256,10 @@ msgstr "Add recipients" msgid "Add Recipients" msgstr "Add Recipients" +#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx +msgid "Add recipients to your document" +msgstr "Add recipients to your document" + #: apps/remix/app/components/embed/authoring/configure-document-recipients.tsx #: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx #: packages/ui/primitives/document-flow/add-signers.tsx @@ -2192,6 +2199,10 @@ msgstr "By using the electronic signature feature, you are consenting to conduct msgid "Can prepare" msgstr "Can prepare" +#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx +msgid "Can't find someone?" +msgstr "Can't find someone?" + #: apps/remix/app/components/dialogs/admin-organisation-create-dialog.tsx #: apps/remix/app/components/dialogs/admin-organisation-member-update-dialog.tsx #: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx @@ -2354,7 +2365,9 @@ msgstr "Charts" #: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx #: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-drag-drop.tsx #: packages/lib/utils/fields.ts +#: packages/ui/primitives/document-flow/add-fields.tsx #: packages/ui/primitives/document-flow/types.ts +#: packages/ui/primitives/template-flow/add-template-fields.tsx msgid "Checkbox" msgstr "Checkbox" @@ -2511,7 +2524,6 @@ msgstr "Compare all plans and features in detail" #: apps/remix/app/components/embed/embed-document-signing-page-v1.tsx #: apps/remix/app/components/embed/embed-document-signing-page-v1.tsx #: apps/remix/app/components/embed/multisign/multi-sign-document-signing-view.tsx -#: apps/remix/app/components/forms/signup.tsx #: apps/remix/app/components/general/document-signing/document-signing-complete-dialog.tsx #: apps/remix/app/components/general/document-signing/document-signing-complete-dialog.tsx msgid "Complete" @@ -2859,6 +2871,7 @@ msgstr "Create a support ticket" msgid "Create a team to collaborate with your team members." msgstr "Create a team to collaborate with your team members." +#: apps/remix/app/components/forms/signup.tsx #: apps/remix/app/routes/_unauthenticated+/organisation.invite.$token.tsx #: packages/email/template-components/template-document-self-signed.tsx msgid "Create account" @@ -3557,6 +3570,10 @@ msgstr "Do you want to delete this template?" msgid "Do you want to duplicate this template?" msgstr "Do you want to duplicate this template?" +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "Documenso License" +msgstr "Documenso License" + #: apps/remix/app/components/dialogs/account-delete-dialog.tsx msgid "Documenso will delete <0>all of your documents0>, along with all of your completed documents, signatures, and all other resources belonging to your Account." msgstr "Documenso will delete <0>all of your documents0>, along with all of your completed documents, signatures, and all other resources belonging to your Account." @@ -3624,6 +3641,7 @@ msgstr "Document Cancelled" msgid "Document completed" msgstr "Document completed" +#: packages/lib/utils/document-audit-logs.ts #: packages/lib/utils/document-audit-logs.ts #: packages/lib/utils/document-audit-logs.ts msgctxt "Audit log format" @@ -3764,11 +3782,6 @@ msgctxt "Audit log format" msgid "Document opened" msgstr "Document opened" -#: packages/lib/utils/document-audit-logs.ts -msgctxt "Audit log format" -msgid "Document ownership delegated" -msgstr "Document ownership delegated" - #: apps/remix/app/components/general/document/document-status.tsx msgid "Document pending" msgstr "Document pending" @@ -4265,6 +4278,7 @@ msgid "Email preferences updated" msgstr "Email preferences updated" #: packages/lib/utils/document-audit-logs.ts +msgctxt "Audit log format" msgid "Email resent" msgstr "Email resent" @@ -4276,6 +4290,7 @@ msgid "Email Sender" msgstr "Email Sender" #: packages/lib/utils/document-audit-logs.ts +msgctxt "Audit log format" msgid "Email sent" msgstr "Email sent" @@ -4521,10 +4536,12 @@ msgid "Envelope Item Count" msgstr "Envelope Item Count" #: packages/lib/utils/document-audit-logs.ts +msgctxt "Audit log format" msgid "Envelope item created" msgstr "Envelope item created" #: packages/lib/utils/document-audit-logs.ts +msgctxt "Audit log format" msgid "Envelope item deleted" msgstr "Envelope item deleted" @@ -4664,6 +4681,15 @@ msgstr "Exceeded timeout" msgid "Expired" msgstr "Expired" +#: apps/remix/app/components/general/admin-license-card.tsx +msgctxt "Subscription status" +msgid "Expired" +msgstr "Expired" + +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "Expires" +msgstr "Expires" + #. placeholder {0}: DateTime.fromMillis(Math.max(millisecondsRemaining, 0)).toFormat( 'mm:ss', ) #: apps/remix/app/components/general/document-signing/access-auth-2fa-form.tsx msgid "Expires in {0}" @@ -4737,6 +4763,10 @@ msgstr "Failed to save settings." msgid "Failed to sign out all sessions" msgstr "Failed to sign out all sessions" +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "Failed to sync license" +msgstr "Failed to sync license" + #: apps/remix/app/routes/_authenticated+/settings+/security.linked-accounts.tsx msgid "Failed to unlink account" msgstr "Failed to unlink account" @@ -4775,6 +4805,10 @@ msgstr "Failed: {failedCount}" msgid "Feature Flags" msgstr "Feature Flags" +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "Features" +msgstr "Features" + #: packages/ui/primitives/document-flow/field-items-advanced-settings/text-field.tsx msgid "Field character limit" msgstr "Field character limit" @@ -5330,7 +5364,9 @@ msgstr "Inherited subscription claim" #: apps/remix/app/components/general/document-signing/document-signing-initials-field.tsx #: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-drag-drop.tsx #: packages/lib/utils/fields.ts +#: packages/ui/primitives/document-flow/add-fields.tsx #: packages/ui/primitives/document-flow/types.ts +#: packages/ui/primitives/template-flow/add-template-fields.tsx msgid "Initials" msgstr "Initials" @@ -5358,11 +5394,20 @@ msgstr "Invalid code. Please try again." msgid "Invalid domains" msgstr "Invalid domains" +#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx #: packages/lib/types/recipient.ts #: packages/ui/primitives/document-flow/add-signers.types.ts msgid "Invalid email" msgstr "Invalid email" +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "Invalid License Key" +msgstr "Invalid License Key" + +#: apps/remix/app/components/general/admin-license-status-banner.tsx +msgid "Invalid License Type - Your Documenso instance is using features that are not part of your license." +msgstr "Invalid License Type - Your Documenso instance is using features that are not part of your license." + #: apps/remix/app/routes/_unauthenticated+/team.verify.email.$token.tsx msgid "Invalid link" msgstr "Invalid link" @@ -5414,6 +5459,7 @@ msgid "Invite Members" msgstr "Invite Members" #: apps/remix/app/components/dialogs/organisation-member-invite-dialog.tsx +#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx msgid "Invite organisation members" msgstr "Invite organisation members" @@ -5421,6 +5467,10 @@ msgstr "Invite organisation members" msgid "Invite team members to collaborate" msgstr "Invite team members to collaborate" +#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx +msgid "Invite them to the organisation first" +msgstr "Invite them to the organisation first" + #: apps/remix/app/components/tables/organisation-member-invites-table.tsx msgid "Invited At" msgstr "Invited At" @@ -5565,6 +5615,12 @@ msgstr "Last used" msgid "Last Year" msgstr "Last Year" +#: apps/remix/app/components/forms/subscription-claim-form.tsx +#: apps/remix/app/components/general/admin-license-card.tsx +#: apps/remix/app/routes/_authenticated+/admin+/organisations.$id.tsx +msgid "Learn more" +msgstr "Learn more" + #: apps/remix/app/components/dialogs/organisation-leave-dialog.tsx #: apps/remix/app/components/tables/user-organisations-table.tsx msgid "Leave" @@ -5597,6 +5653,27 @@ msgstr "Letter spacing" msgid "Letter Spacing" msgstr "Letter Spacing" +#: apps/remix/app/components/general/admin-license-card.tsx +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "License" +msgstr "License" + +#: apps/remix/app/components/general/admin-license-status-banner.tsx +msgid "License Expired - Please renew your license to continue using enterprise features." +msgstr "License Expired - Please renew your license to continue using enterprise features." + +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "License Key" +msgstr "License Key" + +#: apps/remix/app/components/general/admin-license-status-banner.tsx +msgid "License Payment Overdue - Please update your payment to avoid service disruptions." +msgstr "License Payment Overdue - Please update your payment to avoid service disruptions." + +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "License synced" +msgstr "License synced" + #: apps/remix/app/components/general/app-command-menu.tsx msgid "Light Mode" msgstr "Light Mode" @@ -5622,6 +5699,7 @@ msgid "Link expires in 30 minutes." msgstr "Link expires in 30 minutes." #: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.public-profile.tsx +msgctxt "Action button to link template to public profile" msgid "Link template" msgstr "Link template" @@ -5672,6 +5750,7 @@ msgstr "Loading Document..." msgid "Loading suggestions..." msgstr "Loading suggestions..." +#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx #: apps/remix/app/components/general/document/document-page-view-recent-activity.tsx msgid "Loading..." msgstr "Loading..." @@ -5949,6 +6028,10 @@ msgstr "Middle" msgid "Min" msgstr "Min" +#: apps/remix/app/components/general/admin-license-status-banner.tsx +msgid "Missing License - Your Documenso instance is using features that require a license." +msgstr "Missing License - Your Documenso instance is using features that require a license." + #: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page.tsx msgid "Missing Recipients" msgstr "Missing Recipients" @@ -6022,6 +6105,7 @@ msgid "My Folder" msgstr "My Folder" #: apps/remix/app/components/tables/internal-audit-log-table.tsx +#: apps/remix/app/routes/_internal+/[__htmltopdf]+/certificate.tsx #: packages/lib/server-only/pdf/render-audit-logs.ts msgid "N/A" msgstr "N/A" @@ -6140,6 +6224,10 @@ msgstr "No documents found" msgid "No email detected" msgstr "No email detected" +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "No features enabled" +msgstr "No features enabled" + #: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx msgid "No fields were detected in your document." msgstr "No fields were detected in your document." @@ -6160,6 +6248,18 @@ msgstr "No folders found matching \"{searchTerm}\"" msgid "No further action is required from you at this time." msgstr "No further action is required from you at this time." +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "No License Configured" +msgstr "No License Configured" + +#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx +msgid "No members selected" +msgstr "No members selected" + +#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx +msgid "No organisation members available" +msgstr "No organisation members available" + #: apps/remix/app/routes/_authenticated+/dashboard.tsx msgid "No organisations found" msgstr "No organisations found" @@ -6660,6 +6760,7 @@ msgstr "Password updated" msgid "Password updated!" msgstr "Password updated!" +#: apps/remix/app/components/general/admin-license-card.tsx #: apps/remix/app/components/tables/user-billing-organisations-table.tsx msgctxt "Subscription status" msgid "Past Due" @@ -6930,6 +7031,10 @@ msgstr "Please review the document before signing." msgid "Please select a PDF file" msgstr "Please select a PDF file" +#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx +msgid "Please select at least one member to add to the team." +msgstr "Please select at least one member to add to the team." + #: apps/remix/app/components/general/document-signing/access-auth-2fa-form.tsx msgid "Please select how you'd like to receive your verification code." msgstr "Please select how you'd like to receive your verification code." @@ -7086,7 +7191,9 @@ msgstr "Quick Actions" #: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx #: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-drag-drop.tsx #: packages/lib/utils/fields.ts +#: packages/ui/primitives/document-flow/add-fields.tsx #: packages/ui/primitives/document-flow/types.ts +#: packages/ui/primitives/template-flow/add-template-fields.tsx msgid "Radio" msgstr "Radio" @@ -7171,11 +7278,6 @@ msgstr "Recent documents" #: apps/remix/app/components/general/template/template-page-view-documents-table.tsx #: apps/remix/app/components/tables/documents-table.tsx #: apps/remix/app/components/tables/inbox-table.tsx -#: packages/lib/utils/document-audit-logs.ts -#: packages/lib/utils/document-audit-logs.ts -#: packages/lib/utils/document-audit-logs.ts -#: packages/lib/utils/document-audit-logs.ts -#: packages/lib/utils/document-audit-logs.ts msgid "Recipient" msgstr "Recipient" @@ -7196,14 +7298,42 @@ msgstr "Recipient {0}" msgid "Recipient action authentication" msgstr "Recipient action authentication" +#: packages/lib/utils/document-audit-logs.ts +msgid "Recipient approved the document" +msgstr "Recipient approved the document" + +#: packages/lib/utils/document-audit-logs.ts +msgid "Recipient CC'd the document" +msgstr "Recipient CC'd the document" + +#: packages/lib/utils/document-audit-logs.ts +msgid "Recipient completed their task" +msgstr "Recipient completed their task" + +#: packages/lib/utils/document-audit-logs.ts +msgid "Recipient failed to validate a 2FA token for the document" +msgstr "Recipient failed to validate a 2FA token for the document" + +#: packages/lib/utils/document-audit-logs.ts +msgid "Recipient rejected the document" +msgstr "Recipient rejected the document" + #: packages/ui/components/document/document-email-checkboxes.tsx msgid "Recipient removed email" msgstr "Recipient removed email" +#: packages/lib/utils/document-audit-logs.ts +msgid "Recipient requested a 2FA token for the document" +msgstr "Recipient requested a 2FA token for the document" + #: packages/ui/components/document/document-email-checkboxes.tsx msgid "Recipient signed email" msgstr "Recipient signed email" +#: packages/lib/utils/document-audit-logs.ts +msgid "Recipient signed the document" +msgstr "Recipient signed the document" + #: packages/ui/components/document/document-email-checkboxes.tsx msgid "Recipient signing request email" msgstr "Recipient signing request email" @@ -7212,10 +7342,20 @@ msgstr "Recipient signing request email" msgid "Recipient updated" msgstr "Recipient updated" +#: packages/lib/utils/document-audit-logs.ts +msgid "Recipient validated a 2FA token for the document" +msgstr "Recipient validated a 2FA token for the document" + +#: packages/lib/utils/document-audit-logs.ts +msgid "Recipient viewed the document" +msgstr "Recipient viewed the document" + #: apps/remix/app/components/embed/authoring/configure-document-recipients.tsx #: apps/remix/app/components/general/document/document-page-view-recipients.tsx +#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx #: apps/remix/app/components/general/template/template-page-view-recipients.tsx #: apps/remix/app/routes/_authenticated+/admin+/documents.$id.tsx +#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/documents.$id.logs.tsx #: apps/remix/app/routes/_internal+/[__htmltopdf]+/audit-log.tsx #: packages/lib/server-only/pdf/render-audit-logs.ts msgid "Recipients" @@ -7720,6 +7860,10 @@ msgstr "Security" msgid "Security activity" msgstr "Security activity" +#: apps/remix/app/components/general/admin-license-status-banner.tsx +msgid "See Documentation" +msgstr "See Documentation" + #: apps/remix/app/routes/_authenticated+/admin+/documents.$id.tsx msgid "See the background jobs tab for the status" msgstr "See the background jobs tab for the status" @@ -7848,15 +7992,18 @@ msgstr "Select Option" msgid "Select Options" msgstr "Select Options" +#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx +msgid "Select or add recipients" +msgstr "Select or add recipients" + +#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx +msgid "Select or enter email address" +msgstr "Select or enter email address" + #: apps/remix/app/components/general/document-signing/document-signing-auth-passkey.tsx msgid "Select passkey" msgstr "Select passkey" -#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx -#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx -msgid "Select recipients" -msgstr "Select recipients" - #: apps/remix/app/components/tables/documents-table.tsx #: apps/remix/app/components/tables/templates-table.tsx msgid "Select row" @@ -8212,6 +8359,7 @@ msgstr "Sign Up with OIDC" #: packages/lib/utils/fields.ts #: packages/ui/primitives/document-flow/add-fields.tsx #: packages/ui/primitives/document-flow/types.ts +#: packages/ui/primitives/field-selector.tsx #: packages/ui/primitives/template-flow/add-template-fields.tsx msgid "Signature" msgstr "Signature" @@ -8676,10 +8824,12 @@ msgstr "Sync Email Domains" msgid "Sync failed, changes not saved" msgstr "Sync failed, changes not saved" -#: packages/lib/utils/document-audit-logs.ts -msgid "System auto inserted fields" -msgstr "System auto inserted fields" +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "Sync license from server" +msgstr "Sync license from server" +#: packages/lib/utils/document-audit-logs.ts +#: packages/lib/utils/document-audit-logs.ts #: packages/lib/utils/document-audit-logs.ts msgctxt "Audit log format" msgid "System auto inserted fields" @@ -9070,6 +9220,7 @@ msgstr "The document owner has been notified of your decision. They may contact #. placeholder {0}: data.delegatedOwnerName || data.delegatedOwnerEmail #. placeholder {1}: data.teamName #: packages/lib/utils/document-audit-logs.ts +msgctxt "Audit log format" msgid "The document ownership was delegated to {0} on behalf of {1}" msgstr "The document ownership was delegated to {0} on behalf of {1}" @@ -9691,6 +9842,10 @@ msgstr "To {0} this {1}, you need to be logged in." msgid "To accept this invitation you must create an account." msgstr "To accept this invitation you must create an account." +#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx +msgid "To add members to this team, you must first add them to the organisation." +msgstr "To add members to this team, you must first add them to the organisation." + #: apps/remix/app/components/dialogs/team-member-create-dialog.tsx msgid "To be able to add members to a team, you must first add them to the organisation. For more information, please see the <0>documentation0>." msgstr "To be able to add members to a team, you must first add them to the organisation. For more information, please see the <0>documentation0>." @@ -9881,6 +10036,10 @@ msgstr "Type" msgid "Type a command or search..." msgstr "Type a command or search..." +#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx +msgid "Type an email address to add a recipient" +msgstr "Type an email address to add a recipient" + #: packages/ui/primitives/signature-pad/signature-pad-type.tsx msgid "Type your signature" msgstr "Type your signature" @@ -10367,10 +10526,6 @@ msgstr "Validation failed" msgid "Value" msgstr "Value" -#: packages/lib/types/field-meta.ts -msgid "Value must be a number" -msgstr "Value must be a number" - #: packages/email/template-components/template-access-auth-2fa.tsx msgid "Verification Code Required" msgstr "Verification Code Required" @@ -11110,6 +11265,18 @@ msgstr "Yes" msgid "You" msgstr "You" +#: packages/lib/utils/document-audit-logs.ts +msgid "You added a field" +msgstr "You added a field" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You added a recipient" +msgstr "You added a recipient" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You approved the document" +msgstr "You approved the document" + #: apps/remix/app/components/general/document-signing/document-signing-complete-dialog.tsx msgid "You are about to complete approving the following document" msgstr "You are about to complete approving the following document" @@ -11174,9 +11341,14 @@ msgid "You are about to remove the following email from <0>{0}0>." msgstr "You are about to remove the following email from <0>{0}0>." #. placeholder {0}: organisation.name -#. placeholder {0}: team.name #: apps/remix/app/components/dialogs/organisation-group-delete-dialog.tsx +msgctxt "Removing group from organisation" +msgid "You are about to remove the following group from <0>{0}0>." +msgstr "You are about to remove the following group from <0>{0}0>." + +#. placeholder {0}: team.name #: apps/remix/app/components/dialogs/team-group-delete-dialog.tsx +msgctxt "Removing group from team" msgid "You are about to remove the following group from <0>{0}0>." msgstr "You are about to remove the following group from <0>{0}0>." @@ -11356,6 +11528,23 @@ msgstr "You cannot upload documents at this time." msgid "You cannot upload encrypted PDFs." msgstr "You cannot upload encrypted PDFs." +#: packages/lib/utils/document-audit-logs.ts +msgid "You CC'd the document" +msgstr "You CC'd the document" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You completed your task" +msgstr "You completed your task" + +#. placeholder {0}: data.envelopeItemTitle +#: packages/lib/utils/document-audit-logs.ts +msgid "You created an envelope item with title {0}" +msgstr "You created an envelope item with title {0}" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You created the document" +msgstr "You created the document" + #: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.billing.tsx msgid "You currently have an inactive <0>{currentProductName}0> subscription" msgstr "You currently have an inactive <0>{currentProductName}0> subscription" @@ -11364,6 +11553,15 @@ msgstr "You currently have an inactive <0>{currentProductName}0> subscription" msgid "You currently have no access to any teams within this organisation. Please contact your organisation to request access." msgstr "You currently have no access to any teams within this organisation. Please contact your organisation to request access." +#. placeholder {0}: data.envelopeItemTitle +#: packages/lib/utils/document-audit-logs.ts +msgid "You deleted an envelope item with title {0}" +msgstr "You deleted an envelope item with title {0}" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You deleted the document" +msgstr "You deleted the document" + #: apps/remix/app/components/forms/token.tsx msgid "You do not have permission to create a token for this team." msgstr "You do not have permission to create a token for this team." @@ -11376,6 +11574,10 @@ msgstr "You don't manage billing for any organisations." msgid "You don't need to sign it anymore." msgstr "You don't need to sign it anymore." +#: packages/lib/utils/document-audit-logs.ts +msgid "You failed to validate a 2FA token for the document" +msgstr "You failed to validate a 2FA token for the document" + #. placeholder {0}: data.organisationName #: apps/remix/app/routes/_unauthenticated+/organisation.invite.$token.tsx msgid "You have accepted an invitation from <0>{0}0> to join their organisation." @@ -11538,6 +11740,10 @@ msgstr "You have updated the team group." msgid "You have verified your email address for <0>{0}0>." msgstr "You have verified your email address for <0>{0}0>." +#: packages/lib/utils/document-audit-logs.ts +msgid "You moved the document to team" +msgstr "You moved the document to team" + #: apps/remix/app/components/dialogs/organisation-delete-dialog.tsx #: apps/remix/app/components/dialogs/team-delete-dialog.tsx #: apps/remix/app/components/dialogs/token-delete-dialog.tsx @@ -11579,6 +11785,97 @@ msgstr "You need to be logged in to view this page." msgid "You need to setup 2FA to mark this document as viewed." msgstr "You need to setup 2FA to mark this document as viewed." +#: packages/lib/utils/document-audit-logs.ts +msgid "You opened the document" +msgstr "You opened the document" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You prefilled a field" +msgstr "You prefilled a field" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You rejected the document" +msgstr "You rejected the document" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You removed a field" +msgstr "You removed a field" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You removed a recipient" +msgstr "You removed a recipient" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You requested a 2FA token for the document" +msgstr "You requested a 2FA token for the document" + +#. placeholder {0}: data.recipientEmail +#: packages/lib/utils/document-audit-logs.ts +msgid "You resent an email to {0}" +msgstr "You resent an email to {0}" + +#. placeholder {0}: data.recipientEmail +#: packages/lib/utils/document-audit-logs.ts +msgid "You sent an email to {0}" +msgstr "You sent an email to {0}" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You sent the document" +msgstr "You sent the document" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You signed a field" +msgstr "You signed a field" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You signed the document" +msgstr "You signed the document" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You unsigned a field" +msgstr "You unsigned a field" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You updated a field" +msgstr "You updated a field" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You updated a recipient" +msgstr "You updated a recipient" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You updated the document" +msgstr "You updated the document" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You updated the document access auth requirements" +msgstr "You updated the document access auth requirements" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You updated the document external ID" +msgstr "You updated the document external ID" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You updated the document signing auth requirements" +msgstr "You updated the document signing auth requirements" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You updated the document title" +msgstr "You updated the document title" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You updated the document visibility" +msgstr "You updated the document visibility" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You validated a 2FA token for the document" +msgstr "You validated a 2FA token for the document" + +#: packages/lib/utils/document-audit-logs.ts +#: packages/lib/utils/document-audit-logs.ts +msgid "You viewed the document" +msgstr "You viewed the document" + #: apps/remix/app/components/dialogs/admin-organisation-create-dialog.tsx msgid "You will need to configure any claims or subscription after creating this organisation" msgstr "You will need to configure any claims or subscription after creating this organisation" @@ -11637,6 +11934,11 @@ msgstr "Your bulk send operation for template \"{templateName}\" has completed." msgid "Your current {currentProductName} plan is past due. Please update your payment information." msgstr "Your current {currentProductName} plan is past due. Please update your payment information." +#: apps/remix/app/components/forms/subscription-claim-form.tsx +#: apps/remix/app/routes/_authenticated+/admin+/organisations.$id.tsx +msgid "Your current license does not include these features." +msgstr "Your current license does not include these features." + #: apps/remix/app/routes/_authenticated+/o.$orgUrl.support.tsx msgid "Your current plan includes the following support channels:" msgstr "Your current plan includes the following support channels:" diff --git a/packages/lib/translations/es/web.po b/packages/lib/translations/es/web.po index deff7e07a..e213e4048 100644 --- a/packages/lib/translations/es/web.po +++ b/packages/lib/translations/es/web.po @@ -22,6 +22,11 @@ msgstr "" msgid ".PDF documents accepted (max {APP_DOCUMENT_UPLOAD_SIZE_LIMIT}MB)" msgstr ".Documentos PDF aceptados (máx {APP_DOCUMENT_UPLOAD_SIZE_LIMIT}MB)" +#. placeholder {0}: invalidEmails[0].value +#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx +msgid "\"{0}\" is not a valid email address." +msgstr "" + #. placeholder {0}: field.customText #. placeholder {1}: timezone || '' #: apps/remix/app/components/general/document-signing/document-signing-date-field.tsx @@ -101,6 +106,17 @@ msgstr "{0, plural, one {# campo} other {# campos}}" msgid "{0, plural, one {# folder} other {# folders}}" msgstr "{0, plural, one {# carpeta} other {# carpetas}}" +#. placeholder {0}: result.deletedCount +#. placeholder {1}: result.failedIds.length +#: apps/remix/app/components/dialogs/envelopes-bulk-delete-dialog.tsx +msgid "{0, plural, one {# item deleted.} other {# items deleted.}} {1, plural, one {# item could not be deleted.} other {# items could not be deleted.}}" +msgstr "" + +#. placeholder {0}: result.deletedCount +#: apps/remix/app/components/dialogs/envelopes-bulk-delete-dialog.tsx +msgid "{0, plural, one {# item has been deleted.} other {# items have been deleted.}}" +msgstr "" + #. placeholder {0}: detectedRecipients.length #: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx msgid "{0, plural, one {# recipient have been added from AI detection.} other {# recipients have been added from AI detection.}}" @@ -243,17 +259,6 @@ msgstr "{0} te ha invitado a {recipientActionVerb} el documento \"{1}\"." msgid "{0} invited you to {recipientActionVerb} a document" msgstr "{0} te invitó a {recipientActionVerb} un documento" -#. placeholder {0}: result.deletedCount -#. placeholder {1}: result.failedIds.length -#: apps/remix/app/components/dialogs/envelopes-bulk-delete-dialog.tsx -msgid "{0} item(s) deleted. {1} item(s) could not be deleted." -msgstr "" - -#. placeholder {0}: result.deletedCount -#: apps/remix/app/components/dialogs/envelopes-bulk-delete-dialog.tsx -msgid "{0} item(s) have been deleted." -msgstr "" - #. placeholder {0}: remaining.documents #. placeholder {1}: quota.documents #: apps/remix/app/components/general/document/document-upload-button-legacy.tsx @@ -346,110 +351,6 @@ msgstr "{MAXIMUM_PASSKEYS, plural, one {No puedes tener más de # clave de acces msgid "{maximumEnvelopeItemCount, plural, one {You cannot upload more than # item per envelope.} other {You cannot upload more than # items per envelope.}}" msgstr "{maximumEnvelopeItemCount, plural, one {No puedes subir más de # elemento por sobre.} other {No puedes subir más de # elementos por sobre.}}" -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} added a field" -msgstr "{prefix} agregó un campo" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} added a recipient" -msgstr "{prefix} agregó un destinatario" - -#. placeholder {0}: data.envelopeItemTitle -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} created an envelope item with title {0}" -msgstr "{prefix} creó un elemento de sobre con título {0}" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} created the document" -msgstr "{prefix} creó el documento" - -#. placeholder {0}: data.envelopeItemTitle -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} deleted an envelope item with title {0}" -msgstr "{prefix} eliminó un elemento de sobre con título {0}" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} deleted the document" -msgstr "{prefix} eliminó el documento" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} moved the document to team" -msgstr "{prefix} movió el documento al equipo" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} opened the document" -msgstr "{prefix} abrió el documento" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} prefilled a field" -msgstr "{prefix} prefijó un campo" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} removed a field" -msgstr "{prefix} eliminó un campo" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} removed a recipient" -msgstr "{prefix} eliminó un destinatario" - -#. placeholder {0}: data.recipientEmail -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} resent an email to {0}" -msgstr "{prefix} reenviaron un correo electrónico a {0}" - -#. placeholder {0}: data.recipientEmail -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} sent an email to {0}" -msgstr "{prefix} envió un correo electrónico a {0}" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} sent the document" -msgstr "{prefix} envió el documento" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} signed a field" -msgstr "{prefix} firmó un campo" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} unsigned a field" -msgstr "{prefix} no firmó un campo" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} updated a field" -msgstr "{prefix} actualizó un campo" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} updated a recipient" -msgstr "{prefix} actualizó un destinatario" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} updated the document" -msgstr "{prefix} actualizó el documento" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} updated the document access auth requirements" -msgstr "{prefix} actualizó los requisitos de autorización de acceso al documento" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} updated the document external ID" -msgstr "{prefix} actualizó el ID externo del documento" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} updated the document signing auth requirements" -msgstr "{prefix} actualizó los requisitos de autenticación para la firma del documento" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} updated the document title" -msgstr "{prefix} actualizó el título del documento" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} updated the document visibility" -msgstr "{prefix} actualizó la visibilidad del documento" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} viewed the document" -msgstr "{prefix} vio el documento" - #: apps/remix/app/components/general/direct-template/direct-template-page.tsx msgid "{recipientActionVerb} document" msgstr "{recipientActionVerb} documento" @@ -510,47 +411,148 @@ msgstr "{teamName} te ha invitado a {0}<0/>\"{documentName}\"" msgid "{teamName} has invited you to {action} {documentName}" msgstr "{teamName} te ha invitado a {action} {documentName}" +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} added a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} added a recipient" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} approved the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} CC'd the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} completed their task" +msgstr "" + +#. placeholder {0}: data.envelopeItemTitle +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} created an envelope item with title {0}" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} created the document" +msgstr "" + +#. placeholder {0}: data.envelopeItemTitle +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} deleted an envelope item with title {0}" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} deleted the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} failed to validate a 2FA token for the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} moved the document to team" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} opened the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} prefilled a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} rejected the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} removed a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} removed a recipient" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} requested a 2FA token for the document" +msgstr "" + +#. placeholder {0}: data.recipientEmail +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} resent an email to {0}" +msgstr "" + +#. placeholder {0}: data.recipientEmail +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} sent an email to {0}" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} sent the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} signed a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} signed the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} unsigned a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} updated a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} updated a recipient" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} updated the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} updated the document access auth requirements" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} updated the document external ID" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} updated the document signing auth requirements" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} updated the document title" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} updated the document visibility" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} validated a 2FA token for the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} viewed the document" +msgstr "" + #: apps/remix/app/components/tables/internal-audit-log-table.tsx #: packages/lib/server-only/pdf/render-audit-logs.ts msgid "{userAgent}" msgstr "{userAgent}" -#: packages/lib/utils/document-audit-logs.ts -msgid "{userName} approved the document" -msgstr "{userName} aprobó el documento" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{userName} CC'd the document" -msgstr "{userName} envió una copia del documento" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{userName} completed their task" -msgstr "{userName} completó su tarea" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{userName} failed to validate a 2FA token for the document" -msgstr "{userName} no pudo validar un token 2FA para el documento" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{userName} rejected the document" -msgstr "{userName} rechazó el documento" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{userName} requested a 2FA token for the document" -msgstr "{userName} solicitó un token 2FA para el documento" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{userName} signed the document" -msgstr "{userName} firmó el documento" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{userName} validated a 2FA token for the document" -msgstr "{userName} validó un token 2FA para el documento" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{userName} viewed the document" -msgstr "{userName} vio el documento" - #: apps/remix/app/components/dialogs/sign-field-checkbox-dialog.tsx msgid "{validationLength, plural, one {Select at least # option} other {Select at least # options}}" msgstr "{validationLength, plural, one {Seleccione al menos # opción} other {Seleccione al menos # opciones}}" @@ -1084,6 +1086,7 @@ msgstr "Acciones" msgid "Active" msgstr "Activo" +#: apps/remix/app/components/general/admin-license-card.tsx #: apps/remix/app/components/tables/user-billing-organisations-table.tsx msgctxt "Subscription status" msgid "Active" @@ -1258,6 +1261,10 @@ msgstr "Agregar destinatarios" msgid "Add Recipients" msgstr "Agregar destinatarios" +#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx +msgid "Add recipients to your document" +msgstr "" + #: apps/remix/app/components/embed/authoring/configure-document-recipients.tsx #: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx #: packages/ui/primitives/document-flow/add-signers.tsx @@ -2197,6 +2204,10 @@ msgstr "Al utilizar la función de firma electrónica, usted está consintiendo msgid "Can prepare" msgstr "Puede preparar" +#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx +msgid "Can't find someone?" +msgstr "" + #: apps/remix/app/components/dialogs/admin-organisation-create-dialog.tsx #: apps/remix/app/components/dialogs/admin-organisation-member-update-dialog.tsx #: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx @@ -2359,7 +2370,9 @@ msgstr "Gráficas" #: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx #: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-drag-drop.tsx #: packages/lib/utils/fields.ts +#: packages/ui/primitives/document-flow/add-fields.tsx #: packages/ui/primitives/document-flow/types.ts +#: packages/ui/primitives/template-flow/add-template-fields.tsx msgid "Checkbox" msgstr "Casilla de verificación" @@ -2516,7 +2529,6 @@ msgstr "Compara todos los planes y características en detalle" #: apps/remix/app/components/embed/embed-document-signing-page-v1.tsx #: apps/remix/app/components/embed/embed-document-signing-page-v1.tsx #: apps/remix/app/components/embed/multisign/multi-sign-document-signing-view.tsx -#: apps/remix/app/components/forms/signup.tsx #: apps/remix/app/components/general/document-signing/document-signing-complete-dialog.tsx #: apps/remix/app/components/general/document-signing/document-signing-complete-dialog.tsx msgid "Complete" @@ -2864,6 +2876,7 @@ msgstr "Crea un ticket de soporte" msgid "Create a team to collaborate with your team members." msgstr "Crea un equipo para colaborar con los miembros de tu equipo." +#: apps/remix/app/components/forms/signup.tsx #: apps/remix/app/routes/_unauthenticated+/organisation.invite.$token.tsx #: packages/email/template-components/template-document-self-signed.tsx msgid "Create account" @@ -3562,6 +3575,10 @@ msgstr "¿Desea eliminar esta plantilla?" msgid "Do you want to duplicate this template?" msgstr "¿Desea duplicar esta plantilla?" +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "Documenso License" +msgstr "" + #: apps/remix/app/components/dialogs/account-delete-dialog.tsx msgid "Documenso will delete <0>all of your documents0>, along with all of your completed documents, signatures, and all other resources belonging to your Account." msgstr "Documenso eliminará <0>todos sus documentos0>, junto con todos sus documentos completados, firmas y todos los demás recursos de su cuenta." @@ -3629,6 +3646,7 @@ msgstr "Documento cancelado" msgid "Document completed" msgstr "Documento completado" +#: packages/lib/utils/document-audit-logs.ts #: packages/lib/utils/document-audit-logs.ts #: packages/lib/utils/document-audit-logs.ts msgctxt "Audit log format" @@ -3769,11 +3787,6 @@ msgctxt "Audit log format" msgid "Document opened" msgstr "Documento abierto" -#: packages/lib/utils/document-audit-logs.ts -msgctxt "Audit log format" -msgid "Document ownership delegated" -msgstr "Propiedad del documento delegada" - #: apps/remix/app/components/general/document/document-status.tsx msgid "Document pending" msgstr "Documento pendiente" @@ -4270,8 +4283,9 @@ msgid "Email preferences updated" msgstr "Preferencias de correo electrónico actualizadas" #: packages/lib/utils/document-audit-logs.ts +msgctxt "Audit log format" msgid "Email resent" -msgstr "Correo electrónico reeenviado" +msgstr "" #: apps/remix/app/components/dialogs/envelope-distribute-dialog.tsx #: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx @@ -4281,8 +4295,9 @@ msgid "Email Sender" msgstr "Remitente de correo electrónico" #: packages/lib/utils/document-audit-logs.ts +msgctxt "Audit log format" msgid "Email sent" -msgstr "Correo electrónico enviado" +msgstr "" #: apps/remix/app/routes/_unauthenticated+/check-email.tsx msgid "Email sent!" @@ -4526,12 +4541,14 @@ msgid "Envelope Item Count" msgstr "Conteo de elementos del sobre" #: packages/lib/utils/document-audit-logs.ts +msgctxt "Audit log format" msgid "Envelope item created" -msgstr "Elemento de sobre creado" +msgstr "" #: packages/lib/utils/document-audit-logs.ts +msgctxt "Audit log format" msgid "Envelope item deleted" -msgstr "Elemento de sobre eliminado" +msgstr "" #: apps/remix/app/components/dialogs/envelope-redistribute-dialog.tsx msgid "Envelope resent" @@ -4669,6 +4686,15 @@ msgstr "Tiempo de espera excedido" msgid "Expired" msgstr "Expirado" +#: apps/remix/app/components/general/admin-license-card.tsx +msgctxt "Subscription status" +msgid "Expired" +msgstr "" + +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "Expires" +msgstr "" + #. placeholder {0}: DateTime.fromMillis(Math.max(millisecondsRemaining, 0)).toFormat( 'mm:ss', ) #: apps/remix/app/components/general/document-signing/access-auth-2fa-form.tsx msgid "Expires in {0}" @@ -4742,6 +4768,10 @@ msgstr "Fallo al guardar configuraciones." msgid "Failed to sign out all sessions" msgstr "Error al cerrar sesión en todas las sesiones" +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "Failed to sync license" +msgstr "" + #: apps/remix/app/routes/_authenticated+/settings+/security.linked-accounts.tsx msgid "Failed to unlink account" msgstr "No se pudo desvincular la cuenta" @@ -4780,6 +4810,10 @@ msgstr "Fallidos: {failedCount}" msgid "Feature Flags" msgstr "Flags de características" +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "Features" +msgstr "" + #: packages/ui/primitives/document-flow/field-items-advanced-settings/text-field.tsx msgid "Field character limit" msgstr "Límite de caracteres del campo" @@ -5335,7 +5369,9 @@ msgstr "Reclamación de suscripción heredada" #: apps/remix/app/components/general/document-signing/document-signing-initials-field.tsx #: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-drag-drop.tsx #: packages/lib/utils/fields.ts +#: packages/ui/primitives/document-flow/add-fields.tsx #: packages/ui/primitives/document-flow/types.ts +#: packages/ui/primitives/template-flow/add-template-fields.tsx msgid "Initials" msgstr "Iniciales" @@ -5363,11 +5399,20 @@ msgstr "Código inválido. Por favor, intenta nuevamente." msgid "Invalid domains" msgstr "Dominios no válidos" +#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx #: packages/lib/types/recipient.ts #: packages/ui/primitives/document-flow/add-signers.types.ts msgid "Invalid email" msgstr "Email inválido" +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "Invalid License Key" +msgstr "" + +#: apps/remix/app/components/general/admin-license-status-banner.tsx +msgid "Invalid License Type - Your Documenso instance is using features that are not part of your license." +msgstr "" + #: apps/remix/app/routes/_unauthenticated+/team.verify.email.$token.tsx msgid "Invalid link" msgstr "Enlace inválido" @@ -5419,6 +5464,7 @@ msgid "Invite Members" msgstr "Invitar a miembros" #: apps/remix/app/components/dialogs/organisation-member-invite-dialog.tsx +#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx msgid "Invite organisation members" msgstr "Invitar miembros de la organización" @@ -5426,6 +5472,10 @@ msgstr "Invitar miembros de la organización" msgid "Invite team members to collaborate" msgstr "Invitar miembros del equipo a colaborar" +#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx +msgid "Invite them to the organisation first" +msgstr "" + #: apps/remix/app/components/tables/organisation-member-invites-table.tsx msgid "Invited At" msgstr "Invitado el" @@ -5570,6 +5620,12 @@ msgstr "Último uso" msgid "Last Year" msgstr "Último año" +#: apps/remix/app/components/forms/subscription-claim-form.tsx +#: apps/remix/app/components/general/admin-license-card.tsx +#: apps/remix/app/routes/_authenticated+/admin+/organisations.$id.tsx +msgid "Learn more" +msgstr "" + #: apps/remix/app/components/dialogs/organisation-leave-dialog.tsx #: apps/remix/app/components/tables/user-organisations-table.tsx msgid "Leave" @@ -5602,6 +5658,27 @@ msgstr "Espaciado de letras" msgid "Letter Spacing" msgstr "Espaciado de letras" +#: apps/remix/app/components/general/admin-license-card.tsx +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "License" +msgstr "" + +#: apps/remix/app/components/general/admin-license-status-banner.tsx +msgid "License Expired - Please renew your license to continue using enterprise features." +msgstr "" + +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "License Key" +msgstr "" + +#: apps/remix/app/components/general/admin-license-status-banner.tsx +msgid "License Payment Overdue - Please update your payment to avoid service disruptions." +msgstr "" + +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "License synced" +msgstr "" + #: apps/remix/app/components/general/app-command-menu.tsx msgid "Light Mode" msgstr "Modo claro" @@ -5627,8 +5704,9 @@ msgid "Link expires in 30 minutes." msgstr "El enlace expira en 30 minutos." #: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.public-profile.tsx +msgctxt "Action button to link template to public profile" msgid "Link template" -msgstr "Enlace de plantilla" +msgstr "" #: packages/email/templates/organisation-account-link-confirmation.tsx msgid "Link your Documenso account" @@ -5677,6 +5755,7 @@ msgstr "Cargando Documento..." msgid "Loading suggestions..." msgstr "Cargando sugerencias..." +#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx #: apps/remix/app/components/general/document/document-page-view-recent-activity.tsx msgid "Loading..." msgstr "Cargando..." @@ -5954,6 +6033,10 @@ msgstr "Centro" msgid "Min" msgstr "Mín" +#: apps/remix/app/components/general/admin-license-status-banner.tsx +msgid "Missing License - Your Documenso instance is using features that require a license." +msgstr "" + #: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page.tsx msgid "Missing Recipients" msgstr "Faltan destinatarios" @@ -6027,6 +6110,7 @@ msgid "My Folder" msgstr "Mi Carpeta" #: apps/remix/app/components/tables/internal-audit-log-table.tsx +#: apps/remix/app/routes/_internal+/[__htmltopdf]+/certificate.tsx #: packages/lib/server-only/pdf/render-audit-logs.ts msgid "N/A" msgstr "N/A" @@ -6145,6 +6229,10 @@ msgstr "No se encontraron documentos" msgid "No email detected" msgstr "No se detectó ningún correo electrónico" +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "No features enabled" +msgstr "" + #: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx msgid "No fields were detected in your document." msgstr "No se detectaron campos en tu documento." @@ -6165,6 +6253,18 @@ msgstr "No se encontraron carpetas que coincidan con \"{searchTerm}\"" msgid "No further action is required from you at this time." msgstr "No further action is required from you at this time." +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "No License Configured" +msgstr "" + +#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx +msgid "No members selected" +msgstr "" + +#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx +msgid "No organisation members available" +msgstr "" + #: apps/remix/app/routes/_authenticated+/dashboard.tsx msgid "No organisations found" msgstr "No se encontraron organizaciones" @@ -6665,6 +6765,7 @@ msgstr "Contraseña actualizada" msgid "Password updated!" msgstr "¡Contraseña actualizada!" +#: apps/remix/app/components/general/admin-license-card.tsx #: apps/remix/app/components/tables/user-billing-organisations-table.tsx msgctxt "Subscription status" msgid "Past Due" @@ -6935,6 +7036,10 @@ msgstr "Por favor, revise el documento antes de firmar." msgid "Please select a PDF file" msgstr "Por favor seleccione un archivo PDF" +#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx +msgid "Please select at least one member to add to the team." +msgstr "" + #: apps/remix/app/components/general/document-signing/access-auth-2fa-form.tsx msgid "Please select how you'd like to receive your verification code." msgstr "Por favor, selecciona cómo te gustaría recibir tu código de verificación." @@ -7091,7 +7196,9 @@ msgstr "Acciones rápidas" #: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx #: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-drag-drop.tsx #: packages/lib/utils/fields.ts +#: packages/ui/primitives/document-flow/add-fields.tsx #: packages/ui/primitives/document-flow/types.ts +#: packages/ui/primitives/template-flow/add-template-fields.tsx msgid "Radio" msgstr "Radio" @@ -7176,11 +7283,6 @@ msgstr "Documentos recientes" #: apps/remix/app/components/general/template/template-page-view-documents-table.tsx #: apps/remix/app/components/tables/documents-table.tsx #: apps/remix/app/components/tables/inbox-table.tsx -#: packages/lib/utils/document-audit-logs.ts -#: packages/lib/utils/document-audit-logs.ts -#: packages/lib/utils/document-audit-logs.ts -#: packages/lib/utils/document-audit-logs.ts -#: packages/lib/utils/document-audit-logs.ts msgid "Recipient" msgstr "Destinatario" @@ -7201,14 +7303,42 @@ msgstr "Destinatario {0}" msgid "Recipient action authentication" msgstr "Autenticación de acción de destinatario" +#: packages/lib/utils/document-audit-logs.ts +msgid "Recipient approved the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "Recipient CC'd the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "Recipient completed their task" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "Recipient failed to validate a 2FA token for the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "Recipient rejected the document" +msgstr "" + #: packages/ui/components/document/document-email-checkboxes.tsx msgid "Recipient removed email" msgstr "Correo electrónico de destinatario eliminado" +#: packages/lib/utils/document-audit-logs.ts +msgid "Recipient requested a 2FA token for the document" +msgstr "" + #: packages/ui/components/document/document-email-checkboxes.tsx msgid "Recipient signed email" msgstr "Correo electrónico de destinatario firmado" +#: packages/lib/utils/document-audit-logs.ts +msgid "Recipient signed the document" +msgstr "" + #: packages/ui/components/document/document-email-checkboxes.tsx msgid "Recipient signing request email" msgstr "Correo electrónico de solicitud de firma de destinatario" @@ -7217,10 +7347,20 @@ msgstr "Correo electrónico de solicitud de firma de destinatario" msgid "Recipient updated" msgstr "Destinatario actualizado" +#: packages/lib/utils/document-audit-logs.ts +msgid "Recipient validated a 2FA token for the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "Recipient viewed the document" +msgstr "" + #: apps/remix/app/components/embed/authoring/configure-document-recipients.tsx #: apps/remix/app/components/general/document/document-page-view-recipients.tsx +#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx #: apps/remix/app/components/general/template/template-page-view-recipients.tsx #: apps/remix/app/routes/_authenticated+/admin+/documents.$id.tsx +#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/documents.$id.logs.tsx #: apps/remix/app/routes/_internal+/[__htmltopdf]+/audit-log.tsx #: packages/lib/server-only/pdf/render-audit-logs.ts msgid "Recipients" @@ -7725,6 +7865,10 @@ msgstr "Seguridad" msgid "Security activity" msgstr "Actividad de seguridad" +#: apps/remix/app/components/general/admin-license-status-banner.tsx +msgid "See Documentation" +msgstr "" + #: apps/remix/app/routes/_authenticated+/admin+/documents.$id.tsx msgid "See the background jobs tab for the status" msgstr "Consulte la pestaña de trabajos en segundo plano para el estado" @@ -7853,15 +7997,18 @@ msgstr "Seleccionar una opción" msgid "Select Options" msgstr "Seleccionar opciones" +#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx +msgid "Select or add recipients" +msgstr "" + +#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx +msgid "Select or enter email address" +msgstr "" + #: apps/remix/app/components/general/document-signing/document-signing-auth-passkey.tsx msgid "Select passkey" msgstr "Seleccionar clave de acceso" -#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx -#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx -msgid "Select recipients" -msgstr "Seleccionar destinatarios" - #: apps/remix/app/components/tables/documents-table.tsx #: apps/remix/app/components/tables/templates-table.tsx msgid "Select row" @@ -8217,6 +8364,7 @@ msgstr "Regístrate con OIDC" #: packages/lib/utils/fields.ts #: packages/ui/primitives/document-flow/add-fields.tsx #: packages/ui/primitives/document-flow/types.ts +#: packages/ui/primitives/field-selector.tsx #: packages/ui/primitives/template-flow/add-template-fields.tsx msgid "Signature" msgstr "Firma" @@ -8681,10 +8829,12 @@ msgstr "Sincronizar dominios de correo electrónico" msgid "Sync failed, changes not saved" msgstr "La sincronización falló, los cambios no se guardaron" -#: packages/lib/utils/document-audit-logs.ts -msgid "System auto inserted fields" -msgstr "Campos insertados automáticamente por el sistema" +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "Sync license from server" +msgstr "" +#: packages/lib/utils/document-audit-logs.ts +#: packages/lib/utils/document-audit-logs.ts #: packages/lib/utils/document-audit-logs.ts msgctxt "Audit log format" msgid "System auto inserted fields" @@ -9075,8 +9225,9 @@ msgstr "The document owner has been notified of your decision. They may contact #. placeholder {0}: data.delegatedOwnerName || data.delegatedOwnerEmail #. placeholder {1}: data.teamName #: packages/lib/utils/document-audit-logs.ts +msgctxt "Audit log format" msgid "The document ownership was delegated to {0} on behalf of {1}" -msgstr "La propiedad del documento fue delegada a {0} en nombre de {1}" +msgstr "" #: apps/remix/app/components/dialogs/template-use-dialog.tsx msgid "The document was created but could not be sent to recipients." @@ -9696,6 +9847,10 @@ msgstr "Para {0} este {1}, necesitas estar conectado." msgid "To accept this invitation you must create an account." msgstr "Para aceptar esta invitación debes crear una cuenta." +#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx +msgid "To add members to this team, you must first add them to the organisation." +msgstr "" + #: apps/remix/app/components/dialogs/team-member-create-dialog.tsx msgid "To be able to add members to a team, you must first add them to the organisation. For more information, please see the <0>documentation0>." msgstr "Para poder añadir miembros a un equipo, primero debes añadirlos a la organización. Para más información, por favor consulta la <0>documentación0>." @@ -9886,6 +10041,10 @@ msgstr "Escribir" msgid "Type a command or search..." msgstr "Escribe un comando o busca..." +#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx +msgid "Type an email address to add a recipient" +msgstr "" + #: packages/ui/primitives/signature-pad/signature-pad-type.tsx msgid "Type your signature" msgstr "Escribe tu firma" @@ -10372,10 +10531,6 @@ msgstr "Validación fallida" msgid "Value" msgstr "Valor" -#: packages/lib/types/field-meta.ts -msgid "Value must be a number" -msgstr "El valor debe ser un número" - #: packages/email/template-components/template-access-auth-2fa.tsx msgid "Verification Code Required" msgstr "Código de verificación requerido" @@ -11115,6 +11270,18 @@ msgstr "Sí" msgid "You" msgstr "Tú" +#: packages/lib/utils/document-audit-logs.ts +msgid "You added a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You added a recipient" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You approved the document" +msgstr "" + #: apps/remix/app/components/general/document-signing/document-signing-complete-dialog.tsx msgid "You are about to complete approving the following document" msgstr "Está a punto de completar la aprobación del siguiente documento" @@ -11179,11 +11346,16 @@ msgid "You are about to remove the following email from <0>{0}0>." msgstr "Estás a punto de eliminar el siguiente correo de <0>{0}0>." #. placeholder {0}: organisation.name -#. placeholder {0}: team.name #: apps/remix/app/components/dialogs/organisation-group-delete-dialog.tsx -#: apps/remix/app/components/dialogs/team-group-delete-dialog.tsx +msgctxt "Removing group from organisation" msgid "You are about to remove the following group from <0>{0}0>." -msgstr "Estás a punto de eliminar el siguiente grupo de <0>{0}0>." +msgstr "" + +#. placeholder {0}: team.name +#: apps/remix/app/components/dialogs/team-group-delete-dialog.tsx +msgctxt "Removing group from team" +msgid "You are about to remove the following group from <0>{0}0>." +msgstr "" #. placeholder {0}: organisation.name #: apps/remix/app/components/dialogs/organisation-member-delete-dialog.tsx @@ -11361,6 +11533,23 @@ msgstr "No puede cargar documentos en este momento." msgid "You cannot upload encrypted PDFs." msgstr "No puedes subir archivos PDF cifrados." +#: packages/lib/utils/document-audit-logs.ts +msgid "You CC'd the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You completed your task" +msgstr "" + +#. placeholder {0}: data.envelopeItemTitle +#: packages/lib/utils/document-audit-logs.ts +msgid "You created an envelope item with title {0}" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You created the document" +msgstr "" + #: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.billing.tsx msgid "You currently have an inactive <0>{currentProductName}0> subscription" msgstr "Actualmente tienes una suscripción inactiva de <0>{currentProductName}0>" @@ -11369,6 +11558,15 @@ msgstr "Actualmente tienes una suscripción inactiva de <0>{currentProductName}< msgid "You currently have no access to any teams within this organisation. Please contact your organisation to request access." msgstr "Actualmente no tienes acceso a ningún equipo dentro de esta organización. Por favor, contacta a tu organización para solicitar acceso." +#. placeholder {0}: data.envelopeItemTitle +#: packages/lib/utils/document-audit-logs.ts +msgid "You deleted an envelope item with title {0}" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You deleted the document" +msgstr "" + #: apps/remix/app/components/forms/token.tsx msgid "You do not have permission to create a token for this team." msgstr "No tienes permiso para crear un token para este equipo." @@ -11381,6 +11579,10 @@ msgstr "No gestionas la facturación de ninguna organización." msgid "You don't need to sign it anymore." msgstr "Ya no necesitas firmarlo." +#: packages/lib/utils/document-audit-logs.ts +msgid "You failed to validate a 2FA token for the document" +msgstr "" + #. placeholder {0}: data.organisationName #: apps/remix/app/routes/_unauthenticated+/organisation.invite.$token.tsx msgid "You have accepted an invitation from <0>{0}0> to join their organisation." @@ -11543,6 +11745,10 @@ msgstr "Has actualizado el grupo de equipo." msgid "You have verified your email address for <0>{0}0>." msgstr "Has verificado tu dirección de correo electrónico para <0>{0}0>." +#: packages/lib/utils/document-audit-logs.ts +msgid "You moved the document to team" +msgstr "" + #: apps/remix/app/components/dialogs/organisation-delete-dialog.tsx #: apps/remix/app/components/dialogs/team-delete-dialog.tsx #: apps/remix/app/components/dialogs/token-delete-dialog.tsx @@ -11584,6 +11790,97 @@ msgstr "Debes iniciar sesión para ver esta página." msgid "You need to setup 2FA to mark this document as viewed." msgstr "Debes configurar 2FA para marcar este documento como visto." +#: packages/lib/utils/document-audit-logs.ts +msgid "You opened the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You prefilled a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You rejected the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You removed a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You removed a recipient" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You requested a 2FA token for the document" +msgstr "" + +#. placeholder {0}: data.recipientEmail +#: packages/lib/utils/document-audit-logs.ts +msgid "You resent an email to {0}" +msgstr "" + +#. placeholder {0}: data.recipientEmail +#: packages/lib/utils/document-audit-logs.ts +msgid "You sent an email to {0}" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You sent the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You signed a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You signed the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You unsigned a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You updated a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You updated a recipient" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You updated the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You updated the document access auth requirements" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You updated the document external ID" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You updated the document signing auth requirements" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You updated the document title" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You updated the document visibility" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You validated a 2FA token for the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +#: packages/lib/utils/document-audit-logs.ts +msgid "You viewed the document" +msgstr "" + #: apps/remix/app/components/dialogs/admin-organisation-create-dialog.tsx msgid "You will need to configure any claims or subscription after creating this organisation" msgstr "Necesitarás configurar cualquier reclamo o suscripción después de crear esta organización" @@ -11642,6 +11939,11 @@ msgstr "Tu operación de envío masivo para la plantilla \"{templateName}\" ha s msgid "Your current {currentProductName} plan is past due. Please update your payment information." msgstr "Tu plan actual {currentProductName} está vencido. Por favor, actualiza tu información de pago." +#: apps/remix/app/components/forms/subscription-claim-form.tsx +#: apps/remix/app/routes/_authenticated+/admin+/organisations.$id.tsx +msgid "Your current license does not include these features." +msgstr "" + #: apps/remix/app/routes/_authenticated+/o.$orgUrl.support.tsx msgid "Your current plan includes the following support channels:" msgstr "Su plan actual incluye los siguientes canales de soporte:" diff --git a/packages/lib/translations/fr/web.po b/packages/lib/translations/fr/web.po index 239322929..a4b115446 100644 --- a/packages/lib/translations/fr/web.po +++ b/packages/lib/translations/fr/web.po @@ -22,6 +22,11 @@ msgstr "" msgid ".PDF documents accepted (max {APP_DOCUMENT_UPLOAD_SIZE_LIMIT}MB)" msgstr "Documents .PDF acceptés (max {APP_DOCUMENT_UPLOAD_SIZE_LIMIT}Mo)" +#. placeholder {0}: invalidEmails[0].value +#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx +msgid "\"{0}\" is not a valid email address." +msgstr "" + #. placeholder {0}: field.customText #. placeholder {1}: timezone || '' #: apps/remix/app/components/general/document-signing/document-signing-date-field.tsx @@ -101,6 +106,17 @@ msgstr "{0, plural, one {# champ} other {# champs}}" msgid "{0, plural, one {# folder} other {# folders}}" msgstr "{0, plural, one {# dossier} other {# dossiers}}" +#. placeholder {0}: result.deletedCount +#. placeholder {1}: result.failedIds.length +#: apps/remix/app/components/dialogs/envelopes-bulk-delete-dialog.tsx +msgid "{0, plural, one {# item deleted.} other {# items deleted.}} {1, plural, one {# item could not be deleted.} other {# items could not be deleted.}}" +msgstr "" + +#. placeholder {0}: result.deletedCount +#: apps/remix/app/components/dialogs/envelopes-bulk-delete-dialog.tsx +msgid "{0, plural, one {# item has been deleted.} other {# items have been deleted.}}" +msgstr "" + #. placeholder {0}: detectedRecipients.length #: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx msgid "{0, plural, one {# recipient have been added from AI detection.} other {# recipients have been added from AI detection.}}" @@ -243,17 +259,6 @@ msgstr "{0} vous a invité à {recipientActionVerb} le document \"{1}\"." msgid "{0} invited you to {recipientActionVerb} a document" msgstr "{0} vous a invité à {recipientActionVerb} un document" -#. placeholder {0}: result.deletedCount -#. placeholder {1}: result.failedIds.length -#: apps/remix/app/components/dialogs/envelopes-bulk-delete-dialog.tsx -msgid "{0} item(s) deleted. {1} item(s) could not be deleted." -msgstr "" - -#. placeholder {0}: result.deletedCount -#: apps/remix/app/components/dialogs/envelopes-bulk-delete-dialog.tsx -msgid "{0} item(s) have been deleted." -msgstr "" - #. placeholder {0}: remaining.documents #. placeholder {1}: quota.documents #: apps/remix/app/components/general/document/document-upload-button-legacy.tsx @@ -346,110 +351,6 @@ msgstr "{MAXIMUM_PASSKEYS, plural, one {Vous ne pouvez pas avoir plus de # clé msgid "{maximumEnvelopeItemCount, plural, one {You cannot upload more than # item per envelope.} other {You cannot upload more than # items per envelope.}}" msgstr "{maximumEnvelopeItemCount, plural, one {Vous ne pouvez pas téléverser plus d’un élément par enveloppe.} other {Vous ne pouvez pas téléverser plus de # éléments par enveloppe.}}" -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} added a field" -msgstr "{prefix} a ajouté un champ" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} added a recipient" -msgstr "{prefix} a ajouté un destinataire" - -#. placeholder {0}: data.envelopeItemTitle -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} created an envelope item with title {0}" -msgstr "{prefix} a créé un élément d'enveloppe intitulé {0}" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} created the document" -msgstr "{prefix} a créé le document" - -#. placeholder {0}: data.envelopeItemTitle -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} deleted an envelope item with title {0}" -msgstr "{prefix} a supprimé un élément d'enveloppe intitulé {0}" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} deleted the document" -msgstr "{prefix} a supprimé le document" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} moved the document to team" -msgstr "{prefix} a déplacé le document vers l'équipe" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} opened the document" -msgstr "{prefix} a ouvert le document" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} prefilled a field" -msgstr "{prefix} a pré-rempli un champ" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} removed a field" -msgstr "{prefix} a supprimé un champ" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} removed a recipient" -msgstr "{prefix} a supprimé un destinataire" - -#. placeholder {0}: data.recipientEmail -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} resent an email to {0}" -msgstr "{prefix} a renvoyé un e-mail à {0}" - -#. placeholder {0}: data.recipientEmail -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} sent an email to {0}" -msgstr "{prefix} a envoyé un email à {0}" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} sent the document" -msgstr "{prefix} a envoyé le document" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} signed a field" -msgstr "{prefix} a signé un champ" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} unsigned a field" -msgstr "{prefix} n'a pas signé un champ" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} updated a field" -msgstr "{prefix} a mis à jour un champ" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} updated a recipient" -msgstr "{prefix} a mis à jour un destinataire" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} updated the document" -msgstr "{prefix} a mis à jour le document" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} updated the document access auth requirements" -msgstr "{prefix} a mis à jour les exigences d'authentification d'accès au document" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} updated the document external ID" -msgstr "{prefix} a mis à jour l'ID externe du document" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} updated the document signing auth requirements" -msgstr "{prefix} a mis à jour les exigences d'authentification pour la signature des documents" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} updated the document title" -msgstr "{prefix} a mis à jour le titre du document" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} updated the document visibility" -msgstr "{prefix} a mis à jour la visibilité du document" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} viewed the document" -msgstr "{prefix} a consulté le document" - #: apps/remix/app/components/general/direct-template/direct-template-page.tsx msgid "{recipientActionVerb} document" msgstr "{recipientActionVerb} document" @@ -510,47 +411,148 @@ msgstr "{teamName} vous a invité à {0}<0/>\"{documentName}\"" msgid "{teamName} has invited you to {action} {documentName}" msgstr "{teamName} vous a invité à {action} {documentName}" +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} added a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} added a recipient" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} approved the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} CC'd the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} completed their task" +msgstr "" + +#. placeholder {0}: data.envelopeItemTitle +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} created an envelope item with title {0}" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} created the document" +msgstr "" + +#. placeholder {0}: data.envelopeItemTitle +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} deleted an envelope item with title {0}" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} deleted the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} failed to validate a 2FA token for the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} moved the document to team" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} opened the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} prefilled a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} rejected the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} removed a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} removed a recipient" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} requested a 2FA token for the document" +msgstr "" + +#. placeholder {0}: data.recipientEmail +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} resent an email to {0}" +msgstr "" + +#. placeholder {0}: data.recipientEmail +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} sent an email to {0}" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} sent the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} signed a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} signed the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} unsigned a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} updated a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} updated a recipient" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} updated the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} updated the document access auth requirements" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} updated the document external ID" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} updated the document signing auth requirements" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} updated the document title" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} updated the document visibility" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} validated a 2FA token for the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} viewed the document" +msgstr "" + #: apps/remix/app/components/tables/internal-audit-log-table.tsx #: packages/lib/server-only/pdf/render-audit-logs.ts msgid "{userAgent}" msgstr "{userAgent}" -#: packages/lib/utils/document-audit-logs.ts -msgid "{userName} approved the document" -msgstr "{userName} a approuvé le document" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{userName} CC'd the document" -msgstr "{userName} a mis en copie le document" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{userName} completed their task" -msgstr "{userName} a terminé sa tâche" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{userName} failed to validate a 2FA token for the document" -msgstr "{userName} n'a pas réussi à valider un jeton 2FA pour le document" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{userName} rejected the document" -msgstr "{userName} a rejeté le document" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{userName} requested a 2FA token for the document" -msgstr "{userName} a demandé un jeton 2FA pour le document" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{userName} signed the document" -msgstr "{userName} a signé le document" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{userName} validated a 2FA token for the document" -msgstr "{userName} a validé un jeton 2FA pour le document" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{userName} viewed the document" -msgstr "{userName} a consulté le document" - #: apps/remix/app/components/dialogs/sign-field-checkbox-dialog.tsx msgid "{validationLength, plural, one {Select at least # option} other {Select at least # options}}" msgstr "{validationLength, plural, one {Sélectionnez au moins # option} other {Sélectionnez au moins # options}}" @@ -1084,6 +1086,7 @@ msgstr "Actions" msgid "Active" msgstr "Actif" +#: apps/remix/app/components/general/admin-license-card.tsx #: apps/remix/app/components/tables/user-billing-organisations-table.tsx msgctxt "Subscription status" msgid "Active" @@ -1258,6 +1261,10 @@ msgstr "Ajouter des destinataires" msgid "Add Recipients" msgstr "Ajouter des destinataires" +#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx +msgid "Add recipients to your document" +msgstr "" + #: apps/remix/app/components/embed/authoring/configure-document-recipients.tsx #: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx #: packages/ui/primitives/document-flow/add-signers.tsx @@ -2197,6 +2204,10 @@ msgstr "En utilisant la fonctionnalité de signature électronique, vous consent msgid "Can prepare" msgstr "Peut préparer" +#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx +msgid "Can't find someone?" +msgstr "" + #: apps/remix/app/components/dialogs/admin-organisation-create-dialog.tsx #: apps/remix/app/components/dialogs/admin-organisation-member-update-dialog.tsx #: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx @@ -2359,7 +2370,9 @@ msgstr "Graphiques" #: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx #: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-drag-drop.tsx #: packages/lib/utils/fields.ts +#: packages/ui/primitives/document-flow/add-fields.tsx #: packages/ui/primitives/document-flow/types.ts +#: packages/ui/primitives/template-flow/add-template-fields.tsx msgid "Checkbox" msgstr "Case à cocher" @@ -2516,7 +2529,6 @@ msgstr "Comparez tous les plans et fonctionnalités en détail" #: apps/remix/app/components/embed/embed-document-signing-page-v1.tsx #: apps/remix/app/components/embed/embed-document-signing-page-v1.tsx #: apps/remix/app/components/embed/multisign/multi-sign-document-signing-view.tsx -#: apps/remix/app/components/forms/signup.tsx #: apps/remix/app/components/general/document-signing/document-signing-complete-dialog.tsx #: apps/remix/app/components/general/document-signing/document-signing-complete-dialog.tsx msgid "Complete" @@ -2864,6 +2876,7 @@ msgstr "Créer un ticket de support" msgid "Create a team to collaborate with your team members." msgstr "Créer une équipe pour collaborer avec vos membres." +#: apps/remix/app/components/forms/signup.tsx #: apps/remix/app/routes/_unauthenticated+/organisation.invite.$token.tsx #: packages/email/template-components/template-document-self-signed.tsx msgid "Create account" @@ -3562,6 +3575,10 @@ msgstr "Voulez-vous supprimer ce modèle ?" msgid "Do you want to duplicate this template?" msgstr "Voulez-vous dupliquer ce modèle ?" +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "Documenso License" +msgstr "" + #: apps/remix/app/components/dialogs/account-delete-dialog.tsx msgid "Documenso will delete <0>all of your documents0>, along with all of your completed documents, signatures, and all other resources belonging to your Account." msgstr "Documenso supprimera <0>tous vos documents0>, ainsi que tous vos documents complétés, signatures, et toutes les autres ressources appartenant à votre compte." @@ -3629,6 +3646,7 @@ msgstr "Document Annulé" msgid "Document completed" msgstr "Document terminé" +#: packages/lib/utils/document-audit-logs.ts #: packages/lib/utils/document-audit-logs.ts #: packages/lib/utils/document-audit-logs.ts msgctxt "Audit log format" @@ -3769,11 +3787,6 @@ msgctxt "Audit log format" msgid "Document opened" msgstr "Document ouvert" -#: packages/lib/utils/document-audit-logs.ts -msgctxt "Audit log format" -msgid "Document ownership delegated" -msgstr "Propriété du document déléguée" - #: apps/remix/app/components/general/document/document-status.tsx msgid "Document pending" msgstr "Document en attente" @@ -4270,8 +4283,9 @@ msgid "Email preferences updated" msgstr "Préférences de messagerie mises à jour" #: packages/lib/utils/document-audit-logs.ts +msgctxt "Audit log format" msgid "Email resent" -msgstr "Email renvoyé" +msgstr "" #: apps/remix/app/components/dialogs/envelope-distribute-dialog.tsx #: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx @@ -4281,8 +4295,9 @@ msgid "Email Sender" msgstr "Expéditeur de l'e-mail" #: packages/lib/utils/document-audit-logs.ts +msgctxt "Audit log format" msgid "Email sent" -msgstr "Email envoyé" +msgstr "" #: apps/remix/app/routes/_unauthenticated+/check-email.tsx msgid "Email sent!" @@ -4526,12 +4541,14 @@ msgid "Envelope Item Count" msgstr "Nombre d'articles dans l'enveloppe" #: packages/lib/utils/document-audit-logs.ts +msgctxt "Audit log format" msgid "Envelope item created" -msgstr "Élément d'enveloppe créé" +msgstr "" #: packages/lib/utils/document-audit-logs.ts +msgctxt "Audit log format" msgid "Envelope item deleted" -msgstr "Élément d'enveloppe supprimé" +msgstr "" #: apps/remix/app/components/dialogs/envelope-redistribute-dialog.tsx msgid "Envelope resent" @@ -4669,6 +4686,15 @@ msgstr "Délai dépassé" msgid "Expired" msgstr "Expiré" +#: apps/remix/app/components/general/admin-license-card.tsx +msgctxt "Subscription status" +msgid "Expired" +msgstr "" + +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "Expires" +msgstr "" + #. placeholder {0}: DateTime.fromMillis(Math.max(millisecondsRemaining, 0)).toFormat( 'mm:ss', ) #: apps/remix/app/components/general/document-signing/access-auth-2fa-form.tsx msgid "Expires in {0}" @@ -4742,6 +4768,10 @@ msgstr "Échec de l'enregistrement des paramètres." msgid "Failed to sign out all sessions" msgstr "Impossible de se déconnecter de toutes les sessions" +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "Failed to sync license" +msgstr "" + #: apps/remix/app/routes/_authenticated+/settings+/security.linked-accounts.tsx msgid "Failed to unlink account" msgstr "Échec de la dissociation du compte" @@ -4780,6 +4810,10 @@ msgstr "Échoués : {failedCount}" msgid "Feature Flags" msgstr "Drapeaux de fonctionnalités" +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "Features" +msgstr "" + #: packages/ui/primitives/document-flow/field-items-advanced-settings/text-field.tsx msgid "Field character limit" msgstr "Limite de caractères du champ" @@ -5335,7 +5369,9 @@ msgstr "Réclamation d'abonnement héritée" #: apps/remix/app/components/general/document-signing/document-signing-initials-field.tsx #: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-drag-drop.tsx #: packages/lib/utils/fields.ts +#: packages/ui/primitives/document-flow/add-fields.tsx #: packages/ui/primitives/document-flow/types.ts +#: packages/ui/primitives/template-flow/add-template-fields.tsx msgid "Initials" msgstr "Initiales" @@ -5363,11 +5399,20 @@ msgstr "Code invalide. Veuillez réessayer." msgid "Invalid domains" msgstr "Domaines invalides" +#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx #: packages/lib/types/recipient.ts #: packages/ui/primitives/document-flow/add-signers.types.ts msgid "Invalid email" msgstr "Email invalide" +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "Invalid License Key" +msgstr "" + +#: apps/remix/app/components/general/admin-license-status-banner.tsx +msgid "Invalid License Type - Your Documenso instance is using features that are not part of your license." +msgstr "" + #: apps/remix/app/routes/_unauthenticated+/team.verify.email.$token.tsx msgid "Invalid link" msgstr "Lien invalide" @@ -5419,6 +5464,7 @@ msgid "Invite Members" msgstr "Inviter des membres" #: apps/remix/app/components/dialogs/organisation-member-invite-dialog.tsx +#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx msgid "Invite organisation members" msgstr "Inviter les membres de l'organisation" @@ -5426,6 +5472,10 @@ msgstr "Inviter les membres de l'organisation" msgid "Invite team members to collaborate" msgstr "Inviter des membres de l'équipe à collaborer" +#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx +msgid "Invite them to the organisation first" +msgstr "" + #: apps/remix/app/components/tables/organisation-member-invites-table.tsx msgid "Invited At" msgstr "Invité à" @@ -5570,6 +5620,12 @@ msgstr "Dernière utilisation" msgid "Last Year" msgstr "Dernière Année" +#: apps/remix/app/components/forms/subscription-claim-form.tsx +#: apps/remix/app/components/general/admin-license-card.tsx +#: apps/remix/app/routes/_authenticated+/admin+/organisations.$id.tsx +msgid "Learn more" +msgstr "" + #: apps/remix/app/components/dialogs/organisation-leave-dialog.tsx #: apps/remix/app/components/tables/user-organisations-table.tsx msgid "Leave" @@ -5602,6 +5658,27 @@ msgstr "Espacement des lettres" msgid "Letter Spacing" msgstr "Espacement des Lettres" +#: apps/remix/app/components/general/admin-license-card.tsx +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "License" +msgstr "" + +#: apps/remix/app/components/general/admin-license-status-banner.tsx +msgid "License Expired - Please renew your license to continue using enterprise features." +msgstr "" + +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "License Key" +msgstr "" + +#: apps/remix/app/components/general/admin-license-status-banner.tsx +msgid "License Payment Overdue - Please update your payment to avoid service disruptions." +msgstr "" + +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "License synced" +msgstr "" + #: apps/remix/app/components/general/app-command-menu.tsx msgid "Light Mode" msgstr "Mode clair" @@ -5627,8 +5704,9 @@ msgid "Link expires in 30 minutes." msgstr "Le lien expire dans 30 minutes." #: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.public-profile.tsx +msgctxt "Action button to link template to public profile" msgid "Link template" -msgstr "Modèle de lien" +msgstr "" #: packages/email/templates/organisation-account-link-confirmation.tsx msgid "Link your Documenso account" @@ -5677,6 +5755,7 @@ msgstr "Chargement du Document..." msgid "Loading suggestions..." msgstr "Chargement des suggestions..." +#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx #: apps/remix/app/components/general/document/document-page-view-recent-activity.tsx msgid "Loading..." msgstr "Chargement..." @@ -5954,6 +6033,10 @@ msgstr "Milieu" msgid "Min" msgstr "Min" +#: apps/remix/app/components/general/admin-license-status-banner.tsx +msgid "Missing License - Your Documenso instance is using features that require a license." +msgstr "" + #: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page.tsx msgid "Missing Recipients" msgstr "Manque de destinataires" @@ -6027,6 +6110,7 @@ msgid "My Folder" msgstr "Mon Dossier" #: apps/remix/app/components/tables/internal-audit-log-table.tsx +#: apps/remix/app/routes/_internal+/[__htmltopdf]+/certificate.tsx #: packages/lib/server-only/pdf/render-audit-logs.ts msgid "N/A" msgstr "N/A" @@ -6145,6 +6229,10 @@ msgstr "Aucun document trouvé" msgid "No email detected" msgstr "Aucun e-mail détecté" +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "No features enabled" +msgstr "" + #: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx msgid "No fields were detected in your document." msgstr "Aucun champ n'a été détecté dans votre document." @@ -6165,6 +6253,18 @@ msgstr "Aucun dossier correspondant à \"{searchTerm}\" trouvé" msgid "No further action is required from you at this time." msgstr "Aucune autre action n'est requise de votre part pour le moment." +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "No License Configured" +msgstr "" + +#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx +msgid "No members selected" +msgstr "" + +#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx +msgid "No organisation members available" +msgstr "" + #: apps/remix/app/routes/_authenticated+/dashboard.tsx msgid "No organisations found" msgstr "Aucune organisation trouvée" @@ -6665,6 +6765,7 @@ msgstr "Mot de passe mis à jour" msgid "Password updated!" msgstr "Mot de passe mis à jour !" +#: apps/remix/app/components/general/admin-license-card.tsx #: apps/remix/app/components/tables/user-billing-organisations-table.tsx msgctxt "Subscription status" msgid "Past Due" @@ -6935,6 +7036,10 @@ msgstr "Veuillez examiner le document avant de signer." msgid "Please select a PDF file" msgstr "Veuillez sélectionner un fichier PDF" +#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx +msgid "Please select at least one member to add to the team." +msgstr "" + #: apps/remix/app/components/general/document-signing/access-auth-2fa-form.tsx msgid "Please select how you'd like to receive your verification code." msgstr "Veuillez sélectionner le moyen par lequel vous souhaitez recevoir votre code de vérification." @@ -7091,7 +7196,9 @@ msgstr "Actions Rapides" #: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx #: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-drag-drop.tsx #: packages/lib/utils/fields.ts +#: packages/ui/primitives/document-flow/add-fields.tsx #: packages/ui/primitives/document-flow/types.ts +#: packages/ui/primitives/template-flow/add-template-fields.tsx msgid "Radio" msgstr "Radio" @@ -7176,11 +7283,6 @@ msgstr "Documents récents" #: apps/remix/app/components/general/template/template-page-view-documents-table.tsx #: apps/remix/app/components/tables/documents-table.tsx #: apps/remix/app/components/tables/inbox-table.tsx -#: packages/lib/utils/document-audit-logs.ts -#: packages/lib/utils/document-audit-logs.ts -#: packages/lib/utils/document-audit-logs.ts -#: packages/lib/utils/document-audit-logs.ts -#: packages/lib/utils/document-audit-logs.ts msgid "Recipient" msgstr "Destinataire" @@ -7201,14 +7303,42 @@ msgstr "Destinataire {0}" msgid "Recipient action authentication" msgstr "Authentification d'action de destinataire" +#: packages/lib/utils/document-audit-logs.ts +msgid "Recipient approved the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "Recipient CC'd the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "Recipient completed their task" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "Recipient failed to validate a 2FA token for the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "Recipient rejected the document" +msgstr "" + #: packages/ui/components/document/document-email-checkboxes.tsx msgid "Recipient removed email" msgstr "E-mail de destinataire supprimé" +#: packages/lib/utils/document-audit-logs.ts +msgid "Recipient requested a 2FA token for the document" +msgstr "" + #: packages/ui/components/document/document-email-checkboxes.tsx msgid "Recipient signed email" msgstr "E-mail signé par le destinataire" +#: packages/lib/utils/document-audit-logs.ts +msgid "Recipient signed the document" +msgstr "" + #: packages/ui/components/document/document-email-checkboxes.tsx msgid "Recipient signing request email" msgstr "E-mail de demande de signature de destinataire" @@ -7217,10 +7347,20 @@ msgstr "E-mail de demande de signature de destinataire" msgid "Recipient updated" msgstr "Destinataire mis à jour" +#: packages/lib/utils/document-audit-logs.ts +msgid "Recipient validated a 2FA token for the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "Recipient viewed the document" +msgstr "" + #: apps/remix/app/components/embed/authoring/configure-document-recipients.tsx #: apps/remix/app/components/general/document/document-page-view-recipients.tsx +#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx #: apps/remix/app/components/general/template/template-page-view-recipients.tsx #: apps/remix/app/routes/_authenticated+/admin+/documents.$id.tsx +#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/documents.$id.logs.tsx #: apps/remix/app/routes/_internal+/[__htmltopdf]+/audit-log.tsx #: packages/lib/server-only/pdf/render-audit-logs.ts msgid "Recipients" @@ -7725,6 +7865,10 @@ msgstr "Sécurité" msgid "Security activity" msgstr "Activité de sécurité" +#: apps/remix/app/components/general/admin-license-status-banner.tsx +msgid "See Documentation" +msgstr "" + #: apps/remix/app/routes/_authenticated+/admin+/documents.$id.tsx msgid "See the background jobs tab for the status" msgstr "Voir l'onglet travaux en arrière-plan pour le statut" @@ -7853,15 +7997,18 @@ msgstr "Sélectionner une option" msgid "Select Options" msgstr "Sélectionner des options" +#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx +msgid "Select or add recipients" +msgstr "" + +#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx +msgid "Select or enter email address" +msgstr "" + #: apps/remix/app/components/general/document-signing/document-signing-auth-passkey.tsx msgid "Select passkey" msgstr "Sélectionner la clé d'authentification" -#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx -#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx -msgid "Select recipients" -msgstr "Sélectionner des destinataires" - #: apps/remix/app/components/tables/documents-table.tsx #: apps/remix/app/components/tables/templates-table.tsx msgid "Select row" @@ -8217,6 +8364,7 @@ msgstr "S'inscrire avec OIDC" #: packages/lib/utils/fields.ts #: packages/ui/primitives/document-flow/add-fields.tsx #: packages/ui/primitives/document-flow/types.ts +#: packages/ui/primitives/field-selector.tsx #: packages/ui/primitives/template-flow/add-template-fields.tsx msgid "Signature" msgstr "Signature" @@ -8681,10 +8829,12 @@ msgstr "Synchroniser les domaines de messagerie" msgid "Sync failed, changes not saved" msgstr "Échec de la synchronisation, modifications non enregistrées" -#: packages/lib/utils/document-audit-logs.ts -msgid "System auto inserted fields" -msgstr "Champs insérés automatiquement par le système" +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "Sync license from server" +msgstr "" +#: packages/lib/utils/document-audit-logs.ts +#: packages/lib/utils/document-audit-logs.ts #: packages/lib/utils/document-audit-logs.ts msgctxt "Audit log format" msgid "System auto inserted fields" @@ -9075,8 +9225,9 @@ msgstr "Le propriétaire du document a été informé de votre décision. Il peu #. placeholder {0}: data.delegatedOwnerName || data.delegatedOwnerEmail #. placeholder {1}: data.teamName #: packages/lib/utils/document-audit-logs.ts +msgctxt "Audit log format" msgid "The document ownership was delegated to {0} on behalf of {1}" -msgstr "La propriété du document a été déléguée à {0} au nom de {1}" +msgstr "" #: apps/remix/app/components/dialogs/template-use-dialog.tsx msgid "The document was created but could not be sent to recipients." @@ -9696,6 +9847,10 @@ msgstr "Pour {0} ce {1}, vous devez être connecté." msgid "To accept this invitation you must create an account." msgstr "Pour accepter cette invitation, vous devez créer un compte." +#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx +msgid "To add members to this team, you must first add them to the organisation." +msgstr "" + #: apps/remix/app/components/dialogs/team-member-create-dialog.tsx msgid "To be able to add members to a team, you must first add them to the organisation. For more information, please see the <0>documentation0>." msgstr "Pour pouvoir ajouter des membres à une équipe, vous devez d'abord les ajouter à l'organisation. Pour plus d'informations, veuillez consulter la <0>documentation0>." @@ -9886,6 +10041,10 @@ msgstr "Saisir" msgid "Type a command or search..." msgstr "Tapez une commande ou recherchez..." +#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx +msgid "Type an email address to add a recipient" +msgstr "" + #: packages/ui/primitives/signature-pad/signature-pad-type.tsx msgid "Type your signature" msgstr "Saisissez votre signature" @@ -10372,10 +10531,6 @@ msgstr "La validation a échoué" msgid "Value" msgstr "Valeur" -#: packages/lib/types/field-meta.ts -msgid "Value must be a number" -msgstr "La valeur doit être un nombre" - #: packages/email/template-components/template-access-auth-2fa.tsx msgid "Verification Code Required" msgstr "Code de vérification requis" @@ -11115,6 +11270,18 @@ msgstr "Oui" msgid "You" msgstr "Vous" +#: packages/lib/utils/document-audit-logs.ts +msgid "You added a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You added a recipient" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You approved the document" +msgstr "" + #: apps/remix/app/components/general/document-signing/document-signing-complete-dialog.tsx msgid "You are about to complete approving the following document" msgstr "Vous êtes sur le point de terminer l'approbation du document suivant" @@ -11179,11 +11346,16 @@ msgid "You are about to remove the following email from <0>{0}0>." msgstr "Vous êtes sur le point de supprimer l'e-mail suivant de <0>{0}0>." #. placeholder {0}: organisation.name -#. placeholder {0}: team.name #: apps/remix/app/components/dialogs/organisation-group-delete-dialog.tsx -#: apps/remix/app/components/dialogs/team-group-delete-dialog.tsx +msgctxt "Removing group from organisation" msgid "You are about to remove the following group from <0>{0}0>." -msgstr "Vous êtes sur le point de supprimer le groupe suivant de <0>{0}0>." +msgstr "" + +#. placeholder {0}: team.name +#: apps/remix/app/components/dialogs/team-group-delete-dialog.tsx +msgctxt "Removing group from team" +msgid "You are about to remove the following group from <0>{0}0>." +msgstr "" #. placeholder {0}: organisation.name #: apps/remix/app/components/dialogs/organisation-member-delete-dialog.tsx @@ -11361,6 +11533,23 @@ msgstr "Vous ne pouvez pas importer de documents pour le moment." msgid "You cannot upload encrypted PDFs." msgstr "Vous ne pouvez pas importer de PDF chiffrés." +#: packages/lib/utils/document-audit-logs.ts +msgid "You CC'd the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You completed your task" +msgstr "" + +#. placeholder {0}: data.envelopeItemTitle +#: packages/lib/utils/document-audit-logs.ts +msgid "You created an envelope item with title {0}" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You created the document" +msgstr "" + #: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.billing.tsx msgid "You currently have an inactive <0>{currentProductName}0> subscription" msgstr "Vous avez actuellement un abonnement inactif à <0>{currentProductName}0>" @@ -11369,6 +11558,15 @@ msgstr "Vous avez actuellement un abonnement inactif à <0>{currentProductName}< msgid "You currently have no access to any teams within this organisation. Please contact your organisation to request access." msgstr "Vous n'avez actuellement accès à aucune équipe au sein de cette organisation. Veuillez contacter votre organisation pour demander l'accès." +#. placeholder {0}: data.envelopeItemTitle +#: packages/lib/utils/document-audit-logs.ts +msgid "You deleted an envelope item with title {0}" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You deleted the document" +msgstr "" + #: apps/remix/app/components/forms/token.tsx msgid "You do not have permission to create a token for this team." msgstr "Vous n’avez pas l’autorisation de créer un jeton pour cette équipe." @@ -11381,6 +11579,10 @@ msgstr "Vous ne gérez la facturation d’aucune organisation." msgid "You don't need to sign it anymore." msgstr "Vous n'avez plus besoin de le signer." +#: packages/lib/utils/document-audit-logs.ts +msgid "You failed to validate a 2FA token for the document" +msgstr "" + #. placeholder {0}: data.organisationName #: apps/remix/app/routes/_unauthenticated+/organisation.invite.$token.tsx msgid "You have accepted an invitation from <0>{0}0> to join their organisation." @@ -11543,6 +11745,10 @@ msgstr "Vous avez mis à jour le groupe d'équipe." msgid "You have verified your email address for <0>{0}0>." msgstr "Vous avez vérifié votre adresse e-mail pour <0>{0}0>." +#: packages/lib/utils/document-audit-logs.ts +msgid "You moved the document to team" +msgstr "" + #: apps/remix/app/components/dialogs/organisation-delete-dialog.tsx #: apps/remix/app/components/dialogs/team-delete-dialog.tsx #: apps/remix/app/components/dialogs/token-delete-dialog.tsx @@ -11584,6 +11790,97 @@ msgstr "Vous devez être connecté pour voir cette page." msgid "You need to setup 2FA to mark this document as viewed." msgstr "Vous devez configurer 2FA pour marquer ce document comme vu." +#: packages/lib/utils/document-audit-logs.ts +msgid "You opened the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You prefilled a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You rejected the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You removed a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You removed a recipient" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You requested a 2FA token for the document" +msgstr "" + +#. placeholder {0}: data.recipientEmail +#: packages/lib/utils/document-audit-logs.ts +msgid "You resent an email to {0}" +msgstr "" + +#. placeholder {0}: data.recipientEmail +#: packages/lib/utils/document-audit-logs.ts +msgid "You sent an email to {0}" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You sent the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You signed a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You signed the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You unsigned a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You updated a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You updated a recipient" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You updated the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You updated the document access auth requirements" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You updated the document external ID" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You updated the document signing auth requirements" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You updated the document title" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You updated the document visibility" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You validated a 2FA token for the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +#: packages/lib/utils/document-audit-logs.ts +msgid "You viewed the document" +msgstr "" + #: apps/remix/app/components/dialogs/admin-organisation-create-dialog.tsx msgid "You will need to configure any claims or subscription after creating this organisation" msgstr "Vous devrez configurer toutes les réclamations ou abonnements après avoir créé cette organisation" @@ -11642,6 +11939,11 @@ msgstr "Votre envoi groupé pour le modèle \"{templateName}\" est terminé." msgid "Your current {currentProductName} plan is past due. Please update your payment information." msgstr "Votre plan actuel {currentProductName} est arrivé à échéance. Veuillez mettre à jour vos informations de paiement." +#: apps/remix/app/components/forms/subscription-claim-form.tsx +#: apps/remix/app/routes/_authenticated+/admin+/organisations.$id.tsx +msgid "Your current license does not include these features." +msgstr "" + #: apps/remix/app/routes/_authenticated+/o.$orgUrl.support.tsx msgid "Your current plan includes the following support channels:" msgstr "Votre plan actuel comprend les canaux de support suivants :" diff --git a/packages/lib/translations/it/web.po b/packages/lib/translations/it/web.po index f626d6f4e..00d747b11 100644 --- a/packages/lib/translations/it/web.po +++ b/packages/lib/translations/it/web.po @@ -22,6 +22,11 @@ msgstr "" msgid ".PDF documents accepted (max {APP_DOCUMENT_UPLOAD_SIZE_LIMIT}MB)" msgstr ".I documenti PDF accettati (max {APP_DOCUMENT_UPLOAD_SIZE_LIMIT}MB)" +#. placeholder {0}: invalidEmails[0].value +#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx +msgid "\"{0}\" is not a valid email address." +msgstr "" + #. placeholder {0}: field.customText #. placeholder {1}: timezone || '' #: apps/remix/app/components/general/document-signing/document-signing-date-field.tsx @@ -101,6 +106,17 @@ msgstr "{0, plural, one {# campo} other {# campi}}" msgid "{0, plural, one {# folder} other {# folders}}" msgstr "{0, plural, one {# cartella} other {# cartelle}}" +#. placeholder {0}: result.deletedCount +#. placeholder {1}: result.failedIds.length +#: apps/remix/app/components/dialogs/envelopes-bulk-delete-dialog.tsx +msgid "{0, plural, one {# item deleted.} other {# items deleted.}} {1, plural, one {# item could not be deleted.} other {# items could not be deleted.}}" +msgstr "" + +#. placeholder {0}: result.deletedCount +#: apps/remix/app/components/dialogs/envelopes-bulk-delete-dialog.tsx +msgid "{0, plural, one {# item has been deleted.} other {# items have been deleted.}}" +msgstr "" + #. placeholder {0}: detectedRecipients.length #: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx msgid "{0, plural, one {# recipient have been added from AI detection.} other {# recipients have been added from AI detection.}}" @@ -243,17 +259,6 @@ msgstr "{0} ti ha invitato a {recipientActionVerb} il documento \"{1}\"." msgid "{0} invited you to {recipientActionVerb} a document" msgstr "{0} ti ha invitato a {recipientActionVerb} un documento" -#. placeholder {0}: result.deletedCount -#. placeholder {1}: result.failedIds.length -#: apps/remix/app/components/dialogs/envelopes-bulk-delete-dialog.tsx -msgid "{0} item(s) deleted. {1} item(s) could not be deleted." -msgstr "" - -#. placeholder {0}: result.deletedCount -#: apps/remix/app/components/dialogs/envelopes-bulk-delete-dialog.tsx -msgid "{0} item(s) have been deleted." -msgstr "" - #. placeholder {0}: remaining.documents #. placeholder {1}: quota.documents #: apps/remix/app/components/general/document/document-upload-button-legacy.tsx @@ -346,110 +351,6 @@ msgstr "{MAXIMUM_PASSKEYS, plural, one {Non puoi avere più di # chiave di acces msgid "{maximumEnvelopeItemCount, plural, one {You cannot upload more than # item per envelope.} other {You cannot upload more than # items per envelope.}}" msgstr "{maximumEnvelopeItemCount, plural, one {Non puoi caricare più di # elemento per busta.} other {Non puoi caricare più di # elementi per busta.}}" -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} added a field" -msgstr "{prefix} ha aggiunto un campo" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} added a recipient" -msgstr "{prefix} ha aggiunto un destinatario" - -#. placeholder {0}: data.envelopeItemTitle -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} created an envelope item with title {0}" -msgstr "{prefix} ha creato un elemento busta con il titolo {0}" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} created the document" -msgstr "{prefix} ha creato il documento" - -#. placeholder {0}: data.envelopeItemTitle -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} deleted an envelope item with title {0}" -msgstr "{prefix} ha eliminato un elemento busta con il titolo {0}" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} deleted the document" -msgstr "{prefix} ha eliminato il documento" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} moved the document to team" -msgstr "{prefix} ha spostato il documento al team" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} opened the document" -msgstr "{prefix} ha aperto il documento" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} prefilled a field" -msgstr "{prefix} ha precompilato un campo" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} removed a field" -msgstr "{prefix} ha rimosso un campo" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} removed a recipient" -msgstr "{prefix} ha rimosso un destinatario" - -#. placeholder {0}: data.recipientEmail -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} resent an email to {0}" -msgstr "{prefix} ha rinviato un'email a {0}" - -#. placeholder {0}: data.recipientEmail -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} sent an email to {0}" -msgstr "{prefix} ha inviato un'email a {0}" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} sent the document" -msgstr "{prefix} ha inviato il documento" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} signed a field" -msgstr "{prefix} ha firmato un campo" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} unsigned a field" -msgstr "{prefix} ha annullato la firma di un campo" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} updated a field" -msgstr "{prefix} ha aggiornato un campo" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} updated a recipient" -msgstr "{prefix} ha aggiornato un destinatario" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} updated the document" -msgstr "{prefix} ha aggiornato il documento" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} updated the document access auth requirements" -msgstr "{prefix} ha aggiornato i requisiti di autenticazione per l'accesso al documento" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} updated the document external ID" -msgstr "{prefix} ha aggiornato l'ID esterno del documento" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} updated the document signing auth requirements" -msgstr "{prefix} ha aggiornato i requisiti di autenticazione per la firma del documento" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} updated the document title" -msgstr "{prefix} ha aggiornato il titolo del documento" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} updated the document visibility" -msgstr "{prefix} ha aggiornato la visibilità del documento" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} viewed the document" -msgstr "{prefix} ha visualizzato il documento" - #: apps/remix/app/components/general/direct-template/direct-template-page.tsx msgid "{recipientActionVerb} document" msgstr "{recipientActionVerb} documento" @@ -510,47 +411,148 @@ msgstr "{teamName} ti ha invitato a {0}<0/>\"{documentName}\"" msgid "{teamName} has invited you to {action} {documentName}" msgstr "{teamName} ti ha invitato a {action} {documentName}" +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} added a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} added a recipient" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} approved the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} CC'd the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} completed their task" +msgstr "" + +#. placeholder {0}: data.envelopeItemTitle +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} created an envelope item with title {0}" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} created the document" +msgstr "" + +#. placeholder {0}: data.envelopeItemTitle +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} deleted an envelope item with title {0}" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} deleted the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} failed to validate a 2FA token for the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} moved the document to team" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} opened the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} prefilled a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} rejected the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} removed a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} removed a recipient" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} requested a 2FA token for the document" +msgstr "" + +#. placeholder {0}: data.recipientEmail +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} resent an email to {0}" +msgstr "" + +#. placeholder {0}: data.recipientEmail +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} sent an email to {0}" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} sent the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} signed a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} signed the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} unsigned a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} updated a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} updated a recipient" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} updated the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} updated the document access auth requirements" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} updated the document external ID" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} updated the document signing auth requirements" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} updated the document title" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} updated the document visibility" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} validated a 2FA token for the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} viewed the document" +msgstr "" + #: apps/remix/app/components/tables/internal-audit-log-table.tsx #: packages/lib/server-only/pdf/render-audit-logs.ts msgid "{userAgent}" msgstr "{userAgent}" -#: packages/lib/utils/document-audit-logs.ts -msgid "{userName} approved the document" -msgstr "{userName} ha approvato il documento" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{userName} CC'd the document" -msgstr "{userName} ha inoltrato il documento" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{userName} completed their task" -msgstr "{userName} ha completato il suo compito" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{userName} failed to validate a 2FA token for the document" -msgstr "{userName} non è riuscito a convalidare un token 2FA per il documento" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{userName} rejected the document" -msgstr "{userName} ha rifiutato il documento" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{userName} requested a 2FA token for the document" -msgstr "{userName} ha richiesto un token 2FA per il documento" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{userName} signed the document" -msgstr "{userName} ha firmato il documento" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{userName} validated a 2FA token for the document" -msgstr "{userName} ha convalidato un token 2FA per il documento" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{userName} viewed the document" -msgstr "{userName} ha visualizzato il documento" - #: apps/remix/app/components/dialogs/sign-field-checkbox-dialog.tsx msgid "{validationLength, plural, one {Select at least # option} other {Select at least # options}}" msgstr "{validationLength, plural, one {Seleziona almeno # opzione} other {Seleziona almeno # opzioni}}" @@ -1084,6 +1086,7 @@ msgstr "Azioni" msgid "Active" msgstr "Attivo" +#: apps/remix/app/components/general/admin-license-card.tsx #: apps/remix/app/components/tables/user-billing-organisations-table.tsx msgctxt "Subscription status" msgid "Active" @@ -1258,6 +1261,10 @@ msgstr "Aggiungi destinatari" msgid "Add Recipients" msgstr "Aggiungi Destinatari" +#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx +msgid "Add recipients to your document" +msgstr "" + #: apps/remix/app/components/embed/authoring/configure-document-recipients.tsx #: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx #: packages/ui/primitives/document-flow/add-signers.tsx @@ -2197,6 +2204,10 @@ msgstr "Utilizzando la funzione di firma elettronica, acconsenti a effettuare tr msgid "Can prepare" msgstr "Può preparare" +#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx +msgid "Can't find someone?" +msgstr "" + #: apps/remix/app/components/dialogs/admin-organisation-create-dialog.tsx #: apps/remix/app/components/dialogs/admin-organisation-member-update-dialog.tsx #: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx @@ -2359,7 +2370,9 @@ msgstr "Grafici" #: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx #: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-drag-drop.tsx #: packages/lib/utils/fields.ts +#: packages/ui/primitives/document-flow/add-fields.tsx #: packages/ui/primitives/document-flow/types.ts +#: packages/ui/primitives/template-flow/add-template-fields.tsx msgid "Checkbox" msgstr "Casella di controllo" @@ -2516,7 +2529,6 @@ msgstr "Confronta tutti i piani e le caratteristiche in dettaglio" #: apps/remix/app/components/embed/embed-document-signing-page-v1.tsx #: apps/remix/app/components/embed/embed-document-signing-page-v1.tsx #: apps/remix/app/components/embed/multisign/multi-sign-document-signing-view.tsx -#: apps/remix/app/components/forms/signup.tsx #: apps/remix/app/components/general/document-signing/document-signing-complete-dialog.tsx #: apps/remix/app/components/general/document-signing/document-signing-complete-dialog.tsx msgid "Complete" @@ -2864,6 +2876,7 @@ msgstr "Crea un ticket di supporto" msgid "Create a team to collaborate with your team members." msgstr "Crea un team per collaborare con i membri del tuo team." +#: apps/remix/app/components/forms/signup.tsx #: apps/remix/app/routes/_unauthenticated+/organisation.invite.$token.tsx #: packages/email/template-components/template-document-self-signed.tsx msgid "Create account" @@ -3562,6 +3575,10 @@ msgstr "Vuoi eliminare questo modello?" msgid "Do you want to duplicate this template?" msgstr "Vuoi duplicare questo modello?" +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "Documenso License" +msgstr "" + #: apps/remix/app/components/dialogs/account-delete-dialog.tsx msgid "Documenso will delete <0>all of your documents0>, along with all of your completed documents, signatures, and all other resources belonging to your Account." msgstr "Documenso eliminerà <0>tutti i tuoi documenti0>, insieme a tutti i tuoi documenti completati, firme e tutte le altre risorse appartenenti al tuo account." @@ -3629,6 +3646,7 @@ msgstr "Documento Annullato" msgid "Document completed" msgstr "Documento completato" +#: packages/lib/utils/document-audit-logs.ts #: packages/lib/utils/document-audit-logs.ts #: packages/lib/utils/document-audit-logs.ts msgctxt "Audit log format" @@ -3769,11 +3787,6 @@ msgctxt "Audit log format" msgid "Document opened" msgstr "Documento aperto" -#: packages/lib/utils/document-audit-logs.ts -msgctxt "Audit log format" -msgid "Document ownership delegated" -msgstr "Proprietà del documento delegata" - #: apps/remix/app/components/general/document/document-status.tsx msgid "Document pending" msgstr "Documento in sospeso" @@ -4270,8 +4283,9 @@ msgid "Email preferences updated" msgstr "Preferenze email aggiornate" #: packages/lib/utils/document-audit-logs.ts +msgctxt "Audit log format" msgid "Email resent" -msgstr "Email rinviato" +msgstr "" #: apps/remix/app/components/dialogs/envelope-distribute-dialog.tsx #: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx @@ -4281,8 +4295,9 @@ msgid "Email Sender" msgstr "Mittente Email" #: packages/lib/utils/document-audit-logs.ts +msgctxt "Audit log format" msgid "Email sent" -msgstr "Email inviato" +msgstr "" #: apps/remix/app/routes/_unauthenticated+/check-email.tsx msgid "Email sent!" @@ -4526,12 +4541,14 @@ msgid "Envelope Item Count" msgstr "Conteggio articoli della busta" #: packages/lib/utils/document-audit-logs.ts +msgctxt "Audit log format" msgid "Envelope item created" -msgstr "Elemento busta creato" +msgstr "" #: packages/lib/utils/document-audit-logs.ts +msgctxt "Audit log format" msgid "Envelope item deleted" -msgstr "Elemento busta eliminato" +msgstr "" #: apps/remix/app/components/dialogs/envelope-redistribute-dialog.tsx msgid "Envelope resent" @@ -4669,6 +4686,15 @@ msgstr "Tempo scaduto" msgid "Expired" msgstr "Scaduto" +#: apps/remix/app/components/general/admin-license-card.tsx +msgctxt "Subscription status" +msgid "Expired" +msgstr "" + +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "Expires" +msgstr "" + #. placeholder {0}: DateTime.fromMillis(Math.max(millisecondsRemaining, 0)).toFormat( 'mm:ss', ) #: apps/remix/app/components/general/document-signing/access-auth-2fa-form.tsx msgid "Expires in {0}" @@ -4742,6 +4768,10 @@ msgstr "Impossibile salvare le impostazioni." msgid "Failed to sign out all sessions" msgstr "Non è stato possibile disconnettere tutte le sessioni" +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "Failed to sync license" +msgstr "" + #: apps/remix/app/routes/_authenticated+/settings+/security.linked-accounts.tsx msgid "Failed to unlink account" msgstr "Impossibile scollegare l'account" @@ -4780,6 +4810,10 @@ msgstr "Falliti: {failedCount}" msgid "Feature Flags" msgstr "Flags delle funzionalità" +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "Features" +msgstr "" + #: packages/ui/primitives/document-flow/field-items-advanced-settings/text-field.tsx msgid "Field character limit" msgstr "Limite di caratteri del campo" @@ -5335,7 +5369,9 @@ msgstr "Rivendicazione di abbonamento ereditata" #: apps/remix/app/components/general/document-signing/document-signing-initials-field.tsx #: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-drag-drop.tsx #: packages/lib/utils/fields.ts +#: packages/ui/primitives/document-flow/add-fields.tsx #: packages/ui/primitives/document-flow/types.ts +#: packages/ui/primitives/template-flow/add-template-fields.tsx msgid "Initials" msgstr "Iniziali" @@ -5363,11 +5399,20 @@ msgstr "Codice non valido. Riprova." msgid "Invalid domains" msgstr "Domini non validi" +#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx #: packages/lib/types/recipient.ts #: packages/ui/primitives/document-flow/add-signers.types.ts msgid "Invalid email" msgstr "Email non valida" +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "Invalid License Key" +msgstr "" + +#: apps/remix/app/components/general/admin-license-status-banner.tsx +msgid "Invalid License Type - Your Documenso instance is using features that are not part of your license." +msgstr "" + #: apps/remix/app/routes/_unauthenticated+/team.verify.email.$token.tsx msgid "Invalid link" msgstr "Link non valido" @@ -5419,6 +5464,7 @@ msgid "Invite Members" msgstr "Invita membri" #: apps/remix/app/components/dialogs/organisation-member-invite-dialog.tsx +#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx msgid "Invite organisation members" msgstr "Invitare i membri dell'organizzazione" @@ -5426,6 +5472,10 @@ msgstr "Invitare i membri dell'organizzazione" msgid "Invite team members to collaborate" msgstr "Invita i membri del team a collaborare" +#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx +msgid "Invite them to the organisation first" +msgstr "" + #: apps/remix/app/components/tables/organisation-member-invites-table.tsx msgid "Invited At" msgstr "Invitato il" @@ -5570,6 +5620,12 @@ msgstr "Ultimo utilizzo" msgid "Last Year" msgstr "Ultimo anno" +#: apps/remix/app/components/forms/subscription-claim-form.tsx +#: apps/remix/app/components/general/admin-license-card.tsx +#: apps/remix/app/routes/_authenticated+/admin+/organisations.$id.tsx +msgid "Learn more" +msgstr "" + #: apps/remix/app/components/dialogs/organisation-leave-dialog.tsx #: apps/remix/app/components/tables/user-organisations-table.tsx msgid "Leave" @@ -5602,6 +5658,27 @@ msgstr "Spaziatura lettere" msgid "Letter Spacing" msgstr "Spaziatura Lettere" +#: apps/remix/app/components/general/admin-license-card.tsx +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "License" +msgstr "" + +#: apps/remix/app/components/general/admin-license-status-banner.tsx +msgid "License Expired - Please renew your license to continue using enterprise features." +msgstr "" + +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "License Key" +msgstr "" + +#: apps/remix/app/components/general/admin-license-status-banner.tsx +msgid "License Payment Overdue - Please update your payment to avoid service disruptions." +msgstr "" + +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "License synced" +msgstr "" + #: apps/remix/app/components/general/app-command-menu.tsx msgid "Light Mode" msgstr "Modalità chiara" @@ -5627,8 +5704,9 @@ msgid "Link expires in 30 minutes." msgstr "Il link scade in 30 minuti." #: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.public-profile.tsx +msgctxt "Action button to link template to public profile" msgid "Link template" -msgstr "Collega modello" +msgstr "" #: packages/email/templates/organisation-account-link-confirmation.tsx msgid "Link your Documenso account" @@ -5677,6 +5755,7 @@ msgstr "Caricamento Documento..." msgid "Loading suggestions..." msgstr "Caricamento suggerimenti..." +#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx #: apps/remix/app/components/general/document/document-page-view-recent-activity.tsx msgid "Loading..." msgstr "Caricamento in corso..." @@ -5954,6 +6033,10 @@ msgstr "Medio" msgid "Min" msgstr "" +#: apps/remix/app/components/general/admin-license-status-banner.tsx +msgid "Missing License - Your Documenso instance is using features that require a license." +msgstr "" + #: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page.tsx msgid "Missing Recipients" msgstr "Destinatari Mancanti" @@ -6027,6 +6110,7 @@ msgid "My Folder" msgstr "La Mia Cartella" #: apps/remix/app/components/tables/internal-audit-log-table.tsx +#: apps/remix/app/routes/_internal+/[__htmltopdf]+/certificate.tsx #: packages/lib/server-only/pdf/render-audit-logs.ts msgid "N/A" msgstr "N/A" @@ -6145,6 +6229,10 @@ msgstr "Nessun documento trovato" msgid "No email detected" msgstr "Nessuna email rilevata" +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "No features enabled" +msgstr "" + #: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx msgid "No fields were detected in your document." msgstr "Nel tuo documento non è stato rilevato alcun campo." @@ -6165,6 +6253,18 @@ msgstr "Nessuna cartella trovata corrispondente a \"{searchTerm}\"" msgid "No further action is required from you at this time." msgstr "Non sono richieste ulteriori azioni da parte tua in questo momento." +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "No License Configured" +msgstr "" + +#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx +msgid "No members selected" +msgstr "" + +#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx +msgid "No organisation members available" +msgstr "" + #: apps/remix/app/routes/_authenticated+/dashboard.tsx msgid "No organisations found" msgstr "Nessuna organizzazione trovata" @@ -6665,6 +6765,7 @@ msgstr "Password aggiornato" msgid "Password updated!" msgstr "Password aggiornata!" +#: apps/remix/app/components/general/admin-license-card.tsx #: apps/remix/app/components/tables/user-billing-organisations-table.tsx msgctxt "Subscription status" msgid "Past Due" @@ -6935,6 +7036,10 @@ msgstr "Rivedi il documento prima di firmare." msgid "Please select a PDF file" msgstr "Seleziona un file PDF" +#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx +msgid "Please select at least one member to add to the team." +msgstr "" + #: apps/remix/app/components/general/document-signing/access-auth-2fa-form.tsx msgid "Please select how you'd like to receive your verification code." msgstr "Seleziona come desideri ricevere il tuo codice di verifica." @@ -7091,7 +7196,9 @@ msgstr "Azioni rapide" #: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx #: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-drag-drop.tsx #: packages/lib/utils/fields.ts +#: packages/ui/primitives/document-flow/add-fields.tsx #: packages/ui/primitives/document-flow/types.ts +#: packages/ui/primitives/template-flow/add-template-fields.tsx msgid "Radio" msgstr "Radio" @@ -7176,11 +7283,6 @@ msgstr "Documenti recenti" #: apps/remix/app/components/general/template/template-page-view-documents-table.tsx #: apps/remix/app/components/tables/documents-table.tsx #: apps/remix/app/components/tables/inbox-table.tsx -#: packages/lib/utils/document-audit-logs.ts -#: packages/lib/utils/document-audit-logs.ts -#: packages/lib/utils/document-audit-logs.ts -#: packages/lib/utils/document-audit-logs.ts -#: packages/lib/utils/document-audit-logs.ts msgid "Recipient" msgstr "Destinatario" @@ -7201,14 +7303,42 @@ msgstr "Destinatario {0}" msgid "Recipient action authentication" msgstr "Autenticazione azione destinatario" +#: packages/lib/utils/document-audit-logs.ts +msgid "Recipient approved the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "Recipient CC'd the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "Recipient completed their task" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "Recipient failed to validate a 2FA token for the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "Recipient rejected the document" +msgstr "" + #: packages/ui/components/document/document-email-checkboxes.tsx msgid "Recipient removed email" msgstr "Email destinatario rimosso" +#: packages/lib/utils/document-audit-logs.ts +msgid "Recipient requested a 2FA token for the document" +msgstr "" + #: packages/ui/components/document/document-email-checkboxes.tsx msgid "Recipient signed email" msgstr "Email firmato dal destinatario" +#: packages/lib/utils/document-audit-logs.ts +msgid "Recipient signed the document" +msgstr "" + #: packages/ui/components/document/document-email-checkboxes.tsx msgid "Recipient signing request email" msgstr "Email richiesta firma destinatario" @@ -7217,10 +7347,20 @@ msgstr "Email richiesta firma destinatario" msgid "Recipient updated" msgstr "Destinatario aggiornato" +#: packages/lib/utils/document-audit-logs.ts +msgid "Recipient validated a 2FA token for the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "Recipient viewed the document" +msgstr "" + #: apps/remix/app/components/embed/authoring/configure-document-recipients.tsx #: apps/remix/app/components/general/document/document-page-view-recipients.tsx +#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx #: apps/remix/app/components/general/template/template-page-view-recipients.tsx #: apps/remix/app/routes/_authenticated+/admin+/documents.$id.tsx +#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/documents.$id.logs.tsx #: apps/remix/app/routes/_internal+/[__htmltopdf]+/audit-log.tsx #: packages/lib/server-only/pdf/render-audit-logs.ts msgid "Recipients" @@ -7725,6 +7865,10 @@ msgstr "Sicurezza" msgid "Security activity" msgstr "Attività di sicurezza" +#: apps/remix/app/components/general/admin-license-status-banner.tsx +msgid "See Documentation" +msgstr "" + #: apps/remix/app/routes/_authenticated+/admin+/documents.$id.tsx msgid "See the background jobs tab for the status" msgstr "Consulta la scheda lavori in background per lo stato" @@ -7853,15 +7997,18 @@ msgstr "Seleziona opzione" msgid "Select Options" msgstr "Seleziona opzioni" +#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx +msgid "Select or add recipients" +msgstr "" + +#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx +msgid "Select or enter email address" +msgstr "" + #: apps/remix/app/components/general/document-signing/document-signing-auth-passkey.tsx msgid "Select passkey" msgstr "Seleziona una chiave di accesso" -#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx -#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx -msgid "Select recipients" -msgstr "Seleziona destinatari" - #: apps/remix/app/components/tables/documents-table.tsx #: apps/remix/app/components/tables/templates-table.tsx msgid "Select row" @@ -8217,6 +8364,7 @@ msgstr "Iscriviti con OIDC" #: packages/lib/utils/fields.ts #: packages/ui/primitives/document-flow/add-fields.tsx #: packages/ui/primitives/document-flow/types.ts +#: packages/ui/primitives/field-selector.tsx #: packages/ui/primitives/template-flow/add-template-fields.tsx msgid "Signature" msgstr "Firma" @@ -8681,10 +8829,12 @@ msgstr "Sincronizza Domini Email" msgid "Sync failed, changes not saved" msgstr "Sincronizzazione fallita, modifiche non salvate" -#: packages/lib/utils/document-audit-logs.ts -msgid "System auto inserted fields" -msgstr "Campi inseriti automaticamente dal sistema" +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "Sync license from server" +msgstr "" +#: packages/lib/utils/document-audit-logs.ts +#: packages/lib/utils/document-audit-logs.ts #: packages/lib/utils/document-audit-logs.ts msgctxt "Audit log format" msgid "System auto inserted fields" @@ -9075,8 +9225,9 @@ msgstr "Il proprietario del documento è stato informato della tua decisione. Po #. placeholder {0}: data.delegatedOwnerName || data.delegatedOwnerEmail #. placeholder {1}: data.teamName #: packages/lib/utils/document-audit-logs.ts +msgctxt "Audit log format" msgid "The document ownership was delegated to {0} on behalf of {1}" -msgstr "La proprietà del documento è stata delegata a {0} per conto di {1}" +msgstr "" #: apps/remix/app/components/dialogs/template-use-dialog.tsx msgid "The document was created but could not be sent to recipients." @@ -9696,6 +9847,10 @@ msgstr "Per {0} questo {1}, devi essere loggato." msgid "To accept this invitation you must create an account." msgstr "Per accettare questo invito devi creare un account." +#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx +msgid "To add members to this team, you must first add them to the organisation." +msgstr "" + #: apps/remix/app/components/dialogs/team-member-create-dialog.tsx msgid "To be able to add members to a team, you must first add them to the organisation. For more information, please see the <0>documentation0>." msgstr "Per poter aggiungere membri a un team, devi prima aggiungerli all'organizzazione. Per ulteriori informazioni, consulta la <0>documentazione0>." @@ -9886,6 +10041,10 @@ msgstr "Digita" msgid "Type a command or search..." msgstr "Digita un comando o cerca..." +#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx +msgid "Type an email address to add a recipient" +msgstr "" + #: packages/ui/primitives/signature-pad/signature-pad-type.tsx msgid "Type your signature" msgstr "Digita la tua firma" @@ -10372,10 +10531,6 @@ msgstr "Validazione fallita" msgid "Value" msgstr "Valore" -#: packages/lib/types/field-meta.ts -msgid "Value must be a number" -msgstr "Il valore deve essere un numero" - #: packages/email/template-components/template-access-auth-2fa.tsx msgid "Verification Code Required" msgstr "Codice di verifica richiesto" @@ -11115,6 +11270,18 @@ msgstr "Sì" msgid "You" msgstr "Tu" +#: packages/lib/utils/document-audit-logs.ts +msgid "You added a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You added a recipient" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You approved the document" +msgstr "" + #: apps/remix/app/components/general/document-signing/document-signing-complete-dialog.tsx msgid "You are about to complete approving the following document" msgstr "Stai per completare l'approvazione del seguente documento" @@ -11179,11 +11346,16 @@ msgid "You are about to remove the following email from <0>{0}0>." msgstr "Stai per rimuovere la seguente email da <0>{0}0>." #. placeholder {0}: organisation.name -#. placeholder {0}: team.name #: apps/remix/app/components/dialogs/organisation-group-delete-dialog.tsx -#: apps/remix/app/components/dialogs/team-group-delete-dialog.tsx +msgctxt "Removing group from organisation" msgid "You are about to remove the following group from <0>{0}0>." -msgstr "Stai per rimuovere il gruppo seguente da <0>{0}0>." +msgstr "" + +#. placeholder {0}: team.name +#: apps/remix/app/components/dialogs/team-group-delete-dialog.tsx +msgctxt "Removing group from team" +msgid "You are about to remove the following group from <0>{0}0>." +msgstr "" #. placeholder {0}: organisation.name #: apps/remix/app/components/dialogs/organisation-member-delete-dialog.tsx @@ -11361,6 +11533,23 @@ msgstr "Non puoi caricare documenti in questo momento." msgid "You cannot upload encrypted PDFs." msgstr "Non puoi caricare PDF crittografati." +#: packages/lib/utils/document-audit-logs.ts +msgid "You CC'd the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You completed your task" +msgstr "" + +#. placeholder {0}: data.envelopeItemTitle +#: packages/lib/utils/document-audit-logs.ts +msgid "You created an envelope item with title {0}" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You created the document" +msgstr "" + #: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.billing.tsx msgid "You currently have an inactive <0>{currentProductName}0> subscription" msgstr "Attualmente hai un'abbonamento <0>{currentProductName}0> inattivo" @@ -11369,6 +11558,15 @@ msgstr "Attualmente hai un'abbonamento <0>{currentProductName}0> inattivo" msgid "You currently have no access to any teams within this organisation. Please contact your organisation to request access." msgstr "Attualmente non hai accesso a nessun team all'interno di questa organizzazione. Si prega di contattare la tua organizzazione per richiedere l'accesso." +#. placeholder {0}: data.envelopeItemTitle +#: packages/lib/utils/document-audit-logs.ts +msgid "You deleted an envelope item with title {0}" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You deleted the document" +msgstr "" + #: apps/remix/app/components/forms/token.tsx msgid "You do not have permission to create a token for this team." msgstr "Non hai l'autorizzazione per creare un token per questo team." @@ -11381,6 +11579,10 @@ msgstr "Non gestisci la fatturazione per nessuna organizzazione." msgid "You don't need to sign it anymore." msgstr "Non hai più bisogno di firmarlo." +#: packages/lib/utils/document-audit-logs.ts +msgid "You failed to validate a 2FA token for the document" +msgstr "" + #. placeholder {0}: data.organisationName #: apps/remix/app/routes/_unauthenticated+/organisation.invite.$token.tsx msgid "You have accepted an invitation from <0>{0}0> to join their organisation." @@ -11543,6 +11745,10 @@ msgstr "Hai aggiornato il gruppo del team." msgid "You have verified your email address for <0>{0}0>." msgstr "Hai verificato il tuo indirizzo email per <0>{0}0>." +#: packages/lib/utils/document-audit-logs.ts +msgid "You moved the document to team" +msgstr "" + #: apps/remix/app/components/dialogs/organisation-delete-dialog.tsx #: apps/remix/app/components/dialogs/team-delete-dialog.tsx #: apps/remix/app/components/dialogs/token-delete-dialog.tsx @@ -11584,6 +11790,97 @@ msgstr "Devi essere loggato per visualizzare questa pagina." msgid "You need to setup 2FA to mark this document as viewed." msgstr "Devi configurare l'autenticazione a due fattori per contrassegnare questo documento come visualizzato." +#: packages/lib/utils/document-audit-logs.ts +msgid "You opened the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You prefilled a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You rejected the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You removed a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You removed a recipient" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You requested a 2FA token for the document" +msgstr "" + +#. placeholder {0}: data.recipientEmail +#: packages/lib/utils/document-audit-logs.ts +msgid "You resent an email to {0}" +msgstr "" + +#. placeholder {0}: data.recipientEmail +#: packages/lib/utils/document-audit-logs.ts +msgid "You sent an email to {0}" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You sent the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You signed a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You signed the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You unsigned a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You updated a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You updated a recipient" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You updated the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You updated the document access auth requirements" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You updated the document external ID" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You updated the document signing auth requirements" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You updated the document title" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You updated the document visibility" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You validated a 2FA token for the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +#: packages/lib/utils/document-audit-logs.ts +msgid "You viewed the document" +msgstr "" + #: apps/remix/app/components/dialogs/admin-organisation-create-dialog.tsx msgid "You will need to configure any claims or subscription after creating this organisation" msgstr "Dovrai configurare eventuali reclami o abbonamenti dopo aver creato questa organizzazione" @@ -11642,6 +11939,11 @@ msgstr "La tua operazione di invio massivo per il modello \"{templateName}\" è msgid "Your current {currentProductName} plan is past due. Please update your payment information." msgstr "Il tuo attuale piano {currentProductName} è scaduto. Si prega di aggiornare le informazioni di pagamento." +#: apps/remix/app/components/forms/subscription-claim-form.tsx +#: apps/remix/app/routes/_authenticated+/admin+/organisations.$id.tsx +msgid "Your current license does not include these features." +msgstr "" + #: apps/remix/app/routes/_authenticated+/o.$orgUrl.support.tsx msgid "Your current plan includes the following support channels:" msgstr "Il tuo piano attuale include i seguenti canali di supporto:" diff --git a/packages/lib/translations/ja/web.po b/packages/lib/translations/ja/web.po index 5a6b6450a..33dc97d15 100644 --- a/packages/lib/translations/ja/web.po +++ b/packages/lib/translations/ja/web.po @@ -22,6 +22,11 @@ msgstr "" msgid ".PDF documents accepted (max {APP_DOCUMENT_UPLOAD_SIZE_LIMIT}MB)" msgstr ".PDF ドキュメントのみアップロード可能(最大 {APP_DOCUMENT_UPLOAD_SIZE_LIMIT}MB)" +#. placeholder {0}: invalidEmails[0].value +#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx +msgid "\"{0}\" is not a valid email address." +msgstr "" + #. placeholder {0}: field.customText #. placeholder {1}: timezone || '' #: apps/remix/app/components/general/document-signing/document-signing-date-field.tsx @@ -101,6 +106,17 @@ msgstr "{0, plural, other {# 個のフィールド}}" msgid "{0, plural, one {# folder} other {# folders}}" msgstr "{0, plural, other {# 個のフォルダ}}" +#. placeholder {0}: result.deletedCount +#. placeholder {1}: result.failedIds.length +#: apps/remix/app/components/dialogs/envelopes-bulk-delete-dialog.tsx +msgid "{0, plural, one {# item deleted.} other {# items deleted.}} {1, plural, one {# item could not be deleted.} other {# items could not be deleted.}}" +msgstr "" + +#. placeholder {0}: result.deletedCount +#: apps/remix/app/components/dialogs/envelopes-bulk-delete-dialog.tsx +msgid "{0, plural, one {# item has been deleted.} other {# items have been deleted.}}" +msgstr "" + #. placeholder {0}: detectedRecipients.length #: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx msgid "{0, plural, one {# recipient have been added from AI detection.} other {# recipients have been added from AI detection.}}" @@ -243,17 +259,6 @@ msgstr "{0} からドキュメント「{1}」への{recipientActionVerb}依頼 msgid "{0} invited you to {recipientActionVerb} a document" msgstr "{0} からドキュメントへの{recipientActionVerb}依頼が届いています" -#. placeholder {0}: result.deletedCount -#. placeholder {1}: result.failedIds.length -#: apps/remix/app/components/dialogs/envelopes-bulk-delete-dialog.tsx -msgid "{0} item(s) deleted. {1} item(s) could not be deleted." -msgstr "" - -#. placeholder {0}: result.deletedCount -#: apps/remix/app/components/dialogs/envelopes-bulk-delete-dialog.tsx -msgid "{0} item(s) have been deleted." -msgstr "" - #. placeholder {0}: remaining.documents #. placeholder {1}: quota.documents #: apps/remix/app/components/general/document/document-upload-button-legacy.tsx @@ -346,110 +351,6 @@ msgstr "{MAXIMUM_PASSKEYS, plural, other {# 個を超えるパスキーを保持 msgid "{maximumEnvelopeItemCount, plural, one {You cannot upload more than # item per envelope.} other {You cannot upload more than # items per envelope.}}" msgstr "{maximumEnvelopeItemCount, plural, other {1 つの封筒にアップロードできるアイテムは # 件までです。}}" -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} added a field" -msgstr "{prefix} がフィールドを追加しました" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} added a recipient" -msgstr "{prefix} が受信者を追加しました" - -#. placeholder {0}: data.envelopeItemTitle -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} created an envelope item with title {0}" -msgstr "{prefix} がタイトル {0} の封筒アイテムを作成しました" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} created the document" -msgstr "{prefix} がドキュメントを作成しました" - -#. placeholder {0}: data.envelopeItemTitle -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} deleted an envelope item with title {0}" -msgstr "{prefix} がタイトル {0} の封筒アイテムを削除しました" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} deleted the document" -msgstr "{prefix} がドキュメントを削除しました" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} moved the document to team" -msgstr "{prefix} がドキュメントをチームに移動しました" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} opened the document" -msgstr "{prefix} がドキュメントを開きました" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} prefilled a field" -msgstr "{prefix} がフィールドに事前入力しました" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} removed a field" -msgstr "{prefix} がフィールドを削除しました" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} removed a recipient" -msgstr "{prefix} が受信者を削除しました" - -#. placeholder {0}: data.recipientEmail -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} resent an email to {0}" -msgstr "{prefix} が {0} にメールを再送しました" - -#. placeholder {0}: data.recipientEmail -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} sent an email to {0}" -msgstr "{prefix} が {0} にメールを送信しました" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} sent the document" -msgstr "{prefix} がドキュメントを送信しました" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} signed a field" -msgstr "{prefix} がフィールドに署名しました" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} unsigned a field" -msgstr "{prefix} がフィールドの署名を解除しました" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} updated a field" -msgstr "{prefix} がフィールドを更新しました" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} updated a recipient" -msgstr "{prefix} が受信者を更新しました" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} updated the document" -msgstr "{prefix} がドキュメントを更新しました" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} updated the document access auth requirements" -msgstr "{prefix} がドキュメントのアクセス認証要件を更新しました" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} updated the document external ID" -msgstr "{prefix} がドキュメントの外部 ID を更新しました" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} updated the document signing auth requirements" -msgstr "{prefix} がドキュメントの署名認証要件を更新しました" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} updated the document title" -msgstr "{prefix} がドキュメントのタイトルを更新しました" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} updated the document visibility" -msgstr "{prefix} がドキュメントの公開範囲を更新しました" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} viewed the document" -msgstr "{prefix} がドキュメントを閲覧しました" - #: apps/remix/app/components/general/direct-template/direct-template-page.tsx msgid "{recipientActionVerb} document" msgstr "{recipientActionVerb} 文書" @@ -510,47 +411,148 @@ msgstr "{teamName} から {0}<0/>「{documentName}」の依頼が届いていま msgid "{teamName} has invited you to {action} {documentName}" msgstr "{teamName} から {action} {documentName} の依頼が届いています" +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} added a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} added a recipient" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} approved the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} CC'd the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} completed their task" +msgstr "" + +#. placeholder {0}: data.envelopeItemTitle +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} created an envelope item with title {0}" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} created the document" +msgstr "" + +#. placeholder {0}: data.envelopeItemTitle +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} deleted an envelope item with title {0}" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} deleted the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} failed to validate a 2FA token for the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} moved the document to team" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} opened the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} prefilled a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} rejected the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} removed a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} removed a recipient" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} requested a 2FA token for the document" +msgstr "" + +#. placeholder {0}: data.recipientEmail +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} resent an email to {0}" +msgstr "" + +#. placeholder {0}: data.recipientEmail +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} sent an email to {0}" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} sent the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} signed a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} signed the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} unsigned a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} updated a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} updated a recipient" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} updated the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} updated the document access auth requirements" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} updated the document external ID" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} updated the document signing auth requirements" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} updated the document title" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} updated the document visibility" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} validated a 2FA token for the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} viewed the document" +msgstr "" + #: apps/remix/app/components/tables/internal-audit-log-table.tsx #: packages/lib/server-only/pdf/render-audit-logs.ts msgid "{userAgent}" msgstr "{userAgent}" -#: packages/lib/utils/document-audit-logs.ts -msgid "{userName} approved the document" -msgstr "{userName} がドキュメントを承認しました" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{userName} CC'd the document" -msgstr "{userName} がドキュメントを CC しました" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{userName} completed their task" -msgstr "{userName} が自分のタスクを完了しました" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{userName} failed to validate a 2FA token for the document" -msgstr "{userName} がドキュメント用の 2FA トークンの検証に失敗しました" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{userName} rejected the document" -msgstr "{userName} がドキュメントを却下しました" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{userName} requested a 2FA token for the document" -msgstr "{userName} がドキュメント用の 2FA トークンをリクエストしました" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{userName} signed the document" -msgstr "{userName} がドキュメントに署名しました" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{userName} validated a 2FA token for the document" -msgstr "{userName} がドキュメント用の 2FA トークンを検証しました" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{userName} viewed the document" -msgstr "{userName} がドキュメントを閲覧しました" - #: apps/remix/app/components/dialogs/sign-field-checkbox-dialog.tsx msgid "{validationLength, plural, one {Select at least # option} other {Select at least # options}}" msgstr "{validationLength, plural, other {少なくとも # 個のオプションを選択してください}}" @@ -1084,6 +1086,7 @@ msgstr "操作" msgid "Active" msgstr "有効" +#: apps/remix/app/components/general/admin-license-card.tsx #: apps/remix/app/components/tables/user-billing-organisations-table.tsx msgctxt "Subscription status" msgid "Active" @@ -1258,6 +1261,10 @@ msgstr "受信者を追加" msgid "Add Recipients" msgstr "受信者を追加" +#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx +msgid "Add recipients to your document" +msgstr "" + #: apps/remix/app/components/embed/authoring/configure-document-recipients.tsx #: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx #: packages/ui/primitives/document-flow/add-signers.tsx @@ -2197,6 +2204,10 @@ msgstr "電子署名機能を利用することで、お客様は取引や開示 msgid "Can prepare" msgstr "準備ができる" +#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx +msgid "Can't find someone?" +msgstr "" + #: apps/remix/app/components/dialogs/admin-organisation-create-dialog.tsx #: apps/remix/app/components/dialogs/admin-organisation-member-update-dialog.tsx #: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx @@ -2359,7 +2370,9 @@ msgstr "グラフ" #: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx #: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-drag-drop.tsx #: packages/lib/utils/fields.ts +#: packages/ui/primitives/document-flow/add-fields.tsx #: packages/ui/primitives/document-flow/types.ts +#: packages/ui/primitives/template-flow/add-template-fields.tsx msgid "Checkbox" msgstr "チェックボックス" @@ -2516,7 +2529,6 @@ msgstr "すべてのプランと機能を詳細に比較" #: apps/remix/app/components/embed/embed-document-signing-page-v1.tsx #: apps/remix/app/components/embed/embed-document-signing-page-v1.tsx #: apps/remix/app/components/embed/multisign/multi-sign-document-signing-view.tsx -#: apps/remix/app/components/forms/signup.tsx #: apps/remix/app/components/general/document-signing/document-signing-complete-dialog.tsx #: apps/remix/app/components/general/document-signing/document-signing-complete-dialog.tsx msgid "Complete" @@ -2864,6 +2876,7 @@ msgstr "サポートチケットを作成" msgid "Create a team to collaborate with your team members." msgstr "チームメンバーと共同作業するためのチームを作成します。" +#: apps/remix/app/components/forms/signup.tsx #: apps/remix/app/routes/_unauthenticated+/organisation.invite.$token.tsx #: packages/email/template-components/template-document-self-signed.tsx msgid "Create account" @@ -3562,6 +3575,10 @@ msgstr "このテンプレートを削除しますか?" msgid "Do you want to duplicate this template?" msgstr "このテンプレートを複製しますか?" +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "Documenso License" +msgstr "" + #: apps/remix/app/components/dialogs/account-delete-dialog.tsx msgid "Documenso will delete <0>all of your documents0>, along with all of your completed documents, signatures, and all other resources belonging to your Account." msgstr "Documenso は<0>すべての文書0>と、完了済み文書・署名・アカウントに紐づくその他すべてのリソースを削除します。" @@ -3629,6 +3646,7 @@ msgstr "文書はキャンセルされました" msgid "Document completed" msgstr "文書が完了しました" +#: packages/lib/utils/document-audit-logs.ts #: packages/lib/utils/document-audit-logs.ts #: packages/lib/utils/document-audit-logs.ts msgctxt "Audit log format" @@ -3769,11 +3787,6 @@ msgctxt "Audit log format" msgid "Document opened" msgstr "ドキュメントが開かれました" -#: packages/lib/utils/document-audit-logs.ts -msgctxt "Audit log format" -msgid "Document ownership delegated" -msgstr "文書の所有権が委譲されました" - #: apps/remix/app/components/general/document/document-status.tsx msgid "Document pending" msgstr "文書は保留中です" @@ -4270,8 +4283,9 @@ msgid "Email preferences updated" msgstr "メール設定を更新しました" #: packages/lib/utils/document-audit-logs.ts +msgctxt "Audit log format" msgid "Email resent" -msgstr "メールを再送しました" +msgstr "" #: apps/remix/app/components/dialogs/envelope-distribute-dialog.tsx #: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx @@ -4281,8 +4295,9 @@ msgid "Email Sender" msgstr "メール送信者" #: packages/lib/utils/document-audit-logs.ts +msgctxt "Audit log format" msgid "Email sent" -msgstr "メールを送信しました" +msgstr "" #: apps/remix/app/routes/_unauthenticated+/check-email.tsx msgid "Email sent!" @@ -4526,12 +4541,14 @@ msgid "Envelope Item Count" msgstr "封筒アイテム数" #: packages/lib/utils/document-audit-logs.ts +msgctxt "Audit log format" msgid "Envelope item created" -msgstr "封筒アイテムを作成" +msgstr "" #: packages/lib/utils/document-audit-logs.ts +msgctxt "Audit log format" msgid "Envelope item deleted" -msgstr "封筒アイテムを削除" +msgstr "" #: apps/remix/app/components/dialogs/envelope-redistribute-dialog.tsx msgid "Envelope resent" @@ -4669,6 +4686,15 @@ msgstr "タイムアウトを超えました" msgid "Expired" msgstr "有効期限切れ" +#: apps/remix/app/components/general/admin-license-card.tsx +msgctxt "Subscription status" +msgid "Expired" +msgstr "" + +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "Expires" +msgstr "" + #. placeholder {0}: DateTime.fromMillis(Math.max(millisecondsRemaining, 0)).toFormat( 'mm:ss', ) #: apps/remix/app/components/general/document-signing/access-auth-2fa-form.tsx msgid "Expires in {0}" @@ -4742,6 +4768,10 @@ msgstr "設定の保存に失敗しました。" msgid "Failed to sign out all sessions" msgstr "すべてのセッションからのサインアウトに失敗しました" +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "Failed to sync license" +msgstr "" + #: apps/remix/app/routes/_authenticated+/settings+/security.linked-accounts.tsx msgid "Failed to unlink account" msgstr "アカウントのリンク解除に失敗しました" @@ -4780,6 +4810,10 @@ msgstr "失敗: {failedCount}" msgid "Feature Flags" msgstr "機能フラグ" +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "Features" +msgstr "" + #: packages/ui/primitives/document-flow/field-items-advanced-settings/text-field.tsx msgid "Field character limit" msgstr "フィールドの文字数制限" @@ -5335,7 +5369,9 @@ msgstr "継承されたサブスクリプションクレーム" #: apps/remix/app/components/general/document-signing/document-signing-initials-field.tsx #: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-drag-drop.tsx #: packages/lib/utils/fields.ts +#: packages/ui/primitives/document-flow/add-fields.tsx #: packages/ui/primitives/document-flow/types.ts +#: packages/ui/primitives/template-flow/add-template-fields.tsx msgid "Initials" msgstr "イニシャル" @@ -5363,11 +5399,20 @@ msgstr "コードが無効です。もう一度お試しください。" msgid "Invalid domains" msgstr "無効なドメイン" +#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx #: packages/lib/types/recipient.ts #: packages/ui/primitives/document-flow/add-signers.types.ts msgid "Invalid email" msgstr "無効なメールアドレスです" +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "Invalid License Key" +msgstr "" + +#: apps/remix/app/components/general/admin-license-status-banner.tsx +msgid "Invalid License Type - Your Documenso instance is using features that are not part of your license." +msgstr "" + #: apps/remix/app/routes/_unauthenticated+/team.verify.email.$token.tsx msgid "Invalid link" msgstr "リンクが無効です" @@ -5419,6 +5464,7 @@ msgid "Invite Members" msgstr "メンバーを招待" #: apps/remix/app/components/dialogs/organisation-member-invite-dialog.tsx +#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx msgid "Invite organisation members" msgstr "組織メンバーを招待" @@ -5426,6 +5472,10 @@ msgstr "組織メンバーを招待" msgid "Invite team members to collaborate" msgstr "チームメンバーを招待してコラボレーション" +#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx +msgid "Invite them to the organisation first" +msgstr "" + #: apps/remix/app/components/tables/organisation-member-invites-table.tsx msgid "Invited At" msgstr "招待日時" @@ -5570,6 +5620,12 @@ msgstr "退会" msgid "Last Year" msgstr "昨年" +#: apps/remix/app/components/forms/subscription-claim-form.tsx +#: apps/remix/app/components/general/admin-license-card.tsx +#: apps/remix/app/routes/_authenticated+/admin+/organisations.$id.tsx +msgid "Learn more" +msgstr "" + #: apps/remix/app/components/dialogs/organisation-leave-dialog.tsx #: apps/remix/app/components/tables/user-organisations-table.tsx msgid "Leave" @@ -5602,6 +5658,27 @@ msgstr "文字間隔" msgid "Letter Spacing" msgstr "文字間隔" +#: apps/remix/app/components/general/admin-license-card.tsx +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "License" +msgstr "" + +#: apps/remix/app/components/general/admin-license-status-banner.tsx +msgid "License Expired - Please renew your license to continue using enterprise features." +msgstr "" + +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "License Key" +msgstr "" + +#: apps/remix/app/components/general/admin-license-status-banner.tsx +msgid "License Payment Overdue - Please update your payment to avoid service disruptions." +msgstr "" + +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "License synced" +msgstr "" + #: apps/remix/app/components/general/app-command-menu.tsx msgid "Light Mode" msgstr "ライトモード" @@ -5627,8 +5704,9 @@ msgid "Link expires in 30 minutes." msgstr "リンクの有効期限は30分です。" #: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.public-profile.tsx +msgctxt "Action button to link template to public profile" msgid "Link template" -msgstr "テンプレートをリンク" +msgstr "" #: packages/email/templates/organisation-account-link-confirmation.tsx msgid "Link your Documenso account" @@ -5677,6 +5755,7 @@ msgstr "文書を読み込み中..." msgid "Loading suggestions..." msgstr "候補を読み込み中..." +#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx #: apps/remix/app/components/general/document/document-page-view-recent-activity.tsx msgid "Loading..." msgstr "読み込み中..." @@ -5954,6 +6033,10 @@ msgstr "中央" msgid "Min" msgstr "最小" +#: apps/remix/app/components/general/admin-license-status-banner.tsx +msgid "Missing License - Your Documenso instance is using features that require a license." +msgstr "" + #: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page.tsx msgid "Missing Recipients" msgstr "不足している受信者" @@ -6027,6 +6110,7 @@ msgid "My Folder" msgstr "マイフォルダ" #: apps/remix/app/components/tables/internal-audit-log-table.tsx +#: apps/remix/app/routes/_internal+/[__htmltopdf]+/certificate.tsx #: packages/lib/server-only/pdf/render-audit-logs.ts msgid "N/A" msgstr "N/A" @@ -6145,6 +6229,10 @@ msgstr "文書が見つかりません" msgid "No email detected" msgstr "メールアドレスが検出されませんでした" +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "No features enabled" +msgstr "" + #: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx msgid "No fields were detected in your document." msgstr "ドキュメント内でフィールドが検出されませんでした。" @@ -6165,6 +6253,18 @@ msgstr "「{searchTerm}」に一致するフォルダが見つかりません" msgid "No further action is required from you at this time." msgstr "現在、お客様が行う必要のある操作はありません。" +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "No License Configured" +msgstr "" + +#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx +msgid "No members selected" +msgstr "" + +#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx +msgid "No organisation members available" +msgstr "" + #: apps/remix/app/routes/_authenticated+/dashboard.tsx msgid "No organisations found" msgstr "組織が見つかりません" @@ -6665,6 +6765,7 @@ msgstr "パスワードを更新しました" msgid "Password updated!" msgstr "パスワードを更新しました。" +#: apps/remix/app/components/general/admin-license-card.tsx #: apps/remix/app/components/tables/user-billing-organisations-table.tsx msgctxt "Subscription status" msgid "Past Due" @@ -6935,6 +7036,10 @@ msgstr "署名前に文書の内容を確認してください。" msgid "Please select a PDF file" msgstr "PDF ファイルを選択してください" +#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx +msgid "Please select at least one member to add to the team." +msgstr "" + #: apps/remix/app/components/general/document-signing/access-auth-2fa-form.tsx msgid "Please select how you'd like to receive your verification code." msgstr "認証コードの受け取り方法を選択してください。" @@ -7091,7 +7196,9 @@ msgstr "クイックアクション" #: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx #: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-drag-drop.tsx #: packages/lib/utils/fields.ts +#: packages/ui/primitives/document-flow/add-fields.tsx #: packages/ui/primitives/document-flow/types.ts +#: packages/ui/primitives/template-flow/add-template-fields.tsx msgid "Radio" msgstr "ラジオボタン" @@ -7176,11 +7283,6 @@ msgstr "最近の文書" #: apps/remix/app/components/general/template/template-page-view-documents-table.tsx #: apps/remix/app/components/tables/documents-table.tsx #: apps/remix/app/components/tables/inbox-table.tsx -#: packages/lib/utils/document-audit-logs.ts -#: packages/lib/utils/document-audit-logs.ts -#: packages/lib/utils/document-audit-logs.ts -#: packages/lib/utils/document-audit-logs.ts -#: packages/lib/utils/document-audit-logs.ts msgid "Recipient" msgstr "受信者" @@ -7201,14 +7303,42 @@ msgstr "受信者 {0}" msgid "Recipient action authentication" msgstr "受信者アクション認証" +#: packages/lib/utils/document-audit-logs.ts +msgid "Recipient approved the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "Recipient CC'd the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "Recipient completed their task" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "Recipient failed to validate a 2FA token for the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "Recipient rejected the document" +msgstr "" + #: packages/ui/components/document/document-email-checkboxes.tsx msgid "Recipient removed email" msgstr "受信者削除メール" +#: packages/lib/utils/document-audit-logs.ts +msgid "Recipient requested a 2FA token for the document" +msgstr "" + #: packages/ui/components/document/document-email-checkboxes.tsx msgid "Recipient signed email" msgstr "受信者署名メール" +#: packages/lib/utils/document-audit-logs.ts +msgid "Recipient signed the document" +msgstr "" + #: packages/ui/components/document/document-email-checkboxes.tsx msgid "Recipient signing request email" msgstr "受信者署名依頼メール" @@ -7217,10 +7347,20 @@ msgstr "受信者署名依頼メール" msgid "Recipient updated" msgstr "受信者を更新しました" +#: packages/lib/utils/document-audit-logs.ts +msgid "Recipient validated a 2FA token for the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "Recipient viewed the document" +msgstr "" + #: apps/remix/app/components/embed/authoring/configure-document-recipients.tsx #: apps/remix/app/components/general/document/document-page-view-recipients.tsx +#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx #: apps/remix/app/components/general/template/template-page-view-recipients.tsx #: apps/remix/app/routes/_authenticated+/admin+/documents.$id.tsx +#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/documents.$id.logs.tsx #: apps/remix/app/routes/_internal+/[__htmltopdf]+/audit-log.tsx #: packages/lib/server-only/pdf/render-audit-logs.ts msgid "Recipients" @@ -7725,6 +7865,10 @@ msgstr "セキュリティ" msgid "Security activity" msgstr "セキュリティアクティビティ" +#: apps/remix/app/components/general/admin-license-status-banner.tsx +msgid "See Documentation" +msgstr "" + #: apps/remix/app/routes/_authenticated+/admin+/documents.$id.tsx msgid "See the background jobs tab for the status" msgstr "ステータスはバックグラウンドジョブのタブで確認できます" @@ -7853,15 +7997,18 @@ msgstr "オプションを選択" msgid "Select Options" msgstr "オプションを選択" +#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx +msgid "Select or add recipients" +msgstr "" + +#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx +msgid "Select or enter email address" +msgstr "" + #: apps/remix/app/components/general/document-signing/document-signing-auth-passkey.tsx msgid "Select passkey" msgstr "パスキーを選択" -#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx -#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx -msgid "Select recipients" -msgstr "受信者を選択" - #: apps/remix/app/components/tables/documents-table.tsx #: apps/remix/app/components/tables/templates-table.tsx msgid "Select row" @@ -8217,6 +8364,7 @@ msgstr "OIDC でサインアップ" #: packages/lib/utils/fields.ts #: packages/ui/primitives/document-flow/add-fields.tsx #: packages/ui/primitives/document-flow/types.ts +#: packages/ui/primitives/field-selector.tsx #: packages/ui/primitives/template-flow/add-template-fields.tsx msgid "Signature" msgstr "署名" @@ -8681,10 +8829,12 @@ msgstr "メールドメインを同期" msgid "Sync failed, changes not saved" msgstr "同期に失敗し、変更は保存されませんでした" -#: packages/lib/utils/document-audit-logs.ts -msgid "System auto inserted fields" -msgstr "システムが自動でフィールドを挿入しました" +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "Sync license from server" +msgstr "" +#: packages/lib/utils/document-audit-logs.ts +#: packages/lib/utils/document-audit-logs.ts #: packages/lib/utils/document-audit-logs.ts msgctxt "Audit log format" msgid "System auto inserted fields" @@ -9075,8 +9225,9 @@ msgstr "お客様の決定について、ドキュメントの所有者に通知 #. placeholder {0}: data.delegatedOwnerName || data.delegatedOwnerEmail #. placeholder {1}: data.teamName #: packages/lib/utils/document-audit-logs.ts +msgctxt "Audit log format" msgid "The document ownership was delegated to {0} on behalf of {1}" -msgstr "文書の所有権は、{1} を代表して {0} に委譲されました" +msgstr "" #: apps/remix/app/components/dialogs/template-use-dialog.tsx msgid "The document was created but could not be sent to recipients." @@ -9696,6 +9847,10 @@ msgstr "この{1}を{0}するには、ログインしている必要がありま msgid "To accept this invitation you must create an account." msgstr "この招待を受け入れるにはアカウントを作成する必要があります。" +#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx +msgid "To add members to this team, you must first add them to the organisation." +msgstr "" + #: apps/remix/app/components/dialogs/team-member-create-dialog.tsx msgid "To be able to add members to a team, you must first add them to the organisation. For more information, please see the <0>documentation0>." msgstr "チームにメンバーを追加するには、まず組織にメンバーを追加する必要があります。詳しくは<0>ドキュメント0>をご覧ください。" @@ -9886,6 +10041,10 @@ msgstr "入力" msgid "Type a command or search..." msgstr "コマンドを入力するか検索..." +#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx +msgid "Type an email address to add a recipient" +msgstr "" + #: packages/ui/primitives/signature-pad/signature-pad-type.tsx msgid "Type your signature" msgstr "署名を入力してください" @@ -10372,10 +10531,6 @@ msgstr "バリデーションに失敗しました" msgid "Value" msgstr "値" -#: packages/lib/types/field-meta.ts -msgid "Value must be a number" -msgstr "数値で入力する必要があります" - #: packages/email/template-components/template-access-auth-2fa.tsx msgid "Verification Code Required" msgstr "認証コードが必要です" @@ -11115,6 +11270,18 @@ msgstr "はい" msgid "You" msgstr "あなた" +#: packages/lib/utils/document-audit-logs.ts +msgid "You added a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You added a recipient" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You approved the document" +msgstr "" + #: apps/remix/app/components/general/document-signing/document-signing-complete-dialog.tsx msgid "You are about to complete approving the following document" msgstr "次の文書の承認を完了しようとしています" @@ -11179,11 +11346,16 @@ msgid "You are about to remove the following email from <0>{0}0>." msgstr "次のメールアドレスを <0>{0}0> から削除しようとしています。" #. placeholder {0}: organisation.name -#. placeholder {0}: team.name #: apps/remix/app/components/dialogs/organisation-group-delete-dialog.tsx -#: apps/remix/app/components/dialogs/team-group-delete-dialog.tsx +msgctxt "Removing group from organisation" msgid "You are about to remove the following group from <0>{0}0>." -msgstr "次のグループを <0>{0}0> から削除しようとしています。" +msgstr "" + +#. placeholder {0}: team.name +#: apps/remix/app/components/dialogs/team-group-delete-dialog.tsx +msgctxt "Removing group from team" +msgid "You are about to remove the following group from <0>{0}0>." +msgstr "" #. placeholder {0}: organisation.name #: apps/remix/app/components/dialogs/organisation-member-delete-dialog.tsx @@ -11361,6 +11533,23 @@ msgstr "現在、ドキュメントをアップロードすることはできま msgid "You cannot upload encrypted PDFs." msgstr "暗号化された PDF はアップロードできません。" +#: packages/lib/utils/document-audit-logs.ts +msgid "You CC'd the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You completed your task" +msgstr "" + +#. placeholder {0}: data.envelopeItemTitle +#: packages/lib/utils/document-audit-logs.ts +msgid "You created an envelope item with title {0}" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You created the document" +msgstr "" + #: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.billing.tsx msgid "You currently have an inactive <0>{currentProductName}0> subscription" msgstr "現在、<0>{currentProductName}0> のサブスクリプションは非アクティブ状態です" @@ -11369,6 +11558,15 @@ msgstr "現在、<0>{currentProductName}0> のサブスクリプションは msgid "You currently have no access to any teams within this organisation. Please contact your organisation to request access." msgstr "現在、この組織内のいずれのチームにもアクセスできません。組織に連絡してアクセスをリクエストしてください。" +#. placeholder {0}: data.envelopeItemTitle +#: packages/lib/utils/document-audit-logs.ts +msgid "You deleted an envelope item with title {0}" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You deleted the document" +msgstr "" + #: apps/remix/app/components/forms/token.tsx msgid "You do not have permission to create a token for this team." msgstr "このチームのトークンを作成する権限がありません。" @@ -11381,6 +11579,10 @@ msgstr "請求を管理している組織はありません。" msgid "You don't need to sign it anymore." msgstr "今後、このドキュメントに署名する必要はありません。" +#: packages/lib/utils/document-audit-logs.ts +msgid "You failed to validate a 2FA token for the document" +msgstr "" + #. placeholder {0}: data.organisationName #: apps/remix/app/routes/_unauthenticated+/organisation.invite.$token.tsx msgid "You have accepted an invitation from <0>{0}0> to join their organisation." @@ -11543,6 +11745,10 @@ msgstr "チームグループを更新しました。" msgid "You have verified your email address for <0>{0}0>." msgstr "<0>{0}0> のメールアドレスを確認しました。" +#: packages/lib/utils/document-audit-logs.ts +msgid "You moved the document to team" +msgstr "" + #: apps/remix/app/components/dialogs/organisation-delete-dialog.tsx #: apps/remix/app/components/dialogs/team-delete-dialog.tsx #: apps/remix/app/components/dialogs/token-delete-dialog.tsx @@ -11584,6 +11790,97 @@ msgstr "このページを表示するにはログインが必要です。" msgid "You need to setup 2FA to mark this document as viewed." msgstr "この文書を閲覧済みにするには、2FA を設定する必要があります。" +#: packages/lib/utils/document-audit-logs.ts +msgid "You opened the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You prefilled a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You rejected the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You removed a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You removed a recipient" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You requested a 2FA token for the document" +msgstr "" + +#. placeholder {0}: data.recipientEmail +#: packages/lib/utils/document-audit-logs.ts +msgid "You resent an email to {0}" +msgstr "" + +#. placeholder {0}: data.recipientEmail +#: packages/lib/utils/document-audit-logs.ts +msgid "You sent an email to {0}" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You sent the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You signed a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You signed the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You unsigned a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You updated a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You updated a recipient" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You updated the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You updated the document access auth requirements" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You updated the document external ID" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You updated the document signing auth requirements" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You updated the document title" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You updated the document visibility" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You validated a 2FA token for the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +#: packages/lib/utils/document-audit-logs.ts +msgid "You viewed the document" +msgstr "" + #: apps/remix/app/components/dialogs/admin-organisation-create-dialog.tsx msgid "You will need to configure any claims or subscription after creating this organisation" msgstr "この組織を作成した後に、クレームやサブスクリプションを構成する必要があります。" @@ -11642,6 +11939,11 @@ msgstr "テンプレート「{templateName}」の一括送信が完了しまし msgid "Your current {currentProductName} plan is past due. Please update your payment information." msgstr "現在の {currentProductName} プランは支払いが滞っています。お支払い情報を更新してください。" +#: apps/remix/app/components/forms/subscription-claim-form.tsx +#: apps/remix/app/routes/_authenticated+/admin+/organisations.$id.tsx +msgid "Your current license does not include these features." +msgstr "" + #: apps/remix/app/routes/_authenticated+/o.$orgUrl.support.tsx msgid "Your current plan includes the following support channels:" msgstr "現在のプランには、次のサポートチャネルが含まれています:" diff --git a/packages/lib/translations/ko/web.po b/packages/lib/translations/ko/web.po index b2168b9f1..6081debde 100644 --- a/packages/lib/translations/ko/web.po +++ b/packages/lib/translations/ko/web.po @@ -22,6 +22,11 @@ msgstr "" msgid ".PDF documents accepted (max {APP_DOCUMENT_UPLOAD_SIZE_LIMIT}MB)" msgstr ".PDF 문서만 허용됩니다(최대 {APP_DOCUMENT_UPLOAD_SIZE_LIMIT}MB)." +#. placeholder {0}: invalidEmails[0].value +#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx +msgid "\"{0}\" is not a valid email address." +msgstr "" + #. placeholder {0}: field.customText #. placeholder {1}: timezone || '' #: apps/remix/app/components/general/document-signing/document-signing-date-field.tsx @@ -101,6 +106,17 @@ msgstr "{0, plural, other {#개의 필드}}" msgid "{0, plural, one {# folder} other {# folders}}" msgstr "{0, plural, other {폴더 #개}}" +#. placeholder {0}: result.deletedCount +#. placeholder {1}: result.failedIds.length +#: apps/remix/app/components/dialogs/envelopes-bulk-delete-dialog.tsx +msgid "{0, plural, one {# item deleted.} other {# items deleted.}} {1, plural, one {# item could not be deleted.} other {# items could not be deleted.}}" +msgstr "" + +#. placeholder {0}: result.deletedCount +#: apps/remix/app/components/dialogs/envelopes-bulk-delete-dialog.tsx +msgid "{0, plural, one {# item has been deleted.} other {# items have been deleted.}}" +msgstr "" + #. placeholder {0}: detectedRecipients.length #: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx msgid "{0, plural, one {# recipient have been added from AI detection.} other {# recipients have been added from AI detection.}}" @@ -243,17 +259,6 @@ msgstr "{0}에서 \"{1}\" 문서에 대해 귀하께 {recipientActionVerb}하도 msgid "{0} invited you to {recipientActionVerb} a document" msgstr "{0}이(가) 귀하께 문서에 {recipientActionVerb}하도록 초대했습니다." -#. placeholder {0}: result.deletedCount -#. placeholder {1}: result.failedIds.length -#: apps/remix/app/components/dialogs/envelopes-bulk-delete-dialog.tsx -msgid "{0} item(s) deleted. {1} item(s) could not be deleted." -msgstr "" - -#. placeholder {0}: result.deletedCount -#: apps/remix/app/components/dialogs/envelopes-bulk-delete-dialog.tsx -msgid "{0} item(s) have been deleted." -msgstr "" - #. placeholder {0}: remaining.documents #. placeholder {1}: quota.documents #: apps/remix/app/components/general/document/document-upload-button-legacy.tsx @@ -346,110 +351,6 @@ msgstr "{MAXIMUM_PASSKEYS, plural, other {패스키는 #개를 초과하여 가 msgid "{maximumEnvelopeItemCount, plural, one {You cannot upload more than # item per envelope.} other {You cannot upload more than # items per envelope.}}" msgstr "{maximumEnvelopeItemCount, plural, other {하나의 봉투에는 최대 #개의 항목만 업로드할 수 있습니다.}}" -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} added a field" -msgstr "{prefix}님이 필드를 추가했습니다." - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} added a recipient" -msgstr "{prefix}님이 수신자를 추가했습니다." - -#. placeholder {0}: data.envelopeItemTitle -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} created an envelope item with title {0}" -msgstr "{prefix}님이 제목이 {0}인 봉투 항목을 생성했습니다" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} created the document" -msgstr "{prefix}님이 문서를 생성했습니다." - -#. placeholder {0}: data.envelopeItemTitle -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} deleted an envelope item with title {0}" -msgstr "{prefix}님이 제목이 {0}인 봉투 항목을 삭제했습니다" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} deleted the document" -msgstr "{prefix}님이 문서를 삭제했습니다." - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} moved the document to team" -msgstr "{prefix}님이 문서를 팀으로 이동했습니다." - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} opened the document" -msgstr "{prefix}님이 문서를 열었습니다." - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} prefilled a field" -msgstr "{prefix}님이 필드를 미리 채웠습니다." - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} removed a field" -msgstr "{prefix}님이 필드를 제거했습니다." - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} removed a recipient" -msgstr "{prefix}님이 수신자를 제거했습니다." - -#. placeholder {0}: data.recipientEmail -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} resent an email to {0}" -msgstr "{prefix}님이 {0}(으)로 이메일을 다시 보냈습니다." - -#. placeholder {0}: data.recipientEmail -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} sent an email to {0}" -msgstr "{prefix}님이 {0}(으)로 이메일을 보냈습니다." - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} sent the document" -msgstr "{prefix}님이 문서를 발송했습니다." - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} signed a field" -msgstr "{prefix}님이 필드에 서명했습니다." - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} unsigned a field" -msgstr "{prefix}님이 필드 서명을 취소했습니다." - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} updated a field" -msgstr "{prefix}님이 필드를 업데이트했습니다." - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} updated a recipient" -msgstr "{prefix}님이 수신자를 업데이트했습니다." - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} updated the document" -msgstr "{prefix}님이 문서를 업데이트했습니다." - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} updated the document access auth requirements" -msgstr "{prefix}님이 문서 접근 인증 요구 사항을 업데이트했습니다." - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} updated the document external ID" -msgstr "{prefix}님이 문서 외부 ID를 업데이트했습니다." - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} updated the document signing auth requirements" -msgstr "{prefix}님이 문서 서명 인증 요구 사항을 업데이트했습니다." - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} updated the document title" -msgstr "{prefix}님이 문서 제목을 업데이트했습니다." - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} updated the document visibility" -msgstr "{prefix}님이 문서 공개 범위를 업데이트했습니다." - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} viewed the document" -msgstr "{prefix}님이 문서를 열람했습니다." - #: apps/remix/app/components/general/direct-template/direct-template-page.tsx msgid "{recipientActionVerb} document" msgstr "{recipientActionVerb} 문서" @@ -510,47 +411,148 @@ msgstr "{teamName}이(가) 문서 \"{documentName}\"에 대해 귀하께 {0}하 msgid "{teamName} has invited you to {action} {documentName}" msgstr "{teamName}이(가) 귀하께 {action} {documentName} 문서를 요청했습니다." +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} added a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} added a recipient" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} approved the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} CC'd the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} completed their task" +msgstr "" + +#. placeholder {0}: data.envelopeItemTitle +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} created an envelope item with title {0}" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} created the document" +msgstr "" + +#. placeholder {0}: data.envelopeItemTitle +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} deleted an envelope item with title {0}" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} deleted the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} failed to validate a 2FA token for the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} moved the document to team" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} opened the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} prefilled a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} rejected the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} removed a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} removed a recipient" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} requested a 2FA token for the document" +msgstr "" + +#. placeholder {0}: data.recipientEmail +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} resent an email to {0}" +msgstr "" + +#. placeholder {0}: data.recipientEmail +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} sent an email to {0}" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} sent the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} signed a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} signed the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} unsigned a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} updated a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} updated a recipient" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} updated the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} updated the document access auth requirements" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} updated the document external ID" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} updated the document signing auth requirements" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} updated the document title" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} updated the document visibility" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} validated a 2FA token for the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} viewed the document" +msgstr "" + #: apps/remix/app/components/tables/internal-audit-log-table.tsx #: packages/lib/server-only/pdf/render-audit-logs.ts msgid "{userAgent}" msgstr "{userAgent}" -#: packages/lib/utils/document-audit-logs.ts -msgid "{userName} approved the document" -msgstr "{userName}님이 문서를 승인했습니다." - -#: packages/lib/utils/document-audit-logs.ts -msgid "{userName} CC'd the document" -msgstr "{userName}님이 문서를 참조(CC)했습니다." - -#: packages/lib/utils/document-audit-logs.ts -msgid "{userName} completed their task" -msgstr "{userName}님이 담당 작업을 완료했습니다." - -#: packages/lib/utils/document-audit-logs.ts -msgid "{userName} failed to validate a 2FA token for the document" -msgstr "{userName}님이 문서에 대한 2단계 인증 토큰 검증에 실패했습니다." - -#: packages/lib/utils/document-audit-logs.ts -msgid "{userName} rejected the document" -msgstr "{userName}님이 문서를 거부했습니다." - -#: packages/lib/utils/document-audit-logs.ts -msgid "{userName} requested a 2FA token for the document" -msgstr "{userName}님이 문서에 대한 2단계 인증 토큰을 요청했습니다." - -#: packages/lib/utils/document-audit-logs.ts -msgid "{userName} signed the document" -msgstr "{userName}님이 문서에 서명했습니다." - -#: packages/lib/utils/document-audit-logs.ts -msgid "{userName} validated a 2FA token for the document" -msgstr "{userName}님이 문서에 대한 2단계 인증 토큰을 검증했습니다." - -#: packages/lib/utils/document-audit-logs.ts -msgid "{userName} viewed the document" -msgstr "{userName}님이 문서를 열람했습니다." - #: apps/remix/app/components/dialogs/sign-field-checkbox-dialog.tsx msgid "{validationLength, plural, one {Select at least # option} other {Select at least # options}}" msgstr "{validationLength, plural, other {최소 #개의 옵션을 선택하세요}}" @@ -1084,6 +1086,7 @@ msgstr "동작" msgid "Active" msgstr "활성" +#: apps/remix/app/components/general/admin-license-card.tsx #: apps/remix/app/components/tables/user-billing-organisations-table.tsx msgctxt "Subscription status" msgid "Active" @@ -1258,6 +1261,10 @@ msgstr "수신자 추가" msgid "Add Recipients" msgstr "수신자 추가" +#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx +msgid "Add recipients to your document" +msgstr "" + #: apps/remix/app/components/embed/authoring/configure-document-recipients.tsx #: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx #: packages/ui/primitives/document-flow/add-signers.tsx @@ -2197,6 +2204,10 @@ msgstr "전자 서명 기능을 사용함으로써 귀하는 거래를 전자적 msgid "Can prepare" msgstr "준비 가능" +#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx +msgid "Can't find someone?" +msgstr "" + #: apps/remix/app/components/dialogs/admin-organisation-create-dialog.tsx #: apps/remix/app/components/dialogs/admin-organisation-member-update-dialog.tsx #: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx @@ -2359,7 +2370,9 @@ msgstr "차트" #: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx #: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-drag-drop.tsx #: packages/lib/utils/fields.ts +#: packages/ui/primitives/document-flow/add-fields.tsx #: packages/ui/primitives/document-flow/types.ts +#: packages/ui/primitives/template-flow/add-template-fields.tsx msgid "Checkbox" msgstr "체크박스" @@ -2516,7 +2529,6 @@ msgstr "모든 요금제와 기능을 자세히 비교합니다." #: apps/remix/app/components/embed/embed-document-signing-page-v1.tsx #: apps/remix/app/components/embed/embed-document-signing-page-v1.tsx #: apps/remix/app/components/embed/multisign/multi-sign-document-signing-view.tsx -#: apps/remix/app/components/forms/signup.tsx #: apps/remix/app/components/general/document-signing/document-signing-complete-dialog.tsx #: apps/remix/app/components/general/document-signing/document-signing-complete-dialog.tsx msgid "Complete" @@ -2864,6 +2876,7 @@ msgstr "지원 티켓 생성" msgid "Create a team to collaborate with your team members." msgstr "팀원과 협업할 수 있는 팀을 생성하세요." +#: apps/remix/app/components/forms/signup.tsx #: apps/remix/app/routes/_unauthenticated+/organisation.invite.$token.tsx #: packages/email/template-components/template-document-self-signed.tsx msgid "Create account" @@ -3562,6 +3575,10 @@ msgstr "이 템플릿을 삭제하시겠습니까?" msgid "Do you want to duplicate this template?" msgstr "이 템플릿을 복제하시겠습니까?" +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "Documenso License" +msgstr "" + #: apps/remix/app/components/dialogs/account-delete-dialog.tsx msgid "Documenso will delete <0>all of your documents0>, along with all of your completed documents, signatures, and all other resources belonging to your Account." msgstr "Documenso는 <0>모든 문서0>와 완료된 문서, 서명, 계정에 속한 모든 리소스를 삭제합니다." @@ -3629,6 +3646,7 @@ msgstr "문서가 취소됨" msgid "Document completed" msgstr "문서 완료됨" +#: packages/lib/utils/document-audit-logs.ts #: packages/lib/utils/document-audit-logs.ts #: packages/lib/utils/document-audit-logs.ts msgctxt "Audit log format" @@ -3769,11 +3787,6 @@ msgctxt "Audit log format" msgid "Document opened" msgstr "문서가 열렸습니다." -#: packages/lib/utils/document-audit-logs.ts -msgctxt "Audit log format" -msgid "Document ownership delegated" -msgstr "문서 소유권이 위임됨" - #: apps/remix/app/components/general/document/document-status.tsx msgid "Document pending" msgstr "문서 보류 중" @@ -4270,8 +4283,9 @@ msgid "Email preferences updated" msgstr "이메일 기본 설정이 업데이트되었습니다." #: packages/lib/utils/document-audit-logs.ts +msgctxt "Audit log format" msgid "Email resent" -msgstr "이메일 다시 전송" +msgstr "" #: apps/remix/app/components/dialogs/envelope-distribute-dialog.tsx #: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx @@ -4281,8 +4295,9 @@ msgid "Email Sender" msgstr "이메일 발신자" #: packages/lib/utils/document-audit-logs.ts +msgctxt "Audit log format" msgid "Email sent" -msgstr "이메일 전송됨" +msgstr "" #: apps/remix/app/routes/_unauthenticated+/check-email.tsx msgid "Email sent!" @@ -4526,12 +4541,14 @@ msgid "Envelope Item Count" msgstr "봉투 항목 수" #: packages/lib/utils/document-audit-logs.ts +msgctxt "Audit log format" msgid "Envelope item created" -msgstr "봉투 항목 생성됨" +msgstr "" #: packages/lib/utils/document-audit-logs.ts +msgctxt "Audit log format" msgid "Envelope item deleted" -msgstr "봉투 항목 삭제됨" +msgstr "" #: apps/remix/app/components/dialogs/envelope-redistribute-dialog.tsx msgid "Envelope resent" @@ -4669,6 +4686,15 @@ msgstr "시간 초과됨" msgid "Expired" msgstr "만료됨" +#: apps/remix/app/components/general/admin-license-card.tsx +msgctxt "Subscription status" +msgid "Expired" +msgstr "" + +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "Expires" +msgstr "" + #. placeholder {0}: DateTime.fromMillis(Math.max(millisecondsRemaining, 0)).toFormat( 'mm:ss', ) #: apps/remix/app/components/general/document-signing/access-auth-2fa-form.tsx msgid "Expires in {0}" @@ -4742,6 +4768,10 @@ msgstr "설정을 저장하지 못했습니다." msgid "Failed to sign out all sessions" msgstr "모든 세션에서 로그아웃하지 못했습니다." +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "Failed to sync license" +msgstr "" + #: apps/remix/app/routes/_authenticated+/settings+/security.linked-accounts.tsx msgid "Failed to unlink account" msgstr "계정 연결을 해제하지 못했습니다" @@ -4780,6 +4810,10 @@ msgstr "실패: {failedCount}" msgid "Feature Flags" msgstr "기능 플래그" +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "Features" +msgstr "" + #: packages/ui/primitives/document-flow/field-items-advanced-settings/text-field.tsx msgid "Field character limit" msgstr "필드 문자 수 제한" @@ -5335,7 +5369,9 @@ msgstr "상속된 구독 클레임" #: apps/remix/app/components/general/document-signing/document-signing-initials-field.tsx #: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-drag-drop.tsx #: packages/lib/utils/fields.ts +#: packages/ui/primitives/document-flow/add-fields.tsx #: packages/ui/primitives/document-flow/types.ts +#: packages/ui/primitives/template-flow/add-template-fields.tsx msgid "Initials" msgstr "이니셜" @@ -5363,11 +5399,20 @@ msgstr "코드가 올바르지 않습니다. 다시 시도해 주세요." msgid "Invalid domains" msgstr "잘못된 도메인" +#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx #: packages/lib/types/recipient.ts #: packages/ui/primitives/document-flow/add-signers.types.ts msgid "Invalid email" msgstr "유효한 이메일이 아닙니다." +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "Invalid License Key" +msgstr "" + +#: apps/remix/app/components/general/admin-license-status-banner.tsx +msgid "Invalid License Type - Your Documenso instance is using features that are not part of your license." +msgstr "" + #: apps/remix/app/routes/_unauthenticated+/team.verify.email.$token.tsx msgid "Invalid link" msgstr "유효하지 않은 링크입니다" @@ -5419,6 +5464,7 @@ msgid "Invite Members" msgstr "구성원 초대" #: apps/remix/app/components/dialogs/organisation-member-invite-dialog.tsx +#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx msgid "Invite organisation members" msgstr "조직 구성원 초대" @@ -5426,6 +5472,10 @@ msgstr "조직 구성원 초대" msgid "Invite team members to collaborate" msgstr "팀 구성원을 초대하여 협업하세요." +#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx +msgid "Invite them to the organisation first" +msgstr "" + #: apps/remix/app/components/tables/organisation-member-invites-table.tsx msgid "Invited At" msgstr "초대 일시" @@ -5570,6 +5620,12 @@ msgstr "마지막 사용" msgid "Last Year" msgstr "지난해" +#: apps/remix/app/components/forms/subscription-claim-form.tsx +#: apps/remix/app/components/general/admin-license-card.tsx +#: apps/remix/app/routes/_authenticated+/admin+/organisations.$id.tsx +msgid "Learn more" +msgstr "" + #: apps/remix/app/components/dialogs/organisation-leave-dialog.tsx #: apps/remix/app/components/tables/user-organisations-table.tsx msgid "Leave" @@ -5602,6 +5658,27 @@ msgstr "자간" msgid "Letter Spacing" msgstr "자간" +#: apps/remix/app/components/general/admin-license-card.tsx +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "License" +msgstr "" + +#: apps/remix/app/components/general/admin-license-status-banner.tsx +msgid "License Expired - Please renew your license to continue using enterprise features." +msgstr "" + +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "License Key" +msgstr "" + +#: apps/remix/app/components/general/admin-license-status-banner.tsx +msgid "License Payment Overdue - Please update your payment to avoid service disruptions." +msgstr "" + +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "License synced" +msgstr "" + #: apps/remix/app/components/general/app-command-menu.tsx msgid "Light Mode" msgstr "라이트 모드" @@ -5627,8 +5704,9 @@ msgid "Link expires in 30 minutes." msgstr "링크는 30분 안에 만료됩니다." #: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.public-profile.tsx +msgctxt "Action button to link template to public profile" msgid "Link template" -msgstr "템플릿 연결" +msgstr "" #: packages/email/templates/organisation-account-link-confirmation.tsx msgid "Link your Documenso account" @@ -5677,6 +5755,7 @@ msgstr "문서 로딩 중..." msgid "Loading suggestions..." msgstr "제안 불러오는 중..." +#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx #: apps/remix/app/components/general/document/document-page-view-recent-activity.tsx msgid "Loading..." msgstr "로딩 중..." @@ -5954,6 +6033,10 @@ msgstr "가운데" msgid "Min" msgstr "최소" +#: apps/remix/app/components/general/admin-license-status-banner.tsx +msgid "Missing License - Your Documenso instance is using features that require a license." +msgstr "" + #: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page.tsx msgid "Missing Recipients" msgstr "수신자 누락" @@ -6027,6 +6110,7 @@ msgid "My Folder" msgstr "내 폴더" #: apps/remix/app/components/tables/internal-audit-log-table.tsx +#: apps/remix/app/routes/_internal+/[__htmltopdf]+/certificate.tsx #: packages/lib/server-only/pdf/render-audit-logs.ts msgid "N/A" msgstr "해당 없음" @@ -6145,6 +6229,10 @@ msgstr "문서를 찾을 수 없습니다" msgid "No email detected" msgstr "이메일이 감지되지 않았습니다." +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "No features enabled" +msgstr "" + #: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx msgid "No fields were detected in your document." msgstr "문서에서 감지된 필드가 없습니다." @@ -6165,6 +6253,18 @@ msgstr "\"{searchTerm}\"과(와) 일치하는 폴더가 없습니다." msgid "No further action is required from you at this time." msgstr "현재 추가로 수행해야 할 작업은 없습니다." +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "No License Configured" +msgstr "" + +#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx +msgid "No members selected" +msgstr "" + +#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx +msgid "No organisation members available" +msgstr "" + #: apps/remix/app/routes/_authenticated+/dashboard.tsx msgid "No organisations found" msgstr "조직을 찾을 수 없습니다." @@ -6665,6 +6765,7 @@ msgstr "비밀번호가 업데이트되었습니다" msgid "Password updated!" msgstr "비밀번호가 업데이트되었습니다!" +#: apps/remix/app/components/general/admin-license-card.tsx #: apps/remix/app/components/tables/user-billing-organisations-table.tsx msgctxt "Subscription status" msgid "Past Due" @@ -6935,6 +7036,10 @@ msgstr "서명 전에 문서를 검토해 주세요." msgid "Please select a PDF file" msgstr "PDF 파일을 선택해 주세요." +#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx +msgid "Please select at least one member to add to the team." +msgstr "" + #: apps/remix/app/components/general/document-signing/access-auth-2fa-form.tsx msgid "Please select how you'd like to receive your verification code." msgstr "인증 코드를 받을 방식을 선택하세요." @@ -7091,7 +7196,9 @@ msgstr "빠른 작업" #: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx #: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-drag-drop.tsx #: packages/lib/utils/fields.ts +#: packages/ui/primitives/document-flow/add-fields.tsx #: packages/ui/primitives/document-flow/types.ts +#: packages/ui/primitives/template-flow/add-template-fields.tsx msgid "Radio" msgstr "라디오" @@ -7176,11 +7283,6 @@ msgstr "최근 문서" #: apps/remix/app/components/general/template/template-page-view-documents-table.tsx #: apps/remix/app/components/tables/documents-table.tsx #: apps/remix/app/components/tables/inbox-table.tsx -#: packages/lib/utils/document-audit-logs.ts -#: packages/lib/utils/document-audit-logs.ts -#: packages/lib/utils/document-audit-logs.ts -#: packages/lib/utils/document-audit-logs.ts -#: packages/lib/utils/document-audit-logs.ts msgid "Recipient" msgstr "수신자" @@ -7201,14 +7303,42 @@ msgstr "수신자 {0}" msgid "Recipient action authentication" msgstr "수신자 액션 인증" +#: packages/lib/utils/document-audit-logs.ts +msgid "Recipient approved the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "Recipient CC'd the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "Recipient completed their task" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "Recipient failed to validate a 2FA token for the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "Recipient rejected the document" +msgstr "" + #: packages/ui/components/document/document-email-checkboxes.tsx msgid "Recipient removed email" msgstr "수신자 제거 이메일" +#: packages/lib/utils/document-audit-logs.ts +msgid "Recipient requested a 2FA token for the document" +msgstr "" + #: packages/ui/components/document/document-email-checkboxes.tsx msgid "Recipient signed email" msgstr "수신자 서명 완료 이메일" +#: packages/lib/utils/document-audit-logs.ts +msgid "Recipient signed the document" +msgstr "" + #: packages/ui/components/document/document-email-checkboxes.tsx msgid "Recipient signing request email" msgstr "수신자 서명 요청 이메일" @@ -7217,10 +7347,20 @@ msgstr "수신자 서명 요청 이메일" msgid "Recipient updated" msgstr "수신자가 업데이트되었습니다" +#: packages/lib/utils/document-audit-logs.ts +msgid "Recipient validated a 2FA token for the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "Recipient viewed the document" +msgstr "" + #: apps/remix/app/components/embed/authoring/configure-document-recipients.tsx #: apps/remix/app/components/general/document/document-page-view-recipients.tsx +#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx #: apps/remix/app/components/general/template/template-page-view-recipients.tsx #: apps/remix/app/routes/_authenticated+/admin+/documents.$id.tsx +#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/documents.$id.logs.tsx #: apps/remix/app/routes/_internal+/[__htmltopdf]+/audit-log.tsx #: packages/lib/server-only/pdf/render-audit-logs.ts msgid "Recipients" @@ -7725,6 +7865,10 @@ msgstr "보안" msgid "Security activity" msgstr "보안 활동" +#: apps/remix/app/components/general/admin-license-status-banner.tsx +msgid "See Documentation" +msgstr "" + #: apps/remix/app/routes/_authenticated+/admin+/documents.$id.tsx msgid "See the background jobs tab for the status" msgstr "상태는 백그라운드 작업 탭에서 확인하세요" @@ -7853,15 +7997,18 @@ msgstr "옵션 선택" msgid "Select Options" msgstr "옵션 선택" +#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx +msgid "Select or add recipients" +msgstr "" + +#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx +msgid "Select or enter email address" +msgstr "" + #: apps/remix/app/components/general/document-signing/document-signing-auth-passkey.tsx msgid "Select passkey" msgstr "패스키 선택" -#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx -#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx -msgid "Select recipients" -msgstr "수신인 선택" - #: apps/remix/app/components/tables/documents-table.tsx #: apps/remix/app/components/tables/templates-table.tsx msgid "Select row" @@ -8217,6 +8364,7 @@ msgstr "OIDC로 가입" #: packages/lib/utils/fields.ts #: packages/ui/primitives/document-flow/add-fields.tsx #: packages/ui/primitives/document-flow/types.ts +#: packages/ui/primitives/field-selector.tsx #: packages/ui/primitives/template-flow/add-template-fields.tsx msgid "Signature" msgstr "서명" @@ -8681,10 +8829,12 @@ msgstr "이메일 도메인 동기화" msgid "Sync failed, changes not saved" msgstr "동기화에 실패하여 변경 사항이 저장되지 않았습니다" -#: packages/lib/utils/document-audit-logs.ts -msgid "System auto inserted fields" -msgstr "시스템이 자동으로 필드를 삽입함" +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "Sync license from server" +msgstr "" +#: packages/lib/utils/document-audit-logs.ts +#: packages/lib/utils/document-audit-logs.ts #: packages/lib/utils/document-audit-logs.ts msgctxt "Audit log format" msgid "System auto inserted fields" @@ -9075,8 +9225,9 @@ msgstr "문서 소유자에게 귀하의 결정이 이미 전달되었습니다. #. placeholder {0}: data.delegatedOwnerName || data.delegatedOwnerEmail #. placeholder {1}: data.teamName #: packages/lib/utils/document-audit-logs.ts +msgctxt "Audit log format" msgid "The document ownership was delegated to {0} on behalf of {1}" -msgstr "문서 소유권이 {1}을(를) 대신해 {0}에게 위임되었습니다" +msgstr "" #: apps/remix/app/components/dialogs/template-use-dialog.tsx msgid "The document was created but could not be sent to recipients." @@ -9696,6 +9847,10 @@ msgstr "이 {1}을(를) {0}하려면 로그인해야 합니다." msgid "To accept this invitation you must create an account." msgstr "이 초대를 수락하려면 계정을 생성해야 합니다." +#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx +msgid "To add members to this team, you must first add them to the organisation." +msgstr "" + #: apps/remix/app/components/dialogs/team-member-create-dialog.tsx msgid "To be able to add members to a team, you must first add them to the organisation. For more information, please see the <0>documentation0>." msgstr "팀에 구성원을 추가하려면 먼저 조직에 구성원을 추가해야 합니다. 자세한 내용은 <0>문서0>를 참고하세요." @@ -9886,6 +10041,10 @@ msgstr "입력" msgid "Type a command or search..." msgstr "명령을 입력하거나 검색하세요..." +#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx +msgid "Type an email address to add a recipient" +msgstr "" + #: packages/ui/primitives/signature-pad/signature-pad-type.tsx msgid "Type your signature" msgstr "서명 내용을 입력하세요" @@ -10372,10 +10531,6 @@ msgstr "검증 실패" msgid "Value" msgstr "값" -#: packages/lib/types/field-meta.ts -msgid "Value must be a number" -msgstr "값은 숫자여야 합니다" - #: packages/email/template-components/template-access-auth-2fa.tsx msgid "Verification Code Required" msgstr "인증 코드 필요" @@ -11115,6 +11270,18 @@ msgstr "예" msgid "You" msgstr "나" +#: packages/lib/utils/document-audit-logs.ts +msgid "You added a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You added a recipient" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You approved the document" +msgstr "" + #: apps/remix/app/components/general/document-signing/document-signing-complete-dialog.tsx msgid "You are about to complete approving the following document" msgstr "다음 문서에 대한 승인을 완료하려고 합니다" @@ -11179,11 +11346,16 @@ msgid "You are about to remove the following email from <0>{0}0>." msgstr "곧 다음 이메일을 <0>{0}0>에서 제거하려고 합니다." #. placeholder {0}: organisation.name -#. placeholder {0}: team.name #: apps/remix/app/components/dialogs/organisation-group-delete-dialog.tsx -#: apps/remix/app/components/dialogs/team-group-delete-dialog.tsx +msgctxt "Removing group from organisation" msgid "You are about to remove the following group from <0>{0}0>." -msgstr "곧 다음 그룹을 <0>{0}0>에서 제거하려고 합니다." +msgstr "" + +#. placeholder {0}: team.name +#: apps/remix/app/components/dialogs/team-group-delete-dialog.tsx +msgctxt "Removing group from team" +msgid "You are about to remove the following group from <0>{0}0>." +msgstr "" #. placeholder {0}: organisation.name #: apps/remix/app/components/dialogs/organisation-member-delete-dialog.tsx @@ -11361,6 +11533,23 @@ msgstr "현재는 문서를 업로드할 수 없습니다." msgid "You cannot upload encrypted PDFs." msgstr "암호화된 PDF는 업로드할 수 없습니다." +#: packages/lib/utils/document-audit-logs.ts +msgid "You CC'd the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You completed your task" +msgstr "" + +#. placeholder {0}: data.envelopeItemTitle +#: packages/lib/utils/document-audit-logs.ts +msgid "You created an envelope item with title {0}" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You created the document" +msgstr "" + #: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.billing.tsx msgid "You currently have an inactive <0>{currentProductName}0> subscription" msgstr "현재 비활성 상태인 <0>{currentProductName}0> 구독이 있습니다." @@ -11369,6 +11558,15 @@ msgstr "현재 비활성 상태인 <0>{currentProductName}0> 구독이 있습 msgid "You currently have no access to any teams within this organisation. Please contact your organisation to request access." msgstr "현재 이 조직 내 어느 팀에도 접근 권한이 없습니다. 액세스를 요청하려면 조직 관리자에게 문의해 주세요." +#. placeholder {0}: data.envelopeItemTitle +#: packages/lib/utils/document-audit-logs.ts +msgid "You deleted an envelope item with title {0}" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You deleted the document" +msgstr "" + #: apps/remix/app/components/forms/token.tsx msgid "You do not have permission to create a token for this team." msgstr "이 팀에 대한 토큰을 생성할 권한이 없습니다." @@ -11381,6 +11579,10 @@ msgstr "결제를 관리하는 조직이 없습니다." msgid "You don't need to sign it anymore." msgstr "더 이상 이 문서에 서명할 필요가 없습니다." +#: packages/lib/utils/document-audit-logs.ts +msgid "You failed to validate a 2FA token for the document" +msgstr "" + #. placeholder {0}: data.organisationName #: apps/remix/app/routes/_unauthenticated+/organisation.invite.$token.tsx msgid "You have accepted an invitation from <0>{0}0> to join their organisation." @@ -11543,6 +11745,10 @@ msgstr "팀 그룹을 업데이트했습니다." msgid "You have verified your email address for <0>{0}0>." msgstr "<0>{0}0> 팀의 이메일 주소를 성공적으로 인증했습니다." +#: packages/lib/utils/document-audit-logs.ts +msgid "You moved the document to team" +msgstr "" + #: apps/remix/app/components/dialogs/organisation-delete-dialog.tsx #: apps/remix/app/components/dialogs/team-delete-dialog.tsx #: apps/remix/app/components/dialogs/token-delete-dialog.tsx @@ -11584,6 +11790,97 @@ msgstr "이 페이지를 보려면 로그인해야 합니다." msgid "You need to setup 2FA to mark this document as viewed." msgstr "이 문서를 열람 처리하려면 2단계 인증을 설정해야 합니다." +#: packages/lib/utils/document-audit-logs.ts +msgid "You opened the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You prefilled a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You rejected the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You removed a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You removed a recipient" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You requested a 2FA token for the document" +msgstr "" + +#. placeholder {0}: data.recipientEmail +#: packages/lib/utils/document-audit-logs.ts +msgid "You resent an email to {0}" +msgstr "" + +#. placeholder {0}: data.recipientEmail +#: packages/lib/utils/document-audit-logs.ts +msgid "You sent an email to {0}" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You sent the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You signed a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You signed the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You unsigned a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You updated a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You updated a recipient" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You updated the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You updated the document access auth requirements" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You updated the document external ID" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You updated the document signing auth requirements" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You updated the document title" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You updated the document visibility" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You validated a 2FA token for the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +#: packages/lib/utils/document-audit-logs.ts +msgid "You viewed the document" +msgstr "" + #: apps/remix/app/components/dialogs/admin-organisation-create-dialog.tsx msgid "You will need to configure any claims or subscription after creating this organisation" msgstr "이 조직을 생성한 후, 클레임 또는 구독을 별도로 구성해야 합니다." @@ -11642,6 +11939,11 @@ msgstr "템플릿 \"{templateName}\"에 대한 대량 발송 작업이 완료되 msgid "Your current {currentProductName} plan is past due. Please update your payment information." msgstr "현재 {currentProductName} 요금제 결제가 연체되었습니다. 결제 정보를 업데이트해 주세요." +#: apps/remix/app/components/forms/subscription-claim-form.tsx +#: apps/remix/app/routes/_authenticated+/admin+/organisations.$id.tsx +msgid "Your current license does not include these features." +msgstr "" + #: apps/remix/app/routes/_authenticated+/o.$orgUrl.support.tsx msgid "Your current plan includes the following support channels:" msgstr "현재 요금제에는 다음 지원 채널이 포함되어 있습니다:" diff --git a/packages/lib/translations/nl/web.po b/packages/lib/translations/nl/web.po index 46fc85cd4..e2aa8a961 100644 --- a/packages/lib/translations/nl/web.po +++ b/packages/lib/translations/nl/web.po @@ -22,6 +22,11 @@ msgstr "" msgid ".PDF documents accepted (max {APP_DOCUMENT_UPLOAD_SIZE_LIMIT}MB)" msgstr ".PDF-documenten toegestaan (max. {APP_DOCUMENT_UPLOAD_SIZE_LIMIT} MB)" +#. placeholder {0}: invalidEmails[0].value +#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx +msgid "\"{0}\" is not a valid email address." +msgstr "" + #. placeholder {0}: field.customText #. placeholder {1}: timezone || '' #: apps/remix/app/components/general/document-signing/document-signing-date-field.tsx @@ -101,6 +106,17 @@ msgstr "{0, plural, one {# veld} other {# velden}}" msgid "{0, plural, one {# folder} other {# folders}}" msgstr "{0, plural, one {# map} other {# mappen}}" +#. placeholder {0}: result.deletedCount +#. placeholder {1}: result.failedIds.length +#: apps/remix/app/components/dialogs/envelopes-bulk-delete-dialog.tsx +msgid "{0, plural, one {# item deleted.} other {# items deleted.}} {1, plural, one {# item could not be deleted.} other {# items could not be deleted.}}" +msgstr "" + +#. placeholder {0}: result.deletedCount +#: apps/remix/app/components/dialogs/envelopes-bulk-delete-dialog.tsx +msgid "{0, plural, one {# item has been deleted.} other {# items have been deleted.}}" +msgstr "" + #. placeholder {0}: detectedRecipients.length #: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx msgid "{0, plural, one {# recipient have been added from AI detection.} other {# recipients have been added from AI detection.}}" @@ -243,17 +259,6 @@ msgstr "{0} heeft je uitgenodigd om het document \"{1}\" te {recipientActionVerb msgid "{0} invited you to {recipientActionVerb} a document" msgstr "{0} heeft je uitgenodigd om een document te {recipientActionVerb}" -#. placeholder {0}: result.deletedCount -#. placeholder {1}: result.failedIds.length -#: apps/remix/app/components/dialogs/envelopes-bulk-delete-dialog.tsx -msgid "{0} item(s) deleted. {1} item(s) could not be deleted." -msgstr "" - -#. placeholder {0}: result.deletedCount -#: apps/remix/app/components/dialogs/envelopes-bulk-delete-dialog.tsx -msgid "{0} item(s) have been deleted." -msgstr "" - #. placeholder {0}: remaining.documents #. placeholder {1}: quota.documents #: apps/remix/app/components/general/document/document-upload-button-legacy.tsx @@ -346,110 +351,6 @@ msgstr "{MAXIMUM_PASSKEYS, plural, one {U kunt niet meer dan # passkey hebben.} msgid "{maximumEnvelopeItemCount, plural, one {You cannot upload more than # item per envelope.} other {You cannot upload more than # items per envelope.}}" msgstr "{maximumEnvelopeItemCount, plural, one {Je kunt niet meer dan # item per envelop uploaden.} other {Je kunt niet meer dan # items per envelop uploaden.}}" -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} added a field" -msgstr "{prefix} heeft een veld toegevoegd" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} added a recipient" -msgstr "{prefix} heeft een ontvanger toegevoegd" - -#. placeholder {0}: data.envelopeItemTitle -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} created an envelope item with title {0}" -msgstr "{prefix} heeft een envelop-item aangemaakt met de titel {0}" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} created the document" -msgstr "{prefix} heeft het document aangemaakt" - -#. placeholder {0}: data.envelopeItemTitle -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} deleted an envelope item with title {0}" -msgstr "{prefix} heeft een envelop-item verwijderd met de titel {0}" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} deleted the document" -msgstr "{prefix} heeft het document verwijderd" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} moved the document to team" -msgstr "{prefix} heeft het document naar een team verplaatst" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} opened the document" -msgstr "{prefix} heeft het document geopend" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} prefilled a field" -msgstr "{prefix} heeft een veld vooraf ingevuld" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} removed a field" -msgstr "{prefix} heeft een veld verwijderd" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} removed a recipient" -msgstr "{prefix} heeft een ontvanger verwijderd" - -#. placeholder {0}: data.recipientEmail -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} resent an email to {0}" -msgstr "{prefix} heeft een e-mail opnieuw verzonden naar {0}" - -#. placeholder {0}: data.recipientEmail -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} sent an email to {0}" -msgstr "{prefix} heeft een e-mail verzonden naar {0}" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} sent the document" -msgstr "{prefix} heeft het document verzonden" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} signed a field" -msgstr "{prefix} heeft een veld ondertekend" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} unsigned a field" -msgstr "{prefix} heeft een veld onttekend" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} updated a field" -msgstr "{prefix} heeft een veld bijgewerkt" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} updated a recipient" -msgstr "{prefix} heeft een ontvanger bijgewerkt" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} updated the document" -msgstr "{prefix} heeft het document bijgewerkt" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} updated the document access auth requirements" -msgstr "{prefix} heeft de toegangsautorisatievereisten voor het document bijgewerkt" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} updated the document external ID" -msgstr "{prefix} heeft de externe ID van het document bijgewerkt" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} updated the document signing auth requirements" -msgstr "{prefix} heeft de ondertekeningsautorisatievereisten van het document bijgewerkt" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} updated the document title" -msgstr "{prefix} heeft de documenttitel bijgewerkt" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} updated the document visibility" -msgstr "{prefix} heeft de documentzichtbaarheid bijgewerkt" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} viewed the document" -msgstr "{prefix} heeft het document bekeken" - #: apps/remix/app/components/general/direct-template/direct-template-page.tsx msgid "{recipientActionVerb} document" msgstr "{recipientActionVerb} document" @@ -510,47 +411,148 @@ msgstr "{teamName} heeft je uitgenodigd om {0}<0/>\"{documentName}\"" msgid "{teamName} has invited you to {action} {documentName}" msgstr "{teamName} heeft je uitgenodigd om {action} {documentName}" +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} added a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} added a recipient" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} approved the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} CC'd the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} completed their task" +msgstr "" + +#. placeholder {0}: data.envelopeItemTitle +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} created an envelope item with title {0}" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} created the document" +msgstr "" + +#. placeholder {0}: data.envelopeItemTitle +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} deleted an envelope item with title {0}" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} deleted the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} failed to validate a 2FA token for the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} moved the document to team" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} opened the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} prefilled a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} rejected the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} removed a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} removed a recipient" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} requested a 2FA token for the document" +msgstr "" + +#. placeholder {0}: data.recipientEmail +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} resent an email to {0}" +msgstr "" + +#. placeholder {0}: data.recipientEmail +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} sent an email to {0}" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} sent the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} signed a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} signed the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} unsigned a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} updated a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} updated a recipient" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} updated the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} updated the document access auth requirements" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} updated the document external ID" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} updated the document signing auth requirements" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} updated the document title" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} updated the document visibility" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} validated a 2FA token for the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} viewed the document" +msgstr "" + #: apps/remix/app/components/tables/internal-audit-log-table.tsx #: packages/lib/server-only/pdf/render-audit-logs.ts msgid "{userAgent}" msgstr "{userAgent}" -#: packages/lib/utils/document-audit-logs.ts -msgid "{userName} approved the document" -msgstr "{userName} heeft het document goedgekeurd" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{userName} CC'd the document" -msgstr "{userName} heeft het document in CC gezet" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{userName} completed their task" -msgstr "{userName} heeft zijn/haar taak voltooid" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{userName} failed to validate a 2FA token for the document" -msgstr "{userName} kon geen 2FA-token voor het document valideren" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{userName} rejected the document" -msgstr "{userName} heeft het document geweigerd" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{userName} requested a 2FA token for the document" -msgstr "{userName} heeft een 2FA-token voor het document aangevraagd" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{userName} signed the document" -msgstr "{userName} heeft het document ondertekend" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{userName} validated a 2FA token for the document" -msgstr "{userName} heeft een 2FA-token voor het document gevalideerd" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{userName} viewed the document" -msgstr "{userName} heeft het document bekeken" - #: apps/remix/app/components/dialogs/sign-field-checkbox-dialog.tsx msgid "{validationLength, plural, one {Select at least # option} other {Select at least # options}}" msgstr "{validationLength, plural, one {Selecteer minimaal # optie} other {Selecteer minimaal # opties}}" @@ -1084,6 +1086,7 @@ msgstr "Acties" msgid "Active" msgstr "Actief" +#: apps/remix/app/components/general/admin-license-card.tsx #: apps/remix/app/components/tables/user-billing-organisations-table.tsx msgctxt "Subscription status" msgid "Active" @@ -1258,6 +1261,10 @@ msgstr "Ontvangers toevoegen" msgid "Add Recipients" msgstr "Ontvangers toevoegen" +#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx +msgid "Add recipients to your document" +msgstr "" + #: apps/remix/app/components/embed/authoring/configure-document-recipients.tsx #: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx #: packages/ui/primitives/document-flow/add-signers.tsx @@ -2197,6 +2204,10 @@ msgstr "Door de functie voor elektronische handtekeningen te gebruiken, stem je msgid "Can prepare" msgstr "Kan voorbereiden" +#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx +msgid "Can't find someone?" +msgstr "" + #: apps/remix/app/components/dialogs/admin-organisation-create-dialog.tsx #: apps/remix/app/components/dialogs/admin-organisation-member-update-dialog.tsx #: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx @@ -2359,7 +2370,9 @@ msgstr "Grafieken" #: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx #: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-drag-drop.tsx #: packages/lib/utils/fields.ts +#: packages/ui/primitives/document-flow/add-fields.tsx #: packages/ui/primitives/document-flow/types.ts +#: packages/ui/primitives/template-flow/add-template-fields.tsx msgid "Checkbox" msgstr "Selectievakje" @@ -2516,7 +2529,6 @@ msgstr "Vergelijk alle abonnementen en functies in detail" #: apps/remix/app/components/embed/embed-document-signing-page-v1.tsx #: apps/remix/app/components/embed/embed-document-signing-page-v1.tsx #: apps/remix/app/components/embed/multisign/multi-sign-document-signing-view.tsx -#: apps/remix/app/components/forms/signup.tsx #: apps/remix/app/components/general/document-signing/document-signing-complete-dialog.tsx #: apps/remix/app/components/general/document-signing/document-signing-complete-dialog.tsx msgid "Complete" @@ -2864,6 +2876,7 @@ msgstr "Maak een supportticket aan" msgid "Create a team to collaborate with your team members." msgstr "Maak een team aan om samen te werken met je teamleden." +#: apps/remix/app/components/forms/signup.tsx #: apps/remix/app/routes/_unauthenticated+/organisation.invite.$token.tsx #: packages/email/template-components/template-document-self-signed.tsx msgid "Create account" @@ -3562,6 +3575,10 @@ msgstr "Wil je deze sjabloon verwijderen?" msgid "Do you want to duplicate this template?" msgstr "Wil je deze sjabloon dupliceren?" +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "Documenso License" +msgstr "" + #: apps/remix/app/components/dialogs/account-delete-dialog.tsx msgid "Documenso will delete <0>all of your documents0>, along with all of your completed documents, signatures, and all other resources belonging to your Account." msgstr "Documenso verwijdert <0>al je documenten0>, samen met al je voltooide documenten, handtekeningen en alle andere bronnen die bij je account horen." @@ -3629,6 +3646,7 @@ msgstr "Document geannuleerd" msgid "Document completed" msgstr "Document voltooid" +#: packages/lib/utils/document-audit-logs.ts #: packages/lib/utils/document-audit-logs.ts #: packages/lib/utils/document-audit-logs.ts msgctxt "Audit log format" @@ -3769,11 +3787,6 @@ msgctxt "Audit log format" msgid "Document opened" msgstr "Document geopend" -#: packages/lib/utils/document-audit-logs.ts -msgctxt "Audit log format" -msgid "Document ownership delegated" -msgstr "Documenteigendom gedelegeerd" - #: apps/remix/app/components/general/document/document-status.tsx msgid "Document pending" msgstr "Document in behandeling" @@ -4270,8 +4283,9 @@ msgid "Email preferences updated" msgstr "E-mailvoorkeuren bijgewerkt" #: packages/lib/utils/document-audit-logs.ts +msgctxt "Audit log format" msgid "Email resent" -msgstr "E-mail opnieuw verzonden" +msgstr "" #: apps/remix/app/components/dialogs/envelope-distribute-dialog.tsx #: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx @@ -4281,8 +4295,9 @@ msgid "Email Sender" msgstr "E-mails afzender" #: packages/lib/utils/document-audit-logs.ts +msgctxt "Audit log format" msgid "Email sent" -msgstr "E-mail verzonden" +msgstr "" #: apps/remix/app/routes/_unauthenticated+/check-email.tsx msgid "Email sent!" @@ -4526,12 +4541,14 @@ msgid "Envelope Item Count" msgstr "Aantal envelop-items" #: packages/lib/utils/document-audit-logs.ts +msgctxt "Audit log format" msgid "Envelope item created" -msgstr "Envelop-item aangemaakt" +msgstr "" #: packages/lib/utils/document-audit-logs.ts +msgctxt "Audit log format" msgid "Envelope item deleted" -msgstr "Envelop-item verwijderd" +msgstr "" #: apps/remix/app/components/dialogs/envelope-redistribute-dialog.tsx msgid "Envelope resent" @@ -4669,6 +4686,15 @@ msgstr "Time‑out overschreden" msgid "Expired" msgstr "Verlopen" +#: apps/remix/app/components/general/admin-license-card.tsx +msgctxt "Subscription status" +msgid "Expired" +msgstr "" + +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "Expires" +msgstr "" + #. placeholder {0}: DateTime.fromMillis(Math.max(millisecondsRemaining, 0)).toFormat( 'mm:ss', ) #: apps/remix/app/components/general/document-signing/access-auth-2fa-form.tsx msgid "Expires in {0}" @@ -4742,6 +4768,10 @@ msgstr "Instellingen opslaan is mislukt." msgid "Failed to sign out all sessions" msgstr "Uitloggen van alle sessies mislukt" +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "Failed to sync license" +msgstr "" + #: apps/remix/app/routes/_authenticated+/settings+/security.linked-accounts.tsx msgid "Failed to unlink account" msgstr "Account ontkoppelen mislukt" @@ -4780,6 +4810,10 @@ msgstr "Mislukt: {failedCount}" msgid "Feature Flags" msgstr "Feature-flags" +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "Features" +msgstr "" + #: packages/ui/primitives/document-flow/field-items-advanced-settings/text-field.tsx msgid "Field character limit" msgstr "Tekenlimiet veld" @@ -5335,7 +5369,9 @@ msgstr "Geërfde abonnementsclaim" #: apps/remix/app/components/general/document-signing/document-signing-initials-field.tsx #: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-drag-drop.tsx #: packages/lib/utils/fields.ts +#: packages/ui/primitives/document-flow/add-fields.tsx #: packages/ui/primitives/document-flow/types.ts +#: packages/ui/primitives/template-flow/add-template-fields.tsx msgid "Initials" msgstr "Initialen" @@ -5363,11 +5399,20 @@ msgstr "Ongeldige code. Probeer het opnieuw." msgid "Invalid domains" msgstr "Ongeldige domeinen" +#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx #: packages/lib/types/recipient.ts #: packages/ui/primitives/document-flow/add-signers.types.ts msgid "Invalid email" msgstr "Ongeldig e-mailadres" +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "Invalid License Key" +msgstr "" + +#: apps/remix/app/components/general/admin-license-status-banner.tsx +msgid "Invalid License Type - Your Documenso instance is using features that are not part of your license." +msgstr "" + #: apps/remix/app/routes/_unauthenticated+/team.verify.email.$token.tsx msgid "Invalid link" msgstr "Ongeldige link" @@ -5419,6 +5464,7 @@ msgid "Invite Members" msgstr "Leden uitnodigen" #: apps/remix/app/components/dialogs/organisation-member-invite-dialog.tsx +#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx msgid "Invite organisation members" msgstr "Organisatieleden uitnodigen" @@ -5426,6 +5472,10 @@ msgstr "Organisatieleden uitnodigen" msgid "Invite team members to collaborate" msgstr "Teamleden uitnodigen om samen te werken" +#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx +msgid "Invite them to the organisation first" +msgstr "" + #: apps/remix/app/components/tables/organisation-member-invites-table.tsx msgid "Invited At" msgstr "Uitgenodigd op" @@ -5570,6 +5620,12 @@ msgstr "Laatst gebruikt" msgid "Last Year" msgstr "Afgelopen jaar" +#: apps/remix/app/components/forms/subscription-claim-form.tsx +#: apps/remix/app/components/general/admin-license-card.tsx +#: apps/remix/app/routes/_authenticated+/admin+/organisations.$id.tsx +msgid "Learn more" +msgstr "" + #: apps/remix/app/components/dialogs/organisation-leave-dialog.tsx #: apps/remix/app/components/tables/user-organisations-table.tsx msgid "Leave" @@ -5602,6 +5658,27 @@ msgstr "Letterspatiëring" msgid "Letter Spacing" msgstr "Letterspatiëring" +#: apps/remix/app/components/general/admin-license-card.tsx +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "License" +msgstr "" + +#: apps/remix/app/components/general/admin-license-status-banner.tsx +msgid "License Expired - Please renew your license to continue using enterprise features." +msgstr "" + +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "License Key" +msgstr "" + +#: apps/remix/app/components/general/admin-license-status-banner.tsx +msgid "License Payment Overdue - Please update your payment to avoid service disruptions." +msgstr "" + +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "License synced" +msgstr "" + #: apps/remix/app/components/general/app-command-menu.tsx msgid "Light Mode" msgstr "Lichte modus" @@ -5627,8 +5704,9 @@ msgid "Link expires in 30 minutes." msgstr "Link verloopt over 30 minuten." #: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.public-profile.tsx +msgctxt "Action button to link template to public profile" msgid "Link template" -msgstr "Sjabloon koppelen" +msgstr "" #: packages/email/templates/organisation-account-link-confirmation.tsx msgid "Link your Documenso account" @@ -5677,6 +5755,7 @@ msgstr "Document wordt geladen..." msgid "Loading suggestions..." msgstr "Suggesties laden..." +#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx #: apps/remix/app/components/general/document/document-page-view-recent-activity.tsx msgid "Loading..." msgstr "Laden..." @@ -5954,6 +6033,10 @@ msgstr "Midden" msgid "Min" msgstr "Min" +#: apps/remix/app/components/general/admin-license-status-banner.tsx +msgid "Missing License - Your Documenso instance is using features that require a license." +msgstr "" + #: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page.tsx msgid "Missing Recipients" msgstr "Ontbrekende ontvangers" @@ -6027,6 +6110,7 @@ msgid "My Folder" msgstr "Mijn map" #: apps/remix/app/components/tables/internal-audit-log-table.tsx +#: apps/remix/app/routes/_internal+/[__htmltopdf]+/certificate.tsx #: packages/lib/server-only/pdf/render-audit-logs.ts msgid "N/A" msgstr "n.v.t." @@ -6145,6 +6229,10 @@ msgstr "Geen documenten gevonden" msgid "No email detected" msgstr "Geen e-mailadres gedetecteerd" +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "No features enabled" +msgstr "" + #: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx msgid "No fields were detected in your document." msgstr "Er zijn geen velden in uw document gedetecteerd." @@ -6165,6 +6253,18 @@ msgstr "Geen mappen gevonden die overeenkomen met \"{searchTerm}\"" msgid "No further action is required from you at this time." msgstr "Er is op dit moment geen verdere actie van jou vereist." +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "No License Configured" +msgstr "" + +#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx +msgid "No members selected" +msgstr "" + +#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx +msgid "No organisation members available" +msgstr "" + #: apps/remix/app/routes/_authenticated+/dashboard.tsx msgid "No organisations found" msgstr "Geen organisaties gevonden" @@ -6665,6 +6765,7 @@ msgstr "Wachtwoord bijgewerkt" msgid "Password updated!" msgstr "Wachtwoord bijgewerkt." +#: apps/remix/app/components/general/admin-license-card.tsx #: apps/remix/app/components/tables/user-billing-organisations-table.tsx msgctxt "Subscription status" msgid "Past Due" @@ -6935,6 +7036,10 @@ msgstr "Controleer het document voordat je ondertekent." msgid "Please select a PDF file" msgstr "Selecteer een PDF-bestand" +#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx +msgid "Please select at least one member to add to the team." +msgstr "" + #: apps/remix/app/components/general/document-signing/access-auth-2fa-form.tsx msgid "Please select how you'd like to receive your verification code." msgstr "Selecteer hoe u uw verificatiecode wilt ontvangen." @@ -7091,7 +7196,9 @@ msgstr "Snelle acties" #: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx #: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-drag-drop.tsx #: packages/lib/utils/fields.ts +#: packages/ui/primitives/document-flow/add-fields.tsx #: packages/ui/primitives/document-flow/types.ts +#: packages/ui/primitives/template-flow/add-template-fields.tsx msgid "Radio" msgstr "Radio" @@ -7176,11 +7283,6 @@ msgstr "Recente documenten" #: apps/remix/app/components/general/template/template-page-view-documents-table.tsx #: apps/remix/app/components/tables/documents-table.tsx #: apps/remix/app/components/tables/inbox-table.tsx -#: packages/lib/utils/document-audit-logs.ts -#: packages/lib/utils/document-audit-logs.ts -#: packages/lib/utils/document-audit-logs.ts -#: packages/lib/utils/document-audit-logs.ts -#: packages/lib/utils/document-audit-logs.ts msgid "Recipient" msgstr "Ontvanger" @@ -7201,14 +7303,42 @@ msgstr "Ontvanger {0}" msgid "Recipient action authentication" msgstr "Authenticatie voor ontvangeractie" +#: packages/lib/utils/document-audit-logs.ts +msgid "Recipient approved the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "Recipient CC'd the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "Recipient completed their task" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "Recipient failed to validate a 2FA token for the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "Recipient rejected the document" +msgstr "" + #: packages/ui/components/document/document-email-checkboxes.tsx msgid "Recipient removed email" msgstr "E-mail bij verwijderde ontvanger" +#: packages/lib/utils/document-audit-logs.ts +msgid "Recipient requested a 2FA token for the document" +msgstr "" + #: packages/ui/components/document/document-email-checkboxes.tsx msgid "Recipient signed email" msgstr "E-mail bij ondertekende ontvanger" +#: packages/lib/utils/document-audit-logs.ts +msgid "Recipient signed the document" +msgstr "" + #: packages/ui/components/document/document-email-checkboxes.tsx msgid "Recipient signing request email" msgstr "E-mail voor ondertekeningsverzoek aan ontvanger" @@ -7217,10 +7347,20 @@ msgstr "E-mail voor ondertekeningsverzoek aan ontvanger" msgid "Recipient updated" msgstr "Ontvanger bijgewerkt" +#: packages/lib/utils/document-audit-logs.ts +msgid "Recipient validated a 2FA token for the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "Recipient viewed the document" +msgstr "" + #: apps/remix/app/components/embed/authoring/configure-document-recipients.tsx #: apps/remix/app/components/general/document/document-page-view-recipients.tsx +#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx #: apps/remix/app/components/general/template/template-page-view-recipients.tsx #: apps/remix/app/routes/_authenticated+/admin+/documents.$id.tsx +#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/documents.$id.logs.tsx #: apps/remix/app/routes/_internal+/[__htmltopdf]+/audit-log.tsx #: packages/lib/server-only/pdf/render-audit-logs.ts msgid "Recipients" @@ -7725,6 +7865,10 @@ msgstr "Beveiliging" msgid "Security activity" msgstr "Beveiligingsactiviteit" +#: apps/remix/app/components/general/admin-license-status-banner.tsx +msgid "See Documentation" +msgstr "" + #: apps/remix/app/routes/_authenticated+/admin+/documents.$id.tsx msgid "See the background jobs tab for the status" msgstr "Zie het tabblad Achtergrondtaken voor de status" @@ -7853,15 +7997,18 @@ msgstr "Selecteer optie" msgid "Select Options" msgstr "Selecteer opties" +#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx +msgid "Select or add recipients" +msgstr "" + +#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx +msgid "Select or enter email address" +msgstr "" + #: apps/remix/app/components/general/document-signing/document-signing-auth-passkey.tsx msgid "Select passkey" msgstr "Passkey selecteren" -#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx -#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx -msgid "Select recipients" -msgstr "Ontvangers selecteren" - #: apps/remix/app/components/tables/documents-table.tsx #: apps/remix/app/components/tables/templates-table.tsx msgid "Select row" @@ -8217,6 +8364,7 @@ msgstr "Registreren met OIDC" #: packages/lib/utils/fields.ts #: packages/ui/primitives/document-flow/add-fields.tsx #: packages/ui/primitives/document-flow/types.ts +#: packages/ui/primitives/field-selector.tsx #: packages/ui/primitives/template-flow/add-template-fields.tsx msgid "Signature" msgstr "Handtekening" @@ -8681,10 +8829,12 @@ msgstr "E-maildomeinen synchroniseren" msgid "Sync failed, changes not saved" msgstr "Synchroniseren mislukt, wijzigingen niet opgeslagen" -#: packages/lib/utils/document-audit-logs.ts -msgid "System auto inserted fields" -msgstr "Systeem heeft automatisch velden ingevoegd" +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "Sync license from server" +msgstr "" +#: packages/lib/utils/document-audit-logs.ts +#: packages/lib/utils/document-audit-logs.ts #: packages/lib/utils/document-audit-logs.ts msgctxt "Audit log format" msgid "System auto inserted fields" @@ -9075,8 +9225,9 @@ msgstr "De documenteigenaar is op de hoogte gebracht van je beslissing. Indien n #. placeholder {0}: data.delegatedOwnerName || data.delegatedOwnerEmail #. placeholder {1}: data.teamName #: packages/lib/utils/document-audit-logs.ts +msgctxt "Audit log format" msgid "The document ownership was delegated to {0} on behalf of {1}" -msgstr "De documenteigendom is namens {1} gedelegeerd aan {0}" +msgstr "" #: apps/remix/app/components/dialogs/template-use-dialog.tsx msgid "The document was created but could not be sent to recipients." @@ -9696,6 +9847,10 @@ msgstr "Om deze {1} te {0}, moet u zijn ingelogd." msgid "To accept this invitation you must create an account." msgstr "Om deze uitnodiging te accepteren, moet je een account aanmaken." +#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx +msgid "To add members to this team, you must first add them to the organisation." +msgstr "" + #: apps/remix/app/components/dialogs/team-member-create-dialog.tsx msgid "To be able to add members to a team, you must first add them to the organisation. For more information, please see the <0>documentation0>." msgstr "Om leden aan een team toe te voegen, moet je ze eerst aan de organisatie toevoegen. Raadpleeg de <0>documentatie0> voor meer informatie." @@ -9886,6 +10041,10 @@ msgstr "Typen" msgid "Type a command or search..." msgstr "Typ een opdracht of zoek..." +#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx +msgid "Type an email address to add a recipient" +msgstr "" + #: packages/ui/primitives/signature-pad/signature-pad-type.tsx msgid "Type your signature" msgstr "Typ uw handtekening" @@ -10372,10 +10531,6 @@ msgstr "Validatie mislukt" msgid "Value" msgstr "Waarde" -#: packages/lib/types/field-meta.ts -msgid "Value must be a number" -msgstr "Waarde moet een getal zijn" - #: packages/email/template-components/template-access-auth-2fa.tsx msgid "Verification Code Required" msgstr "Verificatiecode vereist" @@ -11115,6 +11270,18 @@ msgstr "Ja" msgid "You" msgstr "Jij" +#: packages/lib/utils/document-audit-logs.ts +msgid "You added a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You added a recipient" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You approved the document" +msgstr "" + #: apps/remix/app/components/general/document-signing/document-signing-complete-dialog.tsx msgid "You are about to complete approving the following document" msgstr "U staat op het punt het volgende document goed te keuren" @@ -11179,11 +11346,16 @@ msgid "You are about to remove the following email from <0>{0}0>." msgstr "Je staat op het punt de volgende e-mail uit <0>{0}0> te verwijderen." #. placeholder {0}: organisation.name -#. placeholder {0}: team.name #: apps/remix/app/components/dialogs/organisation-group-delete-dialog.tsx -#: apps/remix/app/components/dialogs/team-group-delete-dialog.tsx +msgctxt "Removing group from organisation" msgid "You are about to remove the following group from <0>{0}0>." -msgstr "Je staat op het punt de volgende groep te verwijderen uit <0>{0}0>." +msgstr "" + +#. placeholder {0}: team.name +#: apps/remix/app/components/dialogs/team-group-delete-dialog.tsx +msgctxt "Removing group from team" +msgid "You are about to remove the following group from <0>{0}0>." +msgstr "" #. placeholder {0}: organisation.name #: apps/remix/app/components/dialogs/organisation-member-delete-dialog.tsx @@ -11361,6 +11533,23 @@ msgstr "Je kunt op dit moment geen documenten uploaden." msgid "You cannot upload encrypted PDFs." msgstr "Je kunt geen versleutelde pdf-bestanden uploaden." +#: packages/lib/utils/document-audit-logs.ts +msgid "You CC'd the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You completed your task" +msgstr "" + +#. placeholder {0}: data.envelopeItemTitle +#: packages/lib/utils/document-audit-logs.ts +msgid "You created an envelope item with title {0}" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You created the document" +msgstr "" + #: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.billing.tsx msgid "You currently have an inactive <0>{currentProductName}0> subscription" msgstr "Je hebt momenteel een inactief {currentProductName}-abonnement" @@ -11369,6 +11558,15 @@ msgstr "Je hebt momenteel een inactief {currentProductName}-abonnement" msgid "You currently have no access to any teams within this organisation. Please contact your organisation to request access." msgstr "Je hebt momenteel geen toegang tot teams binnen deze organisatie. Neem contact op met je organisatie om toegang aan te vragen." +#. placeholder {0}: data.envelopeItemTitle +#: packages/lib/utils/document-audit-logs.ts +msgid "You deleted an envelope item with title {0}" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You deleted the document" +msgstr "" + #: apps/remix/app/components/forms/token.tsx msgid "You do not have permission to create a token for this team." msgstr "Je hebt geen toestemming om een token voor dit team te maken." @@ -11381,6 +11579,10 @@ msgstr "U beheert de facturering voor geen enkele organisatie." msgid "You don't need to sign it anymore." msgstr "Je hoeft het niet meer te ondertekenen." +#: packages/lib/utils/document-audit-logs.ts +msgid "You failed to validate a 2FA token for the document" +msgstr "" + #. placeholder {0}: data.organisationName #: apps/remix/app/routes/_unauthenticated+/organisation.invite.$token.tsx msgid "You have accepted an invitation from <0>{0}0> to join their organisation." @@ -11543,6 +11745,10 @@ msgstr "Je hebt de teamgroep bijgewerkt." msgid "You have verified your email address for <0>{0}0>." msgstr "Je hebt je e‑mailadres voor <0>{0}0> geverifieerd." +#: packages/lib/utils/document-audit-logs.ts +msgid "You moved the document to team" +msgstr "" + #: apps/remix/app/components/dialogs/organisation-delete-dialog.tsx #: apps/remix/app/components/dialogs/team-delete-dialog.tsx #: apps/remix/app/components/dialogs/token-delete-dialog.tsx @@ -11584,6 +11790,97 @@ msgstr "Je moet ingelogd zijn om deze pagina te bekijken." msgid "You need to setup 2FA to mark this document as viewed." msgstr "Je moet 2FA instellen om dit document als bekeken te markeren." +#: packages/lib/utils/document-audit-logs.ts +msgid "You opened the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You prefilled a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You rejected the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You removed a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You removed a recipient" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You requested a 2FA token for the document" +msgstr "" + +#. placeholder {0}: data.recipientEmail +#: packages/lib/utils/document-audit-logs.ts +msgid "You resent an email to {0}" +msgstr "" + +#. placeholder {0}: data.recipientEmail +#: packages/lib/utils/document-audit-logs.ts +msgid "You sent an email to {0}" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You sent the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You signed a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You signed the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You unsigned a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You updated a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You updated a recipient" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You updated the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You updated the document access auth requirements" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You updated the document external ID" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You updated the document signing auth requirements" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You updated the document title" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You updated the document visibility" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You validated a 2FA token for the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +#: packages/lib/utils/document-audit-logs.ts +msgid "You viewed the document" +msgstr "" + #: apps/remix/app/components/dialogs/admin-organisation-create-dialog.tsx msgid "You will need to configure any claims or subscription after creating this organisation" msgstr "Je moet alle claims of abonnementen configureren nadat je deze organisatie hebt aangemaakt" @@ -11642,6 +11939,11 @@ msgstr "Je bulkverzending voor sjabloon \"{templateName}\" is voltooid." msgid "Your current {currentProductName} plan is past due. Please update your payment information." msgstr "Je huidige {currentProductName}-abonnement is achterstallig. Werk je betalingsgegevens bij." +#: apps/remix/app/components/forms/subscription-claim-form.tsx +#: apps/remix/app/routes/_authenticated+/admin+/organisations.$id.tsx +msgid "Your current license does not include these features." +msgstr "" + #: apps/remix/app/routes/_authenticated+/o.$orgUrl.support.tsx msgid "Your current plan includes the following support channels:" msgstr "Uw huidige abonnement omvat de volgende ondersteuningskanalen:" diff --git a/packages/lib/translations/pl/web.po b/packages/lib/translations/pl/web.po index e066f9a3f..6e1e169e7 100644 --- a/packages/lib/translations/pl/web.po +++ b/packages/lib/translations/pl/web.po @@ -22,6 +22,11 @@ msgstr "" msgid ".PDF documents accepted (max {APP_DOCUMENT_UPLOAD_SIZE_LIMIT}MB)" msgstr "Akceptowane dokumenty .PDF (maks. {APP_DOCUMENT_UPLOAD_SIZE_LIMIT} MB)" +#. placeholder {0}: invalidEmails[0].value +#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx +msgid "\"{0}\" is not a valid email address." +msgstr "" + #. placeholder {0}: field.customText #. placeholder {1}: timezone || '' #: apps/remix/app/components/general/document-signing/document-signing-date-field.tsx @@ -101,6 +106,17 @@ msgstr "{0, plural, one {1 pole} few {# pola} many {# pól} other {# pola}}" msgid "{0, plural, one {# folder} other {# folders}}" msgstr "{0, plural, one {# folder} few {# foldery} many {# folderów} other {# folderów}}" +#. placeholder {0}: result.deletedCount +#. placeholder {1}: result.failedIds.length +#: apps/remix/app/components/dialogs/envelopes-bulk-delete-dialog.tsx +msgid "{0, plural, one {# item deleted.} other {# items deleted.}} {1, plural, one {# item could not be deleted.} other {# items could not be deleted.}}" +msgstr "" + +#. placeholder {0}: result.deletedCount +#: apps/remix/app/components/dialogs/envelopes-bulk-delete-dialog.tsx +msgid "{0, plural, one {# item has been deleted.} other {# items have been deleted.}}" +msgstr "" + #. placeholder {0}: detectedRecipients.length #: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx msgid "{0, plural, one {# recipient have been added from AI detection.} other {# recipients have been added from AI detection.}}" @@ -243,17 +259,6 @@ msgstr "Sprawdź i {recipientActionVerb} dokument „{1}” utworzony przez zesp msgid "{0} invited you to {recipientActionVerb} a document" msgstr "Sprawdź i {recipientActionVerb} dokument utworzony przez zespół {0}" -#. placeholder {0}: result.deletedCount -#. placeholder {1}: result.failedIds.length -#: apps/remix/app/components/dialogs/envelopes-bulk-delete-dialog.tsx -msgid "{0} item(s) deleted. {1} item(s) could not be deleted." -msgstr "" - -#. placeholder {0}: result.deletedCount -#: apps/remix/app/components/dialogs/envelopes-bulk-delete-dialog.tsx -msgid "{0} item(s) have been deleted." -msgstr "" - #. placeholder {0}: remaining.documents #. placeholder {1}: quota.documents #: apps/remix/app/components/general/document/document-upload-button-legacy.tsx @@ -346,110 +351,6 @@ msgstr "{MAXIMUM_PASSKEYS, plural, one {Nie możesz mieć więcej niż # klucz d msgid "{maximumEnvelopeItemCount, plural, one {You cannot upload more than # item per envelope.} other {You cannot upload more than # items per envelope.}}" msgstr "{maximumEnvelopeItemCount, plural, one {Nie możesz przesłać więcej niż # element na kopertę.} few {Nie możesz przesłać więcej niż # elementy na kopertę.} many {Nie możesz przesłać więcej niż # elementów na kopertę.} other {Nie możesz przesłać więcej niż # elementów na kopertę.}}" -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} added a field" -msgstr "Użytkownik {prefix} dodał pole" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} added a recipient" -msgstr "Użytkownik {prefix} dodał odbiorcę" - -#. placeholder {0}: data.envelopeItemTitle -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} created an envelope item with title {0}" -msgstr "Użytkownik {prefix} utworzył element koperty o nazwie {0}" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} created the document" -msgstr "Użytkownik {prefix} utworzył dokument" - -#. placeholder {0}: data.envelopeItemTitle -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} deleted an envelope item with title {0}" -msgstr "Użytkownik {prefix} usunął element koperty o nazwie {0}" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} deleted the document" -msgstr "Użytkownik {prefix} usunął dokument" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} moved the document to team" -msgstr "Użytkownik {prefix} przeniósł dokument do zespołu" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} opened the document" -msgstr "Użytkownik {prefix} otworzył dokument" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} prefilled a field" -msgstr "Użytkownik {prefix} wstępnie wypełnił pole" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} removed a field" -msgstr "Użytkownik {prefix} usunął pole" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} removed a recipient" -msgstr "Użytkownik {prefix} usunął odbiorcę" - -#. placeholder {0}: data.recipientEmail -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} resent an email to {0}" -msgstr "Użytkownik {prefix} ponownie wysłał wiadomość do {0}" - -#. placeholder {0}: data.recipientEmail -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} sent an email to {0}" -msgstr "Użytkownik {prefix} wysłał wiadomość do {0}" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} sent the document" -msgstr "Użytkownik {prefix} wysłał dokument" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} signed a field" -msgstr "Użytkownik {prefix} podpisał pole" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} unsigned a field" -msgstr "Użytkownik {prefix} nie podpisał pola" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} updated a field" -msgstr "Użytkownik {prefix} zaktualizował pole" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} updated a recipient" -msgstr "Użytkownik {prefix} zaktualizował odbiorcę" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} updated the document" -msgstr "Użytkownik {prefix} zaktualizował dokument" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} updated the document access auth requirements" -msgstr "Użytkownik {prefix} zaktualizował metodę uwierzytelniania do dokumentu" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} updated the document external ID" -msgstr "Użytkownik {prefix} zaktualizował identyfikator zewnętrzny dokumentu" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} updated the document signing auth requirements" -msgstr "Użytkownik {prefix} zaktualizował metodę uwierzytelniania odbiorcy do dokumentu" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} updated the document title" -msgstr "Użytkownik {prefix} zaktualizował tytuł dokumentu" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} updated the document visibility" -msgstr "Użytkownik {prefix} zaktualizował widoczność dokumentu" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} viewed the document" -msgstr "Użytkownik {prefix} wyświetlił dokument" - #: apps/remix/app/components/general/direct-template/direct-template-page.tsx msgid "{recipientActionVerb} document" msgstr "{recipientActionVerb} dokument" @@ -510,47 +411,148 @@ msgstr "Sprawdź i {0} dokument „{documentName}” utworzony przez zespół {t msgid "{teamName} has invited you to {action} {documentName}" msgstr "Sprawdź i {action} dokument „{documentName}” utworzony przez zespół {teamName}" +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} added a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} added a recipient" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} approved the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} CC'd the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} completed their task" +msgstr "" + +#. placeholder {0}: data.envelopeItemTitle +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} created an envelope item with title {0}" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} created the document" +msgstr "" + +#. placeholder {0}: data.envelopeItemTitle +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} deleted an envelope item with title {0}" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} deleted the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} failed to validate a 2FA token for the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} moved the document to team" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} opened the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} prefilled a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} rejected the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} removed a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} removed a recipient" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} requested a 2FA token for the document" +msgstr "" + +#. placeholder {0}: data.recipientEmail +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} resent an email to {0}" +msgstr "" + +#. placeholder {0}: data.recipientEmail +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} sent an email to {0}" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} sent the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} signed a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} signed the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} unsigned a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} updated a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} updated a recipient" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} updated the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} updated the document access auth requirements" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} updated the document external ID" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} updated the document signing auth requirements" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} updated the document title" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} updated the document visibility" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} validated a 2FA token for the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} viewed the document" +msgstr "" + #: apps/remix/app/components/tables/internal-audit-log-table.tsx #: packages/lib/server-only/pdf/render-audit-logs.ts msgid "{userAgent}" msgstr "{userAgent}" -#: packages/lib/utils/document-audit-logs.ts -msgid "{userName} approved the document" -msgstr "Użytkownik {userName} zatwierdził dokument" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{userName} CC'd the document" -msgstr "Użytkownik {userName} odebrał kopię dokumentu" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{userName} completed their task" -msgstr "Użytkownik {userName} zakończył swoje zadanie" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{userName} failed to validate a 2FA token for the document" -msgstr "Użytkownik {userName} nie zweryfikował kodu weryfikacyjnego dla dokumentu" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{userName} rejected the document" -msgstr "Użytkownik {userName} odrzucił dokument" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{userName} requested a 2FA token for the document" -msgstr "Użytkownik {userName} poprosił o kod weryfikacyjny dla dokumentu" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{userName} signed the document" -msgstr "Użytkownik {userName} podpisał dokument" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{userName} validated a 2FA token for the document" -msgstr "Użytkownik {userName} zweryfikował kod weryfikacyjny dla dokumentu" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{userName} viewed the document" -msgstr "Użytkownik {userName} wyświetlił dokument" - #: apps/remix/app/components/dialogs/sign-field-checkbox-dialog.tsx msgid "{validationLength, plural, one {Select at least # option} other {Select at least # options}}" msgstr "{validationLength, plural, one {Wybierz co najmniej # opcję} few {Wybierz co najmniej # opcje} many {Wybierz co najmniej # opcji} other {Wybierz co najmniej # opcji}}" @@ -1084,6 +1086,7 @@ msgstr "Akcje" msgid "Active" msgstr "Aktywny" +#: apps/remix/app/components/general/admin-license-card.tsx #: apps/remix/app/components/tables/user-billing-organisations-table.tsx msgctxt "Subscription status" msgid "Active" @@ -1258,6 +1261,10 @@ msgstr "Dodaj odbiorców" msgid "Add Recipients" msgstr "Dodaj odbiorców" +#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx +msgid "Add recipients to your document" +msgstr "" + #: apps/remix/app/components/embed/authoring/configure-document-recipients.tsx #: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx #: packages/ui/primitives/document-flow/add-signers.tsx @@ -2197,6 +2204,10 @@ msgstr "Korzystając z funkcji podpisu elektronicznego, wyrażasz zgodę na prze msgid "Can prepare" msgstr "Może przygotować" +#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx +msgid "Can't find someone?" +msgstr "" + #: apps/remix/app/components/dialogs/admin-organisation-create-dialog.tsx #: apps/remix/app/components/dialogs/admin-organisation-member-update-dialog.tsx #: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx @@ -2359,7 +2370,9 @@ msgstr "Wykresy" #: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx #: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-drag-drop.tsx #: packages/lib/utils/fields.ts +#: packages/ui/primitives/document-flow/add-fields.tsx #: packages/ui/primitives/document-flow/types.ts +#: packages/ui/primitives/template-flow/add-template-fields.tsx msgid "Checkbox" msgstr "Pole wyboru" @@ -2516,7 +2529,6 @@ msgstr "Porównaj wszystkie plany i funkcje" #: apps/remix/app/components/embed/embed-document-signing-page-v1.tsx #: apps/remix/app/components/embed/embed-document-signing-page-v1.tsx #: apps/remix/app/components/embed/multisign/multi-sign-document-signing-view.tsx -#: apps/remix/app/components/forms/signup.tsx #: apps/remix/app/components/general/document-signing/document-signing-complete-dialog.tsx #: apps/remix/app/components/general/document-signing/document-signing-complete-dialog.tsx msgid "Complete" @@ -2864,6 +2876,7 @@ msgstr "Utwórz zgłoszenie" msgid "Create a team to collaborate with your team members." msgstr "Utwórz zespół, aby współpracować z użytkownikami zespołu." +#: apps/remix/app/components/forms/signup.tsx #: apps/remix/app/routes/_unauthenticated+/organisation.invite.$token.tsx #: packages/email/template-components/template-document-self-signed.tsx msgid "Create account" @@ -3562,6 +3575,10 @@ msgstr "Czy chcesz usunąć szablon?" msgid "Do you want to duplicate this template?" msgstr "Czy chcesz zduplikować szablon?" +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "Documenso License" +msgstr "" + #: apps/remix/app/components/dialogs/account-delete-dialog.tsx msgid "Documenso will delete <0>all of your documents0>, along with all of your completed documents, signatures, and all other resources belonging to your Account." msgstr "Documenso usunie <0>wszystkie Twoje dokumenty0> (w tym zakończone), podpisy oraz dane powiązane z kontem." @@ -3629,6 +3646,7 @@ msgstr "Dokument został anulowany" msgid "Document completed" msgstr "Dokument zakończony" +#: packages/lib/utils/document-audit-logs.ts #: packages/lib/utils/document-audit-logs.ts #: packages/lib/utils/document-audit-logs.ts msgctxt "Audit log format" @@ -3769,11 +3787,6 @@ msgctxt "Audit log format" msgid "Document opened" msgstr "Otwarto dokument" -#: packages/lib/utils/document-audit-logs.ts -msgctxt "Audit log format" -msgid "Document ownership delegated" -msgstr "Zmieniono właściciela dokumentu" - #: apps/remix/app/components/general/document/document-status.tsx msgid "Document pending" msgstr "Dokument oczekujący" @@ -4270,8 +4283,9 @@ msgid "Email preferences updated" msgstr "Ustawienia adresu e-mail zostały zaktualizowane" #: packages/lib/utils/document-audit-logs.ts +msgctxt "Audit log format" msgid "Email resent" -msgstr "Wysłano ponownie wiadomość" +msgstr "" #: apps/remix/app/components/dialogs/envelope-distribute-dialog.tsx #: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx @@ -4281,8 +4295,9 @@ msgid "Email Sender" msgstr "Adres e-mail nadawcy" #: packages/lib/utils/document-audit-logs.ts +msgctxt "Audit log format" msgid "Email sent" -msgstr "Wysłano wiadomość" +msgstr "" #: apps/remix/app/routes/_unauthenticated+/check-email.tsx msgid "Email sent!" @@ -4526,12 +4541,14 @@ msgid "Envelope Item Count" msgstr "Liczba elementów w kopercie" #: packages/lib/utils/document-audit-logs.ts +msgctxt "Audit log format" msgid "Envelope item created" -msgstr "Utworzono element koperty" +msgstr "" #: packages/lib/utils/document-audit-logs.ts +msgctxt "Audit log format" msgid "Envelope item deleted" -msgstr "Usunięto element koperty" +msgstr "" #: apps/remix/app/components/dialogs/envelope-redistribute-dialog.tsx msgid "Envelope resent" @@ -4669,6 +4686,15 @@ msgstr "Przekroczono limit czasu" msgid "Expired" msgstr "Wygasł" +#: apps/remix/app/components/general/admin-license-card.tsx +msgctxt "Subscription status" +msgid "Expired" +msgstr "" + +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "Expires" +msgstr "" + #. placeholder {0}: DateTime.fromMillis(Math.max(millisecondsRemaining, 0)).toFormat( 'mm:ss', ) #: apps/remix/app/components/general/document-signing/access-auth-2fa-form.tsx msgid "Expires in {0}" @@ -4742,6 +4768,10 @@ msgstr "Nie udało się zapisać ustawień." msgid "Failed to sign out all sessions" msgstr "Nie udało się wylogować ze wszystkich sesji" +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "Failed to sync license" +msgstr "" + #: apps/remix/app/routes/_authenticated+/settings+/security.linked-accounts.tsx msgid "Failed to unlink account" msgstr "Nie udało się rozłączyć konta" @@ -4780,6 +4810,10 @@ msgstr "Niepowodzenie: {failedCount}" msgid "Feature Flags" msgstr "Flagi funkcji" +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "Features" +msgstr "" + #: packages/ui/primitives/document-flow/field-items-advanced-settings/text-field.tsx msgid "Field character limit" msgstr "Limit znaków" @@ -5335,7 +5369,9 @@ msgstr "Odziedziczenie subskrypcji" #: apps/remix/app/components/general/document-signing/document-signing-initials-field.tsx #: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-drag-drop.tsx #: packages/lib/utils/fields.ts +#: packages/ui/primitives/document-flow/add-fields.tsx #: packages/ui/primitives/document-flow/types.ts +#: packages/ui/primitives/template-flow/add-template-fields.tsx msgid "Initials" msgstr "Inicjały" @@ -5363,11 +5399,20 @@ msgstr "Kod jest nieprawidłowy. Spróbuj ponownie." msgid "Invalid domains" msgstr "Domeny są nieprawidłowe" +#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx #: packages/lib/types/recipient.ts #: packages/ui/primitives/document-flow/add-signers.types.ts msgid "Invalid email" msgstr "Adres e-mail jest nieprawidłowy" +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "Invalid License Key" +msgstr "" + +#: apps/remix/app/components/general/admin-license-status-banner.tsx +msgid "Invalid License Type - Your Documenso instance is using features that are not part of your license." +msgstr "" + #: apps/remix/app/routes/_unauthenticated+/team.verify.email.$token.tsx msgid "Invalid link" msgstr "Link jest nieprawidłowy" @@ -5419,6 +5464,7 @@ msgid "Invite Members" msgstr "Zaproś użytkowników" #: apps/remix/app/components/dialogs/organisation-member-invite-dialog.tsx +#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx msgid "Invite organisation members" msgstr "Zaproś użytkowników organizacji" @@ -5426,6 +5472,10 @@ msgstr "Zaproś użytkowników organizacji" msgid "Invite team members to collaborate" msgstr "Zapraszać użytkowników zespołu do współpracy" +#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx +msgid "Invite them to the organisation first" +msgstr "" + #: apps/remix/app/components/tables/organisation-member-invites-table.tsx msgid "Invited At" msgstr "Data zaproszenia" @@ -5570,6 +5620,12 @@ msgstr "Użyto" msgid "Last Year" msgstr "Ostatni rok" +#: apps/remix/app/components/forms/subscription-claim-form.tsx +#: apps/remix/app/components/general/admin-license-card.tsx +#: apps/remix/app/routes/_authenticated+/admin+/organisations.$id.tsx +msgid "Learn more" +msgstr "" + #: apps/remix/app/components/dialogs/organisation-leave-dialog.tsx #: apps/remix/app/components/tables/user-organisations-table.tsx msgid "Leave" @@ -5602,6 +5658,27 @@ msgstr "Odstęp między literami" msgid "Letter Spacing" msgstr "Odstęp między literami" +#: apps/remix/app/components/general/admin-license-card.tsx +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "License" +msgstr "" + +#: apps/remix/app/components/general/admin-license-status-banner.tsx +msgid "License Expired - Please renew your license to continue using enterprise features." +msgstr "" + +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "License Key" +msgstr "" + +#: apps/remix/app/components/general/admin-license-status-banner.tsx +msgid "License Payment Overdue - Please update your payment to avoid service disruptions." +msgstr "" + +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "License synced" +msgstr "" + #: apps/remix/app/components/general/app-command-menu.tsx msgid "Light Mode" msgstr "Tryb jasny" @@ -5627,8 +5704,9 @@ msgid "Link expires in 30 minutes." msgstr "Link wygaśnie za 30 minut." #: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.public-profile.tsx +msgctxt "Action button to link template to public profile" msgid "Link template" -msgstr "Połącz szablon" +msgstr "" #: packages/email/templates/organisation-account-link-confirmation.tsx msgid "Link your Documenso account" @@ -5677,6 +5755,7 @@ msgstr "Ładowanie dokumentu..." msgid "Loading suggestions..." msgstr "Ładowanie sugestii..." +#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx #: apps/remix/app/components/general/document/document-page-view-recent-activity.tsx msgid "Loading..." msgstr "Ładowanie..." @@ -5954,6 +6033,10 @@ msgstr "Środek" msgid "Min" msgstr "Min" +#: apps/remix/app/components/general/admin-license-status-banner.tsx +msgid "Missing License - Your Documenso instance is using features that require a license." +msgstr "" + #: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page.tsx msgid "Missing Recipients" msgstr "Brak odbiorców" @@ -6027,6 +6110,7 @@ msgid "My Folder" msgstr "Mój folder" #: apps/remix/app/components/tables/internal-audit-log-table.tsx +#: apps/remix/app/routes/_internal+/[__htmltopdf]+/certificate.tsx #: packages/lib/server-only/pdf/render-audit-logs.ts msgid "N/A" msgstr "Nie dotyczy" @@ -6145,6 +6229,10 @@ msgstr "Nie znaleziono dokumentów" msgid "No email detected" msgstr "Nie wykryto adresu e-mail" +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "No features enabled" +msgstr "" + #: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx msgid "No fields were detected in your document." msgstr "Nie wykryto żadnych pól." @@ -6165,6 +6253,18 @@ msgstr "Nie znaleziono folderów pasujących do „{searchTerm}”" msgid "No further action is required from you at this time." msgstr "Nie musisz nic więcej robić." +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "No License Configured" +msgstr "" + +#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx +msgid "No members selected" +msgstr "" + +#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx +msgid "No organisation members available" +msgstr "" + #: apps/remix/app/routes/_authenticated+/dashboard.tsx msgid "No organisations found" msgstr "Nie znaleziono organizacji" @@ -6665,6 +6765,7 @@ msgstr "Hasło zostało zaktualizowane" msgid "Password updated!" msgstr "Hasło zostało zaktualizowane!" +#: apps/remix/app/components/general/admin-license-card.tsx #: apps/remix/app/components/tables/user-billing-organisations-table.tsx msgctxt "Subscription status" msgid "Past Due" @@ -6935,6 +7036,10 @@ msgstr "Sprawdź dokument przed podpisaniem." msgid "Please select a PDF file" msgstr "Wybierz plik PDF" +#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx +msgid "Please select at least one member to add to the team." +msgstr "" + #: apps/remix/app/components/general/document-signing/access-auth-2fa-form.tsx msgid "Please select how you'd like to receive your verification code." msgstr "Wybierz, w jaki sposób chcesz otrzymać swój kod weryfikacyjny." @@ -7091,7 +7196,9 @@ msgstr "Szybkie akcje" #: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx #: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-drag-drop.tsx #: packages/lib/utils/fields.ts +#: packages/ui/primitives/document-flow/add-fields.tsx #: packages/ui/primitives/document-flow/types.ts +#: packages/ui/primitives/template-flow/add-template-fields.tsx msgid "Radio" msgstr "Pole wyboru" @@ -7176,11 +7283,6 @@ msgstr "Ostatnie dokumenty" #: apps/remix/app/components/general/template/template-page-view-documents-table.tsx #: apps/remix/app/components/tables/documents-table.tsx #: apps/remix/app/components/tables/inbox-table.tsx -#: packages/lib/utils/document-audit-logs.ts -#: packages/lib/utils/document-audit-logs.ts -#: packages/lib/utils/document-audit-logs.ts -#: packages/lib/utils/document-audit-logs.ts -#: packages/lib/utils/document-audit-logs.ts msgid "Recipient" msgstr "Odbiorca" @@ -7201,14 +7303,42 @@ msgstr "Odbiorca {0}" msgid "Recipient action authentication" msgstr "Uwierzytelnianie odbiorcy" +#: packages/lib/utils/document-audit-logs.ts +msgid "Recipient approved the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "Recipient CC'd the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "Recipient completed their task" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "Recipient failed to validate a 2FA token for the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "Recipient rejected the document" +msgstr "" + #: packages/ui/components/document/document-email-checkboxes.tsx msgid "Recipient removed email" msgstr "Wiadomość o usuniętym odbiorcy" +#: packages/lib/utils/document-audit-logs.ts +msgid "Recipient requested a 2FA token for the document" +msgstr "" + #: packages/ui/components/document/document-email-checkboxes.tsx msgid "Recipient signed email" msgstr "Wiadomość potwierdzająca podpisanie" +#: packages/lib/utils/document-audit-logs.ts +msgid "Recipient signed the document" +msgstr "" + #: packages/ui/components/document/document-email-checkboxes.tsx msgid "Recipient signing request email" msgstr "Wiadomość z prośbą o podpisanie" @@ -7217,10 +7347,20 @@ msgstr "Wiadomość z prośbą o podpisanie" msgid "Recipient updated" msgstr "Odbiorca został zaktualizowany" +#: packages/lib/utils/document-audit-logs.ts +msgid "Recipient validated a 2FA token for the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "Recipient viewed the document" +msgstr "" + #: apps/remix/app/components/embed/authoring/configure-document-recipients.tsx #: apps/remix/app/components/general/document/document-page-view-recipients.tsx +#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx #: apps/remix/app/components/general/template/template-page-view-recipients.tsx #: apps/remix/app/routes/_authenticated+/admin+/documents.$id.tsx +#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/documents.$id.logs.tsx #: apps/remix/app/routes/_internal+/[__htmltopdf]+/audit-log.tsx #: packages/lib/server-only/pdf/render-audit-logs.ts msgid "Recipients" @@ -7725,6 +7865,10 @@ msgstr "Bezpieczeństwo" msgid "Security activity" msgstr "Aktywność bezpieczeństwa" +#: apps/remix/app/components/general/admin-license-status-banner.tsx +msgid "See Documentation" +msgstr "" + #: apps/remix/app/routes/_authenticated+/admin+/documents.$id.tsx msgid "See the background jobs tab for the status" msgstr "Zobacz kartę zadań w tle, aby sprawdzić status" @@ -7853,15 +7997,18 @@ msgstr "Wybierz opcję" msgid "Select Options" msgstr "Wybierz opcje" +#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx +msgid "Select or add recipients" +msgstr "" + +#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx +msgid "Select or enter email address" +msgstr "" + #: apps/remix/app/components/general/document-signing/document-signing-auth-passkey.tsx msgid "Select passkey" msgstr "Wybierz klucz dostępu" -#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx -#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx -msgid "Select recipients" -msgstr "Wybierz odbiorców" - #: apps/remix/app/components/tables/documents-table.tsx #: apps/remix/app/components/tables/templates-table.tsx msgid "Select row" @@ -8217,6 +8364,7 @@ msgstr "Zarejestruj się przez OIDC" #: packages/lib/utils/fields.ts #: packages/ui/primitives/document-flow/add-fields.tsx #: packages/ui/primitives/document-flow/types.ts +#: packages/ui/primitives/field-selector.tsx #: packages/ui/primitives/template-flow/add-template-fields.tsx msgid "Signature" msgstr "Podpis" @@ -8681,10 +8829,12 @@ msgstr "Synchronizuj domeny" msgid "Sync failed, changes not saved" msgstr "Synchronizacja nie powiodła się. Zmiany nie zostały zapisane" -#: packages/lib/utils/document-audit-logs.ts -msgid "System auto inserted fields" -msgstr "System automatycznie uzupełnił pole" +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "Sync license from server" +msgstr "" +#: packages/lib/utils/document-audit-logs.ts +#: packages/lib/utils/document-audit-logs.ts #: packages/lib/utils/document-audit-logs.ts msgctxt "Audit log format" msgid "System auto inserted fields" @@ -9075,8 +9225,9 @@ msgstr "Właściciel dokumentu został poinformowany o Twojej decyzji. Może si #. placeholder {0}: data.delegatedOwnerName || data.delegatedOwnerEmail #. placeholder {1}: data.teamName #: packages/lib/utils/document-audit-logs.ts +msgctxt "Audit log format" msgid "The document ownership was delegated to {0} on behalf of {1}" -msgstr "Zmieniono właściciela dokumentu na {0} z zespołu {1}" +msgstr "" #: apps/remix/app/components/dialogs/template-use-dialog.tsx msgid "The document was created but could not be sent to recipients." @@ -9696,6 +9847,10 @@ msgstr "Aby {0} ten {1}, musisz być zalogowany." msgid "To accept this invitation you must create an account." msgstr "Aby zaakceptować zaproszenie, musisz utworzyć konto." +#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx +msgid "To add members to this team, you must first add them to the organisation." +msgstr "" + #: apps/remix/app/components/dialogs/team-member-create-dialog.tsx msgid "To be able to add members to a team, you must first add them to the organisation. For more information, please see the <0>documentation0>." msgstr "Aby dodać użytkowników do zespołu, najpierw musisz dodać ich do organizacji. Więcej informacji znajdziesz w <0>dokumentacji0>." @@ -9886,6 +10041,10 @@ msgstr "Pisany" msgid "Type a command or search..." msgstr "Wpisz polecenie lub wyszukaj..." +#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx +msgid "Type an email address to add a recipient" +msgstr "" + #: packages/ui/primitives/signature-pad/signature-pad-type.tsx msgid "Type your signature" msgstr "Wpisz swój podpis" @@ -10372,10 +10531,6 @@ msgstr "Walidacja nie powiodła się" msgid "Value" msgstr "Wartość" -#: packages/lib/types/field-meta.ts -msgid "Value must be a number" -msgstr "Wartość musi być liczbą" - #: packages/email/template-components/template-access-auth-2fa.tsx msgid "Verification Code Required" msgstr "Kod weryfikacyjny jest wymagany" @@ -11115,6 +11270,18 @@ msgstr "Tak" msgid "You" msgstr "Ty" +#: packages/lib/utils/document-audit-logs.ts +msgid "You added a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You added a recipient" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You approved the document" +msgstr "" + #: apps/remix/app/components/general/document-signing/document-signing-complete-dialog.tsx msgid "You are about to complete approving the following document" msgstr "Zamierzasz zakończyć zatwierdzanie poniższego dokumentu" @@ -11179,11 +11346,16 @@ msgid "You are about to remove the following email from <0>{0}0>." msgstr "Zamierzasz usunąć następujący adres e-mail z organizacji <0>{0}0>." #. placeholder {0}: organisation.name -#. placeholder {0}: team.name #: apps/remix/app/components/dialogs/organisation-group-delete-dialog.tsx -#: apps/remix/app/components/dialogs/team-group-delete-dialog.tsx +msgctxt "Removing group from organisation" msgid "You are about to remove the following group from <0>{0}0>." -msgstr "Masz zamiar usunąć następującą grupę z <0>{0}0>." +msgstr "" + +#. placeholder {0}: team.name +#: apps/remix/app/components/dialogs/team-group-delete-dialog.tsx +msgctxt "Removing group from team" +msgid "You are about to remove the following group from <0>{0}0>." +msgstr "" #. placeholder {0}: organisation.name #: apps/remix/app/components/dialogs/organisation-member-delete-dialog.tsx @@ -11361,6 +11533,23 @@ msgstr "Nie możesz przesyłać dokumentów w tej chwili." msgid "You cannot upload encrypted PDFs." msgstr "Nie możesz przesyłać zaszyfrowanych plików PDF." +#: packages/lib/utils/document-audit-logs.ts +msgid "You CC'd the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You completed your task" +msgstr "" + +#. placeholder {0}: data.envelopeItemTitle +#: packages/lib/utils/document-audit-logs.ts +msgid "You created an envelope item with title {0}" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You created the document" +msgstr "" + #: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.billing.tsx msgid "You currently have an inactive <0>{currentProductName}0> subscription" msgstr "Masz nieaktywną subskrypcję <0>{currentProductName}0>" @@ -11369,6 +11558,15 @@ msgstr "Masz nieaktywną subskrypcję <0>{currentProductName}0>" msgid "You currently have no access to any teams within this organisation. Please contact your organisation to request access." msgstr "Obecnie nie masz dostępu do żadnych zespołów w organizacji. Skontaktuj się z organizacją, aby poprosić o dostęp." +#. placeholder {0}: data.envelopeItemTitle +#: packages/lib/utils/document-audit-logs.ts +msgid "You deleted an envelope item with title {0}" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You deleted the document" +msgstr "" + #: apps/remix/app/components/forms/token.tsx msgid "You do not have permission to create a token for this team." msgstr "Nie masz uprawnień do utworzenia tokena dla tego zespołu." @@ -11381,6 +11579,10 @@ msgstr "Nie zarządzasz płatnościami żadnej organizacji." msgid "You don't need to sign it anymore." msgstr "Nie musisz już go podpisywać." +#: packages/lib/utils/document-audit-logs.ts +msgid "You failed to validate a 2FA token for the document" +msgstr "" + #. placeholder {0}: data.organisationName #: apps/remix/app/routes/_unauthenticated+/organisation.invite.$token.tsx msgid "You have accepted an invitation from <0>{0}0> to join their organisation." @@ -11543,6 +11745,10 @@ msgstr "Grupa zespołu została zaktualizowana." msgid "You have verified your email address for <0>{0}0>." msgstr "Adres e-mail zespołu <0>{0}0> został zweryfikowany." +#: packages/lib/utils/document-audit-logs.ts +msgid "You moved the document to team" +msgstr "" + #: apps/remix/app/components/dialogs/organisation-delete-dialog.tsx #: apps/remix/app/components/dialogs/team-delete-dialog.tsx #: apps/remix/app/components/dialogs/token-delete-dialog.tsx @@ -11584,6 +11790,97 @@ msgstr "Musisz być zalogowany, aby zobaczyć tę stronę." msgid "You need to setup 2FA to mark this document as viewed." msgstr "Musisz skonfigurować weryfikację dwuetapową, aby oznaczyć dokument jako przeczytany." +#: packages/lib/utils/document-audit-logs.ts +msgid "You opened the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You prefilled a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You rejected the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You removed a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You removed a recipient" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You requested a 2FA token for the document" +msgstr "" + +#. placeholder {0}: data.recipientEmail +#: packages/lib/utils/document-audit-logs.ts +msgid "You resent an email to {0}" +msgstr "" + +#. placeholder {0}: data.recipientEmail +#: packages/lib/utils/document-audit-logs.ts +msgid "You sent an email to {0}" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You sent the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You signed a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You signed the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You unsigned a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You updated a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You updated a recipient" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You updated the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You updated the document access auth requirements" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You updated the document external ID" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You updated the document signing auth requirements" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You updated the document title" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You updated the document visibility" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You validated a 2FA token for the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +#: packages/lib/utils/document-audit-logs.ts +msgid "You viewed the document" +msgstr "" + #: apps/remix/app/components/dialogs/admin-organisation-create-dialog.tsx msgid "You will need to configure any claims or subscription after creating this organisation" msgstr "Po utworzeniu organizacji musisz skonfigurować subskrypcję" @@ -11642,6 +11939,11 @@ msgstr "Zbiorcza wysyłka szablonu „{templateName}” została zakończona." msgid "Your current {currentProductName} plan is past due. Please update your payment information." msgstr "Twój plan {currentProductName} jest nieopłacony. Zaktualizuj informacje płatnicze." +#: apps/remix/app/components/forms/subscription-claim-form.tsx +#: apps/remix/app/routes/_authenticated+/admin+/organisations.$id.tsx +msgid "Your current license does not include these features." +msgstr "" + #: apps/remix/app/routes/_authenticated+/o.$orgUrl.support.tsx msgid "Your current plan includes the following support channels:" msgstr "Twój obecny plan obejmuje następujące kanały wsparcia:" diff --git a/packages/lib/translations/pt-BR/web.po b/packages/lib/translations/pt-BR/web.po index ccc34db46..265046616 100644 --- a/packages/lib/translations/pt-BR/web.po +++ b/packages/lib/translations/pt-BR/web.po @@ -17,6 +17,11 @@ msgstr "" msgid ".PDF documents accepted (max {APP_DOCUMENT_UPLOAD_SIZE_LIMIT}MB)" msgstr "Documentos .PDF aceitos (máx. {APP_DOCUMENT_UPLOAD_SIZE_LIMIT}MB)" +#. placeholder {0}: invalidEmails[0].value +#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx +msgid "\"{0}\" is not a valid email address." +msgstr "" + #. placeholder {0}: field.customText #. placeholder {1}: timezone || '' #: apps/remix/app/components/general/document-signing/document-signing-date-field.tsx @@ -96,6 +101,17 @@ msgstr "{0, plural, one {# campo} other {# campos}}" msgid "{0, plural, one {# folder} other {# folders}}" msgstr "{0, plural, one {# pasta} other {# pastas}}" +#. placeholder {0}: result.deletedCount +#. placeholder {1}: result.failedIds.length +#: apps/remix/app/components/dialogs/envelopes-bulk-delete-dialog.tsx +msgid "{0, plural, one {# item deleted.} other {# items deleted.}} {1, plural, one {# item could not be deleted.} other {# items could not be deleted.}}" +msgstr "" + +#. placeholder {0}: result.deletedCount +#: apps/remix/app/components/dialogs/envelopes-bulk-delete-dialog.tsx +msgid "{0, plural, one {# item has been deleted.} other {# items have been deleted.}}" +msgstr "" + #. placeholder {0}: detectedRecipients.length #: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx msgid "{0, plural, one {# recipient have been added from AI detection.} other {# recipients have been added from AI detection.}}" @@ -238,17 +254,6 @@ msgstr "{0} convidou você para {recipientActionVerb} o documento \"{1}\"." msgid "{0} invited you to {recipientActionVerb} a document" msgstr "{0} convidou você para {recipientActionVerb} um documento" -#. placeholder {0}: result.deletedCount -#. placeholder {1}: result.failedIds.length -#: apps/remix/app/components/dialogs/envelopes-bulk-delete-dialog.tsx -msgid "{0} item(s) deleted. {1} item(s) could not be deleted." -msgstr "" - -#. placeholder {0}: result.deletedCount -#: apps/remix/app/components/dialogs/envelopes-bulk-delete-dialog.tsx -msgid "{0} item(s) have been deleted." -msgstr "" - #. placeholder {0}: remaining.documents #. placeholder {1}: quota.documents #: apps/remix/app/components/general/document/document-upload-button-legacy.tsx @@ -341,110 +346,6 @@ msgstr "{MAXIMUM_PASSKEYS, plural, one {Você não pode ter mais de # passkey.} msgid "{maximumEnvelopeItemCount, plural, one {You cannot upload more than # item per envelope.} other {You cannot upload more than # items per envelope.}}" msgstr "{maximumEnvelopeItemCount, plural, one {Você não pode enviar mais de # item por envelope.} other {Você não pode enviar mais de # itens por envelope.}}" -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} added a field" -msgstr "{prefix} adicionou um campo" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} added a recipient" -msgstr "{prefix} adicionou um destinatário" - -#. placeholder {0}: data.envelopeItemTitle -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} created an envelope item with title {0}" -msgstr "{prefix} criou um item de envelope com o título {0}" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} created the document" -msgstr "{prefix} criou o documento" - -#. placeholder {0}: data.envelopeItemTitle -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} deleted an envelope item with title {0}" -msgstr "{prefix} excluiu um item de envelope com o título {0}" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} deleted the document" -msgstr "{prefix} excluiu o documento" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} moved the document to team" -msgstr "{prefix} moveu o documento para a equipe" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} opened the document" -msgstr "{prefix} abriu o documento" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} prefilled a field" -msgstr "{prefix} preencheu previamente um campo" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} removed a field" -msgstr "{prefix} removeu um campo" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} removed a recipient" -msgstr "{prefix} removeu um destinatário" - -#. placeholder {0}: data.recipientEmail -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} resent an email to {0}" -msgstr "{prefix} reenviou um e-mail para {0}" - -#. placeholder {0}: data.recipientEmail -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} sent an email to {0}" -msgstr "{prefix} enviou um e-mail para {0}" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} sent the document" -msgstr "{prefix} enviou o documento" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} signed a field" -msgstr "{prefix} assinou um campo" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} unsigned a field" -msgstr "{prefix} removeu a assinatura de um campo" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} updated a field" -msgstr "{prefix} atualizou um campo" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} updated a recipient" -msgstr "{prefix} atualizou um destinatário" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} updated the document" -msgstr "{prefix} atualizou o documento" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} updated the document access auth requirements" -msgstr "{prefix} atualizou os requisitos de autenticação de acesso ao documento" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} updated the document external ID" -msgstr "{prefix} atualizou o ID externo do documento" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} updated the document signing auth requirements" -msgstr "{prefix} atualizou os requisitos de autenticação de assinatura do documento" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} updated the document title" -msgstr "{prefix} atualizou o título do documento" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} updated the document visibility" -msgstr "{prefix} atualizou a visibilidade do documento" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} viewed the document" -msgstr "{prefix} visualizou o documento" - #: apps/remix/app/components/general/direct-template/direct-template-page.tsx msgid "{recipientActionVerb} document" msgstr "{recipientActionVerb} documento" @@ -505,47 +406,148 @@ msgstr "{teamName} convidou você para {0}<0/>\"{documentName}\"" msgid "{teamName} has invited you to {action} {documentName}" msgstr "{teamName} convidou você para {action} {documentName}" +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} added a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} added a recipient" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} approved the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} CC'd the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} completed their task" +msgstr "" + +#. placeholder {0}: data.envelopeItemTitle +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} created an envelope item with title {0}" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} created the document" +msgstr "" + +#. placeholder {0}: data.envelopeItemTitle +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} deleted an envelope item with title {0}" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} deleted the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} failed to validate a 2FA token for the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} moved the document to team" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} opened the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} prefilled a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} rejected the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} removed a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} removed a recipient" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} requested a 2FA token for the document" +msgstr "" + +#. placeholder {0}: data.recipientEmail +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} resent an email to {0}" +msgstr "" + +#. placeholder {0}: data.recipientEmail +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} sent an email to {0}" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} sent the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} signed a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} signed the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} unsigned a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} updated a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} updated a recipient" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} updated the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} updated the document access auth requirements" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} updated the document external ID" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} updated the document signing auth requirements" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} updated the document title" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} updated the document visibility" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} validated a 2FA token for the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} viewed the document" +msgstr "" + #: apps/remix/app/components/tables/internal-audit-log-table.tsx #: packages/lib/server-only/pdf/render-audit-logs.ts msgid "{userAgent}" msgstr "{userAgent}" -#: packages/lib/utils/document-audit-logs.ts -msgid "{userName} approved the document" -msgstr "{userName} aprovou o documento" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{userName} CC'd the document" -msgstr "{userName} recebeu uma cópia do documento" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{userName} completed their task" -msgstr "{userName} completou sua tarefa" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{userName} failed to validate a 2FA token for the document" -msgstr "{userName} falhou ao validar um token 2FA para o documento" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{userName} rejected the document" -msgstr "{userName} rejeitou o documento" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{userName} requested a 2FA token for the document" -msgstr "{userName} solicitou um token 2FA para o documento" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{userName} signed the document" -msgstr "{userName} assinou o documento" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{userName} validated a 2FA token for the document" -msgstr "{userName} validou um token 2FA para o documento" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{userName} viewed the document" -msgstr "{userName} visualizou o documento" - #: apps/remix/app/components/dialogs/sign-field-checkbox-dialog.tsx msgid "{validationLength, plural, one {Select at least # option} other {Select at least # options}}" msgstr "{validationLength, plural, one {Selecione pelo menos # opção} other {Selecione pelo menos # opções}}" @@ -1079,6 +1081,7 @@ msgstr "Ações" msgid "Active" msgstr "Ativo" +#: apps/remix/app/components/general/admin-license-card.tsx #: apps/remix/app/components/tables/user-billing-organisations-table.tsx msgctxt "Subscription status" msgid "Active" @@ -1253,6 +1256,10 @@ msgstr "Adicionar destinatários" msgid "Add Recipients" msgstr "Adicionar Destinatários" +#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx +msgid "Add recipients to your document" +msgstr "" + #: apps/remix/app/components/embed/authoring/configure-document-recipients.tsx #: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx #: packages/ui/primitives/document-flow/add-signers.tsx @@ -2192,6 +2199,10 @@ msgstr "Ao usar o recurso de assinatura eletrônica, você consente em realizar msgid "Can prepare" msgstr "Pode preparar" +#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx +msgid "Can't find someone?" +msgstr "" + #: apps/remix/app/components/dialogs/admin-organisation-create-dialog.tsx #: apps/remix/app/components/dialogs/admin-organisation-member-update-dialog.tsx #: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx @@ -2354,7 +2365,9 @@ msgstr "Gráficos" #: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx #: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-drag-drop.tsx #: packages/lib/utils/fields.ts +#: packages/ui/primitives/document-flow/add-fields.tsx #: packages/ui/primitives/document-flow/types.ts +#: packages/ui/primitives/template-flow/add-template-fields.tsx msgid "Checkbox" msgstr "Caixa de seleção" @@ -2511,7 +2524,6 @@ msgstr "Compare todos os planos e recursos em detalhes" #: apps/remix/app/components/embed/embed-document-signing-page-v1.tsx #: apps/remix/app/components/embed/embed-document-signing-page-v1.tsx #: apps/remix/app/components/embed/multisign/multi-sign-document-signing-view.tsx -#: apps/remix/app/components/forms/signup.tsx #: apps/remix/app/components/general/document-signing/document-signing-complete-dialog.tsx #: apps/remix/app/components/general/document-signing/document-signing-complete-dialog.tsx msgid "Complete" @@ -2859,6 +2871,7 @@ msgstr "Criar um ticket de suporte" msgid "Create a team to collaborate with your team members." msgstr "Crie uma equipe para colaborar com os membros da sua equipe." +#: apps/remix/app/components/forms/signup.tsx #: apps/remix/app/routes/_unauthenticated+/organisation.invite.$token.tsx #: packages/email/template-components/template-document-self-signed.tsx msgid "Create account" @@ -3557,6 +3570,10 @@ msgstr "Você deseja excluir este modelo?" msgid "Do you want to duplicate this template?" msgstr "Você deseja duplicar este modelo?" +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "Documenso License" +msgstr "" + #: apps/remix/app/components/dialogs/account-delete-dialog.tsx msgid "Documenso will delete <0>all of your documents0>, along with all of your completed documents, signatures, and all other resources belonging to your Account." msgstr "A Documenso excluirá <0>todos os seus documentos0>, juntamente com todos os seus documentos concluídos, assinaturas e todos os outros recursos pertencentes à sua conta." @@ -3624,6 +3641,7 @@ msgstr "Documento Cancelado" msgid "Document completed" msgstr "Documento concluído" +#: packages/lib/utils/document-audit-logs.ts #: packages/lib/utils/document-audit-logs.ts #: packages/lib/utils/document-audit-logs.ts msgctxt "Audit log format" @@ -3764,11 +3782,6 @@ msgctxt "Audit log format" msgid "Document opened" msgstr "Documento aberto" -#: packages/lib/utils/document-audit-logs.ts -msgctxt "Audit log format" -msgid "Document ownership delegated" -msgstr "" - #: apps/remix/app/components/general/document/document-status.tsx msgid "Document pending" msgstr "Documento pendente" @@ -4265,8 +4278,9 @@ msgid "Email preferences updated" msgstr "Preferências de e-mail atualizadas" #: packages/lib/utils/document-audit-logs.ts +msgctxt "Audit log format" msgid "Email resent" -msgstr "E-mail reenviado" +msgstr "" #: apps/remix/app/components/dialogs/envelope-distribute-dialog.tsx #: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx @@ -4276,8 +4290,9 @@ msgid "Email Sender" msgstr "Remetente do E-mail" #: packages/lib/utils/document-audit-logs.ts +msgctxt "Audit log format" msgid "Email sent" -msgstr "E-mail enviado" +msgstr "" #: apps/remix/app/routes/_unauthenticated+/check-email.tsx msgid "Email sent!" @@ -4521,12 +4536,14 @@ msgid "Envelope Item Count" msgstr "Contagem de Itens do Envelope" #: packages/lib/utils/document-audit-logs.ts +msgctxt "Audit log format" msgid "Envelope item created" -msgstr "Item do envelope criado" +msgstr "" #: packages/lib/utils/document-audit-logs.ts +msgctxt "Audit log format" msgid "Envelope item deleted" -msgstr "Item do envelope excluído" +msgstr "" #: apps/remix/app/components/dialogs/envelope-redistribute-dialog.tsx msgid "Envelope resent" @@ -4664,6 +4681,15 @@ msgstr "Tempo limite excedido" msgid "Expired" msgstr "Expirado" +#: apps/remix/app/components/general/admin-license-card.tsx +msgctxt "Subscription status" +msgid "Expired" +msgstr "" + +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "Expires" +msgstr "" + #. placeholder {0}: DateTime.fromMillis(Math.max(millisecondsRemaining, 0)).toFormat( 'mm:ss', ) #: apps/remix/app/components/general/document-signing/access-auth-2fa-form.tsx msgid "Expires in {0}" @@ -4737,6 +4763,10 @@ msgstr "Falha ao salvar configurações." msgid "Failed to sign out all sessions" msgstr "Falha ao sair de todas as sessões" +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "Failed to sync license" +msgstr "" + #: apps/remix/app/routes/_authenticated+/settings+/security.linked-accounts.tsx msgid "Failed to unlink account" msgstr "Falha ao desvincular conta" @@ -4775,6 +4805,10 @@ msgstr "Falhou: {failedCount}" msgid "Feature Flags" msgstr "Sinalizadores de Recurso" +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "Features" +msgstr "" + #: packages/ui/primitives/document-flow/field-items-advanced-settings/text-field.tsx msgid "Field character limit" msgstr "Limite de caracteres do campo" @@ -5330,7 +5364,9 @@ msgstr "Reivindicação de assinatura herdada" #: apps/remix/app/components/general/document-signing/document-signing-initials-field.tsx #: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-drag-drop.tsx #: packages/lib/utils/fields.ts +#: packages/ui/primitives/document-flow/add-fields.tsx #: packages/ui/primitives/document-flow/types.ts +#: packages/ui/primitives/template-flow/add-template-fields.tsx msgid "Initials" msgstr "Iniciais" @@ -5358,11 +5394,20 @@ msgstr "Código inválido. Por favor, tente novamente." msgid "Invalid domains" msgstr "Domínios inválidos" +#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx #: packages/lib/types/recipient.ts #: packages/ui/primitives/document-flow/add-signers.types.ts msgid "Invalid email" msgstr "E-mail inválido" +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "Invalid License Key" +msgstr "" + +#: apps/remix/app/components/general/admin-license-status-banner.tsx +msgid "Invalid License Type - Your Documenso instance is using features that are not part of your license." +msgstr "" + #: apps/remix/app/routes/_unauthenticated+/team.verify.email.$token.tsx msgid "Invalid link" msgstr "Link inválido" @@ -5414,6 +5459,7 @@ msgid "Invite Members" msgstr "Convidar Membros" #: apps/remix/app/components/dialogs/organisation-member-invite-dialog.tsx +#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx msgid "Invite organisation members" msgstr "Convidar membros da organização" @@ -5421,6 +5467,10 @@ msgstr "Convidar membros da organização" msgid "Invite team members to collaborate" msgstr "Convidar membros da equipe para colaborar" +#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx +msgid "Invite them to the organisation first" +msgstr "" + #: apps/remix/app/components/tables/organisation-member-invites-table.tsx msgid "Invited At" msgstr "Convidado em" @@ -5565,6 +5615,12 @@ msgstr "Último uso" msgid "Last Year" msgstr "Ano Passado" +#: apps/remix/app/components/forms/subscription-claim-form.tsx +#: apps/remix/app/components/general/admin-license-card.tsx +#: apps/remix/app/routes/_authenticated+/admin+/organisations.$id.tsx +msgid "Learn more" +msgstr "" + #: apps/remix/app/components/dialogs/organisation-leave-dialog.tsx #: apps/remix/app/components/tables/user-organisations-table.tsx msgid "Leave" @@ -5597,6 +5653,27 @@ msgstr "Espaçamento entre letras" msgid "Letter Spacing" msgstr "Espaçamento entre Letras" +#: apps/remix/app/components/general/admin-license-card.tsx +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "License" +msgstr "" + +#: apps/remix/app/components/general/admin-license-status-banner.tsx +msgid "License Expired - Please renew your license to continue using enterprise features." +msgstr "" + +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "License Key" +msgstr "" + +#: apps/remix/app/components/general/admin-license-status-banner.tsx +msgid "License Payment Overdue - Please update your payment to avoid service disruptions." +msgstr "" + +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "License synced" +msgstr "" + #: apps/remix/app/components/general/app-command-menu.tsx msgid "Light Mode" msgstr "Modo Claro" @@ -5622,8 +5699,9 @@ msgid "Link expires in 30 minutes." msgstr "O link expira em 30 minutos." #: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.public-profile.tsx +msgctxt "Action button to link template to public profile" msgid "Link template" -msgstr "Vincular modelo" +msgstr "" #: packages/email/templates/organisation-account-link-confirmation.tsx msgid "Link your Documenso account" @@ -5672,6 +5750,7 @@ msgstr "Carregando Documento..." msgid "Loading suggestions..." msgstr "Carregando sugestões..." +#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx #: apps/remix/app/components/general/document/document-page-view-recent-activity.tsx msgid "Loading..." msgstr "Carregando..." @@ -5949,6 +6028,10 @@ msgstr "Meio" msgid "Min" msgstr "Mín" +#: apps/remix/app/components/general/admin-license-status-banner.tsx +msgid "Missing License - Your Documenso instance is using features that require a license." +msgstr "" + #: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page.tsx msgid "Missing Recipients" msgstr "Destinatários Ausentes" @@ -6022,6 +6105,7 @@ msgid "My Folder" msgstr "Minha Pasta" #: apps/remix/app/components/tables/internal-audit-log-table.tsx +#: apps/remix/app/routes/_internal+/[__htmltopdf]+/certificate.tsx #: packages/lib/server-only/pdf/render-audit-logs.ts msgid "N/A" msgstr "N/A" @@ -6140,6 +6224,10 @@ msgstr "Nenhum documento encontrado" msgid "No email detected" msgstr "Nenhum e-mail detectado" +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "No features enabled" +msgstr "" + #: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx msgid "No fields were detected in your document." msgstr "Nenhum campo foi detectado em seu documento." @@ -6160,6 +6248,18 @@ msgstr "Nenhuma pasta encontrada correspondente a \"{searchTerm}\"" msgid "No further action is required from you at this time." msgstr "Nenhuma ação adicional é necessária de sua parte neste momento." +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "No License Configured" +msgstr "" + +#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx +msgid "No members selected" +msgstr "" + +#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx +msgid "No organisation members available" +msgstr "" + #: apps/remix/app/routes/_authenticated+/dashboard.tsx msgid "No organisations found" msgstr "Nenhuma organização encontrada" @@ -6660,6 +6760,7 @@ msgstr "Senha atualizada" msgid "Password updated!" msgstr "Senha atualizada!" +#: apps/remix/app/components/general/admin-license-card.tsx #: apps/remix/app/components/tables/user-billing-organisations-table.tsx msgctxt "Subscription status" msgid "Past Due" @@ -6930,6 +7031,10 @@ msgstr "Por favor, revise o documento antes de assinar." msgid "Please select a PDF file" msgstr "Por favor, selecione um arquivo PDF" +#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx +msgid "Please select at least one member to add to the team." +msgstr "" + #: apps/remix/app/components/general/document-signing/access-auth-2fa-form.tsx msgid "Please select how you'd like to receive your verification code." msgstr "Por favor, selecione como você gostaria de receber seu código de verificação." @@ -7086,7 +7191,9 @@ msgstr "Ações Rápidas" #: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx #: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-drag-drop.tsx #: packages/lib/utils/fields.ts +#: packages/ui/primitives/document-flow/add-fields.tsx #: packages/ui/primitives/document-flow/types.ts +#: packages/ui/primitives/template-flow/add-template-fields.tsx msgid "Radio" msgstr "Radio" @@ -7171,11 +7278,6 @@ msgstr "Documentos recentes" #: apps/remix/app/components/general/template/template-page-view-documents-table.tsx #: apps/remix/app/components/tables/documents-table.tsx #: apps/remix/app/components/tables/inbox-table.tsx -#: packages/lib/utils/document-audit-logs.ts -#: packages/lib/utils/document-audit-logs.ts -#: packages/lib/utils/document-audit-logs.ts -#: packages/lib/utils/document-audit-logs.ts -#: packages/lib/utils/document-audit-logs.ts msgid "Recipient" msgstr "Destinatário" @@ -7196,14 +7298,42 @@ msgstr "Destinatário {0}" msgid "Recipient action authentication" msgstr "Autenticação de ação do destinatário" +#: packages/lib/utils/document-audit-logs.ts +msgid "Recipient approved the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "Recipient CC'd the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "Recipient completed their task" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "Recipient failed to validate a 2FA token for the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "Recipient rejected the document" +msgstr "" + #: packages/ui/components/document/document-email-checkboxes.tsx msgid "Recipient removed email" msgstr "E-mail de destinatário removido" +#: packages/lib/utils/document-audit-logs.ts +msgid "Recipient requested a 2FA token for the document" +msgstr "" + #: packages/ui/components/document/document-email-checkboxes.tsx msgid "Recipient signed email" msgstr "E-mail de destinatário assinado" +#: packages/lib/utils/document-audit-logs.ts +msgid "Recipient signed the document" +msgstr "" + #: packages/ui/components/document/document-email-checkboxes.tsx msgid "Recipient signing request email" msgstr "E-mail de solicitação de assinatura do destinatário" @@ -7212,10 +7342,20 @@ msgstr "E-mail de solicitação de assinatura do destinatário" msgid "Recipient updated" msgstr "Destinatário atualizado" +#: packages/lib/utils/document-audit-logs.ts +msgid "Recipient validated a 2FA token for the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "Recipient viewed the document" +msgstr "" + #: apps/remix/app/components/embed/authoring/configure-document-recipients.tsx #: apps/remix/app/components/general/document/document-page-view-recipients.tsx +#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx #: apps/remix/app/components/general/template/template-page-view-recipients.tsx #: apps/remix/app/routes/_authenticated+/admin+/documents.$id.tsx +#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/documents.$id.logs.tsx #: apps/remix/app/routes/_internal+/[__htmltopdf]+/audit-log.tsx #: packages/lib/server-only/pdf/render-audit-logs.ts msgid "Recipients" @@ -7720,6 +7860,10 @@ msgstr "Segurança" msgid "Security activity" msgstr "Atividade de segurança" +#: apps/remix/app/components/general/admin-license-status-banner.tsx +msgid "See Documentation" +msgstr "" + #: apps/remix/app/routes/_authenticated+/admin+/documents.$id.tsx msgid "See the background jobs tab for the status" msgstr "Veja a aba de trabalhos em segundo plano para o status" @@ -7848,15 +7992,18 @@ msgstr "Selecionar Opção" msgid "Select Options" msgstr "" +#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx +msgid "Select or add recipients" +msgstr "" + +#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx +msgid "Select or enter email address" +msgstr "" + #: apps/remix/app/components/general/document-signing/document-signing-auth-passkey.tsx msgid "Select passkey" msgstr "Selecionar passkey" -#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx -#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx -msgid "Select recipients" -msgstr "" - #: apps/remix/app/components/tables/documents-table.tsx #: apps/remix/app/components/tables/templates-table.tsx msgid "Select row" @@ -8212,6 +8359,7 @@ msgstr "Inscrever-se com OIDC" #: packages/lib/utils/fields.ts #: packages/ui/primitives/document-flow/add-fields.tsx #: packages/ui/primitives/document-flow/types.ts +#: packages/ui/primitives/field-selector.tsx #: packages/ui/primitives/template-flow/add-template-fields.tsx msgid "Signature" msgstr "Assinatura" @@ -8676,10 +8824,12 @@ msgstr "Sincronizar Domínios de E-mail" msgid "Sync failed, changes not saved" msgstr "Falha na sincronização, alterações não salvas" -#: packages/lib/utils/document-audit-logs.ts -msgid "System auto inserted fields" -msgstr "Campos inseridos automaticamente pelo sistema" +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "Sync license from server" +msgstr "" +#: packages/lib/utils/document-audit-logs.ts +#: packages/lib/utils/document-audit-logs.ts #: packages/lib/utils/document-audit-logs.ts msgctxt "Audit log format" msgid "System auto inserted fields" @@ -9070,6 +9220,7 @@ msgstr "O proprietário do documento foi notificado sobre sua decisão. Eles pod #. placeholder {0}: data.delegatedOwnerName || data.delegatedOwnerEmail #. placeholder {1}: data.teamName #: packages/lib/utils/document-audit-logs.ts +msgctxt "Audit log format" msgid "The document ownership was delegated to {0} on behalf of {1}" msgstr "" @@ -9691,6 +9842,10 @@ msgstr "Para {0} este {1}, você precisa estar logado." msgid "To accept this invitation you must create an account." msgstr "Para aceitar este convite, você deve criar uma conta." +#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx +msgid "To add members to this team, you must first add them to the organisation." +msgstr "" + #: apps/remix/app/components/dialogs/team-member-create-dialog.tsx msgid "To be able to add members to a team, you must first add them to the organisation. For more information, please see the <0>documentation0>." msgstr "Para poder adicionar membros a uma equipe, você deve primeiro adicioná-los à organização. Para mais informações, consulte a <0>documentação0>." @@ -9881,6 +10036,10 @@ msgstr "Digitar" msgid "Type a command or search..." msgstr "Digite um comando ou pesquise..." +#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx +msgid "Type an email address to add a recipient" +msgstr "" + #: packages/ui/primitives/signature-pad/signature-pad-type.tsx msgid "Type your signature" msgstr "Digite sua assinatura" @@ -10367,10 +10526,6 @@ msgstr "Falha na validação" msgid "Value" msgstr "Valor" -#: packages/lib/types/field-meta.ts -msgid "Value must be a number" -msgstr "O valor deve ser um número" - #: packages/email/template-components/template-access-auth-2fa.tsx msgid "Verification Code Required" msgstr "Código de Verificação Necessário" @@ -11110,6 +11265,18 @@ msgstr "Sim" msgid "You" msgstr "Você" +#: packages/lib/utils/document-audit-logs.ts +msgid "You added a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You added a recipient" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You approved the document" +msgstr "" + #: apps/remix/app/components/general/document-signing/document-signing-complete-dialog.tsx msgid "You are about to complete approving the following document" msgstr "Você está prestes a concluir a aprovação do seguinte documento" @@ -11174,11 +11341,16 @@ msgid "You are about to remove the following email from <0>{0}0>." msgstr "Você está prestes a remover o seguinte e-mail de <0>{0}0>." #. placeholder {0}: organisation.name -#. placeholder {0}: team.name #: apps/remix/app/components/dialogs/organisation-group-delete-dialog.tsx -#: apps/remix/app/components/dialogs/team-group-delete-dialog.tsx +msgctxt "Removing group from organisation" msgid "You are about to remove the following group from <0>{0}0>." -msgstr "Você está prestes a remover o seguinte grupo de <0>{0}0>." +msgstr "" + +#. placeholder {0}: team.name +#: apps/remix/app/components/dialogs/team-group-delete-dialog.tsx +msgctxt "Removing group from team" +msgid "You are about to remove the following group from <0>{0}0>." +msgstr "" #. placeholder {0}: organisation.name #: apps/remix/app/components/dialogs/organisation-member-delete-dialog.tsx @@ -11356,6 +11528,23 @@ msgstr "Você não pode enviar documentos neste momento." msgid "You cannot upload encrypted PDFs." msgstr "" +#: packages/lib/utils/document-audit-logs.ts +msgid "You CC'd the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You completed your task" +msgstr "" + +#. placeholder {0}: data.envelopeItemTitle +#: packages/lib/utils/document-audit-logs.ts +msgid "You created an envelope item with title {0}" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You created the document" +msgstr "" + #: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.billing.tsx msgid "You currently have an inactive <0>{currentProductName}0> subscription" msgstr "Você tem atualmente uma assinatura <0>{currentProductName}0> inativa" @@ -11364,6 +11553,15 @@ msgstr "Você tem atualmente uma assinatura <0>{currentProductName}0> inativa" msgid "You currently have no access to any teams within this organisation. Please contact your organisation to request access." msgstr "Você atualmente não tem acesso a nenhuma equipe dentro desta organização. Por favor, entre em contato com sua organização para solicitar acesso." +#. placeholder {0}: data.envelopeItemTitle +#: packages/lib/utils/document-audit-logs.ts +msgid "You deleted an envelope item with title {0}" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You deleted the document" +msgstr "" + #: apps/remix/app/components/forms/token.tsx msgid "You do not have permission to create a token for this team." msgstr "" @@ -11376,6 +11574,10 @@ msgstr "Você não gerencia o faturamento de nenhuma organização." msgid "You don't need to sign it anymore." msgstr "Você não precisa mais assiná-lo." +#: packages/lib/utils/document-audit-logs.ts +msgid "You failed to validate a 2FA token for the document" +msgstr "" + #. placeholder {0}: data.organisationName #: apps/remix/app/routes/_unauthenticated+/organisation.invite.$token.tsx msgid "You have accepted an invitation from <0>{0}0> to join their organisation." @@ -11538,6 +11740,10 @@ msgstr "Você atualizou o grupo da equipe." msgid "You have verified your email address for <0>{0}0>." msgstr "Você verificou seu endereço de e-mail para <0>{0}0>." +#: packages/lib/utils/document-audit-logs.ts +msgid "You moved the document to team" +msgstr "" + #: apps/remix/app/components/dialogs/organisation-delete-dialog.tsx #: apps/remix/app/components/dialogs/team-delete-dialog.tsx #: apps/remix/app/components/dialogs/token-delete-dialog.tsx @@ -11579,6 +11785,97 @@ msgstr "Você precisa estar logado para visualizar esta página." msgid "You need to setup 2FA to mark this document as viewed." msgstr "Você precisa configurar a 2FA para marcar este documento como visualizado." +#: packages/lib/utils/document-audit-logs.ts +msgid "You opened the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You prefilled a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You rejected the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You removed a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You removed a recipient" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You requested a 2FA token for the document" +msgstr "" + +#. placeholder {0}: data.recipientEmail +#: packages/lib/utils/document-audit-logs.ts +msgid "You resent an email to {0}" +msgstr "" + +#. placeholder {0}: data.recipientEmail +#: packages/lib/utils/document-audit-logs.ts +msgid "You sent an email to {0}" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You sent the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You signed a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You signed the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You unsigned a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You updated a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You updated a recipient" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You updated the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You updated the document access auth requirements" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You updated the document external ID" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You updated the document signing auth requirements" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You updated the document title" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You updated the document visibility" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You validated a 2FA token for the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +#: packages/lib/utils/document-audit-logs.ts +msgid "You viewed the document" +msgstr "" + #: apps/remix/app/components/dialogs/admin-organisation-create-dialog.tsx msgid "You will need to configure any claims or subscription after creating this organisation" msgstr "Você precisará configurar quaisquer reivindicações ou assinaturas após criar esta organização" @@ -11637,6 +11934,11 @@ msgstr "Sua operação de envio em massa para o modelo \"{templateName}\" foi co msgid "Your current {currentProductName} plan is past due. Please update your payment information." msgstr "Seu plano atual {currentProductName} está vencido. Por favor, atualize suas informações de pagamento." +#: apps/remix/app/components/forms/subscription-claim-form.tsx +#: apps/remix/app/routes/_authenticated+/admin+/organisations.$id.tsx +msgid "Your current license does not include these features." +msgstr "" + #: apps/remix/app/routes/_authenticated+/o.$orgUrl.support.tsx msgid "Your current plan includes the following support channels:" msgstr "Seu plano atual inclui os seguintes canais de suporte:" diff --git a/packages/lib/translations/zh/web.po b/packages/lib/translations/zh/web.po index 43334bc5e..6d2da8615 100644 --- a/packages/lib/translations/zh/web.po +++ b/packages/lib/translations/zh/web.po @@ -22,6 +22,11 @@ msgstr "" msgid ".PDF documents accepted (max {APP_DOCUMENT_UPLOAD_SIZE_LIMIT}MB)" msgstr "仅接受 .PDF 文档(最大 {APP_DOCUMENT_UPLOAD_SIZE_LIMIT}MB)" +#. placeholder {0}: invalidEmails[0].value +#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx +msgid "\"{0}\" is not a valid email address." +msgstr "" + #. placeholder {0}: field.customText #. placeholder {1}: timezone || '' #: apps/remix/app/components/general/document-signing/document-signing-date-field.tsx @@ -101,6 +106,17 @@ msgstr "{0, plural, other {# 个字段}}" msgid "{0, plural, one {# folder} other {# folders}}" msgstr "{0, plural, other {# 个文件夹}}" +#. placeholder {0}: result.deletedCount +#. placeholder {1}: result.failedIds.length +#: apps/remix/app/components/dialogs/envelopes-bulk-delete-dialog.tsx +msgid "{0, plural, one {# item deleted.} other {# items deleted.}} {1, plural, one {# item could not be deleted.} other {# items could not be deleted.}}" +msgstr "" + +#. placeholder {0}: result.deletedCount +#: apps/remix/app/components/dialogs/envelopes-bulk-delete-dialog.tsx +msgid "{0, plural, one {# item has been deleted.} other {# items have been deleted.}}" +msgstr "" + #. placeholder {0}: detectedRecipients.length #: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx msgid "{0, plural, one {# recipient have been added from AI detection.} other {# recipients have been added from AI detection.}}" @@ -243,17 +259,6 @@ msgstr "{0} 已邀请您 {recipientActionVerb} 文档“{1}”。" msgid "{0} invited you to {recipientActionVerb} a document" msgstr "{0} 邀请您 {recipientActionVerb} 一个文档" -#. placeholder {0}: result.deletedCount -#. placeholder {1}: result.failedIds.length -#: apps/remix/app/components/dialogs/envelopes-bulk-delete-dialog.tsx -msgid "{0} item(s) deleted. {1} item(s) could not be deleted." -msgstr "" - -#. placeholder {0}: result.deletedCount -#: apps/remix/app/components/dialogs/envelopes-bulk-delete-dialog.tsx -msgid "{0} item(s) have been deleted." -msgstr "" - #. placeholder {0}: remaining.documents #. placeholder {1}: quota.documents #: apps/remix/app/components/general/document/document-upload-button-legacy.tsx @@ -346,110 +351,6 @@ msgstr "{MAXIMUM_PASSKEYS, plural, other {您不能拥有超过 # 个通行密 msgid "{maximumEnvelopeItemCount, plural, one {You cannot upload more than # item per envelope.} other {You cannot upload more than # items per envelope.}}" msgstr "{maximumEnvelopeItemCount, plural, other {每个信封最多只能上传 # 个项目。}}" -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} added a field" -msgstr "{prefix} 添加了一个字段" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} added a recipient" -msgstr "{prefix} 添加了一个收件人" - -#. placeholder {0}: data.envelopeItemTitle -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} created an envelope item with title {0}" -msgstr "{prefix} 创建了标题为 {0} 的信封条目" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} created the document" -msgstr "{prefix} 创建了文档" - -#. placeholder {0}: data.envelopeItemTitle -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} deleted an envelope item with title {0}" -msgstr "{prefix} 删除了标题为 {0} 的信封条目" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} deleted the document" -msgstr "{prefix} 删除了文档" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} moved the document to team" -msgstr "{prefix} 将文档移动到团队" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} opened the document" -msgstr "{prefix} 打开了文档" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} prefilled a field" -msgstr "{prefix} 预填充了一个字段" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} removed a field" -msgstr "{prefix} 删除了一个字段" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} removed a recipient" -msgstr "{prefix} 删除了一个收件人" - -#. placeholder {0}: data.recipientEmail -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} resent an email to {0}" -msgstr "{prefix} 重新向 {0} 发送了电子邮件" - -#. placeholder {0}: data.recipientEmail -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} sent an email to {0}" -msgstr "{prefix} 向 {0} 发送了电子邮件" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} sent the document" -msgstr "{prefix} 发送了文档" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} signed a field" -msgstr "{prefix} 签署了一个字段" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} unsigned a field" -msgstr "{prefix} 取消签署了一个字段" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} updated a field" -msgstr "{prefix} 更新了一个字段" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} updated a recipient" -msgstr "{prefix} 更新了一个收件人" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} updated the document" -msgstr "{prefix} 更新了文档" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} updated the document access auth requirements" -msgstr "{prefix} 更新了文档访问认证要求" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} updated the document external ID" -msgstr "{prefix} 更新了文档外部 ID" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} updated the document signing auth requirements" -msgstr "{prefix} 更新了文档签署认证要求" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} updated the document title" -msgstr "{prefix} 更新了文档标题" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} updated the document visibility" -msgstr "{prefix} 更新了文档可见性" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{prefix} viewed the document" -msgstr "{prefix} 查看了文档" - #: apps/remix/app/components/general/direct-template/direct-template-page.tsx msgid "{recipientActionVerb} document" msgstr "{recipientActionVerb} 文档" @@ -510,47 +411,148 @@ msgstr "{teamName} 已邀请您 {0}<0/>“{documentName}”" msgid "{teamName} has invited you to {action} {documentName}" msgstr "{teamName} 已邀请您 {action} {documentName}" +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} added a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} added a recipient" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} approved the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} CC'd the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} completed their task" +msgstr "" + +#. placeholder {0}: data.envelopeItemTitle +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} created an envelope item with title {0}" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} created the document" +msgstr "" + +#. placeholder {0}: data.envelopeItemTitle +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} deleted an envelope item with title {0}" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} deleted the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} failed to validate a 2FA token for the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} moved the document to team" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} opened the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} prefilled a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} rejected the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} removed a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} removed a recipient" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} requested a 2FA token for the document" +msgstr "" + +#. placeholder {0}: data.recipientEmail +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} resent an email to {0}" +msgstr "" + +#. placeholder {0}: data.recipientEmail +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} sent an email to {0}" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} sent the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} signed a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} signed the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} unsigned a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} updated a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} updated a recipient" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} updated the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} updated the document access auth requirements" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} updated the document external ID" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} updated the document signing auth requirements" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} updated the document title" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} updated the document visibility" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} validated a 2FA token for the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +#: packages/lib/utils/document-audit-logs.ts +msgid "{user} viewed the document" +msgstr "" + #: apps/remix/app/components/tables/internal-audit-log-table.tsx #: packages/lib/server-only/pdf/render-audit-logs.ts msgid "{userAgent}" msgstr "{userAgent}" -#: packages/lib/utils/document-audit-logs.ts -msgid "{userName} approved the document" -msgstr "{userName} 已审批该文档" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{userName} CC'd the document" -msgstr "{userName} 已抄送该文档" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{userName} completed their task" -msgstr "{userName} 已完成其任务" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{userName} failed to validate a 2FA token for the document" -msgstr "{userName} 验证文档 2FA 令牌失败" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{userName} rejected the document" -msgstr "{userName} 已拒签该文档" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{userName} requested a 2FA token for the document" -msgstr "{userName} 请求了文档的 2FA 令牌" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{userName} signed the document" -msgstr "{userName} 已签署该文档" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{userName} validated a 2FA token for the document" -msgstr "{userName} 验证了文档的 2FA 令牌" - -#: packages/lib/utils/document-audit-logs.ts -msgid "{userName} viewed the document" -msgstr "{userName} 已查看该文档" - #: apps/remix/app/components/dialogs/sign-field-checkbox-dialog.tsx msgid "{validationLength, plural, one {Select at least # option} other {Select at least # options}}" msgstr "{validationLength, plural, other {至少选择 # 个选项}}" @@ -1084,6 +1086,7 @@ msgstr "操作" msgid "Active" msgstr "启用" +#: apps/remix/app/components/general/admin-license-card.tsx #: apps/remix/app/components/tables/user-billing-organisations-table.tsx msgctxt "Subscription status" msgid "Active" @@ -1258,6 +1261,10 @@ msgstr "添加收件人" msgid "Add Recipients" msgstr "添加收件人" +#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx +msgid "Add recipients to your document" +msgstr "" + #: apps/remix/app/components/embed/authoring/configure-document-recipients.tsx #: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx #: packages/ui/primitives/document-flow/add-signers.tsx @@ -2197,6 +2204,10 @@ msgstr "使用电子签名功能,即表示你同意以电子方式进行交易 msgid "Can prepare" msgstr "可预填" +#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx +msgid "Can't find someone?" +msgstr "" + #: apps/remix/app/components/dialogs/admin-organisation-create-dialog.tsx #: apps/remix/app/components/dialogs/admin-organisation-member-update-dialog.tsx #: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx @@ -2359,7 +2370,9 @@ msgstr "图表" #: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx #: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-drag-drop.tsx #: packages/lib/utils/fields.ts +#: packages/ui/primitives/document-flow/add-fields.tsx #: packages/ui/primitives/document-flow/types.ts +#: packages/ui/primitives/template-flow/add-template-fields.tsx msgid "Checkbox" msgstr "复选框" @@ -2516,7 +2529,6 @@ msgstr "详细比较所有套餐和功能" #: apps/remix/app/components/embed/embed-document-signing-page-v1.tsx #: apps/remix/app/components/embed/embed-document-signing-page-v1.tsx #: apps/remix/app/components/embed/multisign/multi-sign-document-signing-view.tsx -#: apps/remix/app/components/forms/signup.tsx #: apps/remix/app/components/general/document-signing/document-signing-complete-dialog.tsx #: apps/remix/app/components/general/document-signing/document-signing-complete-dialog.tsx msgid "Complete" @@ -2864,6 +2876,7 @@ msgstr "创建支持工单" msgid "Create a team to collaborate with your team members." msgstr "创建一个团队,与团队成员协作。" +#: apps/remix/app/components/forms/signup.tsx #: apps/remix/app/routes/_unauthenticated+/organisation.invite.$token.tsx #: packages/email/template-components/template-document-self-signed.tsx msgid "Create account" @@ -3562,6 +3575,10 @@ msgstr "要删除此模板吗?" msgid "Do you want to duplicate this template?" msgstr "要复制此模板吗?" +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "Documenso License" +msgstr "" + #: apps/remix/app/components/dialogs/account-delete-dialog.tsx msgid "Documenso will delete <0>all of your documents0>, along with all of your completed documents, signatures, and all other resources belonging to your Account." msgstr "Documenso 将删除<0>你所有的文档0>,包括所有已完成的文档、签名以及属于你账号的其他所有资源。" @@ -3629,6 +3646,7 @@ msgstr "文档已取消" msgid "Document completed" msgstr "文档已完成" +#: packages/lib/utils/document-audit-logs.ts #: packages/lib/utils/document-audit-logs.ts #: packages/lib/utils/document-audit-logs.ts msgctxt "Audit log format" @@ -3769,11 +3787,6 @@ msgctxt "Audit log format" msgid "Document opened" msgstr "文档已打开" -#: packages/lib/utils/document-audit-logs.ts -msgctxt "Audit log format" -msgid "Document ownership delegated" -msgstr "文档所有权已被委派" - #: apps/remix/app/components/general/document/document-status.tsx msgid "Document pending" msgstr "文档待处理" @@ -4270,8 +4283,9 @@ msgid "Email preferences updated" msgstr "邮件偏好已更新" #: packages/lib/utils/document-audit-logs.ts +msgctxt "Audit log format" msgid "Email resent" -msgstr "邮件已重新发送" +msgstr "" #: apps/remix/app/components/dialogs/envelope-distribute-dialog.tsx #: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx @@ -4281,8 +4295,9 @@ msgid "Email Sender" msgstr "邮件发件人" #: packages/lib/utils/document-audit-logs.ts +msgctxt "Audit log format" msgid "Email sent" -msgstr "邮件已发送" +msgstr "" #: apps/remix/app/routes/_unauthenticated+/check-email.tsx msgid "Email sent!" @@ -4526,12 +4541,14 @@ msgid "Envelope Item Count" msgstr "信封条目数量" #: packages/lib/utils/document-audit-logs.ts +msgctxt "Audit log format" msgid "Envelope item created" -msgstr "信封条目已创建" +msgstr "" #: packages/lib/utils/document-audit-logs.ts +msgctxt "Audit log format" msgid "Envelope item deleted" -msgstr "信封条目已删除" +msgstr "" #: apps/remix/app/components/dialogs/envelope-redistribute-dialog.tsx msgid "Envelope resent" @@ -4669,6 +4686,15 @@ msgstr "超时" msgid "Expired" msgstr "已过期" +#: apps/remix/app/components/general/admin-license-card.tsx +msgctxt "Subscription status" +msgid "Expired" +msgstr "" + +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "Expires" +msgstr "" + #. placeholder {0}: DateTime.fromMillis(Math.max(millisecondsRemaining, 0)).toFormat( 'mm:ss', ) #: apps/remix/app/components/general/document-signing/access-auth-2fa-form.tsx msgid "Expires in {0}" @@ -4742,6 +4768,10 @@ msgstr "保存设置失败。" msgid "Failed to sign out all sessions" msgstr "注销所有会话失败" +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "Failed to sync license" +msgstr "" + #: apps/remix/app/routes/_authenticated+/settings+/security.linked-accounts.tsx msgid "Failed to unlink account" msgstr "取消关联账户失败" @@ -4780,6 +4810,10 @@ msgstr "失败:{failedCount}" msgid "Feature Flags" msgstr "功能开关" +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "Features" +msgstr "" + #: packages/ui/primitives/document-flow/field-items-advanced-settings/text-field.tsx msgid "Field character limit" msgstr "字段字符限制" @@ -5335,7 +5369,9 @@ msgstr "继承的订阅声明" #: apps/remix/app/components/general/document-signing/document-signing-initials-field.tsx #: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-drag-drop.tsx #: packages/lib/utils/fields.ts +#: packages/ui/primitives/document-flow/add-fields.tsx #: packages/ui/primitives/document-flow/types.ts +#: packages/ui/primitives/template-flow/add-template-fields.tsx msgid "Initials" msgstr "首字母缩写" @@ -5363,11 +5399,20 @@ msgstr "验证码无效。请重试。" msgid "Invalid domains" msgstr "无效的域名" +#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx #: packages/lib/types/recipient.ts #: packages/ui/primitives/document-flow/add-signers.types.ts msgid "Invalid email" msgstr "邮箱无效" +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "Invalid License Key" +msgstr "" + +#: apps/remix/app/components/general/admin-license-status-banner.tsx +msgid "Invalid License Type - Your Documenso instance is using features that are not part of your license." +msgstr "" + #: apps/remix/app/routes/_unauthenticated+/team.verify.email.$token.tsx msgid "Invalid link" msgstr "链接无效" @@ -5419,6 +5464,7 @@ msgid "Invite Members" msgstr "邀请成员" #: apps/remix/app/components/dialogs/organisation-member-invite-dialog.tsx +#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx msgid "Invite organisation members" msgstr "邀请组织成员" @@ -5426,6 +5472,10 @@ msgstr "邀请组织成员" msgid "Invite team members to collaborate" msgstr "邀请团队成员协作" +#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx +msgid "Invite them to the organisation first" +msgstr "" + #: apps/remix/app/components/tables/organisation-member-invites-table.tsx msgid "Invited At" msgstr "邀请时间" @@ -5570,6 +5620,12 @@ msgstr "上次使用" msgid "Last Year" msgstr "去年" +#: apps/remix/app/components/forms/subscription-claim-form.tsx +#: apps/remix/app/components/general/admin-license-card.tsx +#: apps/remix/app/routes/_authenticated+/admin+/organisations.$id.tsx +msgid "Learn more" +msgstr "" + #: apps/remix/app/components/dialogs/organisation-leave-dialog.tsx #: apps/remix/app/components/tables/user-organisations-table.tsx msgid "Leave" @@ -5602,6 +5658,27 @@ msgstr "字间距" msgid "Letter Spacing" msgstr "字间距" +#: apps/remix/app/components/general/admin-license-card.tsx +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "License" +msgstr "" + +#: apps/remix/app/components/general/admin-license-status-banner.tsx +msgid "License Expired - Please renew your license to continue using enterprise features." +msgstr "" + +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "License Key" +msgstr "" + +#: apps/remix/app/components/general/admin-license-status-banner.tsx +msgid "License Payment Overdue - Please update your payment to avoid service disruptions." +msgstr "" + +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "License synced" +msgstr "" + #: apps/remix/app/components/general/app-command-menu.tsx msgid "Light Mode" msgstr "浅色模式" @@ -5627,8 +5704,9 @@ msgid "Link expires in 30 minutes." msgstr "链接将在 30 分钟后失效。" #: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.public-profile.tsx +msgctxt "Action button to link template to public profile" msgid "Link template" -msgstr "链接模板" +msgstr "" #: packages/email/templates/organisation-account-link-confirmation.tsx msgid "Link your Documenso account" @@ -5677,6 +5755,7 @@ msgstr "正在加载文档..." msgid "Loading suggestions..." msgstr "正在加载建议…" +#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx #: apps/remix/app/components/general/document/document-page-view-recent-activity.tsx msgid "Loading..." msgstr "正在加载..." @@ -5954,6 +6033,10 @@ msgstr "垂直居中" msgid "Min" msgstr "最小值" +#: apps/remix/app/components/general/admin-license-status-banner.tsx +msgid "Missing License - Your Documenso instance is using features that require a license." +msgstr "" + #: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page.tsx msgid "Missing Recipients" msgstr "缺少收件人" @@ -6027,6 +6110,7 @@ msgid "My Folder" msgstr "我的文件夹" #: apps/remix/app/components/tables/internal-audit-log-table.tsx +#: apps/remix/app/routes/_internal+/[__htmltopdf]+/certificate.tsx #: packages/lib/server-only/pdf/render-audit-logs.ts msgid "N/A" msgstr "N/A" @@ -6145,6 +6229,10 @@ msgstr "未找到文档" msgid "No email detected" msgstr "未检测到电子邮件" +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "No features enabled" +msgstr "" + #: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx msgid "No fields were detected in your document." msgstr "在您的文档中未检测到任何字段。" @@ -6165,6 +6253,18 @@ msgstr "未找到与“{searchTerm}”匹配的文件夹" msgid "No further action is required from you at this time." msgstr "目前您无需再执行任何操作。" +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "No License Configured" +msgstr "" + +#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx +msgid "No members selected" +msgstr "" + +#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx +msgid "No organisation members available" +msgstr "" + #: apps/remix/app/routes/_authenticated+/dashboard.tsx msgid "No organisations found" msgstr "未找到组织" @@ -6665,6 +6765,7 @@ msgstr "密码已更新" msgid "Password updated!" msgstr "密码已更新!" +#: apps/remix/app/components/general/admin-license-card.tsx #: apps/remix/app/components/tables/user-billing-organisations-table.tsx msgctxt "Subscription status" msgid "Past Due" @@ -6935,6 +7036,10 @@ msgstr "签署前请先审阅文档。" msgid "Please select a PDF file" msgstr "请选择一个 PDF 文件" +#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx +msgid "Please select at least one member to add to the team." +msgstr "" + #: apps/remix/app/components/general/document-signing/access-auth-2fa-form.tsx msgid "Please select how you'd like to receive your verification code." msgstr "请选择您希望接收验证码的方式。" @@ -7091,7 +7196,9 @@ msgstr "快速操作" #: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx #: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-drag-drop.tsx #: packages/lib/utils/fields.ts +#: packages/ui/primitives/document-flow/add-fields.tsx #: packages/ui/primitives/document-flow/types.ts +#: packages/ui/primitives/template-flow/add-template-fields.tsx msgid "Radio" msgstr "单选" @@ -7176,11 +7283,6 @@ msgstr "最近文档" #: apps/remix/app/components/general/template/template-page-view-documents-table.tsx #: apps/remix/app/components/tables/documents-table.tsx #: apps/remix/app/components/tables/inbox-table.tsx -#: packages/lib/utils/document-audit-logs.ts -#: packages/lib/utils/document-audit-logs.ts -#: packages/lib/utils/document-audit-logs.ts -#: packages/lib/utils/document-audit-logs.ts -#: packages/lib/utils/document-audit-logs.ts msgid "Recipient" msgstr "收件人" @@ -7201,14 +7303,42 @@ msgstr "收件人 {0}" msgid "Recipient action authentication" msgstr "收件人操作认证" +#: packages/lib/utils/document-audit-logs.ts +msgid "Recipient approved the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "Recipient CC'd the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "Recipient completed their task" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "Recipient failed to validate a 2FA token for the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "Recipient rejected the document" +msgstr "" + #: packages/ui/components/document/document-email-checkboxes.tsx msgid "Recipient removed email" msgstr "收件人移除邮件" +#: packages/lib/utils/document-audit-logs.ts +msgid "Recipient requested a 2FA token for the document" +msgstr "" + #: packages/ui/components/document/document-email-checkboxes.tsx msgid "Recipient signed email" msgstr "收件人签署邮件" +#: packages/lib/utils/document-audit-logs.ts +msgid "Recipient signed the document" +msgstr "" + #: packages/ui/components/document/document-email-checkboxes.tsx msgid "Recipient signing request email" msgstr "收件人签署请求邮件" @@ -7217,10 +7347,20 @@ msgstr "收件人签署请求邮件" msgid "Recipient updated" msgstr "收件人已更新" +#: packages/lib/utils/document-audit-logs.ts +msgid "Recipient validated a 2FA token for the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "Recipient viewed the document" +msgstr "" + #: apps/remix/app/components/embed/authoring/configure-document-recipients.tsx #: apps/remix/app/components/general/document/document-page-view-recipients.tsx +#: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx #: apps/remix/app/components/general/template/template-page-view-recipients.tsx #: apps/remix/app/routes/_authenticated+/admin+/documents.$id.tsx +#: apps/remix/app/routes/_authenticated+/t.$teamUrl+/documents.$id.logs.tsx #: apps/remix/app/routes/_internal+/[__htmltopdf]+/audit-log.tsx #: packages/lib/server-only/pdf/render-audit-logs.ts msgid "Recipients" @@ -7725,6 +7865,10 @@ msgstr "安全" msgid "Security activity" msgstr "安全活动" +#: apps/remix/app/components/general/admin-license-status-banner.tsx +msgid "See Documentation" +msgstr "" + #: apps/remix/app/routes/_authenticated+/admin+/documents.$id.tsx msgid "See the background jobs tab for the status" msgstr "状态请查看后台作业选项卡" @@ -7853,15 +7997,18 @@ msgstr "选择选项" msgid "Select Options" msgstr "选择选项" +#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx +msgid "Select or add recipients" +msgstr "" + +#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx +msgid "Select or enter email address" +msgstr "" + #: apps/remix/app/components/general/document-signing/document-signing-auth-passkey.tsx msgid "Select passkey" msgstr "选择通行密钥" -#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx -#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx -msgid "Select recipients" -msgstr "选择收件人" - #: apps/remix/app/components/tables/documents-table.tsx #: apps/remix/app/components/tables/templates-table.tsx msgid "Select row" @@ -8217,6 +8364,7 @@ msgstr "使用 OIDC 注册" #: packages/lib/utils/fields.ts #: packages/ui/primitives/document-flow/add-fields.tsx #: packages/ui/primitives/document-flow/types.ts +#: packages/ui/primitives/field-selector.tsx #: packages/ui/primitives/template-flow/add-template-fields.tsx msgid "Signature" msgstr "签名" @@ -8681,10 +8829,12 @@ msgstr "同步邮箱域名" msgid "Sync failed, changes not saved" msgstr "同步失败,更改未保存" -#: packages/lib/utils/document-audit-logs.ts -msgid "System auto inserted fields" -msgstr "系统自动插入了字段" +#: apps/remix/app/components/general/admin-license-card.tsx +msgid "Sync license from server" +msgstr "" +#: packages/lib/utils/document-audit-logs.ts +#: packages/lib/utils/document-audit-logs.ts #: packages/lib/utils/document-audit-logs.ts msgctxt "Audit log format" msgid "System auto inserted fields" @@ -9075,8 +9225,9 @@ msgstr "文档所有者已收到您的决定通知。如有需要,他们可能 #. placeholder {0}: data.delegatedOwnerName || data.delegatedOwnerEmail #. placeholder {1}: data.teamName #: packages/lib/utils/document-audit-logs.ts +msgctxt "Audit log format" msgid "The document ownership was delegated to {0} on behalf of {1}" -msgstr "已代表 {1} 将该文档所有权委派给 {0}" +msgstr "" #: apps/remix/app/components/dialogs/template-use-dialog.tsx msgid "The document was created but could not be sent to recipients." @@ -9696,6 +9847,10 @@ msgstr "要{0}此{1},您需要先登录。" msgid "To accept this invitation you must create an account." msgstr "要接受此邀请,你必须创建一个账号。" +#: apps/remix/app/components/dialogs/team-member-create-dialog.tsx +msgid "To add members to this team, you must first add them to the organisation." +msgstr "" + #: apps/remix/app/components/dialogs/team-member-create-dialog.tsx msgid "To be able to add members to a team, you must first add them to the organisation. For more information, please see the <0>documentation0>." msgstr "要向团队添加成员,必须先将他们添加到组织中。更多信息请参阅<0>文档0>。" @@ -9886,6 +10041,10 @@ msgstr "键入" msgid "Type a command or search..." msgstr "输入命令或搜索..." +#: apps/remix/app/components/general/default-recipients-multiselect-combobox.tsx +msgid "Type an email address to add a recipient" +msgstr "" + #: packages/ui/primitives/signature-pad/signature-pad-type.tsx msgid "Type your signature" msgstr "输入您的签名" @@ -10372,10 +10531,6 @@ msgstr "验证失败" msgid "Value" msgstr "值" -#: packages/lib/types/field-meta.ts -msgid "Value must be a number" -msgstr "值必须为数字" - #: packages/email/template-components/template-access-auth-2fa.tsx msgid "Verification Code Required" msgstr "需要验证码" @@ -11115,6 +11270,18 @@ msgstr "是" msgid "You" msgstr "你" +#: packages/lib/utils/document-audit-logs.ts +msgid "You added a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You added a recipient" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You approved the document" +msgstr "" + #: apps/remix/app/components/general/document-signing/document-signing-complete-dialog.tsx msgid "You are about to complete approving the following document" msgstr "您即将完成以下文档的批准" @@ -11179,11 +11346,16 @@ msgid "You are about to remove the following email from <0>{0}0>." msgstr "您即将从 <0>{0}0> 中移除以下邮箱。" #. placeholder {0}: organisation.name -#. placeholder {0}: team.name #: apps/remix/app/components/dialogs/organisation-group-delete-dialog.tsx -#: apps/remix/app/components/dialogs/team-group-delete-dialog.tsx +msgctxt "Removing group from organisation" msgid "You are about to remove the following group from <0>{0}0>." -msgstr "您即将从 <0>{0}0> 中移除以下组。" +msgstr "" + +#. placeholder {0}: team.name +#: apps/remix/app/components/dialogs/team-group-delete-dialog.tsx +msgctxt "Removing group from team" +msgid "You are about to remove the following group from <0>{0}0>." +msgstr "" #. placeholder {0}: organisation.name #: apps/remix/app/components/dialogs/organisation-member-delete-dialog.tsx @@ -11361,6 +11533,23 @@ msgstr "您目前无法上传文档。" msgid "You cannot upload encrypted PDFs." msgstr "你无法上传已加密的 PDF。" +#: packages/lib/utils/document-audit-logs.ts +msgid "You CC'd the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You completed your task" +msgstr "" + +#. placeholder {0}: data.envelopeItemTitle +#: packages/lib/utils/document-audit-logs.ts +msgid "You created an envelope item with title {0}" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You created the document" +msgstr "" + #: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.billing.tsx msgid "You currently have an inactive <0>{currentProductName}0> subscription" msgstr "您当前有一个非激活的 <0>{currentProductName}0> 订阅" @@ -11369,6 +11558,15 @@ msgstr "您当前有一个非激活的 <0>{currentProductName}0> 订阅" msgid "You currently have no access to any teams within this organisation. Please contact your organisation to request access." msgstr "您当前对该组织内的任何团队都没有访问权限。请联系您的组织以申请访问。" +#. placeholder {0}: data.envelopeItemTitle +#: packages/lib/utils/document-audit-logs.ts +msgid "You deleted an envelope item with title {0}" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You deleted the document" +msgstr "" + #: apps/remix/app/components/forms/token.tsx msgid "You do not have permission to create a token for this team." msgstr "您没有权限为此团队创建令牌。" @@ -11381,6 +11579,10 @@ msgstr "您目前未为任何组织管理计费。" msgid "You don't need to sign it anymore." msgstr "您不再需要签署该文档。" +#: packages/lib/utils/document-audit-logs.ts +msgid "You failed to validate a 2FA token for the document" +msgstr "" + #. placeholder {0}: data.organisationName #: apps/remix/app/routes/_unauthenticated+/organisation.invite.$token.tsx msgid "You have accepted an invitation from <0>{0}0> to join their organisation." @@ -11543,6 +11745,10 @@ msgstr "您已更新该团队组。" msgid "You have verified your email address for <0>{0}0>." msgstr "你已验证在 <0>{0}0> 的邮箱地址。" +#: packages/lib/utils/document-audit-logs.ts +msgid "You moved the document to team" +msgstr "" + #: apps/remix/app/components/dialogs/organisation-delete-dialog.tsx #: apps/remix/app/components/dialogs/team-delete-dialog.tsx #: apps/remix/app/components/dialogs/token-delete-dialog.tsx @@ -11584,6 +11790,97 @@ msgstr "你需要登录才能查看此页面。" msgid "You need to setup 2FA to mark this document as viewed." msgstr "你需要设置双重验证才能将此文档标记为已查看。" +#: packages/lib/utils/document-audit-logs.ts +msgid "You opened the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You prefilled a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You rejected the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You removed a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You removed a recipient" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You requested a 2FA token for the document" +msgstr "" + +#. placeholder {0}: data.recipientEmail +#: packages/lib/utils/document-audit-logs.ts +msgid "You resent an email to {0}" +msgstr "" + +#. placeholder {0}: data.recipientEmail +#: packages/lib/utils/document-audit-logs.ts +msgid "You sent an email to {0}" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You sent the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You signed a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You signed the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You unsigned a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You updated a field" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You updated a recipient" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You updated the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You updated the document access auth requirements" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You updated the document external ID" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You updated the document signing auth requirements" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You updated the document title" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You updated the document visibility" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +msgid "You validated a 2FA token for the document" +msgstr "" + +#: packages/lib/utils/document-audit-logs.ts +#: packages/lib/utils/document-audit-logs.ts +msgid "You viewed the document" +msgstr "" + #: apps/remix/app/components/dialogs/admin-organisation-create-dialog.tsx msgid "You will need to configure any claims or subscription after creating this organisation" msgstr "创建此组织后,您需要配置相关声明或订阅" @@ -11642,6 +11939,11 @@ msgstr "您针对模板“{templateName}”的批量发送操作已完成。" msgid "Your current {currentProductName} plan is past due. Please update your payment information." msgstr "您当前的 {currentProductName} 套餐已逾期。请更新您的支付信息。" +#: apps/remix/app/components/forms/subscription-claim-form.tsx +#: apps/remix/app/routes/_authenticated+/admin+/organisations.$id.tsx +msgid "Your current license does not include these features." +msgstr "" + #: apps/remix/app/routes/_authenticated+/o.$orgUrl.support.tsx msgid "Your current plan includes the following support channels:" msgstr "您当前的套餐包含以下支持渠道:" From a5ef1d23e6c62a5de2bb12ee587f21d7fb97be7b Mon Sep 17 00:00:00 2001 From: Lucas Smith Date: Mon, 9 Feb 2026 17:35:22 +1100 Subject: [PATCH 06/33] feat: add team memberships section to admin user detail page (#2457) --- .../tables/admin-user-teams-table.tsx | 146 ++++++++++++++++++ .../_authenticated+/admin+/users.$id.tsx | 31 +++- .../server/admin-router/find-user-teams.ts | 107 +++++++++++++ .../admin-router/find-user-teams.types.ts | 31 ++++ packages/trpc/server/admin-router/router.ts | 2 + 5 files changed, 316 insertions(+), 1 deletion(-) create mode 100644 apps/remix/app/components/tables/admin-user-teams-table.tsx create mode 100644 packages/trpc/server/admin-router/find-user-teams.ts create mode 100644 packages/trpc/server/admin-router/find-user-teams.types.ts diff --git a/apps/remix/app/components/tables/admin-user-teams-table.tsx b/apps/remix/app/components/tables/admin-user-teams-table.tsx new file mode 100644 index 000000000..39eaaa5b4 --- /dev/null +++ b/apps/remix/app/components/tables/admin-user-teams-table.tsx @@ -0,0 +1,146 @@ +import { useMemo } from 'react'; + +import { useLingui } from '@lingui/react'; +import { useLingui as useLinguiMacro } from '@lingui/react/macro'; +import { Link, useSearchParams } from 'react-router'; + +import { useUpdateSearchParams } from '@documenso/lib/client-only/hooks/use-update-search-params'; +import { TEAM_MEMBER_ROLE_MAP } from '@documenso/lib/constants/teams-translations'; +import { ZUrlSearchParamsSchema } from '@documenso/lib/types/search-params'; +import type { TeamMemberRole } from '@documenso/prisma/generated/types'; +import { trpc } from '@documenso/trpc/react'; +import { Badge } from '@documenso/ui/primitives/badge'; +import type { DataTableColumnDef } from '@documenso/ui/primitives/data-table'; +import { DataTable } from '@documenso/ui/primitives/data-table'; +import { DataTablePagination } from '@documenso/ui/primitives/data-table-pagination'; +import { HoverCard, HoverCardContent, HoverCardTrigger } from '@documenso/ui/primitives/hover-card'; +import { Skeleton } from '@documenso/ui/primitives/skeleton'; +import { TableCell } from '@documenso/ui/primitives/table'; + +type AdminUserTeamsTableProps = { + userId: number; +}; + +export const AdminUserTeamsTable = ({ userId }: AdminUserTeamsTableProps) => { + const { i18n } = useLingui(); + const { t } = useLinguiMacro(); + + const [searchParams] = useSearchParams(); + const updateSearchParams = useUpdateSearchParams(); + + const parsedSearchParams = ZUrlSearchParamsSchema.parse(Object.fromEntries(searchParams ?? [])); + + const { data, isLoading, isLoadingError } = trpc.admin.user.findTeams.useQuery({ + userId, + query: parsedSearchParams.query, + page: parsedSearchParams.page, + perPage: parsedSearchParams.perPage, + }); + + const onPaginationChange = (page: number, perPage: number) => { + updateSearchParams({ + page, + perPage, + }); + }; + + const results = data ?? { + data: [], + perPage: 10, + currentPage: 1, + totalPages: 1, + }; + + const columns = useMemo(() => { + return [ + { + header: t`Team`, + accessorKey: 'name', + cell: ({ row }) => ( + + + {row.original.name} + + + + id + {row.original.id} + url + {row.original.url} + + + + ), + }, + { + header: t`Organisation`, + accessorKey: 'organisation', + cell: ({ row }) => ( + + {row.original.organisation.name} + + ), + }, + { + header: t`Role`, + accessorKey: 'teamRole', + cell: ({ row }) => ( + + {i18n._(TEAM_MEMBER_ROLE_MAP[row.original.teamRole as TeamMemberRole])} + + ), + }, + { + header: t`Created At`, + accessorKey: 'createdAt', + cell: ({ row }) => i18n.date(row.original.createdAt), + }, + ] satisfies DataTableColumnDef<(typeof results)['data'][number]>[]; + }, []); + + return ( + + + + + + + + + + + + + + > + ), + }} + > + {(table) => + table.getPageCount() > 1 ? ( + + ) : null + } + + ); +}; diff --git a/apps/remix/app/routes/_authenticated+/admin+/users.$id.tsx b/apps/remix/app/routes/_authenticated+/admin+/users.$id.tsx index 15a53d46b..42dc1978e 100644 --- a/apps/remix/app/routes/_authenticated+/admin+/users.$id.tsx +++ b/apps/remix/app/routes/_authenticated+/admin+/users.$id.tsx @@ -10,6 +10,12 @@ import type { z } from 'zod'; import { trpc } from '@documenso/trpc/react'; import type { TGetUserResponse } from '@documenso/trpc/server/admin-router/get-user.types'; import { ZUpdateUserRequestSchema } from '@documenso/trpc/server/admin-router/update-user.types'; +import { + Accordion, + AccordionContent, + AccordionItem, + AccordionTrigger, +} from '@documenso/ui/primitives/accordion'; import { Button } from '@documenso/ui/primitives/button'; import { Form, @@ -30,6 +36,7 @@ import { AdminUserEnableDialog } from '~/components/dialogs/admin-user-enable-di import { AdminUserResetTwoFactorDialog } from '~/components/dialogs/admin-user-reset-two-factor-dialog'; import { GenericErrorLayout } from '~/components/general/generic-error-layout'; import { AdminOrganisationsTable } from '~/components/tables/admin-organisations-table'; +import { AdminUserTeamsTable } from '~/components/tables/admin-user-teams-table'; import { MultiSelectRoleCombobox } from '../../../components/general/multiselect-role-combobox'; @@ -197,7 +204,7 @@ const AdminUserPage = ({ user }: { user: TGetUserResponse }) => { User Organisations - + Organisations that the user is a member of. @@ -219,6 +226,28 @@ const AdminUserPage = ({ user }: { user: TGetUserResponse }) => { /> + + + + + + + + Team Memberships + + + Teams that this user is a member of and their roles. + + + + + + + + + + + {user && user.twoFactorEnabled && } {user && user.disabled && } diff --git a/packages/trpc/server/admin-router/find-user-teams.ts b/packages/trpc/server/admin-router/find-user-teams.ts new file mode 100644 index 000000000..3374d08f1 --- /dev/null +++ b/packages/trpc/server/admin-router/find-user-teams.ts @@ -0,0 +1,107 @@ +import { Prisma } from '@prisma/client'; + +import type { FindResultResponse } from '@documenso/lib/types/search-params'; +import { getHighestTeamRoleInGroup } from '@documenso/lib/utils/teams'; +import { prisma } from '@documenso/prisma'; + +import { adminProcedure } from '../trpc'; +import { ZFindUserTeamsRequestSchema, ZFindUserTeamsResponseSchema } from './find-user-teams.types'; + +export const findUserTeamsRoute = adminProcedure + .input(ZFindUserTeamsRequestSchema) + .output(ZFindUserTeamsResponseSchema) + .query(async ({ input }) => { + const { userId, query, page, perPage } = input; + + return await findUserTeams({ + userId, + query, + page, + perPage, + }); + }); + +type FindUserTeamsOptions = { + userId: number; + query?: string; + page?: number; + perPage?: number; +}; + +const findUserTeams = async ({ userId, query, page = 1, perPage = 10 }: FindUserTeamsOptions) => { + const whereClause: Prisma.TeamWhereInput = { + teamGroups: { + some: { + organisationGroup: { + organisationGroupMembers: { + some: { + organisationMember: { + userId, + }, + }, + }, + }, + }, + }, + }; + + if (query && query.length > 0) { + whereClause.name = { + contains: query, + mode: Prisma.QueryMode.insensitive, + }; + } + + const [data, count] = await Promise.all([ + prisma.team.findMany({ + where: whereClause, + skip: Math.max(page - 1, 0) * perPage, + take: perPage, + orderBy: { + createdAt: 'desc', + }, + include: { + organisation: { + select: { + id: true, + name: true, + url: true, + }, + }, + teamGroups: { + where: { + organisationGroup: { + organisationGroupMembers: { + some: { + organisationMember: { + userId, + }, + }, + }, + }, + }, + }, + }, + }), + prisma.team.count({ + where: whereClause, + }), + ]); + + const mappedData = data.map((team) => ({ + id: team.id, + name: team.name, + url: team.url, + createdAt: team.createdAt, + teamRole: getHighestTeamRoleInGroup(team.teamGroups), + organisation: team.organisation, + })); + + return { + data: mappedData, + count, + currentPage: Math.max(page, 1), + perPage, + totalPages: Math.ceil(count / perPage), + } satisfies FindResultResponse; +}; diff --git a/packages/trpc/server/admin-router/find-user-teams.types.ts b/packages/trpc/server/admin-router/find-user-teams.types.ts new file mode 100644 index 000000000..9f785c72a --- /dev/null +++ b/packages/trpc/server/admin-router/find-user-teams.types.ts @@ -0,0 +1,31 @@ +import { z } from 'zod'; + +import { ZFindResultResponse, ZFindSearchParamsSchema } from '@documenso/lib/types/search-params'; +import { TeamMemberRoleSchema } from '@documenso/prisma/generated/zod/inputTypeSchemas/TeamMemberRoleSchema'; +import OrganisationSchema from '@documenso/prisma/generated/zod/modelSchema/OrganisationSchema'; +import TeamSchema from '@documenso/prisma/generated/zod/modelSchema/TeamSchema'; + +export const ZFindUserTeamsRequestSchema = ZFindSearchParamsSchema.extend({ + userId: z.number(), +}); + +export const ZFindUserTeamsResponseSchema = ZFindResultResponse.extend({ + data: TeamSchema.pick({ + id: true, + name: true, + url: true, + createdAt: true, + }) + .extend({ + teamRole: TeamMemberRoleSchema, + organisation: OrganisationSchema.pick({ + id: true, + name: true, + url: true, + }), + }) + .array(), +}); + +export type TFindUserTeamsRequest = z.infer; +export type TFindUserTeamsResponse = z.infer; diff --git a/packages/trpc/server/admin-router/router.ts b/packages/trpc/server/admin-router/router.ts index c169e4813..17783072d 100644 --- a/packages/trpc/server/admin-router/router.ts +++ b/packages/trpc/server/admin-router/router.ts @@ -12,6 +12,7 @@ import { findDocumentAuditLogsRoute } from './find-document-audit-logs'; import { findDocumentJobsRoute } from './find-document-jobs'; import { findDocumentsRoute } from './find-documents'; import { findSubscriptionClaimsRoute } from './find-subscription-claims'; +import { findUserTeamsRoute } from './find-user-teams'; import { getAdminOrganisationRoute } from './get-admin-organisation'; import { getUserRoute } from './get-user'; import { promoteMemberToOwnerRoute } from './promote-member-to-owner'; @@ -55,6 +56,7 @@ export const adminRouter = router({ enable: enableUserRoute, disable: disableUserRoute, resetTwoFactor: resetTwoFactorRoute, + findTeams: findUserTeamsRoute, }, document: { find: findDocumentsRoute, From f1c91c495103e2ac7c35e590daf8b100569b757c Mon Sep 17 00:00:00 2001 From: Catalin Pit Date: Tue, 10 Feb 2026 11:13:03 +0200 Subject: [PATCH 07/33] fix: bulk actions improvements (#2440) --- .../dialogs/envelopes-bulk-delete-dialog.tsx | 7 +- .../envelopes-table-bulk-action-bar.tsx | 10 +-- .../t.$teamUrl+/documents._index.tsx | 11 ++- .../t.$teamUrl+/templates._index.tsx | 13 ++-- .../client-only/hooks/use-session-storage.ts | 69 +++++++++++++++++++ 5 files changed, 88 insertions(+), 22 deletions(-) create mode 100644 packages/lib/client-only/hooks/use-session-storage.ts diff --git a/apps/remix/app/components/dialogs/envelopes-bulk-delete-dialog.tsx b/apps/remix/app/components/dialogs/envelopes-bulk-delete-dialog.tsx index c99972fbb..06007ff89 100644 --- a/apps/remix/app/components/dialogs/envelopes-bulk-delete-dialog.tsx +++ b/apps/remix/app/components/dialogs/envelopes-bulk-delete-dialog.tsx @@ -149,7 +149,12 @@ export const EnvelopesBulkDeleteDialog = ({ - + onOpenChange(false)} + disabled={isPending} + > Cancel diff --git a/apps/remix/app/components/tables/envelopes-table-bulk-action-bar.tsx b/apps/remix/app/components/tables/envelopes-table-bulk-action-bar.tsx index 84ee783b7..a7e0efa25 100644 --- a/apps/remix/app/components/tables/envelopes-table-bulk-action-bar.tsx +++ b/apps/remix/app/components/tables/envelopes-table-bulk-action-bar.tsx @@ -24,7 +24,7 @@ export const EnvelopesTableBulkActionBar = ({ } return ( - + {selectedCount} selected @@ -36,13 +36,7 @@ export const EnvelopesTableBulkActionBar = ({ Move to Folder - + Delete diff --git a/apps/remix/app/routes/_authenticated+/t.$teamUrl+/documents._index.tsx b/apps/remix/app/routes/_authenticated+/t.$teamUrl+/documents._index.tsx index fd271aafe..b0db12bab 100644 --- a/apps/remix/app/routes/_authenticated+/t.$teamUrl+/documents._index.tsx +++ b/apps/remix/app/routes/_authenticated+/t.$teamUrl+/documents._index.tsx @@ -7,6 +7,7 @@ import { useParams, useSearchParams } from 'react-router'; import { Link } from 'react-router'; import { z } from 'zod'; +import { useSessionStorage } from '@documenso/lib/client-only/hooks/use-session-storage'; import { useCurrentOrganisation } from '@documenso/lib/client-only/providers/organisation'; import { formatAvatarUrl } from '@documenso/lib/utils/avatars'; import { parseToIntegerArray } from '@documenso/lib/utils/params'; @@ -58,7 +59,10 @@ export default function DocumentsPage() { const [isMovingDocument, setIsMovingDocument] = useState(false); const [documentToMove, setDocumentToMove] = useState(null); - const [rowSelection, setRowSelection] = useState({}); + const [rowSelection, setRowSelection] = useSessionStorage( + 'documents-bulk-selection', + {}, + ); const [isBulkMoveDialogOpen, setIsBulkMoveDialogOpen] = useState(false); const [isBulkDeleteDialogOpen, setIsBulkDeleteDialogOpen] = useState(false); @@ -121,11 +125,6 @@ export default function DocumentsPage() { } }, [data?.stats]); - // Clear selection when navigation or filters change - useEffect(() => { - setRowSelection({}); - }, [folderId, findDocumentSearchParams]); - return ( diff --git a/apps/remix/app/routes/_authenticated+/t.$teamUrl+/templates._index.tsx b/apps/remix/app/routes/_authenticated+/t.$teamUrl+/templates._index.tsx index 955d5194f..d7998a6cc 100644 --- a/apps/remix/app/routes/_authenticated+/t.$teamUrl+/templates._index.tsx +++ b/apps/remix/app/routes/_authenticated+/t.$teamUrl+/templates._index.tsx @@ -1,10 +1,11 @@ -import { useEffect, useMemo, useState } from 'react'; +import { useMemo, useState } from 'react'; import { Trans } from '@lingui/react/macro'; import { EnvelopeType } from '@prisma/client'; import { Bird } from 'lucide-react'; import { useParams, useSearchParams } from 'react-router'; +import { useSessionStorage } from '@documenso/lib/client-only/hooks/use-session-storage'; import { FolderType } from '@documenso/lib/types/folder-type'; import { formatAvatarUrl } from '@documenso/lib/utils/avatars'; import { formatDocumentsPath, formatTemplatesPath } from '@documenso/lib/utils/teams'; @@ -34,7 +35,10 @@ export default function TemplatesPage() { const page = Number(searchParams.get('page')) || 1; const perPage = Number(searchParams.get('perPage')) || 10; - const [rowSelection, setRowSelection] = useState({}); + const [rowSelection, setRowSelection] = useSessionStorage( + 'templates-bulk-selection', + {}, + ); const [isBulkMoveDialogOpen, setIsBulkMoveDialogOpen] = useState(false); const [isBulkDeleteDialogOpen, setIsBulkDeleteDialogOpen] = useState(false); @@ -51,11 +55,6 @@ export default function TemplatesPage() { folderId, }); - // Clear selection when navigation or filters change - useEffect(() => { - setRowSelection({}); - }, [folderId, page, perPage]); - return ( diff --git a/packages/lib/client-only/hooks/use-session-storage.ts b/packages/lib/client-only/hooks/use-session-storage.ts new file mode 100644 index 000000000..e720b2c8b --- /dev/null +++ b/packages/lib/client-only/hooks/use-session-storage.ts @@ -0,0 +1,69 @@ +import * as React from 'react'; +import type { Dispatch, SetStateAction } from 'react'; + +function dispatchStorageEvent(key: string, newValue: string | null) { + window.dispatchEvent(new StorageEvent('storage', { key, newValue })); +} + +const setSessionStorageItem = (key: string, value: T) => { + const stringifiedValue = JSON.stringify(value); + window.sessionStorage.setItem(key, stringifiedValue); + dispatchStorageEvent(key, stringifiedValue); +}; + +const removeSessionStorageItem = (key: string) => { + window.sessionStorage.removeItem(key); + dispatchStorageEvent(key, null); +}; + +const getSessionStorageItem = (key: string) => { + return window.sessionStorage.getItem(key); +}; + +const useSessionStorageSubscribe = (callback: (event: StorageEvent) => void) => { + window.addEventListener('storage', callback); + return () => window.removeEventListener('storage', callback); +}; + +export function useSessionStorage( + key: string, + initialValue: T, +): [T, Dispatch>] { + const serializedInitialValue = JSON.stringify(initialValue); + + const getSnapshot = () => getSessionStorageItem(key); + const getServerSnapshot = () => serializedInitialValue; + + const store = React.useSyncExternalStore( + useSessionStorageSubscribe, + getSnapshot, + getServerSnapshot, + ); + + const setState: Dispatch> = React.useCallback( + (v) => { + try { + const prevValue = store ? JSON.parse(store) : initialValue; + // @ts-expect-error - SetStateAction function check is safe at runtime + const nextState = typeof v === 'function' ? v(prevValue) : v; + + if (nextState === undefined || nextState === null) { + removeSessionStorageItem(key); + } else { + setSessionStorageItem(key, nextState); + } + } catch (e) { + console.warn(e); + } + }, + [key, store, initialValue], + ); + + React.useEffect(() => { + if (getSessionStorageItem(key) === null && typeof initialValue !== 'undefined') { + setSessionStorageItem(key, initialValue); + } + }, [key, initialValue]); + + return [store ? JSON.parse(store) : initialValue, setState]; +} From e3dee5e565074efdc450f5149d6b5dadb0cc0e09 Mon Sep 17 00:00:00 2001 From: Lucas Smith Date: Thu, 12 Feb 2026 14:20:52 +1100 Subject: [PATCH 08/33] fix: auto placement field meta (#2480) --- packages/lib/server-only/pdf/auto-place-fields.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/lib/server-only/pdf/auto-place-fields.ts b/packages/lib/server-only/pdf/auto-place-fields.ts index c6b76d00e..052b20ed7 100644 --- a/packages/lib/server-only/pdf/auto-place-fields.ts +++ b/packages/lib/server-only/pdf/auto-place-fields.ts @@ -1,7 +1,7 @@ import { PDF, rgb } from '@libpdf/core'; import type { FieldType, Recipient } from '@prisma/client'; -import { type TFieldAndMeta, ZFieldAndMetaSchema } from '@documenso/lib/types/field-meta'; +import { type TFieldAndMeta, ZEnvelopeFieldAndMetaSchema } from '@documenso/lib/types/field-meta'; import { parseFieldMetaFromPlaceholder, parseFieldTypeFromPlaceholder } from './helpers'; @@ -117,7 +117,7 @@ export const extractPlaceholdersFromPDF = async (pdf: Buffer): Promise Date: Thu, 12 Feb 2026 16:06:43 +1100 Subject: [PATCH 09/33] fix: highlight rejected certificate text (#2478) ## Description - Update the rejected certificate so that is it more clear on who rejected the document. - Updated the audit log generation so that the completed audit log is included ### Before ### After Note that the order of the recipient is different in this case --------- Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com> Co-authored-by: Lucas Smith --- .../internal/seal-document.handler.ts | 43 +++++++++++++------ .../server-only/pdf/generate-audit-log-pdf.ts | 18 ++++++-- .../pdf/generate-certificate-pdf.ts | 9 +++- .../lib/server-only/pdf/render-audit-logs.ts | 4 +- .../lib/server-only/pdf/render-certificate.ts | 38 +++++++++++++--- 5 files changed, 87 insertions(+), 25 deletions(-) diff --git a/packages/lib/jobs/definitions/internal/seal-document.handler.ts b/packages/lib/jobs/definitions/internal/seal-document.handler.ts index 242e1db5d..2e37b3039 100644 --- a/packages/lib/jobs/definitions/internal/seal-document.handler.ts +++ b/packages/lib/jobs/definitions/internal/seal-document.handler.ts @@ -29,6 +29,7 @@ import { insertFieldInPDFV2 } from '../../../server-only/pdf/insert-field-in-pdf import { legacy_insertFieldInPDF } from '../../../server-only/pdf/legacy-insert-field-in-pdf'; import { getTeamSettings } from '../../../server-only/team/get-team-settings'; import { triggerWebhook } from '../../../server-only/webhooks/trigger/trigger-webhook'; +import type { TDocumentAuditLog } from '../../../types/document-audit-logs'; import { DOCUMENT_AUDIT_LOG_TYPE } from '../../../types/document-audit-logs'; import { ZWebhookDocumentSchema, @@ -169,12 +170,38 @@ export const run = async ({ }); } + // eslint-disable-next-line @typescript-eslint/consistent-type-assertions + const envelopeCompletedAuditLog = createDocumentAuditLogData({ + type: DOCUMENT_AUDIT_LOG_TYPE.DOCUMENT_COMPLETED, + envelopeId: envelope.id, + requestMetadata, + user: null, + data: { + transactionId: nanoid(), + ...(isRejected ? { isRejected: true, rejectionReason: rejectionReason } : {}), + }, + }); + + const finalEnvelopeStatus = isRejected ? DocumentStatus.REJECTED : DocumentStatus.COMPLETED; + let certificateDoc: PDF | null = null; let auditLogDoc: PDF | null = null; if (settings.includeSigningCertificate || settings.includeAuditLog) { + const additionalAuditLogs = [ + // eslint-disable-next-line @typescript-eslint/consistent-type-assertions + { + ...envelopeCompletedAuditLog, + id: '', + createdAt: new Date(), + } as TDocumentAuditLog, + ]; + const certificatePayload = { - envelope, + envelope: { + ...envelope, + status: finalEnvelopeStatus, + }, recipients: envelope.recipients, // Need to use the recipients from envelope which contains ALL recipients. fields, language: envelope.documentMeta.language, @@ -185,6 +212,7 @@ export const run = async ({ envelopeItems: envelopeItems.map((item) => item.title), pageWidth: PDF_SIZE_A4_72PPI.width, pageHeight: PDF_SIZE_A4_72PPI.height, + additionalAuditLogs, }; // Use Playwright-based PDF generation if enabled, otherwise use Konva-based generation. @@ -263,22 +291,13 @@ export const run = async ({ id: envelope.id, }, data: { - status: isRejected ? DocumentStatus.REJECTED : DocumentStatus.COMPLETED, + status: finalEnvelopeStatus, completedAt: new Date(), }, }); await tx.documentAuditLog.create({ - data: createDocumentAuditLogData({ - type: DOCUMENT_AUDIT_LOG_TYPE.DOCUMENT_COMPLETED, - envelopeId: envelope.id, - requestMetadata, - user: null, - data: { - transactionId: nanoid(), - ...(isRejected ? { isRejected: true, rejectionReason: rejectionReason } : {}), - }, - }), + data: envelopeCompletedAuditLog, }); }); diff --git a/packages/lib/server-only/pdf/generate-audit-log-pdf.ts b/packages/lib/server-only/pdf/generate-audit-log-pdf.ts index aac8245db..c1071b9bf 100644 --- a/packages/lib/server-only/pdf/generate-audit-log-pdf.ts +++ b/packages/lib/server-only/pdf/generate-audit-log-pdf.ts @@ -1,6 +1,7 @@ import { PDF } from '@libpdf/core'; import { i18n } from '@lingui/core'; +import { type TDocumentAuditLog } from '@documenso/lib/types/document-audit-logs'; import { prisma } from '@documenso/prisma'; import { ZSupportedLanguageCodeSchema } from '../../constants/i18n'; @@ -12,15 +13,24 @@ import { renderAuditLogs } from './render-audit-logs'; type GenerateAuditLogPdfOptions = GenerateCertificatePdfOptions & { envelopeItems: string[]; + additionalAuditLogs?: TDocumentAuditLog[]; }; export const generateAuditLogPdf = async (options: GenerateAuditLogPdfOptions) => { - const { envelope, envelopeOwner, envelopeItems, recipients, language, pageWidth, pageHeight } = - options; + const { + envelope, + envelopeOwner, + envelopeItems, + recipients, + language, + pageWidth, + pageHeight, + additionalAuditLogs = [], + } = options; const documentLanguage = ZSupportedLanguageCodeSchema.parse(language); - const [organisationClaim, auditLogs, messages] = await Promise.all([ + const [organisationClaim, partialAuditLogs, messages] = await Promise.all([ getOrganisationClaimByTeamId({ teamId: envelope.teamId }), getAuditLogs(envelope.id), getTranslations(documentLanguage), @@ -31,6 +41,8 @@ export const generateAuditLogPdf = async (options: GenerateAuditLogPdfOptions) = messages, }); + const auditLogs: TDocumentAuditLog[] = [...additionalAuditLogs, ...partialAuditLogs]; + const auditLogPages = await renderAuditLogs({ envelope, envelopeOwner, diff --git a/packages/lib/server-only/pdf/generate-certificate-pdf.ts b/packages/lib/server-only/pdf/generate-certificate-pdf.ts index ff12edc91..4fa66d78f 100644 --- a/packages/lib/server-only/pdf/generate-certificate-pdf.ts +++ b/packages/lib/server-only/pdf/generate-certificate-pdf.ts @@ -16,7 +16,14 @@ import { getOrganisationClaimByTeamId } from '../organisation/get-organisation-c import { renderCertificate } from './render-certificate'; export type GenerateCertificatePdfOptions = { - envelope: Envelope & { + /** + * Note: completedAt is not included since it's not real at this point in time. + * + * If we actually need it here in the future, we will need to preserve the + * completedAt value and pass it to the final `envelope.update` function when + * the document is initially sealed. + */ + envelope: Omit & { documentMeta: DocumentMeta; }; envelopeOwner: { diff --git a/packages/lib/server-only/pdf/render-audit-logs.ts b/packages/lib/server-only/pdf/render-audit-logs.ts index 2cd5d307c..53874e96e 100644 --- a/packages/lib/server-only/pdf/render-audit-logs.ts +++ b/packages/lib/server-only/pdf/render-audit-logs.ts @@ -30,7 +30,7 @@ export type AuditLogRecipient = { }; type GenerateAuditLogsOptions = { - envelope: Envelope & { + envelope: Omit & { documentMeta: DocumentMeta; }; envelopeItems: string[]; @@ -168,7 +168,7 @@ const renderVerticalLabelAndText = (options: RenderVerticalLabelAndTextOptions) }; type RenderOverviewCardOptions = { - envelope: Envelope & { + envelope: Omit & { documentMeta: DocumentMeta; }; envelopeItems: string[]; diff --git a/packages/lib/server-only/pdf/render-certificate.ts b/packages/lib/server-only/pdf/render-certificate.ts index 43209b9c7..9991e447a 100644 --- a/packages/lib/server-only/pdf/render-certificate.ts +++ b/packages/lib/server-only/pdf/render-certificate.ts @@ -78,6 +78,7 @@ const getDevice = (userAgent?: string | null): string => { const textMutedForegroundLight = '#929DAE'; const textForeground = '#000'; const textMutedForeground = '#64748B'; +const textRejectedRed = '#dc2626'; const textBase = 10; const textSm = 9; const textXs = 8; @@ -97,6 +98,8 @@ type RenderLabelAndTextOptions = { text: string; width: number; y?: number; + labelFill?: string; + valueFill?: string; }; const renderLabelAndText = (options: RenderLabelAndTextOptions) => { @@ -106,13 +109,16 @@ const renderLabelAndText = (options: RenderLabelAndTextOptions) => { y, }); + const labelFill = options.labelFill ?? textMutedForeground; + const valueFill = options.valueFill ?? textMutedForeground; + const label = new Konva.Text({ x: 0, y: 0, text: `${options.label}: `, fontStyle: fontMedium, fontFamily: 'Inter', - fill: textMutedForeground, + fill: labelFill, fontSize: textSm, }); @@ -124,7 +130,7 @@ const renderLabelAndText = (options: RenderLabelAndTextOptions) => { width: width - label.width(), fontFamily: 'Inter', text: options.text, - fill: textMutedForeground, + fill: valueFill, wrap: 'char', fontSize: textSm, }); @@ -269,6 +275,8 @@ const renderColumnTwo = (options: RenderColumnOptions) => { const columnWidth = width - columnPadding; + const isRejected = Boolean(recipient.logs.rejected); + if (recipient.signatureField?.secondaryId) { // Signature container with green border const signatureContainer = new Konva.Group({ x: 0, y: 0 }); @@ -313,7 +321,10 @@ const renderColumnTwo = (options: RenderColumnOptions) => { signatureContainer.add(typedSig); } - column.add(signatureContainer); + // Do not add the signature container for rejected recipients. + if (!isRejected) { + column.add(signatureContainer); + } const signatureHeight = Math.max(signatureContainer.getClientRect().height, minSignatureHeight); @@ -342,7 +353,7 @@ const renderColumnTwo = (options: RenderColumnOptions) => { // Signature ID const sigIdLabel = new Konva.Text({ x: 0, - y: signatureHeight + 10, + y: isRejected ? 0 : signatureHeight + 10, text: `${i18n._(msg`Signature ID`)}:`, fill: textMutedForeground, width: columnWidth, @@ -376,9 +387,11 @@ const renderColumnTwo = (options: RenderColumnOptions) => { column.add(naText); } + const relevantLog = isRejected ? recipient.logs.rejected : recipient.logs.completed; + const ipLabelAndText = renderLabelAndText({ label: i18n._(msg`IP Address`), - text: recipient.logs.completed?.ipAddress ?? i18n._(msg`Unknown`), + text: relevantLog?.ipAddress ?? i18n._(msg`Unknown`), width, y: column.getClientRect().height + 6, }); @@ -386,7 +399,7 @@ const renderColumnTwo = (options: RenderColumnOptions) => { const deviceLabelAndText = renderLabelAndText({ label: i18n._(msg`Device`), - text: getDevice(recipient.logs.completed?.userAgent), + text: getDevice(relevantLog?.userAgent), width, y: column.getClientRect().height + 6, }); @@ -400,7 +413,14 @@ const renderColumnThree = (options: RenderColumnOptions) => { const column = new Konva.Group(); - const itemsToRender = [ + type DetailItem = { + label: string; + value: string; + labelFill?: string; + valueFill?: string; + }; + + const itemsToRender: DetailItem[] = [ { label: i18n._(msg`Sent`), value: recipient.logs.emailed @@ -429,6 +449,8 @@ const renderColumnThree = (options: RenderColumnOptions) => { value: DateTime.fromJSDate(recipient.logs.rejected.createdAt) .setLocale(APP_I18N_OPTIONS.defaultLocale) .toFormat('yyyy-MM-dd hh:mm:ss a (ZZZZ)'), + labelFill: textRejectedRed, + valueFill: textRejectedRed, }); } else { itemsToRender.push({ @@ -459,6 +481,8 @@ const renderColumnThree = (options: RenderColumnOptions) => { text: item.value, width, y: column.getClientRect().height + (index === 0 ? 0 : 8), + labelFill: item.labelFill, + valueFill: item.valueFill, }); column.add(labelAndText); } From 066e6bc8472dc1cbfd1c224cd6fbbfa6a5621356 Mon Sep 17 00:00:00 2001 From: David Nguyen Date: Thu, 12 Feb 2026 16:32:26 +1100 Subject: [PATCH 10/33] fix: envelope editor flush race condition (#2482) ## Description Fixes a race condition in the envelope editor when opening "Send Document" immediately after moving/resizing a selected field Replication 1. Move or resize a field (do not blur the selector/quickbar that appears when a field is selected) 2. Directly click the "Send Document" dialog 3. Error appears Note: Step 2 needs to happen relatively fast after step 1 since this is a race against the flush debouncer --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .../envelope-editor-fields-page-renderer.tsx | 26 ++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page-renderer.tsx b/apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page-renderer.tsx index b30026f16..2582d46e9 100644 --- a/apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page-renderer.tsx +++ b/apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page-renderer.tsx @@ -434,15 +434,31 @@ export default function EnvelopeEditorFieldsPageRenderer() { renderFieldOnLayer(field); }); + // Reconcile selection state with live field nodes after flush/sync updates. + const liveSelectedFieldGroups = selectedKonvaFieldGroups.filter((fieldGroup) => { + if (!fieldGroup.getStage() || !fieldGroup.getParent()) { + return false; + } + + return localPageFields.some((field) => field.formId === fieldGroup.id()); + }); + + if (liveSelectedFieldGroups.length !== selectedKonvaFieldGroups.length) { + setSelectedFields(liveSelectedFieldGroups); + } + // Rerender the transformer interactiveTransformer.current?.forceUpdate(); pageLayer.current.batchDraw(); - }, [localPageFields]); + }, [localPageFields, selectedKonvaFieldGroups]); const setSelectedFields = (nodes: Konva.Node[]) => { // eslint-disable-next-line @typescript-eslint/consistent-type-assertions - const fieldGroups = nodes.filter((node) => node.hasName('field-group')) as Konva.Group[]; + const fieldGroups = nodes.filter( + (node) => + node.hasName('field-group') && Boolean(node.getStage()) && Boolean(node.getParent()), + ) as Konva.Group[]; interactiveTransformer.current?.nodes(fieldGroups); setSelectedKonvaFieldGroups(fieldGroups); @@ -674,6 +690,10 @@ const FieldActionButtons = ({ selectedFieldFormId.includes(field.formId), ); + if (fields.length === 0) { + return null; + } + const recipient = envelope.recipients.find( (recipient) => recipient.id === fields[0].recipientId, ); @@ -689,7 +709,7 @@ const FieldActionButtons = ({ } return null; - }, [editorFields.localFields]); + }, [editorFields.localFields, envelope.recipients, selectedFieldFormId]); return ( From 9bcb240895f0e33fb53f5284b1b0b70711c074dc Mon Sep 17 00:00:00 2001 From: David Nguyen Date: Thu, 12 Feb 2026 17:44:33 +1100 Subject: [PATCH 11/33] fix: revert canceled individual subscriptions to free claim (#2483) ## Description Resolves an issue where individual plan customers who cancel are not correctly put down to the free plan. To resolve this, we delete the subscription on the stripe subscription delete webhook. Since the customerId is stored on the organisation they can still access their old invoices. --- .../stripe/webhook/on-subscription-deleted.ts | 72 ++++++++++++++++++- 1 file changed, 71 insertions(+), 1 deletion(-) diff --git a/packages/ee/server-only/stripe/webhook/on-subscription-deleted.ts b/packages/ee/server-only/stripe/webhook/on-subscription-deleted.ts index c930f70de..494269b26 100644 --- a/packages/ee/server-only/stripe/webhook/on-subscription-deleted.ts +++ b/packages/ee/server-only/stripe/webhook/on-subscription-deleted.ts @@ -1,19 +1,89 @@ import { SubscriptionStatus } from '@prisma/client'; +import { createOrganisationClaimUpsertData } from '@documenso/lib/server-only/organisation/create-organisation'; import type { Stripe } from '@documenso/lib/server-only/stripe'; +import { INTERNAL_CLAIM_ID, internalClaims } from '@documenso/lib/types/subscription'; import { prisma } from '@documenso/prisma'; +import { extractStripeClaimId } from './on-subscription-updated'; + export type OnSubscriptionDeletedOptions = { subscription: Stripe.Subscription; }; export const onSubscriptionDeleted = async ({ subscription }: OnSubscriptionDeletedOptions) => { - await prisma.subscription.update({ + const existingSubscription = await prisma.subscription.findUnique({ where: { planId: subscription.id, }, + include: { + organisation: { + include: { + organisationClaim: true, + }, + }, + }, + }); + + // If the subscription doesn't exist, we don't need to do anything. + if (!existingSubscription) { + return; + } + + const subscriptionClaimId = await extractClaimIdFromStripeSubscription(subscription); + + // Individuals get their subscription deleted so they can return to the + // free plan. + if (subscriptionClaimId === INTERNAL_CLAIM_ID.INDIVIDUAL) { + await prisma.$transaction(async (tx) => { + await tx.subscription.delete({ + where: { + id: existingSubscription.id, + }, + }); + + await tx.organisationClaim.update({ + where: { + id: existingSubscription.organisation.organisationClaim.id, + }, + data: { + originalSubscriptionClaimId: INTERNAL_CLAIM_ID.FREE, + ...createOrganisationClaimUpsertData(internalClaims[INTERNAL_CLAIM_ID.FREE]), + }, + }); + }); + + return; + } + + // For all other cases, mark the subscription as inactive since + // they should still have a "Personal" account. + await prisma.subscription.update({ + where: { + id: existingSubscription.id, + }, data: { status: SubscriptionStatus.INACTIVE, }, }); }; + +/** + * Extracts the claim ID from the Stripe subscription. + * + * Returns `null` if no claim ID found. + */ +const extractClaimIdFromStripeSubscription = async (subscription: Stripe.Subscription) => { + const deletedItem = subscription.items.data[0]; + + if (!deletedItem) { + return null; + } + + try { + return await extractStripeClaimId(deletedItem.price); + } catch (error) { + console.error(error); + return null; + } +}; From d66c330d460d9f2525f2ce3dfed1822bcef5500e Mon Sep 17 00:00:00 2001 From: Ephraim Duncan <55143799+ephraimduncan@users.noreply.github.com> Date: Thu, 12 Feb 2026 07:25:11 +0000 Subject: [PATCH 12/33] fix: match cert and audit log page dimensions to source document (#2473) --- ...resh-gold-rock-cert-page-width-mismatch.md | 168 ++++++++++++++ assets/a4-size.pdf | 51 ++++ assets/letter-size.pdf | 51 ++++ assets/tabloid-landscape.pdf | 51 ++++ .../envelopes/cert-page-dimensions.spec.ts | 218 ++++++++++++++++++ .../e2e/envelopes/envelope-alignment.spec.ts | 20 +- .../visual-regression/alignment-pdf-0.png | Bin 142396 -> 360083 bytes .../visual-regression/alignment-pdf-1.png | Bin 104573 -> 272884 bytes .../visual-regression/alignment-pdf-2.png | Bin 114594 -> 316973 bytes .../visual-regression/alignment-pdf-3.png | Bin 119597 -> 251663 bytes .../visual-regression/blank-certificate.png | Bin 166551 -> 6648 bytes .../visual-regression/field-meta-pdf-0.png | Bin 41657 -> 50888 bytes .../visual-regression/field-meta-pdf-1.png | Bin 129985 -> 195306 bytes .../visual-regression/field-meta-pdf-2.png | Bin 92080 -> 228786 bytes .../visual-regression/field-meta-pdf-3.png | Bin 82687 -> 206439 bytes .../visual-regression/field-meta-pdf-4.png | Bin 76524 -> 165527 bytes .../visual-regression/field-meta-pdf-5.png | Bin 92162 -> 229606 bytes .../visual-regression/field-meta-pdf-6.png | Bin 58771 -> 111578 bytes .../visual-regression/field-meta-pdf-7.png | Bin 119597 -> 251663 bytes .../internal/seal-document.handler.ts | 141 ++++++----- packages/lib/server-only/pdf/get-page-size.ts | 23 ++ 21 files changed, 658 insertions(+), 65 deletions(-) create mode 100644 .agents/plans/fresh-gold-rock-cert-page-width-mismatch.md create mode 100644 assets/a4-size.pdf create mode 100644 assets/letter-size.pdf create mode 100644 assets/tabloid-landscape.pdf create mode 100644 packages/app-tests/e2e/envelopes/cert-page-dimensions.spec.ts diff --git a/.agents/plans/fresh-gold-rock-cert-page-width-mismatch.md b/.agents/plans/fresh-gold-rock-cert-page-width-mismatch.md new file mode 100644 index 000000000..d8302a250 --- /dev/null +++ b/.agents/plans/fresh-gold-rock-cert-page-width-mismatch.md @@ -0,0 +1,168 @@ +--- +date: 2026-02-11 +title: Cert Page Width Mismatch +--- + +## Problem + +Certificate and audit log pages are generated with hardcoded A4 dimensions (`PDF_SIZE_A4_72PPI`: 595×842) regardless of the actual document page sizes. When the source document uses a different page size (e.g., Letter, Legal, or custom dimensions), the certificate/audit log pages end up with a different width than the document pages. This causes problems with courts that expect uniform page dimensions throughout a PDF. + +**Both width and height must match** the last page of the document so the entire PDF prints uniformly. + +**Root cause**: In `seal-document.handler.ts` (lines 186-187), the certificate payload always uses: + +```ts +pageWidth: PDF_SIZE_A4_72PPI.width, // 595 +pageHeight: PDF_SIZE_A4_72PPI.height, // 842 +``` + +These hardcoded values flow into `generateCertificatePdf`, `generateAuditLogPdf`, `renderCertificate`, and `renderAuditLogs` — all of which use `pageWidth`/`pageHeight` to set Konva stage dimensions and layout content. + +## Key Files + +| File | Role | +| ----------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | +| `packages/lib/jobs/definitions/internal/seal-document.handler.ts` | Orchestrates sealing; passes page dimensions to cert/audit generators | +| `packages/lib/constants/pdf.ts` | Defines `PDF_SIZE_A4_72PPI` (595×842) | +| `packages/lib/server-only/pdf/generate-certificate-pdf.ts` | Generates certificate PDF; accepts `pageWidth`/`pageHeight` | +| `packages/lib/server-only/pdf/generate-audit-log-pdf.ts` | Generates audit log PDF; accepts `pageWidth`/`pageHeight` | +| `packages/lib/server-only/pdf/render-certificate.ts` | Renders certificate pages via Konva; uses `pageWidth`/`pageHeight` for stage + layout | +| `packages/lib/server-only/pdf/render-audit-logs.ts` | Renders audit log pages via Konva; uses `pageWidth`/`pageHeight` for stage + layout | +| `packages/lib/server-only/pdf/get-page-size.ts` | Existing utility — extend with `@libpdf/core` version | +| `packages/trpc/server/document-router/download-document-certificate.ts` | Standalone certificate download (also hardcodes A4) | +| `packages/trpc/server/document-router/download-document-audit-logs.ts` | Standalone audit log download (also hardcodes A4) | + +## Architecture + +### Current Flow + +1. **One cert PDF + one audit log PDF** generated per envelope with hardcoded A4 dims +2. Both appended to **every** envelope item (document) via `decorateAndSignPdf` → `pdfDoc.copyPagesFrom()` +3. The audit log is envelope-level (all recipients, all events across all docs) — one per envelope, not per document + +### Multi-Document Envelopes + +- V1 envelopes: single document only +- V2 envelopes: support multiple documents (envelope items) +- Each envelope item gets both cert + audit log pages appended to it +- If documents have different page sizes → need size-matched cert/audit for each + +### Reading Page Dimensions (`@libpdf/core` only) + +Use `@libpdf/core`'s `PDF` class — NOT `@cantoo/pdf-lib`: + +```ts +const pdfDoc = await PDF.load(pdfData); +const lastPage = pdfDoc.getPage(pdfDoc.getPageCount() - 1); +const { width, height } = lastPage; // e.g. 612, 792 for Letter +``` + +Already used this way in `seal-document.handler.ts` lines 403-410 for V2 field insertion. +"Last page" = last page of the original document, before cert/audit pages are appended. + +### Content Layout Adaptation + +Both renderers already handle variable dimensions gracefully: + +- **Width**: `render-certificate.ts:713` / `render-audit-logs.ts:588` — `Math.min(pageWidth - minimumMargin * 2, contentMaxWidth)` with `contentMaxWidth = 768`. Wider pages get more margin, narrower pages tighter margins. +- **Height**: Both renderers paginate content into pages using `groupRowsIntoPages()` which respects `pageHeight` via `maxTableHeight = pageHeight - pageTopMargin - pageBottomMargin`. Shorter pages just mean more pages; taller pages fit more rows per page. + +### Playwright PDF Path — Out of Scope + +The `NEXT_PRIVATE_USE_PLAYWRIGHT_PDF` toggle enables a deprecated Playwright-based PDF generation path (`get-certificate-pdf.ts`, `get-audit-logs-pdf.ts`) that also hardcodes `format: 'A4'` in `page.pdf()`. This path is **not being updated** as part of this fix: + +- Both files are marked `@deprecated` +- The Konva-based path is the default and recommended path +- The Playwright path is behind a feature flag and will be removed + +No changes needed. Add a code comment noting the A4 limitation if the Playwright path is ever re-enabled. + +## Plan + +### 1. Extend `get-page-size.ts` with `@libpdf/core` utility + +Add a `getLastPageDimensions` function to the existing `packages/lib/server-only/pdf/get-page-size.ts` file. This consolidates page-size logic in one place (the file already has the legacy `@cantoo/pdf-lib` version). + +```ts +export const getLastPageDimensions = (pdfDoc: PDF): { width: number; height: number } => { + const lastPage = pdfDoc.getPage(pdfDoc.getPageCount() - 1); + const width = Math.round(lastPage.width); + const height = Math.round(lastPage.height); + + if (width < MIN_CERT_PAGE_WIDTH || height < MIN_CERT_PAGE_HEIGHT) { + return { width: PDF_SIZE_A4_72PPI.width, height: PDF_SIZE_A4_72PPI.height }; + } + + return { width, height }; +}; +``` + +**Dimension rounding**: `Math.round()` both width and height. PDF points at 72ppi are typically whole numbers; rounding avoids spurious float-precision mismatches (e.g., 612.0 vs 612.00001) that would cause unnecessary duplicate cert/audit PDF generation. + +**Minimum page dimensions**: Enforce a minimum threshold (e.g., 300pt for both width and height). If either dimension falls below the minimum, fall back to A4 (595×842). The certificate and audit log renderers have headers, table rows, margins, and QR codes that require a minimum viable area. + +### 2. Read last page dimensions from each envelope item's PDF + +In `seal-document.handler.ts`, before generating cert/audit PDFs: + +- For each `envelopeItem`, load the PDF and read the **last page's width and height** using `getLastPageDimensions` +- Use `PDF.load()` then pass the loaded doc to the utility + +**Resealing consideration**: When `isResealing` is true, envelope items are remapped to use `initialData` (lines 152-158) before this point. Page-size extraction must operate on the same data source that `decorateAndSignPdf` will use. Since the `envelopeItems` array is already remapped by the time we read dimensions, reading from `envelopeItem.documentData` will naturally give the correct (initial) data. No special handling needed beyond ensuring the dimension read happens **after** the resealing remap. + +### 3. Generate cert/audit PDFs per unique page size + +Current flow generates one cert + one audit log doc per envelope. Change to: + +1. Collect `{ width, height }` of the last page for each envelope item +2. Deduplicate by `"${width}x${height}"` key (using the already-rounded integers) +3. For each unique size, generate cert PDF and audit log PDF with those dimensions +4. Store in a `Map` keyed by `"${width}x${height}"` + +For the common single-document case, this is one generation — same perf as today. + +### 4. Thread the correct docs into `decorateAndSignPdf` + +In the envelope item loop, look up the item's last-page dimensions in the map and pass the matching cert/audit docs. Signature of `decorateAndSignPdf` doesn't change — it still receives a single `certificateDoc` and `auditLogDoc`, just the right ones per item. + +### 5. Update standalone download routes + +`download-document-certificate.ts` and `download-document-audit-logs.ts` also hardcode A4: + +- Both routes have `documentId` which maps to a specific envelope item +- Fetch **that specific document's** PDF data, load it, read last page width + height via `getLastPageDimensions` +- Pass `{ pageWidth, pageHeight }` to the generator +- This ensures the standalone download matches the dimensions the user would see in the sealed PDF for that document + +### 6. Edge cases + +| Scenario | Behavior | +| --------------------------------------- | ------------------------------------------------------------------------------------------- | +| Mixed page sizes within one PDF | Use last page's dimensions (per spec) | +| Page dimensions below minimum threshold | Fall back to A4 (595×842) | +| Landscape pages | width/height just swap roles; renderers adapt via `Math.min()` capping. No special handling | +| Fallback if page dims unreadable | Default to A4 (595×842) | +| Resealing | Dimensions read after `initialData` remap — correct source automatically | +| Playwright PDF path enabled | Remains A4 — out of scope, deprecated | +| Single-doc envelope (most common) | One generation, same perf as today | +| Multi-doc envelope, same page sizes | Dedup key matches → one generation | +| Multi-doc envelope, different sizes | One generation per unique size | + +### 7. Tests + +- Add assertion-based E2E test (no visual regression / reference images needed) +- Seal a Letter-size (612×792) PDF through the full flow +- Load the sealed output and assert all pages (document + cert + audit) have matching width/height +- Can be added to `envelope-alignment.spec.ts` or as a new focused test + +## Implementation Steps + +1. **Extend `get-page-size.ts`** — add `getLastPageDimensions(pdfDoc: PDF): { width: number; height: number }` using `@libpdf/core`, with `Math.round()` and minimum dimension enforcement +2. **In `seal-document.handler.ts`**: + a. After the resealing remap (line ~159), load each envelope item's PDF via `PDF.load()` and collect last page `{ width, height }` using `getLastPageDimensions` + b. Deduplicate by `"${width}x${height}"` key + c. Generate cert/audit PDFs per unique size (parallel via `Promise.all`) + d. In envelope item loop, look up matching cert/audit doc by size key +3. **Fix `download-document-certificate.ts`** — load the specific document's PDF, read last page dims via `getLastPageDimensions`, pass to generator +4. **Fix `download-document-audit-logs.ts`** — same as above, using the specific `documentId`'s PDF +5. **Add E2E test** — assertion-based test with a Letter-size document verifying all page dimensions match after sealing diff --git a/assets/a4-size.pdf b/assets/a4-size.pdf new file mode 100644 index 000000000..c478b3c5a --- /dev/null +++ b/assets/a4-size.pdf @@ -0,0 +1,51 @@ +%PDF-1.7 +% +1 0 obj +<< +/Type /Pages +/Kids [4 0 R] +/Count 1 +>> +endobj +2 0 obj +<< +/Type /Catalog +/Pages 1 0 R +>> +endobj +3 0 obj +<< +/Title (Untitled) +/Author (Unknown) +/Creator (@libpdf/core) +/Producer (@libpdf/core) +/CreationDate (D:20260211083727Z) +/ModDate (D:20260211083727Z) +>> +endobj +4 0 obj +<< +/Type /Page +/MediaBox [0 0 595 842] +/Resources << +>> +/Parent 1 0 R +>> +endobj +xref +0 5 +0000000000 65535 f +0000000015 00000 n +0000000072 00000 n +0000000121 00000 n +0000000290 00000 n +trailer +<< +/Size 5 +/Root 2 0 R +/Info 3 0 R +/ID [ ] +>> +startxref +378 +%%EOF diff --git a/assets/letter-size.pdf b/assets/letter-size.pdf new file mode 100644 index 000000000..611b1c3b3 --- /dev/null +++ b/assets/letter-size.pdf @@ -0,0 +1,51 @@ +%PDF-1.7 +% +1 0 obj +<< +/Type /Pages +/Kids [4 0 R] +/Count 1 +>> +endobj +2 0 obj +<< +/Type /Catalog +/Pages 1 0 R +>> +endobj +3 0 obj +<< +/Title (Untitled) +/Author (Unknown) +/Creator (@libpdf/core) +/Producer (@libpdf/core) +/CreationDate (D:20260211081729Z) +/ModDate (D:20260211081729Z) +>> +endobj +4 0 obj +<< +/Type /Page +/MediaBox [0 0 612 792] +/Resources << +>> +/Parent 1 0 R +>> +endobj +xref +0 5 +0000000000 65535 f +0000000015 00000 n +0000000072 00000 n +0000000121 00000 n +0000000290 00000 n +trailer +<< +/Size 5 +/Root 2 0 R +/Info 3 0 R +/ID [<94A5FB5DCF5A94AD8C472C493420962C> <94A5FB5DCF5A94AD8C472C493420962C>] +>> +startxref +378 +%%EOF diff --git a/assets/tabloid-landscape.pdf b/assets/tabloid-landscape.pdf new file mode 100644 index 000000000..d40253313 --- /dev/null +++ b/assets/tabloid-landscape.pdf @@ -0,0 +1,51 @@ +%PDF-1.7 +% +1 0 obj +<< +/Type /Pages +/Kids [4 0 R] +/Count 1 +>> +endobj +2 0 obj +<< +/Type /Catalog +/Pages 1 0 R +>> +endobj +3 0 obj +<< +/Title (Untitled) +/Author (Unknown) +/Creator (@libpdf/core) +/Producer (@libpdf/core) +/CreationDate (D:20260211084535Z) +/ModDate (D:20260211084535Z) +>> +endobj +4 0 obj +<< +/Type /Page +/MediaBox [0 0 1224 792] +/Resources << +>> +/Parent 1 0 R +>> +endobj +xref +0 5 +0000000000 65535 f +0000000015 00000 n +0000000072 00000 n +0000000121 00000 n +0000000290 00000 n +trailer +<< +/Size 5 +/Root 2 0 R +/Info 3 0 R +/ID [<694452F2208AC8E3DD2D2488544F9F0C> <694452F2208AC8E3DD2D2488544F9F0C>] +>> +startxref +379 +%%EOF diff --git a/packages/app-tests/e2e/envelopes/cert-page-dimensions.spec.ts b/packages/app-tests/e2e/envelopes/cert-page-dimensions.spec.ts new file mode 100644 index 000000000..0392c2cfc --- /dev/null +++ b/packages/app-tests/e2e/envelopes/cert-page-dimensions.spec.ts @@ -0,0 +1,218 @@ +import { type APIRequestContext, type Page, expect, test } from '@playwright/test'; +import { DocumentStatus, EnvelopeType, FieldType } from '@prisma/client'; +import fs from 'node:fs'; +import path from 'node:path'; +import * as pdfjsLib from 'pdfjs-dist/legacy/build/pdf.mjs'; + +import { getEnvelopeItemPdfUrl } from '@documenso/lib/utils/envelope-download'; +import { prisma } from '@documenso/prisma'; +import { seedUser } from '@documenso/prisma/seed/users'; + +import { NEXT_PUBLIC_WEBAPP_URL } from '../../../lib/constants/app'; +import { createApiToken } from '../../../lib/server-only/public-api/create-api-token'; +import { RecipientRole } from '../../../prisma/generated/types'; +import type { + TCreateEnvelopePayload, + TCreateEnvelopeResponse, +} from '../../../trpc/server/envelope-router/create-envelope.types'; +import type { TDistributeEnvelopeRequest } from '../../../trpc/server/envelope-router/distribute-envelope.types'; +import { apiSignin } from '../fixtures/authentication'; + +const WEBAPP_BASE_URL = NEXT_PUBLIC_WEBAPP_URL(); +const baseUrl = `${WEBAPP_BASE_URL}/api/v2`; + +test.describe.configure({ mode: 'parallel', timeout: 60000 }); + +const signAndVerifyPageDimensions = async ({ + page, + request, + pdfFile, + identifier, + title, + expectedWidth, + expectedHeight, +}: { + page: Page; + request: APIRequestContext; + pdfFile: string; + identifier: string; + title: string; + expectedWidth: number; + expectedHeight: number; +}) => { + const { user, team } = await seedUser(); + + const { token } = await createApiToken({ + userId: user.id, + teamId: team.id, + tokenName: 'test', + expiresIn: null, + }); + + const pdfBuffer = fs.readFileSync(path.join(__dirname, `../../../../assets/${pdfFile}`)); + + const formData = new FormData(); + + const createEnvelopePayload: TCreateEnvelopePayload = { + type: EnvelopeType.DOCUMENT, + title, + recipients: [ + { + email: user.email, + name: user.name || '', + role: RecipientRole.SIGNER, + fields: [ + { + identifier, + type: FieldType.SIGNATURE, + fieldMeta: { type: 'signature' }, + page: 1, + positionX: 10, + positionY: 10, + width: 40, + height: 10, + }, + ], + }, + ], + }; + + formData.append('payload', JSON.stringify(createEnvelopePayload)); + formData.append('files', new File([pdfBuffer], identifier, { type: 'application/pdf' })); + + const createResponse = await request.post(`${baseUrl}/envelope/create`, { + headers: { Authorization: `Bearer ${token}` }, + multipart: formData, + }); + + expect(createResponse.ok()).toBeTruthy(); + + const { id: envelopeId }: TCreateEnvelopeResponse = await createResponse.json(); + + const envelope = await prisma.envelope.findUniqueOrThrow({ + where: { id: envelopeId }, + include: { recipients: true }, + }); + + const distributeResponse = await request.post(`${baseUrl}/envelope/distribute`, { + headers: { Authorization: `Bearer ${token}` }, + data: { envelopeId: envelope.id } satisfies TDistributeEnvelopeRequest, + }); + + expect(distributeResponse.ok()).toBeTruthy(); + + // Pre-insert all fields via Prisma so we can skip the UI field interaction. + const fields = await prisma.field.findMany({ + where: { envelopeId: envelope.id, inserted: false }, + }); + + for (const field of fields) { + await prisma.field.update({ + where: { id: field.id }, + data: { + inserted: true, + signature: { + create: { + recipientId: envelope.recipients[0].id, + typedSignature: 'Test Signature', + }, + }, + }, + }); + } + + const recipientToken = envelope.recipients[0].token; + const signUrl = `/sign/${recipientToken}`; + + await apiSignin({ + page, + email: user.email, + redirectPath: signUrl, + }); + + await expect(page.getByRole('heading', { name: 'Sign Document' })).toBeVisible(); + + await page.getByRole('button', { name: 'Complete' }).click(); + await page.getByRole('button', { name: 'Sign' }).click(); + await page.waitForURL(`${signUrl}/complete`); + + await expect(async () => { + const { status } = await prisma.envelope.findFirstOrThrow({ + where: { id: envelope.id }, + }); + + expect(status).toBe(DocumentStatus.COMPLETED); + }).toPass({ timeout: 10000 }); + + const completedEnvelope = await prisma.envelope.findFirstOrThrow({ + where: { id: envelope.id }, + include: { + envelopeItems: { + orderBy: { order: 'asc' }, + include: { documentData: true }, + }, + }, + }); + + for (const item of completedEnvelope.envelopeItems) { + const documentUrl = getEnvelopeItemPdfUrl({ + type: 'download', + envelopeItem: item, + token: recipientToken, + version: 'signed', + }); + + const pdfData = await fetch(documentUrl).then(async (res) => await res.arrayBuffer()); + const loadingTask = pdfjsLib.getDocument({ data: new Uint8Array(pdfData) }); + const pdf = await loadingTask.promise; + + expect(pdf.numPages).toBeGreaterThan(1); + + for (let i = 1; i <= pdf.numPages; i++) { + const pdfPage = await pdf.getPage(i); + const viewport = pdfPage.getViewport({ scale: 1 }); + + expect(Math.round(viewport.width)).toBe(expectedWidth); + expect(Math.round(viewport.height)).toBe(expectedHeight); + } + } +}; + +test('cert and audit log pages match letter page dimensions', async ({ page, request }) => { + await signAndVerifyPageDimensions({ + page, + request, + pdfFile: 'letter-size.pdf', + identifier: 'letter-doc', + title: 'Letter Size Dimension Test', + expectedWidth: 612, + expectedHeight: 792, + }); +}); + +test('cert and audit log pages match A4 page dimensions', async ({ page, request }) => { + await signAndVerifyPageDimensions({ + page, + request, + pdfFile: 'a4-size.pdf', + identifier: 'a4-doc', + title: 'A4 Size Dimension Test', + expectedWidth: 595, + expectedHeight: 842, + }); +}); + +test('cert and audit log pages match tabloid landscape page dimensions', async ({ + page, + request, +}) => { + await signAndVerifyPageDimensions({ + page, + request, + pdfFile: 'tabloid-landscape.pdf', + identifier: 'tabloid-doc', + title: 'Tabloid Landscape Dimension Test', + expectedWidth: 1224, + expectedHeight: 792, + }); +}); diff --git a/packages/app-tests/e2e/envelopes/envelope-alignment.spec.ts b/packages/app-tests/e2e/envelopes/envelope-alignment.spec.ts index c48306106..3647072c3 100644 --- a/packages/app-tests/e2e/envelopes/envelope-alignment.spec.ts +++ b/packages/app-tests/e2e/envelopes/envelope-alignment.spec.ts @@ -298,18 +298,34 @@ test('field placement visual regression', async ({ page, request }, testInfo) => * * DON'T COMMIT THIS WITHOUT THE "SKIP" COMMAND. */ -test.skip('download envelope images', async ({ page }) => { +test.skip('download envelope images', async ({ page, request }) => { const { user, team } = await seedUser(); + const { token: apiToken } = await createApiToken({ + userId: user.id, + teamId: team.id, + tokenName: 'test', + expiresIn: null, + }); + const envelope = await seedAlignmentTestDocument({ userId: user.id, teamId: team.id, recipientName: user.name || '', recipientEmail: user.email, insertFields: true, - status: DocumentStatus.PENDING, + status: DocumentStatus.DRAFT, }); + const distributeEnvelopeRequest = await request.post(`${baseUrl}/envelope/distribute`, { + headers: { Authorization: `Bearer ${apiToken}` }, + data: { + envelopeId: envelope.id, + } satisfies TDistributeEnvelopeRequest, + }); + + expect(distributeEnvelopeRequest.ok()).toBeTruthy(); + const token = envelope.recipients[0].token; const signUrl = `/sign/${token}`; diff --git a/packages/app-tests/visual-regression/alignment-pdf-0.png b/packages/app-tests/visual-regression/alignment-pdf-0.png index dbc4ec71020ecc8480e18e8bc139fb4aac7d79c8..27d098da295bd41c0ea5af9889545c3b90ee4bd9 100644 GIT binary patch literal 360083 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
+
Organisations that the user is a member of.
+ Teams that this user is a member of and their roles. +
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
{k`AS|)zR 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
Yq|-%R>umK$g9D7`fxk{Z@cFv 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