diff --git a/packages/ee/server-only/signing/csc/execute-tsp-sign.ts b/packages/ee/server-only/signing/csc/execute-tsp-sign.ts index 5045b33d8..3c95720f6 100644 --- a/packages/ee/server-only/signing/csc/execute-tsp-sign.ts +++ b/packages/ee/server-only/signing/csc/execute-tsp-sign.ts @@ -1,6 +1,5 @@ import { AppError, AppErrorCode } from '@documenso/lib/errors/app-error'; import { jobs } from '@documenso/lib/jobs/client'; -import { sendPendingEmail } from '@documenso/lib/server-only/document/send-pending-email'; import { getRecipientByToken } from '@documenso/lib/server-only/recipient/get-recipient-by-token'; import { triggerWebhook } from '@documenso/lib/server-only/webhooks/trigger/trigger-webhook'; import { DOCUMENT_AUDIT_LOG_TYPE } from '@documenso/lib/types/document-audit-logs'; @@ -474,9 +473,12 @@ export const executeTspSign = async (opts: ExecuteTspSignOptions): Promise 0) { - await sendPendingEmail({ - id: { type: 'envelopeId', id: envelope.id }, - recipientId: recipient.id, + await jobs.triggerJob({ + name: 'send.document.pending.email', + payload: { + envelopeId: envelope.id, + recipientId: recipient.id, + }, }); // TSP envelopes are forced SEQUENTIAL at send-time; this branch always diff --git a/packages/lib/jobs/client.ts b/packages/lib/jobs/client.ts index ae23cb092..397108f61 100644 --- a/packages/lib/jobs/client.ts +++ b/packages/lib/jobs/client.ts @@ -4,11 +4,14 @@ import { SEND_CONFIRMATION_EMAIL_JOB_DEFINITION } from './definitions/emails/sen import { SEND_DOCUMENT_CANCELLED_EMAILS_JOB_DEFINITION } from './definitions/emails/send-document-cancelled-emails'; import { SEND_DOCUMENT_COMPLETED_EMAILS_JOB_DEFINITION } from './definitions/emails/send-document-completed-emails'; import { SEND_DOCUMENT_CREATED_FROM_DIRECT_TEMPLATE_EMAIL_JOB_DEFINITION } from './definitions/emails/send-document-created-from-direct-template-email'; +import { SEND_DOCUMENT_DELETED_EMAILS_JOB_DEFINITION } from './definitions/emails/send-document-deleted-emails'; +import { SEND_DOCUMENT_PENDING_EMAIL_JOB_DEFINITION } from './definitions/emails/send-document-pending-email'; import { SEND_ORGANISATION_LIMIT_ALERT_EMAIL_JOB_DEFINITION } from './definitions/emails/send-organisation-limit-alert-email'; import { SEND_ORGANISATION_MEMBER_JOINED_EMAIL_JOB_DEFINITION } from './definitions/emails/send-organisation-member-joined-email'; import { SEND_ORGANISATION_MEMBER_LEFT_EMAIL_JOB_DEFINITION } from './definitions/emails/send-organisation-member-left-email'; import { SEND_OWNER_RECIPIENT_EXPIRED_EMAIL_JOB_DEFINITION } from './definitions/emails/send-owner-recipient-expired-email'; import { SEND_PASSWORD_RESET_SUCCESS_EMAIL_JOB_DEFINITION } from './definitions/emails/send-password-reset-success-email'; +import { SEND_RECIPIENT_REMOVED_EMAIL_JOB_DEFINITION } from './definitions/emails/send-recipient-removed-email'; import { SEND_RECIPIENT_SIGNED_EMAIL_JOB_DEFINITION } from './definitions/emails/send-recipient-signed-email'; import { SEND_SIGNING_REJECTION_EMAILS_JOB_DEFINITION } from './definitions/emails/send-rejection-emails'; import { SEND_SIGNING_EMAIL_JOB_DEFINITION } from './definitions/emails/send-signing-email'; @@ -44,9 +47,12 @@ export const jobsClient = new JobClient([ SEND_PASSWORD_RESET_SUCCESS_EMAIL_JOB_DEFINITION, SEND_SIGNING_REJECTION_EMAILS_JOB_DEFINITION, SEND_RECIPIENT_SIGNED_EMAIL_JOB_DEFINITION, + SEND_RECIPIENT_REMOVED_EMAIL_JOB_DEFINITION, SEND_DOCUMENT_COMPLETED_EMAILS_JOB_DEFINITION, + SEND_DOCUMENT_DELETED_EMAILS_JOB_DEFINITION, SEND_DOCUMENT_CANCELLED_EMAILS_JOB_DEFINITION, SEND_DOCUMENT_CREATED_FROM_DIRECT_TEMPLATE_EMAIL_JOB_DEFINITION, + SEND_DOCUMENT_PENDING_EMAIL_JOB_DEFINITION, SEND_OWNER_RECIPIENT_EXPIRED_EMAIL_JOB_DEFINITION, BACKPORT_SUBSCRIPTION_CLAIM_JOB_DEFINITION, BULK_SEND_TEMPLATE_JOB_DEFINITION, diff --git a/packages/lib/jobs/definitions/emails/send-document-deleted-emails.handler.ts b/packages/lib/jobs/definitions/emails/send-document-deleted-emails.handler.ts new file mode 100644 index 000000000..4e1aa9fea --- /dev/null +++ b/packages/lib/jobs/definitions/emails/send-document-deleted-emails.handler.ts @@ -0,0 +1,70 @@ +import DocumentCancelTemplate from '@documenso/email/templates/document-cancel'; +import { msg } from '@lingui/core/macro'; +import { createElement } from 'react'; + +import { getI18nInstance } from '../../../client-only/providers/i18n-server'; +import { NEXT_PUBLIC_WEBAPP_URL } from '../../../constants/app'; +import { getEmailContext } from '../../../server-only/email/get-email-context'; +import { isRecipientEmailValidForSending } from '../../../utils/recipients'; +import { renderEmailWithI18N } from '../../../utils/render-email-with-i18n'; +import type { JobRunIO } from '../../client/_internal/job'; +import type { TSendDocumentDeletedEmailsJobDefinition } from './send-document-deleted-emails'; + +export const run = async ({ payload, io }: { payload: TSendDocumentDeletedEmailsJobDefinition; io: JobRunIO }) => { + const { teamId, documentName, inviterName, inviterEmail, meta, recipients } = payload; + + if (recipients.length === 0) { + return; + } + + const { branding, emailLanguage, senderEmail, replyToEmail, emailsDisabled, emailTransport } = await getEmailContext({ + emailType: 'RECIPIENT', + source: { + type: 'team', + teamId, + }, + meta, + }); + + // Don't send cancellation emails if the organisation has email sending + // disabled. Re-checked here (not just at enqueue time) because the org can be + // disabled between the delete request and this job running. + if (emailsDisabled) { + return; + } + + const assetBaseUrl = NEXT_PUBLIC_WEBAPP_URL() || 'http://localhost:3000'; + const i18n = await getI18nInstance(emailLanguage); + + for (const recipient of recipients) { + await io.runTask(`send-document-deleted-emails-${recipient.email}`, async () => { + if (!isRecipientEmailValidForSending(recipient)) { + return; + } + + const template = createElement(DocumentCancelTemplate, { + documentName, + inviterName: inviterName || undefined, + inviterEmail, + assetBaseUrl, + }); + + const [html, text] = await Promise.all([ + renderEmailWithI18N(template, { lang: emailLanguage, branding }), + renderEmailWithI18N(template, { lang: emailLanguage, branding, plainText: true }), + ]); + + await emailTransport.sendMail({ + to: { + address: recipient.email, + name: recipient.name, + }, + from: senderEmail, + replyTo: replyToEmail, + subject: i18n._(msg`Document Cancelled`), + html, + text, + }); + }); + } +}; diff --git a/packages/lib/jobs/definitions/emails/send-document-deleted-emails.ts b/packages/lib/jobs/definitions/emails/send-document-deleted-emails.ts new file mode 100644 index 000000000..e63de8f6e --- /dev/null +++ b/packages/lib/jobs/definitions/emails/send-document-deleted-emails.ts @@ -0,0 +1,52 @@ +import { z } from 'zod'; + +import type { JobDefinition } from '../../client/_internal/job'; + +const SEND_DOCUMENT_DELETED_EMAILS_JOB_DEFINITION_ID = 'send.document.deleted.emails'; + +const SEND_DOCUMENT_DELETED_EMAILS_JOB_DEFINITION_SCHEMA = z.object({ + teamId: z.number(), + documentName: z.string(), + inviterName: z.string().optional(), + inviterEmail: z.string(), + /** + * The document's email meta (sender, reply-to, language). Captured before the + * envelope is hard-deleted so `getEmailContext` resolves the exact same + * sender/reply-to/language the inline send used. + */ + meta: z + .object({ + emailId: z.string().nullable().optional(), + emailReplyTo: z.string().nullable().optional(), + language: z.string().optional(), + }) + .nullable(), + recipients: z + .object({ + email: z.string(), + name: z.string(), + }) + .array(), +}); + +export type TSendDocumentDeletedEmailsJobDefinition = z.infer< + typeof SEND_DOCUMENT_DELETED_EMAILS_JOB_DEFINITION_SCHEMA +>; + +export const SEND_DOCUMENT_DELETED_EMAILS_JOB_DEFINITION = { + id: SEND_DOCUMENT_DELETED_EMAILS_JOB_DEFINITION_ID, + name: 'Send Document Deleted Emails', + version: '1.0.0', + trigger: { + name: SEND_DOCUMENT_DELETED_EMAILS_JOB_DEFINITION_ID, + schema: SEND_DOCUMENT_DELETED_EMAILS_JOB_DEFINITION_SCHEMA, + }, + handler: async ({ payload, io }) => { + const handler = await import('./send-document-deleted-emails.handler'); + + await handler.run({ payload, io }); + }, +} as const satisfies JobDefinition< + typeof SEND_DOCUMENT_DELETED_EMAILS_JOB_DEFINITION_ID, + TSendDocumentDeletedEmailsJobDefinition +>; diff --git a/packages/lib/server-only/document/send-pending-email.ts b/packages/lib/jobs/definitions/emails/send-document-pending-email.handler.ts similarity index 66% rename from packages/lib/server-only/document/send-pending-email.ts rename to packages/lib/jobs/definitions/emails/send-document-pending-email.handler.ts index 4d803f5dd..3a7bf3e96 100644 --- a/packages/lib/server-only/document/send-pending-email.ts +++ b/packages/lib/jobs/definitions/emails/send-document-pending-email.handler.ts @@ -1,27 +1,24 @@ import { DocumentPendingEmailTemplate } from '@documenso/email/templates/document-pending'; +import { unsafeBuildEnvelopeIdQuery } from '@documenso/lib/utils/envelope'; import { prisma } from '@documenso/prisma'; import { msg } from '@lingui/core/macro'; import { EnvelopeType } from '@prisma/client'; import { createElement } from 'react'; +import { getI18nInstance } from '../../../client-only/providers/i18n-server'; +import { NEXT_PUBLIC_WEBAPP_URL } from '../../../constants/app'; +import { getEmailContext } from '../../../server-only/email/get-email-context'; +import { extractDerivedDocumentEmailSettings } from '../../../types/document-email'; +import { isRecipientEmailValidForSending } from '../../../utils/recipients'; +import { renderEmailWithI18N } from '../../../utils/render-email-with-i18n'; +import type { JobRunIO } from '../../client/_internal/job'; +import type { TSendDocumentPendingEmailJobDefinition } from './send-document-pending-email'; -import { getI18nInstance } from '../../client-only/providers/i18n-server'; -import { NEXT_PUBLIC_WEBAPP_URL } from '../../constants/app'; -import { extractDerivedDocumentEmailSettings } from '../../types/document-email'; -import type { EnvelopeIdOptions } from '../../utils/envelope'; -import { unsafeBuildEnvelopeIdQuery } from '../../utils/envelope'; -import { isRecipientEmailValidForSending } from '../../utils/recipients'; -import { renderEmailWithI18N } from '../../utils/render-email-with-i18n'; -import { getEmailContext } from '../email/get-email-context'; +export const run = async ({ payload }: { payload: TSendDocumentPendingEmailJobDefinition; io: JobRunIO }) => { + const { envelopeId, recipientId } = payload; -export interface SendPendingEmailOptions { - id: EnvelopeIdOptions; - recipientId: number; -} - -export const sendPendingEmail = async ({ id, recipientId }: SendPendingEmailOptions) => { const envelope = await prisma.envelope.findFirst({ where: { - ...unsafeBuildEnvelopeIdQuery(id, EnvelopeType.DOCUMENT), + ...unsafeBuildEnvelopeIdQuery({ type: 'envelopeId', id: envelopeId }, EnvelopeType.DOCUMENT), recipients: { some: { id: recipientId, @@ -38,12 +35,8 @@ export const sendPendingEmail = async ({ id, recipientId }: SendPendingEmailOpti }, }); - if (!envelope) { - throw new Error('Document not found'); - } - - if (envelope.recipients.length === 0) { - throw new Error('Document has no recipients'); + if (!envelope || envelope.recipients.length === 0) { + return; } const { branding, emailLanguage, senderEmail, replyToEmail, emailsDisabled, emailTransport } = await getEmailContext({ diff --git a/packages/lib/jobs/definitions/emails/send-document-pending-email.ts b/packages/lib/jobs/definitions/emails/send-document-pending-email.ts new file mode 100644 index 000000000..ff6b885c7 --- /dev/null +++ b/packages/lib/jobs/definitions/emails/send-document-pending-email.ts @@ -0,0 +1,30 @@ +import { z } from 'zod'; + +import type { JobDefinition } from '../../client/_internal/job'; + +const SEND_DOCUMENT_PENDING_EMAIL_JOB_DEFINITION_ID = 'send.document.pending.email'; + +const SEND_DOCUMENT_PENDING_EMAIL_JOB_DEFINITION_SCHEMA = z.object({ + envelopeId: z.string(), + recipientId: z.number(), +}); + +export type TSendDocumentPendingEmailJobDefinition = z.infer; + +export const SEND_DOCUMENT_PENDING_EMAIL_JOB_DEFINITION = { + id: SEND_DOCUMENT_PENDING_EMAIL_JOB_DEFINITION_ID, + name: 'Send Document Pending Email', + version: '1.0.0', + trigger: { + name: SEND_DOCUMENT_PENDING_EMAIL_JOB_DEFINITION_ID, + schema: SEND_DOCUMENT_PENDING_EMAIL_JOB_DEFINITION_SCHEMA, + }, + handler: async ({ payload, io }) => { + const handler = await import('./send-document-pending-email.handler'); + + await handler.run({ payload, io }); + }, +} as const satisfies JobDefinition< + typeof SEND_DOCUMENT_PENDING_EMAIL_JOB_DEFINITION_ID, + TSendDocumentPendingEmailJobDefinition +>; diff --git a/packages/lib/jobs/definitions/emails/send-recipient-removed-email.handler.ts b/packages/lib/jobs/definitions/emails/send-recipient-removed-email.handler.ts new file mode 100644 index 000000000..8f402704e --- /dev/null +++ b/packages/lib/jobs/definitions/emails/send-recipient-removed-email.handler.ts @@ -0,0 +1,105 @@ +import RecipientRemovedFromDocumentTemplate from '@documenso/email/templates/recipient-removed-from-document'; +import { prisma } from '@documenso/prisma'; +import { msg } from '@lingui/core/macro'; +import { createElement } from 'react'; + +import { getI18nInstance } from '../../../client-only/providers/i18n-server'; +import { NEXT_PUBLIC_WEBAPP_URL } from '../../../constants/app'; +import { getEmailContext } from '../../../server-only/email/get-email-context'; +import { assertOrganisationRatesAndLimits } from '../../../server-only/rate-limit/assert-organisation-rates-and-limits'; +import { extractDerivedDocumentEmailSettings } from '../../../types/document-email'; +import { isRecipientEmailValidForSending } from '../../../utils/recipients'; +import { renderEmailWithI18N } from '../../../utils/render-email-with-i18n'; +import type { JobRunIO } from '../../client/_internal/job'; +import type { TSendRecipientRemovedEmailJobDefinition } from './send-recipient-removed-email'; + +export const run = async ({ payload, io }: { payload: TSendRecipientRemovedEmailJobDefinition; io: JobRunIO }) => { + const { envelopeId, recipientEmail, recipientName, inviterName } = payload; + + const envelope = await prisma.envelope.findFirst({ + where: { + id: envelopeId, + }, + include: { + documentMeta: true, + }, + }); + + // The envelope may have been deleted between the recipient removal and this + // job running. Treat as a no-op so the job doesn't retry forever. + if (!envelope || !recipientEmail || !isRecipientEmailValidForSending({ email: recipientEmail })) { + return; + } + + // Re-checked at send time (not just at enqueue) so the email honors the + // document's current "recipient removed" setting. + const isRecipientRemovedEmailEnabled = extractDerivedDocumentEmailSettings(envelope.documentMeta).recipientRemoved; + + if (!isRecipientRemovedEmailEnabled) { + return; + } + + const { branding, emailLanguage, senderEmail, replyToEmail, organisationId, claims, emailsDisabled, emailTransport } = + await getEmailContext({ + emailType: 'RECIPIENT', + source: { + type: 'team', + teamId: envelope.teamId, + }, + meta: envelope.documentMeta, + }); + + // Don't send the removal email if the organisation has email sending disabled. + if (emailsDisabled) { + return; + } + + // Meter the removal email against the organisation email quota/stats. + // Add/remove churn can be used to blast unsolicited removal emails outside + // the email limits. + try { + await assertOrganisationRatesAndLimits({ + organisationId, + organisationClaim: claims, + type: 'email', + count: 1, + }); + } catch (_err) { + io.logger.warn({ + msg: 'Recipient removed email dropped: org email limit exceeded', + organisationId, + envelopeId: envelope.id, + }); + + return; + } + + const assetBaseUrl = NEXT_PUBLIC_WEBAPP_URL() || 'http://localhost:3000'; + + const template = createElement(RecipientRemovedFromDocumentTemplate, { + documentName: envelope.title, + inviterName: inviterName || undefined, + assetBaseUrl, + }); + + const i18n = await getI18nInstance(emailLanguage); + + await io.runTask('send-recipient-removed-email', async () => { + const [html, text] = await Promise.all([ + renderEmailWithI18N(template, { lang: emailLanguage, branding }), + renderEmailWithI18N(template, { lang: emailLanguage, branding, plainText: true }), + ]); + + await emailTransport.sendMail({ + to: { + address: recipientEmail, + name: recipientName, + }, + from: senderEmail, + replyTo: replyToEmail, + subject: i18n._(msg`You have been removed from a document`), + html, + text, + }); + }); +}; diff --git a/packages/lib/jobs/definitions/emails/send-recipient-removed-email.ts b/packages/lib/jobs/definitions/emails/send-recipient-removed-email.ts new file mode 100644 index 000000000..484c70ac0 --- /dev/null +++ b/packages/lib/jobs/definitions/emails/send-recipient-removed-email.ts @@ -0,0 +1,34 @@ +import { z } from 'zod'; + +import type { JobDefinition } from '../../client/_internal/job'; + +const SEND_RECIPIENT_REMOVED_EMAIL_JOB_DEFINITION_ID = 'send.recipient.removed.email'; + +const SEND_RECIPIENT_REMOVED_EMAIL_JOB_DEFINITION_SCHEMA = z.object({ + envelopeId: z.string(), + recipientEmail: z.string(), + recipientName: z.string(), + inviterName: z.string().optional(), +}); + +export type TSendRecipientRemovedEmailJobDefinition = z.infer< + typeof SEND_RECIPIENT_REMOVED_EMAIL_JOB_DEFINITION_SCHEMA +>; + +export const SEND_RECIPIENT_REMOVED_EMAIL_JOB_DEFINITION = { + id: SEND_RECIPIENT_REMOVED_EMAIL_JOB_DEFINITION_ID, + name: 'Send Recipient Removed Email', + version: '1.0.0', + trigger: { + name: SEND_RECIPIENT_REMOVED_EMAIL_JOB_DEFINITION_ID, + schema: SEND_RECIPIENT_REMOVED_EMAIL_JOB_DEFINITION_SCHEMA, + }, + handler: async ({ payload, io }) => { + const handler = await import('./send-recipient-removed-email.handler'); + + await handler.run({ payload, io }); + }, +} as const satisfies JobDefinition< + typeof SEND_RECIPIENT_REMOVED_EMAIL_JOB_DEFINITION_ID, + TSendRecipientRemovedEmailJobDefinition +>; diff --git a/packages/lib/server-only/document/complete-document-with-token.ts b/packages/lib/server-only/document/complete-document-with-token.ts index 531cc59f4..10aefd189 100644 --- a/packages/lib/server-only/document/complete-document-with-token.ts +++ b/packages/lib/server-only/document/complete-document-with-token.ts @@ -29,7 +29,6 @@ import { assertRecipientNotExpired } from '../../utils/recipients'; import { getIsRecipientsTurnToSign } from '../recipient/get-is-recipient-turn'; import { triggerWebhook } from '../webhooks/trigger/trigger-webhook'; import { isRecipientAuthorized } from './is-recipient-authorized'; -import { sendPendingEmail } from './send-pending-email'; export type CompleteDocumentWithTokenOptions = { token: string; @@ -389,7 +388,13 @@ export const completeDocumentWithToken = async ({ }); if (pendingRecipients.length > 0) { - await sendPendingEmail({ id, recipientId: recipient.id }); + await jobs.triggerJob({ + name: 'send.document.pending.email', + payload: { + envelopeId: envelope.id, + recipientId: recipient.id, + }, + }); if (envelope.documentMeta?.signingOrder === DocumentSigningOrder.SEQUENTIAL) { const [nextRecipient] = pendingRecipients; diff --git a/packages/lib/server-only/document/delete-document.ts b/packages/lib/server-only/document/delete-document.ts index 3711921c6..8eed2702f 100644 --- a/packages/lib/server-only/document/delete-document.ts +++ b/packages/lib/server-only/document/delete-document.ts @@ -1,13 +1,9 @@ -import DocumentCancelTemplate from '@documenso/email/templates/document-cancel'; import { prisma } from '@documenso/prisma'; -import { msg } from '@lingui/core/macro'; import type { DocumentMeta, Envelope, Recipient, User } from '@prisma/client'; import { DocumentStatus, EnvelopeType, RecipientRole, SendStatus, WebhookTriggerEvents } from '@prisma/client'; -import { createElement } from 'react'; -import { getI18nInstance } from '../../client-only/providers/i18n-server'; -import { NEXT_PUBLIC_WEBAPP_URL } from '../../constants/app'; import { AppError, AppErrorCode } from '../../errors/app-error'; +import { jobs } from '../../jobs/client'; import { DOCUMENT_AUDIT_LOG_TYPE } from '../../types/document-audit-logs'; import { extractDerivedDocumentEmailSettings } from '../../types/document-email'; import { mapEnvelopeToWebhookDocumentPayload, ZWebhookDocumentSchema } from '../../types/webhook-payload'; @@ -16,7 +12,6 @@ import { isDocumentCompleted } from '../../utils/document'; import { createDocumentAuditLogData } from '../../utils/document-audit-logs'; import { type EnvelopeIdOptions, unsafeBuildEnvelopeIdQuery } from '../../utils/envelope'; import { isRecipientEmailValidForSending } from '../../utils/recipients'; -import { renderEmailWithI18N } from '../../utils/render-email-with-i18n'; import { getEmailContext } from '../email/get-email-context'; import { getMemberRoles } from '../team/get-member-roles'; import { triggerWebhook } from '../webhooks/trigger/trigger-webhook'; @@ -125,7 +120,7 @@ const handleDocumentOwnerDelete = async ({ envelope, user, requestMetadata }: Ha return; } - const { branding, emailLanguage, senderEmail, replyToEmail, emailsDisabled, emailTransport } = await getEmailContext({ + const { emailLanguage, emailsDisabled } = await getEmailContext({ emailType: 'RECIPIENT', source: { type: 'team', @@ -192,50 +187,40 @@ const handleDocumentOwnerDelete = async ({ envelope, user, requestMetadata }: Ha return deletedEnvelope; } - // Send cancellation emails to recipients. - await Promise.all( - envelope.recipients.map(async (recipient) => { - if ( - recipient.sendStatus !== SendStatus.SENT || - !isRecipientEmailValidForSending(recipient) || - recipient.role === RecipientRole.CC - ) { - return; - } + // Enqueue cancellation emails as a background job. The envelope (and its + // documentMeta) is hard-deleted above, so the job can't look it up later — + // pass a self-contained payload with the recipients to notify. + const recipientsToNotify = envelope.recipients + .filter( + (recipient) => + recipient.sendStatus === SendStatus.SENT && + recipient.role !== RecipientRole.CC && + isRecipientEmailValidForSending(recipient), + ) + .map((recipient) => ({ + email: recipient.email, + name: recipient.name, + })); - const assetBaseUrl = NEXT_PUBLIC_WEBAPP_URL() || 'http://localhost:3000'; - - const template = createElement(DocumentCancelTemplate, { + if (recipientsToNotify.length > 0) { + await jobs.triggerJob({ + name: 'send.document.deleted.emails', + payload: { + teamId: envelope.teamId, documentName: envelope.title, inviterName: user.name || undefined, inviterEmail: user.email, - assetBaseUrl, - }); - - const [html, text] = await Promise.all([ - renderEmailWithI18N(template, { lang: emailLanguage, branding }), - renderEmailWithI18N(template, { - lang: emailLanguage, - branding, - plainText: true, - }), - ]); - - const i18n = await getI18nInstance(emailLanguage); - - await emailTransport.sendMail({ - to: { - address: recipient.email, - name: recipient.name, - }, - from: senderEmail, - replyTo: replyToEmail, - subject: i18n._(msg`Document Cancelled`), - html, - text, - }); - }), - ); + meta: envelope.documentMeta + ? { + emailId: envelope.documentMeta.emailId, + emailReplyTo: envelope.documentMeta.emailReplyTo, + language: emailLanguage, + } + : null, + recipients: recipientsToNotify, + }, + }); + } return deletedEnvelope; }; diff --git a/packages/lib/server-only/recipient/delete-envelope-recipient.ts b/packages/lib/server-only/recipient/delete-envelope-recipient.ts index 06d90ca46..e2e99feed 100644 --- a/packages/lib/server-only/recipient/delete-envelope-recipient.ts +++ b/packages/lib/server-only/recipient/delete-envelope-recipient.ts @@ -1,24 +1,16 @@ -import RecipientRemovedFromDocumentTemplate from '@documenso/email/templates/recipient-removed-from-document'; import { DOCUMENT_AUDIT_LOG_TYPE } from '@documenso/lib/types/document-audit-logs'; import type { ApiRequestMetadata } from '@documenso/lib/universal/extract-request-metadata'; import { prisma } from '@documenso/prisma'; -import { msg } from '@lingui/core/macro'; import { EnvelopeType, RecipientRole, SendStatus } from '@prisma/client'; -import { createElement } from 'react'; -import { getI18nInstance } from '../../client-only/providers/i18n-server'; -import { NEXT_PUBLIC_WEBAPP_URL } from '../../constants/app'; import { AppError, AppErrorCode } from '../../errors/app-error'; +import { jobs } from '../../jobs/client'; import { extractDerivedDocumentEmailSettings } from '../../types/document-email'; import { createDocumentAuditLogData } from '../../utils/document-audit-logs'; -import { logger } from '../../utils/logger'; import { canRecipientBeModified, isRecipientEmailValidForSending } from '../../utils/recipients'; -import { renderEmailWithI18N } from '../../utils/render-email-with-i18n'; import { buildTeamWhereQuery } from '../../utils/teams'; -import { getEmailContext } from '../email/get-email-context'; import { assertEnvelopeMutable } from '../envelope/assert-envelope-mutable'; import { getEnvelopeWhereInput } from '../envelope/get-envelope-by-id'; -import { assertOrganisationRatesAndLimits } from '../rate-limit/assert-organisation-rates-and-limits'; export interface DeleteEnvelopeRecipientOptions { userId: number; @@ -148,75 +140,16 @@ export const deleteEnvelopeRecipient = async ({ envelope.type === EnvelopeType.DOCUMENT && isRecipientEmailValidForSending(recipientToDelete) ) { - const assetBaseUrl = NEXT_PUBLIC_WEBAPP_URL() || 'http://localhost:3000'; - - const template = createElement(RecipientRemovedFromDocumentTemplate, { - documentName: envelope.title, - inviterName: envelope.team?.name || user.name || undefined, - assetBaseUrl, - }); - - const { - branding, - emailLanguage, - senderEmail, - replyToEmail, - organisationId, - claims, - emailsDisabled, - emailTransport, - } = await getEmailContext({ - emailType: 'RECIPIENT', - source: { - type: 'team', - teamId: envelope.teamId, - }, - meta: envelope.documentMeta, - }); - - // Don't send the removal email if the organisation has email sending disabled. - if (emailsDisabled) { - return deletedRecipient; - } - - // Meter the removal email against the organisation email quota/stats. - // Add/remove churn can be used to blast unsolicited removal emails - // outside the email limits. - try { - await assertOrganisationRatesAndLimits({ - organisationId, - organisationClaim: claims, - type: 'email', - count: 1, - }); - } catch (_err) { - logger.warn({ - msg: 'Recipient removed email dropped: org email limit exceeded', - organisationId, - recipientId: recipientToDelete.id, + // Enqueue the "removed from document" email as a background job so a + // transient mail outage doesn't fail the request and the send is retried. + await jobs.triggerJob({ + name: 'send.recipient.removed.email', + payload: { envelopeId: envelope.id, - }); - - return deletedRecipient; - } - - const [html, text] = await Promise.all([ - renderEmailWithI18N(template, { lang: emailLanguage, branding }), - renderEmailWithI18N(template, { lang: emailLanguage, branding, plainText: true }), - ]); - - const i18n = await getI18nInstance(emailLanguage); - - await emailTransport.sendMail({ - to: { - address: recipientToDelete.email, - name: recipientToDelete.name, + recipientEmail: recipientToDelete.email, + recipientName: recipientToDelete.name, + inviterName: envelope.team?.name || user.name || undefined, }, - from: senderEmail, - replyTo: replyToEmail, - subject: i18n._(msg`You have been removed from a document`), - html, - text, }); } diff --git a/packages/lib/server-only/recipient/set-document-recipients.ts b/packages/lib/server-only/recipient/set-document-recipients.ts index 2e58936ab..ca2ca666d 100644 --- a/packages/lib/server-only/recipient/set-document-recipients.ts +++ b/packages/lib/server-only/recipient/set-document-recipients.ts @@ -1,4 +1,3 @@ -import RecipientRemovedFromDocumentTemplate from '@documenso/email/templates/recipient-removed-from-document'; import { DOCUMENT_AUDIT_LOG_TYPE } from '@documenso/lib/types/document-audit-logs'; import type { TRecipientAccessAuthTypes } from '@documenso/lib/types/document-auth'; import { type TRecipientActionAuthTypes, ZRecipientAuthOptionsSchema } from '@documenso/lib/types/document-auth'; @@ -7,25 +6,18 @@ import { nanoid } from '@documenso/lib/universal/id'; import { createDocumentAuditLogData, diffRecipientChanges } from '@documenso/lib/utils/document-audit-logs'; import { createRecipientAuthOptions } from '@documenso/lib/utils/document-auth'; import { prisma } from '@documenso/prisma'; -import { msg } from '@lingui/core/macro'; import type { Recipient } from '@prisma/client'; import { EnvelopeType, RecipientRole, SendStatus, SigningStatus } from '@prisma/client'; -import { createElement } from 'react'; import { isDeepEqual } from 'remeda'; -import { getI18nInstance } from '../../client-only/providers/i18n-server'; -import { NEXT_PUBLIC_WEBAPP_URL } from '../../constants/app'; import { AppError, AppErrorCode } from '../../errors/app-error'; +import { jobs } from '../../jobs/client'; import { extractDerivedDocumentEmailSettings } from '../../types/document-email'; import { type EnvelopeIdOptions, mapSecondaryIdToDocumentId } from '../../utils/envelope'; -import { logger } from '../../utils/logger'; import { canRecipientBeModified, isRecipientEmailValidForSending } from '../../utils/recipients'; -import { renderEmailWithI18N } from '../../utils/render-email-with-i18n'; -import { getEmailContext } from '../email/get-email-context'; import { assertEnvelopeMutable } from '../envelope/assert-envelope-mutable'; import { getEnvelopeWhereInput } from '../envelope/get-envelope-by-id'; import { assertCompatibleRecipientRole } from '../signature-level/assert-compatible-recipient-role'; -import { assertOrganisationRatesAndLimits } from '../rate-limit/assert-organisation-rates-and-limits'; export interface SetDocumentRecipientsOptions { userId: number; @@ -88,16 +80,6 @@ export const setDocumentRecipients = async ({ throw new Error('Document already complete'); } - const { branding, emailLanguage, senderEmail, replyToEmail, organisationId, claims, emailsDisabled, emailTransport } = - await getEmailContext({ - emailType: 'RECIPIENT', - source: { - type: 'team', - teamId, - }, - meta: envelope.documentMeta, - }); - const recipientsHaveActionAuth = recipients.some( (recipient) => recipient.actionAuth && recipient.actionAuth.length > 0, ); @@ -290,67 +272,29 @@ export const setDocumentRecipients = async ({ const isRecipientRemovedEmailEnabled = extractDerivedDocumentEmailSettings(envelope.documentMeta).recipientRemoved; - // Send emails to deleted recipients who have emails. - await Promise.all( - removedRecipients.map(async (recipient) => { - if ( - emailsDisabled || - recipient.sendStatus !== SendStatus.SENT || - recipient.role === RecipientRole.CC || - !isRecipientRemovedEmailEnabled || - !isRecipientEmailValidForSending(recipient) - ) { - return; - } + if (isRecipientRemovedEmailEnabled) { + await Promise.all( + removedRecipients.map(async (recipient) => { + if ( + recipient.sendStatus !== SendStatus.SENT || + recipient.role === RecipientRole.CC || + !isRecipientEmailValidForSending(recipient) + ) { + return; + } - // Meter against the organisation email quota/stats so add/remove churn - // can't be used to send unsolicited "removed" emails outside the limits. - try { - await assertOrganisationRatesAndLimits({ - organisationId, - organisationClaim: claims, - type: 'email', - count: 1, + await jobs.triggerJob({ + name: 'send.recipient.removed.email', + payload: { + envelopeId: envelope.id, + recipientEmail: recipient.email, + recipientName: recipient.name, + inviterName: user.name || undefined, + }, }); - } catch (_err) { - logger.warn({ - msg: 'Recipient removed email dropped: org email limit exceeded', - organisationId, - recipientId: recipient.id, - envelopeId: envelope.id, - }); - - return; - } - - const assetBaseUrl = NEXT_PUBLIC_WEBAPP_URL() || 'http://localhost:3000'; - - const template = createElement(RecipientRemovedFromDocumentTemplate, { - documentName: envelope.title, - inviterName: user.name || undefined, - assetBaseUrl, - }); - - const [html, text] = await Promise.all([ - renderEmailWithI18N(template, { lang: emailLanguage, branding }), - renderEmailWithI18N(template, { lang: emailLanguage, branding, plainText: true }), - ]); - - const i18n = await getI18nInstance(emailLanguage); - - await emailTransport.sendMail({ - to: { - address: recipient.email, - name: recipient.name, - }, - from: senderEmail, - replyTo: replyToEmail, - subject: i18n._(msg`You have been removed from a document`), - html, - text, - }); - }), - ); + }), + ); + } } // Filter out recipients that have been removed or have been updated. diff --git a/packages/lib/translations/pl/web.po b/packages/lib/translations/pl/web.po index 5fbfa727c..010ea2157 100644 --- a/packages/lib/translations/pl/web.po +++ b/packages/lib/translations/pl/web.po @@ -8,7 +8,7 @@ msgstr "" "Language: pl\n" "Project-Id-Version: documenso-app\n" "Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: 2026-06-22 13:53\n" +"PO-Revision-Date: 2026-06-23 13:05\n" "Last-Translator: \n" "Language-Team: Polish\n" "Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n" @@ -31,7 +31,7 @@ msgstr "Adres „{0}” nie jest prawidłowym adresem e-mail." #. placeholder {1}: timezone || '' #: apps/remix/app/components/general/document-signing/document-signing-date-field.tsx msgid "\"{0}\" will appear on the document as it has a timezone of \"{1}\"." -msgstr "W dokumencie, z racji strefy czasowej „{1}”, pojawi się wartość „{0}”." +msgstr "Ze względu na strefę czasową „{1}”, w dokumencie pojawi się wartość „{0}”." #: packages/email/template-components/template-document-super-delete.tsx msgid "\"{documentName}\" has been deleted by an admin." @@ -51,7 +51,7 @@ msgstr "Użytkownik „{placeholderEmail}” z zespołu „Zespół X” zaprosi #: apps/remix/app/components/dialogs/envelope-cancel-dialog.tsx msgid "\"{title}\" has been successfully cancelled" -msgstr "Dokument „{title}” został pomyślnie anulowany" +msgstr "Dokument „{title}” został anulowany" #: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx msgid "\"{title}\" has been successfully deleted" @@ -69,7 +69,7 @@ msgstr "„Zespół X” zaprosił Cię do podpisania dokumentu „ABC”." #: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.branding.tsx #: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.branding.tsx msgid "(line {0})" -msgstr "(wiersz {0})" +msgstr "(linia {0})" #: apps/remix/app/components/embed/embed-document-signing-page-v1.tsx #: apps/remix/app/components/general/document-signing/document-signing-form.tsx @@ -104,13 +104,13 @@ msgstr "{0, plural, one {Pozostał # znak} few {Pozostały # znaki} many {Pozost #: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.branding.tsx #: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.branding.tsx msgid "{0, plural, one {# CSS rule was dropped during sanitisation.} other {# CSS rules were dropped during sanitisation.}}" -msgstr "{0, plural, one {# reguła CSS została odrzucona podczas oczyszczania.} few {# reguły CSS zostały odrzucone podczas oczyszczania.} many {# reguł CSS zostało odrzuconych podczas oczyszczania.} other {# reguły CSS zostały odrzucone podczas oczyszczania.}}" +msgstr "{0, plural, one {# reguła CSS została usunięta podczas oczyszczenia kodu.} few {# reguły CSS zostały usunięte podczas oczyszczenia kodu.} many {# reguł CSS zostało usuniętych podczas oczyszczenia kodu.} other {# reguły CSS zostały usunięte podczas oczyszczenia kodu.}}" #. placeholder {0}: result.cancelledCount #. placeholder {1}: result.failedIds.length #: apps/remix/app/components/dialogs/envelopes-bulk-cancel-dialog.tsx msgid "{0, plural, one {# document cancelled.} other {# documents cancelled.}} {1, plural, one {# document could not be cancelled.} other {# documents could not be cancelled.}}" -msgstr "{0, plural, one {Anulowano # dokument.} few {Anulowano # dokumenty.} many {Anulowano # dokumentów.} other {Anulowano # dokumentów.}} {1, plural, one {Nie udało się anulować # dokumentu.} few {Nie udało się anulować # dokumentów.} many {Nie udało się anulować # dokumentów.} other {Nie udało się anulować # dokumentów.}}" +msgstr "{0, plural, one {Anulowano # dokument.} few {Anulowano # dokumenty.} many {Anulowano # dokumentów.} other {Anulowano # dokumentów.}} {1, plural, one {Nie można było anulować # dokumentu.} few {Nie można było anulować # dokumentów.} many {Nie można było anulować # dokumentów.} other {Nie można było anulować # dokumentów.}}" #. placeholder {0}: result.cancelledCount #: apps/remix/app/components/dialogs/envelopes-bulk-cancel-dialog.tsx @@ -184,12 +184,12 @@ msgstr "{0, plural, one {<0>Masz <1>1 oczekujące zaproszenie} few {<2>M #: apps/remix/app/components/general/document-signing/document-signing-page-view-v2.tsx #: apps/remix/app/components/general/envelope-signing/envelope-signer-header.tsx msgid "{0, plural, one {1 Field Remaining} other {# Fields Remaining}}" -msgstr "{0, plural, one {Pozostało 1 pole} few {Pozostały # pola} many {Pozostało # pól} other {Pozostało # pola}}" +msgstr "{0, plural, one {Pozostało 1 pole} few {Pozostały # pola} many {Pozostało # pól} other {Pozostało # pól}}" #. placeholder {0}: fieldsOnExcessPages.length #: apps/remix/app/components/dialogs/envelope-item-edit-dialog.tsx msgid "{0, plural, one {1 field will be deleted because the new PDF has fewer pages than the current one.} other {# fields will be deleted because the new PDF has fewer pages than the current one.}}" -msgstr "{0, plural, one {1 pole zostanie usunięte, ponieważ nowy plik PDF ma mniejszą liczbę stron niż obecny.} few {# pola zostaną usunięte, ponieważ nowy plik PDF ma mniejszą liczbę stron niż obecny.} many {# pól zostanie usuniętych, ponieważ nowy plik PDF ma mniejszą liczbę stron niż obecny.} other {# pola zostanie usuniętych, ponieważ nowy plik PDF ma mniejszą liczbę stron niż obecny.}}" +msgstr "{0, plural, one {1 pole zostanie usunięte, ponieważ nowy plik PDF ma mniejszą liczbę stron niż obecny.} few {# pola zostaną usunięte, ponieważ nowy plik PDF ma mniejszą liczbę stron niż obecny.} many {# pól zostanie usuniętych, ponieważ nowy plik PDF ma mniejszą liczbę stron niż obecny.} other {# pól zostanie usuniętych, ponieważ nowy plik PDF ma mniejszą liczbę stron niż obecny.}}" #. placeholder {0}: fields.filter((field) => field.envelopeItemId === doc.id).length #. placeholder {0}: remainingFields.filter((field) => field.envelopeItemId === doc.id).length @@ -264,7 +264,7 @@ msgstr "{0, plural, one {Znaleźliśmy # odbiorcę w dokumencie.} few {Znaleźli #. placeholder {0}: envelopeIds.length #: apps/remix/app/components/dialogs/envelopes-bulk-cancel-dialog.tsx msgid "{0, plural, one {You are about to cancel the selected document.} other {You are about to cancel # documents.}}" -msgstr "{0, plural, one {Zamierzasz anulować zaznaczony dokument.} few {Zamierzasz anulować # dokumenty.} many {Zamierzasz anulować # dokumentów.} other {Zamierzasz anulować # dokumentów.}}" +msgstr "{0, plural, one {Zamierzasz anulować dokument.} few {Zamierzasz anulować # dokumenty.} many {Zamierzasz anulować # dokumentów.} other {Zamierzasz anulować # dokumentów.}}" #. placeholder {0}: envelopeIds.length #: apps/remix/app/components/dialogs/envelopes-bulk-delete-dialog.tsx @@ -318,7 +318,7 @@ msgstr "Pozostało {0} z {1} dokumentów w tym miesiącu." #. placeholder {2}: envelope.title #: packages/lib/server-only/document/resend-document.ts msgid "{0} on behalf of \"{1}\" has invited you to {recipientActionVerb} the document \"{2}\"." -msgstr "Sprawdź i {recipientActionVerb} dokument „{2}” utworzony przez użytkownika {0} z zespołu „{1}”." +msgstr "Sprawdź i {recipientActionVerb} dokument „{2}” utworzony przez użytkownika {0} z zespołu „{1}”." #. placeholder {0}: organisation.name #: apps/remix/app/routes/_authenticated+/o.$orgUrl._index.tsx @@ -379,7 +379,7 @@ msgstr "Użytkownik {inviterName} anulował dokument<0/>„{documentName}”" #. placeholder {0}: _(actionVerb).toLowerCase() #: packages/email/template-components/template-document-invite.tsx msgid "{inviterName} has invited you to {0}<0/>\"{documentName}\"" -msgstr "Sprawdź i {0} dokument „{documentName}}” utworzony przez użytkownika {inviterName}" +msgstr "Sprawdź i {0} dokument „{documentName}” utworzony przez użytkownika {inviterName}" #: packages/email/templates/document-invite.tsx msgid "{inviterName} has invited you to {action} {documentName}" @@ -401,12 +401,12 @@ msgstr "Użytkownik {inviterName} usunął Cię z dokumentu<0/>„{documentName} #. placeholder {1}: envelope.title #: packages/lib/jobs/definitions/emails/send-signing-email.handler.ts msgid "{inviterName} on behalf of \"{0}\" has invited you to {recipientActionVerb} the document \"{1}\"." -msgstr "Sprawdź i {recipientActionVerb} dokument „{1}” utworzony przez użytkownika {inviterName} z zespołu „{0}”." +msgstr "Sprawdź i {recipientActionVerb} dokument „{1}” utworzony przez użytkownika {inviterName} z zespołu „{0}”." #. placeholder {0}: _(actionVerb).toLowerCase() #: packages/email/template-components/template-document-invite.tsx msgid "{inviterName} on behalf of \"{teamName}\" has invited you to {0}<0/>\"{documentName}\"" -msgstr "Sprawdź i {0} dokument<0/>„{documentName}” utworzony przez użytkownika {inviterName} z zespołu „{teamName}”" +msgstr "Sprawdź i {0} dokument<0/>„{documentName}” utworzony przez użytkownika {inviterName} z zespołu „{teamName}”" #: packages/email/templates/document-invite.tsx msgid "{inviterName} on behalf of \"{teamName}\" has invited you to {action} {documentName}" @@ -425,7 +425,7 @@ msgstr "{maximumEnvelopeItemCount, plural, one {Nie możesz przesłać więcej n #: apps/remix/app/components/dialogs/email-transport-delete-dialog.tsx msgid "{organisationClaimCount, plural, one {# Organisation claim} other {# Organisation claims}}" -msgstr "{organisationClaimCount, plural, one {# roszczenie organizacji} few {# roszczenia organizacji} many {# roszczeń organizacji} other {# roszczenia organizacji}}" +msgstr "{organisationClaimCount, plural, one {# subskrypcję organizacji} few {# subskrypcje organizacji} many {# subskrypcji organizacji} other {# subskrypcji organizacji}}" #: apps/remix/app/components/general/direct-template/direct-template-page.tsx msgid "{recipientActionVerb} document" @@ -480,7 +480,7 @@ msgstr "Użytkownik {signerName} odrzucił dokument „{documentName}”." #: apps/remix/app/components/dialogs/email-transport-delete-dialog.tsx msgid "{subscriptionClaimCount, plural, one {# Subscription claim} other {# Subscription claims}}" -msgstr "{subscriptionClaimCount, plural, one {# roszczenie subskrypcji} few {# roszczenia subskrypcji} many {# roszczeń subskrypcji} other {# roszczenia subskrypcji}}" +msgstr "{subscriptionClaimCount, plural, one {# subskrypcję} few {# subskrypcje} many {# subskrypcji} other {# subskrypcji}}" #. placeholder {0}: _(actionVerb).toLowerCase() #: packages/email/template-components/template-document-invite.tsx @@ -505,15 +505,15 @@ msgstr "Użytkownik {user} zatwierdził dokument" #: packages/lib/utils/document-audit-logs.ts msgid "{user} authenticated with the signing provider" -msgstr "{user} został uwierzytelniony u dostawcy podpisu" +msgstr "Użytkownik {user} uwierzytelnił się u dostawcy podpisu" #: packages/lib/utils/document-audit-logs.ts msgid "{user} authorised the remote signature" -msgstr "{user} autoryzował zdalny podpis" +msgstr "Użytkownik {user} autoryzował podpis zdalny" #: packages/lib/utils/document-audit-logs.ts msgid "{user} cancelled the document" -msgstr "{user} anulował dokument" +msgstr "Użytkownik {user} anulował dokument" #: packages/lib/utils/document-audit-logs.ts msgid "{user} CC'd the document" @@ -580,7 +580,7 @@ msgstr "Użytkownik {user} poprosił o kod weryfikacyjny dla dokumentu" #: packages/lib/utils/document-audit-logs.ts msgid "{user} requested a remote signature" -msgstr "{user} zażądał zdalnego podpisu" +msgstr "Użytkownik {user} poprosił o podpis zdalny" #. placeholder {0}: data.recipientEmail #: packages/lib/utils/document-audit-logs.ts @@ -655,7 +655,7 @@ msgstr "Użytkownik {user} wyświetlił dokument" #: packages/lib/utils/document-audit-logs.ts msgid "{user}'s remote signature was applied" -msgstr "Zastosowano zdalny podpis użytkownika {user}" +msgstr "Użytkownik {user} złożył podpis zdalny" #: packages/lib/utils/document-audit-logs.ts msgid "{user}'s signing provider authentication failed" @@ -687,7 +687,7 @@ msgstr "{visibleRows, plural, one {# wynik} few {# wyniki} many {# wyników} oth #: apps/remix/app/routes/_recipient+/sign.$token+/_index.tsx #: apps/remix/app/routes/_recipient+/sign.$token+/_index.tsx msgid "<0>\"{0}\" is no longer available to sign" -msgstr "<0>„{0}” nie jest już dostępny do podpisu" +msgstr "Dokument <0>„{0}” nie jest już dostępny do podpisu" #: packages/email/templates/organisation-account-link-confirmation.tsx msgid "<0>{organisationName} has requested to create an account on your behalf." @@ -1272,7 +1272,7 @@ msgstr "Dodaj dokument" #: packages/ui/primitives/document-flow/add-settings.tsx #: packages/ui/primitives/template-flow/add-template-settings.tsx msgid "Add a URL to redirect the user to once the document is signed" -msgstr "Dodaj adres URL do przekierowania użytkownika po podpisaniu dokumentu" +msgstr "Dodaj adres URL, na który użytkownik zostanie przekierowany po podpisaniu dokumentu" #: apps/remix/app/components/general/document/document-edit-form.tsx #: apps/remix/app/components/general/template/template-edit-form.tsx @@ -1302,11 +1302,11 @@ msgstr "Dodaj identyfikator zewnętrzny szablonu. Może być używany do identyf #: apps/remix/app/components/dialogs/envelopes-bulk-cancel-dialog.tsx msgid "Add an optional reason for cancelling these documents" -msgstr "Dodaj opcjonalny powód anulowania tych dokumentów" +msgstr "Dodaj opcjonalny powód anulowania dokumentów" #: apps/remix/app/components/dialogs/envelope-cancel-dialog.tsx msgid "Add an optional reason for cancelling this document" -msgstr "Dodaj opcjonalny powód anulowania tego dokumentu" +msgstr "Dodaj opcjonalny powód anulowania dokumentu" #: apps/remix/app/components/general/envelope-editor/envelope-editor-upload-page.tsx msgid "Add and configure multiple documents" @@ -1344,7 +1344,7 @@ msgstr "Dodaj domenę" #: apps/remix/app/components/dialogs/email-transport-create-dialog.tsx msgid "Add Email Transport" -msgstr "Dodaj transport e-mailowy" +msgstr "Dodaj dostawcę poczty e-mail" #: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx msgid "Add fields" @@ -1417,7 +1417,7 @@ msgstr "Dodaj domyślny tekst" #: apps/remix/app/components/general/rate-limit-array-input.tsx msgid "Add rate limit" -msgstr "Dodaj limit liczby żądań" +msgstr "Dodaj limit przepustowości" #: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx msgid "Add recipients" @@ -1477,7 +1477,7 @@ msgstr "Dodaj ten adres URL do dozwolonych adresów przekierowania Twojego dosta #: apps/remix/app/components/dialogs/email-transport-create-dialog.tsx msgid "Add transport" -msgstr "Dodaj transport" +msgstr "Dodaj dostawcę poczty e-mail" #: apps/remix/app/components/forms/branding-preferences-form.tsx msgid "Additional brand information to display at the bottom of emails" @@ -1513,7 +1513,7 @@ msgstr "Tylko dla administratorów" #: apps/remix/app/components/forms/branding-preferences-form.tsx msgid "Advanced — Custom CSS" -msgstr "Zaawansowane — własny CSS" +msgstr "Zaawansowane – niestandardowy CSS" #: packages/ui/primitives/document-flow/add-settings.tsx #: packages/ui/primitives/template-flow/add-template-settings.tsx @@ -1559,7 +1559,7 @@ msgstr "Wszystko" #: apps/remix/app/routes/_authenticated+/admin+/organisation-stats._index.tsx #: apps/remix/app/routes/_authenticated+/admin+/organisation-stats._index.tsx msgid "All claims" -msgstr "Wszystkie zgłoszenia" +msgstr "Wszystkie subskrypcje" #: apps/remix/app/components/general/app-command-menu.tsx msgid "All documents" @@ -1638,7 +1638,7 @@ msgstr "Odpowiadanie odbiorcom dokumentu bezpośrednio na ten adres e-mail" #: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.sso.tsx msgid "Allow Personal Organisations" -msgstr "Zezwalaj na osobiste organizacje" +msgstr "Zezwól na osobiste organizacje" #: apps/remix/app/components/embed/authoring/configure-document-recipients.tsx #: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx @@ -1800,7 +1800,7 @@ msgstr "Wystąpił błąd podczas wyłączania użytkownika." #: apps/remix/app/utils/toast-error-messages.ts msgid "An error occurred while distributing the document." -msgstr "Wystąpił błąd podczas dystrybucji dokumentu." +msgstr "Wystąpił błąd podczas wysyłania dokumentu." #: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx msgid "An error occurred while enabling direct link signing." @@ -1907,11 +1907,11 @@ msgstr "Wystąpił błąd. Spróbuj ponownie później." #: packages/lib/jobs/definitions/emails/send-organisation-limit-alert-email.handler.ts msgid "An organisation has exceeded their fair use limits" -msgstr "Organizacja przekroczyła swoje limity dozwolonego użytkowania" +msgstr "Organizacja przekroczyła limit dozwolonego użytkowania" #: packages/lib/jobs/definitions/emails/send-organisation-limit-alert-email.handler.ts msgid "An organisation is nearing their fair use limits" -msgstr "Organizacja zbliża się do swoich limitów dozwolonego użytkowania" +msgstr "Organizacja zbliża się do limit dozwolonego użytkowania" #: apps/remix/app/routes/_unauthenticated+/organisation.sso.confirmation.$token.tsx msgid "An organisation wants to create an account for you. Please review the details below." @@ -2019,7 +2019,7 @@ msgstr "Klucz API" #: apps/remix/app/components/general/claim-limit-fields.tsx msgid "API rate limits" -msgstr "Limity liczby żądań API" +msgstr "Limit przepustowości API" #: apps/remix/app/components/general/organisation-usage-panel.tsx msgid "API requests" @@ -2027,7 +2027,7 @@ msgstr "Żądania API" #: apps/remix/app/components/general/organisations/organisation-quota-banner.tsx msgid "API requests have been temporarily paused" -msgstr "Żądania API zostały tymczasowo wstrzymane." +msgstr "Żądania API zostały tymczasowo wstrzymane" #: apps/remix/app/components/general/settings-nav-desktop.tsx #: apps/remix/app/components/general/settings-nav-mobile.tsx @@ -2039,7 +2039,7 @@ msgstr "Tokeny API" #: apps/remix/app/components/general/organisations/organisation-quota-banner.tsx msgid "API usage is approaching fair use limits" -msgstr "Wykorzystanie API zbliża się do limitów dozwolonego użytkowania" +msgstr "Wykorzystanie API zbliża się do limitu dozwolonego użytkowania" #: apps/remix/app/routes/_authenticated+/admin+/stats.tsx msgid "App Version" @@ -2047,7 +2047,7 @@ msgstr "Wersja aplikacji" #: apps/remix/app/components/general/document-signing/csc-recipient-signing-in-progress-page.tsx msgid "Applying your signature" -msgstr "Trwa stosowanie Twojego podpisu" +msgstr "Składanie podpisu" #: apps/remix/app/components/general/organisations/organisation-quota-banner.tsx msgid "Approaching fair use limit" @@ -2057,7 +2057,7 @@ msgstr "Zbliżasz się do limitu dozwolonego użytkowania" #: packages/email/templates/organisation-limit-alert.tsx #: packages/lib/jobs/definitions/emails/send-organisation-limit-alert-email.handler.ts msgid "Approaching Your Plan Limits" -msgstr "Zbliżasz się do limitów swojego planu" +msgstr "Zbliżasz się do limitu planu" #: apps/remix/app/components/general/document-signing/document-signing-complete-dialog.tsx #: apps/remix/app/components/general/document-signing/document-signing-complete-dialog.tsx @@ -2118,7 +2118,7 @@ msgstr "Czy na pewno chcesz usunąć następującą subskrypcję?" #: apps/remix/app/components/dialogs/email-transport-delete-dialog.tsx msgid "Are you sure you want to delete the following transport?" -msgstr "Czy na pewno chcesz usunąć następujący transport?" +msgstr "Czy na pewno chcesz usunąć następującego dostawcę poczty e-mail?" #: apps/remix/app/components/dialogs/folder-delete-dialog.tsx msgid "Are you sure you want to delete this folder?" @@ -2205,7 +2205,7 @@ msgstr "Przygotowujący" #: apps/remix/app/components/embed/multisign/multi-sign-document-list.tsx msgid "Assistants and Copy roles are currently not compatible with the multi-sign experience." -msgstr "Przygotowujący i pobierający kopię nie są kompatybilni z funkcją wielu podpisów." +msgstr "Przygotowujący i pobierający kopię nie są kompatybilni z funkcją wielu podpisów." #: apps/remix/app/components/general/document/document-page-view-recipients.tsx msgid "Assisted" @@ -2328,7 +2328,7 @@ msgstr "Zadania w tle" #: apps/remix/app/components/dialogs/claim-update-dialog.tsx msgid "Backport email transport" -msgstr "Backport transportu e-mailowego" +msgstr "Użyj dostawcy poczty e-mail" #: apps/remix/app/components/forms/2fa/disable-authenticator-app-dialog.tsx #: apps/remix/app/components/forms/signin.tsx @@ -2345,11 +2345,11 @@ msgstr "Baner został zaktualizowany" #: apps/remix/app/components/forms/branding-preferences-form.tsx msgid "Base background colour." -msgstr "Bazowy kolor tła." +msgstr "Kolor tła." #: apps/remix/app/components/forms/branding-preferences-form.tsx msgid "Base text colour." -msgstr "Bazowy kolor tekstu." +msgstr "Kolor tekstu." #: packages/email/template-components/template-confirmation-email.tsx msgid "Before you get started, please confirm your email address by clicking the button below:" @@ -2367,7 +2367,7 @@ msgstr "Płatności" #: apps/remix/app/components/forms/public-profile-form.tsx msgid "Bio" -msgstr "Bio" +msgstr "Biografia" #: packages/ui/primitives/signature-pad/signature-pad-color-picker.tsx msgid "Black" @@ -2375,7 +2375,7 @@ msgstr "Czarny" #: apps/remix/app/components/general/admin-email-blocklist-section.tsx msgid "Block signups from additional email domains on top of the bundled disposable email list. Subdomains are matched automatically (e.g. blocking \"bad.com\" also blocks \"foo.bad.com\")." -msgstr "Blokuj rejestracje z dodatkowych domen e‑mail ponad dołączoną listę jednorazowych adresów. Subdomeny są dopasowywane automatycznie (np. zablokowanie \"bad.com\" powoduje również zablokowanie \"foo.bad.com\")." +msgstr "Zablokuj rejestracje z konkretnych domen. Subdomeny są blokowane automatycznie (np. domena.pl spowoduje również zablokowanie subdomena.domena.pl). Domeny tymczasowych adresów e-mail znajdują się na tej liście." #: apps/remix/app/components/general/organisation-usage-panel.tsx msgid "Blocked" @@ -2502,6 +2502,7 @@ msgstr "Akceptując prośbę, przyznasz zespołowi {0} następujące uprawnienia #: packages/email/templates/confirm-team-email.tsx msgid "By accepting this request, you will be granting <0>{teamName} access to:" msgstr "Akceptując prośbę, umożliwisz zespołowi <0>{teamName} na:" +msgstr "Akceptując prośbę, umożliwisz zespołowi <0>{teamName}:" #: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx msgid "By deleting this document, the following will occur:" @@ -2711,7 +2712,7 @@ msgstr "Wyśrodkuj" #: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page-renderer.tsx msgid "Change Field Type" -msgstr "Zmień typ pola" +msgstr "Zmień rodzaj pola" #: apps/remix/app/components/general/app-command-menu.tsx msgid "Change language" @@ -2800,7 +2801,7 @@ msgstr "Wybierz..." #: apps/remix/app/components/tables/admin-organisation-stats-table.tsx msgid "Claim" -msgstr "Zgłoszenie" +msgstr "Subskrypcja" #: apps/remix/app/components/general/claim-account.tsx msgid "Claim account" @@ -2830,7 +2831,7 @@ msgstr "Kliknij, aby rozpocząć" #: apps/remix/app/components/general/template/template-page-view-recent-activity.tsx #: apps/remix/app/components/tables/settings-public-profile-templates-table.tsx msgid "Click here to retry" -msgstr "Kliknij tutaj, aby spróbować ponownie" +msgstr "Kliknij, aby spróbować ponownie" #: apps/remix/app/components/dialogs/organisation-member-invite-dialog.tsx msgid "Click here to upload" @@ -2902,7 +2903,7 @@ msgstr "Zwiń panel boczny" #: apps/remix/app/components/general/admin-email-blocklist-section.tsx msgid "Comma-separated list of email domains to block from signing up." -msgstr "Lista domen e‑mail do zablokowania przy rejestracji, oddzielonych przecinkami." +msgstr "Lista zablokowanych domen do rejestracji oddzielona przecinkami." #: apps/remix/app/components/embed/authoring/configure-document-advanced-settings.tsx msgid "Communication" @@ -3018,7 +3019,7 @@ msgstr "Skonfiguruj ustawienia zabezpieczeń dokumentu." #: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx msgid "Configure signing reminder settings for the document." -msgstr "Skonfiguruj przypomnienia o podpisaniu dokumentu." +msgstr "Skonfiguruj ustawienia przypomnień o podpisaniu dokumentu." #: apps/remix/app/components/dialogs/public-profile-template-manage-dialog.tsx msgid "Configure template" @@ -3050,7 +3051,7 @@ msgstr "Skonfiguruj role w zespole dla każdego użytkownika" #: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx msgid "Configure when and how often reminder emails are sent to recipients who have not yet completed signing. Uses the team default when set to inherit." -msgstr "Skonfiguruj, kiedy i jak często przypomnienia o podpisaniu będą wysyłane do odbiorców, którzy nie zakończyli dokumentu. Opcja dziedziczenia korzysta z domyślnych ustawień zespołu." +msgstr "Skonfiguruj, kiedy i jak często przypomnienia e-mail są wysyłane do odbiorców, którzy jeszcze nie ukończyli podpisywania. Gdy ustawione na dziedziczenie, używane są domyślne ustawienia zespołu." #: apps/remix/app/components/dialogs/public-profile-template-manage-dialog.tsx #: apps/remix/app/components/dialogs/sign-field-checkbox-dialog.tsx @@ -3179,7 +3180,7 @@ msgstr "Wybierz język dokumentu, powiadomień i certyfikatu, który jest dołą #: apps/remix/app/components/forms/document-preferences-form.tsx msgid "Controls when and how often reminder emails are sent to recipients who have not yet completed signing." -msgstr "Skonfiguruj, kiedy i jak często przypomnienia o podpisaniu będą wysyłane do odbiorców, którzy nie zakończyli dokumentu." +msgstr "Określa, kiedy i jak często przypomnienia e-mail są wysyłane do odbiorców, którzy jeszcze nie ukończyli podpisywania." #: apps/remix/app/components/forms/document-preferences-form.tsx msgid "Controls whether the audit logs will be included in the document when it is downloaded. The audit logs can still be downloaded from the logs page separately." @@ -3272,7 +3273,7 @@ msgstr "Kopiuj wartość" #: apps/remix/app/components/general/organisation-usage-reset-button.tsx msgid "Counter reset." -msgstr "Licznik zresetowany." +msgstr "Licznik został zresetowany." #: apps/remix/app/components/dialogs/admin-organisation-create-dialog.tsx #: apps/remix/app/components/dialogs/admin-user-create-dialog.tsx @@ -3304,7 +3305,7 @@ msgstr "Utwórz nową organizację z planem {planName}. Zachowaj obecną organiz #: apps/remix/app/components/dialogs/admin-user-create-dialog.tsx msgid "Create a new user. A welcome email will be sent with a link to set their password." -msgstr "Utwórz nowego użytkownika. Zostanie wysłany e‑mail powitalny z łączem do ustawienia hasła." +msgstr "Utwórz nowego użytkownika. Wiadomość powitalna zostanie wysłana z linkiem do ustawienia hasła." #: apps/remix/app/routes/_authenticated+/o.$orgUrl.support.tsx msgid "Create a support ticket" @@ -3541,7 +3542,7 @@ msgstr "Tworzenie szablonu" #: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.branding.tsx #: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.branding.tsx msgid "CSS rules were dropped during sanitisation" -msgstr "Niektóre reguły CSS zostały odrzucone podczas oczyszczania" +msgstr "Reguły CSS zostały usunięte podczas oczyszczenia kodu" #: apps/remix/app/components/dialogs/template-bulk-send-dialog.tsx msgid "CSV Structure" @@ -3565,7 +3566,7 @@ msgstr "Obecni odbiorcy:" #: apps/remix/app/routes/_authenticated+/admin+/organisations.$id.tsx msgid "Current usage against organisation limits." -msgstr "Obecne użycie względem limitów organizacji." +msgstr "Obecne wykorzystanie względem limitów organizacji." #: apps/remix/app/components/general/teams/team-inherit-member-alert.tsx msgid "Currently all organisation members can access this team" @@ -3586,7 +3587,7 @@ msgstr "Niestandardowy plik {0} MB" #: apps/remix/app/components/forms/branding-preferences-form.tsx msgid "Custom CSS is sanitised on save. Layout-breaking properties, remote URLs, and pseudo-elements are stripped automatically. Any rules dropped during sanitisation will be shown after you save." -msgstr "Niestandardowy kod CSS jest czyszczony podczas zapisywania. Właściwości mogące zepsuć układ, zdalne adresy URL oraz pseudo‑elementy są automatycznie usuwane. Wszystkie reguły odrzucone w trakcie czyszczenia zostaną wyświetlone po zapisaniu." +msgstr "Niestandardowy CSS jest oczyszczany podczas zapisywania. Właściwości psujące układ graficzny, zdalne adresy URL oraz pseudoelementy są automatycznie usuwane. Reguły usunięte podczas oczyszczania kodu zostaną wyświetlone po zapisaniu zmian." #: packages/ui/components/document/expiration-period-picker.tsx msgid "Custom duration" @@ -3594,7 +3595,7 @@ msgstr "Niestandardowy czas" #: packages/ui/components/document/reminder-settings-picker.tsx msgid "Custom interval" -msgstr "Niestandardowy czas" +msgstr "Własny interwał" #: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.groups._index.tsx msgid "Custom Organisation Groups" @@ -3602,11 +3603,11 @@ msgstr "Niestandardowe grupy w organizacji" #: apps/remix/app/components/forms/branding-preferences-form.tsx msgid "Customise the colours used on your signing pages." -msgstr "Dostosuj kolory używane na stronach podpisywania." +msgstr "Dostosuj kolory na stronach podpisywania." #: apps/remix/app/routes/_authenticated+/admin+/organisations.$id.tsx msgid "Danger Zone" -msgstr "Strefa zagrożenia" +msgstr "Niebezpieczna strefa" #: apps/remix/app/components/general/app-command-menu.tsx msgid "Dark Mode" @@ -3662,11 +3663,11 @@ msgstr "Odrzuć" #: apps/remix/app/routes/_authenticated+/admin+/organisations.$id.tsx #: apps/remix/app/routes/_authenticated+/admin+/organisations.$id.tsx msgid "Default (system mailer)" -msgstr "Domyślny (systemowy mailer)" +msgstr "Domyślny (systemowy)" #: apps/remix/app/components/forms/branding-preferences-form.tsx msgid "Default border colour." -msgstr "Domyślny kolor obramowania." +msgstr "Kolor obramowania." #: apps/remix/app/components/forms/document-preferences-form.tsx msgid "Default Date Format" @@ -3686,7 +3687,7 @@ msgstr "Domyślny adres e-mail" #: apps/remix/app/components/forms/email-preferences-form.tsx msgid "Default Email Settings" -msgstr "Domyślne ustawienia powiadomień" +msgstr "Domyślne ustawienia adresu e-mail" #: apps/remix/app/components/forms/document-preferences-form.tsx msgid "Default Envelope Expiration" @@ -3850,7 +3851,7 @@ msgstr "Usuń domenę" #: apps/remix/app/components/dialogs/email-transport-delete-dialog.tsx msgid "Delete Email Transport" -msgstr "Usuń transport e-mailowy" +msgstr "Usuń dostawcę poczty e-mail" #: apps/remix/app/components/general/envelope-editor/envelope-editor.tsx msgid "Delete Envelope" @@ -3926,7 +3927,7 @@ msgstr "Usuwanie konta..." #: apps/remix/app/components/dialogs/admin-organisation-delete-dialog.tsx msgid "Deletion scheduled" -msgstr "Usunięcie zaplanowane" +msgstr "Usunięcie zostało zaplanowane" #: apps/remix/app/components/general/webhook-logs-sheet.tsx msgid "Destination" @@ -3997,7 +3998,7 @@ msgstr "Urządzenie" #: packages/email/template-components/template-footer.tsx msgid "Did not expect this email? <0>Click here to report the sender. Never sign a document you don't recognize or weren't expecting." -msgstr "Nie spodziewasz się tej wiadomości e-mail? <0>Kliknij tutaj, aby zgłosić nadawcę. Nigdy nie podpisuj dokumentu, którego nie rozpoznajesz lub którego się nie spodziewałeś(-aś)." +msgstr "Wiadomość nie była przez Ciebie oczekiwana? <0>Kliknij, aby zgłosić nadawcę. Nigdy nie podpisuj dokumentu, którego nie rozpoznajesz." #: packages/email/templates/reset-password.tsx msgid "Didn't request a password change? We are here to help you secure your account, just <0>contact us." @@ -4056,7 +4057,7 @@ msgstr "Bezpośredni link do szablonu został usunięty" #. placeholder {1}: quota.directTemplates #: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx msgid "Direct template link usage exceeded ({0}/{1})" -msgstr "Przekroczono limit użycia bezpośrednich linków do szablonu ({0} / {1})" +msgstr "Przekroczono limit wykorzystania bezpośrednich linków do szablonu ({0} / {1})" #: apps/remix/app/components/forms/editor/editor-field-checkbox-form.tsx #: apps/remix/app/components/forms/editor/editor-field-radio-form.tsx @@ -4123,7 +4124,7 @@ msgstr "Wyświetlać Twoją nazwę i adres e-mail w dokumentach" #: apps/remix/app/components/forms/signup.tsx msgid "Disposable email addresses are not allowed. Please sign up with a permanent email address." -msgstr "Adresy e‑mail jednorazowego użytku nie są dozwolone. Zarejestruj się, używając stałego adresu e‑mail." +msgstr "Tymczasowe adresy e-mail nie są dozwolone. Zarejestruj się za pomocą standardowego adresu e-mail." #: apps/remix/app/components/general/document/document-edit-form.tsx msgid "Distribute Document" @@ -4205,12 +4206,12 @@ msgstr "Dokument został zatwierdzony" #: apps/remix/app/components/dialogs/envelope-cancel-dialog.tsx #: apps/remix/app/components/general/document/document-status.tsx msgid "Document cancelled" -msgstr "Dokument został anulowany" +msgstr "Anulowano dokument" #: packages/lib/utils/document-audit-logs.ts msgctxt "Audit log format" msgid "Document cancelled" -msgstr "Dokument został anulowany" +msgstr "Anulowano dokument" #: apps/remix/app/routes/_recipient+/sign.$token+/_index.tsx #: apps/remix/app/routes/_recipient+/sign.$token+/_index.tsx @@ -4242,7 +4243,7 @@ msgstr "Dokument został zakończony!" #: apps/remix/app/utils/toast-error-messages.ts msgid "Document conversion is temporarily unavailable. Please try again shortly or upload a PDF." -msgstr "Konwersja dokumentów jest tymczasowo niedostępna. Spróbuj ponownie za chwilę lub prześlij plik PDF." +msgstr "Konwertowanie dokumentu jest niedostępne. Spróbuj ponownie później lub prześlij plik PDF." #: apps/remix/app/components/dialogs/template-use-dialog.tsx msgid "Document created" @@ -4282,7 +4283,7 @@ msgstr "Tworzenie dokumentu" #: apps/remix/app/components/general/organisations/organisation-quota-banner.tsx msgid "Document creation has been temporarily paused" -msgstr "Tworzenie dokumentów zostało tymczasowo wstrzymane." +msgstr "Tworzenie dokumentów zostało tymczasowo wstrzymane" #: apps/remix/app/components/dialogs/admin-document-delete-dialog.tsx #: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx @@ -4407,7 +4408,7 @@ msgstr "Ustawienia dokumentu zostały zaktualizowane" #: apps/remix/app/components/general/claim-limit-fields.tsx msgid "Document rate limits" -msgstr "Limity liczby dokumentów" +msgstr "Limit przepustowości dokumentów" #: apps/remix/app/components/general/document-signing/document-signing-reject-dialog.tsx #: apps/remix/app/components/general/document/document-status.tsx @@ -4426,7 +4427,7 @@ msgstr "Zmieniono nazwę dokumentu" #: apps/remix/app/components/dialogs/envelope-redistribute-dialog.tsx msgid "Document resent" -msgstr "Dokument został ponownie wysłany" +msgstr "Wysłano ponownie dokument" #: apps/remix/app/components/general/document/document-edit-form.tsx msgid "Document sent" @@ -4453,7 +4454,7 @@ msgstr "Zaktualizowano metodę uwierzytelniania odbiorcy do dokumentu" #: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx msgid "Document signing process will be cancelled" -msgstr "Proces podpisywania dokumentu zostanie anulowany" +msgstr "Podpisywanie dokumentu zostanie anulowane" #: apps/remix/app/routes/_authenticated+/t.$teamUrl+/documents.$id.logs.tsx msgid "Document status" @@ -4505,7 +4506,7 @@ msgstr "Dokument został przesłany" #: apps/remix/app/components/general/organisations/organisation-quota-banner.tsx msgid "Document usage is approaching fair use limits" -msgstr "Wykorzystanie dokumentów zbliża się do limitów dozwolonego użytkowania" +msgstr "Wykorzystanie dokumentów zbliża się do limitu dozwolonego użytkowania" #: packages/lib/utils/document-audit-logs.ts msgctxt "Audit log format" @@ -4614,7 +4615,7 @@ msgstr "Dokumenty, które zostały podpisane przez wszystkich odbiorców, ale ni #: apps/remix/app/routes/_authenticated+/admin+/organisation-stats._index.tsx msgid "Documents, emails and api values may not be accurate since they record the amount of times the action was attempted. Meaning these values may go over the actual quota, get rejected, and will still be recorded." -msgstr "Dokumenty, e-maile i wartości API mogą nie być dokładne, ponieważ rejestrują liczbę prób wykonania danej akcji. Oznacza to, że te wartości mogą przekraczać faktyczny limit, być odrzucane, a mimo to nadal będą zapisywane." +msgstr "Wartości dokumentów, wiadomości i API mogą nie być dokładne, ponieważ rejestrują liczbę prób wykonania danej akcji. Oznacza to, że wartości te mogą przekroczyć rzeczywisty limit, zostać odrzucone, a mimo to nadal będą rejestrowane." #: apps/remix/app/components/tables/organisation-email-domains-table.tsx #: apps/remix/app/routes/_authenticated+/admin+/email-domains._index.tsx @@ -4708,7 +4709,7 @@ msgstr "Szkice dokumentów" #: packages/ui/primitives/document-dropzone.tsx msgid "Drag & drop your document here." -msgstr "Przeciągnij i upuść tutaj swój dokument." +msgstr "Przeciągnij i upuść dokument." #: apps/remix/app/components/embed/authoring/configure-document-upload.tsx msgid "Drag and drop or click to upload" @@ -4716,7 +4717,7 @@ msgstr "Przeciągnij i upuść lub kliknij, aby przesłać" #: apps/remix/app/components/general/envelope/envelope-drop-zone-wrapper.tsx msgid "Drag and drop your document here" -msgstr "Przeciągnij i upuść tutaj swój dokument" +msgstr "Przeciągnij i upuść dokument" #: packages/lib/constants/document.ts #: packages/ui/primitives/signature-pad/signature-pad.tsx @@ -4806,7 +4807,7 @@ msgstr "Np. 100" #: apps/remix/app/components/forms/email-transport-form.tsx msgid "e.g. Resend (free plans)" -msgstr "np. Resend (plany bezpłatne)" +msgstr "np. Resend (plan darmowy)" #: apps/remix/app/components/general/document/document-page-view-button.tsx #: apps/remix/app/components/general/document/document-page-view-dropdown.tsx @@ -4824,7 +4825,7 @@ msgstr "Edytuj" #: apps/remix/app/components/dialogs/email-transport-update-dialog.tsx msgid "Edit Email Transport" -msgstr "Edytuj transport e-mailowy" +msgstr "Edytuj dostawcę poczty e-mail" #: apps/remix/app/components/dialogs/envelope-item-edit-dialog.tsx msgid "Edit Item" @@ -4926,11 +4927,11 @@ msgstr "Adres e-mail już istnieje" #: apps/remix/app/components/general/admin-email-blocklist-section.tsx msgid "Email Blocklist" -msgstr "Bloklista e‑mail" +msgstr "Lista zablokowanych domen" #: apps/remix/app/components/general/admin-email-blocklist-section.tsx msgid "Email Blocklist Updated" -msgstr "Zaktualizowano bloklistę e‑mail" +msgstr "Lista została zaktualizowana" #: apps/remix/app/routes/_unauthenticated+/verify-email.$token.tsx msgid "Email Confirmed!" @@ -4942,11 +4943,11 @@ msgstr "Adres e-mail został utworzony" #: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx msgid "Email distribution needs to be enabled in the general settings tab to configure recipient email related settings." -msgstr "Aby móc skonfigurować ustawienia dotyczące wiadomości e-mail odbiorców, należy włączyć dystrybucję e-mail w zakładce ustawień ogólnych." +msgstr "Aby skonfigurować wiadomości, musisz włączyć dystrybucję dokumentu za pomocą poczty e-mail." #: apps/remix/app/components/general/admin-global-settings-section.tsx msgid "Email document settings" -msgstr "Ustawienia powiadomień" +msgstr "Ustawienia wysyłki dokumentu e‑mailem" #: apps/remix/app/routes/_authenticated+/admin+/email-domains.$id.tsx msgid "Email Domain" @@ -4995,7 +4996,7 @@ msgstr "Ustawienia adresu e-mail zostały zaktualizowane" #: apps/remix/app/components/general/claim-limit-fields.tsx msgid "Email rate limits" -msgstr "Limity liczby wiadomości e-mail" +msgstr "Limit przepustowości wiadomości" #: packages/ui/components/document/document-email-checkboxes.tsx msgid "Email recipients when a pending document is deleted" @@ -5031,7 +5032,7 @@ msgstr "Adres e-mail nadawcy" #: apps/remix/app/components/general/organisations/organisation-quota-banner.tsx msgid "Email sending has been temporarily paused" -msgstr "Wysyłanie wiadomości e-mail zostało tymczasowo wstrzymane." +msgstr "Wysyłanie wiadomości zostało tymczasowo wstrzymane" #: packages/lib/utils/document-audit-logs.ts msgctxt "Audit log format" @@ -5048,7 +5049,7 @@ msgstr "Ustawienia adresu e-mail" #: apps/remix/app/components/dialogs/admin-organisation-delete-dialog.tsx msgid "Email the organisation owner to notify them of the deletion." -msgstr "Wyślij e-mail do właściciela organizacji, aby powiadomić go o usunięciu." +msgstr "Wyślij właścicielowi organizacji powiadomienie o usunięciu." #: packages/ui/components/document/document-email-checkboxes.tsx msgid "Email the owner when a document is created from a direct template" @@ -5069,16 +5070,16 @@ msgstr "Wyślij podpisującemu wiadomość, jeśli dokument jest nadal oczekują #: apps/remix/app/components/forms/subscription-claim-form.tsx #: apps/remix/app/routes/_authenticated+/admin+/organisations.$id.tsx msgid "Email transport" -msgstr "Transport e-mailowy" +msgstr "Dostawca poczty e-mail" #: apps/remix/app/routes/_authenticated+/admin+/_layout.tsx #: apps/remix/app/routes/_authenticated+/admin+/email-transports._index.tsx msgid "Email Transports" -msgstr "Transporty e-mailowe" +msgstr "Dostawcy poczty e-mail" #: apps/remix/app/components/general/organisations/organisation-quota-banner.tsx msgid "Email usage is approaching fair use limits" -msgstr "Wykorzystanie e‑maili zbliża się do limitów dozwolonego użytkowania" +msgstr "Wykorzystanie wiadomości zbliża się do limitu dozwolonego użytkowania" #: apps/remix/app/components/general/document-signing/access-auth-2fa-form.tsx msgid "Email verification" @@ -5109,7 +5110,7 @@ msgstr "Osadzanie dokumentów, 5 użytkowników i więcej" #: apps/remix/app/components/general/claim-limit-fields.tsx #: apps/remix/app/components/general/claim-limit-fields.tsx msgid "Empty = Unlimited, 0 = Blocked" -msgstr "Puste = Bez limitu, 0 = Zablokowane" +msgstr "Puste = bez ograniczeń, 0 = zablokowane" #: packages/ui/primitives/document-flow/add-fields.tsx msgid "Empty field" @@ -5216,7 +5217,7 @@ msgstr "Załączniki" #: apps/remix/app/components/forms/email-transport-form.tsx msgid "Endpoint (optional)" -msgstr "Endpoint (opcjonalnie)" +msgstr "Punkt końcowy (opcjonalnie)" #: packages/lib/constants/i18n.ts msgid "English" @@ -5578,7 +5579,7 @@ msgstr "Nie udało się utworzyć zgłoszenia" #: apps/remix/app/components/dialogs/email-transport-create-dialog.tsx msgid "Failed to create transport." -msgstr "Nie udało się utworzyć transportu." +msgstr "Nie udało się utworzyć dostawcy poczty e-mail." #: apps/remix/app/components/dialogs/folder-delete-dialog.tsx msgid "Failed to delete folder" @@ -5590,7 +5591,7 @@ msgstr "Nie udało się usunąć subskrypcji." #: apps/remix/app/components/dialogs/email-transport-delete-dialog.tsx msgid "Failed to delete transport." -msgstr "Nie udało się usunąć transportu." +msgstr "Nie udało się usunąć dostawcy poczty e-mail." #: apps/remix/app/routes/_authenticated+/admin+/documents.$id.tsx msgid "Failed to download audit logs. Please try again later." @@ -5634,7 +5635,7 @@ msgstr "Nie udało się zapisać ustawień." #: apps/remix/app/components/dialogs/email-transport-update-dialog.tsx msgid "Failed to save transport." -msgstr "Nie udało się zapisać transportu." +msgstr "Nie udało się zapisać dostawcy poczty e-mail." #: apps/remix/app/components/dialogs/session-logout-all-dialog.tsx msgid "Failed to sign out all sessions" @@ -5695,7 +5696,7 @@ msgstr "Niepowodzenie: {failedCount}" #: apps/remix/app/components/general/organisations/organisation-quota-banner.tsx #: apps/remix/app/utils/toast-error-messages.ts msgid "Fair use limit exceeded" -msgstr "Przekroczono limit dozwolonego użycia." +msgstr "Przekroczono limit dozwolonego użytkowania" #: apps/remix/app/components/forms/subscription-claim-form.tsx #: apps/remix/app/components/tables/admin-claims-table.tsx @@ -5709,7 +5710,7 @@ msgstr "Funkcje" #: apps/remix/app/components/dialogs/admin-organisation-sync-subscription-dialog.tsx msgid "Fetch the latest subscription data from Stripe and apply it to this organisation." -msgstr "Pobierz najnowsze dane subskrypcji ze Stripe i zastosuj je do tej organizacji." +msgstr "Pobierz najnowsze dane subskrypcji z Stripe i zastosuj je w organizacji." #: packages/ui/primitives/document-flow/field-items-advanced-settings/text-field.tsx msgid "Field character limit" @@ -5785,7 +5786,7 @@ msgstr "Plik nie może być większy niż {APP_DOCUMENT_UPLOAD_SIZE_LIMIT} MB" #: apps/remix/app/components/dialogs/email-transport-create-dialog.tsx msgid "Fill in the details to create a new email transport." -msgstr "Uzupełnij szczegóły, aby utworzyć nowy transport e-mailowy." +msgstr "Uzupełnił szczegóły, aby utworzyć nowego dostawcę poczty e-mail." #: apps/remix/app/components/dialogs/claim-create-dialog.tsx msgid "Fill in the details to create a new subscription claim." @@ -5797,7 +5798,7 @@ msgstr "Filtruj według statusu" #: apps/remix/app/components/forms/branding-preferences-form.tsx msgid "Focus ring colour." -msgstr "Kolor obramowania aktywnego elementu (focus ring)." +msgstr "Kolor obramowania zaznaczenia." #: apps/remix/app/components/dialogs/envelopes-bulk-move-dialog.tsx msgid "Folder" @@ -5857,7 +5858,7 @@ msgstr "Na przykład, jeśli subskrypcja ma nową flagę „FLAG_1” ustawioną #: apps/remix/app/components/forms/branding-preferences-form.tsx msgid "Foreground" -msgstr "Kolor pierwszego planu" +msgstr "Tekst" #: apps/remix/app/routes/_unauthenticated+/check-email.tsx msgid "Forgot password" @@ -5891,7 +5892,7 @@ msgstr "Darmowa" #: apps/remix/app/components/tables/user-billing-organisations-table.tsx msgctxt "Subscription status" msgid "Free (Pending)" -msgstr "Darmowy (oczekujący)" +msgstr "Darmowa (oczekująca)" #: packages/lib/utils/fields.ts #: packages/ui/primitives/document-flow/types.ts @@ -6147,11 +6148,11 @@ msgstr "Cześć, jestem Timur" #: packages/email/template-components/template-document-reminder.tsx msgid "Hi {recipientName}," -msgstr "Cześć {recipientName}," +msgstr "Cześć, {recipientName}," #: packages/email/templates/bulk-send-complete.tsx msgid "Hi {userName}," -msgstr "Cześć {userName}," +msgstr "Cześć, {userName}" #: packages/email/template-components/template-access-auth-2fa.tsx msgid "Hi {userName}, you need to enter a verification code to complete the document \"{documentTitle}\"." @@ -6159,7 +6160,7 @@ msgstr "Cześć {userName}, wpisz kod weryfikacyjny, aby zakończyć dokument #: packages/email/templates/reset-password.tsx msgid "Hi, {userName} <0>({userEmail})" -msgstr "Cześć {userName} <0>({userEmail})" +msgstr "Cześć, {userName} <0>({userEmail})" #: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx #: apps/remix/app/components/tables/documents-table-action-dropdown.tsx @@ -6201,7 +6202,7 @@ msgstr "Czas, w którym odbiorcy muszą zakończyć dokument. Opcja dziedziczeni #: apps/remix/app/components/forms/signup.tsx #: apps/remix/app/components/general/claim-account.tsx msgid "Human verification required" -msgstr "Wymagana weryfikacja za pomocą CAPTCHA" +msgstr "Weryfikacja antyspamowa jest wymagana" #: apps/remix/app/routes/_unauthenticated+/organisation.sso.confirmation.$token.tsx msgid "I agree to link my account with this organization" @@ -6230,7 +6231,7 @@ msgstr "Muszę otrzymać kopię dokumentu" #: apps/remix/app/routes/_internal+/[__htmltopdf]+/certificate.tsx #: packages/lib/server-only/pdf/render-certificate.ts msgid "I am the owner of this document" -msgstr "Jestem właścicielem tego dokumentu" +msgstr "Jestem właścicielem dokumentu" #: apps/remix/app/routes/_unauthenticated+/o.$orgUrl.signin.tsx msgid "I understand that I am providing my credentials to a 3rd party service configured by this organisation" @@ -6270,11 +6271,11 @@ msgstr "Jeśli korzystasz ze środowiska „staging”, ustaw właściwość hos #: apps/remix/app/routes/_recipient+/report.$token.tsx msgid "If you did not expect this email or believe it is spam, you can report the sender to our team for review." -msgstr "Jeśli nie spodziewałeś(-aś) się tej wiadomości e-mail lub uważasz, że to spam, możesz zgłosić nadawcę do naszego zespołu do weryfikacji." +msgstr "Jeśli wiadomość nie była przez Ciebie oczekiwana lub uważasz, że jest to spam, zgłoś nadawcę do naszego zespołu." #: packages/email/template-components/template-admin-user-created.tsx msgid "If you didn't expect this account or have any questions, please <0>contact support." -msgstr "Jeśli nie spodziewałeś(-aś) się tego konta lub masz jakiekolwiek pytania, <0>skontaktuj się z pomocą techniczną." +msgstr "Jeśli utworzenie konta jest błędem lub masz pytania, <0>skontaktuj się z pomocą techniczną." #: packages/email/template-components/template-access-auth-2fa.tsx msgid "If you didn't request this verification code, you can safely ignore this email." @@ -6290,7 +6291,7 @@ msgstr "Jeśli nie znajdziesz wiadomości z linkiem potwierdzającym, możesz po #: packages/email/templates/organisation-limit-alert.tsx msgid "If you expect to need higher limits, please contact support at {SUPPORT_EMAIL} and we will review your account." -msgstr "Jeśli spodziewasz się potrzeby wyższych limitów, skontaktuj się z działem wsparcia pod adresem {SUPPORT_EMAIL}, a my przejrzymy Twoje konto." +msgstr "Jeśli potrzebujesz wyższych limitów, skontaktuj się z pomocą techniczną pod adresem {SUPPORT_EMAIL}." #: apps/remix/app/components/forms/2fa/enable-authenticator-app-dialog.tsx msgid "If your authenticator app does not support QR codes, you can use the following code instead:" @@ -6536,7 +6537,7 @@ msgstr "Adres IP" #: apps/remix/app/routes/_authenticated+/admin+/organisations.$id.tsx msgid "Irreversible actions for this organisation" -msgstr "Nieodwracalne działania dla tej organizacji" +msgstr "Nieodwracalne akcje dla organizacji" #: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.sso.tsx msgid "Issuer URL" @@ -6712,7 +6713,7 @@ msgstr "Pozostaw puste, aby odziedziczyć z organizacji." #: apps/remix/app/components/forms/email-transport-form.tsx msgid "Leave blank to keep current" -msgstr "Pozostaw puste, aby zachować obecne" +msgstr "Pozostaw puste, aby nie zmieniać" #: apps/remix/app/components/dialogs/organisation-leave-dialog.tsx msgid "Leave organisation" @@ -6882,7 +6883,7 @@ msgstr "Zarządzaj niestandardowym logowaniem SSO dla swojej organizacji." #: apps/remix/app/routes/_authenticated+/admin+/email-transports._index.tsx msgid "Manage all email transports" -msgstr "Zarządzaj wszystkimi transportami e-mailowymi" +msgstr "Zarządzaj wszystkimi dostawcami poczty e-mail" #: apps/remix/app/routes/_authenticated+/settings+/organisations.tsx msgid "Manage all organisations you are currently associated with." @@ -7066,7 +7067,7 @@ msgstr "MAU (zalogowani)" #: apps/remix/app/components/forms/editor/editor-field-number-form.tsx #: packages/ui/primitives/document-flow/field-items-advanced-settings/number-field.tsx msgid "Max" -msgstr "Max" +msgstr "Maks." #: apps/remix/app/components/dialogs/template-bulk-send-dialog.tsx msgid "Maximum file size: 4MB. Maximum 100 rows per upload. Blank values will use template defaults." @@ -7075,7 +7076,7 @@ msgstr "Maksymalny rozmiar pliku to 4 MB. Możesz przesłać maksymalnie 100 wie #: apps/remix/app/components/forms/subscription-claim-form.tsx #: apps/remix/app/routes/_authenticated+/admin+/organisations.$id.tsx msgid "Maximum number of recipients per document allowed. 0 = Unlimited" -msgstr "Maksymalna dozwolona liczba odbiorców na dokument. 0 = Bez limitu" +msgstr "Maksymalna dozwolona liczba odbiorców dokumentu. 0 = bez ograniczeń" #: apps/remix/app/components/forms/subscription-claim-form.tsx #: apps/remix/app/routes/_authenticated+/admin+/organisations.$id.tsx @@ -7151,7 +7152,7 @@ msgstr "Środek" #: apps/remix/app/components/forms/editor/editor-field-number-form.tsx #: packages/ui/primitives/document-flow/field-items-advanced-settings/number-field.tsx msgid "Min" -msgstr "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." @@ -7168,7 +7169,7 @@ msgstr "Edytuj odbiorców" #: apps/remix/app/components/dialogs/email-transport-update-dialog.tsx msgid "Modify the details of the email transport." -msgstr "Zmień szczegóły transportu e-mailowego." +msgstr "Edytuj szczegóły dostawcy poczty e-mail." #: apps/remix/app/components/dialogs/claim-update-dialog.tsx msgid "Modify the details of the subscription claim." @@ -7197,7 +7198,7 @@ msgstr "Miesięczny limit dokumentów" #: apps/remix/app/components/general/claim-limit-fields.tsx msgid "Monthly email quota" -msgstr "Miesięczny limit e‑maili" +msgstr "Miesięczny limit wiadomości" #: apps/remix/app/components/dialogs/envelopes-bulk-move-dialog.tsx #: apps/remix/app/components/dialogs/folder-move-dialog.tsx @@ -7298,7 +7299,7 @@ msgstr "Ustawienia nazwy" #: apps/remix/app/routes/_recipient+/sign.$token+/complete.tsx msgid "Need to sign documents?" -msgstr "Potrzebujesz podpisać dokumenty?" +msgstr "Potrzebujesz podpisywać dokumenty?" #: packages/ui/components/recipient/recipient-role-select.tsx msgid "Needs to approve" @@ -7406,7 +7407,7 @@ msgstr "Brak włączonych funkcji" #: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page-renderer.tsx msgid "No field type matching this description was found." -msgstr "Nie znaleziono typu pola pasującego do tego opisu." +msgstr "Nie znaleziono pola pasującego do tego opisu." #: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx msgid "No fields were detected in your document." @@ -7517,7 +7518,7 @@ msgstr "Nie znaleziono pola podpisu" #: apps/remix/app/components/general/document-signing/csc-recipient-blocked-page.tsx msgid "No signing credentials available" -msgstr "Brak dostępnych poświadczeń do podpisu" +msgstr "Brak dostępnych certyfikatów podpisu" #: apps/remix/app/routes/_authenticated+/admin+/organisations.$id.tsx msgid "No Stripe customer attached" @@ -7595,7 +7596,7 @@ msgstr "Nieobsługiwane" #: apps/remix/app/components/tables/documents-table-empty-state.tsx msgid "Nothing cancelled" -msgstr "Nic nie zostało anulowane" +msgstr "Nic nie anulowano" #: apps/remix/app/components/tables/documents-table-empty-state.tsx #: apps/remix/app/components/tables/documents-table-empty-state.tsx @@ -7628,12 +7629,12 @@ msgstr "Liczba musi być w formacie {numberFormat}" #: apps/remix/app/components/forms/subscription-claim-form.tsx #: apps/remix/app/routes/_authenticated+/admin+/organisations.$id.tsx msgid "Number of members allowed. 0 = Unlimited" -msgstr "Liczba dozwolonych użytkowników. 0 = Bez ograniczeń" +msgstr "Liczba dozwolonych użytkowników. 0 = bez ograniczeń" #: apps/remix/app/components/forms/subscription-claim-form.tsx #: apps/remix/app/routes/_authenticated+/admin+/organisations.$id.tsx msgid "Number of teams allowed. 0 = Unlimited" -msgstr "Liczba dozwolonych zespołów. 0 = Bez ograniczeń" +msgstr "Liczba dozwolonych zespołów. 0 = bez ograniczeń" #: apps/remix/app/components/general/envelope-editor/envelope-editor-fields-page.tsx msgid "Number Settings" @@ -7704,7 +7705,7 @@ msgstr "Dozwolone są tylko pliki PDF" #: apps/remix/app/components/dialogs/envelopes-bulk-cancel-dialog.tsx msgid "Only pending documents you have permission to manage will be cancelled." -msgstr "Tylko oczekujące dokumenty, do których masz uprawnienia do zarządzania, zostaną anulowane." +msgstr "Tylko oczekujące dokumenty, do których masz uprawnienia, zostaną anulowane." #: apps/remix/app/components/general/generic-error-layout.tsx #: apps/remix/app/components/general/generic-error-layout.tsx @@ -7768,7 +7769,7 @@ msgstr "Organizacja" #: packages/lib/server-only/organisation/delete-organisation-email.ts msgid "Organisation \"{organisationName}\" has been deleted" -msgstr "Organizacja \"{organisationName}\" została usunięta" +msgstr "Organizacja „{organisationName}” została usunięta" #: packages/lib/constants/organisations-translations.ts msgid "Organisation Admin" @@ -7844,7 +7845,7 @@ msgstr "Organizacja nie została znaleziona" #: packages/email/templates/organisation-limit-alert.tsx #: packages/lib/jobs/definitions/emails/send-organisation-limit-alert-email.handler.ts msgid "Organisation Review Required" -msgstr "Wymagana weryfikacja organizacji" +msgstr "Weryfikacja organizacji jest wymagana" #: apps/remix/app/components/dialogs/organisation-group-create-dialog.tsx #: apps/remix/app/routes/_authenticated+/admin+/teams.$id.tsx @@ -7894,11 +7895,11 @@ msgstr "Adres URL organizacji" #: apps/remix/app/routes/_authenticated+/admin+/organisations.$id.tsx msgid "Organisation usage" -msgstr "Użycie organizacji" +msgstr "Wykorzystanie organizacji" #: apps/remix/app/routes/_authenticated+/admin+/teams.$id.tsx msgid "Organisation-level pending invites for this team's parent organisation." -msgstr "Oczekujące zaproszenia na poziomie organizacji zespołu." +msgstr "Oczekujące zaproszenia na poziomie organizacji dla organizacji nadrzędnej tego zespołu." #: apps/remix/app/components/general/org-menu-switcher.tsx #: apps/remix/app/components/general/settings-nav-desktop.tsx @@ -7915,7 +7916,7 @@ msgstr "Organizacje użytkownika." #: apps/remix/app/routes/_authenticated+/admin+/organisations.$id.tsx msgid "Organisations without a transport use the system default mailer." -msgstr "Organizacje bez zdefiniowanego transportu używają domyślnego systemowego mailera." +msgstr "Organizacje bez dostawcy poczty e-mail używają domyślnego systemu wysyłki." #: apps/remix/app/components/general/folder/folder-card.tsx msgid "Organise your documents" @@ -7966,15 +7967,15 @@ msgstr "Właściciel" #: apps/remix/app/components/general/admin-global-settings-section.tsx msgid "Owner document completed" -msgstr "Powiadomiono właściciela o zakończeniu dokumentu" +msgstr "Dokument właściciela zakończony" #: apps/remix/app/components/general/admin-global-settings-section.tsx msgid "Owner document created" -msgstr "Powiadomiono właściciela o utworzeniu dokumentu" +msgstr "Dokument właściciela utworzony" #: apps/remix/app/components/general/admin-global-settings-section.tsx msgid "Owner recipient expired" -msgstr "Powiadomiono właściciela o minięciu czasu na podpisanie dokumentu" +msgstr "Odbiorca właściciela wygasł" #: apps/remix/app/components/dialogs/admin-organisation-member-update-dialog.tsx msgid "Ownership transferred to {organisationMemberName}." @@ -7998,7 +7999,7 @@ msgstr "Opłacona" #: apps/remix/app/components/dialogs/envelope-download-dialog.tsx msgctxt "Partially signed document (adjective)" msgid "Partial" -msgstr "Częściowo podpisany" +msgstr "Częściowy" #: apps/remix/app/components/forms/signin.tsx #: apps/remix/app/components/general/document-signing/document-signing-auth-dialog.tsx @@ -8096,7 +8097,7 @@ msgstr "Zaległa płatność" #: apps/remix/app/components/general/organisations/organisation-billing-banner.tsx #: apps/remix/app/components/general/organisations/organisation-billing-banner.tsx msgid "Payment required" -msgstr "Wymagana płatność" +msgstr "Płatność jest wymagana" #: apps/remix/app/components/dialogs/envelope-download-dialog.tsx msgid "PDF Document" @@ -8132,7 +8133,7 @@ msgstr "Oczekujące dokumenty" #: apps/remix/app/components/dialogs/envelopes-bulk-delete-dialog.tsx msgid "Pending documents will have their signing process cancelled" -msgstr "Proces podpisywania oczekujących dokumentów zostanie anulowany" +msgstr "Podpisywanie oczekujących dokumentów zostanie anulowane" #: apps/remix/app/components/general/organisations/organisation-invitations.tsx msgid "Pending invitations" @@ -8163,7 +8164,7 @@ msgstr "Okres" #: apps/remix/app/routes/_authenticated+/admin+/organisations.$id.tsx msgid "Permanently delete this organisation. Documents will be orphaned (not deleted) so they remain accessible via the deleted-account service account." -msgstr "Trwale usuń tę organizację. Dokumenty staną się osierocone (nieusunięte), aby pozostały dostępne za pośrednictwem konta serwisowego usuniętego konta." +msgstr "Usuń trwale organizację. Dokumenty zostaną osierocone (nie usunięte), więc będą przypisane do konta serwisowego usuniętego konta." #: apps/remix/app/components/tables/user-organisations-table.tsx msgctxt "Personal organisation (adjective)" @@ -8215,7 +8216,7 @@ msgstr "Domyślny tekst" #: apps/remix/app/components/forms/subscription-claim-form.tsx msgid "Plans without a transport use the system default mailer." -msgstr "Plany bez zdefiniowanego transportu używają domyślnego systemowego mailera." +msgstr "Plany bez dostawcy poczty e-mail używają domyślnego systemu wysyłki." #. placeholder {0}: _(actionVerb).toLowerCase() #: packages/email/template-components/template-document-invite.tsx @@ -8259,7 +8260,7 @@ msgstr "Wybierz nowe hasło" #: apps/remix/app/components/forms/signup.tsx #: apps/remix/app/components/general/claim-account.tsx msgid "Please complete the CAPTCHA challenge before signing in." -msgstr "Przed zalogowaniem się dokończ wyzwanie CAPTCHA." +msgstr "Zakończ weryfikację CAPTCHA przed logowaniem." #: apps/remix/app/components/general/document-signing/document-signing-mobile-widget.tsx #: apps/remix/app/components/general/document-signing/document-signing-mobile-widget.tsx @@ -8286,7 +8287,7 @@ msgstr "Jeśli masz pytania, skontaktuj się z <0>pomocą techniczną." #: packages/email/templates/organisation-limit-alert.tsx msgid "Please contact support at {SUPPORT_EMAIL} and we will review your account." -msgstr "Skontaktuj się z pomocą techniczną pod adresem {SUPPORT_EMAIL}, a my zweryfikujemy Twoje konto." +msgstr "Skontaktuj się z pomocą techniczną {SUPPORT_EMAIL}. Sprawdzimy Twoje konto." #: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx msgid "Please contact support if you would like to revert this action." @@ -8298,7 +8299,7 @@ msgstr "Skontaktuj się z właścicielem dokumentu, aby uzyskać pomoc." #: apps/remix/app/components/general/document-signing/csc-recipient-signing-in-progress-page.tsx msgid "Please don't close this tab. The signing provider is finalising your signature." -msgstr "Prosimy nie zamykać tej karty. Dostawca podpisu finalizuje Twój podpis." +msgstr "Nie zamykaj karty. Dostawca podpisu finalizuje podpis." #: apps/remix/app/components/forms/token.tsx msgid "Please enter a meaningful name for your token. This will help you identify it later." @@ -8419,7 +8420,7 @@ msgstr "Spróbuj ponownie i upewnij się, że adres e-mail jest prawidłowy." #: apps/remix/app/components/general/pdf-viewer/pdf-viewer-states.tsx msgid "Please try again or contact our support." -msgstr "Spróbuj ponownie lub skontaktuj się z naszym wsparciem." +msgstr "Spróbuj ponownie lub skontaktuj się z pomocą techniczną" #. placeholder {0}: `'${t(deleteMessage)}'` #: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx @@ -8507,15 +8508,15 @@ msgstr "Podgląd podpisanego dokumentu z domyślnymi opcjami" #: apps/remix/app/components/forms/branding-preferences-form.tsx msgid "Primary" -msgstr "Kolor główny" +msgstr "Główny" #: apps/remix/app/components/forms/branding-preferences-form.tsx msgid "Primary action colour." -msgstr "Kolor głównej akcji." +msgstr "Kolor akcji." #: apps/remix/app/components/forms/branding-preferences-form.tsx msgid "Primary Foreground" -msgstr "Kolor pierwszego planu dla koloru głównego" +msgstr "Tekst przycisków" #: apps/remix/app/components/general/template/template-type.tsx #: apps/remix/app/components/tables/templates-table.tsx @@ -8696,7 +8697,7 @@ msgstr "Aby podpisać pole, wymagane jest ponowne uwierzytelnianie" #: apps/remix/app/components/general/document-signing/csc-recipient-signing-in-progress-page.tsx msgid "Reauthorise and retry" -msgstr "Ponownie autoryzuj i spróbuj ponownie" +msgstr "Spróbuj ponownie" #: packages/ui/components/recipient/recipient-role-select.tsx msgid "Receives copy" @@ -8741,11 +8742,11 @@ msgstr "Odbiorca zatwierdził dokument" #: packages/lib/utils/document-audit-logs.ts msgid "Recipient authenticated with the signing provider" -msgstr "Odbiorca został uwierzytelniony u dostawcy podpisu" +msgstr "Odbiorca uwierzytelnił się u dostawcy podpisu" #: packages/lib/utils/document-audit-logs.ts msgid "Recipient authorised the remote signature" -msgstr "Odbiorca autoryzował zdalny podpis" +msgstr "Odbiorca autoryzował podpis zdalny" #: packages/lib/utils/document-audit-logs.ts msgid "Recipient CC'd the document" @@ -8795,7 +8796,7 @@ msgstr "Odbiorca poprosił o kod weryfikacyjny dla dokumentu" #: packages/lib/utils/document-audit-logs.ts msgid "Recipient requested a remote signature" -msgstr "Odbiorca zażądał zdalnego podpisu" +msgstr "Odbiorca poprosił o podpis zdalny" #: apps/remix/app/components/general/admin-global-settings-section.tsx msgid "Recipient signed" @@ -8811,7 +8812,7 @@ msgstr "Odbiorca podpisał dokument" #: apps/remix/app/components/general/admin-global-settings-section.tsx msgid "Recipient signing request" -msgstr "Poproszono odbiorcę o podpisanie" +msgstr "Prośba o podpisanie wysłana do odbiorcy" #: packages/ui/components/document/document-email-checkboxes.tsx msgid "Recipient signing request email" @@ -8836,11 +8837,11 @@ msgstr "Odbiorca wyświetlił dokument" #: packages/lib/utils/document-audit-logs.ts msgid "Recipient's remote signature was applied" -msgstr "Zastosowano zdalny podpis odbiorcy" +msgstr "Odbiorca złożył podpis zdalny" #: packages/lib/utils/document-audit-logs.ts msgid "Recipient's signing provider authentication failed" -msgstr "Uwierzytelnianie dostawcy usługi podpisu odbiorcy nie powiodło się" +msgstr "Uwierzytelnienie odbiorcy u dostawcy podpisu nie powiodło się" #: apps/remix/app/components/embed/authoring/configure-document-recipients.tsx #: apps/remix/app/components/general/document/document-page-view-recipients.tsx @@ -8868,7 +8869,7 @@ msgstr "Odbiorcy będą mogli podpisać dokument po jego wysłaniu" #: apps/remix/app/components/dialogs/envelope-cancel-dialog.tsx #: apps/remix/app/components/dialogs/envelopes-bulk-cancel-dialog.tsx msgid "Recipients will be notified that the document was cancelled" -msgstr "Odbiorcy zostaną powiadomieni, że dokument został anulowany" +msgstr "Odbiorcy zostaną powiadomieni o anulowaniu dokumentu" #: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx msgid "Recipients will still retain their copy of the document" @@ -8963,7 +8964,7 @@ msgstr "Pamiętasz hasło? <0>Zaloguj się" #: packages/email/templates/document-reminder.tsx msgid "Reminder to {action} {documentName}" -msgstr "Sprawdź i {action} dokument {documentName}" +msgstr "Przypomnienie, aby {action} dokument „{documentName}”" #. placeholder {0}: envelope.documentMeta.subject #: packages/lib/jobs/definitions/internal/process-signing-reminder.handler.ts @@ -9107,7 +9108,7 @@ msgstr "Zgłoś nadawcę" #: apps/remix/app/routes/_recipient+/report.$token.tsx msgid "Report this sender?" -msgstr "Zgłosić tego nadawcę?" +msgstr "Zgłosić nadawcę?" #: apps/remix/app/components/general/organisation-usage-panel.tsx #: apps/remix/app/components/tables/admin-organisation-stats-table.tsx @@ -9329,7 +9330,7 @@ msgstr "Wyrównaj do lewej" #: apps/remix/app/components/forms/branding-preferences-form.tsx msgid "Ring" -msgstr "Obramowanie (ring)" +msgstr "Obramowanie zaznaczenia" #: apps/remix/app/components/dialogs/admin-organisation-member-update-dialog.tsx #: apps/remix/app/components/dialogs/organisation-member-update-dialog.tsx @@ -9420,7 +9421,7 @@ msgstr "Szukaj identyfikatora lub nazwy" #: apps/remix/app/routes/_authenticated+/admin+/documents._index.tsx msgid "Search by document title, team:123 or user:123" -msgstr "Szukaj po tytule dokumentu, team:123 lub user:123" +msgstr "Szukaj tytułu dokumentu, zespołu lub użytkownika" #: apps/remix/app/routes/_authenticated+/admin+/email-domains._index.tsx msgid "Search by domain or organisation name" @@ -9436,7 +9437,7 @@ msgstr "Szukaj nazwy lub adresu e-mail" #: apps/remix/app/routes/_authenticated+/admin+/email-transports._index.tsx msgid "Search by name or from address" -msgstr "Szukaj po nazwie lub adresie nadawcy" +msgstr "Szukaj nazwy lub adresu e-mail" #: apps/remix/app/routes/_authenticated+/admin+/organisations._index.tsx msgid "Search by organisation ID, name, customer ID or owner email" @@ -9448,7 +9449,7 @@ msgstr "Szukaj nazwy organizacji" #: apps/remix/app/routes/_authenticated+/admin+/organisation-stats._index.tsx msgid "Search by organisation name, URL or ID" -msgstr "Szukaj po nazwie organizacji, adresie URL lub ID" +msgstr "Szukaj nazwy organizacji, adresu URL lub identyfikatora" #: apps/remix/app/components/general/document/document-search.tsx msgid "Search documents..." @@ -9722,7 +9723,7 @@ msgstr "Wyślij" #: apps/remix/app/components/dialogs/email-transport-send-test-dialog.tsx msgid "Send a test email using this transport to verify the configuration." -msgstr "Wyślij wiadomość testową przy użyciu tego transportu, aby zweryfikować konfigurację." +msgstr "Wyślij wiadomość testową przy pomocy dostawcy poczty e-mail." #: apps/remix/app/components/dialogs/webhook-test-dialog.tsx msgid "Send a test webhook with sample data to verify your integration is working correctly." @@ -9781,11 +9782,11 @@ msgstr "Status wysyłki" #: apps/remix/app/components/tables/admin-email-transports-table.tsx msgid "Send test" -msgstr "Wyślij test" +msgstr "Wyślij wiadomość testową" #: apps/remix/app/components/dialogs/email-transport-send-test-dialog.tsx msgid "Send Test Email" -msgstr "Wyślij testową wiadomość e-mail" +msgstr "Wyślij wiadomość testową" #: apps/remix/app/components/tables/documents-table.tsx #: apps/remix/app/components/tables/inbox-table.tsx @@ -9838,7 +9839,7 @@ msgstr "Skonfiguruj właściwości szablonu i informacje o odbiorcach" #: packages/email/templates/admin-user-created.tsx msgid "Set your password for Documenso" -msgstr "Ustaw swoje hasło do Documenso" +msgstr "Ustaw hasło Documenso" #: apps/remix/app/components/general/app-command-menu.tsx #: apps/remix/app/components/general/app-command-menu.tsx @@ -9891,7 +9892,7 @@ msgstr "Pokaż ustawienia zaawansowane" #: apps/remix/app/routes/_authenticated+/admin+/organisation-stats._index.tsx msgid "Show daily averages for documents, emails and API usages" -msgstr "Pokaż dzienne średnie dla dokumentów, e-maili i użycia API" +msgstr "Pokaż średnie dzienne wykorzystanie dokumentów, wiadomości i API" #: apps/remix/app/components/general/admin-license-card.tsx msgid "Show license key" @@ -9907,7 +9908,7 @@ msgstr "Pokaż użycie" #: apps/remix/app/routes/_authenticated+/admin+/organisation-stats._index.tsx msgid "Show usage with quotas" -msgstr "Pokaż użycie z limitami" +msgstr "Pokaż limity użycia" #: apps/remix/app/components/dialogs/sign-field-signature-dialog.tsx #: apps/remix/app/components/general/document-signing/document-signing-auth-2fa.tsx @@ -9959,7 +9960,7 @@ msgstr "Podpisz dokument" #: apps/remix/app/routes/_recipient+/_layout.tsx msgid "Sign Document - Documenso" -msgstr "Podpisz dokument – Documenso" +msgstr "Podpisz dokument - Documenso" #: apps/remix/app/components/embed/multisign/multi-sign-document-list.tsx msgid "Sign Documents" @@ -10115,7 +10116,7 @@ msgstr "Podpisuje" #: apps/remix/app/components/general/document-signing/csc-recipient-blocked-page.tsx msgid "Signing algorithm is not supported" -msgstr "Algorytm podpisu nie jest obsługiwany" +msgstr "Algorytm podpisywania nie jest obsługiwany" #: apps/remix/app/routes/_internal+/[__htmltopdf]+/certificate.tsx #: packages/lib/server-only/pdf/render-certificate.ts @@ -10142,7 +10143,7 @@ msgstr "Czas na podpisanie minął" #: apps/remix/app/components/general/document-signing/csc-recipient-signing-in-progress-page.tsx msgid "Signing failed" -msgstr "Podpisanie nie powiodło się" +msgstr "Podpisywanie nie powiodło się" #: apps/remix/app/components/embed/embed-document-signing-page-v1.tsx msgid "Signing for" @@ -10273,7 +10274,7 @@ msgstr "Coś poszło nie tak" #: apps/remix/app/components/general/document-signing/csc-recipient-signing-in-progress-page.tsx msgid "Something went wrong while applying your signature. Please retry." -msgstr "Coś poszło nie tak podczas stosowania Twojego podpisu. Spróbuj ponownie." +msgstr "Coś poszło nie tak podczas składania podpisu. Spróbuj ponownie." #. placeholder {0}: data.teamName #: apps/remix/app/routes/_unauthenticated+/team.verify.email.$token.tsx @@ -10298,11 +10299,11 @@ msgstr "Coś poszło nie tak podczas ładowania kluczy dostępu." #: apps/remix/app/components/general/document-signing/csc-recipient-blocked-page.tsx msgid "Something went wrong while preparing the remote signature. Please try again." -msgstr "Coś poszło nie tak podczas przygotowywania zdalnego podpisu. Spróbuj ponownie." +msgstr "Coś poszło nie tak podczas przygotowywania podpisu zdalnego. Spróbuj ponownie." #: packages/lib/constants/pdf-viewer-i18n.ts msgid "Something went wrong while rendering the document, please try again or contact our support." -msgstr "Coś poszło nie tak podczas renderowania dokumentu. Spróbuj ponownie lub skontaktuj się z naszym wsparciem." +msgstr "Coś poszło nie tak podczas renderowania dokumentu. Spróbuj ponownie lub skontaktuj się z pomocą techniczną." #: packages/lib/constants/pdf-viewer-i18n.ts #: packages/lib/constants/pdf-viewer-i18n.ts @@ -10589,7 +10590,7 @@ msgstr "Synchronizuj" #: apps/remix/app/components/dialogs/admin-organisation-sync-subscription-dialog.tsx msgid "Sync claims. This will overwrite the current claim with the one resolved from the Stripe subscription." -msgstr "Zsynchronizuj roszczenia. Spowoduje to nadpisanie bieżącego roszczenia tym, które zostanie pobrane z subskrypcji Stripe." +msgstr "Synchronizuj subskrypcję. Spowoduje to nadpisanie ustawień Stripe." #: apps/remix/app/components/tables/organisation-email-domains-table.tsx msgid "Sync Email Domains" @@ -10607,7 +10608,7 @@ msgstr "Synchronizuj licencję z serwera" #: apps/remix/app/components/dialogs/admin-organisation-sync-subscription-dialog.tsx #: apps/remix/app/routes/_authenticated+/admin+/organisations.$id.tsx msgid "Sync Stripe subscription" -msgstr "Zsynchronizuj subskrypcję Stripe" +msgstr "Synchronizuj subskrypcję Stripe" #: packages/lib/utils/document-audit-logs.ts #: packages/lib/utils/document-audit-logs.ts @@ -10873,7 +10874,7 @@ msgstr "Zmieniono nazwę szablonu" #: apps/remix/app/components/dialogs/envelope-redistribute-dialog.tsx msgid "Template resent" -msgstr "Szablon został ponownie wysłany" +msgstr "Wysłano ponownie szablon" #: apps/remix/app/components/general/template/template-edit-form.tsx msgid "Template saved" @@ -10934,7 +10935,7 @@ msgstr "Wiadomość testowa została wysłana." #: apps/remix/app/components/dialogs/email-transport-send-test-dialog.tsx msgid "Test failed." -msgstr "Test nie powiódł się." +msgstr "Wiadomość testowa nie powiodła się." #: apps/remix/app/components/dialogs/webhook-test-dialog.tsx msgid "Test Webhook" @@ -10950,7 +10951,7 @@ msgstr "Testowy webhook został wysłany" #: apps/remix/app/components/dialogs/email-transport-send-test-dialog.tsx msgid "test@example.com" -msgstr "test@example.com" +msgstr "test@przyklad.com" #: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx #: apps/remix/app/components/general/document-signing/document-signing-text-field.tsx @@ -10979,7 +10980,7 @@ msgstr "Kolor tekstu" #: apps/remix/app/components/forms/branding-preferences-form.tsx msgid "Text colour on primary buttons." -msgstr "Kolor tekstu na głównych przyciskach." +msgstr "Kolor tekstu na przyciskach." #: apps/remix/app/components/dialogs/sign-field-text-dialog.tsx msgid "Text is required" @@ -10995,7 +10996,7 @@ msgstr "Podpisywanie zostało zakończone." #: apps/remix/app/routes/_recipient+/report.$token.tsx msgid "Thank you for letting us know, we have flagged this sender for review. If you have any concerns please feel free to reach out to our <0>support team." -msgstr "Dziękujemy za zgłoszenie — oznaczyliśmy tego nadawcę do sprawdzenia. Jeśli masz jakiekolwiek wątpliwości, skontaktuj się z naszym <0>zespołem wsparcia." +msgstr "Dziękujemy za zgłoszenie nadawcy. Zweryfikujemy go. Jeśli masz pytania, skontaktuj się z naszą <0>pomocą techniczną." #: apps/remix/app/routes/_unauthenticated+/articles.signature-disclosure.tsx msgid "Thank you for using Documenso to perform your electronic document signing. The purpose of this disclosure is to inform you about the process, legality, and your rights regarding the use of electronic signatures on our platform. By opting to use an electronic signature, you are agreeing to the terms and conditions outlined below." @@ -11039,7 +11040,7 @@ msgstr "Domyślny adres e-mail do wysyłania wiadomości do odbiorców" #: apps/remix/app/components/dialogs/admin-organisation-delete-dialog.tsx msgid "The deletion will run in the background, and can take up to a few minutes to complete. Do not re-run this deletion." -msgstr "Usunięcie zostanie wykonane w tle i może zająć do kilku minut. Nie uruchamiaj ponownie tego procesu usuwania." +msgstr "Usunięcie zostanie uruchomione w tle. Może to potrwać do kilku minut. Nie uruchamiaj ponownie operacji." #: apps/remix/app/components/dialogs/template-direct-link-dialog.tsx #: apps/remix/app/components/general/template/template-direct-link-badge.tsx @@ -11054,7 +11055,7 @@ msgstr "Nazwa wyświetlana dla adresu e-mail" #: apps/remix/app/utils/toast-error-messages.ts msgid "The document could not be created because of missing or invalid information. Please review the template's recipients and fields." -msgstr "Nie udało się utworzyć dokumentu z powodu brakujących lub nieprawidłowych danych. Sprawdź listę odbiorców i pola w szablonie." +msgstr "Nie można było utworzyć dokumentu z powodu brakujących lub nieprawidłowych informacji. Sprawdź odbiorców i pola szablonu." #: apps/remix/app/components/dialogs/admin-document-delete-dialog.tsx msgid "The Document has been deleted successfully." @@ -11091,7 +11092,7 @@ msgstr "Zmieniono właściciela dokumentu na {0} z zespołu {1}" #: apps/remix/app/components/dialogs/envelope-cancel-dialog.tsx #: apps/remix/app/components/dialogs/envelopes-bulk-cancel-dialog.tsx msgid "The document signing process will be stopped" -msgstr "Proces podpisywania dokumentu zostanie zatrzymany" +msgstr "Podpisywanie dokumentu zostanie zatrzymane" #: apps/remix/app/utils/toast-error-messages.ts msgid "The document was created but could not be sent to recipients." @@ -11124,7 +11125,7 @@ msgstr "Dokument zostanie natychmiast wysłany do odbiorców." #: apps/remix/app/components/dialogs/envelope-cancel-dialog.tsx msgid "The document will remain in your dashboard marked as Cancelled" -msgstr "Dokument pozostanie na Twoim pulpicie oznaczony jako „Anulowany”." +msgstr "Dokument pozostanie na pulpicie oznaczony jako anulowany" #: apps/remix/app/routes/_authenticated+/t.$teamUrl+/documents.$id._layout.tsx msgid "The document you are looking for could not be found." @@ -11141,7 +11142,7 @@ msgstr "Nazwa dokumentu" #: apps/remix/app/components/dialogs/envelopes-bulk-cancel-dialog.tsx msgid "The documents will remain in your dashboard marked as Cancelled" -msgstr "Dokumenty pozostaną na Twoim pulpicie oznaczone jako „Anulowane”." +msgstr "Dokumenty pozostaną na pulpicie oznaczone jako anulowane" #: apps/remix/app/components/forms/email-preferences-form.tsx msgid "The email address which will show up in the \"Reply To\" field in emails" @@ -11149,7 +11150,7 @@ msgstr "Adres e-mail, który pojawi się w polu „Odpowiedz do” w wiadomości #: apps/remix/app/components/general/admin-email-blocklist-section.tsx msgid "The email blocklist has been updated successfully." -msgstr "Bloklista e‑mail została pomyślnie zaktualizowana." +msgstr "Lista zablokowanych domen została zaktualizowana." #: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.email-domains.$id.tsx msgid "The email domain you are looking for may have been removed, renamed or may have never existed." @@ -11190,11 +11191,11 @@ msgstr "Wystąpiły następujące błędy:" #: packages/email/templates/organisation-delete.tsx msgid "The following organisation has been deleted by an administrator. You and your members will no longer be able to access this organisation, its teams, or its associated data." -msgstr "Poniższa organizacja została usunięta przez administratora. Ty i członkowie Twojej organizacji nie będziecie już mieli dostępu do tej organizacji, jej zespołów ani powiązanych z nią danych." +msgstr "Organizacja została usunięta przez administratora. Użytkownicy organizacji nie będą mieli już do niej dostępu, w tym do jej zespołów i powiązanych danych." #: packages/email/templates/organisation-delete.tsx msgid "The following organisation has been deleted. You and your members will no longer be able to access this organisation, its teams, or its associated data." -msgstr "Poniższa organizacja została usunięta. Ty i członkowie Twojej organizacji nie będziecie już mieli dostępu do tej organizacji, jej zespołów ani powiązanych z nią danych." +msgstr "Organizacja została usunięta. Użytkownicy organizacji nie będą mieli już do niej dostępu, w tym do jej zespołów i powiązanych danych." #: apps/remix/app/components/dialogs/envelope-distribute-dialog.tsx msgid "The following recipients require an email address:" @@ -11240,7 +11241,7 @@ msgstr "Subskrypcja organizacji została zsynchronizowana ze Stripe." #: apps/remix/app/components/dialogs/admin-organisation-delete-dialog.tsx msgid "The organisation will be deleted in the background. Documents will be orphaned, not deleted." -msgstr "Organizacja zostanie usunięta w tle. Dokumenty staną się osierocone, nieusunięte." +msgstr "Organizacja zostanie usunięta w tle. Dokumenty zostaną osierocone, ale nie usunięte." #: apps/remix/app/routes/_authenticated+/_layout.tsx #: apps/remix/app/routes/_authenticated+/admin+/organisations.$id.tsx @@ -11337,7 +11338,7 @@ msgstr "Link do podpisywania został skopiowany do schowka." #: apps/remix/app/components/general/document-signing/csc-recipient-signing-in-progress-page.tsx msgid "The signing provider did not respond in time. Please retry." -msgstr "Dostawca usługi podpisu nie odpowiedział na czas. Spróbuj ponownie." +msgstr "Dostawca podpisu nie odpowiedział na czas. Spróbuj ponownie." #: packages/email/templates/recipient-expired.tsx msgid "The signing window for \"{recipientName}\" on document \"{documentName}\" has expired." @@ -11364,7 +11365,7 @@ msgstr "Zespół, którego szukasz, mógł zostać usunięty, zmieniony lub móg #: apps/remix/app/utils/toast-error-messages.ts msgid "The template or one of its recipients could not be found." -msgstr "Szablon lub jeden z jego odbiorców nie został znaleziony." +msgstr "Nie można odnaleźć szablonu lub jednego z jego odbiorców." #: apps/remix/app/components/dialogs/public-profile-template-manage-dialog.tsx msgid "The template will be removed from your profile" @@ -11453,7 +11454,7 @@ msgstr "Brak aktywnych szkiców. Prześlij, aby utworzyć." #: apps/remix/app/components/tables/documents-table-empty-state.tsx msgid "There are no cancelled documents. Documents you cancel will remain here as a record that they were distributed." -msgstr "Brak anulowanych dokumentów. Dokumenty, które anulujesz, pozostaną tutaj jako zapis ich wysłania." +msgstr "Brak anulowanych dokumentów. Anulowane dokumenty pozostaną tutaj jako dowód ich wcześniejszej dystrybucji." #: apps/remix/app/components/tables/documents-table-empty-state.tsx msgid "There are no completed documents yet. Documents that you have created or received will appear here once completed." @@ -11522,7 +11523,7 @@ msgstr "Nie można zmienić dokumentu" #: apps/remix/app/components/dialogs/envelope-cancel-dialog.tsx msgid "This document could not be cancelled at this time. Please try again." -msgstr "Tego dokumentu nie można teraz anulować. Spróbuj ponownie." +msgstr "Nie można anulować dokumentu. Spróbuj ponownie." #: apps/remix/app/components/dialogs/envelope-delete-dialog.tsx msgid "This document could not be deleted at this time. Please try again." @@ -11547,7 +11548,7 @@ msgstr "Dokument został już wysłany do odbiorcy, więc nie możesz go już ed #: apps/remix/app/routes/_authenticated+/t.$teamUrl+/documents.$id._index.tsx msgid "This document has been cancelled" -msgstr "Ten dokument został anulowany" +msgstr "Dokument został anulowany" #: apps/remix/app/routes/_recipient+/sign.$token+/complete.tsx msgid "This document has been cancelled by the owner and is no longer available for others to sign." @@ -11568,7 +11569,7 @@ msgstr "Dokument został podpisany przez wszystkich odbiorców" #: apps/remix/app/utils/toast-error-messages.ts msgid "This document has too many recipients. Please remove some recipients or contact support if you need more." -msgstr "Ten dokument ma zbyt wielu adresatów. Usuń część adresatów lub skontaktuj się z pomocą techniczną, jeśli potrzebujesz większej liczby." +msgstr "Dokument ma zbyt wielu odbiorców. Usuń niektórych odbiorców lub skontaktuj się z pomocą techniczną, jeśli potrzebujesz więcej." #: apps/remix/app/components/general/document/document-certificate-qr-view.tsx msgid "This document is available in your Documenso account. You can view more details, recipients, and audit logs there." @@ -11629,11 +11630,11 @@ msgstr "Zostanie wysłana do odbiorcy, który właśnie podpisał dokument, gdy #: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx #: packages/ui/primitives/document-flow/add-signers.tsx msgid "This envelope cannot have more than {recipientCountLimit} recipients. Please contact support if you need more." -msgstr "Ta koperta nie może mieć więcej niż {recipientCountLimit} adresatów. Skontaktuj się z pomocą techniczną, jeśli potrzebujesz większej liczby." +msgstr "Koperta nie może więcej niż {recipientCountLimit} odbiorców. Skontaktuj się z pomocą techniczną, jeśli potrzebujesz więcej." #: apps/remix/app/components/embed/embed-paywall.tsx msgid "This feature is not available on your current plan" -msgstr "Funkcja nie jest dostępna w Twoim planie" +msgstr "Ta funkcja nie jest dostępna w Twoim obecnym planie." #: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx msgid "This field cannot be modified or deleted. When you share this template's direct link or add it to your public profile, anyone who accesses it can input their name and email, and fill in the fields assigned to them." @@ -11641,7 +11642,7 @@ msgstr "Pole nie może być modyfikowane ani usuwane. Gdy udostępnisz bezpośre #: apps/remix/app/utils/toast-error-messages.ts msgid "This file type isn't supported. Please upload a PDF or Word document." -msgstr "Ten typ pliku nie jest obsługiwany. Prześlij plik PDF lub dokument programu Word." +msgstr "Typ pliku nie jest obsługiwany. Prześlij dokument PDF lub Word." #: apps/remix/app/components/dialogs/folder-delete-dialog.tsx msgid "This folder contains multiple items. Deleting it will remove all subfolders and move all nested documents and templates to the root folder." @@ -11674,11 +11675,11 @@ msgstr "Link jest nieprawidłowy lub wygasł. Skontaktuj się ze swoim zespołem #: apps/remix/app/components/dialogs/team-member-delete-dialog.tsx msgid "This member is inherited from a group and cannot be removed from the team directly." -msgstr "Ten członek jest dziedziczony z grupy i nie można go bezpośrednio usunąć z zespołu." +msgstr "Użytkownik jest odziedziczony z grupy i nie może zostać usunięty bezpośrednio z zespołu." #: apps/remix/app/components/general/organisations/organisation-billing-banner.tsx msgid "This organisation is awaiting payment. Complete checkout to unlock it." -msgstr "Ta organizacja oczekuje na płatność. Dokończ proces zakupu, aby ją odblokować." +msgstr "Organizacja oczekuje na płatność. Zakończ płatność, aby ją odblokować." #: apps/remix/app/routes/_unauthenticated+/organisation.sso.confirmation.$token.tsx msgid "This organisation will have administrative control over your account. You can revoke this access later, but they will retain access to any data they've already collected." @@ -11758,7 +11759,7 @@ msgstr "Zostanie wysłana do właściciela po zakończeniu dokumentu." #: packages/ui/components/document/document-email-checkboxes.tsx msgid "This will be sent to the document owner when a recipient's signing window has expired." -msgstr "Zostanie wysłana do właściciela dokumentu, gdy minie czas na podpisanie przez odbiorcę\n" +msgstr "Zostanie wysłana do właściciela dokumentu, gdy minie czas na podpisanie przez odbiorcę" #: apps/remix/app/components/tables/organisation-email-domains-table.tsx msgid "This will check and sync the status of all email domains for this organisation" @@ -11902,7 +11903,7 @@ msgstr "Aby uzyskać dostęp do konta, potwierdź adres e-mail, klikając na lin #: packages/email/template-components/template-admin-user-created.tsx msgid "To get started, please set your password by clicking the button below:" -msgstr "Aby rozpocząć, ustaw swoje hasło, klikając przycisk poniżej:" +msgstr "Ustaw hasło, klikając przycisk poniżej:" #. placeholder {0}: recipient.email #: apps/remix/app/components/general/document-signing/document-signing-auth-account.tsx @@ -12011,7 +12012,7 @@ msgstr "Token nie został znaleziony" #: apps/remix/app/utils/toast-error-messages.ts msgid "Too many recipients" -msgstr "Zbyt wielu adresatów" +msgstr "Zbyt wielu odbiorców" #: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx #: apps/remix/app/components/dialogs/ai-recipient-detection-dialog.tsx @@ -12024,7 +12025,7 @@ msgstr "Góra" #: apps/remix/app/components/tables/admin-organisation-stats-table.tsx msgid "Total" -msgstr "Razem" +msgstr "Łącznie" #: apps/remix/app/routes/_authenticated+/admin+/stats.tsx msgid "Total Documents" @@ -12052,23 +12053,23 @@ msgstr "Przenieś dokumenty do innego zespołu" #: apps/remix/app/components/dialogs/email-transport-create-dialog.tsx msgid "Transport created." -msgstr "Transport został utworzony." +msgstr "Dostawca poczty e-mail został utworzony." #: apps/remix/app/components/dialogs/email-transport-delete-dialog.tsx msgid "Transport deleted." -msgstr "Transport został usunięty." +msgstr "Dostawca poczty e-mail został usunięty." #: apps/remix/app/components/forms/email-transport-form.tsx msgid "Transport type" -msgstr "Typ transportu" +msgstr "Rodzaj dostawcy poczty e-mail" #: apps/remix/app/components/forms/email-transport-form.tsx msgid "Transport type cannot be changed after creation." -msgstr "Typu transportu nie można zmienić po utworzeniu." +msgstr "Nie można zmienić rodzaju dostawcy poczty e-mail po jego utworzeniu." #: apps/remix/app/components/dialogs/email-transport-update-dialog.tsx msgid "Transport updated." -msgstr "Transport został zaktualizowany." +msgstr "Dostawca poczty e-mail został zaktualizowany." #: apps/remix/app/components/dialogs/webhook-create-dialog.tsx #: apps/remix/app/components/dialogs/webhook-edit-dialog.tsx @@ -12283,7 +12284,7 @@ msgstr "Nieznana nazwa" #: apps/remix/app/routes/_authenticated+/admin+/organisations.$id.tsx #: apps/remix/app/routes/_authenticated+/admin+/organisations.$id.tsx msgid "Unlimited" -msgstr "Nieograniczone" +msgstr "Bez ograniczeń" #: apps/remix/app/components/dialogs/organisation-create-dialog.tsx msgid "Unlimited documents, API and more" @@ -12347,7 +12348,7 @@ msgstr "Zaktualizuj płatności" #: apps/remix/app/components/general/admin-email-blocklist-section.tsx msgid "Update Blocklist" -msgstr "Zaktualizuj listę blokowanych adresów e-mail" +msgstr "Zaktualizuj listę zablokowanych domen" #: apps/remix/app/components/dialogs/claim-update-dialog.tsx msgid "Update Claim" @@ -12583,7 +12584,7 @@ msgstr "Adres URL" #. placeholder {0}: selectedStat?.period || 'N/A' #: apps/remix/app/components/general/organisation-usage-panel.tsx msgid "Usage for period: {0}" -msgstr "Wykorzystanie za okres: {0}" +msgstr "Okres: {0}" #: apps/remix/app/routes/_authenticated+/t.$teamUrl+/templates.$id._index.tsx msgid "Use" @@ -12614,7 +12615,7 @@ msgstr "Użyj klucza dostępu do uwierzytelniania" #: apps/remix/app/components/tables/admin-email-transports-table.tsx msgid "Used by claims" -msgstr "Używany przez roszczenia" +msgstr "Liczba powiązań" #: apps/remix/app/components/tables/admin-document-logs-table.tsx #: apps/remix/app/components/tables/document-logs-table.tsx @@ -12630,7 +12631,7 @@ msgstr "User agent" #: apps/remix/app/components/dialogs/admin-user-create-dialog.tsx msgid "User created and welcome email sent" -msgstr "Użytkownik został utworzony i wysłano wiadomość powitalną" +msgstr "Użytkownik został utworzony. Wiadomość powitalna została wysłana." #: apps/remix/app/components/forms/password.tsx msgid "User has no password." @@ -12897,7 +12898,7 @@ msgstr "Wyświetl rekordy DNS dla tej domeny" #: apps/remix/app/routes/_authenticated+/admin+/organisation-stats._index.tsx msgid "View, sort and filter monthly usage stats across organisations" -msgstr "Przeglądaj, sortuj i filtruj statystyki miesięcznego wykorzystania w organizacjach" +msgstr "Sprawdź miesięczne statystyki wykorzystania organizacji" #: apps/remix/app/components/embed/multisign/multi-sign-document-list.tsx #: apps/remix/app/components/general/document/document-page-view-recipients.tsx @@ -12944,7 +12945,7 @@ msgstr "Oczekiwanie na innych" #: packages/lib/server-only/document/send-pending-email.ts msgid "Waiting for others to complete signing." -msgstr "Oczekiwanie na innych, aby zakończyć podpisywanie." +msgstr "Oczekiwanie na zakończenie podpisywania przez innych." #: apps/remix/app/routes/_recipient+/sign.$token+/complete.tsx msgid "Waiting for others to sign" @@ -12966,7 +12967,7 @@ msgstr "Chcesz mieć profil publiczny?" #: apps/remix/app/components/dialogs/email-transport-delete-dialog.tsx msgid "Warning, this email transport is currently being used by:" -msgstr "Uwaga, ten transport e-mail jest obecnie używany przez:" +msgstr "Ten dostawca poczty e-mail jest używany przez:" #: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx #: apps/remix/app/components/general/envelope-editor/envelope-editor-recipient-form.tsx @@ -12995,7 +12996,7 @@ msgstr "Nie mogliśmy zaktualizować klucza dostępu. Spróbuj ponownie późnie #: apps/remix/app/utils/toast-error-messages.ts msgid "We couldn't convert this file. Please check it's a valid Word document or upload a PDF instead." -msgstr "Nie udało się przekonwertować tego pliku. Sprawdź, czy jest to prawidłowy dokument programu Word, lub zamiast tego prześlij plik PDF." +msgstr "Nie możemy przekonwertować tego pliku. Sprawdź, czy plik Word jest prawidłowy lub prześlij plik PDF." #: apps/remix/app/routes/_authenticated+/admin+/organisations.$id.tsx msgid "We couldn't create a Stripe customer. Please try again." @@ -13025,7 +13026,7 @@ msgstr "Nie mogliśmy zaktualizować dostawcy. Spróbuj ponownie." #: apps/remix/app/components/dialogs/admin-organisation-delete-dialog.tsx msgid "We encountered an error while attempting to delete this organisation. Please try again later." -msgstr "Wystąpił błąd podczas próby usunięcia tej organizacji. Spróbuj ponownie później." +msgstr "Wystąpił błąd podczas próby usunięcia organizacji. Spróbuj ponownie później." #: packages/lib/client-only/providers/envelope-editor-provider.tsx #: packages/lib/client-only/providers/envelope-editor-provider.tsx @@ -13177,7 +13178,7 @@ msgstr "Wystąpił nieznany błąd podczas próby zaktualizowania baneru. Sprób #: apps/remix/app/components/general/admin-email-blocklist-section.tsx msgid "We encountered an unknown error while attempting to update the email blocklist. Please try again later." -msgstr "Wystąpił nieznany błąd podczas próby zaktualizowania listy blokowanych adresów e-mail. Spróbuj ponownie później." +msgstr "Wystąpił nieznany błąd podczas próby zaktualizowania listy zablokowanych domen. Spróbuj ponownie później." #: apps/remix/app/components/general/envelope-editor/envelope-editor-settings-dialog.tsx msgid "We encountered an unknown error while attempting to update the envelope. Please try again later." @@ -13258,7 +13259,7 @@ msgstr "Nie mogliśmy Cię wylogować." #: apps/remix/app/routes/_recipient+/report.$token.tsx msgid "We were unable to report this sender at this time. Please try again later." -msgstr "Nie mogliśmy zgłosić tego nadawcy w tym momencie. Spróbuj ponownie później." +msgstr "Nie mogliśmy zgłosić nadawcę. Spróbuj ponownie później." #: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.public-profile.tsx msgid "We were unable to set your public profile to public. Please try again." @@ -13344,7 +13345,7 @@ msgstr "Pusto" #: packages/email/template-components/template-document-pending.tsx msgid "We're still waiting for other signers to sign this document.<0/>We'll notify you as soon as it's ready." -msgstr "Wciąż czekamy na podpisy pozostałych podpisujących.<0/>Powiadomimy Cię, gdy dokument będzie gotowy." +msgstr "Wciąż czekamy na podpisy pozostałych osób.<0/>Powiadomimy Cię, gdy dokument będzie gotowy." #: packages/email/templates/reset-password.tsx msgid "We've changed your password as you asked. You can now sign in with your new password." @@ -13352,15 +13353,15 @@ msgstr "Zmieniliśmy Twoje hasło. Możesz zalogować się za pomocą nowego has #: packages/email/templates/organisation-limit-alert.tsx msgid "We've noticed API activity on your account that exceeds the fair use limits of your current plan. As a precaution, new API activity has been temporarily paused pending review." -msgstr "Zauważyliśmy aktywność API na Twoim koncie, która przekracza limity uczciwego korzystania w Twoim obecnym planie. W ramach środka ostrożności nowa aktywność API została tymczasowo wstrzymana do czasu weryfikacji." +msgstr "Zauważyliśmy na Twoim koncie aktywność API, która przekracza limity dozwolonego użytkowania w ramach obecnego planu. Nowa aktywność API została tymczasowo wstrzymana do czasu przeprowadzenia weryfikacji." #: packages/email/templates/organisation-limit-alert.tsx msgid "We've noticed document activity on your account that exceeds the fair use limits of your current plan. As a precaution, new document activity has been temporarily paused pending review." -msgstr "Zauważyliśmy aktywność związaną z dokumentami na Twoim koncie, która przekracza limity uczciwego korzystania w Twoim obecnym planie. W ramach środka ostrożności nowa aktywność związana z dokumentami została tymczasowo wstrzymana do czasu weryfikacji." +msgstr "Zauważyliśmy na Twoim koncie aktywność dokumentów, która przekracza limity dozwolonego użytkowania w ramach obecnego planu. Nowa aktywność została tymczasowo wstrzymana do czasu przeprowadzenia weryfikacji." #: packages/email/templates/organisation-limit-alert.tsx msgid "We've noticed email sending activity on your account that exceeds the fair use limits of your current plan. As a precaution, new email activity has been temporarily paused pending review." -msgstr "Zauważyliśmy wysyłkę e‑maili z Twojego konta, która przekracza limity uczciwego korzystania w Twoim obecnym planie. W ramach środka ostrożności nowa aktywność e‑mailowa została tymczasowo wstrzymana do czasu weryfikacji." +msgstr "Zauważyliśmy na Twoim koncie aktywność wiadomości, która przekracza limity dozwolonego użytkowania w ramach obecnego planu. Nowa aktywność została tymczasowo wstrzymana do czasu przeprowadzenia weryfikacji." #: apps/remix/app/components/general/document-signing/access-auth-2fa-form.tsx msgid "We've sent a 6-digit verification code to your email. Please enter it below to complete the document." @@ -13459,7 +13460,7 @@ msgstr "Podpisujący mogą wybrać, kto powinien podpisać jako następny w kole #: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.sso.tsx msgid "When enabled, users signing in via SSO for the first time will also receive their own personal organisation." -msgstr "Użytkownicy logujący się po raz pierwszy za pomocą logowania SSO otrzymają również własną osobistą organizację." +msgstr "Po włączeniu tej opcji użytkownicy logujący się po raz pierwszy za pomocą SSO otrzymają również własną osobistą organizację." #: apps/remix/app/components/dialogs/passkey-create-dialog.tsx msgid "When you click continue, you will be prompted to add the first available authenticator on your system." @@ -13531,7 +13532,7 @@ msgstr "Zatwierdziłeś dokument" #: apps/remix/app/components/dialogs/envelope-cancel-dialog.tsx msgid "You are about to cancel <0>\"{title}\"" -msgstr "Zamierzasz anulować dokument <0>\"{title}\"" +msgstr "Zamierzasz anulować dokument <0>„{title}”" #: apps/remix/app/components/general/document-signing/document-signing-complete-dialog.tsx msgid "You are about to complete approving the following document" @@ -13560,7 +13561,7 @@ msgstr "Zamierzasz usunąć organizację <0>{0}. Wszystkie dane powiązane z #: apps/remix/app/components/dialogs/admin-organisation-delete-dialog.tsx msgid "You are about to delete <0>{organisationName}. This action is not reversible. All teams will be removed and all documents will be orphaned to the deleted-account service account." -msgstr "Za chwilę usuniesz <0>{organisationName}. Tej operacji nie można cofnąć. Wszystkie zespoły zostaną usunięte, a wszystkie dokumenty zostaną przypisane do konta usługi usuniętego konta." +msgstr "Zamierzasz usunąć organizację <0>{organisationName}. Ta akcja jest nieodwracalna. Wszystkie zespoły zostaną usunięcie, a dokumenty zostaną przypisane do konta serwisowego usuniętego konta." #: apps/remix/app/components/dialogs/team-email-delete-dialog.tsx msgid "You are about to delete the following team email from <0>{teamName}." @@ -13710,11 +13711,11 @@ msgstr "Nie masz uprawnień do zresetowania weryfikacji dwuetapowej tego użytko #: packages/lib/utils/document-audit-logs.ts msgid "You authenticated with the signing provider" -msgstr "Uwierzytelniłeś(-aś) się u dostawcy usługi podpisu" +msgstr "Uwierzytelniłeś się u dostawcy podpisu" #: packages/lib/utils/document-audit-logs.ts msgid "You authorised the remote signature" -msgstr "Autoryzowałeś(-aś) zdalny podpis" +msgstr "Autoryzowałeś podpis zdalny" #: apps/remix/app/components/dialogs/ai-field-detection-dialog.tsx msgid "You can add fields manually in the editor." @@ -13730,7 +13731,7 @@ msgstr "Możesz także skopiować i wkleić link do przeglądarki: {confirmation #: packages/email/template-components/template-admin-user-created.tsx msgid "You can also copy and paste this link into your browser: {resetPasswordLink} (link expires in 24 hours)" -msgstr "Możesz także skopiować i wkleić ten link do przeglądarki: {resetPasswordLink} (link wygaśnie za 24 godziny)" +msgstr "Możesz także skopiować i wkleić link do przeglądarki: {resetPasswordLink} (link wygaśnie za 24 godziny)" #: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.public-profile.tsx msgid "You can choose to enable or disable the profile for public view." @@ -13809,11 +13810,11 @@ msgstr "Nie możesz edytować użytkownika zespołu, który ma wyższą rolę ni #: apps/remix/app/components/dialogs/team-member-delete-dialog.tsx msgid "You cannot remove a member with a role higher than your own." -msgstr "Nie możesz usunąć członka, który ma wyższą rolę niż Ty." +msgstr "Nie możesz usunąć użytkownika o roli wyższej niż Twoja." #: apps/remix/app/components/dialogs/team-member-delete-dialog.tsx msgid "You cannot remove members from this team while the inherit member feature is enabled." -msgstr "Nie możesz usuwać członków z tego zespołu, gdy funkcja dziedziczenia członków jest włączona." +msgstr "Nie możesz usunąć użytkowników zespołu, jeśli funkcja odziedziczenia użytkownika jest włączona." #: apps/remix/app/components/dialogs/team-member-delete-dialog.tsx msgid "You cannot remove the organisation owner from the team." @@ -13934,7 +13935,7 @@ msgstr "Odrzucono zaproszenie dołączenia do organizacji <0>{0}." #: packages/lib/jobs/definitions/emails/send-signing-email.handler.ts #: packages/lib/server-only/document/resend-document.ts msgid "You have initiated the document {0} that requires you to {recipientActionVerb} it." -msgstr "Sprawdź i {recipientActionVerb} dokument utworzony przez Ciebie." +msgstr "Sprawdź i {recipientActionVerb} dokument „{0}” utworzony przez Ciebie." #: apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.webhooks._index.tsx msgid "You have no webhooks yet. Your webhooks will be shown here once you create them." @@ -13967,7 +13968,7 @@ msgstr "Osiągnięto maksymalną miesięczną liczbę dokumentów. Zaktualizuj p #: apps/remix/app/utils/toast-error-messages.ts msgid "You have reached your document limit for this plan. Please upgrade your plan." -msgstr "Osiągnięto limit liczby dokumentów w tym planie. Zaktualizuj swój plan." +msgstr "Osiągnięto maksymalną liczbę dokumentów. Zaktualizuj plan." #: apps/remix/app/components/general/document/document-upload-button-legacy.tsx #: apps/remix/app/components/general/envelope/envelope-upload-button.tsx @@ -14201,7 +14202,7 @@ msgstr "Poprosiłeś o kod weryfikacyjny dla dokumentu" #: packages/lib/utils/document-audit-logs.ts msgid "You requested a remote signature" -msgstr "Zleciłeś(-aś) wykonanie zdalnego podpisu" +msgstr "Poprosiłeś o podpis zdalny" #. placeholder {0}: data.recipientEmail #: packages/lib/utils/document-audit-logs.ts @@ -14414,7 +14415,7 @@ msgstr "Dokument został usunięty przez administratora!" #: apps/remix/app/components/dialogs/envelope-redistribute-dialog.tsx msgid "Your document has been resent successfully." -msgstr "Twój dokument został pomyślnie ponownie wysłany." +msgstr "Dokument został ponownie wysłany." #: apps/remix/app/components/dialogs/envelope-save-as-template-dialog.tsx msgid "Your document has been saved as a template." @@ -14511,7 +14512,7 @@ msgstr "Organizacja została utworzona." #: packages/email/templates/organisation-delete.tsx #: packages/email/templates/organisation-delete.tsx msgid "Your organisation has been deleted" -msgstr "Twoja organizacja została usunięta" +msgstr "Organizacja została usunięta" #: apps/remix/app/components/dialogs/organisation-delete-dialog.tsx msgid "Your organisation has been successfully deleted." @@ -14523,47 +14524,47 @@ msgstr "Organizacja została zaktualizowana." #: apps/remix/app/components/general/organisations/organisation-quota-banner.tsx msgid "Your organisation has exceeded a fair use limit" -msgstr "Twoja organizacja przekroczyła limit uczciwego użytkowania." +msgstr "Organizacja przekroczyła limit dozwolonego użytkowania" #: apps/remix/app/components/general/organisations/organisation-quota-banner.tsx msgid "Your organisation has exceeded a fair use limit. Please contact <0>support to review your plan's limits." -msgstr "Twoja organizacja przekroczyła limit uczciwego użytkowania. Skontaktuj się z <0>pomocą techniczną, aby przejrzeć limity swojego planu." +msgstr "Organizacja przekroczyła limit dozwolonego użytkowania. Skontaktuj się z <0>pomocą techniczną, aby przeprowadzić weryfikację." #: apps/remix/app/utils/toast-error-messages.ts msgid "Your organisation has reached its plan's fair use limit. Please contact your organisation administrator or support to continue." -msgstr "Twoja organizacja osiągnęła limit uczciwego użytkowania w swoim planie. Skontaktuj się z administratorem organizacji lub pomocą techniczną, aby kontynuować." +msgstr "Organizacja przekroczyła limit dozwolonego użytkowania. Skontaktuj się z administratorem organizacji." #: apps/remix/app/components/general/organisations/organisation-quota-banner.tsx msgid "Your organisation is approaching a fair use limit" -msgstr "Twoja organizacja zbliża się do limitu dozwolonego użytkowania (fair use)" +msgstr "Organizacja zbliża się do limitu dozwolonego użytkowania" #: apps/remix/app/components/general/organisations/organisation-quota-banner.tsx msgid "Your organisation is approaching a fair use limit. If you expect to need higher limits, please contact <0>support to review your plan's limits." -msgstr "Twoja organizacja zbliża się do limitu dozwolonego użytkowania (fair use). Jeśli spodziewasz się potrzeby wyższych limitów, skontaktuj się z <0>pomocą techniczną, aby omówić limity w Twoim planie." +msgstr "Organizacja zbliża się do limitu dozwolonego użytkowania. Jeśli potrzebujesz wyższych limitów, skontaktuj się z <0>pomocą techniczną." #: packages/email/templates/organisation-limit-alert.tsx msgid "Your organisation is generating API requests faster than normal, so some requests are being temporarily throttled." -msgstr "Twoja organizacja generuje żądania API szybciej niż zwykle, więc część żądań jest tymczasowo ograniczana (throttling)." +msgstr "Twoja organizacja generuje żądania API szybciej niż zwykle, więc niektóre żądania zostały tymczasowo ograniczane." #: packages/email/templates/organisation-limit-alert.tsx msgid "Your organisation is generating documents faster than normal, so some requests are being temporarily throttled." -msgstr "Twoja organizacja generuje dokumenty szybciej niż zwykle, więc część żądań jest tymczasowo ograniczana (throttling)." +msgstr "Twoja organizacja generuje dokumenty szybciej niż zwykle, więc niektóre żądania zostały tymczasowo ograniczane." #: packages/email/templates/organisation-limit-alert.tsx msgid "Your organisation is generating emails faster than normal, so some requests are being temporarily throttled." -msgstr "Twoja organizacja generuje e‑maile szybciej niż zwykle, więc część żądań jest tymczasowo ograniczana (throttling)." +msgstr "Twoja organizacja generuje wiadomości szybciej niż zwykle, więc niektóre żądania zostały tymczasowo ograniczane." #: packages/email/templates/organisation-limit-alert.tsx msgid "Your organisation is nearing its fair use limits for creating documents on your current plan. Once the limit is reached, new document activity will be temporarily paused." -msgstr "Twoja organizacja zbliża się do limitów dozwolonego użytkowania (fair use) w zakresie tworzenia dokumentów w ramach obecnego planu. Po osiągnięciu limitu nowe działania związane z dokumentami zostaną tymczasowo wstrzymane." +msgstr "Organizacja zbliża się do limitu dozwolonego użytkowania dokumentów. Po przekroczeniu limitu tworzenie nowych dokumentów zostanie wstrzymane." #: packages/email/templates/organisation-limit-alert.tsx msgid "Your organisation is nearing its fair use limits for making API requests on your current plan. Once the limit is reached, new API activity will be temporarily paused." -msgstr "Twoja organizacja zbliża się do limitów dozwolonego użytkowania (fair use) w zakresie wykonywania zapytań API w ramach obecnego planu. Po osiągnięciu limitu nowa aktywność API zostanie tymczasowo wstrzymana." +msgstr "Organizacja zbliża się do limitu dozwolonego użytkowania API. Po przekroczeniu limitu nowe żądania API zostaną wstrzymane." #: packages/email/templates/organisation-limit-alert.tsx msgid "Your organisation is nearing its fair use limits for sending email on your current plan. Once the limit is reached, new email activity will be temporarily paused." -msgstr "Twoja organizacja zbliża się do limitów dozwolonego użytkowania (fair use) w zakresie wysyłania e‑maili w ramach obecnego planu. Po osiągnięciu limitu nowa aktywność e‑mail zostanie tymczasowo wstrzymana." +msgstr "Organizacja zbliża się do limitu dozwolonego użytkowania wiadomości. Po przekroczeniu limitu tworzenie nowych wiadomości zostanie wstrzymane." #: apps/remix/app/components/forms/password.tsx #: apps/remix/app/components/forms/reset-password.tsx @@ -14613,27 +14614,27 @@ msgstr "To są Twoje kody odzyskiwania. Przechowuj je w bezpiecznym miejscu." #: packages/lib/utils/document-audit-logs.ts msgid "Your remote signature was applied" -msgstr "Twój zdalny podpis został zastosowany" +msgstr "Złożyłeś podpis zdalny" #: apps/remix/app/components/general/document-signing/csc-recipient-signing-in-progress-page.tsx msgid "Your signing authorisation expired before the signature could be applied. Please reauthorise to retry." -msgstr "Twoje upoważnienie do podpisu wygasło, zanim podpis mógł zostać złożony. Aby spróbować ponownie, ponownie udziel upoważnienia." +msgstr "Autoryzacja podpisu wygasła przed jego złożeniem. Spróbuj ponownie." #: apps/remix/app/components/general/document-signing/csc-recipient-blocked-page.tsx msgid "Your signing certificate is invalid, expired, or missing a required key. Contact your administrator or signing provider for assistance." -msgstr "Twój certyfikat podpisu jest nieprawidłowy, wygasł lub brakuje w nim wymaganego klucza. Skontaktuj się z administratorem lub dostawcą usługi podpisu, aby uzyskać pomoc." +msgstr "Certyfikat podpisu jest nieważny, wygasł lub brakuje w nim wymaganego klucza. Skontaktuj się z administratorem lub dostawcą podpisu." #: packages/lib/utils/document-audit-logs.ts msgid "Your signing provider authentication failed" -msgstr "Uwierzytelnianie u Twojego dostawcy usługi podpisu nie powiodło się" +msgstr "Twoje uwierzytelnienie u dostawcy podpisu nie powiodło się" #: apps/remix/app/components/general/document-signing/csc-recipient-blocked-page.tsx msgid "Your signing provider does not advertise a signing algorithm this document accepts. Contact your administrator or signing provider for assistance." -msgstr "Twój dostawca usługi podpisu nie udostępnia algorytmu podpisu akceptowanego przez ten dokument. Skontaktuj się z administratorem lub dostawcą usługi podpisu, aby uzyskać pomoc." +msgstr "Dostawca podpisu nie obsługuje wymaganego algorytmu podpisywania. Skontaktuj się z administratorem lub dostawcą podpisu." #: apps/remix/app/components/general/document-signing/csc-recipient-blocked-page.tsx msgid "Your signing provider returned no usable credentials for this account. Contact your administrator or signing provider for assistance." -msgstr "Twój dostawca usługi podpisu nie zwrócił żadnych użytecznych poświadczeń dla tego konta. Skontaktuj się z administratorem lub dostawcą usługi podpisu, aby uzyskać pomoc." +msgstr "Dostawca podpisu nie zwrócił żadnych użytecznych certyfikatów. Skontaktuj się z administratorem lub dostawcą podpisu." #: apps/remix/app/components/embed/embed-recipient-expired.tsx msgid "Your signing window for this document has expired. Please contact the sender for a new invitation." @@ -14662,7 +14663,7 @@ msgstr "Twój szablon został pomyślnie utworzony" #: apps/remix/app/components/dialogs/envelope-redistribute-dialog.tsx msgid "Your template has been resent successfully." -msgstr "Twój szablon został pomyślnie ponownie wysłany." +msgstr "Szablon został ponownie wysłany." #: apps/remix/app/components/dialogs/envelope-duplicate-dialog.tsx msgid "Your template has been successfully duplicated." @@ -14715,5 +14716,5 @@ msgstr "Twój kod weryfikacyjny:" #: apps/remix/app/routes/_authenticated+/o.$orgUrl.settings.sso.tsx msgid "your-domain.com another-domain.com" -msgstr "your-domain.com another-domain.com" +msgstr "twoja-domena.pl inna-domena.pl"