- Signer Events
- Signature
- Details
+ {_(msg`Signer Events`)}
+ {_(msg`Signature`)}
+ {_(msg`Details`)}
{/* Security */}
@@ -173,11 +191,11 @@ export default async function SigningCertificate({ searchParams }: SigningCertif
{recipient.name}
{recipient.email}
- {RECIPIENT_ROLES_DESCRIPTION_ENG[recipient.role].roleName}
+ {_(RECIPIENT_ROLES_DESCRIPTION[recipient.role].roleName)}
- Authentication Level: {' '}
+ {_(msg`Authentication Level`)}: {' '}
{getAuthenticationLevel(recipient.id)}
@@ -199,21 +217,21 @@ export default async function SigningCertificate({ searchParams }: SigningCertif
- Signature ID: {' '}
+ {_(msg`Signature ID`)}: {' '}
{signature.secondaryId}
- IP Address: {' '}
+ {_(msg`IP Address`)}: {' '}
- {logs.DOCUMENT_RECIPIENT_COMPLETED[0]?.ipAddress ?? 'Unknown'}
+ {logs.DOCUMENT_RECIPIENT_COMPLETED[0]?.ipAddress ?? _(msg`Unknown`)}
- Device: {' '}
+ {_(msg`Device`)}: {' '}
{getDevice(logs.DOCUMENT_RECIPIENT_COMPLETED[0]?.userAgent)}
@@ -227,44 +245,46 @@ export default async function SigningCertificate({ searchParams }: SigningCertif
- Sent: {' '}
+ {_(msg`Sent`)}: {' '}
{logs.EMAIL_SENT[0]
? DateTime.fromJSDate(logs.EMAIL_SENT[0].createdAt)
.setLocale(APP_I18N_OPTIONS.defaultLocale)
.toFormat('yyyy-MM-dd hh:mm:ss a (ZZZZ)')
- : 'Unknown'}
+ : _(msg`Unknown`)}
- Viewed: {' '}
+ {_(msg`Viewed`)}: {' '}
{logs.DOCUMENT_OPENED[0]
? DateTime.fromJSDate(logs.DOCUMENT_OPENED[0].createdAt)
.setLocale(APP_I18N_OPTIONS.defaultLocale)
.toFormat('yyyy-MM-dd hh:mm:ss a (ZZZZ)')
- : 'Unknown'}
+ : _(msg`Unknown`)}
- Signed: {' '}
+ {_(msg`Signed`)}: {' '}
{logs.DOCUMENT_RECIPIENT_COMPLETED[0]
? DateTime.fromJSDate(logs.DOCUMENT_RECIPIENT_COMPLETED[0].createdAt)
.setLocale(APP_I18N_OPTIONS.defaultLocale)
.toFormat('yyyy-MM-dd hh:mm:ss a (ZZZZ)')
- : 'Unknown'}
+ : _(msg`Unknown`)}
- Reason: {' '}
+ {_(msg`Reason`)}: {' '}
- {isOwner(recipient.email)
- ? FRIENDLY_SIGNING_REASONS['__OWNER__']
- : FRIENDLY_SIGNING_REASONS[recipient.role]}
+ {_(
+ isOwner(recipient.email)
+ ? FRIENDLY_SIGNING_REASONS['__OWNER__']
+ : FRIENDLY_SIGNING_REASONS[recipient.role],
+ )}
@@ -280,7 +300,7 @@ export default async function SigningCertificate({ searchParams }: SigningCertif
- Signing certificate provided by:
+ {_(msg`Signing certificate provided by`)}:
diff --git a/apps/web/src/app/(profile)/layout.tsx b/apps/web/src/app/(profile)/layout.tsx
index 43f263de7..d43e44172 100644
--- a/apps/web/src/app/(profile)/layout.tsx
+++ b/apps/web/src/app/(profile)/layout.tsx
@@ -14,7 +14,7 @@ type PublicProfileLayoutProps = {
};
export default async function PublicProfileLayout({ children }: PublicProfileLayoutProps) {
- setupI18nSSR();
+ await setupI18nSSR();
const { user, session } = await getServerComponentSession();
diff --git a/apps/web/src/app/(profile)/p/[url]/page.tsx b/apps/web/src/app/(profile)/p/[url]/page.tsx
index e276417d2..67226c5cb 100644
--- a/apps/web/src/app/(profile)/p/[url]/page.tsx
+++ b/apps/web/src/app/(profile)/p/[url]/page.tsx
@@ -42,7 +42,7 @@ const BADGE_DATA = {
};
export default async function PublicProfilePage({ params }: PublicProfilePageProps) {
- setupI18nSSR();
+ await setupI18nSSR();
const { url: profileUrl } = params;
diff --git a/apps/web/src/app/(recipient)/d/[token]/configure-direct-template.tsx b/apps/web/src/app/(recipient)/d/[token]/configure-direct-template.tsx
index 40118260c..649099717 100644
--- a/apps/web/src/app/(recipient)/d/[token]/configure-direct-template.tsx
+++ b/apps/web/src/app/(recipient)/d/[token]/configure-direct-template.tsx
@@ -1,7 +1,7 @@
'use client';
import { zodResolver } from '@hookform/resolvers/zod';
-import { Trans } from '@lingui/macro';
+import { Trans, msg } from '@lingui/macro';
import { useLingui } from '@lingui/react';
import { useSession } from 'next-auth/react';
import { useForm } from 'react-hook-form';
@@ -77,7 +77,7 @@ export const ConfigureDirectTemplateFormPartial = ({
if (template.Recipient.map((recipient) => recipient.email).includes(items.email)) {
ctx.addIssue({
code: z.ZodIssueCode.custom,
- message: 'Email cannot already exist in the template',
+ message: _(msg`Email cannot already exist in the template`),
path: ['email'],
});
}
diff --git a/apps/web/src/app/(recipient)/d/[token]/direct-template.tsx b/apps/web/src/app/(recipient)/d/[token]/direct-template.tsx
index 4f9e99fb1..e1c38f3da 100644
--- a/apps/web/src/app/(recipient)/d/[token]/direct-template.tsx
+++ b/apps/web/src/app/(recipient)/d/[token]/direct-template.tsx
@@ -7,7 +7,7 @@ import { useRouter, useSearchParams } from 'next/navigation';
import { msg } from '@lingui/macro';
import { useLingui } from '@lingui/react';
-import { RECIPIENT_ROLES_DESCRIPTION_ENG } from '@documenso/lib/constants/recipient-roles';
+import { RECIPIENT_ROLES_DESCRIPTION } from '@documenso/lib/constants/recipient-roles';
import type { Field } from '@documenso/prisma/client';
import { type Recipient } from '@documenso/prisma/client';
import type { TemplateWithDetails } from '@documenso/prisma/types/template';
@@ -53,7 +53,9 @@ export const DirectTemplatePageView = ({
const [step, setStep] = useState
('configure');
const [isDocumentPdfLoaded, setIsDocumentPdfLoaded] = useState(false);
- const recipientRoleDescription = RECIPIENT_ROLES_DESCRIPTION_ENG[directTemplateRecipient.role];
+ const recipientActionVerb = _(
+ RECIPIENT_ROLES_DESCRIPTION[directTemplateRecipient.role].actionVerb,
+ );
const directTemplateFlow: Record = {
configure: {
@@ -62,9 +64,8 @@ export const DirectTemplatePageView = ({
stepIndex: 1,
},
sign: {
- // Todo: Translations
- title: msg`${recipientRoleDescription.actionVerb} document`,
- description: msg`${recipientRoleDescription.actionVerb} the document to complete the process.`,
+ title: msg`${recipientActionVerb} document`,
+ description: msg`${recipientActionVerb} the document to complete the process.`,
stepIndex: 2,
},
};
diff --git a/apps/web/src/app/(recipient)/d/[token]/page.tsx b/apps/web/src/app/(recipient)/d/[token]/page.tsx
index 0cc3b1a2c..a2ace350c 100644
--- a/apps/web/src/app/(recipient)/d/[token]/page.tsx
+++ b/apps/web/src/app/(recipient)/d/[token]/page.tsx
@@ -24,7 +24,7 @@ export type TemplatesDirectPageProps = {
};
export default async function TemplatesDirectPage({ params }: TemplatesDirectPageProps) {
- setupI18nSSR();
+ await setupI18nSSR();
const { token } = params;
diff --git a/apps/web/src/app/(recipient)/layout.tsx b/apps/web/src/app/(recipient)/layout.tsx
index e24c7d088..54477b458 100644
--- a/apps/web/src/app/(recipient)/layout.tsx
+++ b/apps/web/src/app/(recipient)/layout.tsx
@@ -19,7 +19,7 @@ type RecipientLayoutProps = {
* Such as direct template access, or signing.
*/
export default async function RecipientLayout({ children }: RecipientLayoutProps) {
- setupI18nSSR();
+ await setupI18nSSR();
const { user, session } = await getServerComponentSession();
diff --git a/apps/web/src/app/(signing)/sign/[token]/auto-sign.tsx b/apps/web/src/app/(signing)/sign/[token]/auto-sign.tsx
new file mode 100644
index 000000000..d404d0d6b
--- /dev/null
+++ b/apps/web/src/app/(signing)/sign/[token]/auto-sign.tsx
@@ -0,0 +1,237 @@
+'use client';
+
+import { useState, useTransition } from 'react';
+
+import { useRouter } from 'next/navigation';
+
+import { Plural, Trans, msg } from '@lingui/macro';
+import { useLingui } from '@lingui/react';
+import { useForm } from 'react-hook-form';
+import { P, match } from 'ts-pattern';
+
+import { unsafe_useEffectOnce } from '@documenso/lib/client-only/hooks/use-effect-once';
+import { DocumentAuth } from '@documenso/lib/types/document-auth';
+import { extractInitials } from '@documenso/lib/utils/recipient-formatter';
+import type { Field, Recipient } from '@documenso/prisma/client';
+import { FieldType } from '@documenso/prisma/client';
+import { trpc } from '@documenso/trpc/react';
+import { Button } from '@documenso/ui/primitives/button';
+import {
+ Dialog,
+ DialogContent,
+ DialogFooter,
+ DialogHeader,
+ DialogTitle,
+} from '@documenso/ui/primitives/dialog';
+import { FRIENDLY_FIELD_TYPE } from '@documenso/ui/primitives/document-flow/types';
+import { Form } from '@documenso/ui/primitives/form/form';
+import { useToast } from '@documenso/ui/primitives/use-toast';
+
+import { SigningDisclosure } from '~/components/general/signing-disclosure';
+
+import { useRequiredDocumentAuthContext } from './document-auth-provider';
+import { useRequiredSigningContext } from './provider';
+
+const AUTO_SIGNABLE_FIELD_TYPES: string[] = [
+ FieldType.NAME,
+ FieldType.INITIALS,
+ FieldType.EMAIL,
+ FieldType.DATE,
+];
+
+// The action auth types that are not allowed to be auto signed
+//
+// Reasoning: If the action auth is a passkey or 2FA, it's likely that the owner of the document
+// intends on having the user manually sign due to the additional security measures employed for
+// other field types.
+const NON_AUTO_SIGNABLE_ACTION_AUTH_TYPES: string[] = [
+ DocumentAuth.PASSKEY,
+ DocumentAuth.TWO_FACTOR_AUTH,
+];
+
+// The threshold for the number of fields that could be autosigned before displaying the dialog
+//
+// Reasoning: If there aren't that many fields, it's likely going to be easier to manually sign each one
+// while for larger documents with many fields it will be beneficial to sign away the boilerplate fields.
+const AUTO_SIGN_THRESHOLD = 5;
+
+export type AutoSignProps = {
+ recipient: Pick;
+ fields: Field[];
+};
+
+export const AutoSign = ({ recipient, fields }: AutoSignProps) => {
+ const { _ } = useLingui();
+ const { toast } = useToast();
+
+ const router = useRouter();
+
+ const { email, fullName } = useRequiredSigningContext();
+ const { derivedRecipientActionAuth } = useRequiredDocumentAuthContext();
+
+ const [open, setOpen] = useState(false);
+ const [isPending, startTransition] = useTransition();
+
+ const form = useForm();
+
+ const { mutateAsync: signFieldWithToken } = trpc.field.signFieldWithToken.useMutation();
+
+ const autoSignableFields = fields.filter((field) => {
+ if (field.inserted) {
+ return false;
+ }
+
+ if (!AUTO_SIGNABLE_FIELD_TYPES.includes(field.type)) {
+ return false;
+ }
+
+ if (field.type === FieldType.NAME && !fullName) {
+ return false;
+ }
+
+ if (field.type === FieldType.INITIALS && !fullName) {
+ return false;
+ }
+
+ if (field.type === FieldType.EMAIL && !email) {
+ return false;
+ }
+
+ return true;
+ });
+
+ const actionAuthAllowsAutoSign = !NON_AUTO_SIGNABLE_ACTION_AUTH_TYPES.includes(
+ derivedRecipientActionAuth ?? '',
+ );
+
+ const onSubmit = async () => {
+ const results = await Promise.allSettled(
+ autoSignableFields.map(async (field) => {
+ const value = match(field.type)
+ .with(FieldType.NAME, () => fullName)
+ .with(FieldType.INITIALS, () => extractInitials(fullName))
+ .with(FieldType.EMAIL, () => email)
+ .with(FieldType.DATE, () => new Date().toISOString())
+ .otherwise(() => '');
+
+ const authOptions = match(derivedRecipientActionAuth)
+ .with(DocumentAuth.ACCOUNT, () => ({
+ type: DocumentAuth.ACCOUNT,
+ }))
+ .with(DocumentAuth.EXPLICIT_NONE, () => ({
+ type: DocumentAuth.EXPLICIT_NONE,
+ }))
+ .with(null, () => undefined)
+ .with(
+ P.union(DocumentAuth.PASSKEY, DocumentAuth.TWO_FACTOR_AUTH),
+ // This is a bit dirty, but the sentinel value used here is incredibly short-lived.
+ () => 'NOT_SUPPORTED' as const,
+ )
+ .exhaustive();
+
+ if (authOptions === 'NOT_SUPPORTED') {
+ throw new Error('Action auth is not supported for auto signing');
+ }
+
+ if (!value) {
+ throw new Error('No value to sign');
+ }
+
+ return await signFieldWithToken({
+ token: recipient.token,
+ fieldId: field.id,
+ value,
+ isBase64: false,
+ authOptions,
+ });
+ }),
+ );
+
+ if (results.some((result) => result.status === 'rejected')) {
+ toast({
+ title: _(msg`Error`),
+ description: _(
+ msg`An error occurred while auto-signing the document, some fields may not be signed. Please review and manually sign any remaining fields.`,
+ ),
+ duration: 5000,
+ variant: 'destructive',
+ });
+ }
+
+ startTransition(() => {
+ router.refresh();
+
+ setOpen(false);
+ });
+ };
+
+ unsafe_useEffectOnce(() => {
+ if (actionAuthAllowsAutoSign && autoSignableFields.length > AUTO_SIGN_THRESHOLD) {
+ setOpen(true);
+ }
+ });
+
+ return (
+
+
+
+ Automatically sign fields
+
+
+
+
+
+ When you sign a document, we can automatically fill in and sign the following fields
+ using information that has already been provided. You can also manually sign or remove
+ any automatically signed fields afterwards if you desire.
+
+
+
+
+ {AUTO_SIGNABLE_FIELD_TYPES.map((fieldType) => (
+
+ {_(FRIENDLY_FIELD_TYPE[fieldType as FieldType])}
+
+ (
+ f.type === fieldType).length}
+ one="1 matching field"
+ other="# matching fields"
+ />
+ )
+
+
+ ))}
+
+
+
+
+
+
+
+
+
+ );
+};
diff --git a/apps/web/src/app/(signing)/sign/[token]/complete/layout.tsx b/apps/web/src/app/(signing)/sign/[token]/complete/layout.tsx
index 0798e5098..23a5f1278 100644
--- a/apps/web/src/app/(signing)/sign/[token]/complete/layout.tsx
+++ b/apps/web/src/app/(signing)/sign/[token]/complete/layout.tsx
@@ -8,8 +8,8 @@ export type SigningLayoutProps = {
children: React.ReactNode;
};
-export default function SigningLayout({ children }: SigningLayoutProps) {
- setupI18nSSR();
+export default async function SigningLayout({ children }: SigningLayoutProps) {
+ await setupI18nSSR();
return (
diff --git a/apps/web/src/app/(signing)/sign/[token]/complete/page.tsx b/apps/web/src/app/(signing)/sign/[token]/complete/page.tsx
index 01fa9dc9e..7e183da1d 100644
--- a/apps/web/src/app/(signing)/sign/[token]/complete/page.tsx
+++ b/apps/web/src/app/(signing)/sign/[token]/complete/page.tsx
@@ -40,7 +40,7 @@ export type CompletedSigningPageProps = {
export default async function CompletedSigningPage({
params: { token },
}: CompletedSigningPageProps) {
- setupI18nSSR();
+ await setupI18nSSR();
const { _ } = useLingui();
@@ -222,7 +222,7 @@ export default async function CompletedSigningPage({
)}
{isLoggedIn && (
-
+
Go Back Home
)}
diff --git a/apps/web/src/app/(signing)/sign/[token]/date-field.tsx b/apps/web/src/app/(signing)/sign/[token]/date-field.tsx
index 379ce1d4c..5b573d6f6 100644
--- a/apps/web/src/app/(signing)/sign/[token]/date-field.tsx
+++ b/apps/web/src/app/(signing)/sign/[token]/date-field.tsx
@@ -144,13 +144,13 @@ export const DateField = ({
)}
{!field.inserted && (
-
+
Date
)}
{field.inserted && (
-
+
{localDateString}
)}
diff --git a/apps/web/src/app/(signing)/sign/[token]/dropdown-field.tsx b/apps/web/src/app/(signing)/sign/[token]/dropdown-field.tsx
index d47bd91be..ccc7df777 100644
--- a/apps/web/src/app/(signing)/sign/[token]/dropdown-field.tsx
+++ b/apps/web/src/app/(signing)/sign/[token]/dropdown-field.tsx
@@ -178,7 +178,7 @@ export const DropdownField = ({
)}
{!field.inserted && (
-
+
@@ -206,7 +206,7 @@ export const DropdownField = ({
)}
{field.inserted && (
-
+
{field.customText}
)}
diff --git a/apps/web/src/app/(signing)/sign/[token]/email-field.tsx b/apps/web/src/app/(signing)/sign/[token]/email-field.tsx
index cd0180177..0cb11a739 100644
--- a/apps/web/src/app/(signing)/sign/[token]/email-field.tsx
+++ b/apps/web/src/app/(signing)/sign/[token]/email-field.tsx
@@ -122,13 +122,13 @@ export const EmailField = ({ field, recipient, onSignField, onUnsignField }: Ema
)}
{!field.inserted && (
-
+
Email
)}
{field.inserted && (
-
+
{field.customText}
)}
diff --git a/apps/web/src/app/(signing)/sign/[token]/form.tsx b/apps/web/src/app/(signing)/sign/[token]/form.tsx
index 51918cec8..8085234db 100644
--- a/apps/web/src/app/(signing)/sign/[token]/form.tsx
+++ b/apps/web/src/app/(signing)/sign/[token]/form.tsx
@@ -9,9 +9,10 @@ import { useSession } from 'next-auth/react';
import { useForm } from 'react-hook-form';
import { useAnalytics } from '@documenso/lib/client-only/hooks/use-analytics';
+import type { DocumentAndSender } from '@documenso/lib/server-only/document/get-document-by-token';
import type { TRecipientActionAuth } from '@documenso/lib/types/document-auth';
import { sortFieldsByPosition, validateFieldsInserted } from '@documenso/lib/utils/fields';
-import { type Document, type Field, type Recipient, RecipientRole } from '@documenso/prisma/client';
+import { type Field, type Recipient, RecipientRole } from '@documenso/prisma/client';
import { trpc } from '@documenso/trpc/react';
import { FieldToolTip } from '@documenso/ui/components/field/field-tooltip';
import { cn } from '@documenso/ui/lib/utils';
@@ -25,7 +26,7 @@ import { useRequiredSigningContext } from './provider';
import { SignDialog } from './sign-dialog';
export type SigningFormProps = {
- document: Document;
+ document: DocumentAndSender;
recipient: Recipient;
fields: Field[];
redirectUrl?: string | null;
@@ -123,9 +124,9 @@ export const SigningForm = ({
>
- {recipient.role === RecipientRole.VIEWER && 'View Document'}
- {recipient.role === RecipientRole.SIGNER && 'Sign Document'}
- {recipient.role === RecipientRole.APPROVER && 'Approve Document'}
+ {recipient.role === RecipientRole.VIEWER && View Document }
+ {recipient.role === RecipientRole.SIGNER && Sign Document }
+ {recipient.role === RecipientRole.APPROVER && Approve Document }
{recipient.role === RecipientRole.VIEWER ? (
@@ -165,7 +166,7 @@ export const SigningForm = ({
) : (
<>
- Please review the document before signing.
+ Please review the document before signing.
@@ -173,7 +174,9 @@ export const SigningForm = ({
-
Full Name
+
+ Full Name
+
-
Signature
+
+ Signature
+
@@ -196,6 +201,7 @@ export const SigningForm = ({
onChange={(value) => {
setSignature(value);
}}
+ allowTypedSignature={document.documentMeta?.typedSignatureEnabled}
/>
@@ -211,7 +217,7 @@ export const SigningForm = ({
disabled={typeof window !== 'undefined' && window.history.length <= 1}
onClick={() => router.back()}
>
- Cancel
+
Cancel
{
const router = useRouter();
const { toast } = useToast();
+ const { _ } = useLingui();
const { fullName } = useRequiredSigningContext();
const initials = extractInitials(fullName);
@@ -83,8 +86,8 @@ export const InitialsField = ({
console.error(err);
toast({
- title: 'Error',
- description: 'An error occurred while signing the document.',
+ title: _(msg`Error`),
+ description: _(msg`An error occurred while signing the document.`),
variant: 'destructive',
});
}
@@ -109,8 +112,8 @@ export const InitialsField = ({
console.error(err);
toast({
- title: 'Error',
- description: 'An error occurred while removing the signature.',
+ title: _(msg`Error`),
+ description: _(msg`An error occurred while removing the field.`),
variant: 'destructive',
});
}
@@ -125,13 +128,13 @@ export const InitialsField = ({
)}
{!field.inserted && (
-
- Initials
+
+ Initials
)}
{field.inserted && (
-
+
{field.customText}
)}
diff --git a/apps/web/src/app/(signing)/sign/[token]/layout.tsx b/apps/web/src/app/(signing)/sign/[token]/layout.tsx
index c9be8130b..9ecb8487b 100644
--- a/apps/web/src/app/(signing)/sign/[token]/layout.tsx
+++ b/apps/web/src/app/(signing)/sign/[token]/layout.tsx
@@ -13,7 +13,7 @@ export type SigningLayoutProps = {
};
export default async function SigningLayout({ children }: SigningLayoutProps) {
- setupI18nSSR();
+ await setupI18nSSR();
const { user, session } = await getServerComponentSession();
diff --git a/apps/web/src/app/(signing)/sign/[token]/name-field.tsx b/apps/web/src/app/(signing)/sign/[token]/name-field.tsx
index 388e6ceb0..fdf5fbbee 100644
--- a/apps/web/src/app/(signing)/sign/[token]/name-field.tsx
+++ b/apps/web/src/app/(signing)/sign/[token]/name-field.tsx
@@ -172,7 +172,7 @@ export const NameField = ({ field, recipient, onSignField, onUnsignField }: Name
)}
{field.inserted && (
-
+
{field.customText}
)}
diff --git a/apps/web/src/app/(signing)/sign/[token]/number-field.tsx b/apps/web/src/app/(signing)/sign/[token]/number-field.tsx
index a4a844fa3..40d000700 100644
--- a/apps/web/src/app/(signing)/sign/[token]/number-field.tsx
+++ b/apps/web/src/app/(signing)/sign/[token]/number-field.tsx
@@ -252,14 +252,15 @@ export const NumberField = ({ field, recipient, onSignField, onUnsignField }: Nu
},
)}
>
-
- {fieldDisplayName}
+
+ {' '}
+ {fieldDisplayName}
)}
{field.inserted && (
-
+
{field.customText}
)}
diff --git a/apps/web/src/app/(signing)/sign/[token]/page.tsx b/apps/web/src/app/(signing)/sign/[token]/page.tsx
index 214b013ce..ec32082db 100644
--- a/apps/web/src/app/(signing)/sign/[token]/page.tsx
+++ b/apps/web/src/app/(signing)/sign/[token]/page.tsx
@@ -31,7 +31,7 @@ export type SigningPageProps = {
};
export default async function SigningPage({ params: { token } }: SigningPageProps) {
- setupI18nSSR();
+ await setupI18nSSR();
if (!token) {
return notFound();
@@ -43,12 +43,6 @@ export default async function SigningPage({ params: { token } }: SigningPageProp
const requestMetadata = extractNextHeaderRequestMetadata(requestHeaders);
- const isRecipientsTurn = await getIsRecipientsTurnToSign({ token });
-
- if (!isRecipientsTurn) {
- return redirect(`/sign/${token}/waiting`);
- }
-
const [document, fields, recipient, completedFields] = await Promise.all([
getDocumentAndSenderByToken({
token,
@@ -69,6 +63,12 @@ export default async function SigningPage({ params: { token } }: SigningPageProp
return notFound();
}
+ const isRecipientsTurn = await getIsRecipientsTurnToSign({ token });
+
+ if (!isRecipientsTurn) {
+ return redirect(`/sign/${token}/waiting`);
+ }
+
const { derivedRecipientAccessAuth } = extractDocumentAuthMethods({
documentAuth: document.authOptions,
recipientAuth: recipient.authOptions,
@@ -99,6 +99,10 @@ export default async function SigningPage({ params: { token } }: SigningPageProp
const { documentMeta } = document;
+ if (recipient.signingStatus === SigningStatus.REJECTED) {
+ return redirect(`/sign/${token}/rejected`);
+ }
+
if (
document.status === DocumentStatus.COMPLETED ||
recipient.signingStatus === SigningStatus.SIGNED
diff --git a/apps/web/src/app/(signing)/sign/[token]/reject-document-dialog.tsx b/apps/web/src/app/(signing)/sign/[token]/reject-document-dialog.tsx
new file mode 100644
index 000000000..547a346d8
--- /dev/null
+++ b/apps/web/src/app/(signing)/sign/[token]/reject-document-dialog.tsx
@@ -0,0 +1,170 @@
+'use client';
+
+import { useEffect, useState } from 'react';
+
+import { useRouter, useSearchParams } from 'next/navigation';
+
+import { zodResolver } from '@hookform/resolvers/zod';
+import { Trans, msg } from '@lingui/macro';
+import { useForm } from 'react-hook-form';
+import { z } from 'zod';
+
+import type { Document } from '@documenso/prisma/client';
+import { trpc } from '@documenso/trpc/react';
+import { Button } from '@documenso/ui/primitives/button';
+import {
+ Dialog,
+ DialogContent,
+ DialogDescription,
+ DialogFooter,
+ DialogHeader,
+ DialogTitle,
+ DialogTrigger,
+} from '@documenso/ui/primitives/dialog';
+import {
+ Form,
+ FormControl,
+ FormField,
+ FormItem,
+ FormMessage,
+} from '@documenso/ui/primitives/form/form';
+import { Textarea } from '@documenso/ui/primitives/textarea';
+import { useToast } from '@documenso/ui/primitives/use-toast';
+
+const ZRejectDocumentFormSchema = z.object({
+ reason: z
+ .string()
+ .min(5, msg`Please provide a reason`)
+ .max(500, msg`Reason must be less than 500 characters`),
+});
+
+type TRejectDocumentFormSchema = z.infer;
+
+export interface RejectDocumentDialogProps {
+ document: Pick;
+ token: string;
+}
+
+export function RejectDocumentDialog({ document, token }: RejectDocumentDialogProps) {
+ const { toast } = useToast();
+ const router = useRouter();
+ const searchParams = useSearchParams();
+
+ const [isOpen, setIsOpen] = useState(false);
+
+ const { mutateAsync: rejectDocumentWithToken } =
+ trpc.recipient.rejectDocumentWithToken.useMutation();
+
+ const form = useForm({
+ resolver: zodResolver(ZRejectDocumentFormSchema),
+ defaultValues: {
+ reason: '',
+ },
+ });
+
+ const onRejectDocument = async ({ reason }: TRejectDocumentFormSchema) => {
+ try {
+ // TODO: Add trpc mutation here
+ await rejectDocumentWithToken({
+ documentId: document.id,
+ token,
+ reason,
+ });
+
+ toast({
+ title: 'Document rejected',
+ description: 'The document has been successfully rejected.',
+ duration: 5000,
+ });
+
+ setIsOpen(false);
+
+ router.push(`/sign/${token}/rejected`);
+ } catch (err) {
+ toast({
+ title: 'Error',
+ description: 'An error occurred while rejecting the document. Please try again.',
+ variant: 'destructive',
+ duration: 5000,
+ });
+ }
+ };
+
+ useEffect(() => {
+ if (searchParams?.get('reject') === 'true') {
+ setIsOpen(true);
+ }
+ }, []);
+
+ useEffect(() => {
+ if (!isOpen) {
+ form.reset();
+ }
+ }, [isOpen]);
+
+ return (
+
+
+
+ Reject Document
+
+
+
+
+
+
+ Reject Document
+
+
+
+
+ Are you sure you want to reject this document? This action cannot be undone.
+
+
+
+
+
+
+
+
+ );
+}
diff --git a/apps/web/src/app/(signing)/sign/[token]/rejected/page.tsx b/apps/web/src/app/(signing)/sign/[token]/rejected/page.tsx
new file mode 100644
index 000000000..e3e630d8c
--- /dev/null
+++ b/apps/web/src/app/(signing)/sign/[token]/rejected/page.tsx
@@ -0,0 +1,110 @@
+import Link from 'next/link';
+import { notFound } from 'next/navigation';
+
+import { Trans } from '@lingui/macro';
+import { XCircle } from 'lucide-react';
+
+import { setupI18nSSR } from '@documenso/lib/client-only/providers/i18n.server';
+import { getServerComponentSession } from '@documenso/lib/next-auth/get-server-component-session';
+import { getDocumentAndSenderByToken } from '@documenso/lib/server-only/document/get-document-by-token';
+import { isRecipientAuthorized } from '@documenso/lib/server-only/document/is-recipient-authorized';
+import { getFieldsForToken } from '@documenso/lib/server-only/field/get-fields-for-token';
+import { getRecipientByToken } from '@documenso/lib/server-only/recipient/get-recipient-by-token';
+import { FieldType } from '@documenso/prisma/client';
+import { Badge } from '@documenso/ui/primitives/badge';
+import { Button } from '@documenso/ui/primitives/button';
+
+import { truncateTitle } from '~/helpers/truncate-title';
+
+import { SigningAuthPageView } from '../signing-auth-page';
+
+export type RejectedSigningPageProps = {
+ params: {
+ token?: string;
+ };
+};
+
+export default async function RejectedSigningPage({ params: { token } }: RejectedSigningPageProps) {
+ await setupI18nSSR();
+
+ if (!token) {
+ return notFound();
+ }
+
+ const { user } = await getServerComponentSession();
+
+ const document = await getDocumentAndSenderByToken({
+ token,
+ requireAccessAuth: false,
+ }).catch(() => null);
+
+ if (!document) {
+ return notFound();
+ }
+
+ const truncatedTitle = truncateTitle(document.title);
+
+ const [fields, recipient] = await Promise.all([
+ getFieldsForToken({ token }),
+ getRecipientByToken({ token }).catch(() => null),
+ ]);
+
+ if (!recipient) {
+ return notFound();
+ }
+
+ const isDocumentAccessValid = await isRecipientAuthorized({
+ type: 'ACCESS',
+ documentAuthOptions: document.authOptions,
+ recipient,
+ userId: user?.id,
+ });
+
+ if (!isDocumentAccessValid) {
+ return ;
+ }
+
+ const recipientName =
+ recipient.name ||
+ fields.find((field) => field.type === FieldType.NAME)?.customText ||
+ recipient.email;
+
+ return (
+
+
+ {truncatedTitle}
+
+
+
+
+
+
+
+ Document Rejected
+
+
+
+
+ You have rejected this document
+
+
+
+
+ The document owner has been notified of your decision. They may contact you with further
+ instructions if necessary.
+
+
+
+
+ No further action is required from you at this time.
+
+
+ {user && (
+
+ Return Home
+
+ )}
+
+
+ );
+}
diff --git a/apps/web/src/app/(signing)/sign/[token]/signature-field.tsx b/apps/web/src/app/(signing)/sign/[token]/signature-field.tsx
index 990dfe057..ab161c594 100644
--- a/apps/web/src/app/(signing)/sign/[token]/signature-field.tsx
+++ b/apps/web/src/app/(signing)/sign/[token]/signature-field.tsx
@@ -31,12 +31,12 @@ import { useRequiredSigningContext } from './provider';
import { SigningFieldContainer } from './signing-field-container';
type SignatureFieldState = 'empty' | 'signed-image' | 'signed-text';
-
export type SignatureFieldProps = {
field: FieldWithSignature;
recipient: Recipient;
onSignField?: (value: TSignFieldWithTokenMutationSchema) => Promise | void;
onUnsignField?: (value: TRemovedSignedFieldWithTokenMutationSchema) => Promise | void;
+ typedSignatureEnabled?: boolean;
};
export const SignatureField = ({
@@ -44,6 +44,7 @@ export const SignatureField = ({
recipient,
onSignField,
onUnsignField,
+ typedSignatureEnabled,
}: SignatureFieldProps) => {
const router = useRouter();
@@ -92,14 +93,12 @@ export const SignatureField = ({
return true;
};
-
/**
* When the user clicks the sign button in the dialog where they enter their signature.
*/
const onDialogSignClick = () => {
setShowSignatureModal(false);
setProvidedSignature(localSignature);
-
if (!localSignature) {
return;
}
@@ -109,7 +108,6 @@ export const SignatureField = ({
actionTarget: field.type,
});
};
-
const onSign = async (authOptions?: TRecipientActionAuth, signature?: string) => {
try {
const value = signature || providedSignature;
@@ -193,7 +191,7 @@ export const SignatureField = ({
)}
{state === 'empty' && (
-
+
Signature
)}
@@ -231,11 +229,11 @@ export const SignatureField = ({
id="signature"
className="border-border mt-2 h-44 w-full rounded-md border"
onChange={(value) => setLocalSignature(value)}
+ allowTypedSignature={typedSignatureEnabled}
/>
-
Cancel
-
-
-
- {document.User.name}
-
-
+
+
+
+ {document.User.name}
+
-
- {match(recipient.role)
- .with(RecipientRole.VIEWER, () => (
- ({document.User.email}) has invited you to view this document
- ))
- .with(RecipientRole.SIGNER, () => (
- ({document.User.email}) has invited you to sign this document
- ))
- .with(RecipientRole.APPROVER, () => (
- ({document.User.email}) has invited you to approve this document
- ))
- .otherwise(() => null)}
-
+
+ {match(recipient.role)
+ .with(RecipientRole.VIEWER, () => (
+ ({document.User.email}) has invited you to view this document
+ ))
+ .with(RecipientRole.SIGNER, () => (
+ ({document.User.email}) has invited you to sign this document
+ ))
+ .with(RecipientRole.APPROVER, () => (
+ ({document.User.email}) has invited you to approve this document
+ ))
+ .otherwise(() => null)}
+
+
+
+
+
+
+
{fields.map((field) =>
match(field.type)
.with(FieldType.SIGNATURE, () => (
-
+
))
.with(FieldType.INITIALS, () => (
diff --git a/apps/web/src/app/(signing)/sign/[token]/text-field.tsx b/apps/web/src/app/(signing)/sign/[token]/text-field.tsx
index 0f22fc78b..1ad14ff1b 100644
--- a/apps/web/src/app/(signing)/sign/[token]/text-field.tsx
+++ b/apps/web/src/app/(signing)/sign/[token]/text-field.tsx
@@ -252,14 +252,16 @@ export const TextField = ({ field, recipient, onSignField, onUnsignField }: Text
)}
>
-
- {fieldDisplayName || Text }
+
+
+ {fieldDisplayName || Text }
+
)}
{field.inserted && (
-
+
{field.customText.length < 20
? field.customText
: field.customText.substring(0, 15) + '...'}
diff --git a/apps/web/src/app/(signing)/sign/[token]/waiting/page.tsx b/apps/web/src/app/(signing)/sign/[token]/waiting/page.tsx
index bf5466215..f53c10e27 100644
--- a/apps/web/src/app/(signing)/sign/[token]/waiting/page.tsx
+++ b/apps/web/src/app/(signing)/sign/[token]/waiting/page.tsx
@@ -21,7 +21,7 @@ type WaitingForTurnToSignPageProps = {
export default async function WaitingForTurnToSignPage({
params: { token },
}: WaitingForTurnToSignPageProps) {
- setupI18nSSR();
+ await setupI18nSSR();
if (!token) {
return notFound();
diff --git a/apps/web/src/app/(teams)/t/[teamUrl]/documents/[id]/edit/page.tsx b/apps/web/src/app/(teams)/t/[teamUrl]/documents/[id]/edit/page.tsx
index c04779105..ea6351ad9 100644
--- a/apps/web/src/app/(teams)/t/[teamUrl]/documents/[id]/edit/page.tsx
+++ b/apps/web/src/app/(teams)/t/[teamUrl]/documents/[id]/edit/page.tsx
@@ -12,7 +12,7 @@ export type DocumentPageProps = {
};
export default async function TeamsDocumentEditPage({ params }: DocumentPageProps) {
- setupI18nSSR();
+ await setupI18nSSR();
const { teamUrl } = params;
diff --git a/apps/web/src/app/(teams)/t/[teamUrl]/documents/[id]/logs/page.tsx b/apps/web/src/app/(teams)/t/[teamUrl]/documents/[id]/logs/page.tsx
index effd426c5..9f83273e4 100644
--- a/apps/web/src/app/(teams)/t/[teamUrl]/documents/[id]/logs/page.tsx
+++ b/apps/web/src/app/(teams)/t/[teamUrl]/documents/[id]/logs/page.tsx
@@ -12,7 +12,7 @@ export type TeamDocumentsLogsPageProps = {
};
export default async function TeamsDocumentsLogsPage({ params }: TeamDocumentsLogsPageProps) {
- setupI18nSSR();
+ await setupI18nSSR();
const { teamUrl } = params;
diff --git a/apps/web/src/app/(teams)/t/[teamUrl]/documents/[id]/page.tsx b/apps/web/src/app/(teams)/t/[teamUrl]/documents/[id]/page.tsx
index 2d734d944..30bd93555 100644
--- a/apps/web/src/app/(teams)/t/[teamUrl]/documents/[id]/page.tsx
+++ b/apps/web/src/app/(teams)/t/[teamUrl]/documents/[id]/page.tsx
@@ -12,7 +12,7 @@ export type DocumentPageProps = {
};
export default async function DocumentPage({ params }: DocumentPageProps) {
- setupI18nSSR();
+ await setupI18nSSR();
const { teamUrl } = params;
diff --git a/apps/web/src/app/(teams)/t/[teamUrl]/documents/page.tsx b/apps/web/src/app/(teams)/t/[teamUrl]/documents/page.tsx
index dba102909..0d5b9692f 100644
--- a/apps/web/src/app/(teams)/t/[teamUrl]/documents/page.tsx
+++ b/apps/web/src/app/(teams)/t/[teamUrl]/documents/page.tsx
@@ -16,7 +16,7 @@ export default async function TeamsDocumentPage({
params,
searchParams = {},
}: TeamsDocumentPageProps) {
- setupI18nSSR();
+ await setupI18nSSR();
const { teamUrl } = params;
diff --git a/apps/web/src/app/(teams)/t/[teamUrl]/layout.tsx b/apps/web/src/app/(teams)/t/[teamUrl]/layout.tsx
index cd1676591..f5d2a48d1 100644
--- a/apps/web/src/app/(teams)/t/[teamUrl]/layout.tsx
+++ b/apps/web/src/app/(teams)/t/[teamUrl]/layout.tsx
@@ -27,7 +27,7 @@ export default async function AuthenticatedTeamsLayout({
children,
params,
}: AuthenticatedTeamsLayoutProps) {
- setupI18nSSR();
+ await setupI18nSSR();
const { session, user } = await getServerComponentSession();
diff --git a/apps/web/src/app/(teams)/t/[teamUrl]/settings/billing/page.tsx b/apps/web/src/app/(teams)/t/[teamUrl]/settings/billing/page.tsx
index a12e02665..dc13b630c 100644
--- a/apps/web/src/app/(teams)/t/[teamUrl]/settings/billing/page.tsx
+++ b/apps/web/src/app/(teams)/t/[teamUrl]/settings/billing/page.tsx
@@ -21,7 +21,7 @@ export type TeamsSettingsBillingPageProps = {
};
export default async function TeamsSettingBillingPage({ params }: TeamsSettingsBillingPageProps) {
- setupI18nSSR();
+ await setupI18nSSR();
const { _ } = useLingui();
diff --git a/apps/web/src/app/(teams)/t/[teamUrl]/settings/layout.tsx b/apps/web/src/app/(teams)/t/[teamUrl]/settings/layout.tsx
index 04ebe3e3f..c2fc3c39e 100644
--- a/apps/web/src/app/(teams)/t/[teamUrl]/settings/layout.tsx
+++ b/apps/web/src/app/(teams)/t/[teamUrl]/settings/layout.tsx
@@ -24,7 +24,7 @@ export default async function TeamsSettingsLayout({
children,
params: { teamUrl },
}: TeamSettingsLayoutProps) {
- setupI18nSSR();
+ await setupI18nSSR();
const session = await getRequiredServerComponentSession();
diff --git a/apps/web/src/app/(teams)/t/[teamUrl]/settings/members/page.tsx b/apps/web/src/app/(teams)/t/[teamUrl]/settings/members/page.tsx
index 0ca35c8c9..cda20f9c0 100644
--- a/apps/web/src/app/(teams)/t/[teamUrl]/settings/members/page.tsx
+++ b/apps/web/src/app/(teams)/t/[teamUrl]/settings/members/page.tsx
@@ -16,7 +16,7 @@ export type TeamsSettingsMembersPageProps = {
};
export default async function TeamsSettingsMembersPage({ params }: TeamsSettingsMembersPageProps) {
- setupI18nSSR();
+ await setupI18nSSR();
const { _ } = useLingui();
const { teamUrl } = params;
diff --git a/apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx b/apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx
index b9ffc4e63..ed29a5287 100644
--- a/apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx
+++ b/apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx
@@ -28,7 +28,7 @@ export type TeamsSettingsPageProps = {
};
export default async function TeamsSettingsPage({ params }: TeamsSettingsPageProps) {
- setupI18nSSR();
+ await setupI18nSSR();
const { teamUrl } = params;
@@ -52,7 +52,13 @@ export default async function TeamsSettingsPage({ params }: TeamsSettingsPagePro
-
+
{(team.teamEmail || team.emailVerification) && (
diff --git a/apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/branding-preferences.tsx b/apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/branding-preferences.tsx
new file mode 100644
index 000000000..3f937a0b8
--- /dev/null
+++ b/apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/branding-preferences.tsx
@@ -0,0 +1,319 @@
+'use client';
+
+import { useEffect, useState } from 'react';
+
+import { zodResolver } from '@hookform/resolvers/zod';
+import { Trans, msg } from '@lingui/macro';
+import { useLingui } from '@lingui/react';
+import { Loader } from 'lucide-react';
+import { useForm } from 'react-hook-form';
+import { z } from 'zod';
+
+import { getFile } from '@documenso/lib/universal/upload/get-file';
+import { putFile } from '@documenso/lib/universal/upload/put-file';
+import type { Team, TeamGlobalSettings } from '@documenso/prisma/client';
+import { trpc } from '@documenso/trpc/react';
+import { cn } from '@documenso/ui/lib/utils';
+import { Button } from '@documenso/ui/primitives/button';
+import {
+ Form,
+ FormControl,
+ FormDescription,
+ FormField,
+ FormItem,
+ FormLabel,
+} from '@documenso/ui/primitives/form/form';
+import { Input } from '@documenso/ui/primitives/input';
+import { Switch } from '@documenso/ui/primitives/switch';
+import { Textarea } from '@documenso/ui/primitives/textarea';
+import { useToast } from '@documenso/ui/primitives/use-toast';
+
+const MAX_FILE_SIZE = 5 * 1024 * 1024; // 5MB
+const ACCEPTED_FILE_TYPES = ['image/jpeg', 'image/png', 'image/webp'];
+
+const ZTeamBrandingPreferencesFormSchema = z.object({
+ brandingEnabled: z.boolean(),
+ brandingLogo: z
+ .instanceof(File)
+ .refine((file) => file.size <= MAX_FILE_SIZE, 'File size must be less than 5MB')
+ .refine(
+ (file) => ACCEPTED_FILE_TYPES.includes(file.type),
+ 'Only .jpg, .png, and .webp files are accepted',
+ )
+ .nullish(),
+ brandingUrl: z.string().url().optional().or(z.literal('')),
+ brandingCompanyDetails: z.string().max(500).optional(),
+});
+
+type TTeamBrandingPreferencesFormSchema = z.infer;
+
+export type TeamBrandingPreferencesFormProps = {
+ team: Team;
+ settings?: TeamGlobalSettings | null;
+};
+
+export function TeamBrandingPreferencesForm({ team, settings }: TeamBrandingPreferencesFormProps) {
+ const { _ } = useLingui();
+ const { toast } = useToast();
+
+ const [previewUrl, setPreviewUrl] = useState('');
+ const [hasLoadedPreview, setHasLoadedPreview] = useState(false);
+
+ const { mutateAsync: updateTeamBrandingSettings } =
+ trpc.team.updateTeamBrandingSettings.useMutation();
+
+ const form = useForm({
+ defaultValues: {
+ brandingEnabled: settings?.brandingEnabled ?? false,
+ brandingUrl: settings?.brandingUrl ?? '',
+ brandingLogo: undefined,
+ brandingCompanyDetails: settings?.brandingCompanyDetails ?? '',
+ },
+ resolver: zodResolver(ZTeamBrandingPreferencesFormSchema),
+ });
+
+ const isBrandingEnabled = form.watch('brandingEnabled');
+
+ const onSubmit = async (data: TTeamBrandingPreferencesFormSchema) => {
+ try {
+ const { brandingEnabled, brandingLogo, brandingUrl, brandingCompanyDetails } = data;
+
+ let uploadedBrandingLogo = settings?.brandingLogo;
+
+ if (brandingLogo) {
+ uploadedBrandingLogo = JSON.stringify(await putFile(brandingLogo));
+ }
+
+ if (brandingLogo === null) {
+ uploadedBrandingLogo = '';
+ }
+
+ await updateTeamBrandingSettings({
+ teamId: team.id,
+ settings: {
+ brandingEnabled,
+ brandingLogo: uploadedBrandingLogo,
+ brandingUrl,
+ brandingCompanyDetails,
+ },
+ });
+
+ toast({
+ title: _(msg`Branding preferences updated`),
+ description: _(msg`Your branding preferences have been updated`),
+ });
+ } catch (err) {
+ toast({
+ title: _(msg`Something went wrong`),
+ description: _(
+ msg`We were unable to update your branding preferences at this time, please try again later`,
+ ),
+ variant: 'destructive',
+ });
+ }
+ };
+
+ useEffect(() => {
+ if (settings?.brandingLogo) {
+ const file = JSON.parse(settings.brandingLogo);
+
+ if ('type' in file && 'data' in file) {
+ void getFile(file).then((binaryData) => {
+ const objectUrl = URL.createObjectURL(new Blob([binaryData]));
+
+ setPreviewUrl(objectUrl);
+ setHasLoadedPreview(true);
+ });
+
+ return;
+ }
+ }
+
+ setHasLoadedPreview(true);
+ }, [settings?.brandingLogo]);
+
+ // Cleanup ObjectURL on unmount or when previewUrl changes
+ useEffect(() => {
+ return () => {
+ if (previewUrl.startsWith('blob:')) {
+ URL.revokeObjectURL(previewUrl);
+ }
+ };
+ }, [previewUrl]);
+
+ return (
+
+
+
+ (
+
+ Enable Custom Branding
+
+
+
+
+
+
+
+
+ Enable custom branding for all documents in this team.
+
+
+ )}
+ />
+
+
+ {!isBrandingEnabled &&
}
+
+
(
+
+ Branding Logo
+
+
+
+ {previewUrl ? (
+
+ ) : (
+
+ Please upload a logo
+ {!hasLoadedPreview && (
+
+
+
+ )}
+
+ )}
+
+
+
+
+ {
+ const file = e.target.files?.[0];
+
+ if (file) {
+ if (previewUrl.startsWith('blob:')) {
+ URL.revokeObjectURL(previewUrl);
+ }
+
+ const objectUrl = URL.createObjectURL(file);
+
+ setPreviewUrl(objectUrl);
+
+ onChange(file);
+ }
+ }}
+ className={cn(
+ 'h-auto p-2',
+ 'file:text-primary hover:file:bg-primary/90',
+ 'file:mr-4 file:cursor-pointer file:rounded-md file:border-0',
+ 'file:p-2 file:py-2 file:font-medium',
+ 'file:bg-primary file:text-primary-foreground',
+ !isBrandingEnabled && 'cursor-not-allowed',
+ )}
+ {...field}
+ />
+
+
+
+ {
+ setPreviewUrl('');
+ onChange(null);
+ }}
+ >
+ Remove
+
+
+
+
+
+ Upload your brand logo (max 5MB, JPG, PNG, or WebP)
+
+
+
+ )}
+ />
+
+ (
+
+ Brand Website
+
+
+
+
+
+
+ Your brand website URL
+
+
+ )}
+ />
+
+ (
+
+ Brand Details
+
+
+
+
+
+
+ Additional brand information to display at the bottom of emails
+
+
+ )}
+ />
+
+
+
+
+ Save
+
+
+
+
+
+ );
+}
diff --git a/apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx b/apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx
new file mode 100644
index 000000000..85f504105
--- /dev/null
+++ b/apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx
@@ -0,0 +1,239 @@
+'use client';
+
+import { zodResolver } from '@hookform/resolvers/zod';
+import { Trans, msg } from '@lingui/macro';
+import { useLingui } from '@lingui/react';
+import { useSession } from 'next-auth/react';
+import { useForm } from 'react-hook-form';
+import { z } from 'zod';
+
+import {
+ SUPPORTED_LANGUAGES,
+ SUPPORTED_LANGUAGE_CODES,
+ isValidLanguageCode,
+} from '@documenso/lib/constants/i18n';
+import type { Team, TeamGlobalSettings } from '@documenso/prisma/client';
+import { DocumentVisibility } from '@documenso/prisma/client';
+import { trpc } from '@documenso/trpc/react';
+import { Alert } from '@documenso/ui/primitives/alert';
+import { Button } from '@documenso/ui/primitives/button';
+import {
+ Form,
+ FormControl,
+ FormDescription,
+ FormField,
+ FormItem,
+ FormLabel,
+} from '@documenso/ui/primitives/form/form';
+import {
+ Select,
+ SelectContent,
+ SelectItem,
+ SelectTrigger,
+ SelectValue,
+} from '@documenso/ui/primitives/select';
+import { Switch } from '@documenso/ui/primitives/switch';
+import { useToast } from '@documenso/ui/primitives/use-toast';
+
+const ZTeamDocumentPreferencesFormSchema = z.object({
+ documentVisibility: z.nativeEnum(DocumentVisibility),
+ documentLanguage: z.enum(SUPPORTED_LANGUAGE_CODES),
+ includeSenderDetails: z.boolean(),
+});
+
+type TTeamDocumentPreferencesFormSchema = z.infer;
+
+export type TeamDocumentPreferencesFormProps = {
+ team: Team;
+ settings?: TeamGlobalSettings | null;
+};
+
+export const TeamDocumentPreferencesForm = ({
+ team,
+ settings,
+}: TeamDocumentPreferencesFormProps) => {
+ const { _ } = useLingui();
+ const { toast } = useToast();
+ const { data } = useSession();
+
+ const placeholderEmail = data?.user.email ?? 'user@example.com';
+
+ const { mutateAsync: updateTeamDocumentPreferences } =
+ trpc.team.updateTeamDocumentSettings.useMutation();
+
+ const form = useForm({
+ defaultValues: {
+ documentVisibility: settings?.documentVisibility ?? 'EVERYONE',
+ documentLanguage: isValidLanguageCode(settings?.documentLanguage)
+ ? settings?.documentLanguage
+ : 'en',
+ includeSenderDetails: settings?.includeSenderDetails ?? false,
+ },
+ resolver: zodResolver(ZTeamDocumentPreferencesFormSchema),
+ });
+
+ const includeSenderDetails = form.watch('includeSenderDetails');
+
+ const onSubmit = async (data: TTeamDocumentPreferencesFormSchema) => {
+ try {
+ const { documentVisibility, documentLanguage, includeSenderDetails } = data;
+
+ await updateTeamDocumentPreferences({
+ teamId: team.id,
+ settings: {
+ documentVisibility,
+ documentLanguage,
+ includeSenderDetails,
+ },
+ });
+
+ toast({
+ title: _(msg`Document preferences updated`),
+ description: _(msg`Your document preferences have been updated`),
+ });
+ } catch (err) {
+ toast({
+ title: _(msg`Something went wrong!`),
+ description: _(
+ msg`We were unable to update your document preferences at this time, please try again later`,
+ ),
+ });
+ }
+ };
+
+ return (
+
+
+
+ (
+
+
+ Default Document Visibility
+
+
+
+
+
+
+
+
+
+
+ Everyone can access and view the document
+
+
+ Only managers and above can access and view the document
+
+
+ Only admins can access and view the document
+
+
+
+
+
+
+ Controls the default visibility of an uploaded document.
+
+
+ )}
+ />
+
+ (
+
+
+ Default Document Language
+
+
+
+
+
+
+
+
+
+ {Object.entries(SUPPORTED_LANGUAGES).map(([code, language]) => (
+
+ {language.full}
+
+ ))}
+
+
+
+
+
+
+ Controls the default language of an uploaded document. This will be used as the
+ language in email communications with the recipients.
+
+
+
+ )}
+ />
+
+ (
+
+
+ Send on Behalf of Team
+
+
+
+
+
+
+
+
+
+
+ Preview
+
+
+
+ {includeSenderDetails ? (
+
+ "{placeholderEmail}" on behalf of "{team.name}" has invited you to sign
+ "example document".
+
+ ) : (
+ "{team.name}" has invited you to sign "example document".
+ )}
+
+
+
+
+
+ Controls the formatting of the message that will be sent when inviting a
+ recipient to sign a document. If a custom message has been provided while
+ configuring the document, it will be used instead.
+
+
+
+ )}
+ />
+
+
+
+ Save
+
+
+
+
+
+ );
+};
diff --git a/apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/page.tsx b/apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/page.tsx
new file mode 100644
index 000000000..51d65301a
--- /dev/null
+++ b/apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/page.tsx
@@ -0,0 +1,52 @@
+import { msg } from '@lingui/macro';
+import { useLingui } from '@lingui/react';
+
+import { setupI18nSSR } from '@documenso/lib/client-only/providers/i18n.server';
+import { getRequiredServerComponentSession } from '@documenso/lib/next-auth/get-server-component-session';
+import { getTeamByUrl } from '@documenso/lib/server-only/team/get-team';
+
+import { SettingsHeader } from '~/components/(dashboard)/settings/layout/header';
+
+import { TeamBrandingPreferencesForm } from './branding-preferences';
+import { TeamDocumentPreferencesForm } from './document-preferences';
+
+export type TeamsSettingsPageProps = {
+ params: {
+ teamUrl: string;
+ };
+};
+
+export default async function TeamsSettingsPage({ params }: TeamsSettingsPageProps) {
+ await setupI18nSSR();
+
+ const { _ } = useLingui();
+
+ const { teamUrl } = params;
+
+ const session = await getRequiredServerComponentSession();
+
+ const team = await getTeamByUrl({ userId: session.user.id, teamUrl });
+
+ return (
+
+
+
+
+
+
+
+
+
+ );
+}
diff --git a/apps/web/src/app/(teams)/t/[teamUrl]/settings/public-profile/page.tsx b/apps/web/src/app/(teams)/t/[teamUrl]/settings/public-profile/page.tsx
index b8e6f2cc5..d184f2845 100644
--- a/apps/web/src/app/(teams)/t/[teamUrl]/settings/public-profile/page.tsx
+++ b/apps/web/src/app/(teams)/t/[teamUrl]/settings/public-profile/page.tsx
@@ -14,7 +14,7 @@ export type TeamsSettingsPublicProfilePageProps = {
export default async function TeamsSettingsPublicProfilePage({
params,
}: TeamsSettingsPublicProfilePageProps) {
- setupI18nSSR();
+ await setupI18nSSR();
const { teamUrl } = params;
diff --git a/apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx b/apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx
index 1ff9c9afa..d3dd91b2c 100644
--- a/apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx
+++ b/apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx
@@ -21,7 +21,7 @@ type ApiTokensPageProps = {
};
export default async function ApiTokensPage({ params }: ApiTokensPageProps) {
- const { i18n } = setupI18nSSR();
+ const { i18n } = await setupI18nSSR();
const { teamUrl } = params;
@@ -97,17 +97,11 @@ export default async function ApiTokensPage({ params }: ApiTokensPageProps) {
{token.name}
-
- Created on
- {i18n.date(token.createdAt, DateTime.DATETIME_FULL)}
-
+ Created on {i18n.date(token.createdAt, DateTime.DATETIME_FULL)}
{token.expires ? (
-
- Expires on
- {i18n.date(token.expires, DateTime.DATETIME_FULL)}
-
+ Expires on {i18n.date(token.expires, DateTime.DATETIME_FULL)}
) : (
diff --git a/apps/web/src/app/(teams)/t/[teamUrl]/templates/[id]/edit/page.tsx b/apps/web/src/app/(teams)/t/[teamUrl]/templates/[id]/edit/page.tsx
new file mode 100644
index 000000000..2ae081ba4
--- /dev/null
+++ b/apps/web/src/app/(teams)/t/[teamUrl]/templates/[id]/edit/page.tsx
@@ -0,0 +1,24 @@
+import { setupI18nSSR } from '@documenso/lib/client-only/providers/i18n.server';
+import { getRequiredServerComponentSession } from '@documenso/lib/next-auth/get-server-component-session';
+import { getTeamByUrl } from '@documenso/lib/server-only/team/get-team';
+
+import type { TemplateEditPageViewProps } from '~/app/(dashboard)/templates/[id]/edit/template-edit-page-view';
+import { TemplateEditPageView } from '~/app/(dashboard)/templates/[id]/edit/template-edit-page-view';
+
+export type TeamsTemplateEditPageProps = {
+ params: TemplateEditPageViewProps['params'] & {
+ teamUrl: string;
+ };
+};
+
+export default async function TeamsTemplateEditPage({ params }: TeamsTemplateEditPageProps) {
+ await setupI18nSSR();
+
+ const { teamUrl } = params;
+
+ const { user } = await getRequiredServerComponentSession();
+
+ const team = await getTeamByUrl({ userId: user.id, teamUrl });
+
+ return ;
+}
diff --git a/apps/web/src/app/(teams)/t/[teamUrl]/templates/[id]/page.tsx b/apps/web/src/app/(teams)/t/[teamUrl]/templates/[id]/page.tsx
index a4773e583..2efcf7c5e 100644
--- a/apps/web/src/app/(teams)/t/[teamUrl]/templates/[id]/page.tsx
+++ b/apps/web/src/app/(teams)/t/[teamUrl]/templates/[id]/page.tsx
@@ -14,7 +14,7 @@ type TeamTemplatePageProps = {
};
export default async function TeamTemplatePage({ params }: TeamTemplatePageProps) {
- setupI18nSSR();
+ await setupI18nSSR();
const { teamUrl } = params;
diff --git a/apps/web/src/app/(teams)/t/[teamUrl]/templates/page.tsx b/apps/web/src/app/(teams)/t/[teamUrl]/templates/page.tsx
index 4bae127ef..784866148 100644
--- a/apps/web/src/app/(teams)/t/[teamUrl]/templates/page.tsx
+++ b/apps/web/src/app/(teams)/t/[teamUrl]/templates/page.tsx
@@ -18,7 +18,7 @@ export default async function TeamTemplatesPage({
searchParams = {},
params,
}: TeamTemplatesPageProps) {
- setupI18nSSR();
+ await setupI18nSSR();
const { teamUrl } = params;
diff --git a/apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx b/apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx
index 8c79071b9..160215df8 100644
--- a/apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx
+++ b/apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx
@@ -5,101 +5,156 @@ import { Trans } from '@lingui/macro';
import { setupI18nSSR } from '@documenso/lib/client-only/providers/i18n.server';
import { Button } from '@documenso/ui/primitives/button';
-export default function SignatureDisclosure() {
- setupI18nSSR();
+const SUPPORT_EMAIL = 'support@documenso.com';
+
+export default async function SignatureDisclosure() {
+ await setupI18nSSR();
return (
- Electronic Signature Disclosure
+
+ Electronic Signature Disclosure
+
- Welcome
+
+ Welcome
+
- 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.
+
+ 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.
+
- Acceptance and Consent
+
+ Acceptance and Consent
+
- When you use our platform to affix your electronic signature to documents, you are
- consenting to do so under the Electronic Signatures in Global and National Commerce Act
- (E-Sign Act) and other applicable laws. This action indicates your agreement to use
- electronic means to sign documents and receive notifications.
+
+ When you use our platform to affix your electronic signature to documents, you are
+ consenting to do so under the Electronic Signatures in Global and National Commerce Act
+ (E-Sign Act) and other applicable laws. This action indicates your agreement to use
+ electronic means to sign documents and receive notifications.
+
- Legality of Electronic Signatures
+
+ Legality of Electronic Signatures
+
- An electronic signature provided by you on our platform, achieved through clicking through
- to a document and entering your name, or any other electronic signing method we provide,
- is legally binding. It carries the same weight and enforceability as a manual signature
- written with ink on paper.
+
+ An electronic signature provided by you on our platform, achieved through clicking
+ through to a document and entering your name, or any other electronic signing method we
+ provide, is legally binding. It carries the same weight and enforceability as a manual
+ signature written with ink on paper.
+
- System Requirements
- To use our electronic signature service, you must have access to:
+
+ System Requirements
+
+
+ To use our electronic signature service, you must have access to:
+
- A stable internet connection
- An email account
- A device capable of accessing, opening, and reading documents
- A means to print or download documents for your records
+
+ A stable internet connection
+
+
+ An email account
+
+
+ A device capable of accessing, opening, and reading documents
+
+
+ A means to print or download documents for your records
+
- Electronic Delivery of Documents
+
+ Electronic Delivery of Documents
+
- All documents related to the electronic signing process will be provided to you
- electronically through our platform or via email. It is your responsibility to ensure that
- your email address is current and that you can receive and open our emails.
+
+ All documents related to the electronic signing process will be provided to you
+ electronically through our platform or via email. It is your responsibility to ensure
+ that your email address is current and that you can receive and open our emails.
+
- Consent to Electronic Transactions
+
+ Consent to Electronic Transactions
+
- By using the electronic signature feature, you are consenting to conduct transactions and
- receive disclosures electronically. You acknowledge that your electronic signature on
- documents is binding and that you accept the terms outlined in the documents you are
- signing.
+
+ By using the electronic signature feature, you are consenting to conduct transactions
+ and receive disclosures electronically. You acknowledge that your electronic signature
+ on documents is binding and that you accept the terms outlined in the documents you are
+ signing.
+
- Withdrawing Consent
+
+ Withdrawing Consent
+
- You have the right to withdraw your consent to use electronic signatures at any time
- before completing the signing process. To withdraw your consent, please contact the sender
- of the document. In failing to contact the sender you may reach out to{' '}
- support@documenso.com for assistance. Be aware
- that withdrawing consent may delay or halt the completion of the related transaction or
- service.
+
+ You have the right to withdraw your consent to use electronic signatures at any time
+ before completing the signing process. To withdraw your consent, please contact the
+ sender of the document. In failing to contact the sender you may reach out to{' '}
+ {SUPPORT_EMAIL} for assistance. Be aware that
+ withdrawing consent may delay or halt the completion of the related transaction or
+ service.
+
- Updating Your Information
+
+ Updating Your Information
+
- It is crucial to keep your contact information, especially your email address, up to date
- with us. Please notify us immediately of any changes to ensure that you continue to
- receive all necessary communications.
+
+ It is crucial to keep your contact information, especially your email address, up to
+ date with us. Please notify us immediately of any changes to ensure that you continue to
+ receive all necessary communications.
+
- Retention of Documents
+
+ Retention of Documents
+
- After signing a document electronically, you will be provided the opportunity to view,
- download, and print the document for your records. It is highly recommended that you
- retain a copy of all electronically signed documents for your personal records. We will
- also retain a copy of the signed document for our records however we may not be able to
- provide you with a copy of the signed document after a certain period of time.
+
+ After signing a document electronically, you will be provided the opportunity to view,
+ download, and print the document for your records. It is highly recommended that you
+ retain a copy of all electronically signed documents for your personal records. We will
+ also retain a copy of the signed document for our records however we may not be able to
+ provide you with a copy of the signed document after a certain period of time.
+
- Acknowledgment
+
+ Acknowledgment
+
- By proceeding to use the electronic signature service provided by Documenso, you affirm
- that you have read and understood this disclosure. You agree to all terms and conditions
- related to the use of electronic signatures and electronic transactions as outlined
- herein.
+
+ By proceeding to use the electronic signature service provided by Documenso, you affirm
+ that you have read and understood this disclosure. You agree to all terms and conditions
+ related to the use of electronic signatures and electronic transactions as outlined
+ herein.
+
- Contact Information
+
+ Contact Information
+
- For any questions regarding this disclosure, electronic signatures, or any related
- process, please contact us at:{' '}
- support@documenso.com
+
+ For any questions regarding this disclosure, electronic signatures, or any related
+ process, please contact us at: {SUPPORT_EMAIL}
+
diff --git a/apps/web/src/app/(unauthenticated)/check-email/page.tsx b/apps/web/src/app/(unauthenticated)/check-email/page.tsx
index a91a2f7a2..a0aa50fae 100644
--- a/apps/web/src/app/(unauthenticated)/check-email/page.tsx
+++ b/apps/web/src/app/(unauthenticated)/check-email/page.tsx
@@ -10,8 +10,8 @@ export const metadata: Metadata = {
title: 'Forgot password',
};
-export default function ForgotPasswordPage() {
- setupI18nSSR();
+export default async function ForgotPasswordPage() {
+ await setupI18nSSR();
return (
diff --git a/apps/web/src/app/(unauthenticated)/forgot-password/page.tsx b/apps/web/src/app/(unauthenticated)/forgot-password/page.tsx
index 72a757732..0bb05587a 100644
--- a/apps/web/src/app/(unauthenticated)/forgot-password/page.tsx
+++ b/apps/web/src/app/(unauthenticated)/forgot-password/page.tsx
@@ -11,8 +11,8 @@ export const metadata: Metadata = {
title: 'Forgot Password',
};
-export default function ForgotPasswordPage() {
- setupI18nSSR();
+export default async function ForgotPasswordPage() {
+ await setupI18nSSR();
return (
diff --git a/apps/web/src/app/(unauthenticated)/layout.tsx b/apps/web/src/app/(unauthenticated)/layout.tsx
index 994bb3ac2..2b70d2610 100644
--- a/apps/web/src/app/(unauthenticated)/layout.tsx
+++ b/apps/web/src/app/(unauthenticated)/layout.tsx
@@ -9,8 +9,8 @@ type UnauthenticatedLayoutProps = {
children: React.ReactNode;
};
-export default function UnauthenticatedLayout({ children }: UnauthenticatedLayoutProps) {
- setupI18nSSR();
+export default async function UnauthenticatedLayout({ children }: UnauthenticatedLayoutProps) {
+ await setupI18nSSR();
return (
diff --git a/apps/web/src/app/(unauthenticated)/reset-password/[token]/page.tsx b/apps/web/src/app/(unauthenticated)/reset-password/[token]/page.tsx
index 7f594c0ed..1bbca3cfe 100644
--- a/apps/web/src/app/(unauthenticated)/reset-password/[token]/page.tsx
+++ b/apps/web/src/app/(unauthenticated)/reset-password/[token]/page.tsx
@@ -15,7 +15,7 @@ type ResetPasswordPageProps = {
};
export default async function ResetPasswordPage({ params: { token } }: ResetPasswordPageProps) {
- setupI18nSSR();
+ await setupI18nSSR();
const isValid = await getResetTokenValidity({ token });
diff --git a/apps/web/src/app/(unauthenticated)/reset-password/page.tsx b/apps/web/src/app/(unauthenticated)/reset-password/page.tsx
index ad478a7bb..fc54aceec 100644
--- a/apps/web/src/app/(unauthenticated)/reset-password/page.tsx
+++ b/apps/web/src/app/(unauthenticated)/reset-password/page.tsx
@@ -10,8 +10,8 @@ export const metadata: Metadata = {
title: 'Reset Password',
};
-export default function ResetPasswordPage() {
- setupI18nSSR();
+export default async function ResetPasswordPage() {
+ await setupI18nSSR();
return (
diff --git a/apps/web/src/app/(unauthenticated)/signin/page.tsx b/apps/web/src/app/(unauthenticated)/signin/page.tsx
index f7e62675b..9b041e22b 100644
--- a/apps/web/src/app/(unauthenticated)/signin/page.tsx
+++ b/apps/web/src/app/(unauthenticated)/signin/page.tsx
@@ -17,8 +17,8 @@ export const metadata: Metadata = {
title: 'Sign In',
};
-export default function SignInPage() {
- setupI18nSSR();
+export default async function SignInPage() {
+ await setupI18nSSR();
const NEXT_PUBLIC_DISABLE_SIGNUP = env('NEXT_PUBLIC_DISABLE_SIGNUP');
diff --git a/apps/web/src/app/(unauthenticated)/signup/page.tsx b/apps/web/src/app/(unauthenticated)/signup/page.tsx
index bdcf9c37f..7686d2f70 100644
--- a/apps/web/src/app/(unauthenticated)/signup/page.tsx
+++ b/apps/web/src/app/(unauthenticated)/signup/page.tsx
@@ -12,8 +12,8 @@ export const metadata: Metadata = {
title: 'Sign Up',
};
-export default function SignUpPage() {
- setupI18nSSR();
+export default async function SignUpPage() {
+ await setupI18nSSR();
const NEXT_PUBLIC_DISABLE_SIGNUP = env('NEXT_PUBLIC_DISABLE_SIGNUP');
diff --git a/apps/web/src/app/(unauthenticated)/team/decline/[token]/page.tsx b/apps/web/src/app/(unauthenticated)/team/decline/[token]/page.tsx
index 69d0cad8b..06c7dadc9 100644
--- a/apps/web/src/app/(unauthenticated)/team/decline/[token]/page.tsx
+++ b/apps/web/src/app/(unauthenticated)/team/decline/[token]/page.tsx
@@ -21,7 +21,7 @@ type DeclineInvitationPageProps = {
export default async function DeclineInvitationPage({
params: { token },
}: DeclineInvitationPageProps) {
- setupI18nSSR();
+ await setupI18nSSR();
const session = await getServerComponentSession();
diff --git a/apps/web/src/app/(unauthenticated)/team/invite/[token]/page.tsx b/apps/web/src/app/(unauthenticated)/team/invite/[token]/page.tsx
index 5e76f8d65..3441dbed7 100644
--- a/apps/web/src/app/(unauthenticated)/team/invite/[token]/page.tsx
+++ b/apps/web/src/app/(unauthenticated)/team/invite/[token]/page.tsx
@@ -21,7 +21,7 @@ type AcceptInvitationPageProps = {
export default async function AcceptInvitationPage({
params: { token },
}: AcceptInvitationPageProps) {
- setupI18nSSR();
+ await setupI18nSSR();
const session = await getServerComponentSession();
diff --git a/apps/web/src/app/(unauthenticated)/team/verify/email/[token]/page.tsx b/apps/web/src/app/(unauthenticated)/team/verify/email/[token]/page.tsx
index 0314646cb..b53fb5f71 100644
--- a/apps/web/src/app/(unauthenticated)/team/verify/email/[token]/page.tsx
+++ b/apps/web/src/app/(unauthenticated)/team/verify/email/[token]/page.tsx
@@ -14,7 +14,7 @@ type VerifyTeamEmailPageProps = {
};
export default async function VerifyTeamEmailPage({ params: { token } }: VerifyTeamEmailPageProps) {
- setupI18nSSR();
+ await setupI18nSSR();
const teamEmailVerification = await prisma.teamEmailVerification.findUnique({
where: {
diff --git a/apps/web/src/app/(unauthenticated)/team/verify/transfer/[token]/page.tsx b/apps/web/src/app/(unauthenticated)/team/verify/transfer/[token]/page.tsx
index ae4e7e97f..8713aeecd 100644
--- a/apps/web/src/app/(unauthenticated)/team/verify/transfer/[token]/page.tsx
+++ b/apps/web/src/app/(unauthenticated)/team/verify/transfer/[token]/page.tsx
@@ -17,7 +17,7 @@ type VerifyTeamTransferPage = {
export default async function VerifyTeamTransferPage({
params: { token },
}: VerifyTeamTransferPage) {
- setupI18nSSR();
+ await setupI18nSSR();
const teamTransferVerification = await prisma.teamTransferVerification.findUnique({
where: {
diff --git a/apps/web/src/app/(unauthenticated)/unverified-account/page.tsx b/apps/web/src/app/(unauthenticated)/unverified-account/page.tsx
index 70b94c2cc..3c3588c1e 100644
--- a/apps/web/src/app/(unauthenticated)/unverified-account/page.tsx
+++ b/apps/web/src/app/(unauthenticated)/unverified-account/page.tsx
@@ -5,8 +5,8 @@ import { setupI18nSSR } from '@documenso/lib/client-only/providers/i18n.server';
import { SendConfirmationEmailForm } from '~/components/forms/send-confirmation-email';
-export default function UnverifiedAccount() {
- setupI18nSSR();
+export default async function UnverifiedAccount() {
+ await setupI18nSSR();
return (
diff --git a/apps/web/src/app/(unauthenticated)/verify-email/[token]/page.tsx b/apps/web/src/app/(unauthenticated)/verify-email/[token]/page.tsx
index b3edcb3c9..eb88538c4 100644
--- a/apps/web/src/app/(unauthenticated)/verify-email/[token]/page.tsx
+++ b/apps/web/src/app/(unauthenticated)/verify-email/[token]/page.tsx
@@ -23,7 +23,7 @@ export type PageProps = {
};
export default async function VerifyEmailPage({ params: { token } }: PageProps) {
- setupI18nSSR();
+ await setupI18nSSR();
if (!token) {
return (
diff --git a/apps/web/src/app/(unauthenticated)/verify-email/page.tsx b/apps/web/src/app/(unauthenticated)/verify-email/page.tsx
index 6fcfaec9b..cd518a913 100644
--- a/apps/web/src/app/(unauthenticated)/verify-email/page.tsx
+++ b/apps/web/src/app/(unauthenticated)/verify-email/page.tsx
@@ -11,8 +11,8 @@ export const metadata: Metadata = {
title: 'Verify Email',
};
-export default function EmailVerificationWithoutTokenPage() {
- setupI18nSSR();
+export default async function EmailVerificationWithoutTokenPage() {
+ await setupI18nSSR();
return (
diff --git a/apps/web/src/app/embed/direct/[[...url]]/client.tsx b/apps/web/src/app/embed/direct/[[...url]]/client.tsx
index 189e9f1ca..0f71c0e89 100644
--- a/apps/web/src/app/embed/direct/[[...url]]/client.tsx
+++ b/apps/web/src/app/embed/direct/[[...url]]/client.tsx
@@ -318,6 +318,7 @@ export const EmbedDirectTemplateClientPage = ({
{/* Widget */}
@@ -367,7 +368,7 @@ export const EmbedDirectTemplateClientPage = ({
className="bg-background mt-2"
disabled={isNameLocked}
value={fullName}
- onChange={(e) => !isNameLocked && setFullName(e.target.value.trim())}
+ onChange={(e) => !isNameLocked && setFullName(e.target.value)}
/>
@@ -394,13 +395,17 @@ export const EmbedDirectTemplateClientPage = ({
{
setSignature(value);
}}
+ allowTypedSignature={Boolean(
+ metadata &&
+ 'typedSignatureEnabled' in metadata &&
+ metadata.typedSignatureEnabled,
+ )}
/>
diff --git a/apps/web/src/app/embed/sign/[[...url]]/client.tsx b/apps/web/src/app/embed/sign/[[...url]]/client.tsx
index 08f479004..e10f4745c 100644
--- a/apps/web/src/app/embed/sign/[[...url]]/client.tsx
+++ b/apps/web/src/app/embed/sign/[[...url]]/client.tsx
@@ -198,6 +198,7 @@ export const EmbedSignDocumentClientPage = ({
{/* Widget */}
@@ -247,7 +248,7 @@ export const EmbedSignDocumentClientPage = ({
className="bg-background mt-2"
disabled={isNameLocked}
value={fullName}
- onChange={(e) => !isNameLocked && setFullName(e.target.value.trim())}
+ onChange={(e) => !isNameLocked && setFullName(e.target.value)}
/>
@@ -273,13 +274,17 @@ export const EmbedSignDocumentClientPage = ({
{
setSignature(value);
}}
+ allowTypedSignature={Boolean(
+ metadata &&
+ 'typedSignatureEnabled' in metadata &&
+ metadata.typedSignatureEnabled,
+ )}
/>
diff --git a/apps/web/src/app/layout.tsx b/apps/web/src/app/layout.tsx
index c4a6ffd3a..53d735200 100644
--- a/apps/web/src/app/layout.tsx
+++ b/apps/web/src/app/layout.tsx
@@ -56,7 +56,7 @@ export function generateMetadata() {
export default async function RootLayout({ children }: { children: React.ReactNode }) {
const flags = await getServerComponentAllFlags();
- const { i18n, lang, locales } = setupI18nSSR();
+ const { i18n, lang, locales } = await setupI18nSSR();
return (
Documenso
;
}
diff --git a/apps/web/src/components/(dashboard)/avatar/stack-avatar.tsx b/apps/web/src/components/(dashboard)/avatar/stack-avatar.tsx
index a2a81bb2a..94f3e5a68 100644
--- a/apps/web/src/components/(dashboard)/avatar/stack-avatar.tsx
+++ b/apps/web/src/components/(dashboard)/avatar/stack-avatar.tsx
@@ -1,3 +1,4 @@
+import { RecipientStatusType } from '@documenso/lib/client-only/recipient-type';
import { Avatar, AvatarFallback } from '@documenso/ui/primitives/avatar';
const ZIndexes: { [key: string]: string } = {
@@ -12,7 +13,7 @@ export type StackAvatarProps = {
first?: boolean;
zIndex?: string;
fallbackText?: string;
- type: 'unsigned' | 'waiting' | 'opened' | 'completed';
+ type: RecipientStatusType;
};
export const StackAvatar = ({ first, zIndex, fallbackText = '', type }: StackAvatarProps) => {
@@ -25,18 +26,21 @@ export const StackAvatar = ({ first, zIndex, fallbackText = '', type }: StackAva
}
switch (type) {
- case 'unsigned':
+ case RecipientStatusType.UNSIGNED:
classes = 'bg-dawn-200 text-dawn-900';
break;
- case 'opened':
+ case RecipientStatusType.OPENED:
classes = 'bg-yellow-200 text-yellow-700';
break;
- case 'waiting':
+ case RecipientStatusType.WAITING:
classes = 'bg-water text-water-700';
break;
- case 'completed':
+ case RecipientStatusType.COMPLETED:
classes = 'bg-documenso-200 text-documenso-800';
break;
+ case RecipientStatusType.REJECTED:
+ classes = 'bg-red-200 text-red-800';
+ break;
default:
break;
}
diff --git a/apps/web/src/components/(dashboard)/avatar/stack-avatars-with-tooltip.tsx b/apps/web/src/components/(dashboard)/avatar/stack-avatars-with-tooltip.tsx
index c859c332a..bccee558e 100644
--- a/apps/web/src/components/(dashboard)/avatar/stack-avatars-with-tooltip.tsx
+++ b/apps/web/src/components/(dashboard)/avatar/stack-avatars-with-tooltip.tsx
@@ -8,7 +8,7 @@ import { useLingui } from '@lingui/react';
import { RecipientStatusType, getRecipientType } from '@documenso/lib/client-only/recipient-type';
import { RECIPIENT_ROLES_DESCRIPTION } from '@documenso/lib/constants/recipient-roles';
import { recipientAbbreviation } from '@documenso/lib/utils/recipient-formatter';
-import type { DocumentStatus, Recipient } from '@documenso/prisma/client';
+import { type DocumentStatus, type Recipient } from '@documenso/prisma/client';
import { PopoverHover } from '@documenso/ui/primitives/popover';
import { AvatarWithRecipient } from './avatar-with-recipient';
@@ -46,7 +46,22 @@ export const StackAvatarsWithTooltip = ({
(recipient) => getRecipientType(recipient) === RecipientStatusType.UNSIGNED,
);
- const sortedRecipients = useMemo(() => recipients.sort((a, b) => a.id - b.id), [recipients]);
+ const rejectedRecipients = recipients.filter(
+ (recipient) => getRecipientType(recipient) === RecipientStatusType.REJECTED,
+ );
+
+ const sortedRecipients = useMemo(() => {
+ const otherRecipients = recipients.filter(
+ (recipient) => getRecipientType(recipient) !== RecipientStatusType.REJECTED,
+ );
+
+ return [
+ ...rejectedRecipients.sort((a, b) => a.id - b.id),
+ ...otherRecipients.sort((a, b) => {
+ return a.id - b.id;
+ }),
+ ];
+ }, [recipients]);
return (
)}
+ {rejectedRecipients.length > 0 && (
+
+
+ Rejected
+
+ {rejectedRecipients.map((recipient: Recipient) => (
+
+
+
+
{recipient.email}
+
+ {_(RECIPIENT_ROLES_DESCRIPTION[recipient.role].roleName)}
+
+
+
+ ))}
+
+ )}
+
{waitingRecipients.length > 0 && (
diff --git a/apps/web/src/components/(dashboard)/document-search/document-search.tsx b/apps/web/src/components/(dashboard)/document-search/document-search.tsx
index dbfad6775..966452152 100644
--- a/apps/web/src/components/(dashboard)/document-search/document-search.tsx
+++ b/apps/web/src/components/(dashboard)/document-search/document-search.tsx
@@ -4,12 +4,18 @@ import { useCallback, useEffect, useState } from 'react';
import { useRouter, useSearchParams } from 'next/navigation';
+import { msg } from '@lingui/macro';
+import { useLingui } from '@lingui/react';
+
import { useDebouncedValue } from '@documenso/lib/client-only/hooks/use-debounced-value';
import { Input } from '@documenso/ui/primitives/input';
export const DocumentSearch = ({ initialValue = '' }: { initialValue?: string }) => {
+ const { _ } = useLingui();
+
const router = useRouter();
const searchParams = useSearchParams();
+
const [searchTerm, setSearchTerm] = useState(initialValue);
const debouncedSearchTerm = useDebouncedValue(searchTerm, 500);
@@ -33,7 +39,7 @@ export const DocumentSearch = ({ initialValue = '' }: { initialValue?: string })
return (
setSearchTerm(e.target.value)}
/>
diff --git a/apps/web/src/components/(dashboard)/settings/token/contants.ts b/apps/web/src/components/(dashboard)/settings/token/contants.ts
index 232c37644..414425b25 100644
--- a/apps/web/src/components/(dashboard)/settings/token/contants.ts
+++ b/apps/web/src/components/(dashboard)/settings/token/contants.ts
@@ -1,7 +1,9 @@
+import { msg } from '@lingui/macro';
+
export const EXPIRATION_DATES = {
- ONE_WEEK: '7 days',
- ONE_MONTH: '1 month',
- THREE_MONTHS: '3 months',
- SIX_MONTHS: '6 months',
- ONE_YEAR: '12 months',
+ ONE_WEEK: msg`7 days`,
+ ONE_MONTH: msg`1 month`,
+ THREE_MONTHS: msg`3 months`,
+ SIX_MONTHS: msg`6 months`,
+ ONE_YEAR: msg`12 months`,
} as const;
diff --git a/apps/web/src/components/(dashboard)/settings/token/delete-token-dialog.tsx b/apps/web/src/components/(dashboard)/settings/token/delete-token-dialog.tsx
index 428470dce..adaac05b0 100644
--- a/apps/web/src/components/(dashboard)/settings/token/delete-token-dialog.tsx
+++ b/apps/web/src/components/(dashboard)/settings/token/delete-token-dialog.tsx
@@ -53,7 +53,7 @@ export default function DeleteTokenDialog({
const [isOpen, setIsOpen] = useState(false);
- const deleteMessage = `delete ${token.name}`;
+ const deleteMessage = _(msg`delete ${token.name}`);
const ZDeleteTokenDialogSchema = z.object({
tokenName: z.literal(deleteMessage, {
diff --git a/apps/web/src/components/(dashboard)/settings/webhooks/delete-webhook-dialog.tsx b/apps/web/src/components/(dashboard)/settings/webhooks/delete-webhook-dialog.tsx
index 3ba291132..62d9df9bc 100644
--- a/apps/web/src/components/(dashboard)/settings/webhooks/delete-webhook-dialog.tsx
+++ b/apps/web/src/components/(dashboard)/settings/webhooks/delete-webhook-dialog.tsx
@@ -51,7 +51,7 @@ export const DeleteWebhookDialog = ({ webhook, children }: DeleteWebhookDialogPr
const [open, setOpen] = useState(false);
- const deleteMessage = `delete ${webhook.webhookUrl}`;
+ const deleteMessage = _(msg`delete ${webhook.webhookUrl}`);
const ZDeleteWebhookFormSchema = z.object({
webhookUrl: z.literal(deleteMessage, {
diff --git a/apps/web/src/components/(teams)/dialogs/delete-team-dialog.tsx b/apps/web/src/components/(teams)/dialogs/delete-team-dialog.tsx
index ee974a25b..3377bc989 100644
--- a/apps/web/src/components/(teams)/dialogs/delete-team-dialog.tsx
+++ b/apps/web/src/components/(teams)/dialogs/delete-team-dialog.tsx
@@ -47,7 +47,7 @@ export const DeleteTeamDialog = ({ trigger, teamId, teamName }: DeleteTeamDialog
const { _ } = useLingui();
const { toast } = useToast();
- const deleteMessage = `delete ${teamName}`;
+ const deleteMessage = _(msg`delete ${teamName}`);
const ZDeleteTeamFormSchema = z.object({
teamName: z.literal(deleteMessage, {
diff --git a/apps/web/src/components/(teams)/dialogs/transfer-team-dialog.tsx b/apps/web/src/components/(teams)/dialogs/transfer-team-dialog.tsx
index 0859945dc..2fb5f31bf 100644
--- a/apps/web/src/components/(teams)/dialogs/transfer-team-dialog.tsx
+++ b/apps/web/src/components/(teams)/dialogs/transfer-team-dialog.tsx
@@ -73,7 +73,7 @@ export const TransferTeamDialog = ({
teamId,
});
- const confirmTransferMessage = `transfer ${teamName}`;
+ const confirmTransferMessage = _(msg`transfer ${teamName}`);
const ZTransferTeamFormSchema = z.object({
teamName: z.literal(confirmTransferMessage, {
diff --git a/apps/web/src/components/(teams)/forms/update-team-form.tsx b/apps/web/src/components/(teams)/forms/update-team-form.tsx
index c709e2039..0ed19fcdc 100644
--- a/apps/web/src/components/(teams)/forms/update-team-form.tsx
+++ b/apps/web/src/components/(teams)/forms/update-team-form.tsx
@@ -6,14 +6,22 @@ import { zodResolver } from '@hookform/resolvers/zod';
import { Trans, msg } from '@lingui/macro';
import { useLingui } from '@lingui/react';
import { AnimatePresence, motion } from 'framer-motion';
+import { useSession } from 'next-auth/react';
import { useForm } from 'react-hook-form';
+import { match } from 'ts-pattern';
import type { z } from 'zod';
import { WEBAPP_BASE_URL } from '@documenso/lib/constants/app';
import { AppError, AppErrorCode } from '@documenso/lib/errors/app-error';
+import { DocumentVisibility } from '@documenso/prisma/client';
import { trpc } from '@documenso/trpc/react';
import { ZUpdateTeamMutationSchema } from '@documenso/trpc/server/team-router/schema';
+import {
+ DocumentVisibilitySelect,
+ DocumentVisibilityTooltip,
+} from '@documenso/ui/components/document/document-visibility-select';
import { Button } from '@documenso/ui/primitives/button';
+import { Checkbox } from '@documenso/ui/primitives/checkbox';
import {
Form,
FormControl,
@@ -29,18 +37,29 @@ export type UpdateTeamDialogProps = {
teamId: number;
teamName: string;
teamUrl: string;
+ documentVisibility?: DocumentVisibility;
+ includeSenderDetails?: boolean;
};
const ZUpdateTeamFormSchema = ZUpdateTeamMutationSchema.shape.data.pick({
name: true,
url: true,
+ documentVisibility: true,
+ includeSenderDetails: true,
});
type TUpdateTeamFormSchema = z.infer;
-export const UpdateTeamForm = ({ teamId, teamName, teamUrl }: UpdateTeamDialogProps) => {
+export const UpdateTeamForm = ({
+ teamId,
+ teamName,
+ teamUrl,
+ documentVisibility,
+ includeSenderDetails,
+}: UpdateTeamDialogProps) => {
const router = useRouter();
-
+ const { data: session } = useSession();
+ const email = session?.user?.email;
const { _ } = useLingui();
const { toast } = useToast();
@@ -49,17 +68,36 @@ export const UpdateTeamForm = ({ teamId, teamName, teamUrl }: UpdateTeamDialogPr
defaultValues: {
name: teamName,
url: teamUrl,
+ documentVisibility,
+ includeSenderDetails,
},
});
const { mutateAsync: updateTeam } = trpc.team.updateTeam.useMutation();
+ const includeSenderDetailsCheck = form.watch('includeSenderDetails');
- const onFormSubmit = async ({ name, url }: TUpdateTeamFormSchema) => {
+ const mapVisibilityToRole = (visibility: DocumentVisibility): DocumentVisibility =>
+ match(visibility)
+ .with(DocumentVisibility.ADMIN, () => DocumentVisibility.ADMIN)
+ .with(DocumentVisibility.MANAGER_AND_ABOVE, () => DocumentVisibility.MANAGER_AND_ABOVE)
+ .otherwise(() => DocumentVisibility.EVERYONE);
+
+ const currentVisibilityRole = mapVisibilityToRole(
+ documentVisibility ?? DocumentVisibility.EVERYONE,
+ );
+ const onFormSubmit = async ({
+ name,
+ url,
+ documentVisibility,
+ includeSenderDetails,
+ }: TUpdateTeamFormSchema) => {
try {
await updateTeam({
data: {
name,
url,
+ documentVisibility,
+ includeSenderDetails,
},
teamId,
});
@@ -73,6 +111,8 @@ export const UpdateTeamForm = ({ teamId, teamName, teamUrl }: UpdateTeamDialogPr
form.reset({
name,
url,
+ documentVisibility,
+ includeSenderDetails,
});
if (url !== teamUrl) {
@@ -146,6 +186,68 @@ export const UpdateTeamForm = ({ teamId, teamName, teamUrl }: UpdateTeamDialogPr
)}
/>
+ (
+
+
+ Default Document Visibility
+
+
+
+
+
+
+
+
+ )}
+ />
+
+
+
(
+
+
+
+ Send on Behalf of Team
+
+
+
+
+
+
+ {includeSenderDetailsCheck ? (
+
+
+ "{email}" on behalf of "{teamName}" has invited you to sign "example
+ document".
+
+
+ ) : (
+
+ "{teamUrl}" has invited you to sign "example document".
+
+ )}
+
+
+
+ )}
+ />
+
+
{form.formState.isDirty && (
diff --git a/apps/web/src/components/(teams)/settings/layout/desktop-nav.tsx b/apps/web/src/components/(teams)/settings/layout/desktop-nav.tsx
index 296e3fa95..beb31d9b1 100644
--- a/apps/web/src/components/(teams)/settings/layout/desktop-nav.tsx
+++ b/apps/web/src/components/(teams)/settings/layout/desktop-nav.tsx
@@ -6,7 +6,7 @@ import Link from 'next/link';
import { useParams, usePathname } from 'next/navigation';
import { Trans } from '@lingui/macro';
-import { Braces, CreditCard, Globe2Icon, Settings, Users, Webhook } from 'lucide-react';
+import { Braces, CreditCard, Globe2Icon, Settings, Settings2, Users, Webhook } from 'lucide-react';
import { useFeatureFlags } from '@documenso/lib/client-only/providers/feature-flag';
import { IS_BILLING_ENABLED } from '@documenso/lib/constants/app';
@@ -26,6 +26,7 @@ export const DesktopNav = ({ className, ...props }: DesktopNavProps) => {
const teamUrl = typeof params?.teamUrl === 'string' ? params?.teamUrl : '';
const settingsPath = `/t/${teamUrl}/settings`;
+ const preferencesPath = `/t/${teamUrl}/settings/preferences`;
const publicProfilePath = `/t/${teamUrl}/settings/public-profile`;
const membersPath = `/t/${teamUrl}/settings/members`;
const tokensPath = `/t/${teamUrl}/settings/tokens`;
@@ -44,6 +45,20 @@ export const DesktopNav = ({ className, ...props }: DesktopNavProps) => {
+
+
+
+
+ Preferences
+
+
+
{isPublicProfileEnabled && (
{
const teamUrl = typeof params?.teamUrl === 'string' ? params?.teamUrl : '';
const settingsPath = `/t/${teamUrl}/settings`;
+ const preferencesPath = `/t/${teamUrl}/preferences`;
const publicProfilePath = `/t/${teamUrl}/settings/public-profile`;
const membersPath = `/t/${teamUrl}/settings/members`;
const tokensPath = `/t/${teamUrl}/settings/tokens`;
@@ -52,6 +53,21 @@ export const MobileNav = ({ className, ...props }: MobileNavProps) => {
+
+
+
+ Preferences
+
+
+
{isPublicProfileEnabled && (
{
accessorKey: 'role',
cell: ({ row }) =>
row.original.ownerUserId === row.original.currentTeamMember.userId
- ? 'Owner'
+ ? _(msg`Owner`)
: _(TEAM_MEMBER_ROLE_MAP[row.original.currentTeamMember.role]),
},
{
diff --git a/apps/web/src/components/(teams)/tables/team-members-data-table.tsx b/apps/web/src/components/(teams)/tables/team-members-data-table.tsx
index fc8e28598..195c839dc 100644
--- a/apps/web/src/components/(teams)/tables/team-members-data-table.tsx
+++ b/apps/web/src/components/(teams)/tables/team-members-data-table.tsx
@@ -106,7 +106,7 @@ export const TeamMembersDataTable = ({
accessorKey: 'role',
cell: ({ row }) =>
teamOwnerUserId === row.original.userId
- ? 'Owner'
+ ? _(msg`Owner`)
: _(TEAM_MEMBER_ROLE_MAP[row.original.role]),
},
{
diff --git a/apps/web/src/components/document/document-history-sheet.tsx b/apps/web/src/components/document/document-history-sheet.tsx
index 45bc00f42..83b1d3e73 100644
--- a/apps/web/src/components/document/document-history-sheet.tsx
+++ b/apps/web/src/components/document/document-history-sheet.tsx
@@ -12,7 +12,7 @@ import { UAParser } from 'ua-parser-js';
import { DOCUMENT_AUDIT_LOG_EMAIL_FORMAT } from '@documenso/lib/constants/document-audit-logs';
import { DOCUMENT_AUTH_TYPES } from '@documenso/lib/constants/document-auth';
import { DOCUMENT_AUDIT_LOG_TYPE } from '@documenso/lib/types/document-audit-logs';
-import { formatDocumentAuditLogActionString } from '@documenso/lib/utils/document-audit-logs';
+import { formatDocumentAuditLogAction } from '@documenso/lib/utils/document-audit-logs';
import { trpc } from '@documenso/trpc/react';
import { cn } from '@documenso/ui/lib/utils';
import { Avatar, AvatarFallback } from '@documenso/ui/primitives/avatar';
@@ -37,7 +37,7 @@ export const DocumentHistorySheet = ({
onMenuOpenChange,
children,
}: DocumentHistorySheetProps) => {
- const { i18n } = useLingui();
+ const { _, i18n } = useLingui();
const [isUserDetailsVisible, setIsUserDetailsVisible] = useState(false);
@@ -152,7 +152,7 @@ export const DocumentHistorySheet = ({
- {formatDocumentAuditLogActionString(auditLog, userId)}
+ {formatDocumentAuditLogAction(_, auditLog, userId).description}
{DateTime.fromJSDate(auditLog.createdAt)
@@ -170,6 +170,7 @@ export const DocumentHistorySheet = ({
{ type: DOCUMENT_AUDIT_LOG_TYPE.DOCUMENT_RESTORED },
{ type: DOCUMENT_AUDIT_LOG_TYPE.DOCUMENT_OPENED },
{ type: DOCUMENT_AUDIT_LOG_TYPE.DOCUMENT_RECIPIENT_COMPLETED },
+ { type: DOCUMENT_AUDIT_LOG_TYPE.DOCUMENT_RECIPIENT_REJECTED },
{ type: DOCUMENT_AUDIT_LOG_TYPE.DOCUMENT_SENT },
{ type: DOCUMENT_AUDIT_LOG_TYPE.DOCUMENT_MOVED_TO_TEAM },
() => null,
diff --git a/apps/web/src/components/document/document-read-only-fields.tsx b/apps/web/src/components/document/document-read-only-fields.tsx
index 84b77e0d5..0b9550a8c 100644
--- a/apps/web/src/components/document/document-read-only-fields.tsx
+++ b/apps/web/src/components/document/document-read-only-fields.tsx
@@ -2,7 +2,9 @@
import { useState } from 'react';
-import { EyeOffIcon } from 'lucide-react';
+import { Trans } from '@lingui/macro';
+import { useLingui } from '@lingui/react';
+import { Clock, EyeOffIcon } from 'lucide-react';
import { P, match } from 'ts-pattern';
import {
@@ -12,12 +14,15 @@ import {
import { PDF_VIEWER_PAGE_SELECTOR } from '@documenso/lib/constants/pdf-viewer';
import { DEFAULT_DOCUMENT_TIME_ZONE } from '@documenso/lib/constants/time-zones';
import type { DocumentField } from '@documenso/lib/server-only/field/get-fields-for-document';
+import { parseMessageDescriptor } from '@documenso/lib/utils/i18n';
import { extractInitials } from '@documenso/lib/utils/recipient-formatter';
import type { DocumentMeta } from '@documenso/prisma/client';
import { FieldType, SigningStatus } from '@documenso/prisma/client';
import { FieldRootContainer } from '@documenso/ui/components/field/field';
+import { SignatureIcon } from '@documenso/ui/icons/signature';
import { cn } from '@documenso/ui/lib/utils';
import { Avatar, AvatarFallback } from '@documenso/ui/primitives/avatar';
+import { Badge } from '@documenso/ui/primitives/badge';
import { FRIENDLY_FIELD_TYPE } from '@documenso/ui/primitives/document-flow/types';
import { ElementVisible } from '@documenso/ui/primitives/element-visible';
import { PopoverHover } from '@documenso/ui/primitives/popover';
@@ -25,9 +30,16 @@ import { PopoverHover } from '@documenso/ui/primitives/popover';
export type DocumentReadOnlyFieldsProps = {
fields: DocumentField[];
documentMeta?: DocumentMeta;
+ showFieldStatus?: boolean;
};
-export const DocumentReadOnlyFields = ({ documentMeta, fields }: DocumentReadOnlyFieldsProps) => {
+export const DocumentReadOnlyFields = ({
+ documentMeta,
+ fields,
+ showFieldStatus = true,
+}: DocumentReadOnlyFieldsProps) => {
+ const { _ } = useLingui();
+
const [hiddenFieldIds, setHiddenFieldIds] = useState>({});
const handleHideField = (fieldId: string) => {
@@ -54,15 +66,37 @@ export const DocumentReadOnlyFields = ({ documentMeta, fields }: DocumentReadOnl
}
contentProps={{
- className: 'relative flex w-fit flex-col p-2.5 text-sm',
+ className: 'relative flex w-fit flex-col p-4 text-sm',
}}
>
-
- {field.Recipient.signingStatus === SigningStatus.SIGNED ? 'Signed' : 'Pending'}{' '}
- {FRIENDLY_FIELD_TYPE[field.type].toLowerCase()} field
+ {showFieldStatus && (
+
+ {field.Recipient.signingStatus === SigningStatus.SIGNED ? (
+ <>
+
+ Signed
+ >
+ ) : (
+ <>
+
+ Pending
+ >
+ )}
+
+ )}
+
+
+ {parseMessageDescriptor(_, FRIENDLY_FIELD_TYPE[field.type])} field
-
+
{field.Recipient.name
? `${field.Recipient.name} (${field.Recipient.email})`
: field.Recipient.email}{' '}
@@ -127,7 +161,7 @@ export const DocumentReadOnlyFields = ({ documentMeta, fields }: DocumentReadOnl
field.type === FieldType.FREE_SIGNATURE,
})}
>
- {FRIENDLY_FIELD_TYPE[field.type]}
+ {parseMessageDescriptor(_, FRIENDLY_FIELD_TYPE[field.type])}
)}
diff --git a/apps/web/src/components/document/document-recipient-link-copy-dialog.tsx b/apps/web/src/components/document/document-recipient-link-copy-dialog.tsx
new file mode 100644
index 000000000..bec368f4c
--- /dev/null
+++ b/apps/web/src/components/document/document-recipient-link-copy-dialog.tsx
@@ -0,0 +1,151 @@
+'use client';
+
+import { useEffect, useState } from 'react';
+
+import { useSearchParams } from 'next/navigation';
+
+import { Trans, msg } from '@lingui/macro';
+import { useLingui } from '@lingui/react';
+
+import { useCopyToClipboard } from '@documenso/lib/client-only/hooks/use-copy-to-clipboard';
+import { useUpdateSearchParams } from '@documenso/lib/client-only/hooks/use-update-search-params';
+import { NEXT_PUBLIC_WEBAPP_URL } from '@documenso/lib/constants/app';
+import { RECIPIENT_ROLES_DESCRIPTION } from '@documenso/lib/constants/recipient-roles';
+import { formatSigningLink } from '@documenso/lib/utils/recipients';
+import type { Recipient } from '@documenso/prisma/client';
+import { RecipientRole } from '@documenso/prisma/client';
+import { CopyTextButton } from '@documenso/ui/components/common/copy-text-button';
+import { AvatarWithText } from '@documenso/ui/primitives/avatar';
+import { Button } from '@documenso/ui/primitives/button';
+import {
+ Dialog,
+ DialogClose,
+ DialogContent,
+ DialogDescription,
+ DialogFooter,
+ DialogHeader,
+ DialogTitle,
+ DialogTrigger,
+} from '@documenso/ui/primitives/dialog';
+import { useToast } from '@documenso/ui/primitives/use-toast';
+
+export type DocumentRecipientLinkCopyDialogProps = {
+ trigger?: React.ReactNode;
+ recipients: Recipient[];
+};
+
+export const DocumentRecipientLinkCopyDialog = ({
+ trigger,
+ recipients,
+}: DocumentRecipientLinkCopyDialogProps) => {
+ const { _ } = useLingui();
+ const { toast } = useToast();
+
+ const [, copy] = useCopyToClipboard();
+
+ const searchParams = useSearchParams();
+ const updateSearchParams = useUpdateSearchParams();
+
+ const [open, setOpen] = useState(false);
+
+ const actionSearchParam = searchParams?.get('action');
+
+ const onBulkCopy = async () => {
+ const generatedString = recipients
+ .filter((recipient) => recipient.role !== RecipientRole.CC)
+ .map((recipient) => `${recipient.email}\n${NEXT_PUBLIC_WEBAPP_URL()}/sign/${recipient.token}`)
+ .join('\n\n');
+
+ await copy(generatedString).then(() => {
+ toast({
+ title: _(msg`Copied to clipboard`),
+ description: _(msg`All signing links have been copied to your clipboard.`),
+ });
+ });
+ };
+
+ useEffect(() => {
+ if (actionSearchParam === 'view-signing-links') {
+ setOpen(true);
+ updateSearchParams({ action: null });
+ }
+ }, [actionSearchParam, open, setOpen, updateSearchParams]);
+
+ return (
+ setOpen(value)}>
+ e.stopPropagation()}>
+ {trigger}
+
+
+
+
+
+ Copy Signing Links
+
+
+
+
+ You can copy and share these links to recipients so they can action the document.
+
+
+
+
+
+ {recipients.length === 0 && (
+
+ No recipients
+
+ )}
+
+ {recipients.map((recipient) => (
+
+ {recipient.email}}
+ secondaryText={
+
+ {_(RECIPIENT_ROLES_DESCRIPTION[recipient.role].roleName)}
+
+ }
+ />
+
+ {recipient.role !== RecipientRole.CC && (
+ {
+ toast({
+ title: _(msg`Copied to clipboard`),
+ description: _(msg`The signing link has been copied to your clipboard.`),
+ });
+ }}
+ badgeContentUncopied={
+
+ Copy
+
+ }
+ badgeContentCopied={
+
+ Copied
+
+ }
+ />
+ )}
+
+ ))}
+
+
+
+
+
+ Close
+
+
+
+
+ Bulk Copy
+
+
+
+
+ );
+};
diff --git a/apps/web/src/components/forms/search-param-selector.tsx b/apps/web/src/components/forms/search-param-selector.tsx
new file mode 100644
index 000000000..cdd4ef2b2
--- /dev/null
+++ b/apps/web/src/components/forms/search-param-selector.tsx
@@ -0,0 +1,50 @@
+import React, { useMemo } from 'react';
+
+import { usePathname, useRouter, useSearchParams } from 'next/navigation';
+
+import { Select, SelectContent, SelectTrigger, SelectValue } from '@documenso/ui/primitives/select';
+
+export type SearchParamSelector = {
+ paramKey: string;
+ isValueValid: (value: unknown) => boolean;
+ children: React.ReactNode;
+};
+
+export const SearchParamSelector = ({ children, paramKey, isValueValid }: SearchParamSelector) => {
+ const pathname = usePathname();
+ const searchParams = useSearchParams();
+
+ const router = useRouter();
+
+ const value = useMemo(() => {
+ const p = searchParams?.get(paramKey) ?? 'all';
+
+ return isValueValid(p) ? p : 'all';
+ }, [searchParams]);
+
+ const onValueChange = (newValue: string) => {
+ if (!pathname) {
+ return;
+ }
+
+ const params = new URLSearchParams(searchParams?.toString());
+
+ params.set(paramKey, newValue);
+
+ if (newValue === '' || newValue === 'all') {
+ params.delete(paramKey);
+ }
+
+ router.push(`${pathname}?${params.toString()}`, { scroll: false });
+ };
+
+ return (
+
+
+
+
+
+ {children}
+
+ );
+};
diff --git a/apps/web/src/components/forms/token.tsx b/apps/web/src/components/forms/token.tsx
index b042bd937..a28aa21e0 100644
--- a/apps/web/src/components/forms/token.tsx
+++ b/apps/web/src/components/forms/token.tsx
@@ -202,7 +202,7 @@ export const ApiTokenForm = ({ className, teamId, tokens }: ApiTokenFormProps) =
{Object.entries(EXPIRATION_DATES).map(([key, date]) => (
- {date}
+ {_(date)}
))}
diff --git a/apps/web/src/components/general/signing-disclosure.tsx b/apps/web/src/components/general/signing-disclosure.tsx
index bd1ef9707..a6257d35f 100644
--- a/apps/web/src/components/general/signing-disclosure.tsx
+++ b/apps/web/src/components/general/signing-disclosure.tsx
@@ -2,6 +2,8 @@ import type { HTMLAttributes } from 'react';
import Link from 'next/link';
+import { Trans } from '@lingui/macro';
+
import { cn } from '@documenso/ui/lib/utils';
export type SigningDisclosureProps = HTMLAttributes;
@@ -9,20 +11,24 @@ export type SigningDisclosureProps = HTMLAttributes;
export const SigningDisclosure = ({ className, ...props }: SigningDisclosureProps) => {
return (
- By proceeding with your electronic signature, you acknowledge and consent that it will be used
- to sign the given document and holds the same legal validity as a handwritten signature. By
- completing the electronic signing process, you affirm your understanding and acceptance of
- these conditions.
+
+ By proceeding with your electronic signature, you acknowledge and consent that it will be
+ used to sign the given document and holds the same legal validity as a handwritten
+ signature. By completing the electronic signing process, you affirm your understanding and
+ acceptance of these conditions.
+
- Read the full{' '}
-
- signature disclosure
-
- .
+
+ Read the full{' '}
+
+ signature disclosure
+
+ .
+
);
diff --git a/apps/web/src/pages/api/branding/logo/team/[teamId].ts b/apps/web/src/pages/api/branding/logo/team/[teamId].ts
new file mode 100644
index 000000000..6751f6abe
--- /dev/null
+++ b/apps/web/src/pages/api/branding/logo/team/[teamId].ts
@@ -0,0 +1,59 @@
+import type { NextApiRequest, NextApiResponse } from 'next';
+
+import sharp from 'sharp';
+
+import { getFile } from '@documenso/lib/universal/upload/get-file';
+import { prisma } from '@documenso/prisma';
+
+export default async function handler(req: NextApiRequest, res: NextApiResponse) {
+ const teamId = Number(req.query['teamId']);
+
+ if (teamId === 0 || Number.isNaN(teamId)) {
+ return res.status(400).json({
+ status: 'error',
+ message: 'Invalid team ID',
+ });
+ }
+
+ const settings = await prisma.teamGlobalSettings.findFirst({
+ where: {
+ teamId,
+ },
+ });
+
+ if (!settings || !settings.brandingEnabled) {
+ return res.status(404).json({
+ status: 'error',
+ message: 'Not found',
+ });
+ }
+
+ if (!settings.brandingLogo) {
+ return res.status(404).json({
+ status: 'error',
+ message: 'Not found',
+ });
+ }
+
+ const file = await getFile(JSON.parse(settings.brandingLogo)).catch(() => null);
+
+ if (!file) {
+ return res.status(404).json({
+ status: 'error',
+ message: 'Not found',
+ });
+ }
+
+ const img = await sharp(file)
+ .toFormat('png', {
+ quality: 80,
+ })
+ .toBuffer();
+
+ res.setHeader('Content-Type', 'image/png');
+ res.setHeader('Content-Length', img.length);
+ // Stale while revalidate for 1 hours to 24 hours
+ res.setHeader('Cache-Control', 'public, s-maxage=3600, stale-while-revalidate=86400');
+
+ res.status(200).send(img);
+}
diff --git a/docker/production/compose.yml b/docker/production/compose.yml
index bd2b9597e..505228b24 100644
--- a/docker/production/compose.yml
+++ b/docker/production/compose.yml
@@ -50,6 +50,7 @@ services:
- NEXT_PRIVATE_SMTP_SECURE=${NEXT_PRIVATE_SMTP_SECURE}
- NEXT_PRIVATE_SMTP_FROM_NAME=${NEXT_PRIVATE_SMTP_FROM_NAME:?err}
- NEXT_PRIVATE_SMTP_FROM_ADDRESS=${NEXT_PRIVATE_SMTP_FROM_ADDRESS:?err}
+ - NEXT_PRIVATE_SMTP_SERVICE=${NEXT_PRIVATE_SMTP_SERVICE}
- NEXT_PRIVATE_RESEND_API_KEY=${NEXT_PRIVATE_RESEND_API_KEY}
- NEXT_PRIVATE_MAILCHANNELS_API_KEY=${NEXT_PRIVATE_MAILCHANNELS_API_KEY}
- NEXT_PRIVATE_MAILCHANNELS_ENDPOINT=${NEXT_PRIVATE_MAILCHANNELS_ENDPOINT}
@@ -60,6 +61,7 @@ services:
- NEXT_PUBLIC_POSTHOG_KEY=${NEXT_PUBLIC_POSTHOG_KEY}
- NEXT_PUBLIC_DISABLE_SIGNUP=${NEXT_PUBLIC_DISABLE_SIGNUP}
- NEXT_PRIVATE_SIGNING_LOCAL_FILE_PATH=${NEXT_PRIVATE_SIGNING_LOCAL_FILE_PATH:-/opt/documenso/cert.p12}
+ - NEXT_PRIVATE_SIGNING_PASSPHRASE=${NEXT_PRIVATE_SIGNING_PASSPHRASE}
ports:
- ${PORT:-3000}:${PORT:-3000}
volumes:
diff --git a/lingui.config.ts b/lingui.config.ts
index 855aaf7f5..8026d461f 100644
--- a/lingui.config.ts
+++ b/lingui.config.ts
@@ -19,7 +19,7 @@ const config: LinguiConfig = {
},
{
path: '/packages/lib/translations/{locale}/common',
- include: ['packages/ui', 'packages/lib'],
+ include: ['packages/ui', 'packages/lib', 'packages/email'],
exclude: ['**/node_modules/**'],
},
],
diff --git a/package-lock.json b/package-lock.json
index 4f804a363..fd2842078 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "@documenso/root",
- "version": "1.7.2-rc.0",
+ "version": "1.8.1-rc.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@documenso/root",
- "version": "1.7.2-rc.0",
+ "version": "1.8.1-rc.0",
"workspaces": [
"apps/*",
"packages/*"
@@ -80,7 +80,7 @@
},
"apps/marketing": {
"name": "@documenso/marketing",
- "version": "1.7.2-rc.0",
+ "version": "1.8.1-rc.0",
"license": "AGPL-3.0",
"dependencies": {
"@documenso/assets": "*",
@@ -441,7 +441,7 @@
},
"apps/web": {
"name": "@documenso/web",
- "version": "1.7.2-rc.0",
+ "version": "1.8.1-rc.0",
"license": "AGPL-3.0",
"dependencies": {
"@documenso/api": "*",
@@ -10044,11 +10044,19 @@
"node": ">=10"
}
},
+ "node_modules/@tailwindcss/container-queries": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/container-queries/-/container-queries-0.1.1.tgz",
+ "integrity": "sha512-p18dswChx6WnTSaJCSGx6lTmrGzNNvm2FtXmiO6AuA1V4U5REyoqwmT6kgAsIMdjo07QdAfYXHJ4hnMtfHzWgA==",
+ "license": "MIT",
+ "peerDependencies": {
+ "tailwindcss": ">=3.2.0"
+ }
+ },
"node_modules/@tailwindcss/typography": {
"version": "0.5.10",
"resolved": "https://registry.npmjs.org/@tailwindcss/typography/-/typography-0.5.10.tgz",
"integrity": "sha512-Pe8BuPJQJd3FfRnm6H0ulKIGoMEQS+Vq01R6M5aCrFB/ccR/shT+0kXLjouGC1gFLm9hopTFN+DMP0pfwRWzPw==",
- "dev": true,
"dependencies": {
"lodash.castarray": "^4.4.0",
"lodash.isplainobject": "^4.0.6",
@@ -21883,8 +21891,7 @@
"node_modules/lodash.castarray": {
"version": "4.4.0",
"resolved": "https://registry.npmjs.org/lodash.castarray/-/lodash.castarray-4.4.0.tgz",
- "integrity": "sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==",
- "dev": true
+ "integrity": "sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q=="
},
"node_modules/lodash.clonedeep": {
"version": "4.5.0",
@@ -21929,8 +21936,7 @@
"node_modules/lodash.isplainobject": {
"version": "4.0.6",
"resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
- "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==",
- "dev": true
+ "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA=="
},
"node_modules/lodash.kebabcase": {
"version": "4.1.1",
@@ -27014,7 +27020,6 @@
"version": "6.0.10",
"resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz",
"integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==",
- "dev": true,
"dependencies": {
"cssesc": "^3.0.0",
"util-deprecate": "^1.0.2"
@@ -36774,6 +36779,9 @@
"@documenso/email": "*",
"@documenso/prisma": "*",
"@documenso/signing": "*",
+ "@lingui/core": "^4.11.3",
+ "@lingui/macro": "^4.11.3",
+ "@lingui/react": "^4.11.3",
"@next-auth/prisma-adapter": "1.0.7",
"@noble/ciphers": "0.4.0",
"@noble/hashes": "1.3.2",
@@ -36913,14 +36921,14 @@
"version": "0.0.0",
"license": "MIT",
"dependencies": {
+ "@tailwindcss/container-queries": "^0.1.1",
+ "@tailwindcss/typography": "^0.5.9",
"autoprefixer": "^10.4.13",
"postcss": "^8.4.32",
"tailwindcss": "3.3.2",
"tailwindcss-animate": "^1.0.5"
},
- "devDependencies": {
- "@tailwindcss/typography": "^0.5.9"
- }
+ "devDependencies": {}
},
"packages/tailwind-config/node_modules/postcss": {
"version": "8.4.32",
diff --git a/package.json b/package.json
index 92bcb46c0..29f0fb6bd 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"private": true,
- "version": "1.7.2-rc.0",
+ "version": "1.8.1-rc.0",
"scripts": {
"build": "turbo run build",
"build:web": "turbo run build --filter=@documenso/web",
diff --git a/packages/api/v1/contract.ts b/packages/api/v1/contract.ts
index d6f8000a4..c21358c28 100644
--- a/packages/api/v1/contract.ts
+++ b/packages/api/v1/contract.ts
@@ -12,10 +12,12 @@ import {
ZDeleteFieldMutationSchema,
ZDeleteRecipientMutationSchema,
ZDownloadDocumentSuccessfulSchema,
+ ZFindTeamMembersResponseSchema,
ZGenerateDocumentFromTemplateMutationResponseSchema,
ZGenerateDocumentFromTemplateMutationSchema,
ZGetDocumentsQuerySchema,
ZGetTemplatesQuerySchema,
+ ZInviteTeamMemberMutationSchema,
ZNoBodyMutationSchema,
ZResendDocumentForSigningMutationSchema,
ZSendDocumentForSigningMutationSchema,
@@ -26,13 +28,17 @@ import {
ZSuccessfulGetDocumentResponseSchema,
ZSuccessfulGetTemplateResponseSchema,
ZSuccessfulGetTemplatesResponseSchema,
+ ZSuccessfulInviteTeamMemberResponseSchema,
ZSuccessfulRecipientResponseSchema,
+ ZSuccessfulRemoveTeamMemberResponseSchema,
ZSuccessfulResendDocumentResponseSchema,
ZSuccessfulResponseSchema,
ZSuccessfulSigningResponseSchema,
+ ZSuccessfulUpdateTeamMemberResponseSchema,
ZUnsuccessfulResponseSchema,
ZUpdateFieldMutationSchema,
ZUpdateRecipientMutationSchema,
+ ZUpdateTeamMemberMutationSchema,
} from './schema';
const c = initContract();
@@ -162,6 +168,9 @@ export const ApiContractV1 = c.router(
500: ZUnsuccessfulResponseSchema,
},
summary: 'Send a document for signing',
+ // I'm aware this should be in the variable itself, which it is, however it's difficult for users to find in our current UI.
+ description:
+ 'Notes\n\n`sendEmail` - Whether to send an email to the recipients asking them to action the document. If you disable this, you will need to manually distribute the document to the recipients using the generated signing links. Defaults to true',
},
resendDocument: {
@@ -273,6 +282,61 @@ export const ApiContractV1 = c.router(
},
summary: 'Delete a field from a document',
},
+
+ findTeamMembers: {
+ method: 'GET',
+ path: '/api/v1/team/:id/members',
+ responses: {
+ 200: ZFindTeamMembersResponseSchema,
+ 400: ZUnsuccessfulResponseSchema,
+ 401: ZUnsuccessfulResponseSchema,
+ 404: ZUnsuccessfulResponseSchema,
+ 500: ZUnsuccessfulResponseSchema,
+ },
+ summary: 'List team members',
+ },
+
+ inviteTeamMember: {
+ method: 'POST',
+ path: '/api/v1/team/:id/members/invite',
+ body: ZInviteTeamMemberMutationSchema,
+ responses: {
+ 200: ZSuccessfulInviteTeamMemberResponseSchema,
+ 400: ZUnsuccessfulResponseSchema,
+ 401: ZUnsuccessfulResponseSchema,
+ 404: ZUnsuccessfulResponseSchema,
+ 500: ZUnsuccessfulResponseSchema,
+ },
+ summary: 'Invite a member to a team',
+ },
+
+ updateTeamMember: {
+ method: 'PUT',
+ path: '/api/v1/team/:id/members/:memberId',
+ body: ZUpdateTeamMemberMutationSchema,
+ responses: {
+ 200: ZSuccessfulUpdateTeamMemberResponseSchema,
+ 400: ZUnsuccessfulResponseSchema,
+ 401: ZUnsuccessfulResponseSchema,
+ 404: ZUnsuccessfulResponseSchema,
+ 500: ZUnsuccessfulResponseSchema,
+ },
+ summary: 'Update a team member',
+ },
+
+ removeTeamMember: {
+ method: 'DELETE',
+ path: '/api/v1/team/:id/members/:memberId',
+ body: null,
+ responses: {
+ 200: ZSuccessfulRemoveTeamMemberResponseSchema,
+ 400: ZUnsuccessfulResponseSchema,
+ 401: ZUnsuccessfulResponseSchema,
+ 404: ZUnsuccessfulResponseSchema,
+ 500: ZUnsuccessfulResponseSchema,
+ },
+ summary: 'Remove a member from a team',
+ },
},
{
baseHeaders: ZAuthorizationHeadersSchema,
diff --git a/packages/api/v1/implementation.ts b/packages/api/v1/implementation.ts
index 914138028..fda6ad1a4 100644
--- a/packages/api/v1/implementation.ts
+++ b/packages/api/v1/implementation.ts
@@ -26,6 +26,8 @@ import { getRecipientById } from '@documenso/lib/server-only/recipient/get-recip
import { getRecipientsForDocument } from '@documenso/lib/server-only/recipient/get-recipients-for-document';
import { setRecipientsForDocument } from '@documenso/lib/server-only/recipient/set-recipients-for-document';
import { updateRecipient } from '@documenso/lib/server-only/recipient/update-recipient';
+import { createTeamMemberInvites } from '@documenso/lib/server-only/team/create-team-member-invites';
+import { deleteTeamMembers } from '@documenso/lib/server-only/team/delete-team-members';
import type { CreateDocumentFromTemplateResponse } from '@documenso/lib/server-only/template/create-document-from-template';
import { createDocumentFromTemplate } from '@documenso/lib/server-only/template/create-document-from-template';
import { createDocumentFromTemplateLegacy } from '@documenso/lib/server-only/template/create-document-from-template-legacy';
@@ -49,7 +51,12 @@ import {
} from '@documenso/lib/universal/upload/server-actions';
import { createDocumentAuditLogData } from '@documenso/lib/utils/document-audit-logs';
import { prisma } from '@documenso/prisma';
-import { DocumentDataType, DocumentStatus, SigningStatus } from '@documenso/prisma/client';
+import {
+ DocumentDataType,
+ DocumentStatus,
+ SigningStatus,
+ TeamMemberRole,
+} from '@documenso/prisma/client';
import { ApiContractV1 } from './contract';
import { authenticatedMiddleware } from './middleware/authenticated';
@@ -294,6 +301,7 @@ export const ApiContractV1Implementation = createNextRoute(ApiContractV1, {
dateFormat: dateFormat?.value,
redirectUrl: body.meta.redirectUrl,
signingOrder: body.meta.signingOrder,
+ language: body.meta.language,
requestMetadata: extractNextApiRequestMetadata(args.req),
});
@@ -1279,4 +1287,270 @@ export const ApiContractV1Implementation = createNextRoute(ApiContractV1, {
},
};
}),
+
+ findTeamMembers: authenticatedMiddleware(async (args, user, team) => {
+ const { id: teamId } = args.params;
+
+ if (team?.id !== Number(teamId)) {
+ return {
+ status: 403,
+ body: {
+ message: 'You are not authorized to perform actions against this team.',
+ },
+ };
+ }
+
+ const self = await prisma.teamMember.findFirst({
+ where: {
+ userId: user.id,
+ teamId: team.id,
+ },
+ });
+
+ if (self?.role !== TeamMemberRole.ADMIN) {
+ return {
+ status: 403,
+ body: {
+ message: 'You are not authorized to perform actions against this team.',
+ },
+ };
+ }
+
+ const members = await prisma.teamMember.findMany({
+ where: {
+ teamId: team.id,
+ },
+ include: {
+ user: true,
+ },
+ });
+
+ return {
+ status: 200,
+ body: {
+ members: members.map((member) => ({
+ id: member.id,
+ email: member.user.email,
+ role: member.role,
+ })),
+ },
+ };
+ }),
+
+ inviteTeamMember: authenticatedMiddleware(async (args, user, team) => {
+ const { id: teamId } = args.params;
+
+ const { email, role } = args.body;
+
+ if (team?.id !== Number(teamId)) {
+ return {
+ status: 403,
+ body: {
+ message: 'You are not authorized to perform actions against this team.',
+ },
+ };
+ }
+
+ const self = await prisma.teamMember.findFirst({
+ where: {
+ userId: user.id,
+ teamId: team.id,
+ },
+ });
+
+ if (self?.role !== TeamMemberRole.ADMIN) {
+ return {
+ status: 403,
+ body: {
+ message: 'You are not authorized to perform actions against this team.',
+ },
+ };
+ }
+
+ const hasAlreadyBeenInvited = await prisma.teamMember.findFirst({
+ where: {
+ teamId: team.id,
+ user: {
+ email,
+ },
+ },
+ });
+
+ if (hasAlreadyBeenInvited) {
+ return {
+ status: 400,
+ body: {
+ message: 'This user has already been invited to the team',
+ },
+ };
+ }
+
+ await createTeamMemberInvites({
+ userId: user.id,
+ userName: user.name ?? '',
+ teamId: team.id,
+ invitations: [
+ {
+ email,
+ role,
+ },
+ ],
+ });
+
+ return {
+ status: 200,
+ body: {
+ message: 'An invite has been sent to the member',
+ },
+ };
+ }),
+
+ updateTeamMember: authenticatedMiddleware(async (args, user, team) => {
+ const { id: teamId, memberId } = args.params;
+
+ const { role } = args.body;
+
+ if (team?.id !== Number(teamId)) {
+ return {
+ status: 403,
+ body: {
+ message: 'You are not authorized to perform actions against this team.',
+ },
+ };
+ }
+
+ const self = await prisma.teamMember.findFirst({
+ where: {
+ userId: user.id,
+ teamId: team.id,
+ },
+ });
+
+ if (self?.role !== TeamMemberRole.ADMIN) {
+ return {
+ status: 403,
+ body: {
+ message: 'You are not authorized to perform actions against this team.',
+ },
+ };
+ }
+
+ const member = await prisma.teamMember.findFirst({
+ where: {
+ id: Number(memberId),
+ teamId: team.id,
+ },
+ });
+
+ if (!member) {
+ return {
+ status: 404,
+ body: {
+ message: 'The provided member id does not exist.',
+ },
+ };
+ }
+
+ const updatedMember = await prisma.teamMember.update({
+ where: {
+ id: member.id,
+ },
+ data: {
+ role,
+ },
+ include: {
+ user: true,
+ },
+ });
+
+ return {
+ status: 200,
+ body: {
+ id: updatedMember.id,
+ email: updatedMember.user.email,
+ role: updatedMember.role,
+ },
+ };
+ }),
+
+ removeTeamMember: authenticatedMiddleware(async (args, user, team) => {
+ const { id: teamId, memberId } = args.params;
+
+ if (team?.id !== Number(teamId)) {
+ return {
+ status: 403,
+ body: {
+ message: 'You are not authorized to perform actions against this team.',
+ },
+ };
+ }
+
+ const self = await prisma.teamMember.findFirst({
+ where: {
+ userId: user.id,
+ teamId: team.id,
+ },
+ });
+
+ if (self?.role !== TeamMemberRole.ADMIN) {
+ return {
+ status: 403,
+ body: {
+ message: 'You are not authorized to perform actions against this team.',
+ },
+ };
+ }
+
+ const member = await prisma.teamMember.findFirst({
+ where: {
+ id: Number(memberId),
+ teamId: Number(teamId),
+ },
+ include: {
+ user: true,
+ },
+ });
+
+ if (!member) {
+ return {
+ status: 404,
+ body: {
+ message: 'Member not found',
+ },
+ };
+ }
+
+ if (team.ownerUserId === member.userId) {
+ return {
+ status: 403,
+ body: {
+ message: 'You cannot remove the owner of the team',
+ },
+ };
+ }
+
+ if (member.userId === user.id) {
+ return {
+ status: 403,
+ body: {
+ message: 'You cannot remove yourself from the team',
+ },
+ };
+ }
+
+ await deleteTeamMembers({
+ userId: user.id,
+ teamId: team.id,
+ teamMemberIds: [member.id],
+ });
+
+ return {
+ status: 200,
+ body: {
+ id: member.id,
+ email: member.user.email,
+ role: member.role,
+ },
+ };
+ }),
});
diff --git a/packages/api/v1/schema.ts b/packages/api/v1/schema.ts
index 2802a9164..87e17ba8b 100644
--- a/packages/api/v1/schema.ts
+++ b/packages/api/v1/schema.ts
@@ -2,6 +2,7 @@ import { extendZodWithOpenApi } from '@anatine/zod-openapi';
import { z } from 'zod';
import { DATE_FORMATS, DEFAULT_DOCUMENT_DATE_FORMAT } from '@documenso/lib/constants/date-formats';
+import { SUPPORTED_LANGUAGE_CODES } from '@documenso/lib/constants/i18n';
import '@documenso/lib/constants/time-zones';
import { DEFAULT_DOCUMENT_TIME_ZONE, TIME_ZONES } from '@documenso/lib/constants/time-zones';
import { ZUrlSchema } from '@documenso/lib/schemas/common';
@@ -19,6 +20,7 @@ import {
RecipientRole,
SendStatus,
SigningStatus,
+ TeamMemberRole,
TemplateType,
} from '@documenso/prisma/client';
@@ -65,7 +67,10 @@ export type TSuccessfulDocumentResponseSchema = z.infer ({ sendEmail: true })));
@@ -126,6 +131,7 @@ export const ZCreateDocumentMutationSchema = z.object({
}),
redirectUrl: z.string(),
signingOrder: z.nativeEnum(DocumentSigningOrder).optional(),
+ language: z.enum(SUPPORTED_LANGUAGE_CODES).optional(),
})
.partial(),
authOptions: z
@@ -180,6 +186,7 @@ export const ZCreateDocumentFromTemplateMutationSchema = z.object({
dateFormat: z.string(),
redirectUrl: z.string(),
signingOrder: z.nativeEnum(DocumentSigningOrder).optional(),
+ language: z.enum(SUPPORTED_LANGUAGE_CODES).optional(),
})
.partial()
.optional(),
@@ -246,6 +253,7 @@ export const ZGenerateDocumentFromTemplateMutationSchema = z.object({
dateFormat: z.string(),
redirectUrl: ZUrlSchema,
signingOrder: z.nativeEnum(DocumentSigningOrder).optional(),
+ language: z.enum(SUPPORTED_LANGUAGE_CODES).optional(),
})
.partial()
.optional(),
@@ -532,3 +540,41 @@ export const ZGetTemplatesQuerySchema = z.object({
page: z.coerce.number().min(1).optional().default(1),
perPage: z.coerce.number().min(1).optional().default(1),
});
+
+export const ZFindTeamMembersResponseSchema = z.object({
+ members: z.array(
+ z.object({
+ id: z.number(),
+ email: z.string().email(),
+ role: z.nativeEnum(TeamMemberRole),
+ }),
+ ),
+});
+
+export const ZInviteTeamMemberMutationSchema = z.object({
+ email: z
+ .string()
+ .email()
+ .transform((email) => email.toLowerCase()),
+ role: z.nativeEnum(TeamMemberRole).optional().default(TeamMemberRole.MEMBER),
+});
+
+export const ZSuccessfulInviteTeamMemberResponseSchema = z.object({
+ message: z.string(),
+});
+
+export const ZUpdateTeamMemberMutationSchema = z.object({
+ role: z.nativeEnum(TeamMemberRole),
+});
+
+export const ZSuccessfulUpdateTeamMemberResponseSchema = z.object({
+ id: z.number(),
+ email: z.string().email(),
+ role: z.nativeEnum(TeamMemberRole),
+});
+
+export const ZSuccessfulRemoveTeamMemberResponseSchema = z.object({
+ id: z.number(),
+ email: z.string().email(),
+ role: z.nativeEnum(TeamMemberRole),
+});
diff --git a/packages/app-tests/e2e/api/v1/team-user-management.spec.ts b/packages/app-tests/e2e/api/v1/team-user-management.spec.ts
new file mode 100644
index 000000000..c527fcfe1
--- /dev/null
+++ b/packages/app-tests/e2e/api/v1/team-user-management.spec.ts
@@ -0,0 +1,278 @@
+import { expect, test } from '@playwright/test';
+
+import {
+ ZFindTeamMembersResponseSchema,
+ ZSuccessfulInviteTeamMemberResponseSchema,
+ ZSuccessfulRemoveTeamMemberResponseSchema,
+ ZSuccessfulUpdateTeamMemberResponseSchema,
+ ZUnsuccessfulResponseSchema,
+} from '@documenso/api/v1/schema';
+import { WEBAPP_BASE_URL } from '@documenso/lib/constants/app';
+import { createApiToken } from '@documenso/lib/server-only/public-api/create-api-token';
+import { prisma } from '@documenso/prisma';
+import { TeamMemberRole } from '@documenso/prisma/client';
+import { seedTeam } from '@documenso/prisma/seed/teams';
+import { seedUser } from '@documenso/prisma/seed/users';
+
+test.describe('Team API', () => {
+ test('findTeamMembers: should list team members', async ({ request }) => {
+ const team = await seedTeam({
+ createTeamMembers: 3,
+ });
+
+ const ownerMember = team.members.find((member) => member.userId === team.owner.id)!;
+
+ // Should not be undefined
+ expect(ownerMember).toBeTruthy();
+
+ const { token } = await createApiToken({
+ userId: team.owner.id,
+ teamId: team.id,
+ tokenName: 'test',
+ expiresIn: null,
+ });
+
+ const response = await request.get(`${WEBAPP_BASE_URL}/api/v1/team/${team.id}/members`, {
+ headers: {
+ Authorization: `Bearer ${token}`,
+ },
+ });
+
+ expect(response.ok()).toBeTruthy();
+ expect(response.status()).toBe(200);
+
+ const data = await response.json();
+
+ const parsed = ZFindTeamMembersResponseSchema.safeParse(data);
+
+ const safeData = parsed.success ? parsed.data : null;
+
+ expect(parsed.success).toBeTruthy();
+
+ expect(safeData!.members).toHaveLength(4); // Owner + 3 members
+ expect(safeData!.members[0]).toHaveProperty('id');
+ expect(safeData!.members[0]).toHaveProperty('email');
+ expect(safeData!.members[0]).toHaveProperty('role');
+
+ expect(safeData!.members).toContainEqual({
+ id: ownerMember.id,
+ email: ownerMember.user.email,
+ role: ownerMember.role,
+ });
+ });
+
+ test('inviteTeamMember: should invite a new team member', async ({ request }) => {
+ const team = await seedTeam();
+
+ const { token } = await createApiToken({
+ userId: team.owner.id,
+ teamId: team.id,
+ tokenName: 'test',
+ expiresIn: null,
+ });
+
+ const newUser = await seedUser();
+
+ const response = await request.post(
+ `${WEBAPP_BASE_URL}/api/v1/team/${team.id}/members/invite`,
+ {
+ headers: {
+ Authorization: `Bearer ${token}`,
+ 'Content-Type': 'application/json',
+ },
+ data: {
+ email: newUser.email,
+ role: TeamMemberRole.MEMBER,
+ },
+ },
+ );
+
+ expect(response.ok()).toBeTruthy();
+
+ const data = await response.json();
+
+ const parsed = ZSuccessfulInviteTeamMemberResponseSchema.safeParse(data);
+
+ const safeData = parsed.success ? parsed.data : null;
+
+ expect(parsed.success).toBeTruthy();
+ expect(safeData!.message).toBe('An invite has been sent to the member');
+
+ const invite = await prisma.teamMemberInvite.findFirst({
+ where: {
+ email: newUser.email,
+ teamId: team.id,
+ },
+ });
+
+ expect(invite).toBeTruthy();
+ });
+
+ test('updateTeamMember: should update a team member role', async ({ request }) => {
+ const team = await seedTeam({
+ createTeamMembers: 3,
+ });
+
+ const { token } = await createApiToken({
+ userId: team.owner.id,
+ teamId: team.id,
+ tokenName: 'test',
+ expiresIn: null,
+ });
+
+ const member = team.members.find((member) => member.role === TeamMemberRole.MEMBER)!;
+
+ // Should not be undefined
+ expect(member).toBeTruthy();
+
+ const response = await request.put(
+ `${WEBAPP_BASE_URL}/api/v1/team/${team.id}/members/${member.id}`,
+ {
+ headers: {
+ Authorization: `Bearer ${token}`,
+ 'Content-Type': 'application/json',
+ },
+ data: {
+ role: TeamMemberRole.ADMIN,
+ },
+ },
+ );
+
+ expect(response.ok()).toBeTruthy();
+
+ const data = await response.json();
+
+ const parsed = ZSuccessfulUpdateTeamMemberResponseSchema.safeParse(data);
+
+ const safeData = parsed.success ? parsed.data : null;
+
+ expect(parsed.success).toBeTruthy();
+
+ expect(safeData!.id).toBe(member.id);
+ expect(safeData!.email).toBe(member.user.email);
+ expect(safeData!.role).toBe(TeamMemberRole.ADMIN);
+ });
+
+ test('removeTeamMember: should remove a team member', async ({ request }) => {
+ const team = await seedTeam({
+ createTeamMembers: 3,
+ });
+
+ const { token } = await createApiToken({
+ userId: team.owner.id,
+ teamId: team.id,
+ tokenName: 'test',
+ expiresIn: null,
+ });
+
+ const member = team.members.find((member) => member.role === TeamMemberRole.MEMBER)!;
+
+ // Should not be undefined
+ expect(member).toBeTruthy();
+
+ const response = await request.delete(
+ `${WEBAPP_BASE_URL}/api/v1/team/${team.id}/members/${member.id}`,
+ {
+ headers: {
+ Authorization: `Bearer ${token}`,
+ },
+ },
+ );
+
+ expect(response.status()).toBe(200);
+
+ const data = await response.json();
+
+ const parsed = ZSuccessfulRemoveTeamMemberResponseSchema.safeParse(data);
+
+ const safeData = parsed.success ? parsed.data : null;
+
+ expect(parsed.success).toBeTruthy();
+
+ expect(safeData!.id).toBe(member.id);
+ expect(safeData!.email).toBe(member.user.email);
+ expect(safeData!.role).toBe(member.role);
+
+ const removedMemberCount = await prisma.teamMember.count({
+ where: {
+ id: member.id,
+ teamId: team.id,
+ },
+ });
+
+ expect(removedMemberCount).toBe(0);
+ });
+
+ test('removeTeamMember: should not remove team owner', async ({ request }) => {
+ const team = await seedTeam({
+ createTeamMembers: 3,
+ });
+
+ const { token } = await createApiToken({
+ userId: team.owner.id,
+ teamId: team.id,
+ tokenName: 'test',
+ expiresIn: null,
+ });
+
+ const ownerMember = team.members.find((member) => member.userId === team.owner.id)!;
+
+ // Should not be undefined
+ expect(ownerMember).toBeTruthy();
+
+ const response = await request.delete(
+ `${WEBAPP_BASE_URL}/api/v1/team/${team.id}/members/${ownerMember.id}`,
+ {
+ headers: {
+ Authorization: `Bearer ${token}`,
+ },
+ },
+ );
+
+ expect(response.status()).toBe(403);
+
+ const parsed = ZUnsuccessfulResponseSchema.safeParse(await response.json());
+
+ expect(parsed.success).toBeTruthy();
+ });
+
+ test('removeTeamMember: should not remove self', async ({ request }) => {
+ const team = await seedTeam({
+ createTeamMembers: 3,
+ });
+
+ const member = team.members.find((member) => member.role === TeamMemberRole.MEMBER)!;
+
+ // Make our non-owner member an admin
+ await prisma.teamMember.update({
+ where: {
+ id: member.id,
+ },
+ data: {
+ role: TeamMemberRole.ADMIN,
+ },
+ });
+
+ const { token } = await createApiToken({
+ userId: member.userId,
+ teamId: team.id,
+ tokenName: 'test',
+ expiresIn: null,
+ });
+
+ const response = await request.delete(
+ `${WEBAPP_BASE_URL}/api/v1/team/${team.id}/members/${member.id}`,
+ {
+ headers: {
+ Authorization: `Bearer ${token}`,
+ },
+ },
+ );
+
+ expect(response.status()).toBe(403);
+
+ const parsed = ZUnsuccessfulResponseSchema.safeParse(await response.json());
+
+ expect(parsed.success).toBeTruthy();
+ });
+});
diff --git a/packages/app-tests/e2e/document-auth/action-auth.spec.ts b/packages/app-tests/e2e/document-auth/action-auth.spec.ts
index 7a30d585d..15bbd9d82 100644
--- a/packages/app-tests/e2e/document-auth/action-auth.spec.ts
+++ b/packages/app-tests/e2e/document-auth/action-auth.spec.ts
@@ -36,7 +36,7 @@ test('[DOCUMENT_AUTH]: should allow signing when no auth setup', async ({ page }
await expect(page.getByRole('heading', { name: 'Sign Document' })).toBeVisible();
// Add signature.
- const canvas = page.locator('canvas');
+ const canvas = page.locator('canvas').first();
const box = await canvas.boundingBox();
if (box) {
await page.mouse.move(box.x + box.width / 2, box.y + box.height / 2);
@@ -93,7 +93,7 @@ test('[DOCUMENT_AUTH]: should allow signing with valid global auth', async ({ pa
await expect(page.getByRole('heading', { name: 'Sign Document' })).toBeVisible();
// Add signature.
- const canvas = page.locator('canvas');
+ const canvas = page.locator('canvas').first();
const box = await canvas.boundingBox();
if (box) {
await page.mouse.move(box.x + box.width / 2, box.y + box.height / 2);
@@ -262,7 +262,7 @@ test('[DOCUMENT_AUTH]: should allow field signing when required for recipient au
}
// Add signature.
- const canvas = page.locator('canvas');
+ const canvas = page.locator('canvas').first();
const box = await canvas.boundingBox();
if (box) {
await page.mouse.move(box.x + box.width / 2, box.y + box.height / 2);
@@ -373,7 +373,7 @@ test('[DOCUMENT_AUTH]: should allow field signing when required for recipient an
}
// Add signature.
- const canvas = page.locator('canvas');
+ const canvas = page.locator('canvas').first();
const box = await canvas.boundingBox();
if (box) {
await page.mouse.move(box.x + box.width / 2, box.y + box.height / 2);
diff --git a/packages/app-tests/e2e/document-flow/stepper-component.spec.ts b/packages/app-tests/e2e/document-flow/stepper-component.spec.ts
index d276ee36b..686346fba 100644
--- a/packages/app-tests/e2e/document-flow/stepper-component.spec.ts
+++ b/packages/app-tests/e2e/document-flow/stepper-component.spec.ts
@@ -106,7 +106,7 @@ test('[DOCUMENT_FLOW]: should be able to create a document', async ({ page }) =>
await page.getByRole('button', { name: 'Continue' }).click();
// Add subject and send
- await expect(page.getByRole('heading', { name: 'Add Subject' })).toBeVisible();
+ await expect(page.getByRole('heading', { name: 'Distribute Document' })).toBeVisible();
await page.getByRole('button', { name: 'Send' }).click();
await page.waitForURL('/documents');
@@ -190,7 +190,7 @@ test('[DOCUMENT_FLOW]: should be able to create a document with multiple recipie
await page.getByRole('button', { name: 'Continue' }).click();
// Add subject and send
- await expect(page.getByRole('heading', { name: 'Add Subject' })).toBeVisible();
+ await expect(page.getByRole('heading', { name: 'Distribute Document' })).toBeVisible();
await page.getByRole('button', { name: 'Send' }).click();
await page.waitForURL('/documents');
@@ -287,7 +287,7 @@ test('[DOCUMENT_FLOW]: should be able to create a document with multiple recipie
await page.getByRole('button', { name: 'Continue' }).click();
// Add subject and send
- await expect(page.getByRole('heading', { name: 'Add Subject' })).toBeVisible();
+ await expect(page.getByRole('heading', { name: 'Distribute Document' })).toBeVisible();
await page.getByRole('button', { name: 'Send' }).click();
await page.waitForURL('/documents');
@@ -566,7 +566,7 @@ test('[DOCUMENT_FLOW]: should be able to create and sign a document with 3 recip
await page.getByRole('button', { name: 'Continue' }).click();
- await expect(page.getByRole('heading', { name: 'Add Subject' })).toBeVisible();
+ await expect(page.getByRole('heading', { name: 'Distribute Document' })).toBeVisible();
await page.getByRole('button', { name: 'Send' }).click();
await page.waitForURL('/documents');
diff --git a/packages/app-tests/e2e/teams/team-documents.spec.ts b/packages/app-tests/e2e/teams/team-documents.spec.ts
index 4532a478b..7babb1803 100644
--- a/packages/app-tests/e2e/teams/team-documents.spec.ts
+++ b/packages/app-tests/e2e/teams/team-documents.spec.ts
@@ -462,6 +462,45 @@ test('[TEAMS]: check document visibility based on team member role', async ({ pa
}
});
+test('[TEAMS]: ensure document owner can see document regardless of visibility', async ({
+ page,
+}) => {
+ const team = await seedTeam();
+
+ // Seed a member user
+ const memberUser = await seedTeamMember({
+ teamId: team.id,
+ role: TeamMemberRole.MEMBER,
+ });
+
+ // Seed a document with ADMIN visibility but make the member user a recipient
+ await seedDocuments([
+ {
+ sender: memberUser,
+ recipients: [],
+ type: DocumentStatus.COMPLETED,
+ documentOptions: {
+ teamId: team.id,
+ visibility: 'ADMIN',
+ title: 'Admin Document with Member Document Owner',
+ },
+ },
+ ]);
+
+ await apiSignin({
+ page,
+ email: memberUser.email,
+ redirectPath: `/t/${team.url}/documents?status=COMPLETED`,
+ });
+
+ // Check that the member user can see the document
+ await expect(
+ page.getByRole('link', { name: 'Admin Document with Member Document Owner', exact: true }),
+ ).toBeVisible();
+
+ await apiSignout({ page });
+});
+
test('[TEAMS]: ensure recipient can see document regardless of visibility', async ({ page }) => {
const team = await seedTeam();
diff --git a/packages/app-tests/e2e/teams/team-global-settings.spec.ts b/packages/app-tests/e2e/teams/team-global-settings.spec.ts
new file mode 100644
index 000000000..b8b5377a1
--- /dev/null
+++ b/packages/app-tests/e2e/teams/team-global-settings.spec.ts
@@ -0,0 +1,62 @@
+import { expect, test } from '@playwright/test';
+
+import { seedTeam } from '@documenso/prisma/seed/teams';
+
+import { apiSignin } from '../fixtures/authentication';
+
+test.describe.configure({ mode: 'parallel' });
+
+test('[TEAMS]: update the default document visibility in the team global settings', async ({
+ page,
+}) => {
+ const team = await seedTeam({
+ createTeamMembers: 1,
+ });
+
+ await apiSignin({
+ page,
+ email: team.owner.email,
+ password: 'password',
+ redirectPath: `/t/${team.url}/settings`,
+ });
+
+ await page.getByRole('combobox').click();
+ await page.getByRole('option', { name: 'Admin' }).click();
+ await page.getByRole('button', { name: 'Update team' }).click();
+
+ const toast = page.locator('li[role="status"][data-state="open"]').first();
+ await expect(toast).toBeVisible();
+ await expect(toast.getByText('Success', { exact: true })).toBeVisible();
+ await expect(
+ toast.getByText('Your team has been successfully updated.', { exact: true }),
+ ).toBeVisible();
+});
+
+test('[TEAMS]: update the sender details in the team global settings', async ({ page }) => {
+ const team = await seedTeam({
+ createTeamMembers: 1,
+ });
+
+ await apiSignin({
+ page,
+ email: team.owner.email,
+ password: 'password',
+ redirectPath: `/t/${team.url}/settings`,
+ });
+
+ const checkbox = page.getByLabel('Send on Behalf of Team');
+ await checkbox.check();
+
+ await expect(checkbox).toBeChecked();
+
+ await page.getByRole('button', { name: 'Update team' }).click();
+
+ const toast = page.locator('li[role="status"][data-state="open"]').first();
+ await expect(toast).toBeVisible();
+ await expect(toast.getByText('Success', { exact: true })).toBeVisible();
+ await expect(
+ toast.getByText('Your team has been successfully updated.', { exact: true }),
+ ).toBeVisible();
+
+ await expect(checkbox).toBeChecked();
+});
diff --git a/packages/app-tests/e2e/teams/transfer-team.spec.ts b/packages/app-tests/e2e/teams/transfer-team.spec.ts
index d34525160..d45e8110f 100644
--- a/packages/app-tests/e2e/teams/transfer-team.spec.ts
+++ b/packages/app-tests/e2e/teams/transfer-team.spec.ts
@@ -29,7 +29,7 @@ test('[TEAMS]: initiate and cancel team transfer', async ({ page }) => {
await page.getByLabel('Confirm by typing transfer').fill('transfer');
await page.getByRole('button', { name: 'Transfer' }).click();
- await expect(page.locator('[id="\\:r2\\:-form-item-message"]')).toContainText(
+ await expect(page.locator('[id*="form-item-message"]').first()).toContainText(
`You must enter 'transfer ${team.name}' to proceed`,
);
diff --git a/packages/app-tests/e2e/templates-flow/template-settings-step.spec.ts b/packages/app-tests/e2e/templates-flow/template-settings-step.spec.ts
index 4061b0046..e367ecef6 100644
--- a/packages/app-tests/e2e/templates-flow/template-settings-step.spec.ts
+++ b/packages/app-tests/e2e/templates-flow/template-settings-step.spec.ts
@@ -32,7 +32,7 @@ test.describe('[EE_ONLY]', () => {
await apiSignin({
page,
email: user.email,
- redirectPath: `/templates/${template.id}`,
+ redirectPath: `/templates/${template.id}/edit`,
});
// Set EE action auth.
@@ -74,7 +74,7 @@ test.describe('[EE_ONLY]', () => {
await apiSignin({
page,
email: teamMemberUser.email,
- redirectPath: `/t/${team.url}/templates/${template.id}`,
+ redirectPath: `/t/${team.url}/templates/${template.id}/edit`,
});
// Set EE action auth.
@@ -110,7 +110,7 @@ test.describe('[EE_ONLY]', () => {
await apiSignin({
page,
email: teamMemberUser.email,
- redirectPath: `/templates/${template.id}`,
+ redirectPath: `/templates/${template.id}/edit`,
});
// Global action auth should not be visible.
@@ -132,7 +132,7 @@ test('[TEMPLATE_FLOW]: add settings', async ({ page }) => {
await apiSignin({
page,
email: user.email,
- redirectPath: `/templates/${template.id}`,
+ redirectPath: `/templates/${template.id}/edit`,
});
// Set title.
diff --git a/packages/app-tests/e2e/templates-flow/template-signers-step.spec.ts b/packages/app-tests/e2e/templates-flow/template-signers-step.spec.ts
index 16bb077e4..3ce52c55c 100644
--- a/packages/app-tests/e2e/templates-flow/template-signers-step.spec.ts
+++ b/packages/app-tests/e2e/templates-flow/template-signers-step.spec.ts
@@ -31,7 +31,7 @@ test.describe('[EE_ONLY]', () => {
await apiSignin({
page,
email: user.email,
- redirectPath: `/templates/${template.id}`,
+ redirectPath: `/templates/${template.id}/edit`,
});
// Save the settings by going to the next step.
@@ -81,7 +81,7 @@ test('[TEMPLATE_FLOW]: add placeholder', async ({ page }) => {
await apiSignin({
page,
email: user.email,
- redirectPath: `/templates/${template.id}`,
+ redirectPath: `/templates/${template.id}/edit`,
});
// Save the settings by going to the next step.
diff --git a/packages/app-tests/e2e/templates/create-document-from-template.spec.ts b/packages/app-tests/e2e/templates/create-document-from-template.spec.ts
index 72baa0002..57100eaa6 100644
--- a/packages/app-tests/e2e/templates/create-document-from-template.spec.ts
+++ b/packages/app-tests/e2e/templates/create-document-from-template.spec.ts
@@ -37,7 +37,7 @@ test('[TEMPLATE]: should create a document from a template', async ({ page }) =>
await apiSignin({
page,
email: user.email,
- redirectPath: `/templates/${template.id}`,
+ redirectPath: `/templates/${template.id}/edit`,
});
// Set template title.
@@ -172,7 +172,7 @@ test('[TEMPLATE]: should create a team document from a team template', async ({
await apiSignin({
page,
email: owner.email,
- redirectPath: `/t/${team.url}/templates/${template.id}`,
+ redirectPath: `/t/${team.url}/templates/${template.id}/edit`,
});
// Set template title.
diff --git a/packages/app-tests/e2e/templates/direct-templates.spec.ts b/packages/app-tests/e2e/templates/direct-templates.spec.ts
index 9dc49ee3e..a15c3ff28 100644
--- a/packages/app-tests/e2e/templates/direct-templates.spec.ts
+++ b/packages/app-tests/e2e/templates/direct-templates.spec.ts
@@ -112,7 +112,6 @@ test('[DIRECT_TEMPLATES]: toggle direct template link', async ({ page }) => {
await page.getByRole('switch').click();
await page.getByRole('button', { name: 'Save' }).click();
await expect(page.getByText('Direct link signing has been').first()).toBeVisible();
- await page.getByLabel('Direct Link Signing', { exact: true }).press('Escape');
// Check that the direct template link is no longer accessible.
await page.goto(formatDirectTemplatePath(template.directLink?.token || ''));
diff --git a/packages/app-tests/e2e/user/auth-flow.spec.ts b/packages/app-tests/e2e/user/auth-flow.spec.ts
index 014588566..a57333cba 100644
--- a/packages/app-tests/e2e/user/auth-flow.spec.ts
+++ b/packages/app-tests/e2e/user/auth-flow.spec.ts
@@ -18,7 +18,7 @@ test('[USER] can sign up with email and password', async ({ page }: { page: Page
await page.getByLabel('Email').fill(email);
await page.getByLabel('Password', { exact: true }).fill(password);
- const canvas = page.locator('canvas');
+ const canvas = page.locator('canvas').first();
const box = await canvas.boundingBox();
if (box) {
diff --git a/packages/app-tests/e2e/user/update-name.spec.ts b/packages/app-tests/e2e/user/update-name.spec.ts
index ca26fbf3d..db292631c 100644
--- a/packages/app-tests/e2e/user/update-name.spec.ts
+++ b/packages/app-tests/e2e/user/update-name.spec.ts
@@ -12,7 +12,7 @@ test('[USER] update full name', async ({ page }) => {
await page.getByLabel('Full Name').fill('John Doe');
- const canvas = page.locator('canvas');
+ const canvas = page.locator('canvas').first();
const box = await canvas.boundingBox();
if (box) {
diff --git a/packages/app-tests/package.json b/packages/app-tests/package.json
index f683e4ebd..18052f0ab 100644
--- a/packages/app-tests/package.json
+++ b/packages/app-tests/package.json
@@ -5,9 +5,9 @@
"description": "",
"main": "index.js",
"scripts": {
- "test:dev": "playwright test",
- "test-ui:dev": "playwright test --ui",
- "test:e2e": "start-server-and-test \"npm run start -w @documenso/web\" http://localhost:3000 \"playwright test\""
+ "test:dev": "NODE_OPTIONS=--experimental-require-module playwright test",
+ "test-ui:dev": "NODE_OPTIONS=--experimental-require-module playwright test --ui",
+ "test:e2e": "NODE_OPTIONS=--experimental-require-module start-server-and-test \"npm run start -w @documenso/web\" http://localhost:3000 \"playwright test\""
},
"keywords": [],
"author": "",
diff --git a/packages/email/mailer.ts b/packages/email/mailer.ts
index 21aecfa19..3b5afa524 100644
--- a/packages/email/mailer.ts
+++ b/packages/email/mailer.ts
@@ -1,10 +1,56 @@
+import type { Transporter } from 'nodemailer';
import { createTransport } from 'nodemailer';
import { ResendTransport } from '@documenso/nodemailer-resend';
import { MailChannelsTransport } from './transports/mailchannels';
-const getTransport = () => {
+/**
+ * Creates a Nodemailer transport object for sending emails.
+ *
+ * This function uses various environment variables to configure the appropriate
+ * email transport mechanism. It supports multiple types of email transports,
+ * including MailChannels, Resend, and different SMTP configurations.
+ *
+ * @returns {Transporter} A configured Nodemailer transporter instance.
+ *
+ * Supported Transports:
+ * - **mailchannels**: Uses MailChannelsTransport, requiring:
+ * - `NEXT_PRIVATE_MAILCHANNELS_API_KEY`: API key for MailChannels
+ * - `NEXT_PRIVATE_MAILCHANNELS_ENDPOINT`: Endpoint for MailChannels (optional)
+ * - **resend**: Uses ResendTransport, requiring:
+ * - `NEXT_PRIVATE_RESEND_API_KEY`: API key for Resend
+ * - **smtp-api**: Uses a custom SMTP API configuration, requiring:
+ * - `NEXT_PRIVATE_SMTP_HOST`: The SMTP server host
+ * - `NEXT_PRIVATE_SMTP_APIKEY`: The API key for SMTP authentication
+ * - `NEXT_PRIVATE_SMTP_APIKEY_USER`: The username for SMTP authentication (default: 'apikey')
+ * - **smtp-auth** (default): Uses a standard SMTP configuration, requiring:
+ * - `NEXT_PRIVATE_SMTP_HOST`: The SMTP server host (default: 'localhost:2500')
+ * - `NEXT_PRIVATE_SMTP_PORT`: The port to connect to (default: 587)
+ * - `NEXT_PRIVATE_SMTP_SECURE`: Whether to use SSL/TLS (default: false)
+ * - `NEXT_PRIVATE_SMTP_UNSAFE_IGNORE_TLS`: Whether to ignore TLS (default: false)
+ * - `NEXT_PRIVATE_SMTP_USERNAME`: The username for SMTP authentication
+ * - `NEXT_PRIVATE_SMTP_PASSWORD`: The password for SMTP authentication
+ * - `NEXT_PRIVATE_SMTP_SERVICE`: The SMTP service provider (e.g., "gmail"). This option is used
+ * when integrating with well-known services (like Gmail), enabling simplified configuration.
+ *
+ * Example Usage:
+ * ```env
+ * NEXT_PRIVATE_SMTP_TRANSPORT='smtp-auth';
+ * NEXT_PRIVATE_SMTP_HOST='smtp.example.com';
+ * NEXT_PRIVATE_SMTP_PORT=587;
+ * NEXT_PRIVATE_SMTP_SERVICE='gmail';
+ * NEXT_PRIVATE_SMTP_SECURE='true';
+ * NEXT_PRIVATE_SMTP_USERNAME='your-email@gmail.com';
+ * NEXT_PRIVATE_SMTP_PASSWORD='your-password';
+ * ```
+ *
+ * Notes:
+ * - Ensure that the required environment variables for each transport type are set.
+ * - If `NEXT_PRIVATE_SMTP_TRANSPORT` is not specified, the default is `smtp-auth`.
+ * - `NEXT_PRIVATE_SMTP_SERVICE` is optional and used specifically for well-known services like Gmail.
+ */
+const getTransport = (): Transporter => {
const transport = process.env.NEXT_PRIVATE_SMTP_TRANSPORT ?? 'smtp-auth';
if (transport === 'mailchannels') {
@@ -53,6 +99,9 @@ const getTransport = () => {
pass: process.env.NEXT_PRIVATE_SMTP_PASSWORD ?? '',
}
: undefined,
+ ...(process.env.NEXT_PRIVATE_SMTP_SERVICE
+ ? { service: process.env.NEXT_PRIVATE_SMTP_SERVICE }
+ : {}),
});
};
diff --git a/packages/email/providers/branding.tsx b/packages/email/providers/branding.tsx
new file mode 100644
index 000000000..84e022be1
--- /dev/null
+++ b/packages/email/providers/branding.tsx
@@ -0,0 +1,44 @@
+'use client';
+
+import { createContext, useContext } from 'react';
+
+type BrandingContextValue = {
+ brandingEnabled: boolean;
+ brandingUrl: string;
+ brandingLogo: string;
+ brandingCompanyDetails: string;
+ brandingHidePoweredBy: boolean;
+};
+
+const BrandingContext = createContext(undefined);
+
+const defaultBrandingContextValue: BrandingContextValue = {
+ brandingEnabled: false,
+ brandingUrl: '',
+ brandingLogo: '',
+ brandingCompanyDetails: '',
+ brandingHidePoweredBy: false,
+};
+
+export const BrandingProvider = (props: {
+ branding?: BrandingContextValue;
+ children: React.ReactNode;
+}) => {
+ return (
+
+ {props.children}
+
+ );
+};
+
+export const useBranding = () => {
+ const ctx = useContext(BrandingContext);
+
+ if (!ctx) {
+ throw new Error('Branding context not found');
+ }
+
+ return ctx;
+};
+
+export type BrandingSettings = BrandingContextValue;
diff --git a/packages/email/render.ts b/packages/email/render.ts
deleted file mode 100644
index 46f0d62a5..000000000
--- a/packages/email/render.ts
+++ /dev/null
@@ -1 +0,0 @@
-export { render, renderAsync } from '@react-email/render';
diff --git a/packages/email/render.tsx b/packages/email/render.tsx
new file mode 100644
index 000000000..093e9f267
--- /dev/null
+++ b/packages/email/render.tsx
@@ -0,0 +1,48 @@
+import * as ReactEmail from '@react-email/render';
+
+import config from '@documenso/tailwind-config';
+
+import { Tailwind } from './components';
+import { BrandingProvider, type BrandingSettings } from './providers/branding';
+
+export type RenderOptions = ReactEmail.Options & {
+ branding?: BrandingSettings;
+};
+
+export const render = (element: React.ReactNode, options?: RenderOptions) => {
+ const { branding, ...otherOptions } = options ?? {};
+
+ return ReactEmail.render(
+
+ {element}
+ ,
+ otherOptions,
+ );
+};
+
+export const renderAsync = async (element: React.ReactNode, options?: RenderOptions) => {
+ const { branding, ...otherOptions } = options ?? {};
+
+ return await ReactEmail.renderAsync(
+
+ {element}
+ ,
+ otherOptions,
+ );
+};
diff --git a/packages/email/template-components/template-confirmation-email.tsx b/packages/email/template-components/template-confirmation-email.tsx
index 1036faa3e..14c5b1481 100644
--- a/packages/email/template-components/template-confirmation-email.tsx
+++ b/packages/email/template-components/template-confirmation-email.tsx
@@ -1,3 +1,5 @@
+import { Trans } from '@lingui/macro';
+
import { Button, Section, Text } from '../components';
import { TemplateDocumentImage } from './template-document-image';
@@ -16,11 +18,13 @@ export const TemplateConfirmationEmail = ({
- Welcome to Documenso!
+ Welcome to Documenso!
- Before you get started, please confirm your email address by clicking the button below:
+
+ Before you get started, please confirm your email address by clicking the button below:
+
@@ -28,11 +32,13 @@ export const TemplateConfirmationEmail = ({
className="bg-documenso-500 inline-flex items-center justify-center rounded-lg px-6 py-3 text-center text-sm font-medium text-black no-underline"
href={confirmationLink}
>
- Confirm email
+ Confirm email
- You can also copy and paste this link into your browser: {confirmationLink} (link
- expires in 1 hour)
+
+ You can also copy and paste this link into your browser: {confirmationLink} (link
+ expires in 1 hour)
+
diff --git a/packages/email/template-components/template-document-cancel.tsx b/packages/email/template-components/template-document-cancel.tsx
index dff275de2..d6e1b4221 100644
--- a/packages/email/template-components/template-document-cancel.tsx
+++ b/packages/email/template-components/template-document-cancel.tsx
@@ -1,3 +1,5 @@
+import { Trans } from '@lingui/macro';
+
import { Section, Text } from '../components';
import { TemplateDocumentImage } from './template-document-image';
@@ -19,16 +21,18 @@ export const TemplateDocumentCancel = ({
- {inviterName} has cancelled the document
- "{documentName}"
+
+ {inviterName} has cancelled the document
+ "{documentName}"
+
- All signatures have been voided.
+ All signatures have been voided.
- You don't need to sign it anymore.
+ You don't need to sign it anymore.
>
diff --git a/packages/email/template-components/template-document-completed.tsx b/packages/email/template-components/template-document-completed.tsx
index 8829c8d06..d3f2f24d3 100644
--- a/packages/email/template-components/template-document-completed.tsx
+++ b/packages/email/template-components/template-document-completed.tsx
@@ -1,3 +1,5 @@
+import { Trans } from '@lingui/macro';
+
import { Button, Column, Img, Section, Text } from '../components';
import { TemplateDocumentImage } from './template-document-image';
@@ -30,27 +32,20 @@ export const TemplateDocumentCompleted = ({
src={getAssetUrl('/static/completed.png')}
className="-mt-0.5 mr-2 inline h-7 w-7 align-middle"
/>
- Completed
+ Completed
- {customBody ?? `“${documentName}” was signed by all signers`}
+ {customBody || “{documentName}” was signed by all signers }
- Continue by downloading the document.
+ Continue by downloading the document.
- {/*
-
- Review
- */}
- Download
+ Download
diff --git a/packages/email/template-components/template-document-invite.tsx b/packages/email/template-components/template-document-invite.tsx
index 62d049e13..f49e0d106 100644
--- a/packages/email/template-components/template-document-invite.tsx
+++ b/packages/email/template-components/template-document-invite.tsx
@@ -1,5 +1,11 @@
-import { RECIPIENT_ROLES_DESCRIPTION_ENG } from '@documenso/lib/constants/recipient-roles';
-import type { RecipientRole } from '@documenso/prisma/client';
+import { useMemo } from 'react';
+
+import { Trans } from '@lingui/macro';
+import { useLingui } from '@lingui/react';
+import { match } from 'ts-pattern';
+
+import { RECIPIENT_ROLES_DESCRIPTION } from '@documenso/lib/constants/recipient-roles';
+import { RecipientRole } from '@documenso/prisma/client';
import { Button, Section, Text } from '../components';
import { TemplateDocumentImage } from './template-document-image';
@@ -14,6 +20,7 @@ export interface TemplateDocumentInviteProps {
selfSigner: boolean;
isTeamInvite: boolean;
teamName?: string;
+ includeSenderDetails?: boolean;
}
export const TemplateDocumentInvite = ({
@@ -25,8 +32,19 @@ export const TemplateDocumentInvite = ({
selfSigner,
isTeamInvite,
teamName,
+ includeSenderDetails,
}: TemplateDocumentInviteProps) => {
- const { actionVerb, progressiveVerb } = RECIPIENT_ROLES_DESCRIPTION_ENG[role];
+ const { _ } = useLingui();
+
+ const { actionVerb } = RECIPIENT_ROLES_DESCRIPTION[role];
+
+ const rejectDocumentLink = useMemo(() => {
+ const url = new URL(signDocumentLink);
+
+ url.searchParams.set('reject', 'true');
+
+ return url.toString();
+ }, []);
return (
<>
@@ -35,36 +53,59 @@ export const TemplateDocumentInvite = ({
{selfSigner ? (
- <>
- {`Please ${actionVerb.toLowerCase()} your document`}
-
- {`"${documentName}"`}
- >
+
+ Please {_(actionVerb).toLowerCase()} your document
+ "{documentName}"
+
) : isTeamInvite ? (
<>
- {`${inviterName} on behalf of ${teamName} has invited you to ${actionVerb.toLowerCase()}`}
-
- {`"${documentName}"`}
+ {includeSenderDetails ? (
+
+ {inviterName} on behalf of {teamName} has invited you to{' '}
+ {_(actionVerb).toLowerCase()}
+
+ ) : (
+
+ {teamName} has invited you to {_(actionVerb).toLowerCase()}
+
+ )}
+ "{documentName}"
>
) : (
- <>
- {`${inviterName} has invited you to ${actionVerb.toLowerCase()}`}
-
- {`"${documentName}"`}
- >
+
+ {inviterName} has invited you to {_(actionVerb).toLowerCase()}
+ "{documentName}"
+
)}
- Continue by {progressiveVerb.toLowerCase()} the document.
+ {match(role)
+ .with(RecipientRole.SIGNER, () => Continue by signing the document. )
+ .with(RecipientRole.VIEWER, () => Continue by viewing the document. )
+ .with(RecipientRole.APPROVER, () => Continue by approving the document. )
+ .with(RecipientRole.CC, () => '')
+ .exhaustive()}
+
+ Reject Document
+
+
- {actionVerb} Document
+ {match(role)
+ .with(RecipientRole.SIGNER, () => Sign Document )
+ .with(RecipientRole.VIEWER, () => View Document )
+ .with(RecipientRole.APPROVER, () => Approve Document )
+ .with(RecipientRole.CC, () => '')
+ .exhaustive()}
diff --git a/packages/email/template-components/template-document-pending.tsx b/packages/email/template-components/template-document-pending.tsx
index f03d7bdbb..161f519dc 100644
--- a/packages/email/template-components/template-document-pending.tsx
+++ b/packages/email/template-components/template-document-pending.tsx
@@ -1,3 +1,5 @@
+import { Trans } from '@lingui/macro';
+
import { Column, Img, Section, Text } from '../components';
import { TemplateDocumentImage } from './template-document-image';
@@ -26,19 +28,21 @@ export const TemplateDocumentPending = ({
src={getAssetUrl('/static/clock.png')}
className="-mt-0.5 mr-2 inline h-7 w-7 align-middle"
/>
- Waiting for others
+ Waiting for others
- “{documentName}” has been signed
+ “{documentName}” has been signed
- We're still waiting for other signers to sign this document.
-
- We'll notify you as soon as it's ready.
+
+ We're still waiting for other signers to sign this document.
+
+ We'll notify you as soon as it's ready.
+
>
diff --git a/packages/email/template-components/template-document-rejected.tsx b/packages/email/template-components/template-document-rejected.tsx
new file mode 100644
index 000000000..40f0f59c8
--- /dev/null
+++ b/packages/email/template-components/template-document-rejected.tsx
@@ -0,0 +1,48 @@
+import { Trans } from '@lingui/macro';
+
+import { Button, Heading, Text } from '../components';
+
+export interface TemplateDocumentRejectedProps {
+ documentName: string;
+ recipientName: string;
+ rejectionReason?: string;
+ documentUrl: string;
+}
+
+export function TemplateDocumentRejected({
+ documentName,
+ recipientName: signerName,
+ rejectionReason,
+ documentUrl,
+}: TemplateDocumentRejectedProps) {
+ return (
+
+
+ Document Rejected
+
+
+
+
+ {signerName} has rejected the document "{documentName}".
+
+
+
+ {rejectionReason && (
+
+ Reason for rejection: {rejectionReason}
+
+ )}
+
+
+ You can view the document and its status by clicking the button below.
+
+
+
+ View Document
+
+
+ );
+}
diff --git a/packages/email/template-components/template-document-rejection-confirmed.tsx b/packages/email/template-components/template-document-rejection-confirmed.tsx
new file mode 100644
index 000000000..67b8c5b25
--- /dev/null
+++ b/packages/email/template-components/template-document-rejection-confirmed.tsx
@@ -0,0 +1,48 @@
+import { Trans } from '@lingui/macro';
+
+import { Container, Heading, Section, Text } from '../components';
+
+interface TemplateDocumentRejectionConfirmedProps {
+ recipientName: string;
+ documentName: string;
+ documentOwnerName: string;
+ reason?: string;
+}
+
+export function TemplateDocumentRejectionConfirmed({
+ recipientName,
+ documentName,
+ documentOwnerName,
+ reason,
+}: TemplateDocumentRejectionConfirmedProps) {
+ return (
+
+
+
+ Rejection Confirmed
+
+
+
+
+ This email confirms that you have rejected the document{' '}
+ "{documentName}" sent by {documentOwnerName}.
+
+
+
+ {reason && (
+
+ Rejection reason: {reason}
+
+ )}
+
+
+
+ The document owner has been notified of this rejection. No further action is required
+ from you at this time. The document owner may contact you with any questions regarding
+ this rejection.
+
+
+
+
+ );
+}
diff --git a/packages/email/template-components/template-document-self-signed.tsx b/packages/email/template-components/template-document-self-signed.tsx
index db16fb000..f62b3e650 100644
--- a/packages/email/template-components/template-document-self-signed.tsx
+++ b/packages/email/template-components/template-document-self-signed.tsx
@@ -1,3 +1,4 @@
+import { Trans } from '@lingui/macro';
import { env } from 'next-runtime-env';
import { Button, Column, Img, Link, Section, Text } from '../components';
@@ -32,25 +33,27 @@ export const TemplateDocumentSelfSigned = ({
src={getAssetUrl('/static/completed.png')}
className="-mt-0.5 mr-2 inline h-7 w-7 align-middle"
/>
- Completed
+ Completed
- You have signed “{documentName}”
+ You have signed “{documentName}”
- Create a{' '}
-
- free account
- {' '}
- to access your signed documents at any time.
+
+ Create a{' '}
+
+ free account
+ {' '}
+ to access your signed documents at any time.
+
@@ -62,7 +65,7 @@ export const TemplateDocumentSelfSigned = ({
src={getAssetUrl('/static/user-plus.png')}
className="mb-0.5 mr-2 inline h-5 w-5 align-middle"
/>
- Create account
+ Create account
- View plans
+ View plans
diff --git a/packages/email/template-components/template-document-super-delete.tsx b/packages/email/template-components/template-document-super-delete.tsx
index 9cb0a9e71..b26a6f105 100644
--- a/packages/email/template-components/template-document-super-delete.tsx
+++ b/packages/email/template-components/template-document-super-delete.tsx
@@ -1,3 +1,5 @@
+import { Trans } from '@lingui/macro';
+
import { Section, Text } from '../components';
import { TemplateDocumentImage } from './template-document-image';
@@ -18,20 +20,22 @@ export const TemplateDocumentDelete = ({
- Your document has been deleted by an admin!
+ Your document has been deleted by an admin!
- "{documentName}" has been deleted by an admin.
+ "{documentName}" has been deleted by an admin.
- This document can not be recovered, if you would like to dispute the reason for future
- documents please contact support.
+
+ This document can not be recovered, if you would like to dispute the reason for future
+ documents please contact support.
+
- The reason provided for deletion is the following:
+ The reason provided for deletion is the following:
diff --git a/packages/email/template-components/template-footer.tsx b/packages/email/template-components/template-footer.tsx
index 34cd4047e..912c7434f 100644
--- a/packages/email/template-components/template-footer.tsx
+++ b/packages/email/template-components/template-footer.tsx
@@ -1,26 +1,46 @@
+import { Trans } from '@lingui/macro';
+
import { Link, Section, Text } from '../components';
+import { useBranding } from '../providers/branding';
export type TemplateFooterProps = {
isDocument?: boolean;
};
export const TemplateFooter = ({ isDocument = true }: TemplateFooterProps) => {
+ const branding = useBranding();
+
return (
- {isDocument && (
+ {isDocument && !branding.brandingHidePoweredBy && (
- This document was sent using{' '}
-
- Documenso.
-
+
+ This document was sent using{' '}
+
+ Documenso.
+
+
)}
-
- Documenso, Inc.
-
- 2261 Market Street, #5211, San Francisco, CA 94114, USA
-
+ {branding.brandingCompanyDetails ? (
+
+ {branding.brandingCompanyDetails.split('\n').map((line, idx) => {
+ return (
+ <>
+ {idx > 0 && }
+ {line}
+ >
+ );
+ })}
+
+ ) : (
+
+ Documenso, Inc.
+
+ 2261 Market Street, #5211, San Francisco, CA 94114, USA
+
+ )}
);
};
diff --git a/packages/email/template-components/template-forgot-password.tsx b/packages/email/template-components/template-forgot-password.tsx
index c8227b2bd..1ab319a43 100644
--- a/packages/email/template-components/template-forgot-password.tsx
+++ b/packages/email/template-components/template-forgot-password.tsx
@@ -1,3 +1,5 @@
+import { Trans } from '@lingui/macro';
+
import { Button, Section, Text } from '../components';
import { TemplateDocumentImage } from './template-document-image';
@@ -16,11 +18,11 @@ export const TemplateForgotPassword = ({
- Forgot your password?
+ Forgot your password?
- That's okay, it happens! Click the button below to reset your password.
+ That's okay, it happens! Click the button below to reset your password.
@@ -28,7 +30,7 @@ export const TemplateForgotPassword = ({
className="bg-documenso-500 inline-flex items-center justify-center rounded-lg px-6 py-3 text-center text-sm font-medium text-black no-underline"
href={resetPasswordLink}
>
- Reset Password
+ Reset Password
diff --git a/packages/email/template-components/template-reset-password.tsx b/packages/email/template-components/template-reset-password.tsx
index d05393c83..d264385e4 100644
--- a/packages/email/template-components/template-reset-password.tsx
+++ b/packages/email/template-components/template-reset-password.tsx
@@ -1,3 +1,4 @@
+import { Trans } from '@lingui/macro';
import { env } from 'next-runtime-env';
import { Button, Section, Text } from '../components';
@@ -18,11 +19,11 @@ export const TemplateResetPassword = ({ assetBaseUrl }: TemplateResetPasswordPro
- Password updated!
+ Password updated!
- Your password has been updated.
+ Your password has been updated.
@@ -30,7 +31,7 @@ export const TemplateResetPassword = ({ assetBaseUrl }: TemplateResetPasswordPro
className="bg-documenso-500 inline-flex items-center justify-center rounded-lg px-6 py-3 text-center text-sm font-medium text-black no-underline"
href={`${NEXT_PUBLIC_WEBAPP_URL ?? 'http://localhost:3000'}/signin`}
>
- Sign In
+ Sign In
diff --git a/packages/email/templates/confirm-email.tsx b/packages/email/templates/confirm-email.tsx
index 59c7add10..6741a3116 100644
--- a/packages/email/templates/confirm-email.tsx
+++ b/packages/email/templates/confirm-email.tsx
@@ -1,6 +1,8 @@
-import config from '@documenso/tailwind-config';
+import { msg } from '@lingui/macro';
+import { useLingui } from '@lingui/react';
-import { Body, Container, Head, Html, Img, Preview, Section, Tailwind } from '../components';
+import { Body, Container, Head, Html, Img, Preview, Section } from '../components';
+import { useBranding } from '../providers/branding';
import type { TemplateConfirmationEmailProps } from '../template-components/template-confirmation-email';
import { TemplateConfirmationEmail } from '../template-components/template-confirmation-email';
import { TemplateFooter } from '../template-components/template-footer';
@@ -9,7 +11,10 @@ export const ConfirmEmailTemplate = ({
confirmationLink,
assetBaseUrl = 'http://localhost:3002',
}: TemplateConfirmationEmailProps) => {
- const previewText = `Please confirm your email address`;
+ const { _ } = useLingui();
+ const branding = useBranding();
+
+ const previewText = msg`Please confirm your email address`;
const getAssetUrl = (path: string) => {
return new URL(path, assetBaseUrl).toString();
@@ -18,40 +23,34 @@ export const ConfirmEmailTemplate = ({
return (
- {previewText}
-
-
-
-
-
+ {_(previewText)}
+
+
+
+
+ {branding.brandingEnabled && branding.brandingLogo ? (
+
+ ) : (
+ )}
-
-
-
-
+
+
+
+
-
-
-
-
-
-
+
+
+
+
+
);
};
diff --git a/packages/email/templates/confirm-team-email.tsx b/packages/email/templates/confirm-team-email.tsx
index 552a079f8..40941e62f 100644
--- a/packages/email/templates/confirm-team-email.tsx
+++ b/packages/email/templates/confirm-team-email.tsx
@@ -1,5 +1,7 @@
+import { Trans, msg } from '@lingui/macro';
+import { useLingui } from '@lingui/react';
+
import { formatTeamUrl } from '@documenso/lib/utils/teams';
-import config from '@documenso/tailwind-config';
import {
Body,
@@ -8,12 +10,13 @@ import {
Head,
Hr,
Html,
+ Img,
Link,
Preview,
Section,
- Tailwind,
Text,
} from '../components';
+import { useBranding } from '../providers/branding';
import { TemplateFooter } from '../template-components/template-footer';
import TemplateImage from '../template-components/template-image';
@@ -32,97 +35,103 @@ export const ConfirmTeamEmailTemplate = ({
teamUrl = 'demo',
token = '',
}: ConfirmTeamEmailProps) => {
- const previewText = `Accept team email request for ${teamName} on Documenso`;
+ const { _ } = useLingui();
+ const branding = useBranding();
+
+ const previewText = msg`Accept team email request for ${teamName} on Documenso`;
return (
-
{previewText}
-
-
-
-
+ {_(previewText)}
+
+
+
+
+ {branding.brandingEnabled && branding.brandingLogo ? (
+
+ ) : (
+ )}
-
+
-
-
- Verify your team email address
-
+
+
+ Verify your team email address
+
-
+
+
{teamName} has requested to use your email
address for their team on Documenso.
-
+
+
-
- {formatTeamUrl(teamUrl, baseUrl)}
-
+
+ {formatTeamUrl(teamUrl, baseUrl)}
+
-
-
+
+
+
By accepting this request, you will be granting {teamName} {' '}
access to:
-
+
+
-
-
- View all documents sent to and from this email address
-
-
- Allow document recipients to reply directly to this email address
-
-
- Send documents on behalf of the team using the email address
-
-
+
+
+ View all documents sent to and from this email address
+
+
+ Allow document recipients to reply directly to this email address
+
+
+ Send documents on behalf of the team using the email address
+
+
-
+
+
You can revoke access at any time in your team settings on Documenso{' '}
here.
-
-
-
-
+
+
- Link expires in 1 hour.
-
+
+
-
+
+ Link expires in 1 hour.
+
+
-
-
-
-
-
-
+
+
+
+
+
+
+
);
};
diff --git a/packages/email/templates/document-cancel.tsx b/packages/email/templates/document-cancel.tsx
index 66892bccc..197880a77 100644
--- a/packages/email/templates/document-cancel.tsx
+++ b/packages/email/templates/document-cancel.tsx
@@ -1,6 +1,8 @@
-import config from '@documenso/tailwind-config';
+import { msg } from '@lingui/macro';
+import { useLingui } from '@lingui/react';
-import { Body, Container, Head, Hr, Html, Img, Preview, Section, Tailwind } from '../components';
+import { Body, Container, Head, Hr, Html, Img, Preview, Section } from '../components';
+import { useBranding } from '../providers/branding';
import type { TemplateDocumentCancelProps } from '../template-components/template-document-cancel';
import { TemplateDocumentCancel } from '../template-components/template-document-cancel';
import { TemplateFooter } from '../template-components/template-footer';
@@ -13,7 +15,10 @@ export const DocumentCancelTemplate = ({
documentName = 'Open Source Pledge.pdf',
assetBaseUrl = 'http://localhost:3002',
}: DocumentCancelEmailTemplateProps) => {
- const previewText = `${inviterName} has cancelled the document ${documentName}, you don't need to sign it anymore.`;
+ const { _ } = useLingui();
+ const branding = useBranding();
+
+ const previewText = msg`${inviterName} has cancelled the document ${documentName}, you don't need to sign it anymore.`;
const getAssetUrl = (path: string) => {
return new URL(path, assetBaseUrl).toString();
@@ -22,43 +27,38 @@ export const DocumentCancelTemplate = ({
return (
- {previewText}
-
-
-
-
-
+ {_(previewText)}
+
+
+
+
+
+ {branding.brandingEnabled && branding.brandingLogo ? (
+
+ ) : (
+ )}
-
-
-
+
+
+
-
+
-
-
-
-
-
-
+
+
+
+
+
);
};
diff --git a/packages/email/templates/document-completed.tsx b/packages/email/templates/document-completed.tsx
index 5e23be873..f00c51130 100644
--- a/packages/email/templates/document-completed.tsx
+++ b/packages/email/templates/document-completed.tsx
@@ -1,6 +1,8 @@
-import config from '@documenso/tailwind-config';
+import { msg } from '@lingui/macro';
+import { useLingui } from '@lingui/react';
-import { Body, Container, Head, Html, Img, Preview, Section, Tailwind } from '../components';
+import { Body, Container, Head, Html, Img, Preview, Section } from '../components';
+import { useBranding } from '../providers/branding';
import type { TemplateDocumentCompletedProps } from '../template-components/template-document-completed';
import { TemplateDocumentCompleted } from '../template-components/template-document-completed';
import { TemplateFooter } from '../template-components/template-footer';
@@ -15,7 +17,10 @@ export const DocumentCompletedEmailTemplate = ({
assetBaseUrl = 'http://localhost:3002',
customBody,
}: DocumentCompletedEmailTemplateProps) => {
- const previewText = `Completed Document`;
+ const { _ } = useLingui();
+ const branding = useBranding();
+
+ const previewText = msg`Completed Document`;
const getAssetUrl = (path: string) => {
return new URL(path, assetBaseUrl).toString();
@@ -24,41 +29,36 @@ export const DocumentCompletedEmailTemplate = ({
return (
- {previewText}
-
-
-
-
-
+ {_(previewText)}
+
+
+
+
+
+ {branding.brandingEnabled && branding.brandingLogo ? (
+
+ ) : (
+ )}
-
-
-
+
+
+
-
-
-
-
-
-
+
+
+
+
+
);
};
diff --git a/packages/email/templates/document-created-from-direct-template.tsx b/packages/email/templates/document-created-from-direct-template.tsx
index 68ad3363b..8fd3db84f 100644
--- a/packages/email/templates/document-created-from-direct-template.tsx
+++ b/packages/email/templates/document-created-from-direct-template.tsx
@@ -1,18 +1,10 @@
-import { RECIPIENT_ROLES_DESCRIPTION_ENG } from '@documenso/lib/constants/recipient-roles';
-import config from '@documenso/tailwind-config';
+import { Trans, msg } from '@lingui/macro';
+import { useLingui } from '@lingui/react';
-import {
- Body,
- Button,
- Container,
- Head,
- Html,
- Img,
- Preview,
- Section,
- Tailwind,
- Text,
-} from '../components';
+import { RECIPIENT_ROLES_DESCRIPTION } from '@documenso/lib/constants/recipient-roles';
+
+import { Body, Button, Container, Head, Html, Img, Preview, Section, Text } from '../components';
+import { useBranding } from '../providers/branding';
import TemplateDocumentImage from '../template-components/template-document-image';
import { TemplateFooter } from '../template-components/template-footer';
import { RecipientRole } from '.prisma/client';
@@ -32,9 +24,12 @@ export const DocumentCreatedFromDirectTemplateEmailTemplate = ({
documentName = 'Open Source Pledge.pdf',
assetBaseUrl = 'http://localhost:3002',
}: DocumentCompletedEmailTemplateProps) => {
- const action = RECIPIENT_ROLES_DESCRIPTION_ENG[recipientRole].actioned.toLowerCase();
+ const { _ } = useLingui();
+ const branding = useBranding();
- const previewText = `Document created from direct template`;
+ const action = _(RECIPIENT_ROLES_DESCRIPTION[recipientRole].actioned).toLowerCase();
+
+ const previewText = msg`Document created from direct template`;
const getAssetUrl = (path: string) => {
return new URL(path, assetBaseUrl).toString();
@@ -43,55 +38,52 @@ export const DocumentCreatedFromDirectTemplateEmailTemplate = ({
return (
- {previewText}
-
-
-
-
-
+ {_(previewText)}
+
+
+
+
+
+ {branding.brandingEnabled && branding.brandingLogo ? (
+
+ ) : (
+ )}
-
+
-
-
+
+
+
{recipientName} {action} a document by using one of your direct links
-
+
+
-
- {documentName}
-
+
+ {documentName}
+
-
+
-
+
+
-
-
-
-
-
-
+
+
+
+
+
);
};
diff --git a/packages/email/templates/document-invite.tsx b/packages/email/templates/document-invite.tsx
index 30c6ae960..2db1cccdb 100644
--- a/packages/email/templates/document-invite.tsx
+++ b/packages/email/templates/document-invite.tsx
@@ -1,20 +1,11 @@
-import { RECIPIENT_ROLES_DESCRIPTION_ENG } from '@documenso/lib/constants/recipient-roles';
-import type { RecipientRole } from '@documenso/prisma/client';
-import config from '@documenso/tailwind-config';
+import { Trans, msg } from '@lingui/macro';
+import { useLingui } from '@lingui/react';
-import {
- Body,
- Container,
- Head,
- Hr,
- Html,
- Img,
- Link,
- Preview,
- Section,
- Tailwind,
- Text,
-} from '../components';
+import { RECIPIENT_ROLES_DESCRIPTION } from '@documenso/lib/constants/recipient-roles';
+import type { RecipientRole } from '@documenso/prisma/client';
+
+import { Body, Container, Head, Hr, Html, Img, Link, Preview, Section, Text } from '../components';
+import { useBranding } from '../providers/branding';
import type { TemplateDocumentInviteProps } from '../template-components/template-document-invite';
import { TemplateDocumentInvite } from '../template-components/template-document-invite';
import { TemplateFooter } from '../template-components/template-footer';
@@ -26,6 +17,7 @@ export type DocumentInviteEmailTemplateProps = Partial {
- const action = RECIPIENT_ROLES_DESCRIPTION_ENG[role].actionVerb.toLowerCase();
+ const { _ } = useLingui();
+ const branding = useBranding();
- const previewText = selfSigner
- ? `Please ${action} your document ${documentName}`
- : isTeamInvite
- ? `${inviterName} on behalf of ${teamName} has invited you to ${action} ${documentName}`
- : `${inviterName} has invited you to ${action} ${documentName}`;
+ const action = _(RECIPIENT_ROLES_DESCRIPTION[role].actionVerb).toLowerCase();
+
+ let previewText = msg`${inviterName} has invited you to ${action} ${documentName}`;
+
+ if (isTeamInvite) {
+ previewText = includeSenderDetails
+ ? msg`${inviterName} on behalf of ${teamName} has invited you to ${action} ${documentName}`
+ : msg`${teamName} has invited you to ${action} ${documentName}`;
+ }
+
+ if (selfSigner) {
+ previewText = msg`Please ${action} your document ${documentName}`;
+ }
const getAssetUrl = (path: string) => {
return new URL(path, assetBaseUrl).toString();
@@ -55,67 +57,67 @@ export const DocumentInviteEmailTemplate = ({
return (
- {previewText}
-
-
-
-
-
+ {_(previewText)}
+
+
+
+
+
+ {branding.brandingEnabled && branding.brandingLogo ? (
+
+ ) : (
+ )}
-
-
-
+
+
+
-
-
-
+
+
+
+
{inviterName}{' '}
({inviterEmail})
-
+
+
-
- {customBody ? (
- {customBody}
- ) : (
- `${inviterName} has invited you to ${action} the document "${documentName}".`
- )}
-
-
-
+
+ {customBody ? (
+ {customBody}
+ ) : (
+
+ {inviterName} has invited you to {action} the document "{documentName}".
+
+ )}
+
+
+
-
+
-
-
-
-
-
-
+
+
+
+
+
);
};
diff --git a/packages/email/templates/document-pending.tsx b/packages/email/templates/document-pending.tsx
index f14671e10..6ed8b58d2 100644
--- a/packages/email/templates/document-pending.tsx
+++ b/packages/email/templates/document-pending.tsx
@@ -1,6 +1,8 @@
-import config from '@documenso/tailwind-config';
+import { msg } from '@lingui/macro';
+import { useLingui } from '@lingui/react';
-import { Body, Container, Head, Html, Img, Preview, Section, Tailwind } from '../components';
+import { Body, Container, Head, Html, Img, Preview, Section } from '../components';
+import { useBranding } from '../providers/branding';
import type { TemplateDocumentPendingProps } from '../template-components/template-document-pending';
import { TemplateDocumentPending } from '../template-components/template-document-pending';
import { TemplateFooter } from '../template-components/template-footer';
@@ -11,7 +13,10 @@ export const DocumentPendingEmailTemplate = ({
documentName = 'Open Source Pledge.pdf',
assetBaseUrl = 'http://localhost:3002',
}: DocumentPendingEmailTemplateProps) => {
- const previewText = `Pending Document`;
+ const { _ } = useLingui();
+ const branding = useBranding();
+
+ const previewText = msg`Pending Document`;
const getAssetUrl = (path: string) => {
return new URL(path, assetBaseUrl).toString();
@@ -20,36 +25,31 @@ export const DocumentPendingEmailTemplate = ({
return (
-
{previewText}
-
-
-
-
-
+ {_(previewText)}
+
+
+
+
+
+ {branding.brandingEnabled && branding.brandingLogo ? (
+
+ ) : (
+ )}
-
-
-
+
+
+
-
-
-
-
-
-
+
+
+
+
+
);
};
diff --git a/packages/email/templates/document-rejected.tsx b/packages/email/templates/document-rejected.tsx
new file mode 100644
index 000000000..b2ded80bd
--- /dev/null
+++ b/packages/email/templates/document-rejected.tsx
@@ -0,0 +1,70 @@
+import { msg } from '@lingui/macro';
+import { useLingui } from '@lingui/react';
+
+import { Body, Container, Head, Html, Img, Preview, Section } from '../components';
+import { useBranding } from '../providers/branding';
+import { TemplateDocumentRejected } from '../template-components/template-document-rejected';
+import { TemplateFooter } from '../template-components/template-footer';
+
+type DocumentRejectedEmailProps = {
+ recipientName: string;
+ documentName: string;
+ documentUrl: string;
+ rejectionReason: string;
+ assetBaseUrl?: string;
+};
+
+export function DocumentRejectedEmail({
+ recipientName,
+ documentName,
+ documentUrl,
+ rejectionReason,
+ assetBaseUrl = 'http://localhost:3002',
+}: DocumentRejectedEmailProps) {
+ const { _ } = useLingui();
+ const branding = useBranding();
+
+ const previewText = _(msg`${recipientName} has rejected the document '${documentName}'`);
+
+ const getAssetUrl = (path: string) => {
+ return new URL(path, assetBaseUrl).toString();
+ };
+
+ return (
+
+
+ {previewText}
+
+
+
+
+
+ {branding.brandingEnabled && branding.brandingLogo ? (
+
+ ) : (
+
+ )}
+
+
+
+
+
+
+
+
+
+
+
+ );
+}
+
+export default DocumentRejectedEmail;
diff --git a/packages/email/templates/document-rejection-confirmed.tsx b/packages/email/templates/document-rejection-confirmed.tsx
new file mode 100644
index 000000000..a223d1f1d
--- /dev/null
+++ b/packages/email/templates/document-rejection-confirmed.tsx
@@ -0,0 +1,70 @@
+import { msg } from '@lingui/macro';
+import { useLingui } from '@lingui/react';
+
+import { Body, Container, Head, Html, Img, Preview, Section } from '../components';
+import { useBranding } from '../providers/branding';
+import { TemplateDocumentRejectionConfirmed } from '../template-components/template-document-rejection-confirmed';
+import { TemplateFooter } from '../template-components/template-footer';
+
+export type DocumentRejectionConfirmedEmailProps = {
+ recipientName: string;
+ documentName: string;
+ documentOwnerName: string;
+ reason: string;
+ assetBaseUrl?: string;
+};
+
+export function DocumentRejectionConfirmedEmail({
+ recipientName,
+ documentName,
+ documentOwnerName,
+ reason,
+ assetBaseUrl = 'http://localhost:3002',
+}: DocumentRejectionConfirmedEmailProps) {
+ const { _ } = useLingui();
+ const branding = useBranding();
+
+ const previewText = _(msg`You have rejected the document '${documentName}'`);
+
+ const getAssetUrl = (path: string) => {
+ return new URL(path, assetBaseUrl).toString();
+ };
+
+ return (
+
+
+
{previewText}
+
+
+
+
+
+ {branding.brandingEnabled && branding.brandingLogo ? (
+
+ ) : (
+
+ )}
+
+
+
+
+
+
+
+
+
+
+
+ );
+}
+
+export default DocumentRejectionConfirmedEmail;
diff --git a/packages/email/templates/document-self-signed.tsx b/packages/email/templates/document-self-signed.tsx
index aa1c89b10..b53f15363 100644
--- a/packages/email/templates/document-self-signed.tsx
+++ b/packages/email/templates/document-self-signed.tsx
@@ -1,6 +1,8 @@
-import config from '@documenso/tailwind-config';
+import { msg } from '@lingui/macro';
+import { useLingui } from '@lingui/react';
-import { Body, Container, Head, Html, Img, Preview, Section, Tailwind } from '../components';
+import { Body, Container, Head, Html, Img, Preview, Section } from '../components';
+import { useBranding } from '../providers/branding';
import type { TemplateDocumentSelfSignedProps } from '../template-components/template-document-self-signed';
import { TemplateDocumentSelfSigned } from '../template-components/template-document-self-signed';
import { TemplateFooter } from '../template-components/template-footer';
@@ -11,7 +13,10 @@ export const DocumentSelfSignedEmailTemplate = ({
documentName = 'Open Source Pledge.pdf',
assetBaseUrl = 'http://localhost:3002',
}: DocumentSelfSignedTemplateProps) => {
- const previewText = `Completed Document`;
+ const { _ } = useLingui();
+ const branding = useBranding();
+
+ const previewText = msg`Completed Document`;
const getAssetUrl = (path: string) => {
return new URL(path, assetBaseUrl).toString();
@@ -20,39 +25,31 @@ export const DocumentSelfSignedEmailTemplate = ({
return (
-
{previewText}
-
-
-
-
-
+ {_(previewText)}
+
+
+
+
+
+ {branding.brandingEnabled && branding.brandingLogo ? (
+
+ ) : (
+ )}
-
-
-
+
+
+
-
-
-
-
-
-
+
+
+
+
+
);
};
diff --git a/packages/email/templates/document-super-delete.tsx b/packages/email/templates/document-super-delete.tsx
index 68384e119..0378db056 100644
--- a/packages/email/templates/document-super-delete.tsx
+++ b/packages/email/templates/document-super-delete.tsx
@@ -1,6 +1,8 @@
-import config from '@documenso/tailwind-config';
+import { msg } from '@lingui/macro';
+import { useLingui } from '@lingui/react';
-import { Body, Container, Head, Hr, Html, Img, Preview, Section, Tailwind } from '../components';
+import { Body, Container, Head, Hr, Html, Img, Preview, Section } from '../components';
+import { useBranding } from '../providers/branding';
import {
TemplateDocumentDelete,
type TemplateDocumentDeleteProps,
@@ -14,7 +16,10 @@ export const DocumentSuperDeleteEmailTemplate = ({
assetBaseUrl = 'http://localhost:3002',
reason = 'Unknown',
}: DocumentDeleteEmailTemplateProps) => {
- const previewText = `An admin has deleted your document "${documentName}".`;
+ const { _ } = useLingui();
+ const branding = useBranding();
+
+ const previewText = msg`An admin has deleted your document "${documentName}".`;
const getAssetUrl = (path: string) => {
return new URL(path, assetBaseUrl).toString();
@@ -23,42 +28,37 @@ export const DocumentSuperDeleteEmailTemplate = ({
return (
- {previewText}
-
-
-
-
-
+ {_(previewText)}
+
+
+
+
+
+ {branding.brandingEnabled && branding.brandingLogo ? (
+
+ ) : (
+ )}
-
-
-
+
+
+
-
+
-
-
-
-
-
-
+
+
+
+
+
);
};
diff --git a/packages/email/templates/forgot-password.tsx b/packages/email/templates/forgot-password.tsx
index 7fe62cd20..6b2d1014b 100644
--- a/packages/email/templates/forgot-password.tsx
+++ b/packages/email/templates/forgot-password.tsx
@@ -1,6 +1,8 @@
-import config from '@documenso/tailwind-config';
+import { msg } from '@lingui/macro';
+import { useLingui } from '@lingui/react';
-import { Body, Container, Head, Html, Img, Preview, Section, Tailwind } from '../components';
+import { Body, Container, Head, Html, Img, Preview, Section } from '../components';
+import { useBranding } from '../providers/branding';
import { TemplateFooter } from '../template-components/template-footer';
import type { TemplateForgotPasswordProps } from '../template-components/template-forgot-password';
import { TemplateForgotPassword } from '../template-components/template-forgot-password';
@@ -11,7 +13,10 @@ export const ForgotPasswordTemplate = ({
resetPasswordLink = 'https://documenso.com',
assetBaseUrl = 'http://localhost:3002',
}: ForgotPasswordTemplateProps) => {
- const previewText = `Password Reset Requested`;
+ const { _ } = useLingui();
+ const branding = useBranding();
+
+ const previewText = msg`Password Reset Requested`;
const getAssetUrl = (path: string) => {
return new URL(path, assetBaseUrl).toString();
@@ -20,41 +25,36 @@ export const ForgotPasswordTemplate = ({
return (
-
{previewText}
-
-
-
-
-
+ {_(previewText)}
+
+
+
+
+
+ {branding.brandingEnabled && branding.brandingLogo ? (
+
+ ) : (
+ )}
-
-
-
+
+
+
-
+
-
-
-
-
-
-
+
+
+
+
+
);
};
diff --git a/packages/email/templates/recipient-removed-from-document.tsx b/packages/email/templates/recipient-removed-from-document.tsx
index 4fa22a28e..f3c6ad05a 100644
--- a/packages/email/templates/recipient-removed-from-document.tsx
+++ b/packages/email/templates/recipient-removed-from-document.tsx
@@ -1,17 +1,8 @@
-import config from '@documenso/tailwind-config';
+import { Trans, msg } from '@lingui/macro';
+import { useLingui } from '@lingui/react';
-import {
- Body,
- Container,
- Head,
- Hr,
- Html,
- Img,
- Preview,
- Section,
- Tailwind,
- Text,
-} from '../components';
+import { Body, Container, Head, Hr, Html, Img, Preview, Section, Text } from '../components';
+import { useBranding } from '../providers/branding';
import type { TemplateDocumentCancelProps } from '../template-components/template-document-cancel';
import TemplateDocumentImage from '../template-components/template-document-image';
import { TemplateFooter } from '../template-components/template-footer';
@@ -23,7 +14,10 @@ export const RecipientRemovedFromDocumentTemplate = ({
documentName = 'Open Source Pledge.pdf',
assetBaseUrl = 'http://localhost:3002',
}: DocumentCancelEmailTemplateProps) => {
- const previewText = `${inviterName} has removed you from the document ${documentName}.`;
+ const { _ } = useLingui();
+ const branding = useBranding();
+
+ const previewText = msg`${inviterName} has removed you from the document ${documentName}.`;
const getAssetUrl = (path: string) => {
return new URL(path, assetBaseUrl).toString();
@@ -32,45 +26,42 @@ export const RecipientRemovedFromDocumentTemplate = ({
return (
-
{previewText}
-
-
-
-
-
+ {_(previewText)}
+
+
+
+
+
+ {branding.brandingEnabled && branding.brandingLogo ? (
+
+ ) : (
+ )}
-
+
-
-
+
+
+
{inviterName} has removed you from the document
"{documentName}"
-
-
+
+
-
+
+
-
+
-
-
-
-
-
-
+
+
+
+
+
);
};
diff --git a/packages/email/templates/reset-password.tsx b/packages/email/templates/reset-password.tsx
index c6c1201c6..ecde44ec9 100644
--- a/packages/email/templates/reset-password.tsx
+++ b/packages/email/templates/reset-password.tsx
@@ -1,18 +1,8 @@
-import config from '@documenso/tailwind-config';
+import { Trans, msg } from '@lingui/macro';
+import { useLingui } from '@lingui/react';
-import {
- Body,
- Container,
- Head,
- Hr,
- Html,
- Img,
- Link,
- Preview,
- Section,
- Tailwind,
- Text,
-} from '../components';
+import { Body, Container, Head, Hr, Html, Img, Link, Preview, Section, Text } from '../components';
+import { useBranding } from '../providers/branding';
import { TemplateFooter } from '../template-components/template-footer';
import type { TemplateResetPasswordProps } from '../template-components/template-reset-password';
import { TemplateResetPassword } from '../template-components/template-reset-password';
@@ -24,7 +14,10 @@ export const ResetPasswordTemplate = ({
userEmail = 'lucas@documenso.com',
assetBaseUrl = 'http://localhost:3002',
}: ResetPasswordTemplateProps) => {
- const previewText = `Password Reset Successful`;
+ const { _ } = useLingui();
+ const branding = useBranding();
+
+ const previewText = msg`Password Reset Successful`;
const getAssetUrl = (path: string) => {
return new URL(path, assetBaseUrl).toString();
@@ -33,65 +26,66 @@ export const ResetPasswordTemplate = ({
return (
-
{previewText}
-
-
-
-
-
+ {_(previewText)}
+
+
+
+
+
+ {branding.brandingEnabled && branding.brandingLogo ? (
+
+ ) : (
+ )}
-
-
-
+
+
+
-
-
-
+
+
+
+
Hi, {userName}{' '}
({userEmail})
-
+
+
-
+
+
We've changed your password as you asked. You can now sign in with your new
password.
-
-
+
+
+
+
Didn't request a password change? We are here to help you secure your account,
just{' '}
contact us.
-
-
-
+
+
+
+
-
+
-
-
-
-
-
-
+
+
+
+
+
);
};
diff --git a/packages/email/templates/team-delete.tsx b/packages/email/templates/team-delete.tsx
index 240757338..a4830f9b3 100644
--- a/packages/email/templates/team-delete.tsx
+++ b/packages/email/templates/team-delete.tsx
@@ -1,7 +1,10 @@
-import { formatTeamUrl } from '@documenso/lib/utils/teams';
-import config from '@documenso/tailwind-config';
+import { msg } from '@lingui/macro';
+import { useLingui } from '@lingui/react';
-import { Body, Container, Head, Hr, Html, Preview, Section, Tailwind, Text } from '../components';
+import { formatTeamUrl } from '@documenso/lib/utils/teams';
+
+import { Body, Container, Head, Hr, Html, Img, Preview, Section, Text } from '../components';
+import { useBranding } from '../providers/branding';
import { TemplateFooter } from '../template-components/template-footer';
import TemplateImage from '../template-components/template-image';
@@ -18,67 +21,65 @@ export const TeamDeleteEmailTemplate = ({
teamUrl = 'demo',
isOwner = false,
}: TeamDeleteEmailProps) => {
+ const { _ } = useLingui();
+ const branding = useBranding();
+
const previewText = isOwner
- ? 'Your team has been deleted'
- : 'A team you were a part of has been deleted';
+ ? msg`Your team has been deleted`
+ : msg`A team you were a part of has been deleted`;
const title = isOwner
- ? 'Your team has been deleted'
- : 'A team you were a part of has been deleted';
+ ? msg`Your team has been deleted`
+ : msg`A team you were a part of has been deleted`;
const description = isOwner
- ? 'The following team has been deleted by you'
- : 'The following team has been deleted by its owner. You will no longer be able to access this team and its documents';
+ ? msg`The following team has been deleted by you`
+ : msg`The following team has been deleted by its owner. You will no longer be able to access this team and its documents`;
return (
- {previewText}
-
-
-
-
+ {_(previewText)}
+
+
+
+
+ {branding.brandingEnabled && branding.brandingLogo ? (
+
+ ) : (
+ )}
-
+
-
- {title}
+
+ {_(title)}
- {description}
+ {_(description)}
-
- {formatTeamUrl(teamUrl, baseUrl)}
-
-
-
+
+ {formatTeamUrl(teamUrl, baseUrl)}
+
+
+
-
+
-
-
-
-
-
-
+
+
+
+
+
);
};
diff --git a/packages/email/templates/team-email-removed.tsx b/packages/email/templates/team-email-removed.tsx
index 0a143d1b9..a5201716a 100644
--- a/packages/email/templates/team-email-removed.tsx
+++ b/packages/email/templates/team-email-removed.tsx
@@ -1,7 +1,10 @@
-import { formatTeamUrl } from '@documenso/lib/utils/teams';
-import config from '@documenso/tailwind-config';
+import { Trans, msg } from '@lingui/macro';
+import { useLingui } from '@lingui/react';
-import { Body, Container, Head, Hr, Html, Preview, Section, Tailwind, Text } from '../components';
+import { formatTeamUrl } from '@documenso/lib/utils/teams';
+
+import { Body, Container, Head, Hr, Html, Img, Preview, Section, Text } from '../components';
+import { useBranding } from '../providers/branding';
import { TemplateFooter } from '../template-components/template-footer';
import TemplateImage from '../template-components/template-image';
@@ -20,62 +23,62 @@ export const TeamEmailRemovedTemplate = ({
teamName = 'Team Name',
teamUrl = 'demo',
}: TeamEmailRemovedTemplateProps) => {
- const previewText = `Team email removed for ${teamName} on Documenso`;
+ const { _ } = useLingui();
+ const branding = useBranding();
+
+ const previewText = msg`Team email removed for ${teamName} on Documenso`;
return (
-
{previewText}
-
-
-
-
+ {_(previewText)}
+
+
+
+
+ {branding.brandingEnabled && branding.brandingLogo ? (
+
+ ) : (
+ )}
-
+
-
-
- Team email removed
-
+
+
+ Team email removed
+
-
+
+
The team email {teamEmail} has been removed
from the following team
-
+
+
-
- {formatTeamUrl(teamUrl, baseUrl)}
-
-
-
+
+ {formatTeamUrl(teamUrl, baseUrl)}
+
+
+
-
+
-
-
-
-
-
-
+
+
+
+
+
);
};
diff --git a/packages/email/templates/team-invite.tsx b/packages/email/templates/team-invite.tsx
index 3c062c4c8..3ddc064b1 100644
--- a/packages/email/templates/team-invite.tsx
+++ b/packages/email/templates/team-invite.tsx
@@ -1,5 +1,7 @@
+import { Trans, msg } from '@lingui/macro';
+import { useLingui } from '@lingui/react';
+
import { formatTeamUrl } from '@documenso/lib/utils/teams';
-import config from '@documenso/tailwind-config';
import {
Body,
@@ -8,11 +10,12 @@ import {
Head,
Hr,
Html,
+ Img,
Preview,
Section,
- Tailwind,
Text,
} from '../components';
+import { useBranding } from '../providers/branding';
import { TemplateFooter } from '../template-components/template-footer';
import TemplateImage from '../template-components/template-image';
@@ -33,80 +36,80 @@ export const TeamInviteEmailTemplate = ({
teamUrl = 'demo',
token = '',
}: TeamInviteEmailProps) => {
- const previewText = `Accept invitation to join a team on Documenso`;
+ const { _ } = useLingui();
+ const branding = useBranding();
+
+ const previewText = msg`Accept invitation to join a team on Documenso`;
return (
- {previewText}
-
-
-
-
+ {_(previewText)}
+
+
+
+
+ {branding.brandingEnabled && branding.brandingLogo ? (
+
+ ) : (
+ )}
-
+
-
-
- Join {teamName} on Documenso
-
+
+
+ Join {teamName} on Documenso
+
-
- You have been invited to join the following team
-
+
+ You have been invited to join the following team
+
-
- {formatTeamUrl(teamUrl, baseUrl)}
-
+
+ {formatTeamUrl(teamUrl, baseUrl)}
+
-
+
+
by {senderName}
-
+
+
-
-
- Accept
-
-
- Decline
-
-
+
+
+ Accept
+
+
+ Decline
+
-
+
+
-
+
-
-
-
-
-
-
+
+
+
+
+
);
};
diff --git a/packages/email/templates/team-join.tsx b/packages/email/templates/team-join.tsx
index b3c1efc2f..95d328140 100644
--- a/packages/email/templates/team-join.tsx
+++ b/packages/email/templates/team-join.tsx
@@ -1,7 +1,10 @@
-import { formatTeamUrl } from '@documenso/lib/utils/teams';
-import config from '@documenso/tailwind-config';
+import { Trans, msg } from '@lingui/macro';
+import { useLingui } from '@lingui/react';
-import { Body, Container, Head, Hr, Html, Preview, Section, Tailwind, Text } from '../components';
+import { formatTeamUrl } from '@documenso/lib/utils/teams';
+
+import { Body, Container, Head, Hr, Html, Img, Preview, Section, Text } from '../components';
+import { useBranding } from '../providers/branding';
import { TemplateFooter } from '../template-components/template-footer';
import TemplateImage from '../template-components/template-image';
@@ -22,61 +25,61 @@ export const TeamJoinEmailTemplate = ({
teamName = 'Team Name',
teamUrl = 'demo',
}: TeamJoinEmailProps) => {
- const previewText = 'A team member has joined a team on Documenso';
+ const { _ } = useLingui();
+ const branding = useBranding();
+
+ const previewText = msg`A team member has joined a team on Documenso`;
return (
-
{previewText}
-
-
-
-
+ {_(previewText)}
+
+
+
+
+ {branding.brandingEnabled && branding.brandingLogo ? (
+
+ ) : (
+ )}
-
+
-
-
+
+
+
{memberName || memberEmail} joined the team {teamName} on Documenso
-
+
+
-
- {memberEmail} joined the following team
-
+
+ {memberEmail} joined the following team
+
-
- {formatTeamUrl(teamUrl, baseUrl)}
-
-
-
+
+ {formatTeamUrl(teamUrl, baseUrl)}
+
+
+
-
+
-
-
-
-
-
-
+
+
+
+
+
);
};
diff --git a/packages/email/templates/team-leave.tsx b/packages/email/templates/team-leave.tsx
index 51b9aaab1..c67902154 100644
--- a/packages/email/templates/team-leave.tsx
+++ b/packages/email/templates/team-leave.tsx
@@ -1,7 +1,10 @@
-import { formatTeamUrl } from '@documenso/lib/utils/teams';
-import config from '@documenso/tailwind-config';
+import { Trans, msg } from '@lingui/macro';
+import { useLingui } from '@lingui/react';
-import { Body, Container, Head, Hr, Html, Preview, Section, Tailwind, Text } from '../components';
+import { formatTeamUrl } from '@documenso/lib/utils/teams';
+
+import { Body, Container, Head, Hr, Html, Img, Preview, Section, Text } from '../components';
+import { useBranding } from '../providers/branding';
import { TemplateFooter } from '../template-components/template-footer';
import TemplateImage from '../template-components/template-image';
@@ -22,61 +25,61 @@ export const TeamLeaveEmailTemplate = ({
teamName = 'Team Name',
teamUrl = 'demo',
}: TeamLeaveEmailProps) => {
- const previewText = 'A team member has left a team on Documenso';
+ const { _ } = useLingui();
+ const branding = useBranding();
+
+ const previewText = msg`A team member has left a team on Documenso`;
return (
- {previewText}
-
-
-
-
+ {_(previewText)}
+
+
+
+
+ {branding.brandingEnabled && branding.brandingLogo ? (
+
+ ) : (
+ )}
-
+
-
-
+
+
+
{memberName || memberEmail} left the team {teamName} on Documenso
-
+
+
-
- {memberEmail} left the following team
-
+
+ {memberEmail} left the following team
+
-
- {formatTeamUrl(teamUrl, baseUrl)}
-
-
-
+
+ {formatTeamUrl(teamUrl, baseUrl)}
+
+
+
-
+
-
-
-
-
-
-
+
+
+
+
+
);
};
diff --git a/packages/email/templates/team-transfer-request.tsx b/packages/email/templates/team-transfer-request.tsx
index 82723226c..480274efb 100644
--- a/packages/email/templates/team-transfer-request.tsx
+++ b/packages/email/templates/team-transfer-request.tsx
@@ -1,18 +1,9 @@
-import { formatTeamUrl } from '@documenso/lib/utils/teams';
-import config from '@documenso/tailwind-config';
+import { Trans, msg } from '@lingui/macro';
+import { useLingui } from '@lingui/react';
-import {
- Body,
- Button,
- Container,
- Head,
- Hr,
- Html,
- Preview,
- Section,
- Tailwind,
- Text,
-} from '../components';
+import { formatTeamUrl } from '@documenso/lib/utils/teams';
+
+import { Body, Button, Container, Head, Hr, Html, Preview, Section, Text } from '../components';
import { TemplateFooter } from '../template-components/template-footer';
import TemplateImage from '../template-components/template-image';
@@ -33,78 +24,77 @@ export const TeamTransferRequestTemplate = ({
teamUrl = 'demo',
token = '',
}: TeamTransferRequestTemplateProps) => {
- const previewText = 'Accept team transfer request on Documenso';
+ const { _ } = useLingui();
+
+ const previewText = msg`Accept team transfer request on Documenso`;
return (
-
{previewText}
-
-
-
-
+ {_(previewText)}
+
+
+
+
+
+
+
-
+
+
+ {teamName} ownership transfer request
+
-
-
- {teamName} ownership transfer request
-
-
-
+
+
{senderName} has requested that you take
ownership of the following team
-
+
+
-
- {formatTeamUrl(teamUrl, baseUrl)}
-
+
+ {formatTeamUrl(teamUrl, baseUrl)}
+
-
+
+
By accepting this request, you will take responsibility for any billing items
associated with this team.
-
+
+
-
+
+
- Link expires in 1 hour.
-
+
+ Link expires in 1 hour.
+
+
-
+
-
-
-
-
-
-
+
+
+
+
+
);
};
diff --git a/packages/lib/client-only/providers/i18n.server.tsx b/packages/lib/client-only/providers/i18n.server.tsx
index 8ee89f3de..9acca3119 100644
--- a/packages/lib/client-only/providers/i18n.server.tsx
+++ b/packages/lib/client-only/providers/i18n.server.tsx
@@ -7,58 +7,94 @@ import { setupI18n } from '@lingui/core';
import { setI18n } from '@lingui/react/server';
import { IS_APP_WEB } from '../../constants/app';
-import { SUPPORTED_LANGUAGE_CODES } from '../../constants/i18n';
+import {
+ APP_I18N_OPTIONS,
+ SUPPORTED_LANGUAGE_CODES,
+ isValidLanguageCode,
+} from '../../constants/i18n';
import { extractLocaleData } from '../../utils/i18n';
+import { remember } from '../../utils/remember';
type SupportedLanguages = (typeof SUPPORTED_LANGUAGE_CODES)[number];
-async function loadCatalog(lang: SupportedLanguages): Promise<{
+export async function loadCatalog(lang: SupportedLanguages): Promise<{
[k: string]: Messages;
}> {
const extension = process.env.NODE_ENV === 'development' ? 'po' : 'js';
const context = IS_APP_WEB ? 'web' : 'marketing';
- const { messages } = await import(`../../translations/${lang}/${context}.${extension}`);
+ let { messages } = await import(`../../translations/${lang}/${context}.${extension}`);
+
+ if (extension === 'po') {
+ const { messages: commonMessages } = await import(
+ `../../translations/${lang}/common.${extension}`
+ );
+
+ messages = { ...messages, ...commonMessages };
+ }
return {
[lang]: messages,
};
}
-const catalogs = await Promise.all(SUPPORTED_LANGUAGE_CODES.map(loadCatalog));
+const catalogs = Promise.all(SUPPORTED_LANGUAGE_CODES.map(loadCatalog));
// transform array of catalogs into a single object
-export const allMessages = catalogs.reduce((acc, oneCatalog) => {
- return { ...acc, ...oneCatalog };
-}, {});
+const allMessages = async () => {
+ return await catalogs.then((catalogs) =>
+ catalogs.reduce((acc, oneCatalog) => {
+ return {
+ ...acc,
+ ...oneCatalog,
+ };
+ }, {}),
+ );
+};
type AllI18nInstances = { [K in SupportedLanguages]: I18n };
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
-export const allI18nInstances = SUPPORTED_LANGUAGE_CODES.reduce((acc, lang) => {
- const messages = allMessages[lang] ?? {};
+export const allI18nInstances = remember('i18n.allI18nInstances', async () => {
+ const loadedMessages = await allMessages();
- const i18n = setupI18n({
- locale: lang,
- messages: { [lang]: messages },
- });
+ // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
+ return SUPPORTED_LANGUAGE_CODES.reduce((acc, lang) => {
+ const messages = loadedMessages[lang] ?? {};
- return { ...acc, [lang]: i18n };
-}, {}) as AllI18nInstances;
+ const i18n = setupI18n({
+ locale: lang,
+ messages: { [lang]: messages },
+ });
+
+ return { ...acc, [lang]: i18n };
+ }, {}) as AllI18nInstances;
+});
+
+// eslint-disable-next-line @typescript-eslint/ban-types
+export const getI18nInstance = async (lang?: SupportedLanguages | (string & {})) => {
+ const instances = await allI18nInstances;
+
+ if (!isValidLanguageCode(lang)) {
+ return instances[APP_I18N_OPTIONS.sourceLang];
+ }
+
+ return instances[lang] ?? instances[APP_I18N_OPTIONS.sourceLang];
+};
/**
* This needs to be run in all layouts and page server components that require i18n.
*
* https://lingui.dev/tutorials/react-rsc#pages-layouts-and-lingui
*/
-export const setupI18nSSR = () => {
+export const setupI18nSSR = async () => {
const { lang, locales } = extractLocaleData({
cookies: cookies(),
headers: headers(),
});
// Get and set a ready-made i18n instance for the given language.
- const i18n = allI18nInstances[lang];
+ const i18n = await getI18nInstance(lang);
// Reactivate the i18n instance with the locale for date and number formatting.
i18n.activate(lang, locales);
diff --git a/packages/lib/client-only/recipient-type.ts b/packages/lib/client-only/recipient-type.ts
index 4e2069087..627765dff 100644
--- a/packages/lib/client-only/recipient-type.ts
+++ b/packages/lib/client-only/recipient-type.ts
@@ -6,6 +6,7 @@ export enum RecipientStatusType {
OPENED = 'opened',
WAITING = 'waiting',
UNSIGNED = 'unsigned',
+ REJECTED = 'rejected',
}
export const getRecipientType = (recipient: Recipient) => {
@@ -16,6 +17,10 @@ export const getRecipientType = (recipient: Recipient) => {
return RecipientStatusType.COMPLETED;
}
+ if (recipient.signingStatus === SigningStatus.REJECTED) {
+ return RecipientStatusType.REJECTED;
+ }
+
if (
recipient.sendStatus === SendStatus.SENT &&
recipient.readStatus === ReadStatus.OPENED &&
diff --git a/packages/lib/constants/document.ts b/packages/lib/constants/document.ts
new file mode 100644
index 000000000..5b5ab2c5f
--- /dev/null
+++ b/packages/lib/constants/document.ts
@@ -0,0 +1,34 @@
+import type { MessageDescriptor } from '@lingui/core';
+import { msg } from '@lingui/macro';
+
+import { DocumentDistributionMethod, DocumentStatus } from '@documenso/prisma/client';
+
+export const DOCUMENT_STATUS: {
+ [status in DocumentStatus]: { description: MessageDescriptor };
+} = {
+ [DocumentStatus.COMPLETED]: {
+ description: msg`Completed`,
+ },
+ [DocumentStatus.DRAFT]: {
+ description: msg`Draft`,
+ },
+ [DocumentStatus.PENDING]: {
+ description: msg`Pending`,
+ },
+};
+
+type DocumentDistributionMethodTypeData = {
+ value: DocumentDistributionMethod;
+ description: MessageDescriptor;
+};
+
+export const DOCUMENT_DISTRIBUTION_METHODS: Record
= {
+ [DocumentDistributionMethod.EMAIL]: {
+ value: DocumentDistributionMethod.EMAIL,
+ description: msg`Email`,
+ },
+ [DocumentDistributionMethod.NONE]: {
+ value: DocumentDistributionMethod.NONE,
+ description: msg`None`,
+ },
+} satisfies Record;
diff --git a/packages/lib/constants/i18n.ts b/packages/lib/constants/i18n.ts
index d940d490b..b3c8a8954 100644
--- a/packages/lib/constants/i18n.ts
+++ b/packages/lib/constants/i18n.ts
@@ -1,6 +1,6 @@
import { z } from 'zod';
-export const SUPPORTED_LANGUAGE_CODES = ['de', 'en', 'fr'] as const;
+export const SUPPORTED_LANGUAGE_CODES = ['de', 'en', 'fr', 'es'] as const;
export const ZSupportedLanguageCodeSchema = z.enum(SUPPORTED_LANGUAGE_CODES).catch('en');
@@ -42,4 +42,11 @@ export const SUPPORTED_LANGUAGES: Record = {
full: 'French',
short: 'fr',
},
+ es: {
+ full: 'Spanish',
+ short: 'es',
+ },
} satisfies Record;
+
+export const isValidLanguageCode = (code: unknown): code is SupportedLanguageCodes =>
+ SUPPORTED_LANGUAGE_CODES.includes(code as SupportedLanguageCodes);
diff --git a/packages/lib/constants/recipient-roles.ts b/packages/lib/constants/recipient-roles.ts
index ba099ceea..ad994c98d 100644
--- a/packages/lib/constants/recipient-roles.ts
+++ b/packages/lib/constants/recipient-roles.ts
@@ -9,63 +9,35 @@ export const RECIPIENT_ROLES_DESCRIPTION = {
actioned: msg`Approved`,
progressiveVerb: msg`Approving`,
roleName: msg`Approver`,
+ roleNamePlural: msg`Approvers`,
},
[RecipientRole.CC]: {
actionVerb: msg`CC`,
actioned: msg`CC'd`,
progressiveVerb: msg`CC`,
roleName: msg`Cc`,
+ roleNamePlural: msg`Ccers`,
},
[RecipientRole.SIGNER]: {
actionVerb: msg`Sign`,
actioned: msg`Signed`,
progressiveVerb: msg`Signing`,
roleName: msg`Signer`,
+ roleNamePlural: msg`Signers`,
},
[RecipientRole.VIEWER]: {
actionVerb: msg`View`,
actioned: msg`Viewed`,
progressiveVerb: msg`Viewing`,
roleName: msg`Viewer`,
- },
-} satisfies Record;
-
-/**
- * Raw english descriptions for emails.
- *
- * Todo: Handle i18n for emails.
- */
-export const RECIPIENT_ROLES_DESCRIPTION_ENG = {
- [RecipientRole.APPROVER]: {
- actionVerb: `Approve`,
- actioned: `Approved`,
- progressiveVerb: `Approving`,
- roleName: `Approver`,
- },
- [RecipientRole.CC]: {
- actionVerb: `CC`,
- actioned: `CC'd`,
- progressiveVerb: `CC`,
- roleName: `Cc`,
- },
- [RecipientRole.SIGNER]: {
- actionVerb: `Sign`,
- actioned: `Signed`,
- progressiveVerb: `Signing`,
- roleName: `Signer`,
- },
- [RecipientRole.VIEWER]: {
- actionVerb: `View`,
- actioned: `Viewed`,
- progressiveVerb: `Viewing`,
- roleName: `Viewer`,
+ roleNamePlural: msg`Viewers`,
},
} satisfies Record;
export const RECIPIENT_ROLE_TO_EMAIL_TYPE = {
- [RecipientRole.SIGNER]: 'SIGNING_REQUEST',
- [RecipientRole.VIEWER]: 'VIEW_REQUEST',
- [RecipientRole.APPROVER]: 'APPROVE_REQUEST',
+ [RecipientRole.SIGNER]: `SIGNING_REQUEST`,
+ [RecipientRole.VIEWER]: `VIEW_REQUEST`,
+ [RecipientRole.APPROVER]: `APPROVE_REQUEST`,
} as const;
export const RECIPIENT_ROLE_SIGNING_REASONS = {
@@ -74,13 +46,3 @@ export const RECIPIENT_ROLE_SIGNING_REASONS = {
[RecipientRole.CC]: msg`I am required to receive a copy of this document`,
[RecipientRole.VIEWER]: msg`I am a viewer of this document`,
} satisfies Record;
-
-/**
- * Raw english descriptions for certificates.
- */
-export const RECIPIENT_ROLE_SIGNING_REASONS_ENG = {
- [RecipientRole.SIGNER]: `I am a signer of this document`,
- [RecipientRole.APPROVER]: `I am an approver of this document`,
- [RecipientRole.CC]: `I am required to receive a copy of this document`,
- [RecipientRole.VIEWER]: `I am a viewer of this document`,
-} satisfies Record;
diff --git a/packages/lib/jobs/client.ts b/packages/lib/jobs/client.ts
index 1e3717927..366c2f517 100644
--- a/packages/lib/jobs/client.ts
+++ b/packages/lib/jobs/client.ts
@@ -1,5 +1,6 @@
import { JobClient } from './client/client';
import { SEND_CONFIRMATION_EMAIL_JOB_DEFINITION } from './definitions/emails/send-confirmation-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';
import { SEND_TEAM_DELETED_EMAIL_JOB_DEFINITION } from './definitions/emails/send-team-deleted-email';
import { SEND_TEAM_MEMBER_JOINED_EMAIL_JOB_DEFINITION } from './definitions/emails/send-team-member-joined-email';
@@ -17,6 +18,7 @@ export const jobsClient = new JobClient([
SEND_TEAM_MEMBER_LEFT_EMAIL_JOB_DEFINITION,
SEND_TEAM_DELETED_EMAIL_JOB_DEFINITION,
SEAL_DOCUMENT_JOB_DEFINITION,
+ SEND_SIGNING_REJECTION_EMAILS_JOB_DEFINITION,
] as const);
export const jobs = jobsClient;
diff --git a/packages/lib/jobs/client/local.ts b/packages/lib/jobs/client/local.ts
index a0405dbf1..b51656210 100644
--- a/packages/lib/jobs/client/local.ts
+++ b/packages/lib/jobs/client/local.ts
@@ -43,18 +43,10 @@ export class LocalJobProvider extends BaseJobProvider {
}
public async triggerJob(options: SimpleTriggerJobOptions) {
- console.log({ jobDefinitions: this._jobDefinitions });
-
const eligibleJobs = Object.values(this._jobDefinitions).filter(
(job) => job.trigger.name === options.name,
);
- console.log({ options });
- console.log(
- 'Eligible jobs:',
- eligibleJobs.map((job) => job.name),
- );
-
await Promise.all(
eligibleJobs.map(async (job) => {
// Ideally we will change this to a createMany with returning later once we upgrade Prisma
@@ -177,7 +169,7 @@ export class LocalJobProvider extends BaseJobProvider {
},
});
} catch (error) {
- console.error(`[JOBS]: Job ${options.name} failed`, error);
+ console.log(`[JOBS]: Job ${options.name} failed`, error);
const taskHasExceededRetries = error instanceof BackgroundTaskExceededRetriesError;
const jobHasExceededRetries =
@@ -303,7 +295,7 @@ export class LocalJobProvider extends BaseJobProvider {
});
return result;
- } catch {
+ } catch (err) {
task = await prisma.backgroundJobTask.update({
where: {
id: task.id,
@@ -317,6 +309,8 @@ export class LocalJobProvider extends BaseJobProvider {
},
});
+ console.log(`[JOBS:${task.id}] Task failed`, err);
+
throw new BackgroundTaskFailedError('Task failed');
}
},
diff --git a/packages/lib/jobs/definitions/emails/send-rejection-emails.ts b/packages/lib/jobs/definitions/emails/send-rejection-emails.ts
new file mode 100644
index 000000000..a3a6914e1
--- /dev/null
+++ b/packages/lib/jobs/definitions/emails/send-rejection-emails.ts
@@ -0,0 +1,169 @@
+import { createElement } from 'react';
+
+import { msg } from '@lingui/macro';
+import { z } from 'zod';
+
+import { mailer } from '@documenso/email/mailer';
+import DocumentRejectedEmail from '@documenso/email/templates/document-rejected';
+import DocumentRejectionConfirmedEmail from '@documenso/email/templates/document-rejection-confirmed';
+import { prisma } from '@documenso/prisma';
+import { SendStatus, SigningStatus } from '@documenso/prisma/client';
+
+import { getI18nInstance } from '../../../client-only/providers/i18n.server';
+import { NEXT_PUBLIC_WEBAPP_URL } from '../../../constants/app';
+import { FROM_ADDRESS, FROM_NAME } from '../../../constants/email';
+import { extractDerivedDocumentEmailSettings } from '../../../types/document-email';
+import { renderEmailWithI18N } from '../../../utils/render-email-with-i18n';
+import { teamGlobalSettingsToBranding } from '../../../utils/team-global-settings-to-branding';
+import { formatDocumentsPath } from '../../../utils/teams';
+import { type JobDefinition } from '../../client/_internal/job';
+
+const SEND_SIGNING_REJECTION_EMAILS_JOB_DEFINITION_ID = 'send.signing.rejected.emails';
+
+const SEND_SIGNING_REJECTION_EMAILS_JOB_DEFINITION_SCHEMA = z.object({
+ documentId: z.number(),
+ recipientId: z.number(),
+});
+
+export const SEND_SIGNING_REJECTION_EMAILS_JOB_DEFINITION = {
+ id: SEND_SIGNING_REJECTION_EMAILS_JOB_DEFINITION_ID,
+ name: 'Send Rejection Emails',
+ version: '1.0.0',
+ trigger: {
+ name: SEND_SIGNING_REJECTION_EMAILS_JOB_DEFINITION_ID,
+ schema: SEND_SIGNING_REJECTION_EMAILS_JOB_DEFINITION_SCHEMA,
+ },
+ handler: async ({ payload, io }) => {
+ const { documentId, recipientId } = payload;
+
+ const [document, recipient] = await Promise.all([
+ prisma.document.findFirstOrThrow({
+ where: {
+ id: documentId,
+ },
+ include: {
+ User: true,
+ documentMeta: true,
+ team: {
+ select: {
+ teamEmail: true,
+ name: true,
+ url: true,
+ teamGlobalSettings: true,
+ },
+ },
+ },
+ }),
+ prisma.recipient.findFirstOrThrow({
+ where: {
+ id: recipientId,
+ signingStatus: SigningStatus.REJECTED,
+ },
+ }),
+ ]);
+
+ const { documentMeta, team, User: documentOwner } = document;
+
+ const isEmailEnabled = extractDerivedDocumentEmailSettings(
+ document.documentMeta,
+ ).recipientSigningRequest;
+
+ if (!isEmailEnabled) {
+ return;
+ }
+
+ const i18n = await getI18nInstance(documentMeta?.language);
+
+ // Send confirmation email to the recipient who rejected
+ await io.runTask('send-rejection-confirmation-email', async () => {
+ const recipientTemplate = createElement(DocumentRejectionConfirmedEmail, {
+ recipientName: recipient.name,
+ documentName: document.title,
+ documentOwnerName: document.User.name || document.User.email,
+ reason: recipient.rejectionReason || '',
+ assetBaseUrl: NEXT_PUBLIC_WEBAPP_URL(),
+ });
+
+ const branding = document.team?.teamGlobalSettings
+ ? teamGlobalSettingsToBranding(document.team.teamGlobalSettings)
+ : undefined;
+
+ const [html, text] = await Promise.all([
+ renderEmailWithI18N(recipientTemplate, { lang: documentMeta?.language, branding }),
+ renderEmailWithI18N(recipientTemplate, {
+ lang: documentMeta?.language,
+ branding,
+ plainText: true,
+ }),
+ ]);
+
+ await mailer.sendMail({
+ to: {
+ name: recipient.name,
+ address: recipient.email,
+ },
+ from: {
+ name: FROM_NAME,
+ address: FROM_ADDRESS,
+ },
+ subject: i18n._(msg`Document "${document.title}" - Rejection Confirmed`),
+ html,
+ text,
+ });
+ });
+
+ // Send notification email to document owner
+ await io.runTask('send-owner-notification-email', async () => {
+ const ownerTemplate = createElement(DocumentRejectedEmail, {
+ recipientName: recipient.name,
+ documentName: document.title,
+ documentUrl: `${NEXT_PUBLIC_WEBAPP_URL()}${formatDocumentsPath(document.team?.url)}/${
+ document.id
+ }`,
+ rejectionReason: recipient.rejectionReason || '',
+ assetBaseUrl: NEXT_PUBLIC_WEBAPP_URL(),
+ });
+
+ const branding = document.team?.teamGlobalSettings
+ ? teamGlobalSettingsToBranding(document.team.teamGlobalSettings)
+ : undefined;
+
+ const [html, text] = await Promise.all([
+ renderEmailWithI18N(ownerTemplate, { lang: documentMeta?.language, branding }),
+ renderEmailWithI18N(ownerTemplate, {
+ lang: documentMeta?.language,
+ branding,
+ plainText: true,
+ }),
+ ]);
+
+ await mailer.sendMail({
+ to: {
+ name: documentOwner.name || '',
+ address: documentOwner.email,
+ },
+ from: {
+ name: FROM_NAME,
+ address: FROM_ADDRESS,
+ },
+ subject: i18n._(msg`Document "${document.title}" - Rejected by ${recipient.name}`),
+ html,
+ text,
+ });
+ });
+
+ await io.runTask('update-recipient', async () => {
+ await prisma.recipient.update({
+ where: {
+ id: recipient.id,
+ },
+ data: {
+ sendStatus: SendStatus.SENT,
+ },
+ });
+ });
+ },
+} as const satisfies JobDefinition<
+ typeof SEND_SIGNING_REJECTION_EMAILS_JOB_DEFINITION_ID,
+ z.infer
+>;
diff --git a/packages/lib/jobs/definitions/emails/send-signing-email.ts b/packages/lib/jobs/definitions/emails/send-signing-email.ts
index beab38cab..32859ce14 100644
--- a/packages/lib/jobs/definitions/emails/send-signing-email.ts
+++ b/packages/lib/jobs/definitions/emails/send-signing-email.ts
@@ -1,9 +1,9 @@
import { createElement } from 'react';
+import { msg } from '@lingui/macro';
import { z } from 'zod';
import { mailer } from '@documenso/email/mailer';
-import { render } from '@documenso/email/render';
import DocumentInviteEmailTemplate from '@documenso/email/templates/document-invite';
import { prisma } from '@documenso/prisma';
import {
@@ -13,16 +13,20 @@ import {
SendStatus,
} from '@documenso/prisma/client';
+import { getI18nInstance } from '../../../client-only/providers/i18n.server';
import { NEXT_PUBLIC_WEBAPP_URL } from '../../../constants/app';
import { FROM_ADDRESS, FROM_NAME } from '../../../constants/email';
import {
- RECIPIENT_ROLES_DESCRIPTION_ENG,
+ RECIPIENT_ROLES_DESCRIPTION,
RECIPIENT_ROLE_TO_EMAIL_TYPE,
} from '../../../constants/recipient-roles';
import { DOCUMENT_AUDIT_LOG_TYPE } from '../../../types/document-audit-logs';
+import { extractDerivedDocumentEmailSettings } from '../../../types/document-email';
import { ZRequestMetadataSchema } from '../../../universal/extract-request-metadata';
import { createDocumentAuditLogData } from '../../../utils/document-audit-logs';
import { renderCustomEmailTemplate } from '../../../utils/render-custom-email-template';
+import { renderEmailWithI18N } from '../../../utils/render-email-with-i18n';
+import { teamGlobalSettingsToBranding } from '../../../utils/team-global-settings-to-branding';
import { type JobDefinition } from '../../client/_internal/job';
const SEND_SIGNING_EMAIL_JOB_DEFINITION_ID = 'send.signing.requested.email';
@@ -62,6 +66,7 @@ export const SEND_SIGNING_EMAIL_JOB_DEFINITION = {
select: {
teamEmail: true,
name: true,
+ teamGlobalSettings: true,
},
},
},
@@ -79,6 +84,14 @@ export const SEND_SIGNING_EMAIL_JOB_DEFINITION = {
return;
}
+ const isRecipientSigningRequestEmailEnabled = extractDerivedDocumentEmailSettings(
+ document.documentMeta,
+ ).recipientSigningRequest;
+
+ if (!isRecipientSigningRequestEmailEnabled) {
+ return;
+ }
+
const customEmail = document?.documentMeta;
const isDirectTemplate = document.source === DocumentSource.TEMPLATE_DIRECT_LINK;
const isTeamDocument = document.teamId !== null;
@@ -87,25 +100,43 @@ export const SEND_SIGNING_EMAIL_JOB_DEFINITION = {
const { email, name } = recipient;
const selfSigner = email === user.email;
- const recipientActionVerb =
- RECIPIENT_ROLES_DESCRIPTION_ENG[recipient.role].actionVerb.toLowerCase();
+
+ const i18n = await getI18nInstance(documentMeta?.language);
+
+ const recipientActionVerb = i18n
+ ._(RECIPIENT_ROLES_DESCRIPTION[recipient.role].actionVerb)
+ .toLowerCase();
let emailMessage = customEmail?.message || '';
- let emailSubject = `Please ${recipientActionVerb} this document`;
+ let emailSubject = i18n._(msg`Please ${recipientActionVerb} this document`);
if (selfSigner) {
- emailMessage = `You have initiated the document ${`"${document.title}"`} that requires you to ${recipientActionVerb} it.`;
- emailSubject = `Please ${recipientActionVerb} your document`;
+ emailMessage = i18n._(
+ msg`You have initiated the document ${`"${document.title}"`} that requires you to ${recipientActionVerb} it.`,
+ );
+ emailSubject = i18n._(msg`Please ${recipientActionVerb} your document`);
}
if (isDirectTemplate) {
- emailMessage = `A document was created by your direct template that requires you to ${recipientActionVerb} it.`;
- emailSubject = `Please ${recipientActionVerb} this document created by your direct template`;
+ emailMessage = i18n._(
+ msg`A document was created by your direct template that requires you to ${recipientActionVerb} it.`,
+ );
+ emailSubject = i18n._(
+ msg`Please ${recipientActionVerb} this document created by your direct template`,
+ );
}
if (isTeamDocument && team) {
- emailSubject = `${team.name} invited you to ${recipientActionVerb} a document`;
- emailMessage = `${user.name} on behalf of ${team.name} has invited you to ${recipientActionVerb} the document "${document.title}".`;
+ emailSubject = i18n._(msg`${team.name} invited you to ${recipientActionVerb} a document`);
+ emailMessage = customEmail?.message ?? '';
+
+ if (!emailMessage) {
+ emailMessage = i18n._(
+ team.teamGlobalSettings?.includeSenderDetails
+ ? msg`${user.name} on behalf of ${team.name} has invited you to ${recipientActionVerb} the document "${document.title}".`
+ : msg`${team.name} has invited you to ${recipientActionVerb} the document "${document.title}".`,
+ );
+ }
}
const customEmailTemplate = {
@@ -129,9 +160,23 @@ export const SEND_SIGNING_EMAIL_JOB_DEFINITION = {
isTeamInvite: isTeamDocument,
teamName: team?.name,
teamEmail: team?.teamEmail?.email,
+ includeSenderDetails: team?.teamGlobalSettings?.includeSenderDetails,
});
await io.runTask('send-signing-email', async () => {
+ const branding = document.team?.teamGlobalSettings
+ ? teamGlobalSettingsToBranding(document.team.teamGlobalSettings)
+ : undefined;
+
+ const [html, text] = await Promise.all([
+ renderEmailWithI18N(template, { lang: documentMeta?.language, branding }),
+ renderEmailWithI18N(template, {
+ lang: documentMeta?.language,
+ branding,
+ plainText: true,
+ }),
+ ]);
+
await mailer.sendMail({
to: {
name: recipient.name,
@@ -145,8 +190,8 @@ export const SEND_SIGNING_EMAIL_JOB_DEFINITION = {
documentMeta?.subject || emailSubject,
customEmailTemplate,
),
- html: render(template),
- text: render(template, { plainText: true }),
+ html,
+ text,
});
});
diff --git a/packages/lib/jobs/definitions/emails/send-team-deleted-email.ts b/packages/lib/jobs/definitions/emails/send-team-deleted-email.ts
index b6bd52cda..3f943b89e 100644
--- a/packages/lib/jobs/definitions/emails/send-team-deleted-email.ts
+++ b/packages/lib/jobs/definitions/emails/send-team-deleted-email.ts
@@ -1,5 +1,7 @@
import { z } from 'zod';
+import { DocumentVisibility } from '@documenso/prisma/client';
+
import { sendTeamDeleteEmail } from '../../../server-only/team/delete-team';
import type { JobDefinition } from '../../client/_internal/job';
@@ -10,6 +12,19 @@ const SEND_TEAM_DELETED_EMAIL_JOB_DEFINITION_SCHEMA = z.object({
name: z.string(),
url: z.string(),
ownerUserId: z.number(),
+ teamGlobalSettings: z
+ .object({
+ documentVisibility: z.nativeEnum(DocumentVisibility),
+ documentLanguage: z.string(),
+ includeSenderDetails: z.boolean(),
+ brandingEnabled: z.boolean(),
+ brandingLogo: z.string(),
+ brandingUrl: z.string(),
+ brandingCompanyDetails: z.string(),
+ brandingHidePoweredBy: z.boolean(),
+ teamId: z.number(),
+ })
+ .nullish(),
}),
members: z.array(
z.object({
@@ -35,8 +50,7 @@ export const SEND_TEAM_DELETED_EMAIL_JOB_DEFINITION = {
await io.runTask(`send-team-deleted-email--${team.url}_${member.id}`, async () => {
await sendTeamDeleteEmail({
email: member.email,
- teamName: team.name,
- teamUrl: team.url,
+ team,
isOwner: member.id === team.ownerUserId,
});
});
diff --git a/packages/lib/jobs/definitions/emails/send-team-member-joined-email.ts b/packages/lib/jobs/definitions/emails/send-team-member-joined-email.ts
index c5afa1cd3..ff606327f 100644
--- a/packages/lib/jobs/definitions/emails/send-team-member-joined-email.ts
+++ b/packages/lib/jobs/definitions/emails/send-team-member-joined-email.ts
@@ -1,13 +1,18 @@
+import { createElement } from 'react';
+
+import { msg } from '@lingui/macro';
import { z } from 'zod';
import { mailer } from '@documenso/email/mailer';
-import { render } from '@documenso/email/render';
import TeamJoinEmailTemplate from '@documenso/email/templates/team-join';
import { prisma } from '@documenso/prisma';
import { TeamMemberRole } from '@documenso/prisma/client';
+import { getI18nInstance } from '../../../client-only/providers/i18n.server';
import { WEBAPP_BASE_URL } from '../../../constants/app';
import { FROM_ADDRESS, FROM_NAME } from '../../../constants/email';
+import { renderEmailWithI18N } from '../../../utils/render-email-with-i18n';
+import { teamGlobalSettingsToBranding } from '../../../utils/team-global-settings-to-branding';
import type { JobDefinition } from '../../client/_internal/job';
const SEND_TEAM_MEMBER_JOINED_EMAIL_JOB_DEFINITION_ID = 'send.team-member-joined.email';
@@ -41,6 +46,7 @@ export const SEND_TEAM_MEMBER_JOINED_EMAIL_JOB_DEFINITION = {
user: true,
},
},
+ teamGlobalSettings: true,
},
});
@@ -62,7 +68,7 @@ export const SEND_TEAM_MEMBER_JOINED_EMAIL_JOB_DEFINITION = {
await io.runTask(
`send-team-member-joined-email--${invitedMember.id}_${member.id}`,
async () => {
- const emailContent = TeamJoinEmailTemplate({
+ const emailContent = createElement(TeamJoinEmailTemplate, {
assetBaseUrl: WEBAPP_BASE_URL,
baseUrl: WEBAPP_BASE_URL,
memberName: invitedMember.user.name || '',
@@ -71,15 +77,36 @@ export const SEND_TEAM_MEMBER_JOINED_EMAIL_JOB_DEFINITION = {
teamUrl: team.url,
});
+ const branding = team.teamGlobalSettings
+ ? teamGlobalSettingsToBranding(team.teamGlobalSettings)
+ : undefined;
+
+ const lang = team.teamGlobalSettings?.documentLanguage;
+
+ // !: Replace with the actual language of the recipient later
+ const [html, text] = await Promise.all([
+ renderEmailWithI18N(emailContent, {
+ lang,
+ branding,
+ }),
+ renderEmailWithI18N(emailContent, {
+ lang,
+ branding,
+ plainText: true,
+ }),
+ ]);
+
+ const i18n = await getI18nInstance(lang);
+
await mailer.sendMail({
to: member.user.email,
from: {
name: FROM_NAME,
address: FROM_ADDRESS,
},
- subject: 'A new member has joined your team',
- html: render(emailContent),
- text: render(emailContent, { plainText: true }),
+ subject: i18n._(msg`A new member has joined your team`),
+ html,
+ text,
});
},
);
diff --git a/packages/lib/jobs/definitions/emails/send-team-member-left-email.ts b/packages/lib/jobs/definitions/emails/send-team-member-left-email.ts
index 55e5ab1e6..598b79ced 100644
--- a/packages/lib/jobs/definitions/emails/send-team-member-left-email.ts
+++ b/packages/lib/jobs/definitions/emails/send-team-member-left-email.ts
@@ -1,13 +1,18 @@
+import { createElement } from 'react';
+
+import { msg } from '@lingui/macro';
import { z } from 'zod';
import { mailer } from '@documenso/email/mailer';
-import { render } from '@documenso/email/render';
import TeamJoinEmailTemplate from '@documenso/email/templates/team-join';
import { prisma } from '@documenso/prisma';
import { TeamMemberRole } from '@documenso/prisma/client';
+import { getI18nInstance } from '../../../client-only/providers/i18n.server';
import { WEBAPP_BASE_URL } from '../../../constants/app';
import { FROM_ADDRESS, FROM_NAME } from '../../../constants/email';
+import { renderEmailWithI18N } from '../../../utils/render-email-with-i18n';
+import { teamGlobalSettingsToBranding } from '../../../utils/team-global-settings-to-branding';
import type { JobDefinition } from '../../client/_internal/job';
const SEND_TEAM_MEMBER_LEFT_EMAIL_JOB_DEFINITION_ID = 'send.team-member-left.email';
@@ -41,6 +46,7 @@ export const SEND_TEAM_MEMBER_LEFT_EMAIL_JOB_DEFINITION = {
user: true,
},
},
+ teamGlobalSettings: true,
},
});
@@ -52,7 +58,7 @@ export const SEND_TEAM_MEMBER_LEFT_EMAIL_JOB_DEFINITION = {
for (const member of team.members) {
await io.runTask(`send-team-member-left-email--${oldMember.id}_${member.id}`, async () => {
- const emailContent = TeamJoinEmailTemplate({
+ const emailContent = createElement(TeamJoinEmailTemplate, {
assetBaseUrl: WEBAPP_BASE_URL,
baseUrl: WEBAPP_BASE_URL,
memberName: oldMember.name || '',
@@ -61,15 +67,35 @@ export const SEND_TEAM_MEMBER_LEFT_EMAIL_JOB_DEFINITION = {
teamUrl: team.url,
});
+ const branding = team.teamGlobalSettings
+ ? teamGlobalSettingsToBranding(team.teamGlobalSettings)
+ : undefined;
+
+ const lang = team.teamGlobalSettings?.documentLanguage;
+
+ const [html, text] = await Promise.all([
+ renderEmailWithI18N(emailContent, {
+ lang,
+ branding,
+ }),
+ renderEmailWithI18N(emailContent, {
+ lang,
+ branding,
+ plainText: true,
+ }),
+ ]);
+
+ const i18n = await getI18nInstance(lang);
+
await mailer.sendMail({
to: member.user.email,
from: {
name: FROM_NAME,
address: FROM_ADDRESS,
},
- subject: `A team member has left ${team.name}`,
- html: render(emailContent),
- text: render(emailContent, { plainText: true }),
+ subject: i18n._(msg`A team member has left ${team.name}`),
+ html,
+ text,
});
});
}
diff --git a/packages/lib/package.json b/packages/lib/package.json
index 5eabe4a26..0dc897f98 100644
--- a/packages/lib/package.json
+++ b/packages/lib/package.json
@@ -25,6 +25,9 @@
"@documenso/email": "*",
"@documenso/prisma": "*",
"@documenso/signing": "*",
+ "@lingui/core": "^4.11.3",
+ "@lingui/macro": "^4.11.3",
+ "@lingui/react": "^4.11.3",
"@next-auth/prisma-adapter": "1.0.7",
"@noble/ciphers": "0.4.0",
"@noble/hashes": "1.3.2",
diff --git a/packages/lib/server-only/2fa/verify-2fa-token.ts b/packages/lib/server-only/2fa/verify-2fa-token.ts
index 0e8ec6afc..c5a4c3c95 100644
--- a/packages/lib/server-only/2fa/verify-2fa-token.ts
+++ b/packages/lib/server-only/2fa/verify-2fa-token.ts
@@ -1,21 +1,25 @@
import { base32 } from '@scure/base';
-import { TOTPController } from 'oslo/otp';
+import { generateHOTP } from 'oslo/otp';
import type { User } from '@documenso/prisma/client';
import { DOCUMENSO_ENCRYPTION_KEY } from '../../constants/crypto';
import { symmetricDecrypt } from '../../universal/crypto';
-const totp = new TOTPController();
-
type VerifyTwoFactorAuthenticationTokenOptions = {
user: User;
totpCode: string;
+ // The number of windows to look back
+ window?: number;
+ // The duration that the token is valid for in seconds
+ period?: number;
};
export const verifyTwoFactorAuthenticationToken = async ({
user,
totpCode,
+ window = 1,
+ period = 30_000,
}: VerifyTwoFactorAuthenticationTokenOptions) => {
const key = DOCUMENSO_ENCRYPTION_KEY;
@@ -27,7 +31,21 @@ export const verifyTwoFactorAuthenticationToken = async ({
'utf-8',
);
- const isValidToken = await totp.verify(totpCode, base32.decode(secret));
+ const decodedSecret = base32.decode(secret);
- return isValidToken;
+ let now = Date.now();
+
+ for (let i = 0; i < window; i++) {
+ const counter = Math.floor(now / period);
+
+ const hotp = await generateHOTP(decodedSecret, counter);
+
+ if (totpCode === hotp) {
+ return true;
+ }
+
+ now -= period;
+ }
+
+ return false;
};
diff --git a/packages/lib/server-only/admin/get-recipients-stats.ts b/packages/lib/server-only/admin/get-recipients-stats.ts
index 07368b5a1..f52c65024 100644
--- a/packages/lib/server-only/admin/get-recipients-stats.ts
+++ b/packages/lib/server-only/admin/get-recipients-stats.ts
@@ -13,6 +13,7 @@ export const getRecipientsStats = async () => {
[ReadStatus.NOT_OPENED]: 0,
[SigningStatus.SIGNED]: 0,
[SigningStatus.NOT_SIGNED]: 0,
+ [SigningStatus.REJECTED]: 0,
[SendStatus.SENT]: 0,
[SendStatus.NOT_SENT]: 0,
};
diff --git a/packages/lib/server-only/auth/send-confirmation-email.ts b/packages/lib/server-only/auth/send-confirmation-email.ts
index ddefa530a..5673d9603 100644
--- a/packages/lib/server-only/auth/send-confirmation-email.ts
+++ b/packages/lib/server-only/auth/send-confirmation-email.ts
@@ -1,11 +1,14 @@
import { createElement } from 'react';
+import { msg } from '@lingui/macro';
+
import { mailer } from '@documenso/email/mailer';
-import { render } from '@documenso/email/render';
import { ConfirmEmailTemplate } from '@documenso/email/templates/confirm-email';
import { prisma } from '@documenso/prisma';
+import { getI18nInstance } from '../../client-only/providers/i18n.server';
import { NEXT_PUBLIC_WEBAPP_URL } from '../../constants/app';
+import { renderEmailWithI18N } from '../../utils/render-email-with-i18n';
export interface SendConfirmationEmailProps {
userId: number;
@@ -45,6 +48,13 @@ export const sendConfirmationEmail = async ({ userId }: SendConfirmationEmailPro
confirmationLink,
});
+ const [html, text] = await Promise.all([
+ renderEmailWithI18N(confirmationTemplate),
+ renderEmailWithI18N(confirmationTemplate, { plainText: true }),
+ ]);
+
+ const i18n = await getI18nInstance();
+
return mailer.sendMail({
to: {
address: user.email,
@@ -54,8 +64,8 @@ export const sendConfirmationEmail = async ({ userId }: SendConfirmationEmailPro
name: senderName,
address: senderAddress,
},
- subject: 'Please confirm your email',
- html: render(confirmationTemplate),
- text: render(confirmationTemplate, { plainText: true }),
+ subject: i18n._(msg`Please confirm your email`),
+ html,
+ text,
});
};
diff --git a/packages/lib/server-only/auth/send-forgot-password.ts b/packages/lib/server-only/auth/send-forgot-password.ts
index 6e3a582a8..fef1543c3 100644
--- a/packages/lib/server-only/auth/send-forgot-password.ts
+++ b/packages/lib/server-only/auth/send-forgot-password.ts
@@ -1,11 +1,14 @@
import { createElement } from 'react';
+import { msg } from '@lingui/macro';
+
import { mailer } from '@documenso/email/mailer';
-import { render } from '@documenso/email/render';
import { ForgotPasswordTemplate } from '@documenso/email/templates/forgot-password';
import { prisma } from '@documenso/prisma';
+import { getI18nInstance } from '../../client-only/providers/i18n.server';
import { NEXT_PUBLIC_WEBAPP_URL } from '../../constants/app';
+import { renderEmailWithI18N } from '../../utils/render-email-with-i18n';
export interface SendForgotPasswordOptions {
userId: number;
@@ -39,6 +42,13 @@ export const sendForgotPassword = async ({ userId }: SendForgotPasswordOptions)
resetPasswordLink,
});
+ const [html, text] = await Promise.all([
+ renderEmailWithI18N(template),
+ renderEmailWithI18N(template, { plainText: true }),
+ ]);
+
+ const i18n = await getI18nInstance();
+
return await mailer.sendMail({
to: {
address: user.email,
@@ -48,8 +58,8 @@ export const sendForgotPassword = async ({ userId }: SendForgotPasswordOptions)
name: process.env.NEXT_PRIVATE_SMTP_FROM_NAME || 'Documenso',
address: process.env.NEXT_PRIVATE_SMTP_FROM_ADDRESS || 'noreply@documenso.com',
},
- subject: 'Forgot Password?',
- html: render(template),
- text: render(template, { plainText: true }),
+ subject: i18n._(msg`Forgot Password?`),
+ html,
+ text,
});
};
diff --git a/packages/lib/server-only/auth/send-reset-password.ts b/packages/lib/server-only/auth/send-reset-password.ts
index 6bcd5820d..03165fcfc 100644
--- a/packages/lib/server-only/auth/send-reset-password.ts
+++ b/packages/lib/server-only/auth/send-reset-password.ts
@@ -1,11 +1,11 @@
import { createElement } from 'react';
import { mailer } from '@documenso/email/mailer';
-import { render } from '@documenso/email/render';
import { ResetPasswordTemplate } from '@documenso/email/templates/reset-password';
import { prisma } from '@documenso/prisma';
import { NEXT_PUBLIC_WEBAPP_URL } from '../../constants/app';
+import { renderEmailWithI18N } from '../../utils/render-email-with-i18n';
export interface SendResetPasswordOptions {
userId: number;
@@ -26,6 +26,11 @@ export const sendResetPassword = async ({ userId }: SendResetPasswordOptions) =>
userName: user.name || '',
});
+ const [html, text] = await Promise.all([
+ renderEmailWithI18N(template),
+ renderEmailWithI18N(template, { plainText: true }),
+ ]);
+
return await mailer.sendMail({
to: {
address: user.email,
@@ -36,7 +41,7 @@ export const sendResetPassword = async ({ userId }: SendResetPasswordOptions) =>
address: process.env.NEXT_PRIVATE_SMTP_FROM_ADDRESS || 'noreply@documenso.com',
},
subject: 'Password Reset Success!',
- html: render(template),
- text: render(template, { plainText: true }),
+ html,
+ text,
});
};
diff --git a/packages/lib/server-only/document-meta/upsert-document-meta.ts b/packages/lib/server-only/document-meta/upsert-document-meta.ts
index 77d62cb72..c6f4fd7a3 100644
--- a/packages/lib/server-only/document-meta/upsert-document-meta.ts
+++ b/packages/lib/server-only/document-meta/upsert-document-meta.ts
@@ -7,7 +7,10 @@ import {
diffDocumentMetaChanges,
} from '@documenso/lib/utils/document-audit-logs';
import { prisma } from '@documenso/prisma';
-import type { DocumentSigningOrder } from '@documenso/prisma/client';
+import type { DocumentDistributionMethod, DocumentSigningOrder } from '@documenso/prisma/client';
+
+import type { SupportedLanguageCodes } from '../../constants/i18n';
+import type { TDocumentEmailSettings } from '../../types/document-email';
export type CreateDocumentMetaOptions = {
documentId: number;
@@ -17,7 +20,11 @@ export type CreateDocumentMetaOptions = {
password?: string;
dateFormat?: string;
redirectUrl?: string;
+ emailSettings?: TDocumentEmailSettings;
signingOrder?: DocumentSigningOrder;
+ distributionMethod?: DocumentDistributionMethod;
+ typedSignatureEnabled?: boolean;
+ language?: SupportedLanguageCodes;
userId: number;
requestMetadata: RequestMetadata;
};
@@ -32,6 +39,10 @@ export const upsertDocumentMeta = async ({
userId,
redirectUrl,
signingOrder,
+ emailSettings,
+ distributionMethod,
+ typedSignatureEnabled,
+ language,
requestMetadata,
}: CreateDocumentMetaOptions) => {
const user = await prisma.user.findFirstOrThrow({
@@ -82,6 +93,10 @@ export const upsertDocumentMeta = async ({
documentId,
redirectUrl,
signingOrder,
+ emailSettings,
+ distributionMethod,
+ typedSignatureEnabled,
+ language,
},
update: {
subject,
@@ -91,6 +106,10 @@ export const upsertDocumentMeta = async ({
timezone,
redirectUrl,
signingOrder,
+ emailSettings,
+ distributionMethod,
+ typedSignatureEnabled,
+ language,
},
});
diff --git a/packages/lib/server-only/document/create-document.ts b/packages/lib/server-only/document/create-document.ts
index a7525d666..2d119eb7e 100644
--- a/packages/lib/server-only/document/create-document.ts
+++ b/packages/lib/server-only/document/create-document.ts
@@ -5,7 +5,9 @@ import { DOCUMENT_AUDIT_LOG_TYPE } from '@documenso/lib/types/document-audit-log
import type { RequestMetadata } from '@documenso/lib/universal/extract-request-metadata';
import { createDocumentAuditLogData } from '@documenso/lib/utils/document-audit-logs';
import { prisma } from '@documenso/prisma';
-import { DocumentSource, WebhookTriggerEvents } from '@documenso/prisma/client';
+import { DocumentSource, DocumentVisibility, WebhookTriggerEvents } from '@documenso/prisma/client';
+import type { Team, TeamGlobalSettings } from '@documenso/prisma/client';
+import { TeamMemberRole } from '@documenso/prisma/client';
import { triggerWebhook } from '../webhooks/trigger/trigger-webhook';
@@ -48,6 +50,51 @@ export const createDocument = async ({
throw new AppError(AppErrorCode.NOT_FOUND, 'Team not found');
}
+ let team: (Team & { teamGlobalSettings: TeamGlobalSettings | null }) | null = null;
+ let userTeamRole: TeamMemberRole | undefined;
+
+ if (teamId) {
+ const teamWithUserRole = await prisma.team.findFirstOrThrow({
+ where: {
+ id: teamId,
+ },
+ include: {
+ teamGlobalSettings: true,
+ members: {
+ where: {
+ userId: userId,
+ },
+ select: {
+ role: true,
+ },
+ },
+ },
+ });
+
+ team = teamWithUserRole;
+ userTeamRole = teamWithUserRole.members[0]?.role;
+ }
+
+ const determineVisibility = (
+ globalVisibility: DocumentVisibility | null | undefined,
+ userRole: TeamMemberRole,
+ ): DocumentVisibility => {
+ const defaultVisibility = globalVisibility ?? DocumentVisibility.EVERYONE;
+
+ if (userRole === TeamMemberRole.ADMIN) {
+ return defaultVisibility;
+ }
+
+ if (userRole === TeamMemberRole.MANAGER) {
+ if (defaultVisibility === DocumentVisibility.ADMIN) {
+ return DocumentVisibility.MANAGER_AND_ABOVE;
+ }
+ return defaultVisibility;
+ }
+
+ return DocumentVisibility.EVERYONE;
+ };
+
return await prisma.$transaction(async (tx) => {
const document = await tx.document.create({
data: {
@@ -56,8 +103,17 @@ export const createDocument = async ({
documentDataId,
userId,
teamId,
+ visibility: determineVisibility(
+ team?.teamGlobalSettings?.documentVisibility,
+ userTeamRole ?? TeamMemberRole.MEMBER,
+ ),
formValues,
source: DocumentSource.DOCUMENT,
+ documentMeta: {
+ create: {
+ language: team?.teamGlobalSettings?.documentLanguage,
+ },
+ },
},
});
diff --git a/packages/lib/server-only/document/delete-document.ts b/packages/lib/server-only/document/delete-document.ts
index f0abb779a..6bcac71c5 100644
--- a/packages/lib/server-only/document/delete-document.ts
+++ b/packages/lib/server-only/document/delete-document.ts
@@ -2,18 +2,30 @@
import { createElement } from 'react';
+import { msg } from '@lingui/macro';
+
import { mailer } from '@documenso/email/mailer';
-import { render } from '@documenso/email/render';
import DocumentCancelTemplate from '@documenso/email/templates/document-cancel';
import { prisma } from '@documenso/prisma';
-import type { Document, DocumentMeta, Recipient, User } from '@documenso/prisma/client';
+import type {
+ Document,
+ DocumentMeta,
+ Recipient,
+ Team,
+ TeamGlobalSettings,
+ User,
+} from '@documenso/prisma/client';
import { DocumentStatus, SendStatus } from '@documenso/prisma/client';
+import { getI18nInstance } from '../../client-only/providers/i18n.server';
import { NEXT_PUBLIC_WEBAPP_URL } from '../../constants/app';
import { FROM_ADDRESS, FROM_NAME } from '../../constants/email';
import { DOCUMENT_AUDIT_LOG_TYPE } from '../../types/document-audit-logs';
+import { extractDerivedDocumentEmailSettings } from '../../types/document-email';
import type { RequestMetadata } from '../../universal/extract-request-metadata';
import { createDocumentAuditLogData } from '../../utils/document-audit-logs';
+import { renderEmailWithI18N } from '../../utils/render-email-with-i18n';
+import { teamGlobalSettingsToBranding } from '../../utils/team-global-settings-to-branding';
export type DeleteDocumentOptions = {
id: number;
@@ -46,8 +58,9 @@ export const deleteDocument = async ({
Recipient: true,
documentMeta: true,
team: {
- select: {
+ include: {
members: true,
+ teamGlobalSettings: true,
},
},
},
@@ -70,6 +83,7 @@ export const deleteDocument = async ({
await handleDocumentOwnerDelete({
document,
user,
+ team: document.team,
requestMetadata,
});
}
@@ -110,6 +124,11 @@ type HandleDocumentOwnerDeleteOptions = {
Recipient: Recipient[];
documentMeta: DocumentMeta | null;
};
+ team?:
+ | (Team & {
+ teamGlobalSettings?: TeamGlobalSettings | null;
+ })
+ | null;
user: User;
requestMetadata?: RequestMetadata;
};
@@ -117,6 +136,7 @@ type HandleDocumentOwnerDeleteOptions = {
const handleDocumentOwnerDelete = async ({
document,
user,
+ team,
requestMetadata,
}: HandleDocumentOwnerDeleteOptions) => {
if (document.deletedAt) {
@@ -185,6 +205,14 @@ const handleDocumentOwnerDelete = async ({
});
});
+ const isDocumentDeleteEmailEnabled = extractDerivedDocumentEmailSettings(
+ document.documentMeta,
+ ).documentDeleted;
+
+ if (!isDocumentDeleteEmailEnabled) {
+ return deletedDocument;
+ }
+
// Send cancellation emails to recipients.
await Promise.all(
document.Recipient.map(async (recipient) => {
@@ -201,6 +229,21 @@ const handleDocumentOwnerDelete = async ({
assetBaseUrl,
});
+ const branding = team?.teamGlobalSettings
+ ? teamGlobalSettingsToBranding(team.teamGlobalSettings)
+ : undefined;
+
+ const [html, text] = await Promise.all([
+ renderEmailWithI18N(template, { lang: document.documentMeta?.language, branding }),
+ renderEmailWithI18N(template, {
+ lang: document.documentMeta?.language,
+ branding,
+ plainText: true,
+ }),
+ ]);
+
+ const i18n = await getI18nInstance(document.documentMeta?.language);
+
await mailer.sendMail({
to: {
address: recipient.email,
@@ -210,9 +253,9 @@ const handleDocumentOwnerDelete = async ({
name: FROM_NAME,
address: FROM_ADDRESS,
},
- subject: 'Document Cancelled',
- html: render(template),
- text: render(template, { plainText: true }),
+ subject: i18n._(msg`Document Cancelled`),
+ html,
+ text,
});
}),
);
diff --git a/packages/lib/server-only/document/find-document-audit-logs.ts b/packages/lib/server-only/document/find-document-audit-logs.ts
index f1ae99947..af5e2f1f2 100644
--- a/packages/lib/server-only/document/find-document-audit-logs.ts
+++ b/packages/lib/server-only/document/find-document-audit-logs.ts
@@ -67,6 +67,7 @@ export const findDocumentAuditLogs = async ({
DOCUMENT_AUDIT_LOG_TYPE.DOCUMENT_RESTORED,
DOCUMENT_AUDIT_LOG_TYPE.DOCUMENT_OPENED,
DOCUMENT_AUDIT_LOG_TYPE.DOCUMENT_RECIPIENT_COMPLETED,
+ DOCUMENT_AUDIT_LOG_TYPE.DOCUMENT_RECIPIENT_REJECTED,
DOCUMENT_AUDIT_LOG_TYPE.DOCUMENT_SENT,
DOCUMENT_AUDIT_LOG_TYPE.DOCUMENT_MOVED_TO_TEAM,
],
diff --git a/packages/lib/server-only/document/find-documents.ts b/packages/lib/server-only/document/find-documents.ts
index 79ae7fd9b..0d0873173 100644
--- a/packages/lib/server-only/document/find-documents.ts
+++ b/packages/lib/server-only/document/find-documents.ts
@@ -2,8 +2,9 @@ import { DateTime } from 'luxon';
import { P, match } from 'ts-pattern';
import { prisma } from '@documenso/prisma';
-import { Prisma, RecipientRole, SigningStatus, TeamMemberRole } from '@documenso/prisma/client';
-import type { Document, Team, TeamEmail, User } from '@documenso/prisma/client';
+import { RecipientRole, SigningStatus, TeamMemberRole } from '@documenso/prisma/client';
+import type { Document, DocumentSource, Team, TeamEmail, User } from '@documenso/prisma/client';
+import { Prisma } from '@documenso/prisma/client';
import { ExtendedDocumentStatus } from '@documenso/prisma/types/extended-document-status';
import { DocumentVisibility } from '../../types/document-visibility';
@@ -16,6 +17,8 @@ export type FindDocumentsOptions = {
userId: number;
teamId?: number;
term?: string;
+ templateId?: number;
+ source?: DocumentSource;
status?: ExtendedDocumentStatus;
page?: number;
perPage?: number;
@@ -32,6 +35,8 @@ export const findDocuments = async ({
userId,
teamId,
term,
+ templateId,
+ source,
status = ExtendedDocumentStatus.ALL,
page = 1,
perPage = 10,
@@ -40,40 +45,38 @@ export const findDocuments = async ({
senderIds,
search,
}: FindDocumentsOptions) => {
- const { user, team } = await prisma.$transaction(async (tx) => {
- const user = await tx.user.findFirstOrThrow({
- where: { id: userId },
- });
-
- let team = null;
-
- if (teamId !== undefined) {
- team = await tx.team.findFirstOrThrow({
- where: {
- id: teamId,
- members: {
- some: {
- userId,
- },
- },
- },
- include: {
- teamEmail: true,
- members: {
- where: {
- userId,
- },
- select: {
- role: true,
- },
- },
- },
- });
- }
-
- return { user, team };
+ const user = await prisma.user.findFirstOrThrow({
+ where: {
+ id: userId,
+ },
});
+ let team = null;
+
+ if (teamId !== undefined) {
+ team = await prisma.team.findFirstOrThrow({
+ where: {
+ id: teamId,
+ members: {
+ some: {
+ userId,
+ },
+ },
+ },
+ include: {
+ teamEmail: true,
+ members: {
+ where: {
+ userId,
+ },
+ select: {
+ role: true,
+ },
+ },
+ },
+ });
+ }
+
const orderByColumn = orderBy?.column ?? 'createdAt';
const orderByDirection = orderBy?.direction ?? 'desc';
const teamMemberRole = team?.members[0].role ?? null;
@@ -113,11 +116,18 @@ export const findDocuments = async ({
}))
.otherwise(() => ({ visibility: DocumentVisibility.EVERYONE })),
{
- Recipient: {
- some: {
- email: user.email,
+ OR: [
+ {
+ Recipient: {
+ some: {
+ email: user.email,
+ },
+ },
},
- },
+ {
+ userId: user.id,
+ },
+ ],
},
];
@@ -137,10 +147,80 @@ export const findDocuments = async ({
};
}
+ let deletedFilter: Prisma.DocumentWhereInput = {
+ AND: {
+ OR: [
+ {
+ userId: user.id,
+ deletedAt: null,
+ },
+ {
+ Recipient: {
+ some: {
+ email: user.email,
+ documentDeletedAt: null,
+ },
+ },
+ },
+ ],
+ },
+ };
+
+ if (team) {
+ deletedFilter = {
+ AND: {
+ OR: team.teamEmail
+ ? [
+ {
+ teamId: team.id,
+ deletedAt: null,
+ },
+ {
+ User: {
+ email: team.teamEmail.email,
+ },
+ deletedAt: null,
+ },
+ {
+ Recipient: {
+ some: {
+ email: team.teamEmail.email,
+ documentDeletedAt: null,
+ },
+ },
+ },
+ ]
+ : [
+ {
+ teamId: team.id,
+ deletedAt: null,
+ },
+ ],
+ },
+ };
+ }
+
+ const whereAndClause: Prisma.DocumentWhereInput['AND'] = [
+ { ...termFilters },
+ { ...filters },
+ { ...deletedFilter },
+ { ...searchFilter },
+ ];
+
+ if (templateId) {
+ whereAndClause.push({
+ templateId,
+ });
+ }
+
+ if (source) {
+ whereAndClause.push({
+ source,
+ });
+ }
+
const whereClause: Prisma.DocumentWhereInput = {
- ...termFilters,
- ...filters,
- ...searchFilter,
+ AND: whereAndClause,
};
if (period) {
diff --git a/packages/lib/server-only/document/get-document-by-id.ts b/packages/lib/server-only/document/get-document-by-id.ts
index bfe2a9a05..d9c0ae993 100644
--- a/packages/lib/server-only/document/get-document-by-id.ts
+++ b/packages/lib/server-only/document/get-document-by-id.ts
@@ -143,11 +143,18 @@ export const getDocumentWhereInput = async ({
])
.otherwise(() => [{ visibility: DocumentVisibility.EVERYONE }]),
{
- Recipient: {
- some: {
- email: user.email,
+ OR: [
+ {
+ Recipient: {
+ some: {
+ email: user.email,
+ },
+ },
},
- },
+ {
+ userId: user.id,
+ },
+ ],
},
];
diff --git a/packages/lib/server-only/document/get-stats.ts b/packages/lib/server-only/document/get-stats.ts
index 62899c1fa..5162e3fa9 100644
--- a/packages/lib/server-only/document/get-stats.ts
+++ b/packages/lib/server-only/document/get-stats.ts
@@ -6,11 +6,10 @@ import { prisma } from '@documenso/prisma';
import { TeamMemberRole } from '@documenso/prisma/client';
import type { Prisma, User } from '@documenso/prisma/client';
import { SigningStatus } from '@documenso/prisma/client';
+import { DocumentVisibility } from '@documenso/prisma/client';
import { isExtendedDocumentStatus } from '@documenso/prisma/guards/is-extended-document-status';
import { ExtendedDocumentStatus } from '@documenso/prisma/types/extended-document-status';
-import { DocumentVisibility } from '../../types/document-visibility';
-
export type GetStatsInput = {
user: User;
team?: Omit;
diff --git a/packages/lib/server-only/document/is-recipient-authorized.ts b/packages/lib/server-only/document/is-recipient-authorized.ts
index 151235fe2..e9596211a 100644
--- a/packages/lib/server-only/document/is-recipient-authorized.ts
+++ b/packages/lib/server-only/document/is-recipient-authorized.ts
@@ -112,6 +112,7 @@ export const isRecipientAuthorized = async ({
return await verifyTwoFactorAuthenticationToken({
user,
totpCode: token,
+ window: 10, // 5 minutes worth of tokens
});
})
.exhaustive();
diff --git a/packages/lib/server-only/document/reject-document-with-token.ts b/packages/lib/server-only/document/reject-document-with-token.ts
new file mode 100644
index 000000000..3ad18a449
--- /dev/null
+++ b/packages/lib/server-only/document/reject-document-with-token.ts
@@ -0,0 +1,92 @@
+import { SigningStatus } from '@prisma/client';
+import { TRPCError } from '@trpc/server';
+
+import { jobs } from '@documenso/lib/jobs/client';
+import { prisma } from '@documenso/prisma';
+
+import { DOCUMENT_AUDIT_LOG_TYPE } from '../../types/document-audit-logs';
+import type { RequestMetadata } from '../../universal/extract-request-metadata';
+import { createDocumentAuditLogData } from '../../utils/document-audit-logs';
+
+export type RejectDocumentWithTokenOptions = {
+ token: string;
+ documentId: number;
+ reason: string;
+ requestMetadata?: RequestMetadata;
+};
+
+export async function rejectDocumentWithToken({
+ token,
+ documentId,
+ reason,
+ requestMetadata,
+}: RejectDocumentWithTokenOptions) {
+ // Find the recipient and document in a single query
+ const recipient = await prisma.recipient.findFirst({
+ where: {
+ token,
+ documentId,
+ },
+ include: {
+ Document: {
+ include: {
+ User: true,
+ },
+ },
+ },
+ });
+
+ const document = recipient?.Document;
+
+ if (!recipient || !document) {
+ throw new TRPCError({
+ code: 'NOT_FOUND',
+ message: 'Document or recipient not found',
+ });
+ }
+
+ // Add the audit log entry before updating the recipient
+
+ // Update the recipient status to rejected
+ const [updatedRecipient] = await prisma.$transaction([
+ prisma.recipient.update({
+ where: {
+ id: recipient.id,
+ },
+ data: {
+ signedAt: new Date(),
+ signingStatus: SigningStatus.REJECTED,
+ rejectionReason: reason,
+ },
+ }),
+ prisma.documentAuditLog.create({
+ data: createDocumentAuditLogData({
+ documentId,
+ type: DOCUMENT_AUDIT_LOG_TYPE.DOCUMENT_RECIPIENT_REJECTED,
+ user: {
+ name: recipient.name,
+ email: recipient.email,
+ },
+ data: {
+ recipientEmail: recipient.email,
+ recipientName: recipient.name,
+ recipientId: recipient.id,
+ recipientRole: recipient.role,
+ reason,
+ },
+ requestMetadata,
+ }),
+ }),
+ ]);
+
+ // Send email notifications
+ await jobs.triggerJob({
+ name: 'send.signing.rejected.emails',
+ payload: {
+ recipientId: recipient.id,
+ documentId,
+ },
+ });
+
+ return updatedRecipient;
+}
diff --git a/packages/lib/server-only/document/resend-document.tsx b/packages/lib/server-only/document/resend-document.tsx
index 30f104e92..d87be344d 100644
--- a/packages/lib/server-only/document/resend-document.tsx
+++ b/packages/lib/server-only/document/resend-document.tsx
@@ -1,11 +1,12 @@
import { createElement } from 'react';
+import { msg } from '@lingui/macro';
+
import { mailer } from '@documenso/email/mailer';
-import { render } from '@documenso/email/render';
import { DocumentInviteEmailTemplate } from '@documenso/email/templates/document-invite';
import { FROM_ADDRESS, FROM_NAME } from '@documenso/lib/constants/email';
import {
- RECIPIENT_ROLES_DESCRIPTION_ENG,
+ RECIPIENT_ROLES_DESCRIPTION,
RECIPIENT_ROLE_TO_EMAIL_TYPE,
} from '@documenso/lib/constants/recipient-roles';
import { DOCUMENT_AUDIT_LOG_TYPE } from '@documenso/lib/types/document-audit-logs';
@@ -16,7 +17,11 @@ import { prisma } from '@documenso/prisma';
import { DocumentStatus, RecipientRole, SigningStatus } from '@documenso/prisma/client';
import type { Prisma } from '@documenso/prisma/client';
+import { getI18nInstance } from '../../client-only/providers/i18n.server';
import { NEXT_PUBLIC_WEBAPP_URL } from '../../constants/app';
+import { extractDerivedDocumentEmailSettings } from '../../types/document-email';
+import { renderEmailWithI18N } from '../../utils/render-email-with-i18n';
+import { teamGlobalSettingsToBranding } from '../../utils/team-global-settings-to-branding';
import { getDocumentWhereInput } from './get-document-by-id';
export type ResendDocumentOptions = {
@@ -62,6 +67,7 @@ export const resendDocument = async ({
select: {
teamEmail: true,
name: true,
+ teamGlobalSettings: true,
},
},
},
@@ -86,31 +92,50 @@ export const resendDocument = async ({
throw new Error('Can not send completed document');
}
+ const isRecipientSigningRequestEmailEnabled = extractDerivedDocumentEmailSettings(
+ document.documentMeta,
+ ).recipientSigningRequest;
+
+ if (!isRecipientSigningRequestEmailEnabled) {
+ return;
+ }
+
await Promise.all(
document.Recipient.map(async (recipient) => {
if (recipient.role === RecipientRole.CC) {
return;
}
+ const i18n = await getI18nInstance(document.documentMeta?.language);
+
const recipientEmailType = RECIPIENT_ROLE_TO_EMAIL_TYPE[recipient.role];
const { email, name } = recipient;
const selfSigner = email === user.email;
- const recipientActionVerb =
- RECIPIENT_ROLES_DESCRIPTION_ENG[recipient.role].actionVerb.toLowerCase();
+ const recipientActionVerb = i18n
+ ._(RECIPIENT_ROLES_DESCRIPTION[recipient.role].actionVerb)
+ .toLowerCase();
let emailMessage = customEmail?.message || '';
- let emailSubject = `Reminder: Please ${recipientActionVerb} this document`;
+ let emailSubject = i18n._(msg`Reminder: Please ${recipientActionVerb} this document`);
if (selfSigner) {
- emailMessage = `You have initiated the document ${`"${document.title}"`} that requires you to ${recipientActionVerb} it.`;
- emailSubject = `Reminder: Please ${recipientActionVerb} your document`;
+ emailMessage = i18n._(
+ msg`You have initiated the document ${`"${document.title}"`} that requires you to ${recipientActionVerb} it.`,
+ );
+ emailSubject = i18n._(msg`Reminder: Please ${recipientActionVerb} your document`);
}
if (isTeamDocument && document.team) {
- emailSubject = `Reminder: ${document.team.name} invited you to ${recipientActionVerb} a document`;
- emailMessage = `${user.name} on behalf of ${document.team.name} has invited you to ${recipientActionVerb} the document "${document.title}".`;
+ emailSubject = i18n._(
+ msg`Reminder: ${document.team.name} invited you to ${recipientActionVerb} a document`,
+ );
+ emailMessage =
+ customEmail?.message ||
+ i18n._(
+ msg`${user.name} on behalf of ${document.team.name} has invited you to ${recipientActionVerb} the document "${document.title}".`,
+ );
}
const customEmailTemplate = {
@@ -135,8 +160,24 @@ export const resendDocument = async ({
teamName: document.team?.name,
});
+ const branding = document.team?.teamGlobalSettings
+ ? teamGlobalSettingsToBranding(document.team.teamGlobalSettings)
+ : undefined;
+
await prisma.$transaction(
async (tx) => {
+ const [html, text] = await Promise.all([
+ renderEmailWithI18N(template, {
+ lang: document.documentMeta?.language,
+ branding,
+ }),
+ renderEmailWithI18N(template, {
+ lang: document.documentMeta?.language,
+ branding,
+ plainText: true,
+ }),
+ ]);
+
await mailer.sendMail({
to: {
address: email,
@@ -147,10 +188,13 @@ export const resendDocument = async ({
address: FROM_ADDRESS,
},
subject: customEmail?.subject
- ? renderCustomEmailTemplate(`Reminder: ${customEmail.subject}`, customEmailTemplate)
+ ? renderCustomEmailTemplate(
+ i18n._(msg`Reminder: ${customEmail.subject}`),
+ customEmailTemplate,
+ )
: emailSubject,
- html: render(template),
- text: render(template, { plainText: true }),
+ html,
+ text,
});
await tx.documentAuditLog.create({
diff --git a/packages/lib/server-only/document/seal-document.ts b/packages/lib/server-only/document/seal-document.ts
index 7c0c3bced..31e66d25f 100644
--- a/packages/lib/server-only/document/seal-document.ts
+++ b/packages/lib/server-only/document/seal-document.ts
@@ -10,6 +10,7 @@ import { DocumentStatus, RecipientRole, SigningStatus } from '@documenso/prisma/
import { WebhookTriggerEvents } from '@documenso/prisma/client';
import { signPdf } from '@documenso/signing';
+import { ZSupportedLanguageCodeSchema } from '../../constants/i18n';
import type { RequestMetadata } from '../../universal/extract-request-metadata';
import { getFile } from '../../universal/upload/get-file';
import { putPdfFile } from '../../universal/upload/put-file';
@@ -45,6 +46,7 @@ export const sealDocument = async ({
},
include: {
documentData: true,
+ documentMeta: true,
Recipient: true,
},
});
@@ -90,7 +92,9 @@ export const sealDocument = async ({
// !: Need to write the fields onto the document as a hard copy
const pdfData = await getFile(documentData);
- const certificate = await getCertificatePdf({ documentId })
+ const documentLanguage = ZSupportedLanguageCodeSchema.parse(document.documentMeta?.language);
+
+ const certificate = await getCertificatePdf({ documentId, language: documentLanguage })
.then(async (doc) => PDFDocument.load(doc))
.catch(() => null);
diff --git a/packages/lib/server-only/document/search-documents-with-keyword.ts b/packages/lib/server-only/document/search-documents-with-keyword.ts
index a9139f5d3..98def25a4 100644
--- a/packages/lib/server-only/document/search-documents-with-keyword.ts
+++ b/packages/lib/server-only/document/search-documents-with-keyword.ts
@@ -1,6 +1,10 @@
+import { match } from 'ts-pattern';
+
+import { formatDocumentsPath } from '@documenso/lib/utils/teams';
import { prisma } from '@documenso/prisma';
import { DocumentStatus } from '@documenso/prisma/client';
import type { Document, Recipient, User } from '@documenso/prisma/client';
+import { DocumentVisibility, TeamMemberRole } from '@documenso/prisma/client';
export type SearchDocumentsWithKeywordOptions = {
query: string;
@@ -67,10 +71,40 @@ export const searchDocumentsWithKeyword = async ({
},
deletedAt: null,
},
+ {
+ title: {
+ contains: query,
+ mode: 'insensitive',
+ },
+ teamId: {
+ not: null,
+ },
+ team: {
+ members: {
+ some: {
+ userId: userId,
+ },
+ },
+ },
+ deletedAt: null,
+ },
],
},
include: {
Recipient: true,
+ team: {
+ select: {
+ url: true,
+ members: {
+ where: {
+ userId: userId,
+ },
+ select: {
+ role: true,
+ },
+ },
+ },
+ },
},
orderBy: {
createdAt: 'desc',
@@ -82,15 +116,48 @@ export const searchDocumentsWithKeyword = async ({
const getSigningLink = (recipients: Recipient[], user: User) =>
`/sign/${recipients.find((r) => r.email === user.email)?.token}`;
- const maskedDocuments = documents.map((document) => {
- const { Recipient, ...documentWithoutRecipient } = document;
+ const maskedDocuments = documents
+ .filter((document) => {
+ if (!document.teamId || isOwner(document, user)) {
+ return true;
+ }
- return {
- ...documentWithoutRecipient,
- path: isOwner(document, user) ? `/documents/${document.id}` : getSigningLink(Recipient, user),
- value: [document.id, document.title, ...document.Recipient.map((r) => r.email)].join(' '),
- };
- });
+ const teamMemberRole = document.team?.members[0]?.role;
+
+ if (!teamMemberRole) {
+ return false;
+ }
+
+ const canAccessDocument = match([document.visibility, teamMemberRole])
+ .with([DocumentVisibility.EVERYONE, TeamMemberRole.ADMIN], () => true)
+ .with([DocumentVisibility.EVERYONE, TeamMemberRole.MANAGER], () => true)
+ .with([DocumentVisibility.EVERYONE, TeamMemberRole.MEMBER], () => true)
+ .with([DocumentVisibility.MANAGER_AND_ABOVE, TeamMemberRole.ADMIN], () => true)
+ .with([DocumentVisibility.MANAGER_AND_ABOVE, TeamMemberRole.MANAGER], () => true)
+ .with([DocumentVisibility.ADMIN, TeamMemberRole.ADMIN], () => true)
+ .otherwise(() => false);
+
+ return canAccessDocument;
+ })
+ .map((document) => {
+ const { Recipient, ...documentWithoutRecipient } = document;
+
+ let documentPath;
+
+ if (isOwner(document, user)) {
+ documentPath = `${formatDocumentsPath(document.team?.url)}/${document.id}`;
+ } else if (document.teamId && document.team) {
+ documentPath = `${formatDocumentsPath(document.team.url)}/${document.id}`;
+ } else {
+ documentPath = getSigningLink(Recipient, user);
+ }
+
+ return {
+ ...documentWithoutRecipient,
+ path: documentPath,
+ value: [document.id, document.title, ...document.Recipient.map((r) => r.email)].join(' '),
+ };
+ });
return maskedDocuments;
};
diff --git a/packages/lib/server-only/document/send-completed-email.ts b/packages/lib/server-only/document/send-completed-email.ts
index cea9d5424..34ae79c0b 100644
--- a/packages/lib/server-only/document/send-completed-email.ts
+++ b/packages/lib/server-only/document/send-completed-email.ts
@@ -1,17 +1,23 @@
import { createElement } from 'react';
+import { msg } from '@lingui/macro';
+
import { mailer } from '@documenso/email/mailer';
-import { render } from '@documenso/email/render';
import { DocumentCompletedEmailTemplate } from '@documenso/email/templates/document-completed';
import { prisma } from '@documenso/prisma';
import { DocumentSource } from '@documenso/prisma/client';
+import { getI18nInstance } from '../../client-only/providers/i18n.server';
import { NEXT_PUBLIC_WEBAPP_URL } from '../../constants/app';
import { DOCUMENT_AUDIT_LOG_TYPE } from '../../types/document-audit-logs';
+import { extractDerivedDocumentEmailSettings } from '../../types/document-email';
import type { RequestMetadata } from '../../universal/extract-request-metadata';
import { getFile } from '../../universal/upload/get-file';
import { createDocumentAuditLogData } from '../../utils/document-audit-logs';
import { renderCustomEmailTemplate } from '../../utils/render-custom-email-template';
+import { renderEmailWithI18N } from '../../utils/render-email-with-i18n';
+import { teamGlobalSettingsToBranding } from '../../utils/team-global-settings-to-branding';
+import { formatDocumentsPath } from '../../utils/teams';
export interface SendDocumentOptions {
documentId: number;
@@ -32,6 +38,7 @@ export const sendCompletedEmail = async ({ documentId, requestMetadata }: SendDo
select: {
id: true,
url: true,
+ teamGlobalSettings: true,
},
},
},
@@ -53,7 +60,9 @@ export const sendCompletedEmail = async ({ documentId, requestMetadata }: SendDo
const assetBaseUrl = NEXT_PUBLIC_WEBAPP_URL() || 'http://localhost:3000';
- let documentOwnerDownloadLink = `${NEXT_PUBLIC_WEBAPP_URL()}/documents/${document.id}`;
+ let documentOwnerDownloadLink = `${NEXT_PUBLIC_WEBAPP_URL()}${formatDocumentsPath(
+ document.team?.url,
+ )}/${document.id}`;
if (document.team?.url) {
documentOwnerDownloadLink = `${NEXT_PUBLIC_WEBAPP_URL()}/t/${document.team.url}/documents/${
@@ -61,14 +70,36 @@ export const sendCompletedEmail = async ({ documentId, requestMetadata }: SendDo
}`;
}
- // If the document owner is not a recipient then send the email to them separately
- if (!document.Recipient.find((recipient) => recipient.email === owner.email)) {
+ const i18n = await getI18nInstance(document.documentMeta?.language);
+
+ const isDocumentCompletedEmailEnabled = extractDerivedDocumentEmailSettings(
+ document.documentMeta,
+ ).documentCompleted;
+
+ // If the document owner is not a recipient, OR recipient emails are disabled, then send the email to them separately.
+ if (
+ !document.Recipient.find((recipient) => recipient.email === owner.email) ||
+ !isDocumentCompletedEmailEnabled
+ ) {
const template = createElement(DocumentCompletedEmailTemplate, {
documentName: document.title,
assetBaseUrl,
downloadLink: documentOwnerDownloadLink,
});
+ const branding = document.team?.teamGlobalSettings
+ ? teamGlobalSettingsToBranding(document.team.teamGlobalSettings)
+ : undefined;
+
+ const [html, text] = await Promise.all([
+ renderEmailWithI18N(template, { lang: document.documentMeta?.language, branding }),
+ renderEmailWithI18N(template, {
+ lang: document.documentMeta?.language,
+ branding,
+ plainText: true,
+ }),
+ ]);
+
await mailer.sendMail({
to: [
{
@@ -80,9 +111,9 @@ export const sendCompletedEmail = async ({ documentId, requestMetadata }: SendDo
name: process.env.NEXT_PRIVATE_SMTP_FROM_NAME || 'Documenso',
address: process.env.NEXT_PRIVATE_SMTP_FROM_ADDRESS || 'noreply@documenso.com',
},
- subject: 'Signing Complete!',
- html: render(template),
- text: render(template, { plainText: true }),
+ subject: i18n._(msg`Signing Complete!`),
+ html,
+ text,
attachments: [
{
filename: document.title.endsWith('.pdf') ? document.title : document.title + '.pdf',
@@ -109,6 +140,10 @@ export const sendCompletedEmail = async ({ documentId, requestMetadata }: SendDo
});
}
+ if (!isDocumentCompletedEmailEnabled) {
+ return;
+ }
+
await Promise.all(
document.Recipient.map(async (recipient) => {
const customEmailTemplate = {
@@ -129,6 +164,19 @@ export const sendCompletedEmail = async ({ documentId, requestMetadata }: SendDo
: undefined,
});
+ const branding = document.team?.teamGlobalSettings
+ ? teamGlobalSettingsToBranding(document.team.teamGlobalSettings)
+ : undefined;
+
+ const [html, text] = await Promise.all([
+ renderEmailWithI18N(template, { lang: document.documentMeta?.language, branding }),
+ renderEmailWithI18N(template, {
+ lang: document.documentMeta?.language,
+ branding,
+ plainText: true,
+ }),
+ ]);
+
await mailer.sendMail({
to: [
{
@@ -143,9 +191,9 @@ export const sendCompletedEmail = async ({ documentId, requestMetadata }: SendDo
subject:
isDirectTemplate && document.documentMeta?.subject
? renderCustomEmailTemplate(document.documentMeta.subject, customEmailTemplate)
- : 'Signing Complete!',
- html: render(template),
- text: render(template, { plainText: true }),
+ : i18n._(msg`Signing Complete!`),
+ html,
+ text,
attachments: [
{
filename: document.title.endsWith('.pdf') ? document.title : document.title + '.pdf',
diff --git a/packages/lib/server-only/document/send-delete-email.ts b/packages/lib/server-only/document/send-delete-email.ts
index cc1101942..85f7534cd 100644
--- a/packages/lib/server-only/document/send-delete-email.ts
+++ b/packages/lib/server-only/document/send-delete-email.ts
@@ -1,11 +1,16 @@
import { createElement } from 'react';
+import { msg } from '@lingui/macro';
+
import { mailer } from '@documenso/email/mailer';
-import { render } from '@documenso/email/render';
import { DocumentSuperDeleteEmailTemplate } from '@documenso/email/templates/document-super-delete';
import { prisma } from '@documenso/prisma';
+import { getI18nInstance } from '../../client-only/providers/i18n.server';
import { NEXT_PUBLIC_WEBAPP_URL } from '../../constants/app';
+import { extractDerivedDocumentEmailSettings } from '../../types/document-email';
+import { renderEmailWithI18N } from '../../utils/render-email-with-i18n';
+import { teamGlobalSettingsToBranding } from '../../utils/team-global-settings-to-branding';
export interface SendDeleteEmailOptions {
documentId: number;
@@ -19,6 +24,12 @@ export const sendDeleteEmail = async ({ documentId, reason }: SendDeleteEmailOpt
},
include: {
User: true,
+ documentMeta: true,
+ team: {
+ include: {
+ teamGlobalSettings: true,
+ },
+ },
},
});
@@ -26,6 +37,14 @@ export const sendDeleteEmail = async ({ documentId, reason }: SendDeleteEmailOpt
throw new Error('Document not found');
}
+ const isDocumentDeletedEmailEnabled = extractDerivedDocumentEmailSettings(
+ document.documentMeta,
+ ).documentDeleted;
+
+ if (!isDocumentDeletedEmailEnabled) {
+ return;
+ }
+
const { email, name } = document.User;
const assetBaseUrl = NEXT_PUBLIC_WEBAPP_URL() || 'http://localhost:3000';
@@ -36,6 +55,21 @@ export const sendDeleteEmail = async ({ documentId, reason }: SendDeleteEmailOpt
assetBaseUrl,
});
+ const branding = document.team?.teamGlobalSettings
+ ? teamGlobalSettingsToBranding(document.team.teamGlobalSettings)
+ : undefined;
+
+ const [html, text] = await Promise.all([
+ renderEmailWithI18N(template, { lang: document.documentMeta?.language, branding }),
+ renderEmailWithI18N(template, {
+ lang: document.documentMeta?.language,
+ branding,
+ plainText: true,
+ }),
+ ]);
+
+ const i18n = await getI18nInstance();
+
await mailer.sendMail({
to: {
address: email,
@@ -45,8 +79,8 @@ export const sendDeleteEmail = async ({ documentId, reason }: SendDeleteEmailOpt
name: process.env.NEXT_PRIVATE_SMTP_FROM_NAME || 'Documenso',
address: process.env.NEXT_PRIVATE_SMTP_FROM_ADDRESS || 'noreply@documenso.com',
},
- subject: 'Document Deleted!',
- html: render(template),
- text: render(template, { plainText: true }),
+ subject: i18n._(msg`Document Deleted!`),
+ html,
+ text,
});
};
diff --git a/packages/lib/server-only/document/send-document.tsx b/packages/lib/server-only/document/send-document.tsx
index 93ec12108..7266963b7 100644
--- a/packages/lib/server-only/document/send-document.tsx
+++ b/packages/lib/server-only/document/send-document.tsx
@@ -13,6 +13,7 @@ import {
import { WebhookTriggerEvents } from '@documenso/prisma/client';
import { jobs } from '../../jobs/client';
+import { extractDerivedDocumentEmailSettings } from '../../types/document-email';
import { getFile } from '../../universal/upload/get-file';
import { insertFormValuesInPdf } from '../pdf/insert-form-values-in-pdf';
import { triggerWebhook } from '../webhooks/trigger/trigger-webhook';
@@ -29,7 +30,7 @@ export const sendDocument = async ({
documentId,
userId,
teamId,
- sendEmail = true,
+ sendEmail,
requestMetadata,
}: SendDocumentOptions) => {
const user = await prisma.user.findFirstOrThrow({
@@ -156,7 +157,14 @@ export const sendDocument = async ({
// throw new Error('Some signers have not been assigned a signature field.');
// }
- if (sendEmail) {
+ const isRecipientSigningRequestEmailEnabled = extractDerivedDocumentEmailSettings(
+ document.documentMeta,
+ ).recipientSigningRequest;
+
+ // Only send email if one of the following is true:
+ // - It is explicitly set
+ // - The email is enabled for signing requests AND sendEmail is undefined
+ if (sendEmail || (isRecipientSigningRequestEmailEnabled && sendEmail === undefined)) {
await Promise.all(
recipientsToNotify.map(async (recipient) => {
if (recipient.sendStatus === SendStatus.SENT || recipient.role === RecipientRole.CC) {
diff --git a/packages/lib/server-only/document/send-pending-email.ts b/packages/lib/server-only/document/send-pending-email.ts
index 73e938a7d..2b599b256 100644
--- a/packages/lib/server-only/document/send-pending-email.ts
+++ b/packages/lib/server-only/document/send-pending-email.ts
@@ -1,11 +1,16 @@
import { createElement } from 'react';
+import { msg } from '@lingui/macro';
+
import { mailer } from '@documenso/email/mailer';
-import { render } from '@documenso/email/render';
import { DocumentPendingEmailTemplate } from '@documenso/email/templates/document-pending';
import { prisma } from '@documenso/prisma';
+import { getI18nInstance } from '../../client-only/providers/i18n.server';
import { NEXT_PUBLIC_WEBAPP_URL } from '../../constants/app';
+import { extractDerivedDocumentEmailSettings } from '../../types/document-email';
+import { renderEmailWithI18N } from '../../utils/render-email-with-i18n';
+import { teamGlobalSettingsToBranding } from '../../utils/team-global-settings-to-branding';
export interface SendPendingEmailOptions {
documentId: number;
@@ -28,6 +33,12 @@ export const sendPendingEmail = async ({ documentId, recipientId }: SendPendingE
id: recipientId,
},
},
+ documentMeta: true,
+ team: {
+ include: {
+ teamGlobalSettings: true,
+ },
+ },
},
});
@@ -39,6 +50,14 @@ export const sendPendingEmail = async ({ documentId, recipientId }: SendPendingE
throw new Error('Document has no recipients');
}
+ const isDocumentPendingEmailEnabled = extractDerivedDocumentEmailSettings(
+ document.documentMeta,
+ ).documentPending;
+
+ if (!isDocumentPendingEmailEnabled) {
+ return;
+ }
+
const [recipient] = document.Recipient;
const { email, name } = recipient;
@@ -50,6 +69,21 @@ export const sendPendingEmail = async ({ documentId, recipientId }: SendPendingE
assetBaseUrl,
});
+ const branding = document.team?.teamGlobalSettings
+ ? teamGlobalSettingsToBranding(document.team.teamGlobalSettings)
+ : undefined;
+
+ const [html, text] = await Promise.all([
+ renderEmailWithI18N(template, { lang: document.documentMeta?.language, branding }),
+ renderEmailWithI18N(template, {
+ lang: document.documentMeta?.language,
+ branding,
+ plainText: true,
+ }),
+ ]);
+
+ const i18n = await getI18nInstance(document.documentMeta?.language);
+
await mailer.sendMail({
to: {
address: email,
@@ -59,8 +93,8 @@ export const sendPendingEmail = async ({ documentId, recipientId }: SendPendingE
name: process.env.NEXT_PRIVATE_SMTP_FROM_NAME || 'Documenso',
address: process.env.NEXT_PRIVATE_SMTP_FROM_ADDRESS || 'noreply@documenso.com',
},
- subject: 'Waiting for others to complete signing.',
- html: render(template),
- text: render(template, { plainText: true }),
+ subject: i18n._(msg`Waiting for others to complete signing.`),
+ html,
+ text,
});
};
diff --git a/packages/lib/server-only/document/super-delete-document.ts b/packages/lib/server-only/document/super-delete-document.ts
index 0dfc9c163..856d0365c 100644
--- a/packages/lib/server-only/document/super-delete-document.ts
+++ b/packages/lib/server-only/document/super-delete-document.ts
@@ -2,17 +2,22 @@
import { createElement } from 'react';
+import { msg } from '@lingui/macro';
+
import { mailer } from '@documenso/email/mailer';
-import { render } from '@documenso/email/render';
import DocumentCancelTemplate from '@documenso/email/templates/document-cancel';
import { prisma } from '@documenso/prisma';
import { DocumentStatus, SendStatus } from '@documenso/prisma/client';
+import { getI18nInstance } from '../../client-only/providers/i18n.server';
import { NEXT_PUBLIC_WEBAPP_URL } from '../../constants/app';
import { FROM_ADDRESS, FROM_NAME } from '../../constants/email';
import { DOCUMENT_AUDIT_LOG_TYPE } from '../../types/document-audit-logs';
+import { extractDerivedDocumentEmailSettings } from '../../types/document-email';
import type { RequestMetadata } from '../../universal/extract-request-metadata';
import { createDocumentAuditLogData } from '../../utils/document-audit-logs';
+import { renderEmailWithI18N } from '../../utils/render-email-with-i18n';
+import { teamGlobalSettingsToBranding } from '../../utils/team-global-settings-to-branding';
export type SuperDeleteDocumentOptions = {
id: number;
@@ -28,6 +33,11 @@ export const superDeleteDocument = async ({ id, requestMetadata }: SuperDeleteDo
Recipient: true,
documentMeta: true,
User: true,
+ team: {
+ include: {
+ teamGlobalSettings: true,
+ },
+ },
},
});
@@ -37,8 +47,16 @@ export const superDeleteDocument = async ({ id, requestMetadata }: SuperDeleteDo
const { status, User: user } = document;
+ const isDocumentDeletedEmailEnabled = extractDerivedDocumentEmailSettings(
+ document.documentMeta,
+ ).documentDeleted;
+
// if the document is pending, send cancellation emails to all recipients
- if (status === DocumentStatus.PENDING && document.Recipient.length > 0) {
+ if (
+ status === DocumentStatus.PENDING &&
+ document.Recipient.length > 0 &&
+ isDocumentDeletedEmailEnabled
+ ) {
await Promise.all(
document.Recipient.map(async (recipient) => {
if (recipient.sendStatus !== SendStatus.SENT) {
@@ -53,6 +71,21 @@ export const superDeleteDocument = async ({ id, requestMetadata }: SuperDeleteDo
assetBaseUrl,
});
+ const branding = document.team?.teamGlobalSettings
+ ? teamGlobalSettingsToBranding(document.team.teamGlobalSettings)
+ : undefined;
+
+ const [html, text] = await Promise.all([
+ renderEmailWithI18N(template, { lang: document.documentMeta?.language, branding }),
+ renderEmailWithI18N(template, {
+ lang: document.documentMeta?.language,
+ branding,
+ plainText: true,
+ }),
+ ]);
+
+ const i18n = await getI18nInstance(document.documentMeta?.language);
+
await mailer.sendMail({
to: {
address: recipient.email,
@@ -62,9 +95,9 @@ export const superDeleteDocument = async ({ id, requestMetadata }: SuperDeleteDo
name: FROM_NAME,
address: FROM_ADDRESS,
},
- subject: 'Document Cancelled',
- html: render(template),
- text: render(template, { plainText: true }),
+ subject: i18n._(msg`Document Cancelled`),
+ html,
+ text,
});
}),
);
diff --git a/packages/lib/server-only/document/update-document-settings.ts b/packages/lib/server-only/document/update-document-settings.ts
index ebf663a60..2c118c8e7 100644
--- a/packages/lib/server-only/document/update-document-settings.ts
+++ b/packages/lib/server-only/document/update-document-settings.ts
@@ -1,13 +1,15 @@
'use server';
+import { match } from 'ts-pattern';
+
import { isUserEnterprise } from '@documenso/ee/server-only/util/is-document-enterprise';
import { DOCUMENT_AUDIT_LOG_TYPE } from '@documenso/lib/types/document-audit-logs';
import type { RequestMetadata } from '@documenso/lib/universal/extract-request-metadata';
import type { CreateDocumentAuditLogDataResponse } from '@documenso/lib/utils/document-audit-logs';
import { createDocumentAuditLogData } from '@documenso/lib/utils/document-audit-logs';
import { prisma } from '@documenso/prisma';
-import type { DocumentVisibility } from '@documenso/prisma/client';
-import { DocumentStatus } from '@documenso/prisma/client';
+import { DocumentVisibility } from '@documenso/prisma/client';
+import { DocumentStatus, TeamMemberRole } from '@documenso/prisma/client';
import { AppError, AppErrorCode } from '../../errors/app-error';
import type { TDocumentAccessAuthTypes, TDocumentActionAuthTypes } from '../../types/document-auth';
@@ -20,7 +22,7 @@ export type UpdateDocumentSettingsOptions = {
data: {
title?: string;
externalId?: string | null;
- visibility?: string | null;
+ visibility?: DocumentVisibility | null;
globalAccessAuth?: TDocumentAccessAuthTypes | null;
globalActionAuth?: TDocumentActionAuthTypes | null;
};
@@ -63,8 +65,62 @@ export const updateDocumentSettings = async ({
teamId: null,
}),
},
+ include: {
+ team: {
+ select: {
+ members: {
+ where: {
+ userId,
+ },
+ select: {
+ role: true,
+ },
+ },
+ },
+ },
+ },
});
+ if (teamId) {
+ const currentUserRole = document.team?.members[0]?.role;
+
+ match(currentUserRole)
+ .with(TeamMemberRole.ADMIN, () => true)
+ .with(TeamMemberRole.MANAGER, () => {
+ const allowedVisibilities: DocumentVisibility[] = [
+ DocumentVisibility.EVERYONE,
+ DocumentVisibility.MANAGER_AND_ABOVE,
+ ];
+
+ if (
+ !allowedVisibilities.includes(document.visibility) ||
+ (data.visibility && !allowedVisibilities.includes(data.visibility))
+ ) {
+ throw new AppError(
+ AppErrorCode.UNAUTHORIZED,
+ 'You do not have permission to update the document visibility',
+ );
+ }
+ })
+ .with(TeamMemberRole.MEMBER, () => {
+ if (
+ document.visibility !== DocumentVisibility.EVERYONE ||
+ (data.visibility && data.visibility !== DocumentVisibility.EVERYONE)
+ ) {
+ throw new AppError(
+ AppErrorCode.UNAUTHORIZED,
+ 'You do not have permission to update the document visibility',
+ );
+ }
+ })
+ .otherwise(() => {
+ throw new AppError(
+ AppErrorCode.UNAUTHORIZED,
+ 'You do not have permission to update the document',
+ );
+ });
+ }
+
const { documentAuthOption } = extractDocumentAuthMethods({
documentAuth: document.authOptions,
});
diff --git a/packages/lib/server-only/htmltopdf/get-certificate-pdf.ts b/packages/lib/server-only/htmltopdf/get-certificate-pdf.ts
index 56c2e32cf..e5348ae1e 100644
--- a/packages/lib/server-only/htmltopdf/get-certificate-pdf.ts
+++ b/packages/lib/server-only/htmltopdf/get-certificate-pdf.ts
@@ -2,13 +2,15 @@ import { DateTime } from 'luxon';
import type { Browser } from 'playwright';
import { NEXT_PUBLIC_WEBAPP_URL } from '../../constants/app';
+import type { SupportedLanguageCodes } from '../../constants/i18n';
import { encryptSecondaryData } from '../crypto/encrypt';
export type GetCertificatePdfOptions = {
documentId: number;
+ language?: SupportedLanguageCodes;
};
-export const getCertificatePdf = async ({ documentId }: GetCertificatePdfOptions) => {
+export const getCertificatePdf = async ({ documentId, language }: GetCertificatePdfOptions) => {
const { chromium } = await import('playwright');
const encryptedId = encryptSecondaryData({
@@ -32,7 +34,19 @@ export const getCertificatePdf = async ({ documentId }: GetCertificatePdfOptions
);
}
- const page = await browser.newPage();
+ const browserContext = await browser.newContext();
+
+ const page = await browserContext.newPage();
+
+ if (language) {
+ await page.context().addCookies([
+ {
+ name: 'language',
+ value: language,
+ url: NEXT_PUBLIC_WEBAPP_URL(),
+ },
+ ]);
+ }
await page.goto(`${NEXT_PUBLIC_WEBAPP_URL()}/__htmltopdf/certificate?d=${encryptedId}`, {
waitUntil: 'networkidle',
@@ -43,6 +57,8 @@ export const getCertificatePdf = async ({ documentId }: GetCertificatePdfOptions
format: 'A4',
});
+ await browserContext.close();
+
void browser.close();
return result;
diff --git a/packages/lib/server-only/public-api/create-api-token.ts b/packages/lib/server-only/public-api/create-api-token.ts
index ee6927878..3d54eb26d 100644
--- a/packages/lib/server-only/public-api/create-api-token.ts
+++ b/packages/lib/server-only/public-api/create-api-token.ts
@@ -51,7 +51,7 @@ export const createApiToken = async ({
name: tokenName,
token: hashedToken,
expires: expiresIn ? DateTime.now().plus(timeConstantsRecords[expiresIn]).toJSDate() : null,
- userId: teamId ? null : userId,
+ userId,
teamId,
},
});
diff --git a/packages/lib/server-only/public-api/delete-api-token-by-id.ts b/packages/lib/server-only/public-api/delete-api-token-by-id.ts
index 75d7fc385..9a5033d4f 100644
--- a/packages/lib/server-only/public-api/delete-api-token-by-id.ts
+++ b/packages/lib/server-only/public-api/delete-api-token-by-id.ts
@@ -25,8 +25,7 @@ export const deleteTokenById = async ({ id, userId, teamId }: DeleteTokenByIdOpt
return await prisma.apiToken.delete({
where: {
id,
- userId: teamId ? null : userId,
- teamId,
+ teamId: teamId ?? null,
},
});
};
diff --git a/packages/lib/server-only/public-api/get-all-user-tokens.ts b/packages/lib/server-only/public-api/get-all-user-tokens.ts
index 1ba31a6cf..5561a308f 100644
--- a/packages/lib/server-only/public-api/get-all-user-tokens.ts
+++ b/packages/lib/server-only/public-api/get-all-user-tokens.ts
@@ -8,6 +8,7 @@ export const getUserTokens = async ({ userId }: GetUserTokensOptions) => {
return await prisma.apiToken.findMany({
where: {
userId,
+ teamId: null,
},
select: {
id: true,
diff --git a/packages/lib/server-only/public-api/get-api-token-by-token.ts b/packages/lib/server-only/public-api/get-api-token-by-token.ts
index cc73c8bd9..401a82178 100644
--- a/packages/lib/server-only/public-api/get-api-token-by-token.ts
+++ b/packages/lib/server-only/public-api/get-api-token-by-token.ts
@@ -23,7 +23,8 @@ export const getApiTokenByToken = async ({ token }: { token: string }) => {
throw new Error('Expired token');
}
- if (apiToken.team) {
+ // Handle a silly choice from many moons ago
+ if (apiToken.team && !apiToken.user) {
apiToken.user = await prisma.user.findFirst({
where: {
id: apiToken.team.ownerUserId,
@@ -33,9 +34,13 @@ export const getApiTokenByToken = async ({ token }: { token: string }) => {
const { user } = apiToken;
+ // This will never happen but we need to narrow types
if (!user) {
throw new Error('Invalid token');
}
- return { ...apiToken, user };
+ return {
+ ...apiToken,
+ user,
+ };
};
diff --git a/packages/lib/server-only/recipient/set-recipients-for-document.ts b/packages/lib/server-only/recipient/set-recipients-for-document.ts
index d5ab3c3d5..309995e11 100644
--- a/packages/lib/server-only/recipient/set-recipients-for-document.ts
+++ b/packages/lib/server-only/recipient/set-recipients-for-document.ts
@@ -1,8 +1,9 @@
import { createElement } from 'react';
+import { msg } from '@lingui/macro';
+
import { isUserEnterprise } from '@documenso/ee/server-only/util/is-document-enterprise';
import { mailer } from '@documenso/email/mailer';
-import { render } from '@documenso/email/render';
import RecipientRemovedFromDocumentTemplate from '@documenso/email/templates/recipient-removed-from-document';
import { DOCUMENT_AUDIT_LOG_TYPE } from '@documenso/lib/types/document-audit-logs';
import {
@@ -21,10 +22,14 @@ import type { Recipient } from '@documenso/prisma/client';
import { RecipientRole } from '@documenso/prisma/client';
import { SendStatus, SigningStatus } from '@documenso/prisma/client';
+import { getI18nInstance } from '../../client-only/providers/i18n.server';
import { NEXT_PUBLIC_WEBAPP_URL } from '../../constants/app';
import { FROM_ADDRESS, FROM_NAME } from '../../constants/email';
import { AppError, AppErrorCode } from '../../errors/app-error';
+import { extractDerivedDocumentEmailSettings } from '../../types/document-email';
import { canRecipientBeModified } from '../../utils/recipients';
+import { renderEmailWithI18N } from '../../utils/render-email-with-i18n';
+import { teamGlobalSettingsToBranding } from '../../utils/team-global-settings-to-branding';
export interface SetRecipientsForDocumentOptions {
userId: number;
@@ -62,6 +67,12 @@ export const setRecipientsForDocument = async ({
},
include: {
Field: true,
+ documentMeta: true,
+ team: {
+ include: {
+ teamGlobalSettings: true,
+ },
+ },
},
});
@@ -276,10 +287,14 @@ export const setRecipientsForDocument = async ({
});
});
+ const isRecipientRemovedEmailEnabled = extractDerivedDocumentEmailSettings(
+ document.documentMeta,
+ ).recipientRemoved;
+
// Send emails to deleted recipients.
await Promise.all(
removedRecipients.map(async (recipient) => {
- if (recipient.sendStatus !== SendStatus.SENT) {
+ if (recipient.sendStatus !== SendStatus.SENT || !isRecipientRemovedEmailEnabled) {
return;
}
@@ -291,6 +306,17 @@ export const setRecipientsForDocument = async ({
assetBaseUrl,
});
+ const branding = document.team?.teamGlobalSettings
+ ? teamGlobalSettingsToBranding(document.team.teamGlobalSettings)
+ : undefined;
+
+ const [html, text] = await Promise.all([
+ renderEmailWithI18N(template, { lang: document.documentMeta?.language }),
+ renderEmailWithI18N(template, { lang: document.documentMeta?.language, plainText: true }),
+ ]);
+
+ const i18n = await getI18nInstance(document.documentMeta?.language);
+
await mailer.sendMail({
to: {
address: recipient.email,
@@ -300,9 +326,9 @@ export const setRecipientsForDocument = async ({
name: FROM_NAME,
address: FROM_ADDRESS,
},
- subject: 'You have been removed from a document',
- html: render(template),
- text: render(template, { plainText: true }),
+ subject: i18n._(msg`You have been removed from a document`),
+ html,
+ text,
});
}),
);
diff --git a/packages/lib/server-only/team/accept-team-invitation.ts b/packages/lib/server-only/team/accept-team-invitation.ts
index 0a7da6d15..5004809fa 100644
--- a/packages/lib/server-only/team/accept-team-invitation.ts
+++ b/packages/lib/server-only/team/accept-team-invitation.ts
@@ -42,7 +42,16 @@ export const acceptTeamInvitation = async ({ userId, teamId }: AcceptTeamInvitat
});
if (teamMemberInvite.status === TeamMemberInviteStatus.ACCEPTED) {
- return;
+ const memberExists = await tx.teamMember.findFirst({
+ where: {
+ teamId: teamMemberInvite.teamId,
+ userId: user.id,
+ },
+ });
+
+ if (memberExists) {
+ return;
+ }
}
const { team } = teamMemberInvite;
@@ -81,7 +90,7 @@ export const acceptTeamInvitation = async ({ userId, teamId }: AcceptTeamInvitat
await jobs.triggerJob({
name: 'send.team-member-joined.email',
payload: {
- teamId: team.id,
+ teamId: teamMember.teamId,
memberId: teamMember.id,
},
});
diff --git a/packages/lib/server-only/team/create-team-email-verification.ts b/packages/lib/server-only/team/create-team-email-verification.ts
index 86cded7a9..61c5c9b91 100644
--- a/packages/lib/server-only/team/create-team-email-verification.ts
+++ b/packages/lib/server-only/team/create-team-email-verification.ts
@@ -1,9 +1,9 @@
import { createElement } from 'react';
+import { msg } from '@lingui/macro';
import { z } from 'zod';
import { mailer } from '@documenso/email/mailer';
-import { render } from '@documenso/email/render';
import { ConfirmTeamEmailTemplate } from '@documenso/email/templates/confirm-team-email';
import { WEBAPP_BASE_URL } from '@documenso/lib/constants/app';
import { FROM_ADDRESS, FROM_NAME } from '@documenso/lib/constants/email';
@@ -11,8 +11,13 @@ import { TEAM_MEMBER_ROLE_PERMISSIONS_MAP } from '@documenso/lib/constants/teams
import { AppError, AppErrorCode } from '@documenso/lib/errors/app-error';
import { createTokenVerification } from '@documenso/lib/utils/token-verification';
import { prisma } from '@documenso/prisma';
+import type { Team, TeamGlobalSettings } from '@documenso/prisma/client';
import { Prisma } from '@documenso/prisma/client';
+import { getI18nInstance } from '../../client-only/providers/i18n.server';
+import { renderEmailWithI18N } from '../../utils/render-email-with-i18n';
+import { teamGlobalSettingsToBranding } from '../../utils/team-global-settings-to-branding';
+
export type CreateTeamEmailVerificationOptions = {
userId: number;
teamId: number;
@@ -45,6 +50,7 @@ export const createTeamEmailVerification = async ({
include: {
teamEmail: true,
emailVerification: true,
+ teamGlobalSettings: true,
},
});
@@ -77,7 +83,7 @@ export const createTeamEmailVerification = async ({
},
});
- await sendTeamEmailVerificationEmail(data.email, token, team.name, team.url);
+ await sendTeamEmailVerificationEmail(data.email, token, team);
},
{ timeout: 30_000 },
);
@@ -109,27 +115,47 @@ export const createTeamEmailVerification = async ({
export const sendTeamEmailVerificationEmail = async (
email: string,
token: string,
- teamName: string,
- teamUrl: string,
+ team: Team & {
+ teamGlobalSettings?: TeamGlobalSettings | null;
+ },
) => {
const assetBaseUrl = process.env.NEXT_PUBLIC_WEBAPP_URL || 'http://localhost:3000';
const template = createElement(ConfirmTeamEmailTemplate, {
assetBaseUrl,
baseUrl: WEBAPP_BASE_URL,
- teamName,
- teamUrl,
+ teamName: team.name,
+ teamUrl: team.url,
token,
});
+ const branding = team.teamGlobalSettings
+ ? teamGlobalSettingsToBranding(team.teamGlobalSettings)
+ : undefined;
+
+ const lang = team.teamGlobalSettings?.documentLanguage;
+
+ const [html, text] = await Promise.all([
+ renderEmailWithI18N(template, { lang, branding }),
+ renderEmailWithI18N(template, {
+ lang,
+ branding,
+ plainText: true,
+ }),
+ ]);
+
+ const i18n = await getI18nInstance(lang);
+
await mailer.sendMail({
to: email,
from: {
name: FROM_NAME,
address: FROM_ADDRESS,
},
- subject: `A request to use your email has been initiated by ${teamName} on Documenso`,
- html: render(template),
- text: render(template, { plainText: true }),
+ subject: i18n._(
+ msg`A request to use your email has been initiated by ${team.name} on Documenso`,
+ ),
+ html,
+ text,
});
};
diff --git a/packages/lib/server-only/team/create-team-member-invites.ts b/packages/lib/server-only/team/create-team-member-invites.ts
index f167d2112..1b473acdd 100644
--- a/packages/lib/server-only/team/create-team-member-invites.ts
+++ b/packages/lib/server-only/team/create-team-member-invites.ts
@@ -1,10 +1,9 @@
import { createElement } from 'react';
+import { msg } from '@lingui/macro';
import { nanoid } from 'nanoid';
import { mailer } from '@documenso/email/mailer';
-import { render } from '@documenso/email/render';
-import type { TeamInviteEmailProps } from '@documenso/email/templates/team-invite';
import { TeamInviteEmailTemplate } from '@documenso/email/templates/team-invite';
import { WEBAPP_BASE_URL } from '@documenso/lib/constants/app';
import { FROM_ADDRESS, FROM_NAME } from '@documenso/lib/constants/email';
@@ -12,9 +11,14 @@ import { TEAM_MEMBER_ROLE_PERMISSIONS_MAP } from '@documenso/lib/constants/teams
import { AppError, AppErrorCode } from '@documenso/lib/errors/app-error';
import { isTeamRoleWithinUserHierarchy } from '@documenso/lib/utils/teams';
import { prisma } from '@documenso/prisma';
+import type { Team, TeamGlobalSettings } from '@documenso/prisma/client';
import { TeamMemberInviteStatus } from '@documenso/prisma/client';
import type { TCreateTeamMemberInvitesMutationSchema } from '@documenso/trpc/server/team-router/schema';
+import { getI18nInstance } from '../../client-only/providers/i18n.server';
+import { renderEmailWithI18N } from '../../utils/render-email-with-i18n';
+import { teamGlobalSettingsToBranding } from '../../utils/team-global-settings-to-branding';
+
export type CreateTeamMemberInvitesOptions = {
userId: number;
userName: string;
@@ -56,6 +60,7 @@ export const createTeamMemberInvites = async ({
},
},
invites: true,
+ teamGlobalSettings: true,
},
});
@@ -109,8 +114,7 @@ export const createTeamMemberInvites = async ({
sendTeamMemberInviteEmail({
email,
token,
- teamName: team.name,
- teamUrl: team.url,
+ team,
senderName: userName,
}),
),
@@ -131,8 +135,13 @@ export const createTeamMemberInvites = async ({
}
};
-type SendTeamMemberInviteEmailOptions = Omit & {
+type SendTeamMemberInviteEmailOptions = {
email: string;
+ senderName: string;
+ token: string;
+ team: Team & {
+ teamGlobalSettings?: TeamGlobalSettings | null;
+ };
};
/**
@@ -140,22 +149,42 @@ type SendTeamMemberInviteEmailOptions = Omit {
const template = createElement(TeamInviteEmailTemplate, {
assetBaseUrl: WEBAPP_BASE_URL,
baseUrl: WEBAPP_BASE_URL,
- ...emailTemplateOptions,
+ senderName,
+ token,
+ teamName: team.name,
+ teamUrl: team.url,
});
+ const branding = team.teamGlobalSettings
+ ? teamGlobalSettingsToBranding(team.teamGlobalSettings)
+ : undefined;
+
+ const [html, text] = await Promise.all([
+ renderEmailWithI18N(template, { lang: team.teamGlobalSettings?.documentLanguage, branding }),
+ renderEmailWithI18N(template, {
+ lang: team.teamGlobalSettings?.documentLanguage,
+ branding,
+ plainText: true,
+ }),
+ ]);
+
+ const i18n = await getI18nInstance(team.teamGlobalSettings?.documentLanguage);
+
await mailer.sendMail({
to: email,
from: {
name: FROM_NAME,
address: FROM_ADDRESS,
},
- subject: `You have been invited to join ${emailTemplateOptions.teamName} on Documenso`,
- html: render(template),
- text: render(template, { plainText: true }),
+ subject: i18n._(msg`You have been invited to join ${team.name} on Documenso`),
+ html,
+ text,
});
};
diff --git a/packages/lib/server-only/team/delete-team-email.ts b/packages/lib/server-only/team/delete-team-email.ts
index c5139a971..a15375b7c 100644
--- a/packages/lib/server-only/team/delete-team-email.ts
+++ b/packages/lib/server-only/team/delete-team-email.ts
@@ -1,13 +1,18 @@
import { createElement } from 'react';
+import { msg } from '@lingui/macro';
+
import { mailer } from '@documenso/email/mailer';
-import { render } from '@documenso/email/render';
import { TeamEmailRemovedTemplate } from '@documenso/email/templates/team-email-removed';
import { WEBAPP_BASE_URL } from '@documenso/lib/constants/app';
import { FROM_ADDRESS, FROM_NAME } from '@documenso/lib/constants/email';
import { TEAM_MEMBER_ROLE_PERMISSIONS_MAP } from '@documenso/lib/constants/teams';
import { prisma } from '@documenso/prisma';
+import { getI18nInstance } from '../../client-only/providers/i18n.server';
+import { renderEmailWithI18N } from '../../utils/render-email-with-i18n';
+import { teamGlobalSettingsToBranding } from '../../utils/team-global-settings-to-branding';
+
export type DeleteTeamEmailOptions = {
userId: number;
userEmail: string;
@@ -50,6 +55,7 @@ export const deleteTeamEmail = async ({ userId, userEmail, teamId }: DeleteTeamE
email: true,
},
},
+ teamGlobalSettings: true,
},
});
@@ -73,6 +79,19 @@ export const deleteTeamEmail = async ({ userId, userEmail, teamId }: DeleteTeamE
teamUrl: team.url,
});
+ const branding = team.teamGlobalSettings
+ ? teamGlobalSettingsToBranding(team.teamGlobalSettings)
+ : undefined;
+
+ const lang = team.teamGlobalSettings?.documentLanguage;
+
+ const [html, text] = await Promise.all([
+ renderEmailWithI18N(template, { lang, branding }),
+ renderEmailWithI18N(template, { lang, branding, plainText: true }),
+ ]);
+
+ const i18n = await getI18nInstance(lang);
+
await mailer.sendMail({
to: {
address: team.owner.email,
@@ -82,9 +101,9 @@ export const deleteTeamEmail = async ({ userId, userEmail, teamId }: DeleteTeamE
name: FROM_NAME,
address: FROM_ADDRESS,
},
- subject: `Team email has been revoked for ${team.name}`,
- html: render(template),
- text: render(template, { plainText: true }),
+ subject: i18n._(msg`Team email has been revoked for ${team.name}`),
+ html,
+ text,
});
} catch (e) {
// Todo: Teams - Alert us.
diff --git a/packages/lib/server-only/team/delete-team.ts b/packages/lib/server-only/team/delete-team.ts
index 57c761e72..6403c0550 100644
--- a/packages/lib/server-only/team/delete-team.ts
+++ b/packages/lib/server-only/team/delete-team.ts
@@ -1,16 +1,20 @@
import { createElement } from 'react';
+import { msg } from '@lingui/macro';
+
import { mailer } from '@documenso/email/mailer';
-import { render } from '@documenso/email/render';
-import type { TeamDeleteEmailProps } from '@documenso/email/templates/team-delete';
import { TeamDeleteEmailTemplate } from '@documenso/email/templates/team-delete';
import { WEBAPP_BASE_URL } from '@documenso/lib/constants/app';
import { FROM_ADDRESS, FROM_NAME } from '@documenso/lib/constants/email';
import { AppError } from '@documenso/lib/errors/app-error';
import { stripe } from '@documenso/lib/server-only/stripe';
import { prisma } from '@documenso/prisma';
+import type { Team, TeamGlobalSettings } from '@documenso/prisma/client';
+import { getI18nInstance } from '../../client-only/providers/i18n.server';
import { jobs } from '../../jobs/client';
+import { renderEmailWithI18N } from '../../utils/render-email-with-i18n';
+import { teamGlobalSettingsToBranding } from '../../utils/team-global-settings-to-branding';
export type DeleteTeamOptions = {
userId: number;
@@ -38,6 +42,7 @@ export const deleteTeam = async ({ userId, teamId }: DeleteTeamOptions) => {
},
},
},
+ teamGlobalSettings: true,
},
});
@@ -60,6 +65,7 @@ export const deleteTeam = async ({ userId, teamId }: DeleteTeamOptions) => {
name: team.name,
url: team.url,
ownerUserId: team.ownerUserId,
+ teamGlobalSettings: team.teamGlobalSettings,
},
members: team.members.map((member) => ({
id: member.user.id,
@@ -80,29 +86,43 @@ export const deleteTeam = async ({ userId, teamId }: DeleteTeamOptions) => {
);
};
-type SendTeamDeleteEmailOptions = Omit & {
+type SendTeamDeleteEmailOptions = {
email: string;
- teamName: string;
+ team: Pick & {
+ teamGlobalSettings?: TeamGlobalSettings | null;
+ };
+ isOwner: boolean;
};
-export const sendTeamDeleteEmail = async ({
- email,
- ...emailTemplateOptions
-}: SendTeamDeleteEmailOptions) => {
+export const sendTeamDeleteEmail = async ({ email, isOwner, team }: SendTeamDeleteEmailOptions) => {
const template = createElement(TeamDeleteEmailTemplate, {
assetBaseUrl: WEBAPP_BASE_URL,
baseUrl: WEBAPP_BASE_URL,
- ...emailTemplateOptions,
+ teamUrl: team.url,
+ isOwner,
});
+ const branding = team.teamGlobalSettings
+ ? teamGlobalSettingsToBranding(team.teamGlobalSettings)
+ : undefined;
+
+ const lang = team.teamGlobalSettings?.documentLanguage;
+
+ const [html, text] = await Promise.all([
+ renderEmailWithI18N(template, { lang, branding }),
+ renderEmailWithI18N(template, { lang, branding, plainText: true }),
+ ]);
+
+ const i18n = await getI18nInstance(lang);
+
await mailer.sendMail({
to: email,
from: {
name: FROM_NAME,
address: FROM_ADDRESS,
},
- subject: `Team "${emailTemplateOptions.teamName}" has been deleted on Documenso`,
- html: render(template),
- text: render(template, { plainText: true }),
+ subject: i18n._(msg`Team "${team.name}" has been deleted on Documenso`),
+ html,
+ text,
});
};
diff --git a/packages/lib/server-only/team/get-team.ts b/packages/lib/server-only/team/get-team.ts
index ea6247146..e26b606bd 100644
--- a/packages/lib/server-only/team/get-team.ts
+++ b/packages/lib/server-only/team/get-team.ts
@@ -30,6 +30,7 @@ export const getTeamById = async ({ userId, teamId }: GetTeamByIdOptions) => {
where: whereFilter,
include: {
teamEmail: true,
+ teamGlobalSettings: true,
members: {
where: {
userId,
@@ -89,6 +90,7 @@ export const getTeamByUrl = async ({ userId, teamUrl }: GetTeamByUrlOptions) =>
},
},
subscription: true,
+ teamGlobalSettings: true,
members: {
where: {
userId,
diff --git a/packages/lib/server-only/team/request-team-ownership-transfer.ts b/packages/lib/server-only/team/request-team-ownership-transfer.ts
index 92fd5b61e..5da2f6c5b 100644
--- a/packages/lib/server-only/team/request-team-ownership-transfer.ts
+++ b/packages/lib/server-only/team/request-team-ownership-transfer.ts
@@ -1,13 +1,17 @@
import { createElement } from 'react';
+import { msg } from '@lingui/macro';
+
import { mailer } from '@documenso/email/mailer';
-import { render } from '@documenso/email/render';
import { TeamTransferRequestTemplate } from '@documenso/email/templates/team-transfer-request';
import { WEBAPP_BASE_URL } from '@documenso/lib/constants/app';
import { FROM_ADDRESS, FROM_NAME } from '@documenso/lib/constants/email';
import { createTokenVerification } from '@documenso/lib/utils/token-verification';
import { prisma } from '@documenso/prisma';
+import { getI18nInstance } from '../../client-only/providers/i18n.server';
+import { renderEmailWithI18N } from '../../utils/render-email-with-i18n';
+
export type RequestTeamOwnershipTransferOptions = {
/**
* The ID of the user initiating the transfer.
@@ -93,15 +97,24 @@ export const requestTeamOwnershipTransfer = async ({
token,
});
+ const [html, text] = await Promise.all([
+ renderEmailWithI18N(template),
+ renderEmailWithI18N(template, { plainText: true }),
+ ]);
+
+ const i18n = await getI18nInstance();
+
await mailer.sendMail({
to: newOwnerUser.email,
from: {
name: FROM_NAME,
address: FROM_ADDRESS,
},
- subject: `You have been requested to take ownership of team ${team.name} on Documenso`,
- html: render(template),
- text: render(template, { plainText: true }),
+ subject: i18n._(
+ msg`You have been requested to take ownership of team ${team.name} on Documenso`,
+ ),
+ html,
+ text,
});
},
{ timeout: 30_000 },
diff --git a/packages/lib/server-only/team/resend-team-email-verification.ts b/packages/lib/server-only/team/resend-team-email-verification.ts
index b1d6ffe99..23e2f2fb1 100644
--- a/packages/lib/server-only/team/resend-team-email-verification.ts
+++ b/packages/lib/server-only/team/resend-team-email-verification.ts
@@ -33,6 +33,7 @@ export const resendTeamEmailVerification = async ({
},
include: {
emailVerification: true,
+ teamGlobalSettings: true,
},
});
@@ -61,7 +62,7 @@ export const resendTeamEmailVerification = async ({
},
});
- await sendTeamEmailVerificationEmail(emailVerification.email, token, team.name, team.url);
+ await sendTeamEmailVerificationEmail(emailVerification.email, token, team);
},
{ timeout: 30_000 },
);
diff --git a/packages/lib/server-only/team/resend-team-member-invitation.ts b/packages/lib/server-only/team/resend-team-member-invitation.ts
index 897154a2a..ba849459b 100644
--- a/packages/lib/server-only/team/resend-team-member-invitation.ts
+++ b/packages/lib/server-only/team/resend-team-member-invitation.ts
@@ -49,6 +49,9 @@ export const resendTeamMemberInvitation = async ({
},
},
},
+ include: {
+ teamGlobalSettings: true,
+ },
});
if (!team) {
@@ -69,9 +72,8 @@ export const resendTeamMemberInvitation = async ({
await sendTeamMemberInviteEmail({
email: teamMemberInvite.email,
token: teamMemberInvite.token,
- teamName: team.name,
- teamUrl: team.url,
senderName: userName,
+ team,
});
},
{ timeout: 30_000 },
diff --git a/packages/lib/server-only/team/update-team-branding-settings.ts b/packages/lib/server-only/team/update-team-branding-settings.ts
new file mode 100644
index 000000000..9b33790d0
--- /dev/null
+++ b/packages/lib/server-only/team/update-team-branding-settings.ts
@@ -0,0 +1,52 @@
+import { prisma } from '@documenso/prisma';
+import { TeamMemberRole } from '@documenso/prisma/client';
+
+export type UpdateTeamBrandingSettingsOptions = {
+ userId: number;
+ teamId: number;
+
+ settings: {
+ brandingEnabled: boolean;
+ brandingLogo: string;
+ brandingUrl: string;
+ brandingCompanyDetails: string;
+ };
+};
+
+export const updateTeamBrandingSettings = async ({
+ userId,
+ teamId,
+ settings,
+}: UpdateTeamBrandingSettingsOptions) => {
+ const { brandingEnabled, brandingLogo, brandingUrl, brandingCompanyDetails } = settings;
+
+ const member = await prisma.teamMember.findFirst({
+ where: {
+ userId,
+ teamId,
+ },
+ });
+
+ if (!member || member.role !== TeamMemberRole.ADMIN) {
+ throw new Error('You do not have permission to update this team.');
+ }
+
+ return await prisma.teamGlobalSettings.upsert({
+ where: {
+ teamId,
+ },
+ create: {
+ teamId,
+ brandingEnabled,
+ brandingLogo,
+ brandingUrl,
+ brandingCompanyDetails,
+ },
+ update: {
+ brandingEnabled,
+ brandingLogo,
+ brandingUrl,
+ brandingCompanyDetails,
+ },
+ });
+};
diff --git a/packages/lib/server-only/team/update-team-document-settings.ts b/packages/lib/server-only/team/update-team-document-settings.ts
new file mode 100644
index 000000000..b57b6dbb0
--- /dev/null
+++ b/packages/lib/server-only/team/update-team-document-settings.ts
@@ -0,0 +1,52 @@
+import { prisma } from '@documenso/prisma';
+import type { DocumentVisibility } from '@documenso/prisma/client';
+import { TeamMemberRole } from '@documenso/prisma/client';
+
+import type { SupportedLanguageCodes } from '../../constants/i18n';
+
+export type UpdateTeamDocumentSettingsOptions = {
+ userId: number;
+ teamId: number;
+
+ settings: {
+ documentVisibility: DocumentVisibility;
+ documentLanguage: SupportedLanguageCodes;
+ includeSenderDetails: boolean;
+ };
+};
+
+export const updateTeamDocumentSettings = async ({
+ userId,
+ teamId,
+ settings,
+}: UpdateTeamDocumentSettingsOptions) => {
+ const { documentVisibility, documentLanguage, includeSenderDetails } = settings;
+
+ const member = await prisma.teamMember.findFirst({
+ where: {
+ userId,
+ teamId,
+ },
+ });
+
+ if (!member || member.role !== TeamMemberRole.ADMIN) {
+ throw new Error('You do not have permission to update this team.');
+ }
+
+ return await prisma.teamGlobalSettings.upsert({
+ where: {
+ teamId,
+ },
+ create: {
+ teamId,
+ documentVisibility,
+ documentLanguage,
+ includeSenderDetails,
+ },
+ update: {
+ documentVisibility,
+ documentLanguage,
+ includeSenderDetails,
+ },
+ });
+};
diff --git a/packages/lib/server-only/team/update-team.ts b/packages/lib/server-only/team/update-team.ts
index b172d3359..02f3b57ab 100644
--- a/packages/lib/server-only/team/update-team.ts
+++ b/packages/lib/server-only/team/update-team.ts
@@ -4,6 +4,7 @@ import { TEAM_MEMBER_ROLE_PERMISSIONS_MAP } from '@documenso/lib/constants/teams
import { AppError, AppErrorCode } from '@documenso/lib/errors/app-error';
import { prisma } from '@documenso/prisma';
import { Prisma } from '@documenso/prisma/client';
+import type { DocumentVisibility } from '@documenso/prisma/client';
export type UpdateTeamOptions = {
userId: number;
@@ -11,6 +12,8 @@ export type UpdateTeamOptions = {
data: {
name?: string;
url?: string;
+ documentVisibility?: DocumentVisibility;
+ includeSenderDetails?: boolean;
};
};
@@ -42,6 +45,18 @@ export const updateTeam = async ({ userId, teamId, data }: UpdateTeamOptions) =>
data: {
url: data.url,
name: data.name,
+ teamGlobalSettings: {
+ upsert: {
+ create: {
+ documentVisibility: data.documentVisibility,
+ includeSenderDetails: data.includeSenderDetails,
+ },
+ update: {
+ documentVisibility: data.documentVisibility,
+ includeSenderDetails: data.includeSenderDetails,
+ },
+ },
+ },
},
});
diff --git a/packages/lib/server-only/template/create-document-from-direct-template.ts b/packages/lib/server-only/template/create-document-from-direct-template.ts
index 207bab655..c82219223 100644
--- a/packages/lib/server-only/template/create-document-from-direct-template.ts
+++ b/packages/lib/server-only/template/create-document-from-direct-template.ts
@@ -1,15 +1,16 @@
import { createElement } from 'react';
+import { msg } from '@lingui/macro';
import { DateTime } from 'luxon';
import { match } from 'ts-pattern';
import { mailer } from '@documenso/email/mailer';
-import { render } from '@documenso/email/render';
import { DocumentCreatedFromDirectTemplateEmailTemplate } from '@documenso/email/templates/document-created-from-direct-template';
import { nanoid } from '@documenso/lib/universal/id';
import { prisma } from '@documenso/prisma';
import type { Field, Signature } from '@documenso/prisma/client';
import {
+ DocumentSigningOrder,
DocumentSource,
DocumentStatus,
FieldType,
@@ -17,9 +18,11 @@ import {
RecipientRole,
SendStatus,
SigningStatus,
+ WebhookTriggerEvents,
} from '@documenso/prisma/client';
import type { TSignFieldWithTokenMutationSchema } from '@documenso/trpc/server/field-router/schema';
+import { getI18nInstance } from '../../client-only/providers/i18n.server';
import { NEXT_PUBLIC_WEBAPP_URL } from '../../constants/app';
import { DEFAULT_DOCUMENT_DATE_FORMAT } from '../../constants/date-formats';
import { DEFAULT_DOCUMENT_TIME_ZONE } from '../../constants/time-zones';
@@ -36,9 +39,12 @@ import {
createRecipientAuthOptions,
extractDocumentAuthMethods,
} from '../../utils/document-auth';
+import { renderEmailWithI18N } from '../../utils/render-email-with-i18n';
+import { teamGlobalSettingsToBranding } from '../../utils/team-global-settings-to-branding';
import { formatDocumentsPath } from '../../utils/teams';
import { sendDocument } from '../document/send-document';
import { validateFieldAuth } from '../document/validate-field-auth';
+import { triggerWebhook } from '../webhooks/trigger/trigger-webhook';
export type CreateDocumentFromDirectTemplateOptions = {
directRecipientName?: string;
@@ -86,6 +92,11 @@ export const createDocumentFromDirectTemplate = async ({
templateDocumentData: true,
templateMeta: true,
User: true,
+ team: {
+ include: {
+ teamGlobalSettings: true,
+ },
+ },
},
});
@@ -140,6 +151,9 @@ export const createDocumentFromDirectTemplate = async ({
const metaDateFormat = template.templateMeta?.dateFormat || DEFAULT_DOCUMENT_DATE_FORMAT;
const metaEmailMessage = template.templateMeta?.message || '';
const metaEmailSubject = template.templateMeta?.subject || '';
+ const metaLanguage =
+ template.templateMeta?.language ?? template.team?.teamGlobalSettings?.documentLanguage;
+ const metaSigningOrder = template.templateMeta?.signingOrder || DocumentSigningOrder.PARALLEL;
// Associate, validate and map to a query every direct template recipient field with the provided fields.
const createDirectRecipientFieldArgs = await Promise.all(
@@ -230,6 +244,7 @@ export const createDocumentFromDirectTemplate = async ({
createdAt: initialRequestTime,
status: DocumentStatus.PENDING,
externalId: directTemplateExternalId,
+ visibility: template.team?.teamGlobalSettings?.documentVisibility,
documentDataId: documentData.id,
authOptions: createDocumentAuthOptions({
globalAccessAuth: templateAuthOptions.globalAccessAuth,
@@ -254,6 +269,7 @@ export const createDocumentFromDirectTemplate = async ({
recipient.role === RecipientRole.CC
? SigningStatus.SIGNED
: SigningStatus.NOT_SIGNED,
+ signingOrder: recipient.signingOrder,
token: nanoid(),
};
}),
@@ -265,6 +281,9 @@ export const createDocumentFromDirectTemplate = async ({
dateFormat: metaDateFormat,
message: metaEmailMessage,
subject: metaEmailSubject,
+ language: metaLanguage,
+ signingOrder: metaSigningOrder,
+ distributionMethod: template.templateMeta?.distributionMethod,
},
},
},
@@ -328,6 +347,7 @@ export const createDocumentFromDirectTemplate = async ({
signingStatus: SigningStatus.SIGNED,
sendStatus: SendStatus.SENT,
signedAt: initialRequestTime,
+ signingOrder: directTemplateRecipient.signingOrder,
Field: {
createMany: {
data: directTemplateNonSignatureFields.map(({ templateField, customText }) => ({
@@ -522,6 +542,17 @@ export const createDocumentFromDirectTemplate = async ({
assetBaseUrl: NEXT_PUBLIC_WEBAPP_URL() || 'http://localhost:3000',
});
+ const branding = template.team?.teamGlobalSettings
+ ? teamGlobalSettingsToBranding(template.team.teamGlobalSettings)
+ : undefined;
+
+ const [html, text] = await Promise.all([
+ renderEmailWithI18N(emailTemplate, { lang: metaLanguage, branding }),
+ renderEmailWithI18N(emailTemplate, { lang: metaLanguage, branding, plainText: true }),
+ ]);
+
+ const i18n = await getI18nInstance(metaLanguage);
+
await mailer.sendMail({
to: [
{
@@ -533,9 +564,9 @@ export const createDocumentFromDirectTemplate = async ({
name: process.env.NEXT_PRIVATE_SMTP_FROM_NAME || 'Documenso',
address: process.env.NEXT_PRIVATE_SMTP_FROM_ADDRESS || 'noreply@documenso.com',
},
- subject: 'Document created from direct template',
- html: render(emailTemplate),
- text: render(emailTemplate, { plainText: true }),
+ subject: i18n._(msg`Document created from direct template`),
+ html,
+ text,
});
return {
@@ -553,6 +584,23 @@ export const createDocumentFromDirectTemplate = async ({
teamId: template.teamId || undefined,
requestMetadata,
});
+
+ const updatedDocument = await prisma.document.findFirstOrThrow({
+ where: {
+ id: documentId,
+ },
+ include: {
+ documentData: true,
+ Recipient: true,
+ },
+ });
+
+ await triggerWebhook({
+ event: WebhookTriggerEvents.DOCUMENT_SIGNED,
+ data: updatedDocument,
+ userId: updatedDocument.userId,
+ teamId: updatedDocument.teamId ?? undefined,
+ });
} catch (err) {
console.error('[CREATE_DOCUMENT_FROM_DIRECT_TEMPLATE]:', err);
diff --git a/packages/lib/server-only/template/create-document-from-template-legacy.ts b/packages/lib/server-only/template/create-document-from-template-legacy.ts
index ea5a45760..c9ffaffc1 100644
--- a/packages/lib/server-only/template/create-document-from-template-legacy.ts
+++ b/packages/lib/server-only/template/create-document-from-template-legacy.ts
@@ -46,6 +46,12 @@ export const createDocumentFromTemplateLegacy = async ({
Recipient: true,
Field: true,
templateDocumentData: true,
+ templateMeta: true,
+ team: {
+ include: {
+ teamGlobalSettings: true,
+ },
+ },
},
});
@@ -68,6 +74,7 @@ export const createDocumentFromTemplateLegacy = async ({
userId,
teamId: template.teamId,
title: template.title,
+ visibility: template.team?.teamGlobalSettings?.documentVisibility,
documentDataId: documentData.id,
Recipient: {
create: template.Recipient.map((recipient) => ({
@@ -78,6 +85,18 @@ export const createDocumentFromTemplateLegacy = async ({
token: nanoid(),
})),
},
+ documentMeta: {
+ create: {
+ subject: template.templateMeta?.subject,
+ message: template.templateMeta?.message,
+ timezone: template.templateMeta?.timezone,
+ dateFormat: template.templateMeta?.dateFormat,
+ redirectUrl: template.templateMeta?.redirectUrl,
+ signingOrder: template.templateMeta?.signingOrder ?? undefined,
+ language:
+ template.templateMeta?.language || template.team?.teamGlobalSettings?.documentLanguage,
+ },
+ },
},
include: {
diff --git a/packages/lib/server-only/template/create-document-from-template.ts b/packages/lib/server-only/template/create-document-from-template.ts
index 8cf2e59af..4b010a409 100644
--- a/packages/lib/server-only/template/create-document-from-template.ts
+++ b/packages/lib/server-only/template/create-document-from-template.ts
@@ -1,5 +1,6 @@
import { nanoid } from '@documenso/lib/universal/id';
import { prisma } from '@documenso/prisma';
+import type { DocumentDistributionMethod } from '@documenso/prisma/client';
import {
DocumentSigningOrder,
DocumentSource,
@@ -11,6 +12,7 @@ import {
WebhookTriggerEvents,
} from '@documenso/prisma/client';
+import type { SupportedLanguageCodes } from '../../constants/i18n';
import { AppError, AppErrorCode } from '../../errors/app-error';
import { DOCUMENT_AUDIT_LOG_TYPE } from '../../types/document-audit-logs';
import { ZRecipientAuthOptionsSchema } from '../../types/document-auth';
@@ -24,7 +26,10 @@ import {
} from '../../utils/document-auth';
import { triggerWebhook } from '../webhooks/trigger/trigger-webhook';
-type FinalRecipient = Pick & {
+type FinalRecipient = Pick<
+ Recipient,
+ 'name' | 'email' | 'role' | 'authOptions' | 'signingOrder'
+> & {
templateRecipientId: number;
fields: Field[];
};
@@ -57,6 +62,8 @@ export type CreateDocumentFromTemplateOptions = {
dateFormat?: string;
redirectUrl?: string;
signingOrder?: DocumentSigningOrder;
+ language?: SupportedLanguageCodes;
+ distributionMethod?: DocumentDistributionMethod;
};
requestMetadata?: RequestMetadata;
};
@@ -103,6 +110,11 @@ export const createDocumentFromTemplate = async ({
},
templateDocumentData: true,
templateMeta: true,
+ team: {
+ include: {
+ teamGlobalSettings: true,
+ },
+ },
},
});
@@ -164,6 +176,7 @@ export const createDocumentFromTemplate = async ({
globalAccessAuth: templateAuthOptions.globalAccessAuth,
globalActionAuth: templateAuthOptions.globalActionAuth,
}),
+ visibility: template.team?.teamGlobalSettings?.documentVisibility,
documentMeta: {
create: {
subject: override?.subject || template.templateMeta?.subject,
@@ -172,10 +185,17 @@ export const createDocumentFromTemplate = async ({
password: override?.password || template.templateMeta?.password,
dateFormat: override?.dateFormat || template.templateMeta?.dateFormat,
redirectUrl: override?.redirectUrl || template.templateMeta?.redirectUrl,
+ distributionMethod:
+ override?.distributionMethod || template.templateMeta?.distributionMethod,
+ emailSettings: template.templateMeta?.emailSettings || undefined,
signingOrder:
override?.signingOrder ||
template.templateMeta?.signingOrder ||
DocumentSigningOrder.PARALLEL,
+ language:
+ override?.language ||
+ template.templateMeta?.language ||
+ template.team?.teamGlobalSettings?.documentLanguage,
},
},
Recipient: {
@@ -197,6 +217,7 @@ export const createDocumentFromTemplate = async ({
recipient.role === RecipientRole.CC
? SigningStatus.SIGNED
: SigningStatus.NOT_SIGNED,
+ signingOrder: recipient.signingOrder,
token: nanoid(),
};
}),
diff --git a/packages/lib/server-only/template/duplicate-template.ts b/packages/lib/server-only/template/duplicate-template.ts
index 963d78bde..f4348f019 100644
--- a/packages/lib/server-only/template/duplicate-template.ts
+++ b/packages/lib/server-only/template/duplicate-template.ts
@@ -1,3 +1,5 @@
+import { omit } from 'remeda';
+
import { nanoid } from '@documenso/lib/universal/id';
import { prisma } from '@documenso/prisma';
import type { Prisma } from '@documenso/prisma/client';
@@ -38,6 +40,7 @@ export const duplicateTemplate = async ({
Recipient: true,
Field: true,
templateDocumentData: true,
+ templateMeta: true,
},
});
@@ -53,6 +56,17 @@ export const duplicateTemplate = async ({
},
});
+ let templateMeta: Prisma.TemplateCreateArgs['data']['templateMeta'] | undefined = undefined;
+
+ if (template.templateMeta) {
+ templateMeta = {
+ create: {
+ ...omit(template.templateMeta, ['id', 'templateId']),
+ emailSettings: template.templateMeta.emailSettings || undefined,
+ },
+ };
+ }
+
const duplicatedTemplate = await prisma.template.create({
data: {
userId,
@@ -66,8 +80,8 @@ export const duplicateTemplate = async ({
token: nanoid(),
})),
},
+ templateMeta,
},
-
include: {
Recipient: true,
},
diff --git a/packages/lib/server-only/template/find-templates.ts b/packages/lib/server-only/template/find-templates.ts
index 27cba8b20..a978120a7 100644
--- a/packages/lib/server-only/template/find-templates.ts
+++ b/packages/lib/server-only/template/find-templates.ts
@@ -51,6 +51,12 @@ export const findTemplates = async ({
},
Field: true,
Recipient: true,
+ templateMeta: {
+ select: {
+ signingOrder: true,
+ distributionMethod: true,
+ },
+ },
directLink: {
select: {
token: true,
diff --git a/packages/lib/server-only/template/get-template-by-id.ts b/packages/lib/server-only/template/get-template-by-id.ts
index fbc8c48f8..fc365433e 100644
--- a/packages/lib/server-only/template/get-template-by-id.ts
+++ b/packages/lib/server-only/template/get-template-by-id.ts
@@ -42,6 +42,13 @@ export const getTemplateById = async ({ id, userId, teamId }: GetTemplateByIdOpt
templateMeta: true,
Recipient: true,
Field: true,
+ User: {
+ select: {
+ id: true,
+ name: true,
+ email: true,
+ },
+ },
},
});
diff --git a/packages/lib/server-only/template/update-template-settings.ts b/packages/lib/server-only/template/update-template-settings.ts
index 22ea56db2..c83e15242 100644
--- a/packages/lib/server-only/template/update-template-settings.ts
+++ b/packages/lib/server-only/template/update-template-settings.ts
@@ -112,9 +112,11 @@ export const updateTemplateSettings = async ({
},
create: {
...meta,
+ emailSettings: meta?.emailSettings || undefined,
},
update: {
...meta,
+ emailSettings: meta?.emailSettings || undefined,
},
},
},
diff --git a/packages/lib/server-only/user/create-user.ts b/packages/lib/server-only/user/create-user.ts
index 263fa9392..9dfe0b0b6 100644
--- a/packages/lib/server-only/user/create-user.ts
+++ b/packages/lib/server-only/user/create-user.ts
@@ -3,7 +3,7 @@ import { hash } from '@node-rs/bcrypt';
import { getStripeCustomerByUser } from '@documenso/ee/server-only/stripe/get-customer';
import { updateSubscriptionItemQuantity } from '@documenso/ee/server-only/stripe/update-subscription-item-quantity';
import { prisma } from '@documenso/prisma';
-import { IdentityProvider, Prisma, TeamMemberInviteStatus } from '@documenso/prisma/client';
+import { IdentityProvider, TeamMemberInviteStatus } from '@documenso/prisma/client';
import { IS_BILLING_ENABLED } from '../../constants/app';
import { SALT_ROUNDS } from '../../constants/auth';
@@ -59,11 +59,11 @@ export const createUser = async ({ name, email, password, signature, url }: Crea
const acceptedTeamInvites = await prisma.teamMemberInvite.findMany({
where: {
+ status: TeamMemberInviteStatus.ACCEPTED,
email: {
equals: email,
- mode: Prisma.QueryMode.insensitive,
+ mode: 'insensitive',
},
- status: TeamMemberInviteStatus.ACCEPTED,
},
});
diff --git a/packages/lib/server-only/user/send-confirmation-token.ts b/packages/lib/server-only/user/send-confirmation-token.ts
index ef7c4b104..d2bc0a3aa 100644
--- a/packages/lib/server-only/user/send-confirmation-token.ts
+++ b/packages/lib/server-only/user/send-confirmation-token.ts
@@ -39,7 +39,7 @@ export const sendConfirmationToken = async ({
mostRecentToken?.createdAt &&
DateTime.fromJSDate(mostRecentToken.createdAt).diffNow('minutes').minutes > -5
) {
- return;
+ // return;
}
const createdToken = await prisma.verificationToken.create({
@@ -64,6 +64,7 @@ export const sendConfirmationToken = async ({
return { success: true };
} catch (err) {
+ console.log(err);
throw new Error(`Failed to send the confirmation email`);
}
};
diff --git a/packages/lib/translations/de/common.po b/packages/lib/translations/de/common.po
index c4b5ce722..c497400ff 100644
--- a/packages/lib/translations/de/common.po
+++ b/packages/lib/translations/de/common.po
@@ -8,7 +8,7 @@ msgstr ""
"Language: de\n"
"Project-Id-Version: documenso-app\n"
"Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2024-10-08 12:05\n"
+"PO-Revision-Date: 2024-11-20 11:56\n"
"Last-Translator: \n"
"Language-Team: German\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -18,18 +18,267 @@ msgstr ""
"X-Crowdin-File: common.po\n"
"X-Crowdin-File-ID: 4\n"
+#: packages/email/template-components/template-document-super-delete.tsx:27
+msgid "\"{documentName}\" has been deleted by an admin."
+msgstr "\"{documentName}\" wurde von einem Administrator gelöscht."
+
+#: packages/email/template-components/template-document-pending.tsx:37
+msgid "“{documentName}” has been signed"
+msgstr "„{documentName}“ wurde unterschrieben"
+
+#: packages/email/template-components/template-document-completed.tsx:41
+msgid "“{documentName}” was signed by all signers"
+msgstr "„{documentName}“ wurde von allen Unterzeichnern signiert"
+
+#: packages/lib/server-only/document/resend-document.tsx:109
+#~ msgid "{0}"
+#~ msgstr "{0}"
+
+#: packages/email/template-components/template-document-invite.tsx:80
+#~ msgid "{0} Document"
+#~ msgstr "{0} Document"
+
+#: packages/lib/jobs/definitions/emails/send-signing-email.ts:137
+msgid "{0} has invited you to {recipientActionVerb} the document \"{1}\"."
+msgstr "{0} hat Sie eingeladen, das Dokument \"{1}\" {recipientActionVerb}."
+
+#: packages/lib/jobs/definitions/emails/send-signing-email.ts:130
+msgid "{0} invited you to {recipientActionVerb} a document"
+msgstr "{0} hat dich eingeladen, ein Dokument {recipientActionVerb}"
+
+#: packages/email/templates/team-join.tsx:61
+msgid "{0} joined the team {teamName} on Documenso"
+msgstr "{0} ist dem Team {teamName} bei Documenso beigetreten"
+
+#: packages/email/templates/team-leave.tsx:61
+msgid "{0} left the team {teamName} on Documenso"
+msgstr "{0} hat das Team {teamName} bei Documenso verlassen"
+
#: packages/ui/primitives/data-table-pagination.tsx:30
msgid "{0} of {1} row(s) selected."
msgstr "{0} von {1} Zeile(n) ausgewählt."
+#: packages/lib/jobs/definitions/emails/send-signing-email.ts:136
+#: packages/lib/server-only/document/resend-document.tsx:137
+msgid "{0} on behalf of {1} has invited you to {recipientActionVerb} the document \"{2}\"."
+msgstr "{0} hat dich im Namen von {1} eingeladen, das Dokument \"{2}\" {recipientActionVerb}."
+
+#: packages/email/template-components/template-document-invite.tsx:51
+#~ msgid "{0}<0/>\"{documentName}\""
+#~ msgstr "{0}<0/>\"{documentName}\""
+
+#: packages/email/templates/document-invite.tsx:94
+msgid "{inviterName} <0>({inviterEmail})0>"
+msgstr "{inviterName} <0>({inviterEmail})0>"
+
+#: packages/email/templates/document-cancel.tsx:21
+msgid "{inviterName} has cancelled the document {documentName}, you don't need to sign it anymore."
+msgstr "{inviterName} hat das Dokument {documentName} storniert, du musst es nicht mehr unterzeichnen."
+
+#: packages/email/template-components/template-document-cancel.tsx:24
+msgid "{inviterName} has cancelled the document<0/>\"{documentName}\""
+msgstr "{inviterName} hat das Dokument<0/>\"{documentName}\" storniert"
+
+#: packages/email/template-components/template-document-invite.tsx:75
+msgid "{inviterName} has invited you to {0}<0/>\"{documentName}\""
+msgstr "{inviterName} hat dich eingeladen, {0}<0/>\"{documentName}\""
+
+#: packages/email/templates/document-invite.tsx:41
+msgid "{inviterName} has invited you to {action} {documentName}"
+msgstr "{inviterName} hat dich eingeladen, {action} {documentName}"
+
+#: packages/email/templates/document-invite.tsx:106
+msgid "{inviterName} has invited you to {action} the document \"{documentName}\"."
+msgstr "{inviterName} hat Sie eingeladen, das Dokument \"{documentName}\" {action}."
+
+#: packages/email/templates/recipient-removed-from-document.tsx:20
+msgid "{inviterName} has removed you from the document {documentName}."
+msgstr "{inviterName} hat dich aus dem Dokument {documentName} entfernt."
+
+#: packages/email/templates/recipient-removed-from-document.tsx:49
+msgid "{inviterName} has removed you from the document<0/>\"{documentName}\""
+msgstr "{inviterName} hat dich aus dem Dokument<0/>\"{documentName}\" entfernt"
+
+#: packages/email/template-components/template-document-invite.tsx:63
+msgid "{inviterName} on behalf of {teamName} has invited you to {0}"
+msgstr "{inviterName} im Namen von {teamName} hat Sie eingeladen, {0}"
+
+#: packages/email/template-components/template-document-invite.tsx:49
+#~ msgid "{inviterName} on behalf of {teamName} has invited you to {0}<0/>\"{documentName}\""
+#~ msgstr "{inviterName} on behalf of {teamName} has invited you to {0}<0/>\"{documentName}\""
+
+#: packages/email/templates/document-invite.tsx:45
+msgid "{inviterName} on behalf of {teamName} has invited you to {action} {documentName}"
+msgstr "{inviterName} hat dich im Namen von {teamName} eingeladen, {action} {documentName}"
+
+#: packages/email/templates/team-join.tsx:67
+msgid "{memberEmail} joined the following team"
+msgstr "{memberEmail} ist dem folgenden Team beigetreten"
+
+#: packages/email/templates/team-leave.tsx:67
+msgid "{memberEmail} left the following team"
+msgstr "{memberEmail} hat das folgende Team verlassen"
+
+#: packages/lib/utils/document-audit-logs.ts:263
+msgid "{prefix} added a field"
+msgstr "{prefix} hat ein Feld hinzugefügt"
+
+#: packages/lib/utils/document-audit-logs.ts:275
+msgid "{prefix} added a recipient"
+msgstr "{prefix} hat einen Empfänger hinzugefügt"
+
+#: packages/lib/utils/document-audit-logs.ts:287
+msgid "{prefix} created the document"
+msgstr "{prefix} hat das Dokument erstellt"
+
+#: packages/lib/utils/document-audit-logs.ts:291
+msgid "{prefix} deleted the document"
+msgstr "{prefix} hat das Dokument gelöscht"
+
+#: packages/lib/utils/document-audit-logs.ts:335
+msgid "{prefix} moved the document to team"
+msgstr "{prefix} hat das Dokument ins Team verschoben"
+
+#: packages/lib/utils/document-audit-logs.ts:319
+msgid "{prefix} opened the document"
+msgstr "{prefix} hat das Dokument geöffnet"
+
+#: packages/lib/utils/document-audit-logs.ts:267
+msgid "{prefix} removed a field"
+msgstr "{prefix} hat ein Feld entfernt"
+
+#: packages/lib/utils/document-audit-logs.ts:279
+msgid "{prefix} removed a recipient"
+msgstr "{prefix} hat einen Empfänger entfernt"
+
+#: packages/lib/utils/document-audit-logs.ts:365
+msgid "{prefix} resent an email to {0}"
+msgstr "{prefix} hat eine E-Mail an {0} erneut gesendet"
+
+#: packages/lib/utils/document-audit-logs.ts:366
+msgid "{prefix} sent an email to {0}"
+msgstr "{prefix} hat eine E-Mail an {0} gesendet"
+
+#: packages/lib/utils/document-audit-logs.ts:331
+msgid "{prefix} sent the document"
+msgstr "{prefix} hat das Dokument gesendet"
+
+#: packages/lib/utils/document-audit-logs.ts:295
+msgid "{prefix} signed a field"
+msgstr "{prefix} hat ein Feld unterschrieben"
+
+#: packages/lib/utils/document-audit-logs.ts:299
+msgid "{prefix} unsigned a field"
+msgstr "{prefix} hat ein Feld ungültig gemacht"
+
+#: packages/lib/utils/document-audit-logs.ts:271
+msgid "{prefix} updated a field"
+msgstr "{prefix} hat ein Feld aktualisiert"
+
+#: packages/lib/utils/document-audit-logs.ts:283
+msgid "{prefix} updated a recipient"
+msgstr "{prefix} hat einen Empfänger aktualisiert"
+
+#: packages/lib/utils/document-audit-logs.ts:315
+msgid "{prefix} updated the document"
+msgstr "{prefix} hat das Dokument aktualisiert"
+
+#: packages/lib/utils/document-audit-logs.ts:307
+msgid "{prefix} updated the document access auth requirements"
+msgstr "{prefix} hat die Anforderungen an die Dokumentenzugriffsautorisierung aktualisiert"
+
+#: packages/lib/utils/document-audit-logs.ts:327
+msgid "{prefix} updated the document external ID"
+msgstr "{prefix} hat die externe ID des Dokuments aktualisiert"
+
+#: packages/lib/utils/document-audit-logs.ts:311
+msgid "{prefix} updated the document signing auth requirements"
+msgstr "{prefix} hat die Authentifizierungsanforderungen für die Dokumentenunterzeichnung aktualisiert"
+
+#: packages/lib/utils/document-audit-logs.ts:323
+msgid "{prefix} updated the document title"
+msgstr "{prefix} hat den Titel des Dokuments aktualisiert"
+
+#: packages/lib/utils/document-audit-logs.ts:303
+msgid "{prefix} updated the document visibility"
+msgstr "{prefix} hat die Sichtbarkeit des Dokuments aktualisiert"
+
+#: packages/email/templates/document-created-from-direct-template.tsx:61
+msgid "{recipientName} {action} a document by using one of your direct links"
+msgstr "{recipientName} {action} ein Dokument, indem Sie einen Ihrer direkten Links verwenden"
+
+#: packages/email/templates/document-rejected.tsx:27
+msgid "{recipientName} has rejected the document '{documentName}'"
+msgstr "{recipientName} hat das Dokument '{documentName}' abgelehnt"
+
+#: packages/email/template-components/template-document-rejected.tsx:25
+msgid "{signerName} has rejected the document \"{documentName}\"."
+msgstr "{signerName} hat das Dokument \"{documentName}\" abgelehnt."
+
+#: packages/email/template-components/template-document-invite.tsx:68
+msgid "{teamName} has invited you to {0}"
+msgstr "{teamName} hat Sie eingeladen, {0}"
+
+#: packages/email/templates/document-invite.tsx:46
+msgid "{teamName} has invited you to {action} {documentName}"
+msgstr "{teamName} hat Sie eingeladen, {action} {documentName}"
+
+#: packages/email/templates/team-transfer-request.tsx:55
+msgid "{teamName} ownership transfer request"
+msgstr "Anfrage zur Übertragung des Eigentums von {teamName}"
+
+#: packages/lib/utils/document-audit-logs.ts:343
+msgid "{userName} approved the document"
+msgstr "{userName} hat das Dokument genehmigt"
+
+#: packages/lib/utils/document-audit-logs.ts:344
+msgid "{userName} CC'd the document"
+msgstr "{userName} hat das Dokument in CC gesetzt"
+
+#: packages/lib/utils/document-audit-logs.ts:345
+msgid "{userName} completed their task"
+msgstr "{userName} hat ihre Aufgabe abgeschlossen"
+
+#: packages/lib/utils/document-audit-logs.ts:355
+msgid "{userName} rejected the document"
+msgstr "{userName} hat das Dokument abgelehnt"
+
+#: packages/lib/utils/document-audit-logs.ts:341
+msgid "{userName} signed the document"
+msgstr "{userName} hat das Dokument unterschrieben"
+
+#: packages/lib/utils/document-audit-logs.ts:342
+msgid "{userName} viewed the document"
+msgstr "{userName} hat das Dokument angesehen"
+
#: packages/ui/primitives/data-table-pagination.tsx:41
msgid "{visibleRows, plural, one {Showing # result.} other {Showing # results.}}"
msgstr "{visibleRows, plural, one {Eine # Ergebnis wird angezeigt.} other {# Ergebnisse werden angezeigt.}}"
+#: packages/email/templates/document-invite.tsx:100
+#~ msgid "`${inviterName} has invited you to ${action} the document \"${documentName}\".`"
+#~ msgstr "`${inviterName} has invited you to ${action} the document \"${documentName}\".`"
+
+#: packages/email/templates/team-transfer-request.tsx:59
+msgid "<0>{senderName}0> has requested that you take ownership of the following team"
+msgstr "<0>{senderName}0> hat angefordert, dass du das folgende Team übernimmst"
+
+#: packages/email/templates/confirm-team-email.tsx:75
+msgid "<0>{teamName}0> has requested to use your email address for their team on Documenso."
+msgstr "<0>{teamName}0> hat angefragt, Ihre E-Mail-Adresse für ihr Team bei Documenso zu verwenden."
+
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:241
+msgid "<0>Email0> - The recipient will be emailed the document to sign, approve, etc."
+msgstr "<0>E-Mail0> - Der Empfänger erhält das Dokument zur Unterschrift, Genehmigung usw."
+
#: packages/ui/components/recipient/recipient-action-auth-select.tsx:53
msgid "<0>Inherit authentication method0> - Use the global action signing authentication method configured in the \"General Settings\" step"
msgstr "<0>Authentifizierungsmethode erben0> - Verwenden Sie die in den \"Allgemeinen Einstellungen\" konfigurierte globale Aktionssignatur-Authentifizierungsmethode"
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:247
+msgid "<0>Links0> - We will generate links which you can send to the recipients manually."
+msgstr "<0>Links0> - Wir generieren Links, die Sie manuell an die Empfänger senden können."
+
#: packages/ui/components/document/document-global-auth-action-select.tsx:95
msgid "<0>No restrictions0> - No authentication required"
msgstr "<0>Keine Einschränkungen0> - Keine Authentifizierung erforderlich"
@@ -42,6 +291,10 @@ msgstr "<0>Keine Einschränkungen0> - Das Dokument kann direkt über die dem E
msgid "<0>None0> - No authentication required"
msgstr "<0>Keine0> - Keine Authentifizierung erforderlich"
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:254
+msgid "<0>Note0> - If you use Links in combination with direct templates, you will need to manually send the links to the remaining recipients."
+msgstr "<0>Hinweis0> - Wenn Sie Links in Kombination mit direkten Vorlagen verwenden, müssen Sie die Links manuell an die restlichen Empfänger senden."
+
#: packages/ui/components/document/document-global-auth-action-select.tsx:89
#: packages/ui/components/recipient/recipient-action-auth-select.tsx:69
msgid "<0>Require 2FA0> - The recipient must have an account and 2FA enabled via their settings"
@@ -56,20 +309,95 @@ msgstr "<0>Konto erforderlich0> - Der Empfänger muss angemeldet sein, um das
msgid "<0>Require passkey0> - The recipient must have an account and passkey configured via their settings"
msgstr "<0>Passkey erforderlich0> - Der Empfänger muss ein Konto haben und den Passkey über seine Einstellungen konfiguriert haben"
+#: packages/lib/jobs/definitions/emails/send-signing-email.ts:122
+msgid "A document was created by your direct template that requires you to {recipientActionVerb} it."
+msgstr "Ein Dokument wurde von deiner direkten Vorlage erstellt, das erfordert, dass du {recipientActionVerb}."
+
+#: packages/lib/utils/document-audit-logs.ts:262
+msgid "A field was added"
+msgstr "Ein Feld wurde hinzugefügt"
+
+#: packages/lib/utils/document-audit-logs.ts:266
+msgid "A field was removed"
+msgstr "Ein Feld wurde entfernt"
+
+#: packages/lib/utils/document-audit-logs.ts:270
+msgid "A field was updated"
+msgstr "Ein Feld wurde aktualisiert"
+
+#: packages/lib/jobs/definitions/emails/send-team-member-joined-email.ts:107
+msgid "A new member has joined your team"
+msgstr "Ein neues Mitglied ist deinem Team beigetreten"
+
+#: packages/lib/utils/document-audit-logs.ts:274
+msgid "A recipient was added"
+msgstr "Ein Empfänger wurde hinzugefügt"
+
+#: packages/lib/utils/document-audit-logs.ts:278
+msgid "A recipient was removed"
+msgstr "Ein Empfänger wurde entfernt"
+
+#: packages/lib/utils/document-audit-logs.ts:282
+msgid "A recipient was updated"
+msgstr "Ein Empfänger wurde aktualisiert"
+
+#: packages/lib/server-only/team/create-team-email-verification.ts:156
+msgid "A request to use your email has been initiated by {0} on Documenso"
+msgstr "Eine Anfrage zur Verwendung Ihrer E-Mail wurde von {0} auf Documenso initiiert"
+
+#: packages/lib/server-only/team/create-team-email-verification.ts:142
+#~ msgid "A request to use your email has been initiated by {teamName} on Documenso"
+#~ msgstr "A request to use your email has been initiated by {teamName} on Documenso"
+
+#: packages/email/templates/team-join.tsx:31
+msgid "A team member has joined a team on Documenso"
+msgstr "Ein Teammitglied ist einem Team bei Documenso beigetreten"
+
+#: packages/lib/jobs/definitions/emails/send-team-member-left-email.ts:96
+msgid "A team member has left {0}"
+msgstr "Ein Teammitglied hat {0} verlassen"
+
+#: packages/email/templates/team-leave.tsx:31
+msgid "A team member has left a team on Documenso"
+msgstr "Ein Teammitglied hat ein Team auf Documenso verlassen"
+
+#: packages/email/templates/team-delete.tsx:29
+#: packages/email/templates/team-delete.tsx:33
+msgid "A team you were a part of has been deleted"
+msgstr "Ein Team, dem du angehörtest, wurde gelöscht"
+
+#: packages/email/templates/confirm-team-email.tsx:118
+#: packages/email/templates/team-invite.tsx:94
+#: packages/email/templates/team-transfer-request.tsx:81
+msgid "Accept"
+msgstr "Akzeptieren"
+
+#: packages/email/templates/team-invite.tsx:42
+msgid "Accept invitation to join a team on Documenso"
+msgstr "Einladung annehmen, um einem Team auf Documenso beizutreten"
+
+#: packages/email/templates/confirm-team-email.tsx:41
+msgid "Accept team email request for {teamName} on Documenso"
+msgstr "Akzeptiere die Team-E-Mail-Anfrage für {teamName} bei Documenso"
+
+#: packages/email/templates/team-transfer-request.tsx:29
+msgid "Accept team transfer request on Documenso"
+msgstr "Übertragungsanfrage des Teams auf Documenso annehmen"
+
#: packages/ui/primitives/document-dropzone.tsx:69
msgid "Add a document"
msgstr "Dokument hinzufügen"
-#: packages/ui/primitives/document-flow/add-settings.tsx:336
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:339
+#: packages/ui/primitives/document-flow/add-settings.tsx:378
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:468
msgid "Add a URL to redirect the user to once the document is signed"
msgstr "Fügen Sie eine URL hinzu, um den Benutzer nach der Unterzeichnung des Dokuments weiterzuleiten"
-#: packages/ui/primitives/document-flow/add-settings.tsx:248
+#: packages/ui/primitives/document-flow/add-settings.tsx:290
msgid "Add an external ID to the document. This can be used to identify the document in external systems."
msgstr "Fügen Sie dem Dokument eine externe ID hinzu. Diese kann verwendet werden, um das Dokument in externen Systemen zu identifizieren."
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:256
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:385
msgid "Add an external ID to the template. This can be used to identify in external systems."
msgstr "Fügen Sie der Vorlage eine externe ID hinzu. Diese kann zur Identifizierung in externen Systemen verwendet werden."
@@ -82,19 +410,19 @@ msgstr "Weitere Option hinzufügen"
msgid "Add another value"
msgstr "Weiteren Wert hinzufügen"
-#: packages/ui/primitives/document-flow/add-signers.tsx:662
+#: packages/ui/primitives/document-flow/add-signers.tsx:691
msgid "Add myself"
msgstr "Mich selbst hinzufügen"
-#: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:637
+#: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:645
msgid "Add Myself"
msgstr "Mich hinzufügen"
-#: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:623
+#: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:631
msgid "Add Placeholder Recipient"
msgstr "Platzhalterempfänger hinzufügen"
-#: packages/ui/primitives/document-flow/add-signers.tsx:651
+#: packages/ui/primitives/document-flow/add-signers.tsx:680
msgid "Add Signer"
msgstr "Unterzeichner hinzufügen"
@@ -110,13 +438,13 @@ msgstr "Text zum Feld hinzufügen"
msgid "Admin"
msgstr "Admin"
-#: packages/ui/primitives/document-flow/add-settings.tsx:230
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:238
+#: packages/ui/primitives/document-flow/add-settings.tsx:272
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:367
msgid "Advanced Options"
msgstr "Erweiterte Optionen"
-#: packages/ui/primitives/document-flow/add-fields.tsx:565
-#: packages/ui/primitives/template-flow/add-template-fields.tsx:402
+#: packages/ui/primitives/document-flow/add-fields.tsx:576
+#: packages/ui/primitives/template-flow/add-template-fields.tsx:409
msgid "Advanced settings"
msgstr "Erweiterte Einstellungen"
@@ -124,10 +452,34 @@ msgstr "Erweiterte Einstellungen"
msgid "After submission, a document will be automatically generated and added to your documents page. You will also receive a notification via email."
msgstr "Nach der Übermittlung wird ein Dokument automatisch generiert und zu Ihrer Dokumentenseite hinzugefügt. Sie erhalten außerdem eine Benachrichtigung per E-Mail."
+#: packages/email/template-components/template-document-cancel.tsx:31
+msgid "All signatures have been voided."
+msgstr "Alle Unterschriften wurden ungültig gemacht."
+
+#: packages/email/templates/confirm-team-email.tsx:98
+msgid "Allow document recipients to reply directly to this email address"
+msgstr "Erlauben Sie den Dokumentempfängern, direkt an diese E-Mail-Adresse zu antworten"
+
+#: packages/email/templates/document-super-delete.tsx:22
+msgid "An admin has deleted your document \"{documentName}\"."
+msgstr "Ein Administrator hat dein Dokument \"{documentName}\" gelöscht."
+
+#: packages/ui/primitives/pdf-viewer.tsx:167
+msgid "An error occurred while loading the document."
+msgstr "Ein Fehler ist beim Laden des Dokuments aufgetreten."
+
#: packages/lib/constants/recipient-roles.ts:8
msgid "Approve"
msgstr "Genehmigen"
+#: packages/email/template-components/template-document-invite.tsx:106
+msgid "Approve Document"
+msgstr "Dokument genehmigen"
+
+#: packages/lib/constants/recipient-roles.ts:68
+#~ msgid "APPROVE_REQUEST"
+#~ msgstr "APPROVE_REQUEST"
+
#: packages/lib/constants/recipient-roles.ts:9
msgid "Approved"
msgstr "Genehmigt"
@@ -136,18 +488,38 @@ msgstr "Genehmigt"
msgid "Approver"
msgstr "Genehmiger"
+#: packages/lib/constants/recipient-roles.ts:12
+msgid "Approvers"
+msgstr "Genehmigende"
+
#: packages/lib/constants/recipient-roles.ts:10
msgid "Approving"
msgstr "Genehmigung"
-#: packages/ui/primitives/signature-pad/signature-pad.tsx:276
+#: packages/email/template-components/template-confirmation-email.tsx:25
+msgid "Before you get started, please confirm your email address by clicking the button below:"
+msgstr "Bitte bestätige vor dem Start deine E-Mail-Adresse, indem du auf den Button unten klickst:"
+
+#: packages/ui/primitives/signature-pad/signature-pad.tsx:377
msgid "Black"
msgstr "Schwarz"
-#: packages/ui/primitives/signature-pad/signature-pad.tsx:290
+#: packages/ui/primitives/signature-pad/signature-pad.tsx:391
msgid "Blue"
msgstr "Blau"
+#: packages/email/templates/team-invite.tsx:84
+msgid "by <0>{senderName}0>"
+msgstr "von <0>{senderName}0>"
+
+#: packages/email/templates/confirm-team-email.tsx:87
+msgid "By accepting this request, you will be granting <0>{teamName}0> access to:"
+msgstr "Durch die Annahme dieser Anfrage gewähren Sie <0>{teamName}0> Zugriff auf:"
+
+#: packages/email/templates/team-transfer-request.tsx:70
+msgid "By accepting this request, you will take responsibility for any billing items associated with this team."
+msgstr "Indem du diese Anfrage annimmst, übernimmst du die Verantwortung für alle Abrechnungspunkte, die mit diesem Team verbunden sind."
+
#: packages/ui/primitives/document-flow/field-item-advanced-settings.tsx:356
#: packages/ui/primitives/document-flow/send-document-action-dialog.tsx:58
msgid "Cancel"
@@ -157,29 +529,28 @@ msgstr "Abbrechen"
msgid "Cannot remove signer"
msgstr "Unterzeichner kann nicht entfernt werden"
-#: packages/ui/primitives/document-flow/add-signers.tsx:221
-#~ msgid "Cannot update signer because they have already signed a field"
-#~ msgstr "Cannot update signer because they have already signed a field"
-
-#: packages/lib/constants/recipient-roles.ts:17
+#: packages/lib/constants/recipient-roles.ts:18
msgid "Cc"
msgstr "Cc"
-#: packages/lib/constants/recipient-roles.ts:14
-#: packages/lib/constants/recipient-roles.ts:16
+#: packages/lib/constants/recipient-roles.ts:15
+#: packages/lib/constants/recipient-roles.ts:17
msgid "CC"
msgstr "CC"
-#: packages/lib/constants/recipient-roles.ts:15
+#: packages/lib/constants/recipient-roles.ts:16
msgid "CC'd"
msgstr "CC'd"
+#: packages/lib/constants/recipient-roles.ts:19
+msgid "Ccers"
+msgstr "Ccers"
+
#: packages/ui/primitives/document-flow/field-items-advanced-settings/text-field.tsx:86
msgid "Character Limit"
msgstr "Zeichenbeschränkung"
-#: packages/ui/primitives/document-flow/add-fields.tsx:993
-#: packages/ui/primitives/template-flow/add-template-fields.tsx:788
+#: packages/ui/primitives/document-flow/types.ts:58
msgid "Checkbox"
msgstr "Checkbox"
@@ -191,7 +562,7 @@ msgstr "Checkbox-Werte"
msgid "Clear filters"
msgstr "Filter löschen"
-#: packages/ui/primitives/signature-pad/signature-pad.tsx:310
+#: packages/ui/primitives/signature-pad/signature-pad.tsx:411
msgid "Clear Signature"
msgstr "Unterschrift löschen"
@@ -203,61 +574,226 @@ msgstr "Klicken, um das Feld einzufügen"
msgid "Close"
msgstr "Schließen"
+#: packages/email/template-components/template-document-completed.tsx:35
+#: packages/email/template-components/template-document-self-signed.tsx:36
+#: packages/lib/constants/document.ts:10
+msgid "Completed"
+msgstr "Abgeschlossen"
+
+#: packages/email/templates/document-completed.tsx:23
+#: packages/email/templates/document-self-signed.tsx:19
+msgid "Completed Document"
+msgstr "Abgeschlossenes Dokument"
+
#: packages/lib/constants/template.ts:12
msgid "Configure Direct Recipient"
msgstr "Direkten Empfänger konfigurieren"
-#: packages/ui/primitives/document-flow/add-fields.tsx:566
-#: packages/ui/primitives/template-flow/add-template-fields.tsx:403
+#: packages/ui/primitives/document-flow/add-fields.tsx:577
+#: packages/ui/primitives/template-flow/add-template-fields.tsx:410
msgid "Configure the {0} field"
msgstr "Konfigurieren Sie das Feld {0}"
+#: packages/email/template-components/template-confirmation-email.tsx:35
+msgid "Confirm email"
+msgstr "E-Mail bestätigen"
+
#: packages/ui/primitives/document-flow/document-flow-root.tsx:141
msgid "Continue"
msgstr "Fortsetzen"
+#: packages/email/template-components/template-document-invite.tsx:72
+#~ msgid "Continue by {0} the document."
+#~ msgstr "Continue by {0} the document."
+
+#: packages/email/template-components/template-document-invite.tsx:86
+msgid "Continue by approving the document."
+msgstr "Fahre fort, indem du das Dokument genehmigst."
+
+#: packages/email/template-components/template-document-completed.tsx:45
+msgid "Continue by downloading the document."
+msgstr "Fahre fort, indem du das Dokument herunterlädst."
+
+#: packages/email/template-components/template-document-invite.tsx:84
+msgid "Continue by signing the document."
+msgstr "Fahre fort, indem du das Dokument signierst."
+
+#: packages/email/template-components/template-document-invite.tsx:85
+msgid "Continue by viewing the document."
+msgstr "Fahre fort, indem du das Dokument ansiehst."
+
+#: packages/ui/primitives/document-flow/add-subject.tsx:254
+msgid "Copied"
+msgstr "Kopiert"
+
#: packages/ui/components/document/document-share-button.tsx:46
+#: packages/ui/primitives/document-flow/add-subject.tsx:241
msgid "Copied to clipboard"
msgstr "In die Zwischenablage kopiert"
+#: packages/ui/primitives/document-flow/add-subject.tsx:249
+msgid "Copy"
+msgstr "Kopieren"
+
+#: packages/ui/components/document/document-share-button.tsx:194
+msgid "Copy Link"
+msgstr "Link kopieren"
+
+#: packages/email/template-components/template-document-self-signed.tsx:46
+msgid "Create a <0>free account0> to access your signed documents at any time."
+msgstr "Erstelle ein <0>kostenfreies Konto0>, um jederzeit auf deine unterzeichneten Dokumente zuzugreifen."
+
+#: packages/email/template-components/template-document-self-signed.tsx:68
+msgid "Create account"
+msgstr "Konto erstellen"
+
#: packages/ui/primitives/document-flow/add-signature.tsx:360
msgid "Custom Text"
msgstr "Benutzerdefinierter Text"
-#: packages/ui/primitives/document-flow/add-fields.tsx:889
-#: packages/ui/primitives/template-flow/add-template-fields.tsx:684
+#: packages/ui/primitives/document-flow/add-fields.tsx:934
+#: packages/ui/primitives/document-flow/types.ts:53
+#: packages/ui/primitives/template-flow/add-template-fields.tsx:697
msgid "Date"
msgstr "Datum"
-#: packages/ui/primitives/document-flow/add-settings.tsx:271
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:279
+#: packages/ui/primitives/document-flow/add-settings.tsx:313
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:408
msgid "Date Format"
msgstr "Datumsformat"
-#: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:570
+#: packages/email/templates/team-invite.tsx:100
+msgid "Decline"
+msgstr "Ablehnen"
+
+#: packages/email/templates/reset-password.tsx:71
+msgid "Didn't request a password change? We are here to help you secure your account, just <0>contact us.0>"
+msgstr "Hast du keinen Passwortwechsel angefordert? Wir helfen dir, dein Konto abzusichern, kontaktiere uns einfach <0>hier.0>"
+
+#: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:578
msgid "Direct link receiver"
msgstr "Empfänger des direkten Links"
+#: packages/lib/jobs/definitions/emails/send-rejection-emails.ts:149
+msgid "Document \"{0}\" - Rejected by {1}"
+msgstr "Dokument \"{0}\" - Abgelehnt von {1}"
+
+#: packages/lib/jobs/definitions/emails/send-rejection-emails.ts:109
+msgid "Document \"{0}\" - Rejection Confirmed"
+msgstr "Dokument \"{0}\" - Ablehnung Bestätigt"
+
#: packages/ui/components/document/document-global-auth-access-select.tsx:62
-#: packages/ui/primitives/document-flow/add-settings.tsx:174
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:151
+#: packages/ui/primitives/document-flow/add-settings.tsx:216
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:202
msgid "Document access"
msgstr "Dokumentenzugriff"
+#: packages/lib/utils/document-audit-logs.ts:306
+msgid "Document access auth updated"
+msgstr "Die Authentifizierung für den Dokumentenzugriff wurde aktualisiert"
+
+#: packages/lib/server-only/document/delete-document.ts:246
+#: packages/lib/server-only/document/super-delete-document.ts:98
+msgid "Document Cancelled"
+msgstr "Dokument storniert"
+
+#: packages/lib/utils/document-audit-logs.ts:369
+#: packages/lib/utils/document-audit-logs.ts:370
+msgid "Document completed"
+msgstr "Dokument abgeschlossen"
+
+#: packages/ui/components/document/document-email-checkboxes.tsx:168
+msgid "Document completed email"
+msgstr "E-Mail zum Abschluss des Dokuments"
+
+#: packages/lib/utils/document-audit-logs.ts:286
+msgid "Document created"
+msgstr "Dokument erstellt"
+
+#: packages/email/templates/document-created-from-direct-template.tsx:32
+#: packages/lib/server-only/template/create-document-from-direct-template.ts:567
+msgid "Document created from direct template"
+msgstr "Dokument erstellt aus direkter Vorlage"
+
#: packages/lib/constants/template.ts:20
msgid "Document Creation"
msgstr "Dokumenterstellung"
+#: packages/lib/utils/document-audit-logs.ts:290
+msgid "Document deleted"
+msgstr "Dokument gelöscht"
+
+#: packages/ui/components/document/document-email-checkboxes.tsx:207
+msgid "Document deleted email"
+msgstr "E-Mail zum Löschen des Dokuments"
+
+#: packages/lib/server-only/document/send-delete-email.ts:82
+msgid "Document Deleted!"
+msgstr "Dokument gelöscht!"
+
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:219
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:228
+msgid "Document Distribution Method"
+msgstr "Verteilungsmethode für Dokumente"
+
+#: packages/lib/utils/document-audit-logs.ts:326
+msgid "Document external ID updated"
+msgstr "Externe ID des Dokuments aktualisiert"
+
+#: packages/lib/utils/document-audit-logs.ts:334
+msgid "Document moved to team"
+msgstr "Dokument ins Team verschoben"
+
+#: packages/lib/utils/document-audit-logs.ts:318
+msgid "Document opened"
+msgstr "Dokument geöffnet"
+
+#: packages/ui/components/document/document-email-checkboxes.tsx:128
+msgid "Document pending email"
+msgstr "E-Mail über ausstehende Dokumente"
+
+#: packages/email/template-components/template-document-rejected.tsx:21
+msgid "Document Rejected"
+msgstr "Dokument Abgelehnt"
+
+#~ msgid "Document Rejection Confirmed"
+#~ msgstr "Document Rejection Confirmed"
+
+#: packages/lib/utils/document-audit-logs.ts:330
+msgid "Document sent"
+msgstr "Dokument gesendet"
+
+#: packages/lib/utils/document-audit-logs.ts:310
+msgid "Document signing auth updated"
+msgstr "Dokument unterzeichnen Authentifizierung aktualisiert"
+
+#: packages/lib/utils/document-audit-logs.ts:322
+msgid "Document title updated"
+msgstr "Dokumenttitel aktualisiert"
+
+#: packages/lib/utils/document-audit-logs.ts:314
+msgid "Document updated"
+msgstr "Dokument aktualisiert"
+
+#: packages/lib/utils/document-audit-logs.ts:302
+msgid "Document visibility updated"
+msgstr "Sichtbarkeit des Dokuments aktualisiert"
+
+#: packages/email/template-components/template-document-completed.tsx:57
#: packages/ui/components/document/document-download-button.tsx:68
msgid "Download"
msgstr "Herunterladen"
+#: packages/lib/constants/document.ts:13
+msgid "Draft"
+msgstr "Entwurf"
+
#: packages/ui/primitives/document-dropzone.tsx:162
msgid "Drag & drop your PDF here."
msgstr "Ziehen Sie Ihr PDF hierher."
-#: packages/ui/primitives/document-flow/add-fields.tsx:1019
-#: packages/ui/primitives/template-flow/add-template-fields.tsx:814
+#: packages/ui/primitives/document-flow/add-fields.tsx:1065
+#: packages/ui/primitives/template-flow/add-template-fields.tsx:827
msgid "Dropdown"
msgstr "Dropdown"
@@ -265,20 +801,35 @@ msgstr "Dropdown"
msgid "Dropdown options"
msgstr "Dropdown-Optionen"
-#: packages/ui/primitives/document-flow/add-fields.tsx:837
+#: packages/lib/constants/document.ts:28
+#: packages/ui/primitives/document-flow/add-fields.tsx:882
#: packages/ui/primitives/document-flow/add-signature.tsx:272
-#: packages/ui/primitives/document-flow/add-signers.tsx:500
-#: packages/ui/primitives/template-flow/add-template-fields.tsx:632
-#: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:463
-#: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:470
+#: packages/ui/primitives/document-flow/add-signers.tsx:512
+#: packages/ui/primitives/document-flow/add-signers.tsx:519
+#: packages/ui/primitives/document-flow/types.ts:54
+#: packages/ui/primitives/template-flow/add-template-fields.tsx:645
+#: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:471
+#: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:478
msgid "Email"
msgstr "E-Mail"
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:184
+#: packages/ui/primitives/document-flow/add-signature.types.ts:7
+msgid "Email is required"
+msgstr "E-Mail ist erforderlich"
+
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:307
msgid "Email Options"
msgstr "E-Mail-Optionen"
-#: packages/ui/primitives/document-flow/add-fields.tsx:1082
+#: packages/lib/utils/document-audit-logs.ts:363
+msgid "Email resent"
+msgstr "E-Mail erneut gesendet"
+
+#: packages/lib/utils/document-audit-logs.ts:363
+msgid "Email sent"
+msgstr "E-Mail gesendet"
+
+#: packages/ui/primitives/document-flow/add-fields.tsx:1130
msgid "Empty field"
msgstr "Leeres Feld"
@@ -287,20 +838,25 @@ msgid "Enable Direct Link Signing"
msgstr "Direktlink-Signierung aktivieren"
#: packages/ui/primitives/document-flow/add-signers.tsx:401
-#: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:362
+#: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:370
msgid "Enable signing order"
msgstr "Aktiviere die Signaturreihenfolge"
+#: packages/ui/primitives/document-flow/add-fields.tsx:802
+msgid "Enable Typed Signatures"
+msgstr "Aktivieren Sie getippte Unterschriften"
+
#: packages/ui/primitives/document-password-dialog.tsx:84
msgid "Enter password"
msgstr "Passwort eingeben"
#: packages/ui/primitives/document-flow/field-item-advanced-settings.tsx:257
+#: packages/ui/primitives/pdf-viewer.tsx:166
msgid "Error"
msgstr "Fehler"
-#: packages/ui/primitives/document-flow/add-settings.tsx:241
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:249
+#: packages/ui/primitives/document-flow/add-settings.tsx:283
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:378
msgid "External ID"
msgstr "Externe ID"
@@ -319,7 +875,7 @@ msgstr "Zeichenbeschränkung des Feldes"
#: packages/ui/primitives/document-flow/field-items-advanced-settings/number-field.tsx:130
#: packages/ui/primitives/document-flow/field-items-advanced-settings/text-field.tsx:107
msgid "Field font size"
-msgstr ""
+msgstr "Feldschriftgröße"
#: packages/ui/primitives/document-flow/field-items-advanced-settings/number-field.tsx:110
msgid "Field format"
@@ -333,6 +889,14 @@ msgstr "Feldbeschriftung"
msgid "Field placeholder"
msgstr "Feldplatzhalter"
+#: packages/lib/utils/document-audit-logs.ts:294
+msgid "Field signed"
+msgstr "Feld unterschrieben"
+
+#: packages/lib/utils/document-audit-logs.ts:298
+msgid "Field unsigned"
+msgstr "Feld nicht unterschrieben"
+
#: packages/ui/primitives/document-flow/field-items-advanced-settings/date-field.tsx:56
#: packages/ui/primitives/document-flow/field-items-advanced-settings/email-field.tsx:38
#: packages/ui/primitives/document-flow/field-items-advanced-settings/initials-field.tsx:38
@@ -340,7 +904,23 @@ msgstr "Feldplatzhalter"
#: packages/ui/primitives/document-flow/field-items-advanced-settings/number-field.tsx:124
#: packages/ui/primitives/document-flow/field-items-advanced-settings/text-field.tsx:101
msgid "Font Size"
-msgstr ""
+msgstr "Schriftgröße"
+
+#: packages/lib/server-only/auth/send-forgot-password.ts:61
+msgid "Forgot Password?"
+msgstr "Passwort vergessen?"
+
+#: packages/email/template-components/template-forgot-password.tsx:21
+msgid "Forgot your password?"
+msgstr "Hast du dein Passwort vergessen?"
+
+#: packages/ui/primitives/document-flow/types.ts:50
+msgid "Free Signature"
+msgstr "Freie Unterschrift"
+
+#: packages/ui/primitives/document-flow/add-subject.tsx:89
+msgid "Generate Links"
+msgstr "Links generieren"
#: packages/ui/components/document/document-global-auth-action-select.tsx:64
msgid "Global recipient action authentication"
@@ -350,41 +930,75 @@ msgstr "Globale Empfängerauthentifizierung"
msgid "Go Back"
msgstr "Zurück"
-#: packages/ui/primitives/signature-pad/signature-pad.tsx:297
+#: packages/ui/primitives/signature-pad/signature-pad.tsx:398
msgid "Green"
msgstr "Grün"
-#: packages/lib/constants/recipient-roles.ts:72
+#~ msgid "Hello {recipientName},"
+#~ msgstr "Hello {recipientName},"
+
+#: packages/email/templates/reset-password.tsx:56
+msgid "Hi, {userName} <0>({userEmail})0>"
+msgstr "Hallo, {userName} <0>({userEmail})0>"
+
+#: packages/lib/constants/recipient-roles.ts:44
msgid "I am a signer of this document"
msgstr "Ich bin ein Unterzeichner dieses Dokuments"
-#: packages/lib/constants/recipient-roles.ts:75
+#: packages/lib/constants/recipient-roles.ts:47
msgid "I am a viewer of this document"
msgstr "Ich bin ein Betrachter dieses Dokuments"
-#: packages/lib/constants/recipient-roles.ts:73
+#: packages/lib/constants/recipient-roles.ts:45
msgid "I am an approver of this document"
msgstr "Ich bin ein Genehmiger dieses Dokuments"
-#: packages/lib/constants/recipient-roles.ts:74
+#: packages/lib/constants/recipient-roles.ts:46
msgid "I am required to receive a copy of this document"
msgstr "Ich bin verpflichtet, eine Kopie dieses Dokuments zu erhalten"
-#: packages/lib/constants/recipient-roles.ts:74
-#~ msgid "I am required to recieve a copy of this document"
-#~ msgstr "I am required to recieve a copy of this document"
-
#: packages/ui/components/recipient/recipient-action-auth-select.tsx:29
#: packages/ui/components/recipient/recipient-action-auth-select.tsx:87
msgid "Inherit authentication method"
msgstr "Authentifizierungsmethode erben"
+#: packages/ui/primitives/document-flow/types.ts:51
+msgid "Initials"
+msgstr "Initialen"
+
+#: packages/ui/primitives/document-flow/add-signers.types.ts:17
+msgid "Invalid email"
+msgstr "Ungültige E-Mail"
+
+#: packages/ui/primitives/document-flow/add-signature.types.ts:8
+msgid "Invalid email address"
+msgstr "Ungültige E-Mail-Adresse"
+
+#: packages/email/templates/team-invite.tsx:72
+msgid "Join {teamName} on Documenso"
+msgstr "Tritt {teamName} auf Documenso bei"
+
#: packages/ui/primitives/document-flow/field-items-advanced-settings/number-field.tsx:67
#: packages/ui/primitives/document-flow/field-items-advanced-settings/number-field.tsx:72
#: packages/ui/primitives/document-flow/field-items-advanced-settings/text-field.tsx:48
msgid "Label"
msgstr "Beschriftung"
+#: packages/ui/primitives/document-flow/add-settings.tsx:176
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:162
+msgid "Language"
+msgstr "Sprache"
+
+#: packages/email/templates/confirm-team-email.tsx:124
+#: packages/email/templates/team-transfer-request.tsx:87
+msgid "Link expires in 1 hour."
+msgstr "Link läuft in 1 Stunde ab."
+
+#: packages/ui/primitives/lazy-pdf-viewer.tsx:15
+#: packages/ui/primitives/pdf-viewer.tsx:44
+msgid "Loading document..."
+msgstr "Lade Dokument..."
+
#: packages/lib/constants/teams.ts:11
msgid "Manager"
msgstr "Manager"
@@ -397,8 +1011,8 @@ msgstr "Max"
msgid "Member"
msgstr "Mitglied"
-#: packages/ui/primitives/document-flow/add-subject.tsx:95
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:215
+#: packages/ui/primitives/document-flow/add-subject.tsx:160
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:338
msgid "Message <0>(Optional)0>"
msgstr "Nachricht <0>(Optional)0>"
@@ -406,13 +1020,14 @@ msgstr "Nachricht <0>(Optional)0>"
msgid "Min"
msgstr "Min"
-#: packages/ui/primitives/document-flow/add-fields.tsx:863
+#: packages/ui/primitives/document-flow/add-fields.tsx:908
#: packages/ui/primitives/document-flow/add-signature.tsx:298
-#: packages/ui/primitives/document-flow/add-signers.tsx:535
-#: packages/ui/primitives/document-flow/add-signers.tsx:541
-#: packages/ui/primitives/template-flow/add-template-fields.tsx:658
-#: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:498
-#: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:504
+#: packages/ui/primitives/document-flow/add-signers.tsx:550
+#: packages/ui/primitives/document-flow/add-signers.tsx:556
+#: packages/ui/primitives/document-flow/types.ts:55
+#: packages/ui/primitives/template-flow/add-template-fields.tsx:671
+#: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:506
+#: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:512
msgid "Name"
msgstr "Name"
@@ -428,13 +1043,17 @@ msgstr "Muss unterzeichnen"
msgid "Needs to view"
msgstr "Muss sehen"
-#: packages/ui/primitives/document-flow/add-fields.tsx:674
-#: packages/ui/primitives/template-flow/add-template-fields.tsx:497
+#: packages/ui/primitives/document-flow/add-fields.tsx:693
+#: packages/ui/primitives/template-flow/add-template-fields.tsx:511
msgid "No recipient matching this description was found."
msgstr "Kein passender Empfänger mit dieser Beschreibung gefunden."
-#: packages/ui/primitives/document-flow/add-fields.tsx:690
-#: packages/ui/primitives/template-flow/add-template-fields.tsx:513
+#: packages/ui/primitives/document-flow/add-subject.tsx:215
+msgid "No recipients"
+msgstr "Keine Empfänger"
+
+#: packages/ui/primitives/document-flow/add-fields.tsx:708
+#: packages/ui/primitives/template-flow/add-template-fields.tsx:526
msgid "No recipients with this role"
msgstr "Keine Empfänger mit dieser Rolle"
@@ -458,8 +1077,13 @@ msgstr "Kein Unterschriftsfeld gefunden"
msgid "No value found."
msgstr "Kein Wert gefunden."
-#: packages/ui/primitives/document-flow/add-fields.tsx:941
-#: packages/ui/primitives/template-flow/add-template-fields.tsx:736
+#: packages/lib/constants/document.ts:32
+msgid "None"
+msgstr "Keine"
+
+#: packages/ui/primitives/document-flow/add-fields.tsx:986
+#: packages/ui/primitives/document-flow/types.ts:56
+#: packages/ui/primitives/template-flow/add-template-fields.tsx:749
msgid "Number"
msgstr "Nummer"
@@ -479,10 +1103,34 @@ msgstr "Sobald Ihre Vorlage eingerichtet ist, teilen Sie den Link überall, wo S
msgid "Page {0} of {1}"
msgstr "Seite {0} von {1}"
+#: packages/ui/primitives/pdf-viewer.tsx:259
+msgid "Page {0} of {numPages}"
+msgstr "Seite {0} von {numPages}"
+
#: packages/ui/primitives/document-password-dialog.tsx:62
msgid "Password Required"
msgstr "Passwort erforderlich"
+#: packages/email/templates/forgot-password.tsx:19
+msgid "Password Reset Requested"
+msgstr "Passwortzurücksetzung angefordert"
+
+#: packages/email/templates/reset-password.tsx:20
+msgid "Password Reset Successful"
+msgstr "Passwort erfolgreich zurückgesetzt"
+
+#: packages/email/template-components/template-reset-password.tsx:22
+msgid "Password updated!"
+msgstr "Passwort aktualisiert!"
+
+#: packages/lib/constants/document.ts:16
+msgid "Pending"
+msgstr "Ausstehend"
+
+#: packages/email/templates/document-pending.tsx:19
+msgid "Pending Document"
+msgstr "Ausstehendes Dokument"
+
#: packages/ui/primitives/document-flow/field-items-advanced-settings/checkbox-field.tsx:156
msgid "Pick a number"
msgstr "Wählen Sie eine Zahl"
@@ -493,8 +1141,41 @@ msgstr "Wählen Sie eine Zahl"
msgid "Placeholder"
msgstr "Platzhalter"
-#: packages/ui/primitives/document-flow/add-fields.tsx:967
-#: packages/ui/primitives/template-flow/add-template-fields.tsx:762
+#: packages/email/template-components/template-document-invite.tsx:56
+msgid "Please {0} your document<0/>\"{documentName}\""
+msgstr "Bitte {0} dein Dokument<0/>\"{documentName}\""
+
+#: packages/email/templates/document-invite.tsx:50
+msgid "Please {action} your document {documentName}"
+msgstr "Bitte {action} dein Dokument {documentName}"
+
+#: packages/lib/jobs/definitions/emails/send-signing-email.ts:111
+msgid "Please {recipientActionVerb} this document"
+msgstr "Bitte {recipientActionVerb} dieses Dokument"
+
+#: packages/lib/jobs/definitions/emails/send-signing-email.ts:125
+msgid "Please {recipientActionVerb} this document created by your direct template"
+msgstr "Bitte {recipientActionVerb} dieses Dokument, das von deiner direkten Vorlage erstellt wurde"
+
+#: packages/lib/jobs/definitions/emails/send-signing-email.ts:117
+msgid "Please {recipientActionVerb} your document"
+msgstr "Bitte {recipientActionVerb} dein Dokument"
+
+#: packages/lib/server-only/auth/send-confirmation-email.ts:67
+msgid "Please confirm your email"
+msgstr "Bitte bestätige deine E-Mail"
+
+#: packages/email/templates/confirm-email.tsx:17
+msgid "Please confirm your email address"
+msgstr "Bitte bestätige deine E-Mail-Adresse"
+
+#: packages/ui/primitives/pdf-viewer.tsx:223
+#: packages/ui/primitives/pdf-viewer.tsx:238
+msgid "Please try again or contact our support."
+msgstr "Bitte versuchen Sie es erneut oder kontaktieren Sie unseren Support."
+
+#: packages/ui/primitives/document-flow/types.ts:57
+#: packages/ui/primitives/template-flow/add-template-fields.tsx:775
msgid "Radio"
msgstr "Radio"
@@ -510,26 +1191,71 @@ msgstr "Radio-Werte"
msgid "Read only"
msgstr "Nur lesen"
+#: packages/email/template-components/template-document-rejected.tsx:32
+msgid "Reason for rejection: {rejectionReason}"
+msgstr "Grund für die Ablehnung: {rejectionReason}"
+
#: packages/ui/components/recipient/recipient-role-select.tsx:95
msgid "Receives copy"
msgstr "Erhält Kopie"
+#: packages/lib/utils/document-audit-logs.ts:338
+#: packages/lib/utils/document-audit-logs.ts:353
+msgid "Recipient"
+msgstr "Empfänger"
+
#: packages/ui/components/recipient/recipient-action-auth-select.tsx:39
-#: packages/ui/primitives/document-flow/add-settings.tsx:215
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:169
+#: packages/ui/primitives/document-flow/add-settings.tsx:257
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:291
msgid "Recipient action authentication"
msgstr "Empfängeraktion Authentifizierung"
-#: packages/ui/primitives/signature-pad/signature-pad.tsx:283
+#: packages/ui/components/document/document-email-checkboxes.tsx:89
+msgid "Recipient removed email"
+msgstr "E-Mail des entfernten Empfängers"
+
+#: packages/ui/components/document/document-email-checkboxes.tsx:50
+msgid "Recipient signing request email"
+msgstr "E-Mail zur Unterzeichnungsanfrage des Empfängers"
+
+#: packages/ui/primitives/signature-pad/signature-pad.tsx:384
msgid "Red"
msgstr "Rot"
-#: packages/ui/primitives/document-flow/add-settings.tsx:329
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:332
+#: packages/ui/primitives/document-flow/add-settings.tsx:371
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:461
msgid "Redirect URL"
msgstr "Weiterleitungs-URL"
-#: packages/ui/primitives/document-flow/add-fields.tsx:1069
+#: packages/email/template-components/template-document-invite.tsx:96
+msgid "Reject Document"
+msgstr "Dokument Ablehnen"
+
+#: packages/email/template-components/template-document-rejection-confirmed.tsx:22
+msgid "Rejection Confirmed"
+msgstr "Ablehnung Bestätigt"
+
+#: packages/email/template-components/template-document-rejection-confirmed.tsx:34
+msgid "Rejection reason: {reason}"
+msgstr "Ablehnungsgrund: {reason}"
+
+#: packages/lib/server-only/document/resend-document.tsx:192
+msgid "Reminder: {0}"
+msgstr "Erinnerung: {0}"
+
+#: packages/lib/server-only/document/resend-document.tsx:132
+msgid "Reminder: {0} invited you to {recipientActionVerb} a document"
+msgstr "Erinnerung: {0} hat dich eingeladen, ein Dokument {recipientActionVerb}"
+
+#: packages/lib/server-only/document/resend-document.tsx:121
+msgid "Reminder: Please {recipientActionVerb} this document"
+msgstr "Erinnerung: Bitte {recipientActionVerb} dieses Dokument"
+
+#: packages/lib/server-only/document/resend-document.tsx:127
+msgid "Reminder: Please {recipientActionVerb} your document"
+msgstr "Erinnerung: Bitte {recipientActionVerb} dein Dokument"
+
+#: packages/ui/primitives/document-flow/add-fields.tsx:1117
msgid "Remove"
msgstr "Entfernen"
@@ -541,6 +1267,18 @@ msgstr "Entfernen"
msgid "Required field"
msgstr "Pflichtfeld"
+#: packages/ui/primitives/document-flow/add-subject.tsx:84
+msgid "Resend"
+msgstr "Erneut senden"
+
+#: packages/email/template-components/template-forgot-password.tsx:33
+msgid "Reset Password"
+msgstr "Passwort zurücksetzen"
+
+#: packages/ui/components/document/document-share-button.tsx:147
+msgid "Rest assured, your document is strictly confidential and will never be shared. Only your signing experience will be highlighted. Share your personalized signing card to showcase your signature!"
+msgstr "Seien Sie versichert, Ihr Dokument ist streng vertraulich und wird niemals geteilt. Nur Ihre Unterzeichnungserfahrung wird hervorgehoben. Teilen Sie Ihre personalisierte Unterschriftkarte, um Ihre Unterschrift zu präsentieren!"
+
#: packages/ui/primitives/data-table-pagination.tsx:55
msgid "Rows per page"
msgstr "Zeilen pro Seite"
@@ -549,7 +1287,7 @@ msgstr "Zeilen pro Seite"
msgid "Save"
msgstr "Speichern"
-#: packages/ui/primitives/template-flow/add-template-fields.tsx:848
+#: packages/ui/primitives/template-flow/add-template-fields.tsx:861
msgid "Save Template"
msgstr "Vorlage speichern"
@@ -558,6 +1296,7 @@ msgid "Search languages..."
msgstr "Sprachen suchen..."
#: packages/ui/primitives/document-flow/field-items-advanced-settings/dropdown-field.tsx:115
+#: packages/ui/primitives/document-flow/types.ts:59
msgid "Select"
msgstr "Auswählen"
@@ -573,7 +1312,8 @@ msgstr "Wählen Sie mindestens"
msgid "Select default option"
msgstr "Standardoption auswählen"
-#: packages/ui/primitives/document-flow/add-subject.tsx:124
+#: packages/ui/primitives/document-flow/add-subject.tsx:82
+#: packages/ui/primitives/document-flow/add-subject.tsx:85
#: packages/ui/primitives/document-flow/send-document-action-dialog.tsx:34
#: packages/ui/primitives/document-flow/send-document-action-dialog.tsx:64
msgid "Send"
@@ -583,6 +1323,30 @@ msgstr "Senden"
msgid "Send Document"
msgstr "Dokument senden"
+#: packages/ui/components/document/document-email-checkboxes.tsx:158
+msgid "Send document completed email"
+msgstr "E-Mail über den Abschluss des Dokuments senden"
+
+#: packages/ui/components/document/document-email-checkboxes.tsx:197
+msgid "Send document deleted email"
+msgstr "E-Mail über das Löschen des Dokuments senden"
+
+#: packages/ui/components/document/document-email-checkboxes.tsx:118
+msgid "Send document pending email"
+msgstr "E-Mail über ausstehende Dokumente senden"
+
+#: packages/email/templates/confirm-team-email.tsx:101
+msgid "Send documents on behalf of the team using the email address"
+msgstr "Dokumente im Namen des Teams über die E-Mail-Adresse senden"
+
+#: packages/ui/components/document/document-email-checkboxes.tsx:79
+msgid "Send recipient removed email"
+msgstr "E-Mail über entfernten Empfänger senden"
+
+#: packages/ui/components/document/document-email-checkboxes.tsx:40
+msgid "Send recipient signing request email"
+msgstr "E-Mail über Unterzeichnungsanfrage des Empfängers senden"
+
#: packages/ui/components/document/document-share-button.tsx:135
msgid "Share Signature Card"
msgstr "Unterschriftenkarte teilen"
@@ -591,34 +1355,64 @@ msgstr "Unterschriftenkarte teilen"
msgid "Share the Link"
msgstr "Link teilen"
-#: packages/ui/primitives/document-flow/add-signers.tsx:680
-#: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:655
+#: packages/ui/components/document/document-share-button.tsx:143
+msgid "Share your signing experience!"
+msgstr "Teilen Sie Ihre Unterzeichnungserfahrung!"
+
+#: packages/ui/primitives/document-flow/add-signers.tsx:709
+#: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:663
msgid "Show advanced settings"
msgstr "Erweiterte Einstellungen anzeigen"
-#: packages/lib/constants/recipient-roles.ts:20
+#: packages/lib/constants/recipient-roles.ts:22
msgid "Sign"
msgstr "Unterschreiben"
-#: packages/ui/primitives/document-flow/add-fields.tsx:785
+#: packages/email/template-components/template-document-invite.tsx:104
+msgid "Sign Document"
+msgstr "Dokument signieren"
+
+#: packages/email/template-components/template-reset-password.tsx:34
+msgid "Sign In"
+msgstr "Anmelden"
+
+#: packages/ui/primitives/document-flow/add-fields.tsx:830
#: packages/ui/primitives/document-flow/add-signature.tsx:323
#: packages/ui/primitives/document-flow/field-icon.tsx:52
-#: packages/ui/primitives/template-flow/add-template-fields.tsx:580
+#: packages/ui/primitives/document-flow/types.ts:49
+#: packages/ui/primitives/template-flow/add-template-fields.tsx:593
msgid "Signature"
msgstr "Unterschrift"
-#: packages/lib/constants/recipient-roles.ts:21
+#: packages/lib/constants/recipient-roles.ts:23
msgid "Signed"
msgstr "Unterzeichnet"
-#: packages/lib/constants/recipient-roles.ts:23
+#: packages/lib/constants/recipient-roles.ts:25
msgid "Signer"
msgstr "Unterzeichner"
-#: packages/lib/constants/recipient-roles.ts:22
+#: packages/lib/constants/recipient-roles.ts:26
+msgid "Signers"
+msgstr "Unterzeichner"
+
+#: packages/ui/primitives/document-flow/add-signers.types.ts:36
+msgid "Signers must have unique emails"
+msgstr "Unterzeichner müssen eindeutige E-Mails haben"
+
+#: packages/lib/constants/recipient-roles.ts:24
msgid "Signing"
msgstr "Unterzeichnung"
+#: packages/lib/server-only/document/send-completed-email.ts:114
+#: packages/lib/server-only/document/send-completed-email.ts:194
+msgid "Signing Complete!"
+msgstr "Unterzeichnung abgeschlossen!"
+
+#: packages/lib/constants/recipient-roles.ts:66
+#~ msgid "SIGNING_REQUEST"
+#~ msgstr "SIGNING_REQUEST"
+
#: packages/ui/primitives/document-flow/missing-signature-field-dialog.tsx:34
msgid "Some signers have not been assigned a signature field. Please assign at least 1 signature field to each signer before proceeding."
msgstr "Einige Unterzeichner haben noch kein Unterschriftsfeld zugewiesen bekommen. Bitte weisen Sie jedem Unterzeichner mindestens ein Unterschriftsfeld zu, bevor Sie fortfahren."
@@ -627,6 +1421,11 @@ msgstr "Einige Unterzeichner haben noch kein Unterschriftsfeld zugewiesen bekomm
msgid "Something went wrong"
msgstr "Etwas ist schief gelaufen"
+#: packages/ui/primitives/pdf-viewer.tsx:220
+#: packages/ui/primitives/pdf-viewer.tsx:235
+msgid "Something went wrong while loading the document."
+msgstr "Beim Laden des Dokuments ist ein Fehler aufgetreten."
+
#: packages/ui/primitives/data-table.tsx:136
msgid "Something went wrong."
msgstr "Etwas ist schief gelaufen."
@@ -635,8 +1434,8 @@ msgstr "Etwas ist schief gelaufen."
msgid "Step <0>{step} of {maxStep}0>"
msgstr "Schritt <0>{step} von {maxStep}0>"
-#: packages/ui/primitives/document-flow/add-subject.tsx:78
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:195
+#: packages/ui/primitives/document-flow/add-subject.tsx:143
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:318
msgid "Subject <0>(Optional)0>"
msgstr "Betreff <0>(Optional)0>"
@@ -644,15 +1443,36 @@ msgstr "Betreff <0>(Optional)0>"
msgid "Submit"
msgstr "Einreichen"
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:134
+#: packages/lib/server-only/team/delete-team.ts:124
+msgid "Team \"{0}\" has been deleted on Documenso"
+msgstr "Team \"{0}\" wurde auf Documenso gelöscht"
+
+#: packages/lib/server-only/team/delete-team-email.ts:104
+msgid "Team email has been revoked for {0}"
+msgstr "Team-E-Mail wurde für {0} widerrufen"
+
+#: packages/email/templates/team-email-removed.tsx:59
+msgid "Team email removed"
+msgstr "Team-E-Mail entfernt"
+
+#: packages/email/templates/team-email-removed.tsx:29
+msgid "Team email removed for {teamName} on Documenso"
+msgstr "Team-E-Mail für {teamName} auf Documenso entfernt"
+
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:145
msgid "Template title"
msgstr "Vorlagentitel"
-#: packages/ui/primitives/document-flow/add-fields.tsx:915
-#: packages/ui/primitives/template-flow/add-template-fields.tsx:710
+#: packages/ui/primitives/document-flow/add-fields.tsx:960
+#: packages/ui/primitives/document-flow/types.ts:52
+#: packages/ui/primitives/template-flow/add-template-fields.tsx:723
msgid "Text"
msgstr "Text"
+#: packages/email/template-components/template-forgot-password.tsx:25
+msgid "That's okay, it happens! Click the button below to reset your password."
+msgstr "Das ist in Ordnung, das passiert! Klicke auf den Button unten, um dein Passwort zurückzusetzen."
+
#: packages/ui/components/recipient/recipient-action-auth-select.tsx:44
msgid "The authentication required for recipients to sign fields"
msgstr "Die Authentifizierung, die erforderlich ist, damit Empfänger Felder signieren"
@@ -665,14 +1485,33 @@ msgstr "Die Authentifizierung, die erforderlich ist, damit Empfänger das Signat
msgid "The authentication required for recipients to view the document."
msgstr "Die Authentifizierung, die erforderlich ist, damit Empfänger das Dokument anzeigen können."
+#~ msgid "The document owner has been notified of this rejection. No further action is required from you at this time."
+#~ msgstr "The document owner has been notified of this rejection. No further action is required from you at this time."
+
+#: packages/email/template-components/template-document-rejection-confirmed.tsx:39
+msgid "The document owner has been notified of this rejection. No further action is required from you at this time. The document owner may contact you with any questions regarding this rejection."
+msgstr "Der Dokumenteninhaber wurde über diese Ablehnung informiert. Es sind derzeit keine weiteren Maßnahmen von Ihnen erforderlich. Der Dokumenteninhaber kann Sie bei Fragen zu dieser Ablehnung kontaktieren."
+
#: packages/ui/components/document/document-send-email-message-helper.tsx:31
msgid "The document's name"
msgstr "Der Name des Dokuments"
+#: packages/email/templates/team-delete.tsx:37
+msgid "The following team has been deleted by its owner. You will no longer be able to access this team and its documents"
+msgstr "Das folgende Team wurde von seinem Besitzer gelöscht. Du kannst nicht mehr auf dieses Team und seine Dokumente zugreifen"
+
+#: packages/email/templates/team-delete.tsx:36
+msgid "The following team has been deleted by you"
+msgstr "Das folgende Team wurde von dir gelöscht"
+
#: packages/ui/primitives/document-password-dialog.tsx:52
msgid "The password you have entered is incorrect. Please try again."
msgstr "Das eingegebene Passwort ist falsch. Bitte versuchen Sie es erneut."
+#: packages/email/template-components/template-document-super-delete.tsx:38
+msgid "The reason provided for deletion is the following:"
+msgstr "Der angegebene Grund für die Löschung ist folgender:"
+
#: packages/ui/components/recipient/recipient-role-select.tsx:103
msgid "The recipient is not required to take any action and receives a copy of the document after it is completed."
msgstr "Der Empfänger muss keine Aktion ausführen und erhält nach Abschluss eine Kopie des Dokuments."
@@ -705,11 +1544,23 @@ msgstr "Die E-Mail des Unterzeichners"
msgid "The signer's name"
msgstr "Der Name des Unterzeichners"
+#: packages/ui/primitives/document-flow/add-subject.tsx:243
+msgid "The signing link has been copied to your clipboard."
+msgstr "Der Signierlink wurde in die Zwischenablage kopiert."
+
+#: packages/email/templates/team-email-removed.tsx:63
+msgid "The team email <0>{teamEmail}0> has been removed from the following team"
+msgstr "Die Team-E-Mail <0>{teamEmail}0> wurde aus dem folgenden Team entfernt"
+
#: packages/ui/components/document/document-global-auth-action-select.tsx:72
msgid "This can be overriden by setting the authentication requirements directly on each recipient in the next step."
msgstr "Dies kann überschrieben werden, indem die Authentifizierungsanforderungen im nächsten Schritt direkt für jeden Empfänger festgelegt werden."
-#: packages/ui/primitives/document-flow/add-fields.tsx:746
+#: packages/email/template-components/template-document-super-delete.tsx:31
+msgid "This document can not be recovered, if you would like to dispute the reason for future documents please contact support."
+msgstr "Dieses Dokument kann nicht wiederhergestellt werden. Wenn du den Grund für zukünftige Dokumente anfechten möchtest, kontaktiere bitte den Support."
+
+#: packages/ui/primitives/document-flow/add-fields.tsx:764
msgid "This document has already been sent to this recipient. You can no longer edit this recipient."
msgstr "Dieses Dokument wurde bereits an diesen Empfänger gesendet. Sie können diesen Empfänger nicht mehr bearbeiten."
@@ -717,41 +1568,72 @@ msgstr "Dieses Dokument wurde bereits an diesen Empfänger gesendet. Sie können
msgid "This document is password protected. Please enter the password to view the document."
msgstr "Dieses Dokument ist durch ein Passwort geschützt. Bitte geben Sie das Passwort ein, um das Dokument anzusehen."
-#: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:573
+#: packages/email/template-components/template-footer.tsx:17
+msgid "This document was sent using <0>Documenso.0>"
+msgstr "Dieses Dokument wurde mit <0>Documenso.0> gesendet"
+
+#~ msgid "This email confirms that you have rejected the document \"{documentName}\" sent by {documentOwnerName}."
+#~ msgstr "This email confirms that you have rejected the document \"{documentName}\" sent by {documentOwnerName}."
+
+#: packages/email/template-components/template-document-rejection-confirmed.tsx:26
+msgid "This email confirms that you have rejected the document <0>\"{documentName}\"0> sent by {documentOwnerName}."
+msgstr "Diese E-Mail bestätigt, dass Sie das Dokument <0>\"{documentName}\"0> abgelehnt haben, das von {documentOwnerName} gesendet wurde."
+
+#: packages/ui/components/document/document-email-checkboxes.tsx:94
+msgid "This email is sent to the recipient if they are removed from a pending document."
+msgstr "Diese E-Mail wird an den Empfänger gesendet, wenn er von einem ausstehenden Dokument entfernt wird."
+
+#: packages/ui/components/document/document-email-checkboxes.tsx:55
+msgid "This email is sent to the recipient requesting them to sign the document."
+msgstr "Diese E-Mail wird an den Empfänger gesendet und fordert ihn auf, das Dokument zu unterschreiben."
+
+#: packages/ui/components/document/document-email-checkboxes.tsx:133
+msgid "This email will be sent to the recipient who has just signed the document, if there are still other recipients who have not signed yet."
+msgstr "Diese E-Mail wird an den Empfänger gesendet, der das Dokument gerade unterschrieben hat, wenn es noch andere Empfänger gibt, die noch nicht unterschrieben haben."
+
+#: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:581
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."
msgstr "Dieses Feld kann nicht geändert oder gelöscht werden. Wenn Sie den direkten Link dieser Vorlage teilen oder zu Ihrem öffentlichen Profil hinzufügen, kann jeder, der darauf zugreift, seinen Namen und seine E-Mail-Adresse eingeben und die ihm zugewiesenen Felder ausfüllen."
-#: packages/ui/primitives/document-flow/add-fields.tsx:1050
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:233
+msgid "This is how the document will reach the recipients once the document is ready for signing."
+msgstr "So wird das Dokument die Empfänger erreichen, sobald es zum Unterschreiben bereit ist."
+
+#: packages/ui/primitives/document-flow/add-fields.tsx:1097
msgid "This recipient can no longer be modified as they have signed a field, or completed the document."
msgstr "Dieser Empfänger kann nicht mehr bearbeitet werden, da er ein Feld unterschrieben oder das Dokument abgeschlossen hat."
-#: packages/ui/primitives/document-flow/add-signers.tsx:165
-#~ msgid "This signer has already received the document."
-#~ msgstr "This signer has already received the document."
-
#: packages/ui/primitives/document-flow/add-signers.tsx:194
msgid "This signer has already signed the document."
msgstr "Dieser Unterzeichner hat das Dokument bereits unterschrieben."
+#: packages/ui/components/document/document-email-checkboxes.tsx:212
+msgid "This will be sent to all recipients if a pending document has been deleted."
+msgstr "Dies wird an alle Empfänger gesendet, wenn ein ausstehendes Dokument gelöscht wurde."
+
+#: packages/ui/components/document/document-email-checkboxes.tsx:173
+msgid "This will be sent to all recipients once the document has been fully completed."
+msgstr "Dies wird an alle Empfänger gesendet, sobald das Dokument vollständig abgeschlossen ist."
+
#: packages/ui/components/recipient/recipient-action-auth-select.tsx:48
msgid "This will override any global settings."
msgstr "Dies überschreibt alle globalen Einstellungen."
-#: packages/ui/primitives/document-flow/add-settings.tsx:305
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:309
+#: packages/ui/primitives/document-flow/add-settings.tsx:347
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:438
msgid "Time Zone"
msgstr "Zeitzone"
-#: packages/ui/primitives/document-flow/add-settings.tsx:153
+#: packages/ui/primitives/document-flow/add-settings.tsx:155
msgid "Title"
msgstr "Titel"
-#: packages/ui/primitives/document-flow/add-fields.tsx:1033
-#: packages/ui/primitives/template-flow/add-template-fields.tsx:828
+#: packages/ui/primitives/document-flow/add-fields.tsx:1080
+#: packages/ui/primitives/template-flow/add-template-fields.tsx:841
msgid "To proceed further, please set at least one value for the {0} field."
msgstr "Um fortzufahren, legen Sie bitte mindestens einen Wert für das Feld {0} fest."
-#: packages/ui/primitives/document-flow/add-subject.tsx:124
+#: packages/ui/primitives/document-flow/add-subject.tsx:86
msgid "Update"
msgstr "Aktualisieren"
@@ -777,38 +1659,159 @@ msgstr "Validierung"
msgid "Value"
msgstr "Wert"
-#: packages/lib/constants/recipient-roles.ts:26
-msgid "View"
-msgstr "View"
-
-#: packages/lib/constants/recipient-roles.ts:27
-msgid "Viewed"
-msgstr "Viewed"
+#: packages/email/templates/confirm-team-email.tsx:71
+msgid "Verify your team email address"
+msgstr "Überprüfen Sie Ihre Team-E-Mail-Adresse"
#: packages/lib/constants/recipient-roles.ts:29
+msgid "View"
+msgstr "Betrachten"
+
+#: packages/email/templates/confirm-team-email.tsx:95
+msgid "View all documents sent to and from this email address"
+msgstr "Sehen Sie sich alle Dokumente an, die an diese E-Mail-Adresse gesendet wurden und von dieser E-Mail-Adresse gesendet wurden"
+
+#: packages/email/templates/document-created-from-direct-template.tsx:75
+msgid "View document"
+msgstr "Dokument anzeigen"
+
+#: packages/email/template-components/template-document-invite.tsx:105
+#: packages/email/template-components/template-document-rejected.tsx:44
+#: packages/ui/primitives/document-flow/add-subject.tsx:90
+#: packages/ui/primitives/document-flow/add-subject.tsx:91
+msgid "View Document"
+msgstr "Dokument ansehen"
+
+#: packages/email/template-components/template-document-self-signed.tsx:79
+msgid "View plans"
+msgstr "Pläne anzeigen"
+
+#: packages/lib/constants/recipient-roles.ts:67
+#~ msgid "VIEW_REQUEST"
+#~ msgstr "VIEW_REQUEST"
+
+#: packages/lib/constants/recipient-roles.ts:30
+msgid "Viewed"
+msgstr "Betrachtet"
+
+#: packages/lib/constants/recipient-roles.ts:32
msgid "Viewer"
-msgstr "Viewer"
+msgstr "Betrachter"
-#: packages/lib/constants/recipient-roles.ts:28
+#: packages/lib/constants/recipient-roles.ts:33
+msgid "Viewers"
+msgstr "Betrachter"
+
+#: packages/lib/constants/recipient-roles.ts:31
msgid "Viewing"
-msgstr "Viewing"
+msgstr "Betrachten"
-#: packages/ui/primitives/signature-pad/signature-pad.tsx:280
-#~ msgid "White"
-#~ msgstr "White"
+#: packages/email/template-components/template-document-pending.tsx:31
+msgid "Waiting for others"
+msgstr "Warten auf andere"
+
+#: packages/lib/server-only/document/send-pending-email.ts:96
+msgid "Waiting for others to complete signing."
+msgstr "Warten auf andere, um die Unterzeichnung abzuschließen."
+
+#: packages/ui/primitives/document-flow/add-subject.tsx:205
+msgid "We will generate signing links for with you, which you can send to the recipients through your method of choice."
+msgstr "Wir generieren Signierlinks mit Ihnen, die Sie den Empfängern über Ihre bevorzugte Methode senden können."
+
+#: packages/ui/primitives/document-flow/add-subject.tsx:201
+msgid "We won't send anything to notify recipients."
+msgstr "Wir werden nichts senden, um die Empfänger zu benachrichtigen."
+
+#: packages/email/template-components/template-document-pending.tsx:41
+msgid "We're still waiting for other signers to sign this document.<0/>We'll notify you as soon as it's ready."
+msgstr "Wir warten noch darauf, dass andere Unterzeichner dieses Dokument unterzeichnen.<0/>Wir benachrichtigen dich, sobald es bereit ist."
+
+#: packages/email/templates/reset-password.tsx:65
+msgid "We've changed your password as you asked. You can now sign in with your new password."
+msgstr "Wir haben dein Passwort wie gewünscht geändert. Du kannst dich jetzt mit deinem neuen Passwort anmelden."
+
+#: packages/email/template-components/template-confirmation-email.tsx:21
+msgid "Welcome to Documenso!"
+msgstr "Willkommen bei Documenso!"
+
+#: packages/lib/utils/document-audit-logs.ts:258
+msgid "You"
+msgstr "Du"
#: packages/ui/primitives/document-flow/send-document-action-dialog.tsx:44
msgid "You are about to send this document to the recipients. Are you sure you want to continue?"
msgstr "Sie sind dabei, dieses Dokument an die Empfänger zu senden. Sind Sie sicher, dass Sie fortfahren möchten?"
+#: packages/email/template-components/template-confirmation-email.tsx:38
+msgid "You can also copy and paste this link into your browser: {confirmationLink} (link expires in 1 hour)"
+msgstr "Du kannst diesen Link auch kopieren und in deinen Browser einfügen: {confirmationLink} (Link läuft in 1 Stunde ab)"
+
+#: packages/email/templates/confirm-team-email.tsx:106
+msgid "You can revoke access at any time in your team settings on Documenso <0>here.0>"
+msgstr "Sie können den Zugriff jederzeit in Ihren Teameinstellungen auf Documenso <0>hier.0> widerrufen"
+
#: packages/ui/components/document/document-send-email-message-helper.tsx:11
msgid "You can use the following variables in your message:"
msgstr "Sie können die folgenden Variablen in Ihrer Nachricht verwenden:"
+#: packages/email/template-components/template-document-rejected.tsx:37
+msgid "You can view the document and its status by clicking the button below."
+msgstr "Sie können das Dokument und seinen Status einsehen, indem Sie auf die Schaltfläche unten klicken."
+
#: packages/ui/primitives/document-dropzone.tsx:43
msgid "You cannot upload documents at this time."
msgstr "Sie können derzeit keine Dokumente hochladen."
+#: packages/email/template-components/template-document-cancel.tsx:35
+msgid "You don't need to sign it anymore."
+msgstr "Du musst es nicht mehr unterschreiben."
+
+#: packages/lib/server-only/team/create-team-member-invites.ts:186
+msgid "You have been invited to join {0} on Documenso"
+msgstr "Du wurdest eingeladen, {0} auf Documenso beizutreten"
+
+#: packages/email/templates/team-invite.tsx:76
+msgid "You have been invited to join the following team"
+msgstr "Du wurdest eingeladen, dem folgenden Team beizutreten"
+
+#: packages/lib/server-only/recipient/set-recipients-for-document.ts:329
+msgid "You have been removed from a document"
+msgstr "Du wurdest von einem Dokument entfernt"
+
+#: packages/lib/server-only/team/request-team-ownership-transfer.ts:114
+msgid "You have been requested to take ownership of team {0} on Documenso"
+msgstr "Du wurdest gebeten, das Team {0} auf Documenso zu übernehmen"
+
+#: packages/lib/jobs/definitions/emails/send-signing-email.ts:115
+#: packages/lib/server-only/document/resend-document.tsx:125
+msgid "You have initiated the document {0} that requires you to {recipientActionVerb} it."
+msgstr "Du hast das Dokument {0} initiiert, das erfordert, dass du {recipientActionVerb}."
+
#: packages/ui/primitives/document-dropzone.tsx:69
msgid "You have reached your document limit."
msgstr "Sie haben Ihr Dokumentenlimit erreicht."
+
+#: packages/email/templates/document-rejection-confirmed.tsx:27
+msgid "You have rejected the document '{documentName}'"
+msgstr "Sie haben das Dokument '{documentName}' abgelehnt"
+
+#~ msgid "You have rejected the document \"{documentName}\""
+#~ msgstr "You have rejected the document \"{documentName}\""
+
+#: packages/email/template-components/template-document-self-signed.tsx:42
+msgid "You have signed “{documentName}”"
+msgstr "Du hast „{documentName}“ unterzeichnet"
+
+#: packages/email/template-components/template-document-super-delete.tsx:23
+msgid "Your document has been deleted by an admin!"
+msgstr "Dein Dokument wurde von einem Administrator gelöscht!"
+
+#: packages/email/template-components/template-reset-password.tsx:26
+msgid "Your password has been updated."
+msgstr "Dein Passwort wurde aktualisiert."
+
+#: packages/email/templates/team-delete.tsx:28
+#: packages/email/templates/team-delete.tsx:32
+msgid "Your team has been deleted"
+msgstr "Dein Team wurde gelöscht"
+
diff --git a/packages/lib/translations/de/marketing.js b/packages/lib/translations/de/marketing.js
deleted file mode 100644
index 809f85564..000000000
--- a/packages/lib/translations/de/marketing.js
+++ /dev/null
@@ -1 +0,0 @@
-/*eslint-disable*/module.exports={messages:JSON.parse("{\"J/hVSQ\":[[\"0\"]],\"u0zktA\":\"5 Standarddokumente pro Monat\",\"rKtmiD\":\"5 Benutzer inbegriffen\",\"vaHmll\":\"Eine 10x bessere Signaturerfahrung.\",\"t7ZCoe\":\"Dokument hinzufügen\",\"gBefbz\":[\"Mehr Benutzer hinzufügen für \",[\"0\"]],\"XkF8tv\":\"Alle unsere Kennzahlen, Finanzen und Erkenntnisse sind öffentlich. Wir glauben an Transparenz und möchten unsere Reise mit Ihnen teilen. Mehr erfahren Sie hier: <0>Ankündigung Offene Kennzahlen0>\",\"tkQ/WI\":\"Erhobener Betrag\",\"qOMroC\":\"API-Zugriff\",\"FNv8t7\":\"Schön.\",\"W/TUoX\":\"Weil Unterschriften gefeiert werden sollten. Deshalb kümmern wir uns um jedes kleinste Detail in unserem Produkt.\",\"astDB+\":\"Blog\",\"7zGun7\":\"Aufbauen oben drauf.\",\"fxgcNV\":\"Kann ich Documenso kommerziell nutzen?\",\"V+D/YP\":\"Karrieren\",\"CWe7wB\":\"Änderungsprotokoll\",\"JZbmjL\":\"Wählen Sie eine Vorlage aus dem Community-App-Store. Oder reichen Sie Ihre eigene Vorlage ein, damit andere sie benutzen können.\",\"chL5IG\":\"Gemeinschaft\",\"p5+XQN\":\"Fertige Dokumente\",\"NApCXa\":\"Fertige Dokumente pro Monat\",\"z5kV0h\":\"Verbindungen\",\"YcfUZ9\":\"Kontaktiere uns\",\"1NJjIG\":\"Erstellen Sie Verbindungen und Automatisierungen mit Zapier und mehr, um sich mit Ihren Lieblingstools zu integrieren.\",\"rr83qK\":\"Erstellen Sie Ihr Konto und beginnen Sie mit der Nutzung modernster Dokumentensignaturen. Offene und schöne Signaturen sind zum Greifen nah.\",\"75ojt0\":\"Kunden mit einer aktiven Abonnements.\",\"pF9qTh\":\"Anpassen und erweitern.\",\"f8fH8W\":\"Design\",\"W6qD1T\":\"Entwickelt für jede Phase Ihrer Reise.\",\"K6KbY4\":\"Direktlink\",\"aLD+Td\":\"Documenso ist eine Gemeinschaftsanstrengung, um ein offenes und lebendiges Ökosystem um ein Werkzeug zu schaffen, das jeder frei nutzen und anpassen kann. Indem wir wirklich offen sind, wollen wir vertrauenswürdige Infrastruktur für die Zukunft des Internets schaffen.\",\"32yG8y\":\"Documenso auf X\",\"+1xAO7\":\"Unterschriften,<0/>endlich Open Source.\",\"TvY/XA\":\"Dokumentation\",\"tSS7hj\":\"Betten Sie Documenso ganz einfach in Ihr Produkt ein. Kopieren und fügen Sie einfach unser React-Widget in Ihre Anwendung ein.\",\"BWMGM4\":\"Easy Sharing (Soon).\",\"LRAhFG\":\"Einfaches Teilen.\",\"V6EY8B\":\"E-Mail- und Discord-Support\",\"C0/bri\":\"Beteiligung\",\"JejrgO\":\"Geben Sie Ihre Details ein.\",\"8Zy3YU\":\"Enterprise-Konformität, Lizenz- oder technische Bedürfnisse?\",\"ZSW8id\":\"Alles, was Sie für ein großartiges Signaturerlebnis benötigen.\",\"sXswT6\":\"Schnell.\",\"cT9Z9e\":\"Schneller, intelligenter und schöner.\",\"k/ANik\":\"Finanzen\",\"I7Exsw\":\"Folgen Sie uns auf X\",\"f3Botn\":\"Für Unternehmen, die über mehrere Teams skalieren möchten.\",\"y2DcZj\":\"Für kleine Teams und Einzelpersonen mit grundlegenden Bedürfnissen.\",\"2POOFK\":\"Kostenlos\",\"OdieZe\":\"Aus dem Blog\",\"IPgkVQ\":\"Vollzeit\",\"aSWzT9\":\"Lassen Sie sich bezahlen (Bald).\",\"ZDIydz\":\"Loslegen\",\"c3b0B0\":\"Loslegen\",\"pS8wej\":\"Fangen Sie heute an.\",\"7FPIvI\":\"Erhalten Sie die neuesten Nachrichten von Documenso, einschließlich Produkt-Updates, Team-Ankündigungen und mehr!\",\"kV0qBq\":\"GitHub: Gesamte PRs zusammengeführt\",\"652R6j\":\"GitHub: Gesamte offene Issues\",\"R1aJ0W\":\"GitHub: Gesamtanzahl Sterne\",\"P1ovAc\":\"Globale Gehaltsbänder\",\"IAq/yr\":\"Wachstum\",\"Xi7f+z\":\"Wie kann ich beitragen?\",\"9VGuMA\":\"Wie gehen Sie mit meinen Daten um?\",\"fByw/g\":\"Einzelperson\",\"Csm+TN\":\"Integrierte Zahlungen mit Stripe, sodass Sie sich keine Sorgen ums Bezahlen machen müssen.\",\"phSPy7\":\"Integriert sich mit all Ihren Lieblingstools.\",\"pfjrI2\":\"Gibt es mehr?\",\"LOyqaC\":\"Es liegt an Ihnen. Entweder klonen Sie unser Repository oder nutzen unsere einfach zu bedienende Hosting-Lösung.\",\"PCgMVa\":\"Eintrittsdatum\",\"TgL4dH\":\"Treten Sie der Open Signing-Bewegung bei\",\"wJijgU\":\"Standort\",\"OIowgO\":\"Machen Sie es zu Ihrem eigenen durch erweiterte Anpassung und Einstellbarkeit.\",\"GHelWd\":\"Zusammengeführte PRs\",\"vXBVQZ\":\"Zusammengeführte PRs\",\"+8Nek/\":\"Monatlich\",\"6YtxFj\":\"Name\",\"CtgXe4\":\"Neue Benutzer\",\"OpNhRn\":\"Keine Kreditkarte erforderlich\",\"6C9AxJ\":\"Keine Kreditkarte erforderlich\",\"igwAqT\":\"Keines dieser Angebote passt zu Ihnen? Versuchen Sie das Selbst-Hosting!\",\"jjAtjQ\":\"Offene Issues\",\"b76QYo\":\"Open Source oder Hosted.\",\"OWsQIe\":\"Offenes Startup\",\"Un80BR\":\"OSS-Freunde\",\"6zNyfI\":\"Unsere benutzerdefinierten Vorlagen verfügen über intelligente Regeln, die Ihnen Zeit und Energie sparen können.\",\"+OmhKD\":\"Unsere Enterprise-Lizenz ist ideal für große Organisationen, die auf Documenso für all ihre Signaturanforderungen umsteigen möchten. Sie ist sowohl für unser Cloud-Angebot als auch für selbstgehostete Setups verfügbar und bietet eine breite Palette an Compliance- und Verwaltungsfunktionen.\",\"eK0veR\":\"Our Enterprise License is great large organizations looking to switch to Documenso for all their signing needs. It's availible for our cloud offering as well as self-hosted setups and offer a wide range of compliance and Adminstration Features.\",\"I2ufwS\":\"Unsere selbstgehostete Option ist ideal für kleine Teams und Einzelpersonen, die eine einfache Lösung benötigen. Sie können unser docker-basiertes Setup verwenden, um in wenigen Minuten loszulegen. Übernehmen Sie die Kontrolle mit vollständiger Anpassbarkeit und Datenhoheit.\",\"F9564X\":\"Teilzeit\",\"qJVkX+\":\"Premium Profilname\",\"aHCEmh\":\"Preise\",\"rjGI/Q\":\"Datenschutz\",\"vERlcd\":\"Profil\",\"77/8W2\":\"React Widget (Demnächst).\",\"OYoVNk\":\"Erhalten Sie Ihren persönlichen Link zum Teilen mit allen, die Ihnen wichtig sind.\",\"GDvlUT\":\"Rolle\",\"bUqwb8\":\"Gehalt\",\"GNfoAO\":\"Sparen Sie $60 oder $120\",\"StoBff\":\"Sprachen suchen...\",\"dhi4w4\":\"Sicher. Unsere Rechenzentren befinden sich in Frankfurt (Deutschland) und bieten uns die besten lokalen Datenschutzgesetze. Uns ist die sensible Natur unserer Daten sehr bewusst und wir folgen bewährten Praktiken, um die Sicherheit und Integrität der uns anvertrauten Daten zu gewährleisten.\",\"kZBxnz\":\"Überall senden, verbinden, empfangen und einbetten.\",\"eSfS30\":\"Dienstalter\",\"aoDa18\":\"Shop\",\"c+Fnce\":\"Unterschreiben\",\"5lWFkC\":\"Anmelden\",\"e+RpCP\":\"Registrieren\",\"4yiZOB\":\"Signaturprozess\",\"RkUXMm\":\"Jetzt registrieren\",\"omz3DH\":\"Intelligent.\",\"AvYbUL\":\"Auf GitHub favorisieren\",\"y2dGtU\":\"Favoriten\",\"uAQUqI\":\"Status\",\"XYLcNv\":\"Support\",\"KM6m8p\":\"Team\",\"lm5v+6\":\"Team-Posteingang\",\"CAL6E9\":\"Teams\",\"w4nM1s\":\"Vorlagen-Shop (Demnächst).\",\"yFoQ27\":\"Das ist großartig. Sie können sich die aktuellen <0>Issues0> ansehen und unserer <1>Discord-Community1> beitreten, um auf dem neuesten Stand zu bleiben, was die aktuellen Prioritäten sind. In jedem Fall sind wir eine offene Gemeinschaft und begrüßen jegliche Beiträge, technische und nicht-technische ❤️\",\"GE1BlA\":\"Diese Seite entwickelt sich weiter, während wir lernen, was ein großartiges Signing-Unternehmen ausmacht. Wir werden sie aktualisieren, wenn wir mehr zu teilen haben.\",\"MHrjPM\":\"Titel\",\"2YvdxE\":\"Insgesamt Abgeschlossene Dokumente\",\"8e4lIo\":\"Insgesamt Kunden\",\"bPpoCb\":\"Insgesamt Finanzierungsvolumen\",\"vb0Q0/\":\"Gesamtanzahl der Benutzer\",\"mgQhDS\":\"Wirklich Ihr Eigenes.\",\"4McJfQ\":\"Probieren Sie unseren Gratisplan aus\",\"9mkNAn\":\"Twitter-Statistiken\",\"CHzOWB\":\"Unbegrenzte Dokumente pro Monat\",\"BOV7DD\":\"Bis zu 10 Empfänger pro Dokument\",\"fydTfa\":\"Laden Sie ein Dokument hoch und fügen Sie Felder hinzu.\",\"vdAd7c\":\"Die Nutzung unserer gehosteten Version ist der einfachste Weg, um zu starten. Sie können einfach abonnieren und mit der Unterzeichnung Ihrer Dokumente beginnen. Wir kümmern uns um die Infrastruktur, damit Sie sich auf Ihr Geschäft konzentrieren können. Zudem profitieren Sie bei der Nutzung unserer gehosteten Version von unseren vertrauenswürdigen Signaturzertifikaten, die Ihnen helfen, Vertrauen bei Ihren Kunden aufzubauen.\",\"W2nDs0\":\"Alle Statistiken anzeigen\",\"WMfAK8\":\"Wir helfen Ihnen gerne unter <0>support@documenso.com0> oder <1>in unserem Discord-Support-Kanal1>. Bitte senden Sie Lucas oder Timur eine Nachricht, um dem Kanal beizutreten, falls Sie noch kein Mitglied sind.\",\"ZaMyxU\":\"Was ist der Unterschied zwischen den Plänen?\",\"8GpyFt\":\"Wenn es um das Senden oder Empfangen eines Vertrags geht, können Sie auf blitzschnelle Geschwindigkeiten zählen.\",\"HEDnID\":\"Wo kann ich Unterstützung bekommen?\",\"sib3h3\":\"Warum sollte ich Documenso gegenüber DocuSign oder einem anderen Signatur-Tool bevorzugen?\",\"cVPDPt\":\"Warum sollte ich Ihren Hosting-Service nutzen?\",\"zkWmBh\":\"Jährlich\",\"8AKApo\":\"Ja! Documenso wird unter der GNU AGPL V3 Open-Source-Lizenz angeboten. Das bedeutet, dass Sie es kostenlos nutzen und sogar an Ihre Bedürfnisse anpassen können, solange Sie Ihre Änderungen unter derselben Lizenz veröffentlichen.\",\"rzQpex\":\"Sie können Documenso kostenlos selbst hosten oder unsere sofort einsatzbereite gehostete Version nutzen. Die gehostete Version bietet zusätzlichen Support, schmerzfreie Skalierbarkeit und mehr. Frühzeitige Anwender erhalten in diesem Jahr Zugriff auf alle Funktionen, die wir entwickeln, ohne zusätzliche Kosten! Für immer! Ja, das beinhaltet später mehrere Benutzer pro Konto. Wenn Sie Documenso für Ihr Unternehmen möchten, sprechen wir gerne über Ihre Bedürfnisse.\",\"1j9aoC\":\"Ihr Browser unterstützt das Video-Tag nicht.\",\"73XXzw\":[[\"0\"],\" von \",[\"1\"],\" Zeile(n) ausgewählt.\"],\"lZ4w45\":[[\"visibleRows\",\"plural\",{\"one\":[\"Eine \",\"#\",\" Ergebnis wird angezeigt.\"],\"other\":[\"#\",\" Ergebnisse werden angezeigt.\"]}]],\"AhYxw5\":\"<0>Authentifizierungsmethode erben0> - Verwenden Sie die in den \\\"Allgemeinen Einstellungen\\\" konfigurierte globale Aktionssignatur-Authentifizierungsmethode\",\"OepImG\":\"<0>Keine Einschränkungen0> - Keine Authentifizierung erforderlich\",\"07+JZ2\":\"<0>Keine Einschränkungen0> - Das Dokument kann direkt über die dem Empfänger gesendete URL abgerufen werden\",\"jx/lwn\":\"<0>Keine0> - Keine Authentifizierung erforderlich\",\"CUT3u1\":\"<0>2FA erforderlich0> - Der Empfänger muss ein Konto haben und die 2FA über seine Einstellungen aktiviert haben\",\"2PbD3D\":\"<0>Konto erforderlich0> - Der Empfänger muss angemeldet sein, um das Dokument anzeigen zu können\",\"QHSbey\":\"<0>Passkey erforderlich0> - Der Empfänger muss ein Konto haben und den Passkey über seine Einstellungen konfiguriert haben\",\"Oy5nEc\":\"Dokument hinzufügen\",\"7Pz5x5\":\"Fügen Sie eine URL hinzu, um den Benutzer nach der Unterzeichnung des Dokuments weiterzuleiten\",\"aILOUH\":\"Fügen Sie dem Dokument eine externe ID hinzu. Diese kann verwendet werden, um das Dokument in externen Systemen zu identifizieren.\",\"bK1dPK\":\"Fügen Sie der Vorlage eine externe ID hinzu. Diese kann zur Identifizierung in externen Systemen verwendet werden.\",\"nnZ1Sa\":\"Weitere Option hinzufügen\",\"0/UVRw\":\"Weiteren Wert hinzufügen\",\"VaCh6w\":\"Mich selbst hinzufügen\",\"jAa/lz\":\"Mich hinzufügen\",\"29QK6H\":\"Platzhalterempfänger hinzufügen\",\"vcxlzZ\":\"Unterzeichner hinzufügen\",\"MwcOtB\":\"Text hinzufügen\",\"7F2ltK\":\"Text zum Feld hinzufügen\",\"U3pytU\":\"Admin\",\"NFIOKv\":\"Erweiterte Optionen\",\"VNgKZz\":\"Erweiterte Einstellungen\",\"bNUpvl\":\"Nach der Übermittlung wird ein Dokument automatisch generiert und zu Ihrer Dokumentenseite hinzugefügt. Sie erhalten außerdem eine Benachrichtigung per E-Mail.\",\"Z7ZXbT\":\"Genehmigen\",\"7kb4LU\":\"Genehmigt\",\"ca9AbO\":\"Genehmiger\",\"j2Uisd\":\"Genehmigung\",\"THokF3\":\"Schwarz\",\"Zn5crm\":\"Blau\",\"dEgA5A\":\"Abbrechen\",\"brJrDl\":\"Unterzeichner kann nicht entfernt werden\",\"uOcAi7\":\"Cannot update signer because they have already signed a field\",\"RpYfjZ\":\"Cc\",\"XdZeJk\":\"CC\",\"nrL/ZD\":\"CC'd\",\"EEk+d0\":\"Zeichenbeschränkung\",\"G1XxbZ\":\"Checkbox\",\"wbixMe\":\"Checkbox-Werte\",\"u8JHrO\":\"Filter löschen\",\"IqxkER\":\"Unterschrift löschen\",\"eZ6/Uj\":\"Klicken, um das Feld einzufügen\",\"yz7wBu\":\"Schließen\",\"OrcxNk\":\"Direkten Empfänger konfigurieren\",\"92KLYs\":[\"Konfigurieren Sie das Feld \",[\"0\"]],\"xGVfLh\":\"Fortsetzen\",\"FxVG/l\":\"In die Zwischenablage kopiert\",\"GB2F11\":\"Benutzerdefinierter Text\",\"mYGY3B\":\"Datum\",\"4BHv90\":\"Datumsformat\",\"NLXhq7\":\"Empfänger des direkten Links\",\"YScG1E\":\"Dokumentenzugriff\",\"rAqi0g\":\"Dokumenterstellung\",\"mzI/c+\":\"Herunterladen\",\"6GyScL\":\"Ziehen Sie Ihr PDF hierher.\",\"iKQcPM\":\"Dropdown\",\"XXvhMd\":\"Dropdown-Optionen\",\"O3oNi5\":\"E-Mail\",\"XLpxoj\":\"E-Mail-Optionen\",\"qChNnS\":\"Direktlink-Signierung aktivieren\",\"S+mLLv\":\"Aktiviere die Signaturreihenfolge\",\"f7sXvi\":\"Passwort eingeben\",\"SlfejT\":\"Fehler\",\"5KfWxA\":\"Externe ID\",\"4CP+OV\":\"Einstellungen konnten nicht gespeichert werden.\",\"LK3SFK\":\"Zeichenbeschränkung des Feldes\",\"C21JWH\":\"Field font size\",\"NYkIsf\":\"Feldformat\",\"X6Tb6Q\":\"Feldbeschriftung\",\"NaVkSD\":\"Feldplatzhalter\",\"cGeFup\":\"Font Size\",\"N1UTWT\":\"Globale Empfängerauthentifizierung\",\"sr0UJD\":\"Zurück\",\"VmkjGB\":\"Grün\",\"uCroPU\":\"Ich bin ein Unterzeichner dieses Dokuments\",\"K6KTX2\":\"Ich bin ein Betrachter dieses Dokuments\",\"ngj5km\":\"Ich bin ein Genehmiger dieses Dokuments\",\"JUZIGu\":\"Ich bin verpflichtet, eine Kopie dieses Dokuments zu erhalten\",\"ZjDoG7\":\"I am required to recieve a copy of this document\",\"fnbcC0\":\"Authentifizierungsmethode erben\",\"87a/t/\":\"Beschriftung\",\"dtOoGl\":\"Manager\",\"CK1KXz\":\"Max\",\"OvoEq7\":\"Mitglied\",\"ziXm9u\":\"Nachricht <0>(Optional)0>\",\"eTUF28\":\"Min\",\"4nqUV0\":\"Muss genehmigen\",\"lNQBPg\":\"Muss unterzeichnen\",\"eUAUyG\":\"Muss sehen\",\"GBIRGD\":\"Kein passender Empfänger mit dieser Beschreibung gefunden.\",\"f34Qxi\":\"Keine Empfänger mit dieser Rolle\",\"qQ7oqE\":\"Keine Einschränkungen\",\"AxPAXW\":\"Keine Ergebnisse gefunden\",\"pt86ev\":\"Kein Unterschriftsfeld gefunden\",\"CSOFdu\":\"Kein Wert gefunden.\",\"HptUxX\":\"Nummer\",\"bR2sEm\":\"Zahlenformat\",\"eY6ns+\":\"Sobald aktiviert, können Sie einen aktiven Empfänger für die Direktlink-Signierung auswählen oder einen neuen erstellen. Dieser Empfängertyp kann nicht bearbeitet oder gelöscht werden.\",\"JE2qy+\":\"Sobald Ihre Vorlage eingerichtet ist, teilen Sie den Link überall, wo Sie möchten. Die Person, die den Link öffnet, kann ihre Informationen im Feld für direkte Empfänger eingeben und alle anderen ihr zugewiesenen Felder ausfüllen.\",\"fpzyLj\":[\"Seite \",[\"0\"],\" von \",[\"1\"]],\"8ltyoa\":\"Passwort erforderlich\",\"ayaTI6\":\"Wählen Sie eine Zahl\",\"hx1ePY\":\"Platzhalter\",\"MtkqZc\":\"Radio\",\"5cEi0C\":\"Radio-Werte\",\"uNQ6eB\":\"Nur lesen\",\"UTnF5X\":\"Erhält Kopie\",\"ZIuo5V\":\"Empfängeraktion Authentifizierung\",\"wRTiSD\":\"Rot\",\"VTB2Rz\":\"Weiterleitungs-URL\",\"t/YqKh\":\"Entfernen\",\"8dg+Yo\":\"Pflichtfeld\",\"xxCtZv\":\"Zeilen pro Seite\",\"tfDRzk\":\"Speichern\",\"9Y3hAT\":\"Vorlage speichern\",\"rG3WVm\":\"Auswählen\",\"hVPa4O\":\"Option auswählen\",\"IM+vrQ\":\"Wählen Sie mindestens\",\"Gve6FG\":\"Standardoption auswählen\",\"JlFcis\":\"Senden\",\"AEV4wo\":\"Dokument senden\",\"iE3nGO\":\"Unterschriftenkarte teilen\",\"y+hKWu\":\"Link teilen\",\"ydZ6yi\":\"Erweiterte Einstellungen anzeigen\",\"n+8yVN\":\"Unterschrift\",\"PoH7eg\":\"Unterzeichnet\",\"jTCAGu\":\"Unterzeichner\",\"6G8s+q\":\"Unterzeichnung\",\"kW2h2Z\":\"Einige Unterzeichner haben noch kein Unterschriftsfeld zugewiesen bekommen. Bitte weisen Sie jedem Unterzeichner mindestens ein Unterschriftsfeld zu, bevor Sie fortfahren.\",\"nwtY4N\":\"Etwas ist schief gelaufen\",\"kf83Ld\":\"Etwas ist schief gelaufen.\",\"WlBiWh\":[\"Schritt <0>\",[\"step\"],\" von \",[\"maxStep\"],\"0>\"],\"ki77Td\":\"Betreff <0>(Optional)0>\",\"hQRttt\":\"Einreichen\",\"URdrTr\":\"Vorlagentitel\",\"xeiujy\":\"Text\",\"imClgr\":\"Die Authentifizierung, die erforderlich ist, damit Empfänger Felder signieren\",\"yyD2dE\":\"Die Authentifizierung, die erforderlich ist, damit Empfänger das Signaturfeld signieren können.\",\"GtDmLf\":\"Die Authentifizierung, die erforderlich ist, damit Empfänger das Dokument anzeigen können.\",\"zAoaPB\":\"Der Name des Dokuments\",\"Ev3GOS\":\"Das eingegebene Passwort ist falsch. Bitte versuchen Sie es erneut.\",\"OPnnb6\":\"Der Empfänger muss keine Aktion ausführen und erhält nach Abschluss eine Kopie des Dokuments.\",\"v8p6Mb\":\"Der Empfänger muss das Dokument genehmigen, damit es abgeschlossen werden kann.\",\"CPv0TB\":\"Der Empfänger muss das Dokument unterschreiben, damit es abgeschlossen werden kann.\",\"oIvIfH\":\"Der Empfänger muss das Dokument anzeigen, damit es abgeschlossen werden kann.\",\"Br2bvS\":\"Der Freigabelink konnte in diesem Moment nicht erstellt werden. Bitte versuchen Sie es erneut.\",\"XJIzqY\":\"Der Freigabelink wurde in Ihre Zwischenablage kopiert.\",\"UyM8/E\":\"Die E-Mail des Unterzeichners\",\"zHJ+vk\":\"Der Name des Unterzeichners\",\"kaEF2i\":\"Dies kann überschrieben werden, indem die Authentifizierungsanforderungen im nächsten Schritt direkt für jeden Empfänger festgelegt werden.\",\"QUZVfd\":\"Dieses Dokument wurde bereits an diesen Empfänger gesendet. Sie können diesen Empfänger nicht mehr bearbeiten.\",\"riNGUC\":\"Dieses Dokument ist durch ein Passwort geschützt. Bitte geben Sie das Passwort ein, um das Dokument anzusehen.\",\"Qkeh+t\":\"Dieses Feld kann nicht geändert oder gelöscht werden. Wenn Sie den direkten Link dieser Vorlage teilen oder zu Ihrem öffentlichen Profil hinzufügen, kann jeder, der darauf zugreift, seinen Namen und seine E-Mail-Adresse eingeben und die ihm zugewiesenen Felder ausfüllen.\",\"xrWgbt\":\"This recipient can no longer be modified as they have signed a field, or completed the document.\",\"l2Xt6u\":\"Dieser Unterzeichner hat das Dokument bereits erhalten.\",\"+J77hf\":\"This signer has already signed the document.\",\"6iFh5a\":\"Dies überschreibt alle globalen Einstellungen.\",\"RxsRD6\":\"Zeitzone\",\"UWmOq4\":[\"Um fortzufahren, legen Sie bitte mindestens einen Wert für das Feld \",[\"0\"],\" fest.\"],\"EkH9pt\":\"Aktualisieren\",\"GT+2nz\":\"Aktualisieren Sie die Rolle und fügen Sie Felder nach Bedarf für den direkten Empfänger hinzu. Die Person, die den direkten Link verwendet, wird das Dokument als direkter Empfänger unterzeichnen.\",\"kwkhPe\":\"Upgrade\",\"06fEqf\":\"Vorlagendokument hochladen\",\"lGWE4b\":\"Validierung\",\"wMHvYH\":\"Wert\",\"jpctdh\":\"View\",\"vXtpAZ\":\"Viewed\",\"M/TIv1\":\"Viewer\",\"RVWz5F\":\"Viewing\",\"5Ex+AP\":\"White\",\"4/hUq0\":\"Sie sind dabei, dieses Dokument an die Empfänger zu senden. Sind Sie sicher, dass Sie fortfahren möchten?\",\"rb/T41\":\"Sie können die folgenden Variablen in Ihrer Nachricht verwenden:\",\"9+Ph0R\":\"Sie können derzeit keine Dokumente hochladen.\",\"m5RA9C\":\"Sie haben Ihr Dokumentenlimit erreicht.\"}")};
\ No newline at end of file
diff --git a/packages/lib/translations/de/marketing.po b/packages/lib/translations/de/marketing.po
index b483aae52..d52a3a10c 100644
--- a/packages/lib/translations/de/marketing.po
+++ b/packages/lib/translations/de/marketing.po
@@ -8,7 +8,7 @@ msgstr ""
"Language: de\n"
"Project-Id-Version: documenso-app\n"
"Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2024-10-08 12:05\n"
+"PO-Revision-Date: 2024-11-20 11:56\n"
"Last-Translator: \n"
"Language-Team: German\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -160,10 +160,6 @@ msgstr "Dokumentation"
msgid "Easily embed Documenso into your product. Simply copy and paste our react widget into your application."
msgstr "Betten Sie Documenso ganz einfach in Ihr Produkt ein. Kopieren und fügen Sie einfach unser React-Widget in Ihre Anwendung ein."
-#: apps/marketing/src/components/(marketing)/share-connect-paid-widget-bento.tsx:42
-#~ msgid "Easy Sharing (Soon)."
-#~ msgstr "Easy Sharing (Soon)."
-
#: apps/marketing/src/components/(marketing)/share-connect-paid-widget-bento.tsx:46
msgid "Easy Sharing."
msgstr "Einfaches Teilen."
@@ -377,18 +373,10 @@ msgstr "Unsere benutzerdefinierten Vorlagen verfügen über intelligente Regeln,
msgid "Our Enterprise License is great for large organizations looking to switch to Documenso for all their signing needs. It's available for our cloud offering as well as self-hosted setups and offers a wide range of compliance and Adminstration Features."
msgstr "Unsere Enterprise-Lizenz ist ideal für große Organisationen, die auf Documenso für all ihre Signaturanforderungen umsteigen möchten. Sie ist sowohl für unser Cloud-Angebot als auch für selbstgehostete Setups verfügbar und bietet eine breite Palette an Compliance- und Verwaltungsfunktionen."
-#: apps/marketing/src/components/(marketing)/enterprise.tsx:20
-#~ msgid "Our Enterprise License is great large organizations looking to switch to Documenso for all their signing needs. It's availible for our cloud offering as well as self-hosted setups and offer a wide range of compliance and Adminstration Features."
-#~ msgstr "Our Enterprise License is great large organizations looking to switch to Documenso for all their signing needs. It's availible for our cloud offering as well as self-hosted setups and offer a wide range of compliance and Adminstration Features."
-
#: apps/marketing/src/app/(marketing)/pricing/page.tsx:65
msgid "Our self-hosted option is great for small teams and individuals who need a simple solution. You can use our docker based setup to get started in minutes. Take control with full customizability and data ownership."
msgstr "Unsere selbstgehostete Option ist ideal für kleine Teams und Einzelpersonen, die eine einfache Lösung benötigen. Sie können unser docker-basiertes Setup verwenden, um in wenigen Minuten loszulegen. Übernehmen Sie die Kontrolle mit vollständiger Anpassbarkeit und Datenhoheit."
-#: apps/marketing/src/app/(marketing)/open/data.ts:25
-#~ msgid "Part-Time"
-#~ msgstr "Part-Time"
-
#: apps/marketing/src/components/(marketing)/pricing-table.tsx:151
msgid "Premium Profile Name"
msgstr "Premium Profilname"
@@ -430,10 +418,6 @@ msgstr "Gehalt"
msgid "Save $60 or $120"
msgstr "Sparen Sie $60 oder $120"
-#: apps/marketing/src/components/(marketing)/i18n-switcher.tsx:47
-#~ msgid "Search languages..."
-#~ msgstr "Search languages..."
-
#: apps/marketing/src/app/(marketing)/pricing/page.tsx:109
msgid "Securely. Our data centers are located in Frankfurt (Germany), giving us the best local privacy laws. We are very aware of the sensitive nature of our data and follow best practices to ensure the security and integrity of the data entrusted to us."
msgstr "Sicher. Unsere Rechenzentren befinden sich in Frankfurt (Deutschland) und bieten uns die besten lokalen Datenschutzgesetze. Uns ist die sensible Natur unserer Daten sehr bewusst und wir folgen bewährten Praktiken, um die Sicherheit und Integrität der uns anvertrauten Daten zu gewährleisten."
@@ -618,3 +602,4 @@ msgstr "Sie können Documenso kostenlos selbst hosten oder unsere sofort einsatz
#: apps/marketing/src/components/(marketing)/carousel.tsx:272
msgid "Your browser does not support the video tag."
msgstr "Ihr Browser unterstützt das Video-Tag nicht."
+
diff --git a/packages/lib/translations/de/web.po b/packages/lib/translations/de/web.po
index 025b28c20..5e302483b 100644
--- a/packages/lib/translations/de/web.po
+++ b/packages/lib/translations/de/web.po
@@ -8,7 +8,7 @@ msgstr ""
"Language: de\n"
"Project-Id-Version: documenso-app\n"
"Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2024-10-08 12:05\n"
+"PO-Revision-Date: 2024-11-20 11:56\n"
"Last-Translator: \n"
"Language-Team: German\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -18,6 +18,10 @@ msgstr ""
"X-Crowdin-File: web.po\n"
"X-Crowdin-File-ID: 8\n"
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:214
+msgid "\"{0}\" has invited you to sign \"example document\"."
+msgstr "\"{0}\" hat Sie eingeladen, \"Beispieldokument\" zu unterschreiben."
+
#: apps/web/src/app/(signing)/sign/[token]/date-field.tsx:69
msgid "\"{0}\" will appear on the document as it has a timezone of \"{timezone}\"."
msgstr "\"{0}\" wird im Dokument erscheinen, da es eine Zeitzone von \"{timezone}\" hat."
@@ -26,19 +30,39 @@ msgstr "\"{0}\" wird im Dokument erscheinen, da es eine Zeitzone von \"{timezone
msgid "\"{documentTitle}\" has been successfully deleted"
msgstr "\"{documentTitle}\" wurde erfolgreich gelöscht"
-#: apps/web/src/app/(signing)/sign/[token]/signing-page-view.tsx:78
+#: apps/web/src/components/(teams)/forms/update-team-form.tsx:234
+msgid "\"{email}\" on behalf of \"{teamName}\" has invited you to sign \"example document\"."
+msgstr "\"{email}\" im Namen von \"{teamName}\" hat Sie eingeladen, \"Beispieldokument\" zu unterschreiben."
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:209
+#~ msgid ""
+#~ "\"{placeholderEmail}\" on behalf of \"{0}\" has invited you to sign \"example\n"
+#~ "document\"."
+#~ msgstr ""
+#~ "\"{placeholderEmail}\" on behalf of \"{0}\" has invited you to sign \"example\n"
+#~ "document\"."
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:209
+msgid "\"{placeholderEmail}\" on behalf of \"{0}\" has invited you to sign \"example document\"."
+msgstr "\"{placeholderEmail}\" im Namen von \"{0}\" hat Sie eingeladen, \"Beispieldokument\" zu unterzeichnen."
+
+#: apps/web/src/components/(teams)/forms/update-team-form.tsx:241
+msgid "\"{teamUrl}\" has invited you to sign \"example document\"."
+msgstr "\"{teamUrl}\" hat Sie eingeladen, \"Beispieldokument\" zu unterschreiben."
+
+#: apps/web/src/app/(signing)/sign/[token]/signing-page-view.tsx:80
msgid "({0}) has invited you to approve this document"
msgstr "({0}) hat dich eingeladen, dieses Dokument zu genehmigen"
-#: apps/web/src/app/(signing)/sign/[token]/signing-page-view.tsx:75
+#: apps/web/src/app/(signing)/sign/[token]/signing-page-view.tsx:77
msgid "({0}) has invited you to sign this document"
msgstr "({0}) hat dich eingeladen, dieses Dokument zu unterzeichnen"
-#: apps/web/src/app/(signing)/sign/[token]/signing-page-view.tsx:72
+#: apps/web/src/app/(signing)/sign/[token]/signing-page-view.tsx:74
msgid "({0}) has invited you to view this document"
msgstr "({0}) hat dich eingeladen, dieses Dokument zu betrachten"
-#: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:311
+#: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:313
msgid "{0, plural, one {(1 character over)} other {(# characters over)}}"
msgstr "{0, plural, one {(1 Zeichen über dem Limit)} other {(# Zeichen über dem Limit)}}"
@@ -60,11 +84,15 @@ msgstr "{0, plural, one {# Sitz} other {# Sitze}}"
msgid "{0, plural, one {<0>You have <1>11> pending team invitation0>} other {<2>You have <3>#3> pending team invitations2>}}"
msgstr "{0, plural, one {<0>Du hast <1>11> ausstehende Team-Einladung0>} other {<2>Du hast <3>#3> ausstehende Team-Einladungen2>}}"
+#: apps/web/src/app/(signing)/sign/[token]/auto-sign.tsx:196
+msgid "{0, plural, one {1 matching field} other {# matching fields}}"
+msgstr "{0, plural, one {1 passendes Feld} other {# passende Felder}}"
+
#: apps/web/src/app/(dashboard)/documents/[id]/edit/document-edit-page-view.tsx:129
msgid "{0, plural, one {1 Recipient} other {# Recipients}}"
msgstr "{0, plural, one {1 Empfänger} other {# Empfänger}}"
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:230
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:235
msgid "{0, plural, one {Waiting on 1 recipient} other {Waiting on # recipients}}"
msgstr "{0, plural, one {Warte auf 1 Empfänger} other {Warte auf # Empfänger}}"
@@ -72,27 +100,31 @@ msgstr "{0, plural, one {Warte auf 1 Empfänger} other {Warte auf # Empfänger}}
msgid "{0, plural, zero {Select values} other {# selected...}}"
msgstr "{0, plural, zero {Werte auswählen} other {# ausgewählt...}}"
+#: apps/web/src/app/(signing)/sign/[token]/auto-sign.tsx:193
+msgid "{0}"
+msgstr "{0}"
+
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:249
msgid "{0} direct signing templates"
msgstr "{0} direkte Signaturvorlagen"
#: apps/web/src/app/(recipient)/d/[token]/direct-template.tsx:66
-msgid "{0} document"
-msgstr "{0} Dokument"
+#~ msgid "{0} document"
+#~ msgstr "{0} document"
#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:146
msgid "{0} of {1} documents remaining this month."
msgstr "{0} von {1} Dokumenten verbleibend in diesem Monat."
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:165
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:170
msgid "{0} Recipient(s)"
-msgstr "{0} Empfänger(in) / -n"
+msgstr "{0} Empfänger(in)"
#: apps/web/src/app/(recipient)/d/[token]/direct-template.tsx:67
-msgid "{0} the document to complete the process."
-msgstr "{0} das Dokument, um den Prozess abzuschließen."
+#~ msgid "{0} the document to complete the process."
+#~ msgstr "{0} the document to complete the process."
-#: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:292
+#: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:294
msgid "{charactersRemaining, plural, one {1 character remaining} other {{charactersRemaining} characters remaining}}"
msgstr "{charactersRemaining, plural, one {1 Zeichen verbleibend} other {{charactersRemaining} Zeichen verbleibend}}"
@@ -104,6 +136,14 @@ msgstr "{formattedTeamMemberQuanity} • Monatlich • Erneuert: {formattedDate}
msgid "{numberOfSeats, plural, one {# member} other {# members}}"
msgstr "{numberOfSeats, plural, one {# Mitglied} other {# Mitglieder}}"
+#: apps/web/src/app/(recipient)/d/[token]/direct-template.tsx:67
+msgid "{recipientActionVerb} document"
+msgstr "{recipientActionVerb} Dokument"
+
+#: apps/web/src/app/(recipient)/d/[token]/direct-template.tsx:68
+msgid "{recipientActionVerb} the document to complete the process."
+msgstr "{recipientActionVerb} das Dokument, um den Prozess abzuschließen."
+
#: apps/web/src/components/forms/public-profile-form.tsx:231
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:389
msgid "{remaningLength, plural, one {# character remaining} other {# characters remaining}}"
@@ -117,6 +157,18 @@ msgstr "<0>\"{0}\"0> steht nicht mehr zur Unterschrift zur Verfügung"
msgid "<0>Sender:0> All"
msgstr "<0>Absender:0> Alle"
+#: apps/web/src/components/(dashboard)/settings/token/contants.ts:5
+msgid "1 month"
+msgstr "1 Monat"
+
+#: apps/web/src/components/(dashboard)/settings/token/contants.ts:8
+msgid "12 months"
+msgstr "12 Monate"
+
+#: apps/web/src/components/(dashboard)/settings/token/contants.ts:6
+msgid "3 months"
+msgstr "3 Monate"
+
#: apps/web/src/components/partials/not-found.tsx:45
msgid "404 Page not found"
msgstr "404 Seite nicht gefunden"
@@ -133,14 +185,30 @@ msgstr "404 Team nicht gefunden"
msgid "404 Template not found"
msgstr "404 Vorlage nicht gefunden"
+#: apps/web/src/components/(dashboard)/settings/token/contants.ts:7
+msgid "6 months"
+msgstr "6 Monate"
+
+#: apps/web/src/components/(dashboard)/settings/token/contants.ts:4
+msgid "7 days"
+msgstr "7 Tage"
+
#: apps/web/src/components/forms/send-confirmation-email.tsx:55
msgid "A confirmation email has been sent, and it should arrive in your inbox shortly."
msgstr "Eine Bestätigungs-E-Mail wurde gesendet, und sie sollte in Kürze in deinem Posteingang ankommen."
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:193
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:70
+msgid "A device capable of accessing, opening, and reading documents"
+msgstr "Ein Gerät, das in der Lage ist, Dokumente zuzugreifen, zu öffnen und zu lesen"
+
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:218
msgid "A draft document will be created"
msgstr "Ein Entwurf wird erstellt"
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:73
+msgid "A means to print or download documents for your records"
+msgstr "Ein Mittel, um Dokumente für Ihre Unterlagen zu drucken oder herunterzuladen"
+
#: apps/web/src/components/forms/token.tsx:127
msgid "A new token was created successfully."
msgstr "Ein neuer Token wurde erfolgreich erstellt."
@@ -163,12 +231,16 @@ msgstr "Ein Geheimnis, das an deine URL gesendet wird, damit du überprüfen kan
msgid "A secret that will be sent to your URL so you can verify that the request has been sent by Documenso."
msgstr "Ein Geheimnis, das an deine URL gesendet wird, damit du überprüfen kannst, dass die Anfrage von Documenso gesendet wurde."
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:64
+msgid "A stable internet connection"
+msgstr "Eine stabile Internetverbindung"
+
#: apps/web/src/components/forms/public-profile-form.tsx:198
msgid "A unique URL to access your profile"
msgstr "Eine eindeutige URL, um auf dein Profil zuzugreifen"
#: apps/web/src/components/(teams)/dialogs/create-team-dialog.tsx:206
-#: apps/web/src/components/(teams)/forms/update-team-form.tsx:139
+#: apps/web/src/components/(teams)/forms/update-team-form.tsx:179
msgid "A unique URL to identify your team"
msgstr "Eine eindeutige URL, um dein Team zu identifizieren"
@@ -180,24 +252,42 @@ msgstr "Eine Bestätigungs-E-Mail wird an die angegebene E-Mail-Adresse gesendet
msgid "Accept"
msgstr "Akzeptieren"
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:33
+msgid "Acceptance and Consent"
+msgstr "Zustimmung und Einverständnis"
+
#: apps/web/src/app/(dashboard)/settings/teams/accept-team-invitation-button.tsx:26
msgid "Accepted team invitation"
msgstr "Team-Einladung akzeptiert"
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:128
+msgid "Account Authentication"
+msgstr "Kontowauthentifizierung"
+
#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:51
#: apps/web/src/app/(dashboard)/settings/profile/delete-account-dialog.tsx:48
msgid "Account deleted"
msgstr "Konto gelöscht"
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:105
-#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-data-table.tsx:104
-#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:125
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:119
+msgid "Account Re-Authentication"
+msgstr "Kontowiederauthentifizierung"
+
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:139
+msgid "Acknowledgment"
+msgstr "Bestätigung"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:108
+#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-data-table.tsx:100
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:123
#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:164
#: apps/web/src/app/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx:118
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/data-table.tsx:46
msgid "Action"
msgstr "Aktion"
#: apps/web/src/app/(dashboard)/documents/data-table.tsx:85
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:181
#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:140
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:133
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:142
@@ -206,7 +296,7 @@ msgstr "Aktion"
msgid "Actions"
msgstr "Aktionen"
-#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:101
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:107
#: apps/web/src/components/(teams)/tables/teams-member-page-data-table.tsx:76
#: apps/web/src/components/(teams)/tables/user-settings-teams-page-data-table.tsx:71
msgid "Active"
@@ -220,12 +310,12 @@ msgstr "Aktive Abonnements"
msgid "Add"
msgstr "Hinzufügen"
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:157
-#: apps/web/src/app/(dashboard)/templates/[id]/edit-template.tsx:87
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:177
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:88
msgid "Add all relevant fields for each recipient."
msgstr "Fügen Sie alle relevanten Felder für jeden Empfänger hinzu."
-#: apps/web/src/app/(dashboard)/templates/[id]/edit-template.tsx:82
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:83
msgid "Add all relevant placeholders for each recipient."
msgstr "Fügen Sie alle relevanten Platzhalter für jeden Empfänger hinzu."
@@ -241,8 +331,8 @@ msgstr "Fügen Sie einen Authenticator hinzu, um als sekundäre Authentifizierun
msgid "Add email"
msgstr "E-Mail hinzufügen"
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:156
-#: apps/web/src/app/(dashboard)/templates/[id]/edit-template.tsx:86
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:176
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:87
msgid "Add Fields"
msgstr "Felder hinzufügen"
@@ -250,55 +340,47 @@ msgstr "Felder hinzufügen"
msgid "Add more"
msgstr "Mehr hinzufügen"
-#: apps/web/src/app/(signing)/sign/[token]/number-field.tsx:270
-#~ msgid "Add number"
-#~ msgstr "Add number"
-
#: apps/web/src/app/(dashboard)/settings/security/passkeys/create-passkey-dialog.tsx:146
#: apps/web/src/app/(dashboard)/settings/security/passkeys/create-passkey-dialog.tsx:154
msgid "Add passkey"
msgstr "Passkey hinzufügen"
-#: apps/web/src/app/(dashboard)/templates/[id]/edit-template.tsx:81
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:82
msgid "Add Placeholders"
msgstr "Platzhalter hinzufügen"
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:151
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:171
msgid "Add Signers"
msgstr "Unterzeichner hinzufügen"
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:161
-msgid "Add Subject"
-msgstr "Betreff hinzufügen"
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:180
+#~ msgid "Add Subject"
+#~ msgstr "Add Subject"
#: apps/web/src/components/(teams)/dialogs/add-team-email-dialog.tsx:133
msgid "Add team email"
msgstr "Team-E-Mail hinzufügen"
-#: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:256
-#~ msgid "Add text"
-#~ msgstr "Add text"
-
-#: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:272
-#~ msgid "Add Text"
-#~ msgstr "Add Text"
-
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:152
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:172
msgid "Add the people who will sign the document."
msgstr "Fügen Sie die Personen hinzu, die das Dokument unterschreiben werden."
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:195
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:220
msgid "Add the recipients to create the document with"
msgstr "Fügen Sie die Empfänger hinzu, um das Dokument zu erstellen"
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:162
-msgid "Add the subject and message you wish to send to signers."
-msgstr "Fügen Sie den Betreff und die Nachricht hinzu, die Sie den Unterzeichnern senden möchten."
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:181
+#~ msgid "Add the subject and message you wish to send to signers."
+#~ msgstr "Add the subject and message you wish to send to signers."
#: apps/web/src/components/(teams)/dialogs/create-team-checkout-dialog.tsx:152
msgid "Adding and removing seats will adjust your invoice accordingly."
msgstr "Das Hinzufügen und Entfernen von Sitzplätzen wird Ihre Rechnung entsprechend anpassen."
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/branding-preferences.tsx:303
+msgid "Additional brand information to display at the bottom of emails"
+msgstr "Zusätzliche Markeninformationen, die am Ende von E-Mails angezeigt werden sollen"
+
#: apps/web/src/app/(dashboard)/admin/documents/[id]/page.tsx:59
msgid "Admin Actions"
msgstr "Admin-Aktionen"
@@ -307,6 +389,10 @@ msgstr "Admin-Aktionen"
msgid "Admin panel"
msgstr "Admin-Panel"
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:129
+msgid "After signing a document electronically, you will be provided the opportunity to view, download, and print the document for your records. It is highly recommended that you retain a copy of all electronically signed documents for your personal records. We will also retain a copy of the signed document for our records however we may not be able to provide you with a copy of the signed document after a certain period of time."
+msgstr "Nach der elektronischen Unterzeichnung eines Dokuments haben Sie die Möglichkeit, das Dokument für Ihre Unterlagen anzusehen, herunterzuladen und auszudrucken. Es wird dringend empfohlen, eine Kopie aller elektronisch unterschriebenen Dokumente für Ihre persönlichen Unterlagen aufzubewahren. Wir werden ebenfalls eine Kopie des unterzeichneten Dokuments für unsere Unterlagen behalten, jedoch können wir Ihnen nach einer bestimmten Zeit möglicherweise keine Kopie des unterzeichneten Dokuments mehr zur Verfügung stellen."
+
#: apps/web/src/components/formatter/document-status.tsx:46
msgid "All"
msgstr "Alle"
@@ -319,6 +405,10 @@ msgstr "Alle Dokumente"
msgid "All documents have been processed. Any new documents that are sent or received will show here."
msgstr "Alle Dokumente wurden verarbeitet. Alle neuen Dokumente, die gesendet oder empfangen werden, werden hier angezeigt."
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:81
+msgid "All documents related to the electronic signing process will be provided to you electronically through our platform or via email. It is your responsibility to ensure that your email address is current and that you can receive and open our emails."
+msgstr "Alle Dokumente, die mit dem elektronischen Unterzeichnungsprozess zusammenhängen, werden Ihnen elektronisch über unsere Plattform oder per E-Mail zur Verfügung gestellt. Es liegt in Ihrer Verantwortung, sicherzustellen, dass Ihre E-Mail-Adresse aktuell ist und dass Sie unsere E-Mails empfangen und öffnen können."
+
#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:145
msgid "All inserted signatures will be voided"
msgstr "Alle eingefügten Unterschriften werden annulliert"
@@ -327,6 +417,10 @@ msgstr "Alle eingefügten Unterschriften werden annulliert"
msgid "All recipients will be notified"
msgstr "Alle Empfänger werden benachrichtigt"
+#: apps/web/src/components/document/document-recipient-link-copy-dialog.tsx:62
+msgid "All signing links have been copied to your clipboard."
+msgstr "Alle Signierlinks wurden in die Zwischenablage kopiert."
+
#: apps/web/src/components/(dashboard)/common/command-menu.tsx:57
msgid "All templates"
msgstr "Alle Vorlagen"
@@ -347,6 +441,14 @@ msgstr "Hast du bereits ein Konto? <0>Stattdessen anmelden0>"
msgid "Amount"
msgstr "Betrag"
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:48
+msgid "An electronic signature provided by you on our platform, achieved through clicking through to a document and entering your name, or any other electronic signing method we provide, is legally binding. It carries the same weight and enforceability as a manual signature written with ink on paper."
+msgstr "Eine elektronische Unterschrift, die Sie auf unserer Plattform bereitstellen, durch Klicken auf ein Dokument und Eingabe Ihres Namens oder einer anderen von uns bereitgestellten elektronischen Unterzeichnungsart, ist rechtlich bindend. Sie hat das gleiche Gewicht und die gleiche Durchsetzbarkeit wie eine handschriftliche Unterschrift auf Papier."
+
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:67
+msgid "An email account"
+msgstr "Ein E-Mail-Konto"
+
#: apps/web/src/components/(teams)/dialogs/invite-team-member-dialog.tsx:262
msgid "An email containing an invitation will be sent to each member."
msgstr "Eine E-Mail mit einer Einladung wird an jedes Mitglied gesendet."
@@ -370,17 +472,21 @@ msgstr "Eine E-Mail, in der die Übertragung dieses Teams angefordert wird, wurd
msgid "An error occurred"
msgstr "Ein Fehler ist aufgetreten"
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:248
-#: apps/web/src/app/(dashboard)/templates/[id]/edit-template.tsx:197
-#: apps/web/src/app/(dashboard)/templates/[id]/edit-template.tsx:231
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:269
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:201
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:235
msgid "An error occurred while adding signers."
msgstr "Ein Fehler ist aufgetreten, während Unterzeichner hinzugefügt wurden."
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:278
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:304
msgid "An error occurred while adding the fields."
msgstr "Ein Fehler ist aufgetreten, während die Felder hinzugefügt wurden."
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:153
+#: apps/web/src/app/(signing)/sign/[token]/auto-sign.tsx:154
+msgid "An error occurred while auto-signing the document, some fields may not be signed. Please review and manually sign any remaining fields."
+msgstr "Beim automatischen Signieren des Dokuments ist ein Fehler aufgetreten, einige Felder wurden möglicherweise nicht signiert. Bitte überprüfen Sie und signieren Sie alle verbleibenden Felder manuell."
+
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:176
msgid "An error occurred while creating document from template."
msgstr "Ein Fehler ist aufgetreten, während das Dokument aus der Vorlage erstellt wurde."
@@ -393,9 +499,9 @@ msgid "An error occurred while disabling direct link signing."
msgstr "Ein Fehler ist aufgetreten, während das direkte Links-Signieren deaktiviert wurde."
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-button.tsx:64
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:89
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:92
#: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:76
-#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:109
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:107
msgid "An error occurred while downloading your document."
msgstr "Ein Fehler ist aufgetreten, während dein Dokument heruntergeladen wurde."
@@ -419,6 +525,10 @@ msgstr "Ein Fehler ist aufgetreten, während das Dokument verschoben wurde."
msgid "An error occurred while moving the template."
msgstr "Ein Fehler ist aufgetreten, während die Vorlage verschoben wurde."
+#: apps/web/src/app/(signing)/sign/[token]/initials-field.tsx:116
+msgid "An error occurred while removing the field."
+msgstr "Ein Fehler ist beim Entfernen des Feldes aufgetreten."
+
#: apps/web/src/app/(signing)/sign/[token]/checkbox-field.tsx:152
#: apps/web/src/app/(signing)/sign/[token]/date-field.tsx:126
#: apps/web/src/app/(signing)/sign/[token]/dropdown-field.tsx:137
@@ -426,7 +536,7 @@ msgstr "Ein Fehler ist aufgetreten, während die Vorlage verschoben wurde."
#: apps/web/src/app/(signing)/sign/[token]/name-field.tsx:148
#: apps/web/src/app/(signing)/sign/[token]/number-field.tsx:195
#: apps/web/src/app/(signing)/sign/[token]/radio-field.tsx:129
-#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:175
+#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:173
msgid "An error occurred while removing the signature."
msgstr "Ein Fehler ist aufgetreten, während die Unterschrift entfernt wurde."
@@ -434,7 +544,7 @@ msgstr "Ein Fehler ist aufgetreten, während die Unterschrift entfernt wurde."
msgid "An error occurred while removing the text."
msgstr "Ein Fehler ist aufgetreten, während der Text entfernt wurde."
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:309
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:350
msgid "An error occurred while sending the document."
msgstr "Ein Fehler ist aufgetreten, während das Dokument gesendet wurde."
@@ -446,10 +556,11 @@ msgstr "Beim Senden Ihrer Bestätigungs-E-Mail ist ein Fehler aufgetreten"
#: apps/web/src/app/(signing)/sign/[token]/date-field.tsx:100
#: apps/web/src/app/(signing)/sign/[token]/dropdown-field.tsx:106
#: apps/web/src/app/(signing)/sign/[token]/email-field.tsx:84
+#: apps/web/src/app/(signing)/sign/[token]/initials-field.tsx:90
#: apps/web/src/app/(signing)/sign/[token]/name-field.tsx:122
#: apps/web/src/app/(signing)/sign/[token]/number-field.tsx:150
#: apps/web/src/app/(signing)/sign/[token]/radio-field.tsx:102
-#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:149
+#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:147
#: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:168
msgid "An error occurred while signing the document."
msgstr "Ein Fehler ist aufgetreten, während das Dokument unterzeichnet wurde."
@@ -458,11 +569,15 @@ msgstr "Ein Fehler ist aufgetreten, während das Dokument unterzeichnet wurde."
msgid "An error occurred while trying to create a checkout session."
msgstr "Ein Fehler ist aufgetreten, während versucht wurde, eine Checkout-Sitzung zu erstellen."
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:214
-#: apps/web/src/app/(dashboard)/templates/[id]/edit-template.tsx:166
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:235
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:170
msgid "An error occurred while updating the document settings."
msgstr "Ein Fehler ist aufgetreten, während die Dokumenteinstellungen aktualisiert wurden."
+#: apps/web/src/components/forms/team-document-settings.tsx:78
+#~ msgid "An error occurred while updating the global team settings."
+#~ msgstr "An error occurred while updating the global team settings."
+
#: apps/web/src/app/(signing)/sign/[token]/checkbox-field.tsx:213
msgid "An error occurred while updating the signature."
msgstr "Ein Fehler ist aufgetreten, während die Unterschrift aktualisiert wurde."
@@ -493,7 +608,7 @@ msgstr "Ein Fehler ist aufgetreten, während dein Dokument hochgeladen wurde."
#: apps/web/src/components/(teams)/dialogs/transfer-team-dialog.tsx:116
#: apps/web/src/components/(teams)/dialogs/update-team-email-dialog.tsx:89
#: apps/web/src/components/(teams)/dialogs/update-team-member-dialog.tsx:100
-#: apps/web/src/components/(teams)/forms/update-team-form.tsx:94
+#: apps/web/src/components/(teams)/forms/update-team-form.tsx:134
#: apps/web/src/components/forms/avatar-image.tsx:94
#: apps/web/src/components/forms/avatar-image.tsx:122
#: apps/web/src/components/forms/password.tsx:84
@@ -522,13 +637,21 @@ msgstr "Es ist ein unbekannter Fehler aufgetreten"
msgid "Any payment methods attached to this team will remain attached to this team. Please contact us if you need to update this information."
msgstr "Alle Zahlungsmethoden, die mit diesem Team verbunden sind, bleiben diesem Team zugeordnet. Bitte kontaktiere uns, wenn du diese Informationen aktualisieren möchtest."
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:225
+msgid "Any Source"
+msgstr "Jede Quelle"
+
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:205
+msgid "Any Status"
+msgstr "Jeder Status"
+
#: apps/web/src/app/(dashboard)/settings/tokens/page.tsx:22
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx:42
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx:56
#: apps/web/src/components/(dashboard)/settings/layout/desktop-nav.tsx:90
#: apps/web/src/components/(dashboard)/settings/layout/mobile-nav.tsx:93
-#: apps/web/src/components/(teams)/settings/layout/desktop-nav.tsx:81
-#: apps/web/src/components/(teams)/settings/layout/mobile-nav.tsx:89
+#: apps/web/src/components/(teams)/settings/layout/desktop-nav.tsx:96
+#: apps/web/src/components/(teams)/settings/layout/mobile-nav.tsx:105
msgid "API Tokens"
msgstr "API-Token"
@@ -538,12 +661,16 @@ msgstr "App-Version"
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-button.tsx:89
#: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:120
-#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:148
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:146
#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:125
msgid "Approve"
msgstr "Genehmigen"
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:78
+#: apps/web/src/app/(signing)/sign/[token]/form.tsx:129
+msgid "Approve Document"
+msgstr "Dokument genehmigen"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:94
msgid "Approved"
msgstr "Genehmigt"
@@ -551,6 +678,10 @@ msgstr "Genehmigt"
msgid "Are you sure you want to delete this token?"
msgstr "Bist du sicher, dass du dieses Token löschen möchtest?"
+#: apps/web/src/app/(signing)/sign/[token]/reject-document-dialog.tsx:120
+msgid "Are you sure you want to reject this document? This action cannot be undone."
+msgstr "Sind Sie sicher, dass Sie dieses Dokument ablehnen möchten? Diese Aktion kann nicht rückgängig gemacht werden."
+
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:188
msgid "Are you sure you want to remove the <0>{passkeyName}0> passkey."
msgstr "Bist du sicher, dass du den <0>{passkeyName}0> Passkey entfernen möchtest."
@@ -561,7 +692,7 @@ msgstr "Bist du dir sicher, dass du dieses Team löschen möchtest?"
#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:98
#: apps/web/src/app/(dashboard)/settings/teams/team-email-usage.tsx:94
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:453
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:455
#: apps/web/src/components/(teams)/dialogs/delete-team-member-dialog.tsx:81
#: apps/web/src/components/(teams)/dialogs/leave-team-dialog.tsx:81
#: apps/web/src/components/(teams)/dialogs/remove-team-email-dialog.tsx:116
@@ -573,10 +704,14 @@ msgstr "Bist du dir sicher?"
msgid "Attempts sealing the document again, useful for after a code change has occurred to resolve an erroneous document."
msgstr "Versuche, das Dokument erneut zu versiegeln, nützlich nach einer Codeänderung, um ein fehlerhaftes Dokument zu beheben."
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:127
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:130
msgid "Audit Log"
msgstr "Audit-Protokoll"
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:198
+msgid "Authentication Level"
+msgstr "Authentifizierungsstufe"
+
#: apps/web/src/app/(recipient)/d/[token]/signing-auth-page.tsx:41
#: apps/web/src/app/(signing)/sign/[token]/signing-auth-page.tsx:52
msgid "Authentication required"
@@ -590,7 +725,7 @@ msgstr "Avatar"
msgid "Avatar Updated"
msgstr "Avatar aktualisiert"
-#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:121
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:127
msgid "Awaiting email confirmation"
msgstr "Warte auf E-Mail-Bestätigung"
@@ -600,7 +735,7 @@ msgstr "Warte auf E-Mail-Bestätigung"
msgid "Back"
msgstr "Zurück"
-#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:109
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:164
msgid "Back to Documents"
msgstr "Zurück zu Dokumenten"
@@ -625,23 +760,32 @@ msgstr "Banner aktualisiert"
msgid "Basic details"
msgstr "Basisdetails"
-#: apps/web/src/app/(dashboard)/settings/billing/page.tsx:72
+#: apps/web/src/app/(dashboard)/settings/billing/page.tsx:74
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/billing/page.tsx:61
#: apps/web/src/components/(dashboard)/settings/layout/desktop-nav.tsx:117
#: apps/web/src/components/(dashboard)/settings/layout/mobile-nav.tsx:120
-#: apps/web/src/components/(teams)/settings/layout/desktop-nav.tsx:108
-#: apps/web/src/components/(teams)/settings/layout/mobile-nav.tsx:116
+#: apps/web/src/components/(teams)/settings/layout/desktop-nav.tsx:123
+#: apps/web/src/components/(teams)/settings/layout/mobile-nav.tsx:132
msgid "Billing"
msgstr "Abrechnung"
-#: apps/web/src/components/formatter/document-status.tsx:51
-msgid "Bin"
-msgstr ""
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/page.tsx:42
+msgid "Branding Preferences"
+msgstr "Markenpräferenzen"
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/branding-preferences.tsx:102
+msgid "Branding preferences updated"
+msgstr "Markenpräferenzen aktualisiert"
#: apps/web/src/app/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx:99
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/data-table.tsx:48
msgid "Browser"
msgstr "Browser"
+#: apps/web/src/components/document/document-recipient-link-copy-dialog.tsx:145
+msgid "Bulk Copy"
+msgstr "Massenkopie"
+
#: apps/web/src/components/(teams)/dialogs/invite-team-member-dialog.tsx:279
msgid "Bulk Import"
msgstr "Bulk-Import"
@@ -654,9 +798,22 @@ msgstr "Durch das Löschen dieses Dokuments wird Folgendes passieren:"
msgid "By enabling 2FA, you will be required to enter a code from your authenticator app every time you sign in."
msgstr "Durch die Aktivierung von 2FA müssen Sie jedes Mal, wenn Sie sich anmelden, einen Code aus Ihrer Authenticator-App eingeben."
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:142
+msgid "By proceeding to use the electronic signature service provided by Documenso, you affirm that you have read and understood this disclosure. You agree to all terms and conditions related to the use of electronic signatures and electronic transactions as outlined herein."
+msgstr "Indem Sie den elektronischen Unterzeichnungsdienst von Documenso verwenden, bestätigen Sie, dass Sie diese Offenlegung gelesen und verstanden haben. Sie stimmen allen Bedingungen und Konditionen zu, die mit der Verwendung elektronischer Unterschriften und elektronischer Transaktionen verbunden sind, wie hierin dargelegt."
+
+#: apps/web/src/components/general/signing-disclosure.tsx:14
+msgid "By proceeding with your electronic signature, you acknowledge and consent that it will be used to sign the given document and holds the same legal validity as a handwritten signature. By completing the electronic signing process, you affirm your understanding and acceptance of these conditions."
+msgstr "Indem Sie fortfahren, Ihre elektronische Unterschrift zu leisten, erkennen Sie an und stimmen zu, dass sie verwendet wird, um das gegebene Dokument zu unterzeichnen, und die gleiche rechtliche Gültigkeit wie eine handschriftliche Unterschrift hat. Durch den Abschluss des elektronischen Unterzeichnungsprozesses bestätigen Sie Ihr Verständnis und Ihre Akzeptanz dieser Bedingungen."
+
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:92
+msgid "By using the electronic signature feature, you are consenting to conduct transactions and receive disclosures electronically. You acknowledge that your electronic signature on documents is binding and that you accept the terms outlined in the documents you are signing."
+msgstr "Durch die Verwendung der elektronischen Unterschriftsfunktion stimmen Sie zu, Transaktionen durchzuführen und Offenlegungen elektronisch zu erhalten. Sie erkennen an, dass Ihre elektronische Unterschrift auf Dokumenten bindend ist und dass Sie die Bedingungen akzeptieren, die in den Dokumenten dargelegt sind, die Sie unterzeichnen."
+
#: apps/web/src/app/(dashboard)/documents/_action-items/resend-document.tsx:186
#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:190
#: apps/web/src/app/(dashboard)/documents/duplicate-document-dialog.tsx:108
+#: apps/web/src/app/(dashboard)/documents/move-document-dialog.tsx:120
#: apps/web/src/app/(dashboard)/settings/security/passkeys/create-passkey-dialog.tsx:248
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:157
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:198
@@ -664,17 +821,20 @@ msgstr "Durch die Aktivierung von 2FA müssen Sie jedes Mal, wenn Sie sich anmel
#: apps/web/src/app/(dashboard)/templates/delete-template-dialog.tsx:81
#: apps/web/src/app/(dashboard)/templates/duplicate-template-dialog.tsx:78
#: apps/web/src/app/(dashboard)/templates/move-template-dialog.tsx:119
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:470
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:472
+#: apps/web/src/app/(signing)/sign/[token]/auto-sign.tsx:220
#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-2fa.tsx:178
#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-account.tsx:71
#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-passkey.tsx:164
#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-passkey.tsx:189
-#: apps/web/src/app/(signing)/sign/[token]/form.tsx:150
+#: apps/web/src/app/(signing)/sign/[token]/form.tsx:151
+#: apps/web/src/app/(signing)/sign/[token]/form.tsx:220
#: apps/web/src/app/(signing)/sign/[token]/name-field.tsx:215
-#: apps/web/src/app/(signing)/sign/[token]/number-field.tsx:327
+#: apps/web/src/app/(signing)/sign/[token]/number-field.tsx:328
+#: apps/web/src/app/(signing)/sign/[token]/reject-document-dialog.tsx:153
#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:113
-#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:250
-#: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:333
+#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:248
+#: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:335
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/team-transfer-status.tsx:121
#: apps/web/src/components/(dashboard)/settings/token/delete-token-dialog.tsx:176
#: apps/web/src/components/(dashboard)/settings/webhooks/create-webhook-dialog.tsx:242
@@ -704,6 +864,10 @@ msgstr "Vom Benutzer abgebrochen"
msgid "Charts"
msgstr "Diagramme"
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/documents/page.tsx:32
+#~ msgid "Check out the documentaton for the <0>global team settings0>."
+#~ msgstr "Check out the documentaton for the <0>global team settings0>."
+
#: apps/web/src/components/(teams)/dialogs/create-team-checkout-dialog.tsx:179
msgid "Checkout"
msgstr "Abrechnung"
@@ -716,6 +880,10 @@ msgstr "Wählen Sie einen vorhandenen Empfänger unten aus, um fortzufahren"
msgid "Choose Direct Link Recipient"
msgstr "Wählen Sie den direkten Link Empfänger"
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:182
+msgid "Choose how the document will reach recipients"
+msgstr "Wählen Sie, wie das Dokument die Empfänger erreichen soll"
+
#: apps/web/src/components/forms/token.tsx:200
msgid "Choose..."
msgstr "Wählen..."
@@ -742,6 +910,7 @@ msgstr "Klicken Sie hier, um zu beginnen"
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recent-activity.tsx:78
#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:118
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:68
#: apps/web/src/components/document/document-history-sheet.tsx:133
msgid "Click here to retry"
msgstr "Klicken Sie hier, um es erneut zu versuchen"
@@ -756,17 +925,18 @@ msgid "Click to copy signing link for sending to recipient"
msgstr "Klicken Sie, um den Signatur-Link zu kopieren, um ihn an den Empfänger zu senden"
#: apps/web/src/app/(recipient)/d/[token]/sign-direct-template.tsx:175
-#: apps/web/src/app/(signing)/sign/[token]/form.tsx:114
-#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:435
-#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:314
+#: apps/web/src/app/(signing)/sign/[token]/form.tsx:115
+#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:440
+#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:319
msgid "Click to insert field"
msgstr "Klicken Sie, um das Feld einzufügen"
#: apps/web/src/app/(dashboard)/templates/new-template-dialog.tsx:126
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:304
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:389
#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-2fa.tsx:125
#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-passkey.tsx:138
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/team-transfer-status.tsx:121
+#: apps/web/src/components/document/document-recipient-link-copy-dialog.tsx:140
#: apps/web/src/components/forms/2fa/enable-authenticator-app-dialog.tsx:180
#: apps/web/src/components/forms/2fa/view-recovery-codes-dialog.tsx:102
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:319
@@ -775,8 +945,8 @@ msgid "Close"
msgstr "Schließen"
#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:61
-#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:425
-#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:304
+#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:430
+#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:309
#: apps/web/src/components/forms/v2/signup.tsx:534
msgid "Complete"
msgstr "Vollständig"
@@ -793,7 +963,8 @@ msgstr "Unterzeichnung abschließen"
msgid "Complete Viewing"
msgstr "Betrachten abschließen"
-#: apps/web/src/components/(dashboard)/avatar/stack-avatars-with-tooltip.tsx:62
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:208
+#: apps/web/src/components/(dashboard)/avatar/stack-avatars-with-tooltip.tsx:77
#: apps/web/src/components/formatter/document-status.tsx:28
msgid "Completed"
msgstr "Abgeschlossen"
@@ -806,11 +977,11 @@ msgstr "Abgeschlossene Dokumente"
msgid "Completed Documents"
msgstr "Abgeschlossene Dokumente"
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:147
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:167
msgid "Configure general settings for the document."
msgstr "Konfigurieren Sie die allgemeinen Einstellungen für das Dokument."
-#: apps/web/src/app/(dashboard)/templates/[id]/edit-template.tsx:77
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:78
msgid "Configure general settings for the template."
msgstr "Konfigurieren Sie die allgemeinen Einstellungen für die Vorlage."
@@ -818,7 +989,7 @@ msgstr "Konfigurieren Sie die allgemeinen Einstellungen für die Vorlage."
msgid "Configure template"
msgstr "Vorlage konfigurieren"
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:479
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:481
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:460
msgid "Confirm"
msgstr "Bestätigen"
@@ -848,6 +1019,14 @@ msgstr "E-Mail bestätigen"
msgid "Confirmation email sent"
msgstr "Bestätigungs-E-Mail gesendet"
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:89
+msgid "Consent to Electronic Transactions"
+msgstr "Zustimmung zu elektronischen Transaktionen"
+
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:151
+msgid "Contact Information"
+msgstr "Kontaktinformationen"
+
#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:189
msgid "Content"
msgstr "Inhalt"
@@ -866,14 +1045,37 @@ msgstr "Fortfahren"
msgid "Continue to login"
msgstr "Weiter zum Login"
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:173
+msgid "Controls the default language of an uploaded document. This will be used as the language in email communications with the recipients."
+msgstr "Steuert die Standardsprache eines hochgeladenen Dokuments. Diese wird als Sprache in der E-Mail-Kommunikation mit den Empfängern verwendet."
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:141
+msgid "Controls the default visibility of an uploaded document."
+msgstr "Steuert die Standard-sichtbarkeit eines hochgeladenen Dokuments."
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:220
+msgid "Controls the formatting of the message that will be sent when inviting a recipient to sign a document. If a custom message has been provided while configuring the document, it will be used instead."
+msgstr "Steuert das Format der Nachricht, die gesendet wird, wenn ein Empfänger eingeladen wird, ein Dokument zu unterschreiben. Wenn eine benutzerdefinierte Nachricht beim Konfigurieren des Dokuments bereitgestellt wurde, wird diese stattdessen verwendet."
+
+#: apps/web/src/components/document/document-recipient-link-copy-dialog.tsx:128
+msgid "Copied"
+msgstr "Kopiert"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:162
#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:77
#: apps/web/src/app/(dashboard)/templates/template-direct-link-badge.tsx:31
#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:163
#: apps/web/src/components/(dashboard)/avatar/avatar-with-recipient.tsx:40
+#: apps/web/src/components/document/document-recipient-link-copy-dialog.tsx:61
+#: apps/web/src/components/document/document-recipient-link-copy-dialog.tsx:117
#: apps/web/src/components/forms/public-profile-form.tsx:117
msgid "Copied to clipboard"
msgstr "In die Zwischenablage kopiert"
+#: apps/web/src/components/document/document-recipient-link-copy-dialog.tsx:123
+msgid "Copy"
+msgstr "Kopieren"
+
#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:169
msgid "Copy sharable link"
msgstr "Kopieren Sie den teilbaren Link"
@@ -882,6 +1084,10 @@ msgstr "Kopieren Sie den teilbaren Link"
msgid "Copy Shareable Link"
msgstr "Kopiere den teilbaren Link"
+#: apps/web/src/components/document/document-recipient-link-copy-dialog.tsx:83
+msgid "Copy Signing Links"
+msgstr "Signierlinks kopieren"
+
#: apps/web/src/components/forms/token.tsx:288
msgid "Copy token"
msgstr "Token kopieren"
@@ -904,15 +1110,19 @@ msgstr "Ein Team erstellen, um mit Ihren Teammitgliedern zusammenzuarbeiten."
msgid "Create account"
msgstr "Konto erstellen"
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:310
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:397
msgid "Create and send"
msgstr "Erstellen und senden"
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:312
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:395
msgid "Create as draft"
msgstr "Als Entwurf erstellen"
-#: apps/web/src/app/(dashboard)/templates/[id]/template-direct-link-dialog-wrapper.tsx:35
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:355
+msgid "Create as pending"
+msgstr "Als ausstehend erstellen"
+
+#: apps/web/src/app/(dashboard)/templates/[id]/template-direct-link-dialog-wrapper.tsx:37
msgid "Create Direct Link"
msgstr "Direkten Link erstellen"
@@ -920,7 +1130,7 @@ msgstr "Direkten Link erstellen"
msgid "Create Direct Signing Link"
msgstr "Direkten Signatur-Link erstellen"
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:189
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:214
msgid "Create document from template"
msgstr "Dokument aus der Vorlage erstellen"
@@ -932,6 +1142,10 @@ msgstr "Jetzt erstellen"
msgid "Create one automatically"
msgstr "Einen automatisch erstellen"
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:399
+msgid "Create signing links"
+msgstr "Unterzeichnung Links erstellen"
+
#: apps/web/src/components/(dashboard)/layout/menu-switcher.tsx:181
#: apps/web/src/components/(dashboard)/layout/menu-switcher.tsx:251
#: apps/web/src/components/(teams)/dialogs/create-team-dialog.tsx:138
@@ -943,6 +1157,10 @@ msgstr "Team erstellen"
msgid "Create Team"
msgstr "Team erstellen"
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:362
+msgid "Create the document as pending and ready to sign."
+msgstr "Erstellen Sie das Dokument als ausstehend und bereit zur Unterschrift."
+
#: apps/web/src/components/forms/token.tsx:250
#: apps/web/src/components/forms/token.tsx:259
msgid "Create token"
@@ -968,12 +1186,15 @@ msgstr "Erstellen Sie Ihr Konto und beginnen Sie mit dem modernen Dokumentensign
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-information.tsx:35
#: apps/web/src/app/(dashboard)/documents/data-table.tsx:54
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table.tsx:65
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:109
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-information.tsx:34
#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:56
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:274
msgid "Created"
msgstr "Erstellt"
#: apps/web/src/app/(dashboard)/admin/subscriptions/page.tsx:35
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:111
msgid "Created At"
msgstr "Erstellt am"
@@ -988,19 +1209,11 @@ msgstr "Erstellt am"
#: apps/web/src/app/(dashboard)/settings/tokens/page.tsx:67
#: apps/web/src/app/(dashboard)/settings/webhooks/page.tsx:88
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx:100
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/page.tsx:93
msgid "Created on {0}"
msgstr "Erstellt am {0}"
-#: apps/web/src/app/(dashboard)/settings/webhooks/page.tsx:89
-#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/page.tsx:94
-#~ msgid "Created on <0/>"
-#~ msgstr "Created on <0/>"
-
-#: apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx:100
-msgid "Created on{0}"
-msgstr ">>>>>>> 4ca18b99 (fix: refactor dates)"
-
#: apps/web/src/components/forms/password.tsx:107
msgid "Current Password"
msgstr "Aktuelles Passwort"
@@ -1034,16 +1247,29 @@ msgstr "Ablehnen"
msgid "Declined team invitation"
msgstr "Team-Einladung abgelehnt"
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:141
-#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:208
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:153
+msgid "Default Document Language"
+msgstr "Standardsprache des Dokuments"
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:117
+#: apps/web/src/components/(teams)/forms/update-team-form.tsx:195
+msgid "Default Document Visibility"
+msgstr "Standard Sichtbarkeit des Dokuments"
+
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:90
+msgid "delete"
+msgstr "löschen"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:144
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:189
#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:200
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:177
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:211
#: apps/web/src/app/(dashboard)/settings/tokens/page.tsx:83
#: apps/web/src/app/(dashboard)/settings/webhooks/page.tsx:100
-#: apps/web/src/app/(dashboard)/templates/data-table-action-dropdown.tsx:91
+#: apps/web/src/app/(dashboard)/templates/data-table-action-dropdown.tsx:94
#: apps/web/src/app/(dashboard)/templates/delete-template-dialog.tsx:90
-#: apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx:122
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx:116
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/page.tsx:105
#: apps/web/src/components/(dashboard)/settings/token/delete-token-dialog.tsx:121
#: apps/web/src/components/(dashboard)/settings/webhooks/delete-webhook-dialog.tsx:109
@@ -1052,6 +1278,15 @@ msgstr "Team-Einladung abgelehnt"
msgid "Delete"
msgstr "Löschen"
+#: apps/web/src/components/(dashboard)/settings/token/delete-token-dialog.tsx:56
+#: apps/web/src/components/(dashboard)/settings/webhooks/delete-webhook-dialog.tsx:54
+msgid "delete {0}"
+msgstr "löschen {0}"
+
+#: apps/web/src/components/(teams)/dialogs/delete-team-dialog.tsx:50
+msgid "delete {teamName}"
+msgstr "löschen {teamName}"
+
#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:137
msgid "Delete account"
msgstr "Konto löschen"
@@ -1078,7 +1313,7 @@ msgstr "Dokument löschen"
msgid "Delete passkey"
msgstr "Passkey löschen"
-#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:191
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:197
#: apps/web/src/components/(teams)/dialogs/delete-team-dialog.tsx:118
msgid "Delete team"
msgstr "Team löschen"
@@ -1104,6 +1339,7 @@ msgid "Delete your account and all its contents, including completed documents.
msgstr "Löschen Sie Ihr Konto und alle Inhalte, einschließlich abgeschlossener Dokumente. Diese Aktion ist irreversibel und führt zur Kündigung Ihres Abonnements, seien Sie also vorsichtig."
#: apps/web/src/app/(dashboard)/admin/documents/[id]/page.tsx:41
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:97
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-information.tsx:50
msgid "Deleted"
msgstr "Gelöscht"
@@ -1112,11 +1348,12 @@ msgstr "Gelöscht"
msgid "Deleting account..."
msgstr "Konto wird gelöscht..."
-#: apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx:135
-#~ msgid "Deleting document"
-#~ msgstr "Deleting document"
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:178
+msgid "Details"
+msgstr "Einzelheiten"
#: apps/web/src/app/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx:75
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:234
msgid "Device"
msgstr "Gerät"
@@ -1125,10 +1362,16 @@ msgstr "Gerät"
msgid "direct link"
msgstr "Direkter Link"
-#: apps/web/src/app/(dashboard)/templates/data-table-action-dropdown.tsx:76
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:40
+#: apps/web/src/app/(dashboard)/templates/data-table-action-dropdown.tsx:79
msgid "Direct link"
msgstr "Direkter Link"
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:160
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:231
+msgid "Direct Link"
+msgstr "Direkter Link"
+
#: apps/web/src/app/(dashboard)/templates/template-direct-link-badge.tsx:46
msgid "direct link disabled"
msgstr "Direkter Link deaktiviert"
@@ -1184,6 +1427,10 @@ msgstr "Das Deaktivieren der direkten Link-Signatur verhindert, dass jemand auf
msgid "Display your name and email in documents"
msgstr "Zeigen Sie Ihren Namen und Ihre E-Mail in Dokumenten an"
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:181
+msgid "Distribute Document"
+msgstr "Dokument verteilen"
+
#: apps/web/src/app/(dashboard)/templates/delete-template-dialog.tsx:63
msgid "Do you want to delete this template?"
msgstr "Möchten Sie diese Vorlage löschen?"
@@ -1197,6 +1444,7 @@ msgid "Documenso will delete <0>all of your documents0>, along with all of you
msgstr "Documenso wird <0>alle Ihre Dokumente0> löschen, zusammen mit allen abgeschlossenen Dokumenten, Unterschriften und allen anderen Ressourcen, die zu Ihrem Konto gehören."
#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-page-view.tsx:119
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:38
msgid "Document"
msgstr "Dokument"
@@ -1224,12 +1472,20 @@ msgstr "Dokument abgeschlossen"
msgid "Document Completed!"
msgstr "Dokument abgeschlossen!"
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:142
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:156
msgid "Document created"
msgstr "Dokument erstellt"
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:129
+msgid "Document created by <0>{0}0>"
+msgstr "Dokument erstellt von <0>{0}0>"
+
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:134
+msgid "Document created using a <0>direct link0>"
+msgstr "Dokument erstellt mit einem <0>direkten Link0>"
+
#: apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx:51
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:173
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:178
#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:59
msgid "Document deleted"
msgstr "Dokument gelöscht"
@@ -1242,12 +1498,13 @@ msgstr "Dokument-Entwurf"
msgid "Document Duplicated"
msgstr "Dokument dupliziert"
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:184
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:189
#: apps/web/src/components/document/document-history-sheet.tsx:104
msgid "Document history"
msgstr "Dokumentverlauf"
#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-page-view.tsx:71
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:81
msgid "Document ID"
msgstr "Dokument-ID"
@@ -1255,7 +1512,7 @@ msgstr "Dokument-ID"
msgid "Document inbox"
msgstr "Dokumenten-Posteingang"
-#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:178
+#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:180
msgid "Document Limit Exceeded!"
msgstr "Dokumentenlimit überschritten!"
@@ -1275,18 +1532,30 @@ msgstr "Dokument steht nicht mehr zur Unterschrift zur Verfügung"
msgid "Document pending"
msgstr "Dokument ausstehend"
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:91
+msgid "Document preferences updated"
+msgstr "Dokumentpräferenzen aktualisiert"
+
#: apps/web/src/app/(dashboard)/documents/_action-items/resend-document.tsx:97
msgid "Document re-sent"
msgstr "Dokument erneut gesendet"
+#: apps/web/src/app/(signing)/sign/[token]/rejected/page.tsx:83
+msgid "Document Rejected"
+msgstr "Dokument abgelehnt"
+
#: apps/web/src/app/(dashboard)/admin/documents/[id]/admin-actions.tsx:36
msgid "Document resealed"
msgstr "Dokument wieder versiegelt"
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:298
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:327
msgid "Document sent"
msgstr "Dokument gesendet"
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/documents/page.tsx:26
+#~ msgid "Document Settings"
+#~ msgstr "Document Settings"
+
#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:132
msgid "Document Signed"
msgstr "Dokument signiert"
@@ -1321,7 +1590,7 @@ msgstr "Dokument wird dauerhaft gelöscht"
#: apps/web/src/app/(dashboard)/admin/nav.tsx:65
#: apps/web/src/app/(dashboard)/admin/users/data-table-users.tsx:92
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:139
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:144
#: apps/web/src/app/(dashboard)/documents/[id]/edit/document-edit-page-view.tsx:109
#: apps/web/src/app/(dashboard)/documents/[id]/loading.tsx:16
#: apps/web/src/app/(dashboard)/documents/[id]/sent/page.tsx:15
@@ -1335,6 +1604,10 @@ msgstr "Dokument wird dauerhaft gelöscht"
msgid "Documents"
msgstr "Dokumente"
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view.tsx:195
+msgid "Documents created from template"
+msgstr "Dokumente erstellt aus Vorlage"
+
#: apps/web/src/app/(dashboard)/admin/stats/page.tsx:113
msgid "Documents Received"
msgstr "Dokumente empfangen"
@@ -1349,9 +1622,9 @@ msgid "Don't have an account? <0>Sign up0>"
msgstr "Haben Sie kein Konto? <0>Registrieren0>"
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-button.tsx:111
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:120
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:123
#: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:141
-#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:164
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:162
#: apps/web/src/components/(teams)/tables/team-billing-invoices-data-table.tsx:110
#: apps/web/src/components/forms/2fa/enable-authenticator-app-dialog.tsx:185
#: apps/web/src/components/forms/2fa/view-recovery-codes-dialog.tsx:107
@@ -1362,10 +1635,11 @@ msgstr "Herunterladen"
msgid "Download Audit Logs"
msgstr "Auditprotokolle herunterladen"
-#: apps/web/src/app/(dashboard)/documents/[id]/logs/download-certificate-button.tsx:84
+#: apps/web/src/app/(dashboard)/documents/[id]/logs/download-certificate-button.tsx:86
msgid "Download Certificate"
msgstr "Zertifikat herunterladen"
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:214
#: apps/web/src/components/formatter/document-status.tsx:34
msgid "Draft"
msgstr "Entwurf"
@@ -1382,41 +1656,55 @@ msgstr "Entwurfte Dokumente"
msgid "Due to an unpaid invoice, your team has been restricted. Please settle the payment to restore full access to your team."
msgstr "Aufgrund einer unbezahlten Rechnung wurde Ihrem Team der Zugriff eingeschränkt. Bitte begleichen Sie die Zahlung, um den vollumfänglichen Zugang zu Ihrem Team wiederherzustellen."
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:133
-#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:169
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:136
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:167
#: apps/web/src/app/(dashboard)/documents/duplicate-document-dialog.tsx:85
#: apps/web/src/app/(dashboard)/documents/duplicate-document-dialog.tsx:118
-#: apps/web/src/app/(dashboard)/templates/data-table-action-dropdown.tsx:71
+#: apps/web/src/app/(dashboard)/templates/data-table-action-dropdown.tsx:74
#: apps/web/src/app/(dashboard)/templates/duplicate-template-dialog.tsx:91
msgid "Duplicate"
msgstr "Duplizieren"
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-button.tsx:104
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:112
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:115
#: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:102
-#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:158
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:156
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:111
#: apps/web/src/app/(dashboard)/settings/webhooks/page.tsx:95
-#: apps/web/src/app/(dashboard)/templates/data-table-action-dropdown.tsx:62
+#: apps/web/src/app/(dashboard)/templates/data-table-action-dropdown.tsx:65
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/team-email-dropdown.tsx:77
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/page.tsx:100
msgid "Edit"
msgstr "Bearbeiten"
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view.tsx:115
+msgid "Edit Template"
+msgstr "Vorlage bearbeiten"
+
#: apps/web/src/app/(dashboard)/settings/webhooks/[id]/page.tsx:94
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/[id]/page.tsx:100
msgid "Edit webhook"
msgstr "Webhook bearbeiten"
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:78
+msgid "Electronic Delivery of Documents"
+msgstr "Elektronische Zustellung von Dokumenten"
+
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:17
+msgid "Electronic Signature Disclosure"
+msgstr "Offenlegung der elektronischen Unterschrift"
+
#: apps/web/src/app/(dashboard)/admin/documents/[id]/recipient-item.tsx:166
#: apps/web/src/app/(dashboard)/admin/users/[id]/page.tsx:114
#: apps/web/src/app/(dashboard)/admin/users/data-table-users.tsx:71
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:213
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:220
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:265
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:272
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:122
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:129
#: apps/web/src/app/(recipient)/d/[token]/configure-direct-template.tsx:118
#: apps/web/src/app/(signing)/sign/[token]/email-field.tsx:126
-#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:376
-#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:256
+#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:377
+#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:257
#: apps/web/src/components/(teams)/dialogs/add-team-email-dialog.tsx:169
#: apps/web/src/components/(teams)/dialogs/update-team-email-dialog.tsx:153
#: apps/web/src/components/forms/forgot-password.tsx:81
@@ -1436,6 +1724,10 @@ msgstr "E-Mail-Adresse"
msgid "Email Address"
msgstr "E-Mail-Adresse"
+#: apps/web/src/app/(recipient)/d/[token]/configure-direct-template.tsx:80
+msgid "Email cannot already exist in the template"
+msgstr "E-Mail darf nicht bereits in der Vorlage vorhanden sein"
+
#: apps/web/src/app/(unauthenticated)/verify-email/[token]/client.tsx:36
msgid "Email Confirmed!"
msgstr "E-Mail bestätigt!"
@@ -1461,6 +1753,10 @@ msgstr "2FA aktivieren"
msgid "Enable Authenticator App"
msgstr "Authenticator-App aktivieren"
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/branding-preferences.tsx:170
+msgid "Enable custom branding for all documents in this team."
+msgstr "Aktivieren Sie individuelles Branding für alle Dokumente in diesem Team."
+
#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:251
msgid "Enable direct link signing"
msgstr "Direktlinksignierung aktivieren"
@@ -1478,10 +1774,18 @@ msgstr "Direktlinksignierung aktivieren"
msgid "Enabled"
msgstr "Aktiviert"
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:87
+msgid "Enclosed Document"
+msgstr "Beigefügte Dokument"
+
#: apps/web/src/app/(dashboard)/admin/subscriptions/page.tsx:38
msgid "Ends On"
msgstr "Endet am"
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/branding-preferences.tsx:295
+msgid "Enter your brand details"
+msgstr "Geben Sie Ihre Markendaten ein"
+
#: apps/web/src/app/(signing)/sign/[token]/complete/claim-account.tsx:137
msgid "Enter your email"
msgstr "Geben Sie Ihre E-Mail-Adresse ein"
@@ -1494,25 +1798,26 @@ msgstr "Geben Sie Ihre E-Mail-Adresse ein, um das abgeschlossene Dokument zu erh
msgid "Enter your name"
msgstr "Geben Sie Ihren Namen ein"
-#: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:278
+#: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:280
msgid "Enter your text here"
msgstr "Geben Sie hier Ihren Text ein"
#: apps/web/src/app/(dashboard)/admin/documents/[id]/admin-actions.tsx:41
#: apps/web/src/app/(dashboard)/admin/users/[id]/page.tsx:78
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:213
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:247
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:277
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:308
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:234
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:268
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:303
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:349
#: apps/web/src/app/(dashboard)/documents/move-document-dialog.tsx:57
#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:106
#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:112
-#: apps/web/src/app/(dashboard)/templates/[id]/edit-template.tsx:165
-#: apps/web/src/app/(dashboard)/templates/[id]/edit-template.tsx:196
-#: apps/web/src/app/(dashboard)/templates/[id]/edit-template.tsx:230
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:169
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:200
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:234
#: apps/web/src/app/(dashboard)/templates/duplicate-template-dialog.tsx:51
#: apps/web/src/app/(dashboard)/templates/move-template-dialog.tsx:56
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:152
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:175
+#: apps/web/src/app/(signing)/sign/[token]/auto-sign.tsx:152
#: apps/web/src/app/(signing)/sign/[token]/checkbox-field.tsx:122
#: apps/web/src/app/(signing)/sign/[token]/checkbox-field.tsx:151
#: apps/web/src/app/(signing)/sign/[token]/checkbox-field.tsx:212
@@ -1522,14 +1827,16 @@ msgstr "Geben Sie hier Ihren Text ein"
#: apps/web/src/app/(signing)/sign/[token]/dropdown-field.tsx:136
#: apps/web/src/app/(signing)/sign/[token]/email-field.tsx:83
#: apps/web/src/app/(signing)/sign/[token]/email-field.tsx:109
+#: apps/web/src/app/(signing)/sign/[token]/initials-field.tsx:89
+#: apps/web/src/app/(signing)/sign/[token]/initials-field.tsx:115
#: apps/web/src/app/(signing)/sign/[token]/name-field.tsx:121
#: apps/web/src/app/(signing)/sign/[token]/name-field.tsx:147
#: apps/web/src/app/(signing)/sign/[token]/number-field.tsx:149
#: apps/web/src/app/(signing)/sign/[token]/number-field.tsx:194
#: apps/web/src/app/(signing)/sign/[token]/radio-field.tsx:101
#: apps/web/src/app/(signing)/sign/[token]/radio-field.tsx:128
-#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:148
-#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:174
+#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:146
+#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:172
#: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:167
#: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:195
#: apps/web/src/components/(dashboard)/layout/verify-email-banner.tsx:54
@@ -1537,6 +1844,14 @@ msgstr "Geben Sie hier Ihren Text ein"
msgid "Error"
msgstr "Fehler"
+#: apps/web/src/components/forms/team-document-settings.tsx:77
+#~ msgid "Error updating global team settings"
+#~ msgstr "Error updating global team settings"
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:128
+msgid "Everyone can access and view the document"
+msgstr "Jeder kann auf das Dokument zugreifen und es anzeigen"
+
#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:142
msgid "Everyone has signed"
msgstr "Alle haben unterschrieben"
@@ -1549,27 +1864,14 @@ msgstr "Alle haben unterschrieben! Sie werden eine E-Mail-Kopie des unterzeichne
msgid "Exceeded timeout"
msgstr "Zeitüberschreitung überschritten"
-#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:114
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:120
msgid "Expired"
msgstr "Abgelaufen"
-#: apps/web/src/app/(dashboard)/settings/tokens/page.tsx:73
-#: apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx:106
-#~ msgid "Expires on"
-#~ msgstr "Expires on"
-
#: apps/web/src/app/(dashboard)/settings/tokens/page.tsx:71
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx:104
msgid "Expires on {0}"
-msgstr ">>>>>>> 4ca18b99 (fix: refactor dates)"
-
-#: apps/web/src/app/(dashboard)/settings/tokens/page.tsx:75
-#: apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx:108
-#~ msgid "Expires on <0/>"
-#~ msgstr "Expires on <0/>"
-
-#: apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx:107
-msgid "Expires on{0}"
-msgstr "Läuft ab am{0}"
+msgstr "Läuft ab am {0}"
#: apps/web/src/app/(dashboard)/admin/documents/[id]/admin-actions.tsx:42
msgid "Failed to reseal document"
@@ -1592,28 +1894,42 @@ msgstr "Felder"
msgid "File cannot be larger than {APP_DOCUMENT_UPLOAD_SIZE_LIMIT}MB"
msgstr "Die Datei darf nicht größer als {APP_DOCUMENT_UPLOAD_SIZE_LIMIT} MB sein"
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:154
+msgid "For any questions regarding this disclosure, electronic signatures, or any related process, please contact us at: <0>{SUPPORT_EMAIL}0>"
+msgstr "Für Fragen zu dieser Offenlegung, elektronischen Unterschriften oder einem verwandten Verfahren kontaktieren Sie uns bitte unter: <0>{SUPPORT_EMAIL}0>"
+
#: apps/web/src/app/(unauthenticated)/forgot-password/page.tsx:21
#: apps/web/src/components/forms/signin.tsx:370
msgid "Forgot your password?"
msgstr "Haben Sie Ihr Passwort vergessen?"
#: apps/web/src/app/(recipient)/d/[token]/sign-direct-template.tsx:326
+#: apps/web/src/app/(signing)/sign/[token]/form.tsx:178
#: apps/web/src/app/(signing)/sign/[token]/name-field.tsx:193
-#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:361
-#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:241
+#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:362
+#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:242
#: apps/web/src/components/forms/profile.tsx:110
#: apps/web/src/components/forms/v2/signup.tsx:312
msgid "Full Name"
msgstr "Vollständiger Name"
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:146
-#: apps/web/src/app/(dashboard)/templates/[id]/edit-template.tsx:76
-#: apps/web/src/app/(recipient)/d/[token]/direct-template.tsx:60
-#: apps/web/src/components/(teams)/settings/layout/desktop-nav.tsx:43
-#: apps/web/src/components/(teams)/settings/layout/mobile-nav.tsx:51
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:166
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:77
+#: apps/web/src/app/(recipient)/d/[token]/direct-template.tsx:62
+#: apps/web/src/components/(teams)/settings/layout/desktop-nav.tsx:44
+#: apps/web/src/components/(teams)/settings/layout/mobile-nav.tsx:52
msgid "General"
msgstr "Allgemein"
+#: apps/web/src/components/(teams)/settings/layout/desktop-nav.tsx:57
+#: apps/web/src/components/(teams)/settings/layout/mobile-nav.tsx:65
+#~ msgid "Global Settings"
+#~ msgstr "Global Settings"
+
+#: apps/web/src/components/forms/team-document-settings.tsx:69
+#~ msgid "Global Team Settings Updated"
+#~ msgstr "Global Team Settings Updated"
+
#: apps/web/src/app/(profile)/p/[url]/not-found.tsx:30
#: apps/web/src/app/(recipient)/d/[token]/not-found.tsx:33
#: apps/web/src/app/(teams)/t/[teamUrl]/error.tsx:51
@@ -1650,6 +1966,14 @@ msgstr "Hier können Sie Ihre persönlichen Daten bearbeiten."
msgid "Here you can manage your password and security settings."
msgstr "Hier können Sie Ihre Passwort- und Sicherheitseinstellungen verwalten."
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/page.tsx:43
+msgid "Here you can set preferences and defaults for branding."
+msgstr "Hier können Sie Präferenzen und Voreinstellungen für das Branding festlegen."
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/page.tsx:34
+msgid "Here you can set preferences and defaults for your team."
+msgstr "Hier können Sie Präferenzen und Voreinstellungen für Ihr Team festlegen."
+
#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:206
msgid "Here's how it works:"
msgstr "So funktioniert es:"
@@ -1658,7 +1982,7 @@ msgstr "So funktioniert es:"
msgid "Hey I’m Timur"
msgstr "Hey, ich bin Timur"
-#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:208
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:189
#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:200
#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:155
msgid "Hide"
@@ -1668,9 +1992,9 @@ msgstr "Ausblenden"
msgid "Hide additional information"
msgstr "Zusätzliche Informationen ausblenden"
-#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:40
-#~ msgid "I am the owner of this document"
-#~ msgstr "I am the owner of this document"
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:43
+msgid "I am the owner of this document"
+msgstr "Ich bin der Besitzer dieses Dokuments"
#: apps/web/src/components/(dashboard)/settings/token/delete-token-dialog.tsx:186
#: apps/web/src/components/(dashboard)/settings/webhooks/delete-webhook-dialog.tsx:173
@@ -1701,10 +2025,19 @@ msgstr "Posteingang"
msgid "Inbox documents"
msgstr "Posteingang Dokumente"
+#: apps/web/src/components/forms/team-document-settings.tsx:132
+#~ msgid "Include Sender Details"
+#~ msgstr "Include Sender Details"
+
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-information.tsx:65
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-information.tsx:50
msgid "Information"
msgstr "Information"
+#: apps/web/src/app/(signing)/sign/[token]/initials-field.tsx:132
+msgid "Initials"
+msgstr "Inititalen"
+
#: apps/web/src/app/(dashboard)/admin/documents/[id]/recipient-item.tsx:78
msgid "Inserted"
msgstr "Eingefügt"
@@ -1771,6 +2104,15 @@ msgstr "Eingeladen am"
msgid "Invoice"
msgstr "Rechnung"
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/data-table.tsx:47
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:227
+msgid "IP Address"
+msgstr "IP-Adresse"
+
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:118
+msgid "It is crucial to keep your contact information, especially your email address, up to date with us. Please notify us immediately of any changes to ensure that you continue to receive all necessary communications."
+msgstr "Es ist entscheidend, dass Sie Ihre Kontaktinformationen, insbesondere Ihre E-Mail-Adresse, aktuell halten. Bitte informieren Sie uns sofort über Änderungen, damit Sie weiterhin alle notwendigen Mitteilungen erhalten."
+
#: apps/web/src/app/(profile)/p/[url]/page.tsx:134
msgid "It looks like {0} hasn't added any documents to their profile yet."
msgstr "Es sieht so aus, als ob {0} noch keine Dokumente zu ihrem Profil hinzugefügt hat."
@@ -1808,6 +2150,7 @@ msgid "Last 7 days"
msgstr "Die letzten 7 Tage"
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-information.tsx:41
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-information.tsx:38
msgid "Last modified"
msgstr "Zuletzt geändert"
@@ -1815,6 +2158,10 @@ msgstr "Zuletzt geändert"
msgid "Last updated"
msgstr "Zuletzt aktualisiert"
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:121
+msgid "Last Updated"
+msgstr "Zuletzt aktualisiert"
+
#: apps/web/src/app/(dashboard)/admin/documents/[id]/page.tsx:52
msgid "Last updated at"
msgstr "Zuletzt aktualisiert am"
@@ -1832,6 +2179,10 @@ msgstr "Verlassen"
msgid "Leave team"
msgstr "Team verlassen"
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:45
+msgid "Legality of Electronic Signatures"
+msgstr "Rechtlichkeit elektronischer Unterschriften"
+
#: apps/web/src/components/(dashboard)/common/command-menu.tsx:264
msgid "Light Mode"
msgstr "Lichtmodus"
@@ -1844,6 +2195,10 @@ msgstr "Möchten Sie Ihr eigenes öffentliches Profil mit Vereinbarungen haben?"
msgid "Link template"
msgstr "Vorlage verlinken"
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:338
+msgid "Links Generated"
+msgstr "Links generiert"
+
#: apps/web/src/app/(dashboard)/settings/webhooks/page.tsx:79
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/page.tsx:84
msgid "Listening to {0}"
@@ -1890,11 +2245,19 @@ msgstr "Verwalten Sie das Profil von {0}"
msgid "Manage all teams you are currently associated with."
msgstr "Verwalten Sie alle Teams, mit denen Sie derzeit verbunden sind."
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view.tsx:159
+msgid "Manage and view template"
+msgstr "Vorlage verwalten und anzeigen"
+
+#: apps/web/src/app/(dashboard)/settings/billing/page.tsx:136
+msgid "Manage billing"
+msgstr "Rechnungsmanagement"
+
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:341
msgid "Manage details for this public template"
msgstr "Details für diese öffentliche Vorlage verwalten"
-#: apps/web/src/app/(dashboard)/templates/[id]/template-direct-link-dialog-wrapper.tsx:33
+#: apps/web/src/app/(dashboard)/templates/[id]/template-direct-link-dialog-wrapper.tsx:35
msgid "Manage Direct Link"
msgstr "Direktlink verwalten"
@@ -1910,7 +2273,7 @@ msgstr "Passkeys verwalten"
msgid "Manage subscription"
msgstr "Abonnement verwalten"
-#: apps/web/src/app/(dashboard)/settings/billing/billing-portal-button.tsx:66
+#: apps/web/src/app/(dashboard)/settings/billing/billing-portal-button.tsx:67
msgid "Manage Subscription"
msgstr "Abonnement verwalten"
@@ -1964,12 +2327,13 @@ msgid "Member Since"
msgstr "Mitglied seit"
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/members/page.tsx:31
-#: apps/web/src/components/(teams)/settings/layout/desktop-nav.tsx:71
-#: apps/web/src/components/(teams)/settings/layout/mobile-nav.tsx:79
+#: apps/web/src/components/(teams)/settings/layout/desktop-nav.tsx:86
+#: apps/web/src/components/(teams)/settings/layout/mobile-nav.tsx:95
msgid "Members"
msgstr "Mitglieder"
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:40
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:55
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recipients.tsx:35
msgid "Modify recipients"
msgstr "Empfänger ändern"
@@ -1985,6 +2349,7 @@ msgstr "Monatlich aktive Benutzer: Benutzer, die mindestens ein Dokument erstell
msgid "Monthly Active Users: Users that had at least one of their documents completed"
msgstr "Monatlich aktive Benutzer: Benutzer, die mindestens eines ihrer Dokumente abgeschlossen haben"
+#: apps/web/src/app/(dashboard)/documents/move-document-dialog.tsx:123
#: apps/web/src/app/(dashboard)/templates/move-template-dialog.tsx:122
msgid "Move"
msgstr "Verschieben"
@@ -1997,11 +2362,12 @@ msgstr "Dokument in Team verschieben"
msgid "Move Template to Team"
msgstr "Vorlage in Team verschieben"
-#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:176
-#: apps/web/src/app/(dashboard)/templates/data-table-action-dropdown.tsx:82
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:174
+#: apps/web/src/app/(dashboard)/templates/data-table-action-dropdown.tsx:85
msgid "Move to Team"
msgstr "In Team verschieben"
+#: apps/web/src/app/(dashboard)/documents/move-document-dialog.tsx:123
#: apps/web/src/app/(dashboard)/templates/move-template-dialog.tsx:122
msgid "Moving..."
msgstr "Verschieben..."
@@ -2015,8 +2381,8 @@ msgstr "Meine Vorlagen"
#: apps/web/src/app/(dashboard)/admin/users/data-table-users.tsx:66
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:144
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table.tsx:61
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:235
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:242
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:287
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:294
#: apps/web/src/app/(signing)/sign/[token]/complete/claim-account.tsx:119
#: apps/web/src/app/(signing)/sign/[token]/name-field.tsx:170
#: apps/web/src/components/(teams)/dialogs/add-team-email-dialog.tsx:153
@@ -2046,8 +2412,8 @@ msgstr "Neuer Teamowner"
msgid "New Template"
msgstr "Neue Vorlage"
-#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:416
-#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:295
+#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:421
+#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:300
#: apps/web/src/components/forms/v2/signup.tsx:521
msgid "Next"
msgstr "Nächster"
@@ -2060,6 +2426,10 @@ msgstr "Nächstes Feld"
msgid "No active drafts"
msgstr "Keine aktiven Entwürfe"
+#: apps/web/src/app/(signing)/sign/[token]/rejected/page.tsx:99
+msgid "No further action is required from you at this time."
+msgstr "Es sind derzeit keine weiteren Maßnahmen Ihrerseits erforderlich."
+
#: apps/web/src/app/(dashboard)/documents/empty-state.tsx:34
msgid "No documents in the bin"
msgstr ""
@@ -2076,7 +2446,13 @@ msgstr "Keine Vorlagen für das öffentliche Profil gefunden"
msgid "No recent activity"
msgstr "Keine aktuellen Aktivitäten"
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:55
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:103
+msgid "No recent documents"
+msgstr "Keine aktuellen Dokumente"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:70
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recipients.tsx:49
+#: apps/web/src/components/document/document-recipient-link-copy-dialog.tsx:96
msgid "No recipients"
msgstr "Keine Empfänger"
@@ -2114,7 +2490,7 @@ msgstr "Nicht unterstützt"
msgid "Nothing to do"
msgstr "Nichts zu tun"
-#: apps/web/src/app/(signing)/sign/[token]/number-field.tsx:270
+#: apps/web/src/app/(signing)/sign/[token]/number-field.tsx:271
msgid "Number"
msgstr "Nummer"
@@ -2148,6 +2524,14 @@ msgstr "Sobald dies bestätigt ist, wird Folgendes geschehen:"
msgid "Once you have scanned the QR code or entered the code manually, enter the code provided by your authenticator app below."
msgstr "Sobald Sie den QR-Code gescannt oder den Code manuell eingegeben haben, geben Sie den von Ihrer Authentifizierungs-App bereitgestellten Code unten ein."
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:134
+msgid "Only admins can access and view the document"
+msgstr "Nur Administratoren können auf das Dokument zugreifen und es anzeigen"
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:131
+msgid "Only managers and above can access and view the document"
+msgstr "Nur Manager und darüber können auf das Dokument zugreifen und es anzeigen"
+
#: apps/web/src/app/(profile)/p/[url]/not-found.tsx:19
#: apps/web/src/app/(recipient)/d/[token]/not-found.tsx:19
#: apps/web/src/app/(teams)/t/[teamUrl]/error.tsx:37
@@ -2156,7 +2540,7 @@ msgstr "Sobald Sie den QR-Code gescannt oder den Code manuell eingegeben haben,
msgid "Oops! Something went wrong."
msgstr "Hoppla! Etwas ist schief gelaufen."
-#: apps/web/src/components/(dashboard)/avatar/stack-avatars-with-tooltip.tsx:101
+#: apps/web/src/components/(dashboard)/avatar/stack-avatars-with-tooltip.tsx:140
msgid "Opened"
msgstr "Geöffnet"
@@ -2171,12 +2555,15 @@ msgstr "Oder"
msgid "Or continue with"
msgstr "Oder fahren Sie fort mit"
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:289
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:341
msgid "Otherwise, the document will be created as a draft."
msgstr "Andernfalls wird das Dokument als Entwurf erstellt."
#: apps/web/src/app/(dashboard)/admin/documents/document-results.tsx:86
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:103
#: apps/web/src/components/(dashboard)/layout/menu-switcher.tsx:81
+#: apps/web/src/components/(teams)/tables/current-user-teams-data-table.tsx:86
+#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:109
msgid "Owner"
msgstr "Besitzer"
@@ -2208,6 +2595,10 @@ msgstr "Die Passkey wurde aktualisiert"
msgid "Passkey name"
msgstr "Passkey-Name"
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:121
+msgid "Passkey Re-Authentication"
+msgstr "Passwortwiederauthentifizierung"
+
#: apps/web/src/app/(dashboard)/settings/security/page.tsx:106
#: apps/web/src/app/(dashboard)/settings/security/passkeys/page.tsx:32
msgid "Passkeys"
@@ -2248,9 +2639,11 @@ msgstr "Zahlung ist erforderlich, um die Erstellung Ihres Teams abzuschließen."
msgid "Payment overdue"
msgstr "Zahlung überfällig"
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:115
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:131
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:211
#: apps/web/src/components/(teams)/tables/teams-member-page-data-table.tsx:82
#: apps/web/src/components/(teams)/tables/user-settings-teams-page-data-table.tsx:77
+#: apps/web/src/components/document/document-read-only-fields.tsx:89
#: apps/web/src/components/formatter/document-status.tsx:22
msgid "Pending"
msgstr "Ausstehend"
@@ -2307,11 +2700,11 @@ msgstr "Bitte kontaktieren Sie den Support, wenn Sie diese Aktion rückgängig m
msgid "Please enter a meaningful name for your token. This will help you identify it later."
msgstr "Bitte geben Sie einen aussagekräftigen Namen für Ihr Token ein. Dies wird Ihnen helfen, es später zu identifizieren."
-#: apps/web/src/app/(signing)/sign/[token]/form.tsx:134
+#: apps/web/src/app/(signing)/sign/[token]/form.tsx:135
msgid "Please mark as viewed to complete"
msgstr "Bitte als angesehen markieren, um abzuschließen"
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:457
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:459
msgid "Please note that proceeding will remove direct linking recipient and turn it into a placeholder."
msgstr "Bitte beachten Sie, dass das Fortfahren den direkten Linkempfänger entfernt und ihn in einen Platzhalter umwandelt."
@@ -2339,6 +2732,10 @@ msgstr "Bitte beachten Sie, dass Sie den Zugriff auf alle Dokumente, die mit die
msgid "Please note that you will lose access to all documents associated with this team & all the members will be removed and notified"
msgstr "Bitte beachten Sie, dass Sie den Zugriff auf alle mit diesem Team verbundenen Dokumente verlieren werden und alle Mitglieder entfernt und benachrichtigt werden."
+#: apps/web/src/app/(signing)/sign/[token]/reject-document-dialog.tsx:37
+msgid "Please provide a reason"
+msgstr "Bitte geben Sie einen Grund an"
+
#: apps/web/src/components/forms/2fa/disable-authenticator-app-dialog.tsx:127
msgid "Please provide a token from the authenticator, or a backup code. If you do not have a backup code available, please contact support."
msgstr "Bitte geben Sie ein Token von der Authentifizierungs-App oder einen Backup-Code an. Wenn Sie keinen Backup-Code haben, kontaktieren Sie bitte den Support."
@@ -2347,6 +2744,10 @@ msgstr "Bitte geben Sie ein Token von der Authentifizierungs-App oder einen Back
msgid "Please provide a token from your authenticator, or a backup code."
msgstr "Bitte geben Sie ein Token von Ihrem Authentifizierer oder einen Backup-Code an."
+#: apps/web/src/app/(signing)/sign/[token]/form.tsx:169
+msgid "Please review the document before signing."
+msgstr "Bitte überprüfen Sie das Dokument vor der Unterzeichnung."
+
#: apps/web/src/components/forms/send-confirmation-email.tsx:64
msgid "Please try again and make sure you enter the correct email address."
msgstr "Bitte versuchen Sie es erneut und stellen Sie sicher, dass Sie die korrekte E-Mail-Adresse eingeben."
@@ -2364,13 +2765,23 @@ msgid "Please type <0>{0}0> to confirm."
msgstr "Bitte geben Sie <0>{0}0> ein, um zu bestätigen."
#: apps/web/src/components/(dashboard)/common/command-menu.tsx:214
+#: apps/web/src/components/(teams)/settings/layout/desktop-nav.tsx:58
+#: apps/web/src/components/(teams)/settings/layout/mobile-nav.tsx:67
msgid "Preferences"
msgstr "Einstellungen"
-#: apps/web/src/app/(recipient)/d/[token]/direct-template.tsx:61
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:204
+msgid "Preview"
+msgstr "Vorschau"
+
+#: apps/web/src/app/(recipient)/d/[token]/direct-template.tsx:63
msgid "Preview and configure template."
msgstr "Vorschau und Vorlagen konfigurieren."
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:130
+#~ msgid "Preview: {0}"
+#~ msgstr "Preview: {0}"
+
#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:105
#: apps/web/src/components/formatter/template-type.tsx:22
msgid "Private"
@@ -2408,8 +2819,8 @@ msgstr "Öffentlich"
#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:42
#: apps/web/src/components/(dashboard)/settings/layout/desktop-nav.tsx:50
#: apps/web/src/components/(dashboard)/settings/layout/mobile-nav.tsx:53
-#: apps/web/src/components/(teams)/settings/layout/desktop-nav.tsx:57
-#: apps/web/src/components/(teams)/settings/layout/mobile-nav.tsx:65
+#: apps/web/src/components/(teams)/settings/layout/desktop-nav.tsx:72
+#: apps/web/src/components/(teams)/settings/layout/mobile-nav.tsx:81
msgid "Public Profile"
msgstr "Öffentliches Profil"
@@ -2429,10 +2840,26 @@ msgstr "Öffentliche Vorlagen sind mit Ihrem öffentlichen Profil verbunden. Än
msgid "Read only field"
msgstr "Nur-Lese-Feld"
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:90
+#: apps/web/src/components/general/signing-disclosure.tsx:21
+msgid "Read the full <0>signature disclosure0>."
+msgstr "Lesen Sie die vollständige <0>Offenlegung der Unterschrift0>."
+
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:106
msgid "Ready"
msgstr "Bereit"
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:281
+msgid "Reason"
+msgstr "Grund"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:146
+msgid "Reason for rejection:"
+msgstr "Grund für die Ablehnung:"
+
+#: apps/web/src/app/(signing)/sign/[token]/reject-document-dialog.tsx:38
+msgid "Reason must be less than 500 characters"
+msgstr "Der Grund muss weniger als 500 Zeichen lang sein"
+
#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-dialog.tsx:62
msgid "Reauthentication is required to sign this field"
msgstr "Eine erneute Authentifizierung ist erforderlich, um dieses Feld zu unterschreiben"
@@ -2442,7 +2869,12 @@ msgstr "Eine erneute Authentifizierung ist erforderlich, um dieses Feld zu unter
msgid "Recent activity"
msgstr "Aktuelle Aktivitäten"
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:47
+msgid "Recent documents"
+msgstr "Neueste Dokumente"
+
#: apps/web/src/app/(dashboard)/documents/data-table.tsx:69
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:120
#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:280
msgid "Recipient"
msgstr "Empfänger"
@@ -2452,7 +2884,9 @@ msgid "Recipient updated"
msgstr "Empfänger aktualisiert"
#: apps/web/src/app/(dashboard)/admin/documents/[id]/page.tsx:66
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:34
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:49
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recipients.tsx:30
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:139
msgid "Recipients"
msgstr "Empfänger"
@@ -2478,6 +2912,17 @@ msgstr "Wiederherstellungscodes"
msgid "Registration Successful"
msgstr "Registrierung erfolgreich"
+#: apps/web/src/app/(signing)/sign/[token]/reject-document-dialog.tsx:109
+#: apps/web/src/app/(signing)/sign/[token]/reject-document-dialog.tsx:116
+#: apps/web/src/app/(signing)/sign/[token]/reject-document-dialog.tsx:162
+msgid "Reject Document"
+msgstr "Dokument ablehnen"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:141
+#: apps/web/src/components/(dashboard)/avatar/stack-avatars-with-tooltip.tsx:101
+msgid "Rejected"
+msgstr "Abgelehnt"
+
#: apps/web/src/app/(unauthenticated)/forgot-password/page.tsx:34
msgid "Remembered your password? <0>Sign In0>"
msgstr "Haben Sie Ihr Passwort vergessen? <0>Einloggen0>"
@@ -2486,6 +2931,7 @@ msgstr "Haben Sie Ihr Passwort vergessen? <0>Einloggen0>"
#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:431
#: apps/web/src/app/(signing)/sign/[token]/signing-field-container.tsx:156
#: apps/web/src/app/(signing)/sign/[token]/signing-field-container.tsx:180
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/branding-preferences.tsx:250
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/team-email-dropdown.tsx:89
#: apps/web/src/components/(teams)/dialogs/remove-team-email-dialog.tsx:159
#: apps/web/src/components/(teams)/tables/pending-user-teams-data-table-actions.tsx:54
@@ -2529,7 +2975,7 @@ msgstr "Bestätigungs-E-Mail erneut senden"
msgid "Resend verification"
msgstr "Bestätigung erneut senden"
-#: apps/web/src/components/(teams)/forms/update-team-form.tsx:164
+#: apps/web/src/components/(teams)/forms/update-team-form.tsx:266
#: apps/web/src/components/forms/public-profile-form.tsx:267
msgid "Reset"
msgstr "Zurücksetzen"
@@ -2556,6 +3002,10 @@ msgstr "Zahlung klären"
msgid "Resolve payment"
msgstr "Zahlung klären"
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:126
+msgid "Retention of Documents"
+msgstr "Aufbewahrung von Dokumenten"
+
#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-passkey.tsx:168
msgid "Retry"
msgstr "Wiederholen"
@@ -2602,9 +3052,11 @@ msgstr "Rolle"
msgid "Roles"
msgstr "Rollen"
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:444
-#: apps/web/src/app/(signing)/sign/[token]/number-field.tsx:336
-#: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:342
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:446
+#: apps/web/src/app/(signing)/sign/[token]/number-field.tsx:337
+#: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:344
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/branding-preferences.tsx:312
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:232
msgid "Save"
msgstr "Speichern"
@@ -2623,6 +3075,10 @@ msgstr "Nach Dokumenttitel suchen"
msgid "Search by name or email"
msgstr "Nach Name oder E-Mail suchen"
+#: apps/web/src/components/(dashboard)/document-search/document-search.tsx:42
+msgid "Search documents..."
+msgstr "Dokumente suchen..."
+
#: apps/web/src/app/(dashboard)/settings/webhooks/[id]/page.tsx:189
#: apps/web/src/components/(dashboard)/settings/webhooks/create-webhook-dialog.tsx:217
msgid "Secret"
@@ -2671,10 +3127,15 @@ msgstr "Passkey auswählen"
msgid "Send confirmation email"
msgstr "Bestätigungs-E-Mail senden"
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:273
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:326
msgid "Send document"
msgstr "Dokument senden"
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:188
+#: apps/web/src/components/(teams)/forms/update-team-form.tsx:220
+msgid "Send on Behalf of Team"
+msgstr "Im Namen des Teams senden"
+
#: apps/web/src/app/(dashboard)/documents/_action-items/resend-document.tsx:191
msgid "Send reminder"
msgstr "Erinnerung senden"
@@ -2691,7 +3152,8 @@ msgstr "Zurücksetzungs-E-Mail wird gesendet..."
msgid "Sending..."
msgstr "Senden..."
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:85
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:101
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:248
msgid "Sent"
msgstr "Gesendet"
@@ -2710,13 +3172,13 @@ msgstr "Einstellungen"
msgid "Setup"
msgstr "Einrichten"
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:145
-#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:212
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:148
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:193
msgid "Share"
msgstr "Teilen"
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:161
-#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:224
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:179
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:219
msgid "Share Signing Card"
msgstr "Signaturkarte teilen"
@@ -2738,34 +3200,35 @@ msgstr "Vorlagen in Ihrem Team-Öffentliches Profil anzeigen, damit Ihre Zielgru
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-button.tsx:83
#: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:114
-#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:141
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:139
#: apps/web/src/app/(profile)/p/[url]/page.tsx:192
+#: apps/web/src/app/(signing)/sign/[token]/auto-sign.tsx:229
#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-2fa.tsx:182
#: apps/web/src/app/(signing)/sign/[token]/name-field.tsx:224
#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:124
-#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:259
+#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:256
#: apps/web/src/components/ui/user-profile-skeleton.tsx:75
#: apps/web/src/components/ui/user-profile-timur.tsx:81
msgid "Sign"
msgstr "Unterzeichnen"
-#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:219
+#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:217
msgid "Sign as {0} <0>({1})0>"
msgstr "Unterzeichnen als {0} <0>({1})0>"
-#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:219
-#~ msgid "Sign as <0>{0} <1>({1})1>0>"
-#~ msgstr "Sign as <0>{0} <1>({1})1>0>"
-
#: apps/web/src/app/(signing)/sign/[token]/name-field.tsx:183
msgid "Sign as<0>{0} <1>({1})1>0>"
msgstr "Unterzeichnen als<0>{0} <1>({1})1>0>"
-#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:329
-#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:209
+#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:330
+#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:210
msgid "Sign document"
msgstr "Dokument unterschreiben"
+#: apps/web/src/app/(signing)/sign/[token]/form.tsx:128
+msgid "Sign Document"
+msgstr "Dokument unterzeichnen"
+
#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-dialog.tsx:59
msgid "Sign field"
msgstr "Unterzeichnen-Feld"
@@ -2790,8 +3253,8 @@ msgstr "Melden Sie sich bei Ihrem Konto an"
msgid "Sign Out"
msgstr "Ausloggen"
-#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:350
-#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:230
+#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:351
+#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:231
msgid "Sign the document to complete the process."
msgstr "Unterschreiben Sie das Dokument, um den Vorgang abzuschließen."
@@ -2814,15 +3277,21 @@ msgid "Sign Up with OIDC"
msgstr "Registrieren mit OIDC"
#: apps/web/src/app/(dashboard)/admin/documents/[id]/recipient-item.tsx:88
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:177
#: apps/web/src/app/(recipient)/d/[token]/sign-direct-template.tsx:338
-#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:197
-#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:227
-#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:391
-#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:270
+#: apps/web/src/app/(signing)/sign/[token]/form.tsx:192
+#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:195
+#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:225
+#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:392
+#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:271
#: apps/web/src/components/forms/profile.tsx:132
msgid "Signature"
msgstr "Unterschrift"
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:220
+msgid "Signature ID"
+msgstr "Signatur-ID"
+
#: apps/web/src/app/(dashboard)/admin/stats/page.tsx:123
msgid "Signatures Collected"
msgstr "Gesammelte Unterschriften"
@@ -2831,15 +3300,38 @@ msgstr "Gesammelte Unterschriften"
msgid "Signatures will appear once the document has been completed"
msgstr "Unterschriften erscheinen, sobald das Dokument abgeschlossen ist"
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:98
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:114
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:270
+#: apps/web/src/components/document/document-read-only-fields.tsx:84
msgid "Signed"
msgstr "Unterzeichnet"
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:176
+msgid "Signer Events"
+msgstr "Signer-Ereignisse"
+
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:168
+msgid "Signing Certificate"
+msgstr "Unterzeichnungszertifikat"
+
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:303
+msgid "Signing certificate provided by"
+msgstr "Unterzeichnungszertifikat bereitgestellt von"
+
#: apps/web/src/components/forms/signin.tsx:383
#: apps/web/src/components/forms/signin.tsx:510
msgid "Signing in..."
msgstr "Anmeldung..."
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:160
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:203
+msgid "Signing Links"
+msgstr "Signierlinks"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:339
+msgid "Signing links have been generated for this document."
+msgstr "Unterzeichnungslinks wurden für dieses Dokument erstellt."
+
#: apps/web/src/components/forms/signup.tsx:235
msgid "Signing up..."
msgstr "Registrierung..."
@@ -2859,15 +3351,15 @@ msgstr "Website Einstellungen"
#: apps/web/src/app/(dashboard)/documents/_action-items/resend-document.tsx:105
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-button.tsx:63
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:88
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:91
#: apps/web/src/app/(dashboard)/documents/[id]/logs/download-audit-log-button.tsx:65
-#: apps/web/src/app/(dashboard)/documents/[id]/logs/download-certificate-button.tsx:66
+#: apps/web/src/app/(dashboard)/documents/[id]/logs/download-certificate-button.tsx:68
#: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:75
-#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:108
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:106
#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:80
#: apps/web/src/app/(dashboard)/documents/duplicate-document-dialog.tsx:72
#: apps/web/src/app/(dashboard)/settings/billing/billing-plans.tsx:62
-#: apps/web/src/app/(dashboard)/settings/billing/billing-portal-button.tsx:50
+#: apps/web/src/app/(dashboard)/settings/billing/billing-portal-button.tsx:51
#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:124
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:73
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:93
@@ -2879,10 +3371,11 @@ msgstr "Website Einstellungen"
#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:104
#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:127
#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:151
-#: apps/web/src/app/(recipient)/d/[token]/direct-template.tsx:117
+#: apps/web/src/app/(recipient)/d/[token]/direct-template.tsx:118
#: apps/web/src/app/(recipient)/d/[token]/signing-auth-page.tsx:27
#: apps/web/src/app/(signing)/sign/[token]/signing-auth-page.tsx:38
#: apps/web/src/app/(teams)/t/[teamUrl]/layout-billing-banner.tsx:53
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/branding-preferences.tsx:107
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/team-email-dropdown.tsx:39
#: apps/web/src/app/(unauthenticated)/verify-email/[token]/page.tsx:61
#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:243
@@ -2919,6 +3412,10 @@ msgstr "Etwas ist schiefgelaufen beim Senden der Bestätigungs-E-Mail."
msgid "Something went wrong while updating the team billing subscription, please contact support."
msgstr "Etwas ist schiefgelaufen beim Aktualisieren des Abonnements für die Team-Zahlung. Bitte kontaktieren Sie den Support."
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:96
+msgid "Something went wrong!"
+msgstr "Etwas ist schiefgelaufen!"
+
#: apps/web/src/app/(dashboard)/settings/security/passkeys/create-passkey-dialog.tsx:240
#: apps/web/src/components/forms/2fa/view-recovery-codes-dialog.tsx:154
msgid "Something went wrong. Please try again or contact support."
@@ -2928,10 +3425,14 @@ msgstr "Etwas ist schiefgelaufen. Bitte versuchen Sie es erneut oder kontaktiere
msgid "Sorry, we were unable to download the audit logs. Please try again later."
msgstr "Entschuldigung, wir konnten die Prüfprotokolle nicht herunterladen. Bitte versuchen Sie es später erneut."
-#: apps/web/src/app/(dashboard)/documents/[id]/logs/download-certificate-button.tsx:68
+#: apps/web/src/app/(dashboard)/documents/[id]/logs/download-certificate-button.tsx:70
msgid "Sorry, we were unable to download the certificate. Please try again later."
msgstr "Entschuldigung, wir konnten das Zertifikat nicht herunterladen. Bitte versuchen Sie es später erneut."
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:138
+msgid "Source"
+msgstr "Quelle"
+
#: apps/web/src/app/(dashboard)/admin/nav.tsx:37
msgid "Stats"
msgstr "Statistiken"
@@ -2939,11 +3440,13 @@ msgstr "Statistiken"
#: apps/web/src/app/(dashboard)/admin/documents/document-results.tsx:81
#: apps/web/src/app/(dashboard)/admin/subscriptions/page.tsx:32
#: apps/web/src/app/(dashboard)/documents/data-table.tsx:79
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:130
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:93
#: apps/web/src/components/(teams)/tables/team-billing-invoices-data-table.tsx:73
msgid "Status"
msgstr "Status"
-#: apps/web/src/app/(dashboard)/settings/billing/billing-plans.tsx:128
+#: apps/web/src/app/(dashboard)/settings/billing/billing-plans.tsx:129
msgid "Subscribe"
msgstr "Abonnieren"
@@ -2977,7 +3480,7 @@ msgstr "Abonnements"
#: apps/web/src/components/(teams)/dialogs/transfer-team-dialog.tsx:108
#: apps/web/src/components/(teams)/dialogs/update-team-email-dialog.tsx:79
#: apps/web/src/components/(teams)/dialogs/update-team-member-dialog.tsx:92
-#: apps/web/src/components/(teams)/forms/update-team-form.tsx:68
+#: apps/web/src/components/(teams)/forms/update-team-form.tsx:106
#: apps/web/src/components/(teams)/tables/pending-user-teams-data-table-actions.tsx:27
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:62
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:79
@@ -2991,6 +3494,10 @@ msgstr "Erfolg"
msgid "Successfully created passkey"
msgstr "Passkey erfolgreich erstellt"
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:57
+msgid "System Requirements"
+msgstr "Systemanforderungen"
+
#: apps/web/src/components/(dashboard)/common/command-menu.tsx:266
msgid "System Theme"
msgstr "Systemthema"
@@ -3004,8 +3511,8 @@ msgstr "Team"
msgid "Team checkout"
msgstr "Teameinkaufs-Prüfung"
-#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:61
-#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:140
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:67
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:146
msgid "Team email"
msgstr "Team E-Mail"
@@ -3048,7 +3555,7 @@ msgid "Team Member"
msgstr "Teammitglied"
#: apps/web/src/components/(teams)/dialogs/create-team-dialog.tsx:166
-#: apps/web/src/components/(teams)/forms/update-team-form.tsx:113
+#: apps/web/src/components/(teams)/forms/update-team-form.tsx:153
msgid "Team Name"
msgstr "Teamname"
@@ -3072,6 +3579,10 @@ msgstr "Team-Eigentumsübertragung bereits abgeschlossen!"
msgid "Team ownership transferred!"
msgstr "Team-Eigentum übertragen!"
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/page.tsx:33
+msgid "Team Preferences"
+msgstr "Teampräferenzen"
+
#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:49
msgid "Team Public Profile"
msgstr "Öffentliches Profil des Teams"
@@ -3097,7 +3608,7 @@ msgid "Team transfer request expired"
msgstr "Der Antrag auf Teamübertragung ist abgelaufen"
#: apps/web/src/components/(teams)/dialogs/create-team-dialog.tsx:196
-#: apps/web/src/components/(teams)/forms/update-team-form.tsx:129
+#: apps/web/src/components/(teams)/forms/update-team-form.tsx:169
msgid "Team URL"
msgstr "Team-URL"
@@ -3111,204 +3622,223 @@ msgstr "Teams"
#: apps/web/src/app/(teams)/t/[teamUrl]/layout-billing-banner.tsx:83
msgid "Teams restricted"
-msgstr "Teams restricted"
+msgstr "Teams beschränkt"
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/template-edit-page-view.tsx:63
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:39
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:148
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:228
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view.tsx:146
#: apps/web/src/components/(teams)/dialogs/invite-team-member-dialog.tsx:408
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:271
msgid "Template"
-msgstr "Template"
+msgstr "Vorlage"
#: apps/web/src/app/(dashboard)/templates/delete-template-dialog.tsx:41
msgid "Template deleted"
-msgstr "Template deleted"
+msgstr "Vorlage gelöscht"
#: apps/web/src/app/(dashboard)/templates/new-template-dialog.tsx:67
msgid "Template document uploaded"
-msgstr "Template document uploaded"
+msgstr "Vorlagendokument hochgeladen"
#: apps/web/src/app/(dashboard)/templates/duplicate-template-dialog.tsx:42
msgid "Template duplicated"
-msgstr "Template duplicated"
+msgstr "Vorlage dupliziert"
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:134
msgid "Template has been removed from your public profile."
-msgstr "Template has been removed from your public profile."
+msgstr "Vorlage ist von Deinem öffentlichen Profil entfernt worden."
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:171
msgid "Template has been updated."
-msgstr "Template has been updated."
+msgstr "Vorlage wurde aktualisiert."
#: apps/web/src/app/(dashboard)/templates/move-template-dialog.tsx:48
msgid "Template moved"
-msgstr "Template moved"
+msgstr "Vorlage verschoben"
-#: apps/web/src/app/(dashboard)/templates/[id]/edit-template.tsx:219
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:223
msgid "Template saved"
-msgstr "Template saved"
+msgstr "Vorlage gespeichert"
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view.tsx:60
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view.tsx:87
#: apps/web/src/app/(dashboard)/templates/templates-page-view.tsx:55
#: apps/web/src/components/(dashboard)/common/command-menu.tsx:208
#: apps/web/src/components/(dashboard)/layout/desktop-nav.tsx:22
#: apps/web/src/components/(dashboard)/layout/mobile-navigation.tsx:39
msgid "Templates"
-msgstr "Templates"
+msgstr "Vorlagen"
#: apps/web/src/app/(dashboard)/templates/new-template-dialog.tsx:106
msgid "Templates allow you to quickly generate documents with pre-filled recipients and fields."
-msgstr "Templates allow you to quickly generate documents with pre-filled recipients and fields."
+msgstr "Vorlagen erlauben dir das schnelle Erstlelen von Dokumenten mit vorausgefüllten Empfängern und Feldern."
-#: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:256
-#: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:272
+#: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:257
+#: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:274
msgid "Text"
msgstr "Text"
#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:166
msgid "Text Color"
-msgstr "Text Color"
+msgstr "Textfarbe"
+
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:24
+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."
+msgstr "Vielen Dank, dass Sie Documenso zur elektronischen Unterzeichnung Ihrer Dokumente verwenden. Der Zweck dieser Offenlegung besteht darin, Sie über den Prozess, die Rechtmäßigkeit und Ihre Rechte in Bezug auf die Verwendung elektronischer Unterschriften auf unserer Plattform zu informieren. Indem Sie sich entscheiden, eine elektronische Unterschrift zu verwenden, stimmen Sie den nachfolgend dargelegten Bedingungen zu."
#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:52
msgid "The account has been deleted successfully."
-msgstr "The account has been deleted successfully."
+msgstr "Das Konto wurde erfolgreich gelöscht."
#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:197
msgid "The content to show in the banner, HTML is allowed"
-msgstr "The content to show in the banner, HTML is allowed"
+msgstr "Der Inhalt, der im Banne rgezeig wird, HTML ist erlaubt"
#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:78
#: apps/web/src/app/(dashboard)/templates/template-direct-link-badge.tsx:32
#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:164
msgid "The direct link has been copied to your clipboard"
-msgstr "The direct link has been copied to your clipboard"
+msgstr "Der direkte Linkt wurde in die Zwischenablage kopiert"
#: apps/web/src/app/(dashboard)/documents/move-document-dialog.tsx:50
msgid "The document has been successfully moved to the selected team."
-msgstr "The document has been successfully moved to the selected team."
+msgstr "Das Dokument wurde erfolgreich in das ausgewählte Team verschoben."
#: apps/web/src/app/embed/completed.tsx:29
msgid "The document is now completed, please follow any instructions provided within the parent application."
msgstr "Das Dokument ist jetzt abgeschlossen. Bitte folgen Sie allen Anweisungen, die in der übergeordneten Anwendung bereitgestellt werden."
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:159
+#: apps/web/src/app/(signing)/sign/[token]/rejected/page.tsx:92
+msgid "The document owner has been notified of your decision. They may contact you with further instructions if necessary."
+msgstr "Der Dokumenteneigentümer wurde über Ihre Entscheidung informiert. Er kann Sie bei Bedarf mit weiteren Anweisungen kontaktieren."
+
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:182
msgid "The document was created but could not be sent to recipients."
-msgstr "The document was created but could not be sent to recipients."
+msgstr "Das Dokument wurde erstellt, konnte aber nicht an die Empfänger versendet werden."
#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:161
msgid "The document will be hidden from your account"
-msgstr "The document will be hidden from your account"
+msgstr "Das Dokument wird von Ihrem Konto verborgen werden"
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:281
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:334
msgid "The document will be immediately sent to recipients if this is checked."
-msgstr "The document will be immediately sent to recipients if this is checked."
+msgstr "Das Dokument wird sofort an die Empfänger gesendet, wenn dies angehakt ist."
#: apps/web/src/app/(dashboard)/settings/webhooks/[id]/page.tsx:175
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/[id]/page.tsx:179
#: apps/web/src/components/(dashboard)/settings/webhooks/create-webhook-dialog.tsx:203
msgid "The events that will trigger a webhook to be sent to your URL."
-msgstr "The events that will trigger a webhook to be sent to your URL."
+msgstr "Die Ereignisse, die einen Webhook auslösen, der an Ihre URL gesendet wird."
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/documents/page.tsx:27
+#~ msgid "The global settings for the documents in your team account."
+#~ msgstr "The global settings for the documents in your team account."
#: apps/web/src/app/(unauthenticated)/team/verify/transfer/[token]/page.tsx:114
msgid "The ownership of team <0>{0}0> has been successfully transferred to you."
-msgstr "The ownership of team <0>{0}0> has been successfully transferred to you."
+msgstr "Die Inhaberschaft des Teams <0>{0}0> wurde erfolgreich auf Sie übertragen."
#: apps/web/src/components/partials/not-found.tsx:53
msgid "The page you are looking for was moved, removed, renamed or might never have existed."
-msgstr "The page you are looking for was moved, removed, renamed or might never have existed."
+msgstr "Die Seite, die Sie suchen, wurde verschoben, entfernt, umbenannt oder hat möglicherweise nie existiert."
#: apps/web/src/components/forms/public-profile-form.tsx:118
msgid "The profile link has been copied to your clipboard"
-msgstr "The profile link has been copied to your clipboard"
+msgstr "Der Profil-Link wurde in die Zwischenablage kopiert"
#: apps/web/src/app/(profile)/p/[url]/not-found.tsx:23
msgid "The profile you are looking for could not be found."
-msgstr "The profile you are looking for could not be found."
+msgstr "Das Profil, nach dem Sie suchen, konnte nicht gefunden werden."
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:380
msgid "The public description that will be displayed with this template"
-msgstr "The public description that will be displayed with this template"
+msgstr "Die öffentliche Beschreibung, die mit dieser Vorlage angezeigt wird"
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:358
msgid "The public name for your template"
-msgstr "The public name for your template"
+msgstr "Der öffentliche Name für Ihre Vorlage"
#: apps/web/src/app/(dashboard)/admin/documents/[id]/recipient-item.tsx:119
msgid "The recipient has been updated successfully"
-msgstr "The recipient has been updated successfully"
+msgstr "Der Empfänger wurde erfolgreich aktualisiert"
#: apps/web/src/components/(teams)/dialogs/transfer-team-dialog.tsx:267
msgid "The selected team member will receive an email which they must accept before the team is transferred"
-msgstr "The selected team member will receive an email which they must accept before the team is transferred"
+msgstr "Das ausgewählte Teammitglied erhält eine E-Mail, die es akzeptieren muss, bevor das Team übertragen wird"
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:163
#: apps/web/src/components/(dashboard)/avatar/avatar-with-recipient.tsx:41
+#: apps/web/src/components/document/document-recipient-link-copy-dialog.tsx:118
msgid "The signing link has been copied to your clipboard."
-msgstr "The signing link has been copied to your clipboard."
+msgstr "Der Signierlink wurde in die Zwischenablage kopiert."
#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:105
msgid "The site banner is a message that is shown at the top of the site. It can be used to display important information to your users."
-msgstr "The site banner is a message that is shown at the top of the site. It can be used to display important information to your users."
+msgstr "Das Seitenbanner ist eine Nachricht, die oben auf der Seite angezeigt wird. Es kann verwendet werden, um Ihren Nutzern wichtige Informationen anzuzeigen."
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/team-transfer-status.tsx:45
msgid "The team transfer invitation has been successfully deleted."
-msgstr "The team transfer invitation has been successfully deleted."
+msgstr "Die Einladung zur Teamübertragung wurde erfolgreich gelöscht."
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/team-transfer-status.tsx:86
msgid "The team transfer request to <0>{0}0> has expired."
-msgstr "The team transfer request to <0>{0}0> has expired."
+msgstr "Die Teamübertragungsanfrage an <0>{0}0> ist abgelaufen."
#: apps/web/src/app/(teams)/t/[teamUrl]/not-found.tsx:23
msgid "The team you are looking for may have been removed, renamed or may have never existed."
-msgstr "The team you are looking for may have been removed, renamed or may have never existed."
+msgstr "Das Team, das Sie suchen, wurde möglicherweise entfernt, umbenannt oder hat möglicherweise nie existiert."
#: apps/web/src/app/(dashboard)/templates/move-template-dialog.tsx:49
msgid "The template has been successfully moved to the selected team."
-msgstr "The template has been successfully moved to the selected team."
+msgstr "Die Vorlage wurde erfolgreich in das ausgewählte Team verschoben."
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:443
msgid "The template will be removed from your profile"
-msgstr "The template will be removed from your profile"
+msgstr "Die Vorlage wird von Ihrem Profil entfernt"
#: apps/web/src/app/(recipient)/d/[token]/not-found.tsx:23
msgid "The template you are looking for may have been disabled, deleted or may have never existed."
-msgstr "The template you are looking for may have been disabled, deleted or may have never existed."
+msgstr "Die Vorlage, die Sie suchen, wurde möglicherweise deaktiviert, gelöscht oder hat möglicherweise nie existiert."
#: apps/web/src/components/forms/token.tsx:106
msgid "The token was copied to your clipboard."
-msgstr "The token was copied to your clipboard."
+msgstr "Der Token wurde in die Zwischenablage kopiert."
#: apps/web/src/components/(dashboard)/settings/token/delete-token-dialog.tsx:88
msgid "The token was deleted successfully."
-msgstr "The token was deleted successfully."
+msgstr "Das Token wurde erfolgreich gelöscht."
#: apps/web/src/app/(unauthenticated)/reset-password/page.tsx:24
msgid "The token you have used to reset your password is either expired or it never existed. If you have still forgotten your password, please request a new reset link."
-msgstr "The token you have used to reset your password is either expired or it never existed. If you have still forgotten your password, please request a new reset link."
+msgstr "Der Token, den Sie zur Zurücksetzung Ihres Passworts verwendet haben, ist entweder abgelaufen oder hat nie existiert. Wenn Sie Ihr Passwort immer noch vergessen haben, fordern Sie bitte einen neuen Zurücksetzungslink an."
#: apps/web/src/app/(dashboard)/settings/webhooks/[id]/page.tsx:124
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/[id]/page.tsx:128
#: apps/web/src/components/(dashboard)/settings/webhooks/create-webhook-dialog.tsx:152
msgid "The URL for Documenso to send webhook events to."
-msgstr "The URL for Documenso to send webhook events to."
+msgstr "Die URL für Documenso, um Webhook-Ereignisse zu senden."
#: apps/web/src/components/(dashboard)/settings/webhooks/delete-webhook-dialog.tsx:79
msgid "The webhook has been successfully deleted."
-msgstr "The webhook has been successfully deleted."
+msgstr "Das Webhook wurde erfolgreich gelöscht."
#: apps/web/src/app/(dashboard)/settings/webhooks/[id]/page.tsx:75
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/[id]/page.tsx:81
msgid "The webhook has been updated successfully."
-msgstr "The webhook has been updated successfully."
+msgstr "Der Webhook wurde erfolgreich aktualisiert."
#: apps/web/src/components/(dashboard)/settings/webhooks/create-webhook-dialog.tsx:93
msgid "The webhook was successfully created."
-msgstr "The webhook was successfully created."
+msgstr "Der Webhook wurde erfolgreich erstellt."
#: apps/web/src/app/(dashboard)/documents/empty-state.tsx:25
msgid "There are no active drafts at the current moment. You can upload a document to start drafting."
-msgstr "There are no active drafts at the current moment. You can upload a document to start drafting."
+msgstr "Es gibt derzeit keine aktiven Entwürfe. Sie können ein Dokument hochladen, um mit dem Entwerfen zu beginnen."
#: apps/web/src/app/(dashboard)/documents/empty-state.tsx:20
msgid "There are no completed documents yet. Documents that you have created or received will appear here once completed."
-msgstr "There are no completed documents yet. Documents that you have created or received will appear here once completed."
+msgstr "Es gibt noch keine abgeschlossenen Dokumente. Dokumente, die Sie erstellt oder erhalten haben, werden hier angezeigt, sobald sie abgeschlossen sind."
#: apps/web/src/app/(dashboard)/documents/empty-state.tsx:35
msgid "There are no documents in the bin."
@@ -3316,156 +3846,174 @@ msgstr ""
#: apps/web/src/app/(dashboard)/settings/teams/team-email-usage.tsx:70
msgid "They have permission on your behalf to:"
-msgstr "They have permission on your behalf to:"
+msgstr "Sie haben in Ihrem Namen die Erlaubnis, zu:"
#: apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx:110
#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:110
#: apps/web/src/app/(dashboard)/settings/profile/delete-account-dialog.tsx:109
msgid "This action is not reversible. Please be certain."
-msgstr "This action is not reversible. Please be certain."
+msgstr "Diese Aktion ist nicht umkehrbar. Bitte seien Sie sicher."
#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:81
msgid "This document could not be deleted at this time. Please try again."
-msgstr "This document could not be deleted at this time. Please try again."
+msgstr "Dieses Dokument konnte derzeit nicht gelöscht werden. Bitte versuchen Sie es erneut."
#: apps/web/src/app/(dashboard)/documents/duplicate-document-dialog.tsx:73
msgid "This document could not be duplicated at this time. Please try again."
-msgstr "This document could not be duplicated at this time. Please try again."
+msgstr "Dieses Dokument konnte derzeit nicht dupliziert werden. Bitte versuche es erneut."
#: apps/web/src/app/(dashboard)/documents/_action-items/resend-document.tsx:106
msgid "This document could not be re-sent at this time. Please try again."
-msgstr "This document could not be re-sent at this time. Please try again."
+msgstr "Dieses Dokument konnte zu diesem Zeitpunkt nicht erneut gesendet werden. Bitte versuchen Sie es erneut."
#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:180
msgid "This document has been cancelled by the owner and is no longer available for others to sign."
-msgstr "This document has been cancelled by the owner and is no longer available for others to sign."
+msgstr "Dieses Dokument wurde vom Eigentümer storniert und steht anderen nicht mehr zur Unterzeichnung zur Verfügung."
#: apps/web/src/app/(signing)/sign/[token]/no-longer-available.tsx:52
msgid "This document has been cancelled by the owner."
-msgstr "This document has been cancelled by the owner."
+msgstr "Dieses Dokument wurde vom Eigentümer storniert."
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:219
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:224
msgid "This document has been signed by all recipients"
-msgstr "This document has been signed by all recipients"
+msgstr "Dieses Dokument wurde von allen Empfängern unterschrieben"
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:222
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:227
msgid "This document is currently a draft and has not been sent"
-msgstr "This document is currently a draft and has not been sent"
+msgstr "Dieses Dokument ist momentan ein Entwurf und wurde nicht gesendet"
+
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:152
+msgid "This document was created by you or a team member using the template above."
+msgstr "Dieses Dokument wurde von Ihnen oder einem Teammitglied unter Verwendung der oben genannten Vorlage erstellt."
+
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:164
+msgid "This document was created using a direct link."
+msgstr "Dieses Dokument wurde mit einem direkten Link erstellt."
#: apps/web/src/components/(teams)/dialogs/add-team-email-dialog.tsx:93
msgid "This email is already being used by another team."
-msgstr "This email is already being used by another team."
+msgstr "Diese E-Mail-Adresse wird bereits von einem anderen Team verwendet."
#: apps/web/src/app/(unauthenticated)/team/verify/transfer/[token]/page.tsx:40
msgid "This link is invalid or has expired. Please contact your team to resend a transfer request."
-msgstr "This link is invalid or has expired. Please contact your team to resend a transfer request."
+msgstr "Dieser Link ist ungültig oder abgelaufen. Bitte kontaktieren Sie Ihr Team, um eine erneute Überweisungsanfrage zu senden."
#: apps/web/src/app/(unauthenticated)/team/verify/email/[token]/page.tsx:37
msgid "This link is invalid or has expired. Please contact your team to resend a verification."
-msgstr "This link is invalid or has expired. Please contact your team to resend a verification."
+msgstr "Dieser Link ist ungültig oder abgelaufen. Bitte kontaktieren Sie Ihr Team, um eine neue Bestätigungsanfrage zu senden."
#: apps/web/src/app/(dashboard)/settings/security/passkeys/create-passkey-dialog.tsx:208
msgid "This passkey has already been registered."
-msgstr "This passkey has already been registered."
+msgstr "Dieser Zugangsschlüssel wurde bereits registriert."
#: apps/web/src/components/forms/signin.tsx:200
msgid "This passkey is not configured for this application. Please login and add one in the user settings."
-msgstr "This passkey is not configured for this application. Please login and add one in the user settings."
+msgstr "Dieser Passkey ist für diese Anwendung nicht konfiguriert. Bitte melden Sie sich an und fügen Sie einen in den Benutzereinstellungen hinzu."
#: apps/web/src/components/(teams)/dialogs/create-team-checkout-dialog.tsx:148
msgid "This price includes minimum 5 seats."
-msgstr "This price includes minimum 5 seats."
+msgstr "Dieser Preis beinhaltet mindestens 5 Plätze."
#: apps/web/src/components/forms/signin.tsx:202
msgid "This session has expired. Please try again."
-msgstr "This session has expired. Please try again."
+msgstr "Diese Sitzung ist abgelaufen. Bitte versuchen Sie es erneut."
-#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:195
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:201
msgid "This team, and any associated data excluding billing invoices will be permanently deleted."
-msgstr "This team, and any associated data excluding billing invoices will be permanently deleted."
+msgstr "Dieses Team und alle zugehörigen Daten, ausgenommen Rechnungen, werden permanent gelöscht."
#: apps/web/src/app/(dashboard)/templates/delete-template-dialog.tsx:51
msgid "This template could not be deleted at this time. Please try again."
-msgstr "This template could not be deleted at this time. Please try again."
+msgstr "Diese Vorlage konnte derzeit nicht gelöscht werden. Bitte versuchen Sie es erneut."
#: apps/web/src/app/(unauthenticated)/team/decline/[token]/page.tsx:43
msgid "This token is invalid or has expired. No action is needed."
-msgstr "This token is invalid or has expired. No action is needed."
+msgstr "Dieses Token ist ungültig oder abgelaufen. Es sind keine weiteren Maßnahmen erforderlich."
#: apps/web/src/app/(unauthenticated)/team/invite/[token]/page.tsx:43
msgid "This token is invalid or has expired. Please contact your team for a new invitation."
-msgstr "This token is invalid or has expired. Please contact your team for a new invitation."
+msgstr "Dieser Token ist ungültig oder abgelaufen. Bitte kontaktieren Sie Ihr Team für eine neue Einladung."
#: apps/web/src/components/(teams)/dialogs/create-team-dialog.tsx:98
-#: apps/web/src/components/(teams)/forms/update-team-form.tsx:87
+#: apps/web/src/components/(teams)/forms/update-team-form.tsx:127
msgid "This URL is already in use."
-msgstr "This URL is already in use."
+msgstr "Diese URL wird bereits verwendet."
#: apps/web/src/components/forms/v2/signup.tsx:145
msgid "This username has already been taken"
-msgstr "This username has already been taken"
+msgstr "Dieser Benutzername ist bereits vergeben"
#: apps/web/src/components/forms/public-profile-claim-dialog.tsx:98
msgid "This username is already taken"
-msgstr "This username is already taken"
+msgstr "Dieser Benutzername ist bereits vergeben"
-#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-data-table.tsx:77
+#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-data-table.tsx:73
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/data-table.tsx:44
msgid "Time"
-msgstr "Time"
+msgstr "Zeit"
#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-page-view.tsx:97
msgid "Time zone"
-msgstr "Time zone"
+msgstr "Zeitzone"
+
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:131
+msgid "Time Zone"
+msgstr "Zeitzone"
#: apps/web/src/app/(dashboard)/admin/documents/document-results.tsx:67
#: apps/web/src/app/(dashboard)/documents/data-table.tsx:60
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:115
#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:61
msgid "Title"
-msgstr "Title"
+msgstr "Titel"
#: apps/web/src/app/(unauthenticated)/team/invite/[token]/page.tsx:106
msgid "To accept this invitation you must create an account."
-msgstr "To accept this invitation you must create an account."
+msgstr "Um diese Einladung anzunehmen, müssen Sie ein Konto erstellen."
#: apps/web/src/components/(teams)/dialogs/update-team-email-dialog.tsx:125
msgid "To change the email you must remove and add a new email address."
-msgstr "To change the email you must remove and add a new email address."
+msgstr "Um die E-Mail zu ändern, müssen Sie die aktuelle entfernen und eine neue hinzufügen."
#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:117
msgid "To confirm, please enter the accounts email address <0/>({0})."
-msgstr "To confirm, please enter the accounts email address <0/>({0})."
+msgstr "Um zu bestätigen, geben Sie bitte die E-Mail-Adresse des Kontos <0/>({0}) ein."
#: apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx:117
msgid "To confirm, please enter the reason"
-msgstr "To confirm, please enter the reason"
+msgstr "Um zu bestätigen, geben Sie bitte den Grund ein"
#: apps/web/src/app/(unauthenticated)/team/decline/[token]/page.tsx:101
msgid "To decline this invitation you must create an account."
-msgstr "To decline this invitation you must create an account."
+msgstr "Um diese Einladung abzulehnen, müssen Sie ein Konto erstellen."
#: apps/web/src/components/forms/2fa/enable-authenticator-app-dialog.tsx:197
msgid "To enable two-factor authentication, scan the following QR code using your authenticator app."
-msgstr "To enable two-factor authentication, scan the following QR code using your authenticator app."
+msgstr "Um die Zwei-Faktor-Authentifizierung zu aktivieren, scannen Sie den folgenden QR-Code mit Ihrer Authentifizierungs-App."
#: apps/web/src/app/(unauthenticated)/unverified-account/page.tsx:23
msgid "To gain access to your account, please confirm your email address by clicking on the confirmation link from your inbox."
-msgstr "To gain access to your account, please confirm your email address by clicking on the confirmation link from your inbox."
+msgstr "Um Zugang zu Ihrem Konto zu erhalten, bestätigen Sie bitte Ihre E-Mail-Adresse, indem Sie auf den Bestätigungslink in Ihrem Posteingang klicken."
#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-account.tsx:54
msgid "To mark this document as viewed, you need to be logged in as <0>{0}0>"
-msgstr "To mark this document as viewed, you need to be logged in as <0>{0}0>"
+msgstr "Um dieses Dokument als angesehen zu markieren, müssen Sie als <0>{0}0> angemeldet sein"
+
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:60
+msgid "To use our electronic signature service, you must have access to:"
+msgstr "Um unseren elektronischen Signaturdienst nutzen zu können, müssen Sie Zugriff auf Folgendes haben:"
#: apps/web/src/app/embed/authenticate.tsx:21
msgid "To view this document you need to be signed into your account, please sign in to continue."
-msgstr "Um dieses Dokument anzuzeigen, müssen Sie in Ihr Konto eingeloggt sein. Bitte melden Sie sich an, um fortzufahren."
+msgstr "Um dieses Dokument anzusehen, müssen Sie in Ihr Konto eingeloggt sein. Bitte melden Sie sich an, um fortzufahren."
#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:178
msgid "Toggle the switch to hide your profile from the public."
-msgstr "Toggle the switch to hide your profile from the public."
+msgstr "Schalten Sie den Schalter um, um Ihr Profil vor der Öffentlichkeit zu verbergen."
#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:190
msgid "Toggle the switch to show your profile to the public."
-msgstr "Toggle the switch to show your profile to the public."
+msgstr "Schalten Sie den Schalter um, um Ihr Profil der Öffentlichkeit anzuzeigen."
#: apps/web/src/components/forms/2fa/enable-authenticator-app-dialog.tsx:236
msgid "Token"
@@ -3473,197 +4021,216 @@ msgstr "Token"
#: apps/web/src/components/forms/token.tsx:105
msgid "Token copied to clipboard"
-msgstr "Token copied to clipboard"
+msgstr "Token wurde in die Zwischenablage kopiert"
#: apps/web/src/components/forms/token.tsx:126
msgid "Token created"
-msgstr "Token created"
+msgstr "Token erstellt"
#: apps/web/src/components/(dashboard)/settings/token/delete-token-dialog.tsx:87
msgid "Token deleted"
-msgstr "Token deleted"
+msgstr "Token gelöscht"
#: apps/web/src/app/(dashboard)/settings/tokens/page.tsx:75
-#: apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx:114
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx:108
msgid "Token doesn't have an expiration date"
-msgstr "Token doesn't have an expiration date"
+msgstr "Token hat kein Ablaufdatum"
#: apps/web/src/components/forms/token.tsx:193
msgid "Token expiration date"
-msgstr "Token expiration date"
+msgstr "Ablaufdatum des Tokens"
#: apps/web/src/components/forms/token.tsx:165
msgid "Token name"
-msgstr "Token name"
+msgstr "Token-Name"
#: apps/web/src/app/(dashboard)/admin/stats/page.tsx:65
msgid "Total Documents"
-msgstr "Total Documents"
+msgstr "Gesamtdokumente"
#: apps/web/src/app/(dashboard)/admin/stats/page.tsx:108
msgid "Total Recipients"
-msgstr "Total Recipients"
+msgstr "Gesamtempfänger"
#: apps/web/src/app/(dashboard)/admin/stats/page.tsx:150
msgid "Total Signers that Signed Up"
-msgstr "Total Signers that Signed Up"
+msgstr "Gesamtanzahl der Unterzeichner, die sich angemeldet haben"
#: apps/web/src/app/(dashboard)/admin/stats/page.tsx:64
msgid "Total Users"
-msgstr "Total Users"
+msgstr "Gesamtanzahl der Benutzer"
+
+#: apps/web/src/components/(teams)/dialogs/transfer-team-dialog.tsx:76
+msgid "transfer {teamName}"
+msgstr "übertragen {teamName}"
#: apps/web/src/components/(teams)/dialogs/transfer-team-dialog.tsx:160
msgid "Transfer ownership of this team to a selected team member."
-msgstr "Transfer ownership of this team to a selected team member."
+msgstr "Übertragen Sie die Inhaberschaft dieses Teams auf ein ausgewähltes Teammitglied."
-#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:169
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:175
#: apps/web/src/components/(teams)/dialogs/transfer-team-dialog.tsx:147
#: apps/web/src/components/(teams)/dialogs/transfer-team-dialog.tsx:156
msgid "Transfer team"
-msgstr "Transfer team"
+msgstr "Team übertragen"
-#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:173
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:179
msgid "Transfer the ownership of the team to another team member."
-msgstr "Transfer the ownership of the team to another team member."
+msgstr "Übertragen Sie das Eigentum des Teams auf ein anderes Teammitglied."
#: apps/web/src/app/(dashboard)/settings/webhooks/[id]/page.tsx:163
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/[id]/page.tsx:167
#: apps/web/src/components/(dashboard)/settings/webhooks/create-webhook-dialog.tsx:191
msgid "Triggers"
-msgstr "Triggers"
+msgstr "Auslöser"
#: apps/web/src/app/(dashboard)/settings/security/page.tsx:52
msgid "Two factor authentication"
-msgstr "Two factor authentication"
+msgstr "Zwei-Faktor-Authentifizierung"
#: apps/web/src/app/(dashboard)/settings/security/page.tsx:88
msgid "Two factor authentication recovery codes are used to access your account in the event that you lose access to your authenticator app."
-msgstr "Two factor authentication recovery codes are used to access your account in the event that you lose access to your authenticator app."
+msgstr "Wiederherstellungscodes für die Zwei-Faktor-Authentifizierung werden verwendet, um auf Ihr Konto zuzugreifen, falls Sie den Zugang zu Ihrer Authentifizierungs-App verlieren."
#: apps/web/src/components/forms/signin.tsx:448
msgid "Two-Factor Authentication"
-msgstr "Two-Factor Authentication"
+msgstr "Zwei-Faktor-Authentifizierung"
#: apps/web/src/components/forms/2fa/disable-authenticator-app-dialog.tsx:90
msgid "Two-factor authentication disabled"
-msgstr "Two-factor authentication disabled"
+msgstr "Zwei-Faktor-Authentifizierung deaktiviert"
#: apps/web/src/components/forms/2fa/enable-authenticator-app-dialog.tsx:94
msgid "Two-factor authentication enabled"
-msgstr "Two-factor authentication enabled"
+msgstr "Zwei-Faktor-Authentifizierung aktiviert"
#: apps/web/src/components/forms/2fa/disable-authenticator-app-dialog.tsx:92
msgid "Two-factor authentication has been disabled for your account. You will no longer be required to enter a code from your authenticator app when signing in."
-msgstr "Two-factor authentication has been disabled for your account. You will no longer be required to enter a code from your authenticator app when signing in."
+msgstr "Die Zwei-Faktor-Authentifizierung wurde für Ihr Konto deaktiviert. Sie müssen beim Anmelden keinen Code aus Ihrer Authentifizierungs-App mehr eingeben."
+
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:120
+msgid "Two-Factor Re-Authentication"
+msgstr "Zwei-Faktor-Wiederauthentifizierung"
#: apps/web/src/app/(dashboard)/admin/documents/[id]/recipient-item.tsx:73
#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:67
msgid "Type"
-msgstr "Type"
+msgstr "Typ"
#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:184
msgid "Type 'delete' to confirm"
-msgstr "Type 'delete' to confirm"
+msgstr "Geben Sie 'delete' ein, um zu bestätigen"
#: apps/web/src/components/(dashboard)/common/command-menu.tsx:186
msgid "Type a command or search..."
-msgstr "Type a command or search..."
+msgstr "Geben Sie einen Befehl ein oder suchen Sie..."
#: apps/web/src/app/(unauthenticated)/verify-email/page.tsx:26
msgid "Uh oh! Looks like you're missing a token"
-msgstr "Uh oh! Looks like you're missing a token"
+msgstr "Oh oh! Es sieht so aus, als fehlt Ihnen ein Token"
#: apps/web/src/components/(dashboard)/common/command-menu.tsx:303
msgid "Unable to change the language at this time. Please try again later."
-msgstr "Derzeit kann die Sprache nicht geändert werden. Bitte versuchen Sie es später erneut."
+msgstr "Zurzeit kann die Sprache nicht geändert werden. Bitte versuchen Sie es später noch einmal."
#: apps/web/src/components/forms/2fa/recovery-code-list.tsx:31
msgid "Unable to copy recovery code"
-msgstr "Unable to copy recovery code"
+msgstr "Kann Code zur Wiederherstellung nicht kopieren"
#: apps/web/src/components/forms/token.tsx:110
msgid "Unable to copy token"
-msgstr "Unable to copy token"
+msgstr "Token kann nicht kopiert werden"
#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:105
msgid "Unable to create direct template access. Please try again later."
-msgstr "Unable to create direct template access. Please try again later."
+msgstr "Direkter Zugriff auf die Vorlage kann nicht erstellt werden. Bitte versuche es später noch einmal."
#: apps/web/src/app/(dashboard)/settings/teams/decline-team-invitation-button.tsx:33
msgid "Unable to decline this team invitation at this time."
-msgstr "Unable to decline this team invitation at this time."
+msgstr "Zurzeit kann diese Teameinladung nicht abgelehnt werden."
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:86
msgid "Unable to delete invitation. Please try again."
-msgstr "Unable to delete invitation. Please try again."
+msgstr "Einladung kann nicht gelöscht werden. Bitte versuchen Sie es erneut."
#: apps/web/src/components/(teams)/dialogs/delete-team-dialog.tsx:94
msgid "Unable to delete team"
-msgstr "Unable to delete team"
+msgstr "Team konnte nicht gelöscht werden"
#: apps/web/src/components/forms/2fa/disable-authenticator-app-dialog.tsx:103
msgid "Unable to disable two-factor authentication"
-msgstr "Unable to disable two-factor authentication"
+msgstr "Zwei-Faktor-Authentifizierung kann nicht deaktiviert werden"
#: apps/web/src/app/(dashboard)/settings/teams/accept-team-invitation-button.tsx:33
msgid "Unable to join this team at this time."
-msgstr "Unable to join this team at this time."
+msgstr "Zurzeit kann diesem Team nicht beigetreten werden."
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recent-activity.tsx:72
#: apps/web/src/components/document/document-history-sheet.tsx:127
msgid "Unable to load document history"
-msgstr "Unable to load document history"
+msgstr "Kann den Dokumentverlauf nicht laden"
+
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:62
+msgid "Unable to load documents"
+msgstr "Dokumente können nicht geladen werden"
#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:111
msgid "Unable to load your public profile templates at this time"
-msgstr "Unable to load your public profile templates at this time"
+msgstr "Derzeit können Ihre öffentlichen Profilvorlagen nicht geladen werden"
#: apps/web/src/components/(teams)/dialogs/remove-team-email-dialog.tsx:84
msgid "Unable to remove email verification at this time. Please try again."
-msgstr "Unable to remove email verification at this time. Please try again."
+msgstr "Derzeit ist es nicht möglich, die E-Mail-Verifizierung zu entfernen. Bitte versuchen Sie es erneut."
#: apps/web/src/components/(teams)/dialogs/remove-team-email-dialog.tsx:65
msgid "Unable to remove team email at this time. Please try again."
-msgstr "Unable to remove team email at this time. Please try again."
+msgstr "Das Team-E-Mail kann zurzeit nicht entfernt werden. Bitte versuchen Sie es erneut."
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:69
msgid "Unable to resend invitation. Please try again."
-msgstr "Unable to resend invitation. Please try again."
+msgstr "Einladung kann nicht erneut gesendet werden. Bitte versuchen Sie es erneut."
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/team-email-dropdown.tsx:40
msgid "Unable to resend verification at this time. Please try again."
-msgstr "Unable to resend verification at this time. Please try again."
+msgstr "Derzeit ist es nicht möglich, die Verifizierung erneut zu senden. Bitte versuchen Sie es erneut."
#: apps/web/src/app/(unauthenticated)/reset-password/page.tsx:20
msgid "Unable to reset password"
-msgstr "Unable to reset password"
+msgstr "Passwort kann nicht zurückgesetzt werden"
#: apps/web/src/components/forms/2fa/enable-authenticator-app-dialog.tsx:68
#: apps/web/src/components/forms/2fa/enable-authenticator-app-dialog.tsx:101
msgid "Unable to setup two-factor authentication"
-msgstr "Unable to setup two-factor authentication"
+msgstr "Zwei-Faktor-Authentifizierung kann nicht eingerichtet werden"
#: apps/web/src/components/forms/signin.tsx:247
#: apps/web/src/components/forms/signin.tsx:255
msgid "Unable to sign in"
-msgstr "Unable to sign in"
+msgstr "Anmeldung nicht möglich"
#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-2fa.tsx:166
#: apps/web/src/app/(teams)/t/[teamUrl]/error.tsx:27
msgid "Unauthorized"
-msgstr "Unauthorized"
+msgstr "Nicht autorisiert"
-#: apps/web/src/components/(dashboard)/avatar/stack-avatars-with-tooltip.tsx:116
+#: apps/web/src/components/(dashboard)/avatar/stack-avatars-with-tooltip.tsx:155
msgid "Uncompleted"
-msgstr "Uncompleted"
+msgstr "Unvollendet"
+
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:229
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:254
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:265
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:276
+msgid "Unknown"
+msgstr "Unbekannt"
#: apps/web/src/app/(teams)/t/[teamUrl]/error.tsx:23
msgid "Unknown error"
-msgstr "Unknown error"
+msgstr "Unbekannter Fehler"
#: apps/web/src/components/(teams)/tables/team-billing-invoices-data-table.tsx:79
msgid "Unpaid"
-msgstr "Unpaid"
+msgstr "Unbezahlt"
#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:181
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:162
@@ -3672,35 +4239,35 @@ msgstr "Unpaid"
#: apps/web/src/components/forms/public-profile-form.tsx:279
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:428
msgid "Update"
-msgstr "Update"
+msgstr "Aktualisieren"
#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:211
msgid "Update Banner"
-msgstr "Update Banner"
+msgstr "Banner aktualisieren"
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:118
msgid "Update passkey"
-msgstr "Update passkey"
+msgstr "Passkey aktualisieren"
#: apps/web/src/components/forms/password.tsx:152
msgid "Update password"
-msgstr "Update password"
+msgstr "Passwort aktualisieren"
#: apps/web/src/components/forms/profile.tsx:150
msgid "Update profile"
-msgstr "Update profile"
+msgstr "Profil aktualisieren"
#: apps/web/src/app/(dashboard)/admin/documents/[id]/recipient-item.tsx:180
msgid "Update Recipient"
-msgstr "Update Recipient"
+msgstr "Empfänger aktualisieren"
#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:146
msgid "Update role"
-msgstr "Update role"
+msgstr "Rolle aktualisieren"
-#: apps/web/src/components/(teams)/forms/update-team-form.tsx:176
+#: apps/web/src/components/(teams)/forms/update-team-form.tsx:278
msgid "Update team"
-msgstr "Update team"
+msgstr "Team aktualisieren"
#: apps/web/src/components/(teams)/dialogs/update-team-email-dialog.tsx:113
#: apps/web/src/components/(teams)/dialogs/update-team-email-dialog.tsx:121
@@ -3729,11 +4296,20 @@ msgstr "Passwort wird aktualisiert..."
msgid "Updating profile..."
msgstr "Profil wird aktualisiert..."
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:115
+msgid "Updating Your Information"
+msgstr "Aktualisierung Ihrer Informationen"
+
#: apps/web/src/components/forms/avatar-image.tsx:182
msgid "Upload Avatar"
msgstr "Avatar hochladen"
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/branding-preferences.tsx:256
+msgid "Upload your brand logo (max 5MB, JPG, PNG, or WebP)"
+msgstr "Laden Sie Ihr Markenlogo hoch (max. 5MB, JPG, PNG oder WebP)"
+
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-information.tsx:31
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-information.tsx:30
msgid "Uploaded by"
msgstr "Hochgeladen von"
@@ -3749,6 +4325,10 @@ msgstr "Die hochgeladene Datei ist zu klein"
msgid "Uploaded file not an allowed file type"
msgstr "Die hochgeladene Datei ist kein zulässiger Dateityp"
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view.tsx:170
+msgid "Use"
+msgstr "Verwenden"
+
#: apps/web/src/components/forms/2fa/disable-authenticator-app-dialog.tsx:187
#: apps/web/src/components/forms/signin.tsx:505
msgid "Use Authenticator"
@@ -3759,11 +4339,12 @@ msgstr "Authenticator verwenden"
msgid "Use Backup Code"
msgstr "Backup-Code verwenden"
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:183
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:207
msgid "Use Template"
msgstr "Vorlage verwenden"
-#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-data-table.tsx:82
+#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-data-table.tsx:78
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/data-table.tsx:45
msgid "User"
msgstr "Benutzer"
@@ -3811,10 +4392,14 @@ msgstr "Überprüfen Sie Ihre E-Mail-Adresse, um alle Funktionen freizuschalten.
msgid "Verify your email to upload documents."
msgstr "Überprüfen Sie Ihre E-Mail, um Dokumente hochzuladen."
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:75
+msgid "Version History"
+msgstr "Versionsverlauf"
+
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-button.tsx:95
#: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:126
#: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:135
-#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:134
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:132
#: apps/web/src/components/(teams)/tables/team-billing-invoices-data-table.tsx:100
#: apps/web/src/components/forms/2fa/view-recovery-codes-dialog.tsx:168
msgid "View"
@@ -3832,6 +4417,10 @@ msgstr "Alle Dokumente anzeigen, die an Ihr Konto gesendet wurden"
msgid "View all recent security activity related to your account."
msgstr "Sehen Sie sich alle aktuellen Sicherheitsaktivitäten in Ihrem Konto an."
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:157
+msgid "View all related documents"
+msgstr "Alle verwandten Dokumente anzeigen"
+
#: apps/web/src/app/(dashboard)/settings/security/activity/page.tsx:26
msgid "View all security activity related to your account."
msgstr "Sehen Sie sich alle Sicherheitsaktivitäten in Ihrem Konto an."
@@ -3840,7 +4429,11 @@ msgstr "Sehen Sie sich alle Sicherheitsaktivitäten in Ihrem Konto an."
msgid "View Codes"
msgstr "Codes ansehen"
-#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:150
+#: apps/web/src/app/(signing)/sign/[token]/form.tsx:127
+msgid "View Document"
+msgstr "Dokument anzeigen"
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:156
msgid "View documents associated with this email"
msgstr "Dokumente ansehen, die mit dieser E-Mail verknüpft sind"
@@ -3848,6 +4441,10 @@ msgstr "Dokumente ansehen, die mit dieser E-Mail verknüpft sind"
msgid "View invites"
msgstr "Einladungen ansehen"
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:95
+msgid "View more"
+msgstr "Mehr anzeigen"
+
#: apps/web/src/app/(signing)/sign/[token]/complete/document-preview-button.tsx:34
msgid "View Original Document"
msgstr "Originaldokument ansehen"
@@ -3861,11 +4458,12 @@ msgstr "Wiederherstellungscodes ansehen"
msgid "View teams"
msgstr "Teams ansehen"
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:104
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:120
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:259
msgid "Viewed"
msgstr "Angesehen"
-#: apps/web/src/components/(dashboard)/avatar/stack-avatars-with-tooltip.tsx:86
+#: apps/web/src/components/(dashboard)/avatar/stack-avatars-with-tooltip.tsx:125
msgid "Waiting"
msgstr "Warten"
@@ -3885,7 +4483,7 @@ msgstr "Möchten Sie auffällige Signatur-Links wie diesen senden? <0>Überprüf
msgid "Want your own public profile?"
msgstr "Möchten Sie Ihr eigenes öffentliches Profil haben?"
-#: apps/web/src/app/(dashboard)/settings/billing/billing-portal-button.tsx:40
+#: apps/web/src/app/(dashboard)/settings/billing/billing-portal-button.tsx:41
#: apps/web/src/app/(teams)/t/[teamUrl]/layout-billing-banner.tsx:55
#: apps/web/src/components/(teams)/team-billing-portal-button.tsx:31
msgid "We are unable to proceed to the billing portal at this time. Please try again, or contact support."
@@ -4021,7 +4619,7 @@ msgstr "Wir sind auf einen unbekannten Fehler gestoßen, während wir versucht h
msgid "We encountered an unknown error while attempting to update your public profile. Please try again later."
msgstr "Wir sind auf einen unbekannten Fehler gestoßen, während wir versucht haben, Ihr öffentliches Profil zu aktualisieren. Bitte versuchen Sie es später erneut."
-#: apps/web/src/components/(teams)/forms/update-team-form.tsx:96
+#: apps/web/src/components/(teams)/forms/update-team-form.tsx:136
msgid "We encountered an unknown error while attempting to update your team. Please try again later."
msgstr "Wir sind auf einen unbekannten Fehler gestoßen, während wir versucht haben, Ihr Team zu aktualisieren. Bitte versuchen Sie es später erneut."
@@ -4063,12 +4661,20 @@ msgstr "Wir konnten Ihr öffentliches Profil nicht auf öffentlich setzen. Bitte
msgid "We were unable to setup two-factor authentication for your account. Please ensure that you have entered your code correctly and try again."
msgstr "Wir konnten die Zwei-Faktor-Authentifizierung für Ihr Konto nicht einrichten. Bitte stellen Sie sicher, dass Sie den Code korrekt eingegeben haben und versuchen Sie es erneut."
-#: apps/web/src/app/(recipient)/d/[token]/direct-template.tsx:119
+#: apps/web/src/app/(recipient)/d/[token]/direct-template.tsx:120
#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:245
#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:127
msgid "We were unable to submit this document at this time. Please try again later."
msgstr "Wir konnten dieses Dokument zurzeit nicht einreichen. Bitte versuchen Sie es später erneut."
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/branding-preferences.tsx:109
+msgid "We were unable to update your branding preferences at this time, please try again later"
+msgstr "Wir konnten Ihre Markenpräferenzen zu diesem Zeitpunkt nicht aktualisieren, bitte versuchen Sie es später noch einmal"
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:98
+msgid "We were unable to update your document preferences at this time, please try again later"
+msgstr "Wir konnten Ihre Dokumentpräferenzen zu diesem Zeitpunkt nicht aktualisieren, bitte versuchen Sie es später noch einmal"
+
#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-2fa.tsx:169
msgid "We were unable to verify your details. Please try again or contact support"
msgstr "Wir konnten Ihre Angaben nicht verifizieren. Bitte versuchen Sie es erneut oder kontaktieren Sie den Support"
@@ -4077,6 +4683,14 @@ msgstr "Wir konnten Ihre Angaben nicht verifizieren. Bitte versuchen Sie es erne
msgid "We were unable to verify your email. If your email is not verified already, please try again."
msgstr "Wir konnten Ihre E-Mail nicht bestätigen. Wenn Ihre E-Mail noch nicht bestätigt wurde, versuchen Sie es bitte erneut."
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:370
+msgid "We will generate signing links for you, which you can send to the recipients through your method of choice."
+msgstr "Wir werden Unterzeichnungslinks für Sie erstellen, die Sie an die Empfänger über Ihre bevorzugte Methode senden können."
+
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:366
+msgid "We won't send anything to notify recipients."
+msgstr "Wir werden nichts senden, um die Empfänger zu benachrichtigen."
+
#: apps/web/src/app/(dashboard)/documents/empty-state.tsx:29
#: apps/web/src/app/(dashboard)/templates/empty-state.tsx:11
msgid "We're all empty"
@@ -4108,8 +4722,8 @@ msgstr "Webhook-URL"
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/page.tsx:33
#: apps/web/src/components/(dashboard)/settings/layout/desktop-nav.tsx:103
#: apps/web/src/components/(dashboard)/settings/layout/mobile-nav.tsx:106
-#: apps/web/src/components/(teams)/settings/layout/desktop-nav.tsx:94
-#: apps/web/src/components/(teams)/settings/layout/mobile-nav.tsx:102
+#: apps/web/src/components/(teams)/settings/layout/desktop-nav.tsx:109
+#: apps/web/src/components/(teams)/settings/layout/mobile-nav.tsx:118
msgid "Webhooks"
msgstr "Webhooks"
@@ -4117,6 +4731,10 @@ msgstr "Webhooks"
msgid "Weekly"
msgstr "Wöchentlich"
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:21
+msgid "Welcome"
+msgstr "Willkommen"
+
#: apps/web/src/app/(unauthenticated)/signin/page.tsx:33
msgid "Welcome back, we are lucky to have you."
msgstr "Willkommen zurück, wir freuen uns, Sie zu haben."
@@ -4129,6 +4747,14 @@ msgstr "Hast du stattdessen versucht, dieses Dokument zu bearbeiten?"
msgid "When you click continue, you will be prompted to add the first available authenticator on your system."
msgstr "Wenn Sie auf Fortfahren klicken, werden Sie aufgefordert, den ersten verfügbaren Authenticator auf Ihrem System hinzuzufügen."
+#: apps/web/src/app/(signing)/sign/[token]/auto-sign.tsx:183
+msgid "When you sign a document, we can automatically fill in and sign the following fields using information that has already been provided. You can also manually sign or remove any automatically signed fields afterwards if you desire."
+msgstr "Wenn Sie ein Dokument unterschreiben, können wir die folgenden Felder automatisch ausfüllen und signieren, indem wir bereits bereitgestellte Informationen verwenden. Sie können auch nachträglich manuell unterschreiben oder automatisch signierte Felder entfernen, wenn Sie möchten."
+
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:36
+msgid "When you use our platform to affix your electronic signature to documents, you are consenting to do so under the Electronic Signatures in Global and National Commerce Act (E-Sign Act) and other applicable laws. This action indicates your agreement to use electronic means to sign documents and receive notifications."
+msgstr "Wenn Sie unsere Plattform nutzen, um Ihre elektronische Unterschrift auf Dokumente anzubringen, stimmen Sie zu, dies unter dem Gesetz über elektronische Unterschriften im globalen und nationalen Handel (E-Sign-Gesetz) und anderen anwendbaren Gesetzen zu tun. Diese Handlung zeigt Ihre Zustimmung zur Verwendung elektronischer Mittel zum Unterzeichnen von Dokumenten und zum Empfang von Benachrichtigungen an."
+
#: apps/web/src/app/(profile)/p/[url]/page.tsx:139
msgid "While waiting for them to do so you can create your own Documenso account and get started with document signing right away."
msgstr "Während Sie darauf warten, können Sie Ihr eigenes Documenso-Konto erstellen und sofort mit der Dokumentenunterzeichnung beginnen."
@@ -4137,6 +4763,10 @@ msgstr "Während Sie darauf warten, können Sie Ihr eigenes Documenso-Konto erst
msgid "Who do you want to remind?"
msgstr "Wen möchten Sie erinnern?"
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:101
+msgid "Withdrawing Consent"
+msgstr "Zustimmung widerrufen"
+
#: apps/web/src/components/forms/public-profile-form.tsx:223
msgid "Write about the team"
msgstr "Schreiben Sie über das Team"
@@ -4150,6 +4780,7 @@ msgid "Yearly"
msgstr "Jährlich"
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-information.tsx:32
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-information.tsx:31
msgid "You"
msgstr "Sie"
@@ -4189,14 +4820,10 @@ msgstr "Sie stehen kurz davor, den folgenden Benutzer aus <0>{teamName}0> zu e
msgid "You are about to revoke access for team <0>{0}0> ({1}) to use your email."
msgstr "Sie stehen kurz davor, den Zugriff für das Team <0>{0}0> ({1}) zu widerrufen."
-#: apps/web/src/app/(dashboard)/settings/billing/page.tsx:78
+#: apps/web/src/app/(dashboard)/settings/billing/page.tsx:80
msgid "You are currently on the <0>Free Plan0>."
msgstr "Sie befinden sich derzeit im <0>kostenlosen Plan0>."
-#: apps/web/src/app/(dashboard)/settings/billing/page.tsx:92
-#~ msgid "You are currently subscribed to <0>{0}0>"
-#~ msgstr "You are currently subscribed to <0>{0}0>"
-
#: apps/web/src/components/(teams)/dialogs/update-team-member-dialog.tsx:148
msgid "You are currently updating <0>{teamMemberName}.0>"
msgstr "Sie aktualisieren derzeit <0>{teamMemberName}.0>"
@@ -4221,11 +4848,15 @@ msgstr "Sie können wählen, ob Sie Ihr Teamprofil für die öffentliche Ansicht
msgid "You can claim your profile later on by going to your profile settings!"
msgstr "Sie können Ihr Profil später über die Profileinstellungen beanspruchen!"
+#: apps/web/src/components/document/document-recipient-link-copy-dialog.tsx:87
+msgid "You can copy and share these links to recipients so they can action the document."
+msgstr "Sie können diese Links kopieren und mit den Empfängern teilen, damit sie das Dokument bearbeiten können."
+
#: apps/web/src/components/forms/public-profile-form.tsx:154
msgid "You can update the profile URL by updating the team URL in the general settings page."
msgstr "Sie können die Profil-URL aktualisieren, indem Sie die Team-URL auf der Seite mit den allgemeinen Einstellungen aktualisieren."
-#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:65
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:71
msgid "You can view documents associated with this email and use this identity when sending documents."
msgstr "Sie können Dokumente ansehen, die mit dieser E-Mail verknüpft sind, und diese Identität beim Senden von Dokumenten verwenden."
@@ -4241,11 +4872,7 @@ msgstr "Sie können ein Teammitglied, das eine höhere Rolle als Sie hat, nicht
msgid "You cannot upload encrypted PDFs"
msgstr "Sie können keine verschlüsselten PDFs hochladen"
-#: apps/web/src/app/(dashboard)/settings/billing/page.tsx:97
-#~ msgid "You currently have an active plan"
-#~ msgstr "You currently have an active plan"
-
-#: apps/web/src/app/(dashboard)/settings/billing/billing-portal-button.tsx:45
+#: apps/web/src/app/(dashboard)/settings/billing/billing-portal-button.tsx:46
msgid "You do not currently have a customer record, this should not happen. Please contact support for assistance."
msgstr "Sie haben derzeit keinen Kundenrecord, das sollte nicht passieren. Bitte kontaktieren Sie den Support um Hilfe."
@@ -4291,10 +4918,14 @@ msgstr "Sie haben das maximale Limit von {0} direkten Vorlagen erreicht. <0>Upgr
msgid "You have reached your document limit."
msgstr "Sie haben Ihr Dokumentenlimit erreicht."
-#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:181
+#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:183
msgid "You have reached your document limit. <0>Upgrade your account to continue!0>"
msgstr "Sie haben Ihr Dokumentenlimit erreicht. <0>Upgrade your account to continue!0>"
+#: apps/web/src/app/(signing)/sign/[token]/rejected/page.tsx:88
+msgid "You have rejected this document"
+msgstr "Sie haben dieses Dokument abgelehnt"
+
#: apps/web/src/components/(teams)/dialogs/leave-team-dialog.tsx:50
msgid "You have successfully left this team."
msgstr "Sie haben dieses Team erfolgreich verlassen."
@@ -4313,6 +4944,10 @@ msgstr "Sie haben diesen Benutzer erfolgreich aus dem Team entfernt."
msgid "You have successfully revoked access."
msgstr "Sie haben den Zugriff erfolgreich widerrufen."
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:104
+msgid "You have the right to withdraw your consent to use electronic signatures at any time before completing the signing process. To withdraw your consent, please contact the sender of the document. In failing to contact the sender you may reach out to <0>{SUPPORT_EMAIL}0> for assistance. Be aware that withdrawing consent may delay or halt the completion of the related transaction or service."
+msgstr "Sie haben das Recht, Ihre Zustimmung zur Verwendung elektronischer Unterschriften jederzeit vor Abschluss des Unterzeichnungsprozesses zu widerrufen. Um Ihre Zustimmung zu widerrufen, kontaktieren Sie bitte den Absender des Dokuments. Sollten Sie den Absender nicht erreichen, können Sie sich für Unterstützung an <0>{SUPPORT_EMAIL}0> wenden. Seien Sie sich bewusst, dass der Widerruf der Zustimmung den Abschluss der zugehörigen Transaktion oder Dienstleistung verzögern oder stoppen kann."
+
#: apps/web/src/components/(teams)/dialogs/update-team-member-dialog.tsx:93
msgid "You have updated {teamMemberName}."
msgstr "Sie haben {teamMemberName} aktualisiert."
@@ -4325,10 +4960,6 @@ msgstr "Sie haben Ihre E-Mail-Adresse für <0>{0}0> bestätigt."
msgid "You must be an admin of this team to manage billing."
msgstr "Sie müssen Administrator dieses Teams sein, um die Abrechnung zu verwalten."
-#: apps/web/src/components/(teams)/dialogs/transfer-team-dialog.tsx:80
-#~ msgid "You must enter '{confirmTransferMessage}' to proceed"
-#~ msgstr "You must enter '{confirmTransferMessage}' to proceed"
-
#: apps/web/src/components/(dashboard)/settings/token/delete-token-dialog.tsx:60
#: apps/web/src/components/(dashboard)/settings/webhooks/delete-webhook-dialog.tsx:58
#: apps/web/src/components/(teams)/dialogs/delete-team-dialog.tsx:54
@@ -4379,7 +5010,15 @@ msgstr "Ihr Avatar wurde erfolgreich aktualisiert."
msgid "Your banner has been updated successfully."
msgstr "Ihr Banner wurde erfolgreich aktualisiert."
-#: apps/web/src/app/(dashboard)/settings/billing/page.tsx:119
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/branding-preferences.tsx:280
+msgid "Your brand website URL"
+msgstr "Ihre Marken-Website-URL"
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/branding-preferences.tsx:103
+msgid "Your branding preferences have been updated"
+msgstr "Ihre Markenpräferenzen wurden aktualisiert"
+
+#: apps/web/src/app/(dashboard)/settings/billing/page.tsx:125
msgid "Your current plan is past due. Please update your payment information."
msgstr "Ihr aktueller Plan ist überfällig. Bitte aktualisieren Sie Ihre Zahlungsinformationen."
@@ -4391,7 +5030,7 @@ msgstr "Ihre direkten Unterzeichnungsvorlagen"
msgid "Your document failed to upload."
msgstr "Ihr Dokument konnte nicht hochgeladen werden."
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:143
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:157
msgid "Your document has been created from the template successfully."
msgstr "Ihr Dokument wurde erfolgreich aus der Vorlage erstellt."
@@ -4399,7 +5038,7 @@ msgstr "Ihr Dokument wurde erfolgreich aus der Vorlage erstellt."
msgid "Your document has been re-sent successfully."
msgstr "Ihr Dokument wurde erfolgreich erneut gesendet."
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:299
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:328
msgid "Your document has been sent successfully."
msgstr "Ihr Dokument wurde erfolgreich gesendet."
@@ -4415,6 +5054,10 @@ msgstr "Ihr Dokument wurde erfolgreich hochgeladen."
msgid "Your document has been uploaded successfully. You will be redirected to the template page."
msgstr "Ihr Dokument wurde erfolgreich hochgeladen. Sie werden zur Vorlagenseite weitergeleitet."
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:92
+msgid "Your document preferences have been updated"
+msgstr "Ihre Dokumentpräferenzen wurden aktualisiert"
+
#: apps/web/src/components/(dashboard)/common/command-menu.tsx:223
msgid "Your documents"
msgstr "Ihre Dokumente"
@@ -4432,6 +5075,10 @@ msgstr "Ihre E-Mail wird derzeit von Team <0>{0}0> ({1}) verwendet."
msgid "Your existing tokens"
msgstr "Ihre vorhandenen Tokens"
+#: apps/web/src/components/forms/team-document-settings.tsx:70
+#~ msgid "Your global team document settings has been updated successfully."
+#~ msgstr "Your global team document settings has been updated successfully."
+
#: apps/web/src/components/forms/password.tsx:72
#: apps/web/src/components/forms/reset-password.tsx:73
msgid "Your password has been updated successfully."
@@ -4474,7 +5121,7 @@ msgstr "Ihr Team wurde erstellt."
msgid "Your team has been successfully deleted."
msgstr "Ihr Team wurde erfolgreich gelöscht."
-#: apps/web/src/components/(teams)/forms/update-team-form.tsx:69
+#: apps/web/src/components/(teams)/forms/update-team-form.tsx:107
msgid "Your team has been successfully updated."
msgstr "Ihr Team wurde erfolgreich aktualisiert."
@@ -4490,7 +5137,7 @@ msgstr "Ihre Vorlage wurde erfolgreich gelöscht."
msgid "Your template will be duplicated."
msgstr "Ihre Vorlage wird dupliziert."
-#: apps/web/src/app/(dashboard)/templates/[id]/edit-template.tsx:220
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:224
msgid "Your templates has been saved successfully."
msgstr "Ihre Vorlagen wurden erfolgreich gespeichert."
@@ -4506,3 +5153,4 @@ msgstr "Ihr Token wurde erfolgreich erstellt! Stellen Sie sicher, dass Sie es ko
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx:86
msgid "Your tokens will be shown here once you create them."
msgstr "Ihre Tokens werden hier angezeigt, sobald Sie sie erstellt haben."
+
diff --git a/packages/lib/translations/en/common.po b/packages/lib/translations/en/common.po
index 88e3ad8f2..612bd5827 100644
--- a/packages/lib/translations/en/common.po
+++ b/packages/lib/translations/en/common.po
@@ -13,18 +13,267 @@ msgstr ""
"Language-Team: \n"
"Plural-Forms: \n"
+#: packages/email/template-components/template-document-super-delete.tsx:27
+msgid "\"{documentName}\" has been deleted by an admin."
+msgstr "\"{documentName}\" has been deleted by an admin."
+
+#: packages/email/template-components/template-document-pending.tsx:37
+msgid "“{documentName}” has been signed"
+msgstr "“{documentName}” has been signed"
+
+#: packages/email/template-components/template-document-completed.tsx:41
+msgid "“{documentName}” was signed by all signers"
+msgstr "“{documentName}” was signed by all signers"
+
+#: packages/lib/server-only/document/resend-document.tsx:109
+#~ msgid "{0}"
+#~ msgstr "{0}"
+
+#: packages/email/template-components/template-document-invite.tsx:80
+#~ msgid "{0} Document"
+#~ msgstr "{0} Document"
+
+#: packages/lib/jobs/definitions/emails/send-signing-email.ts:137
+msgid "{0} has invited you to {recipientActionVerb} the document \"{1}\"."
+msgstr "{0} has invited you to {recipientActionVerb} the document \"{1}\"."
+
+#: packages/lib/jobs/definitions/emails/send-signing-email.ts:130
+msgid "{0} invited you to {recipientActionVerb} a document"
+msgstr "{0} invited you to {recipientActionVerb} a document"
+
+#: packages/email/templates/team-join.tsx:61
+msgid "{0} joined the team {teamName} on Documenso"
+msgstr "{0} joined the team {teamName} on Documenso"
+
+#: packages/email/templates/team-leave.tsx:61
+msgid "{0} left the team {teamName} on Documenso"
+msgstr "{0} left the team {teamName} on Documenso"
+
#: packages/ui/primitives/data-table-pagination.tsx:30
msgid "{0} of {1} row(s) selected."
msgstr "{0} of {1} row(s) selected."
+#: packages/lib/jobs/definitions/emails/send-signing-email.ts:136
+#: packages/lib/server-only/document/resend-document.tsx:137
+msgid "{0} on behalf of {1} has invited you to {recipientActionVerb} the document \"{2}\"."
+msgstr "{0} on behalf of {1} has invited you to {recipientActionVerb} the document \"{2}\"."
+
+#: packages/email/template-components/template-document-invite.tsx:51
+#~ msgid "{0}<0/>\"{documentName}\""
+#~ msgstr "{0}<0/>\"{documentName}\""
+
+#: packages/email/templates/document-invite.tsx:94
+msgid "{inviterName} <0>({inviterEmail})0>"
+msgstr "{inviterName} <0>({inviterEmail})0>"
+
+#: packages/email/templates/document-cancel.tsx:21
+msgid "{inviterName} has cancelled the document {documentName}, you don't need to sign it anymore."
+msgstr "{inviterName} has cancelled the document {documentName}, you don't need to sign it anymore."
+
+#: packages/email/template-components/template-document-cancel.tsx:24
+msgid "{inviterName} has cancelled the document<0/>\"{documentName}\""
+msgstr "{inviterName} has cancelled the document<0/>\"{documentName}\""
+
+#: packages/email/template-components/template-document-invite.tsx:75
+msgid "{inviterName} has invited you to {0}<0/>\"{documentName}\""
+msgstr "{inviterName} has invited you to {0}<0/>\"{documentName}\""
+
+#: packages/email/templates/document-invite.tsx:41
+msgid "{inviterName} has invited you to {action} {documentName}"
+msgstr "{inviterName} has invited you to {action} {documentName}"
+
+#: packages/email/templates/document-invite.tsx:106
+msgid "{inviterName} has invited you to {action} the document \"{documentName}\"."
+msgstr "{inviterName} has invited you to {action} the document \"{documentName}\"."
+
+#: packages/email/templates/recipient-removed-from-document.tsx:20
+msgid "{inviterName} has removed you from the document {documentName}."
+msgstr "{inviterName} has removed you from the document {documentName}."
+
+#: packages/email/templates/recipient-removed-from-document.tsx:49
+msgid "{inviterName} has removed you from the document<0/>\"{documentName}\""
+msgstr "{inviterName} has removed you from the document<0/>\"{documentName}\""
+
+#: packages/email/template-components/template-document-invite.tsx:63
+msgid "{inviterName} on behalf of {teamName} has invited you to {0}"
+msgstr "{inviterName} on behalf of {teamName} has invited you to {0}"
+
+#: packages/email/template-components/template-document-invite.tsx:49
+#~ msgid "{inviterName} on behalf of {teamName} has invited you to {0}<0/>\"{documentName}\""
+#~ msgstr "{inviterName} on behalf of {teamName} has invited you to {0}<0/>\"{documentName}\""
+
+#: packages/email/templates/document-invite.tsx:45
+msgid "{inviterName} on behalf of {teamName} has invited you to {action} {documentName}"
+msgstr "{inviterName} on behalf of {teamName} has invited you to {action} {documentName}"
+
+#: packages/email/templates/team-join.tsx:67
+msgid "{memberEmail} joined the following team"
+msgstr "{memberEmail} joined the following team"
+
+#: packages/email/templates/team-leave.tsx:67
+msgid "{memberEmail} left the following team"
+msgstr "{memberEmail} left the following team"
+
+#: packages/lib/utils/document-audit-logs.ts:263
+msgid "{prefix} added a field"
+msgstr "{prefix} added a field"
+
+#: packages/lib/utils/document-audit-logs.ts:275
+msgid "{prefix} added a recipient"
+msgstr "{prefix} added a recipient"
+
+#: packages/lib/utils/document-audit-logs.ts:287
+msgid "{prefix} created the document"
+msgstr "{prefix} created the document"
+
+#: packages/lib/utils/document-audit-logs.ts:291
+msgid "{prefix} deleted the document"
+msgstr "{prefix} deleted the document"
+
+#: packages/lib/utils/document-audit-logs.ts:335
+msgid "{prefix} moved the document to team"
+msgstr "{prefix} moved the document to team"
+
+#: packages/lib/utils/document-audit-logs.ts:319
+msgid "{prefix} opened the document"
+msgstr "{prefix} opened the document"
+
+#: packages/lib/utils/document-audit-logs.ts:267
+msgid "{prefix} removed a field"
+msgstr "{prefix} removed a field"
+
+#: packages/lib/utils/document-audit-logs.ts:279
+msgid "{prefix} removed a recipient"
+msgstr "{prefix} removed a recipient"
+
+#: packages/lib/utils/document-audit-logs.ts:365
+msgid "{prefix} resent an email to {0}"
+msgstr "{prefix} resent an email to {0}"
+
+#: packages/lib/utils/document-audit-logs.ts:366
+msgid "{prefix} sent an email to {0}"
+msgstr "{prefix} sent an email to {0}"
+
+#: packages/lib/utils/document-audit-logs.ts:331
+msgid "{prefix} sent the document"
+msgstr "{prefix} sent the document"
+
+#: packages/lib/utils/document-audit-logs.ts:295
+msgid "{prefix} signed a field"
+msgstr "{prefix} signed a field"
+
+#: packages/lib/utils/document-audit-logs.ts:299
+msgid "{prefix} unsigned a field"
+msgstr "{prefix} unsigned a field"
+
+#: packages/lib/utils/document-audit-logs.ts:271
+msgid "{prefix} updated a field"
+msgstr "{prefix} updated a field"
+
+#: packages/lib/utils/document-audit-logs.ts:283
+msgid "{prefix} updated a recipient"
+msgstr "{prefix} updated a recipient"
+
+#: packages/lib/utils/document-audit-logs.ts:315
+msgid "{prefix} updated the document"
+msgstr "{prefix} updated the document"
+
+#: packages/lib/utils/document-audit-logs.ts:307
+msgid "{prefix} updated the document access auth requirements"
+msgstr "{prefix} updated the document access auth requirements"
+
+#: packages/lib/utils/document-audit-logs.ts:327
+msgid "{prefix} updated the document external ID"
+msgstr "{prefix} updated the document external ID"
+
+#: packages/lib/utils/document-audit-logs.ts:311
+msgid "{prefix} updated the document signing auth requirements"
+msgstr "{prefix} updated the document signing auth requirements"
+
+#: packages/lib/utils/document-audit-logs.ts:323
+msgid "{prefix} updated the document title"
+msgstr "{prefix} updated the document title"
+
+#: packages/lib/utils/document-audit-logs.ts:303
+msgid "{prefix} updated the document visibility"
+msgstr "{prefix} updated the document visibility"
+
+#: packages/email/templates/document-created-from-direct-template.tsx:61
+msgid "{recipientName} {action} a document by using one of your direct links"
+msgstr "{recipientName} {action} a document by using one of your direct links"
+
+#: packages/email/templates/document-rejected.tsx:27
+msgid "{recipientName} has rejected the document '{documentName}'"
+msgstr "{recipientName} has rejected the document '{documentName}'"
+
+#: packages/email/template-components/template-document-rejected.tsx:25
+msgid "{signerName} has rejected the document \"{documentName}\"."
+msgstr "{signerName} has rejected the document \"{documentName}\"."
+
+#: packages/email/template-components/template-document-invite.tsx:68
+msgid "{teamName} has invited you to {0}"
+msgstr "{teamName} has invited you to {0}"
+
+#: packages/email/templates/document-invite.tsx:46
+msgid "{teamName} has invited you to {action} {documentName}"
+msgstr "{teamName} has invited you to {action} {documentName}"
+
+#: packages/email/templates/team-transfer-request.tsx:55
+msgid "{teamName} ownership transfer request"
+msgstr "{teamName} ownership transfer request"
+
+#: packages/lib/utils/document-audit-logs.ts:343
+msgid "{userName} approved the document"
+msgstr "{userName} approved the document"
+
+#: packages/lib/utils/document-audit-logs.ts:344
+msgid "{userName} CC'd the document"
+msgstr "{userName} CC'd the document"
+
+#: packages/lib/utils/document-audit-logs.ts:345
+msgid "{userName} completed their task"
+msgstr "{userName} completed their task"
+
+#: packages/lib/utils/document-audit-logs.ts:355
+msgid "{userName} rejected the document"
+msgstr "{userName} rejected the document"
+
+#: packages/lib/utils/document-audit-logs.ts:341
+msgid "{userName} signed the document"
+msgstr "{userName} signed the document"
+
+#: packages/lib/utils/document-audit-logs.ts:342
+msgid "{userName} viewed the document"
+msgstr "{userName} viewed the document"
+
#: packages/ui/primitives/data-table-pagination.tsx:41
msgid "{visibleRows, plural, one {Showing # result.} other {Showing # results.}}"
msgstr "{visibleRows, plural, one {Showing # result.} other {Showing # results.}}"
+#: packages/email/templates/document-invite.tsx:100
+#~ msgid "`${inviterName} has invited you to ${action} the document \"${documentName}\".`"
+#~ msgstr "`${inviterName} has invited you to ${action} the document \"${documentName}\".`"
+
+#: packages/email/templates/team-transfer-request.tsx:59
+msgid "<0>{senderName}0> has requested that you take ownership of the following team"
+msgstr "<0>{senderName}0> has requested that you take ownership of the following team"
+
+#: packages/email/templates/confirm-team-email.tsx:75
+msgid "<0>{teamName}0> has requested to use your email address for their team on Documenso."
+msgstr "<0>{teamName}0> has requested to use your email address for their team on Documenso."
+
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:241
+msgid "<0>Email0> - The recipient will be emailed the document to sign, approve, etc."
+msgstr "<0>Email0> - The recipient will be emailed the document to sign, approve, etc."
+
#: packages/ui/components/recipient/recipient-action-auth-select.tsx:53
msgid "<0>Inherit authentication method0> - Use the global action signing authentication method configured in the \"General Settings\" step"
msgstr "<0>Inherit authentication method0> - Use the global action signing authentication method configured in the \"General Settings\" step"
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:247
+msgid "<0>Links0> - We will generate links which you can send to the recipients manually."
+msgstr "<0>Links0> - We will generate links which you can send to the recipients manually."
+
#: packages/ui/components/document/document-global-auth-action-select.tsx:95
msgid "<0>No restrictions0> - No authentication required"
msgstr "<0>No restrictions0> - No authentication required"
@@ -37,6 +286,10 @@ msgstr "<0>No restrictions0> - The document can be accessed directly by the UR
msgid "<0>None0> - No authentication required"
msgstr "<0>None0> - No authentication required"
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:254
+msgid "<0>Note0> - If you use Links in combination with direct templates, you will need to manually send the links to the remaining recipients."
+msgstr "<0>Note0> - If you use Links in combination with direct templates, you will need to manually send the links to the remaining recipients."
+
#: packages/ui/components/document/document-global-auth-action-select.tsx:89
#: packages/ui/components/recipient/recipient-action-auth-select.tsx:69
msgid "<0>Require 2FA0> - The recipient must have an account and 2FA enabled via their settings"
@@ -51,20 +304,95 @@ msgstr "<0>Require account0> - The recipient must be signed in to view the doc
msgid "<0>Require passkey0> - The recipient must have an account and passkey configured via their settings"
msgstr "<0>Require passkey0> - The recipient must have an account and passkey configured via their settings"
+#: packages/lib/jobs/definitions/emails/send-signing-email.ts:122
+msgid "A document was created by your direct template that requires you to {recipientActionVerb} it."
+msgstr "A document was created by your direct template that requires you to {recipientActionVerb} it."
+
+#: packages/lib/utils/document-audit-logs.ts:262
+msgid "A field was added"
+msgstr "A field was added"
+
+#: packages/lib/utils/document-audit-logs.ts:266
+msgid "A field was removed"
+msgstr "A field was removed"
+
+#: packages/lib/utils/document-audit-logs.ts:270
+msgid "A field was updated"
+msgstr "A field was updated"
+
+#: packages/lib/jobs/definitions/emails/send-team-member-joined-email.ts:107
+msgid "A new member has joined your team"
+msgstr "A new member has joined your team"
+
+#: packages/lib/utils/document-audit-logs.ts:274
+msgid "A recipient was added"
+msgstr "A recipient was added"
+
+#: packages/lib/utils/document-audit-logs.ts:278
+msgid "A recipient was removed"
+msgstr "A recipient was removed"
+
+#: packages/lib/utils/document-audit-logs.ts:282
+msgid "A recipient was updated"
+msgstr "A recipient was updated"
+
+#: packages/lib/server-only/team/create-team-email-verification.ts:156
+msgid "A request to use your email has been initiated by {0} on Documenso"
+msgstr "A request to use your email has been initiated by {0} on Documenso"
+
+#: packages/lib/server-only/team/create-team-email-verification.ts:142
+#~ msgid "A request to use your email has been initiated by {teamName} on Documenso"
+#~ msgstr "A request to use your email has been initiated by {teamName} on Documenso"
+
+#: packages/email/templates/team-join.tsx:31
+msgid "A team member has joined a team on Documenso"
+msgstr "A team member has joined a team on Documenso"
+
+#: packages/lib/jobs/definitions/emails/send-team-member-left-email.ts:96
+msgid "A team member has left {0}"
+msgstr "A team member has left {0}"
+
+#: packages/email/templates/team-leave.tsx:31
+msgid "A team member has left a team on Documenso"
+msgstr "A team member has left a team on Documenso"
+
+#: packages/email/templates/team-delete.tsx:29
+#: packages/email/templates/team-delete.tsx:33
+msgid "A team you were a part of has been deleted"
+msgstr "A team you were a part of has been deleted"
+
+#: packages/email/templates/confirm-team-email.tsx:118
+#: packages/email/templates/team-invite.tsx:94
+#: packages/email/templates/team-transfer-request.tsx:81
+msgid "Accept"
+msgstr "Accept"
+
+#: packages/email/templates/team-invite.tsx:42
+msgid "Accept invitation to join a team on Documenso"
+msgstr "Accept invitation to join a team on Documenso"
+
+#: packages/email/templates/confirm-team-email.tsx:41
+msgid "Accept team email request for {teamName} on Documenso"
+msgstr "Accept team email request for {teamName} on Documenso"
+
+#: packages/email/templates/team-transfer-request.tsx:29
+msgid "Accept team transfer request on Documenso"
+msgstr "Accept team transfer request on Documenso"
+
#: packages/ui/primitives/document-dropzone.tsx:69
msgid "Add a document"
msgstr "Add a document"
-#: packages/ui/primitives/document-flow/add-settings.tsx:336
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:339
+#: packages/ui/primitives/document-flow/add-settings.tsx:378
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:468
msgid "Add a URL to redirect the user to once the document is signed"
msgstr "Add a URL to redirect the user to once the document is signed"
-#: packages/ui/primitives/document-flow/add-settings.tsx:248
+#: packages/ui/primitives/document-flow/add-settings.tsx:290
msgid "Add an external ID to the document. This can be used to identify the document in external systems."
msgstr "Add an external ID to the document. This can be used to identify the document in external systems."
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:256
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:385
msgid "Add an external ID to the template. This can be used to identify in external systems."
msgstr "Add an external ID to the template. This can be used to identify in external systems."
@@ -77,19 +405,19 @@ msgstr "Add another option"
msgid "Add another value"
msgstr "Add another value"
-#: packages/ui/primitives/document-flow/add-signers.tsx:662
+#: packages/ui/primitives/document-flow/add-signers.tsx:691
msgid "Add myself"
msgstr "Add myself"
-#: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:637
+#: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:645
msgid "Add Myself"
msgstr "Add Myself"
-#: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:623
+#: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:631
msgid "Add Placeholder Recipient"
msgstr "Add Placeholder Recipient"
-#: packages/ui/primitives/document-flow/add-signers.tsx:651
+#: packages/ui/primitives/document-flow/add-signers.tsx:680
msgid "Add Signer"
msgstr "Add Signer"
@@ -105,13 +433,13 @@ msgstr "Add text to the field"
msgid "Admin"
msgstr "Admin"
-#: packages/ui/primitives/document-flow/add-settings.tsx:230
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:238
+#: packages/ui/primitives/document-flow/add-settings.tsx:272
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:367
msgid "Advanced Options"
msgstr "Advanced Options"
-#: packages/ui/primitives/document-flow/add-fields.tsx:565
-#: packages/ui/primitives/template-flow/add-template-fields.tsx:402
+#: packages/ui/primitives/document-flow/add-fields.tsx:576
+#: packages/ui/primitives/template-flow/add-template-fields.tsx:409
msgid "Advanced settings"
msgstr "Advanced settings"
@@ -119,10 +447,34 @@ msgstr "Advanced settings"
msgid "After submission, a document will be automatically generated and added to your documents page. You will also receive a notification via email."
msgstr "After submission, a document will be automatically generated and added to your documents page. You will also receive a notification via email."
+#: packages/email/template-components/template-document-cancel.tsx:31
+msgid "All signatures have been voided."
+msgstr "All signatures have been voided."
+
+#: packages/email/templates/confirm-team-email.tsx:98
+msgid "Allow document recipients to reply directly to this email address"
+msgstr "Allow document recipients to reply directly to this email address"
+
+#: packages/email/templates/document-super-delete.tsx:22
+msgid "An admin has deleted your document \"{documentName}\"."
+msgstr "An admin has deleted your document \"{documentName}\"."
+
+#: packages/ui/primitives/pdf-viewer.tsx:167
+msgid "An error occurred while loading the document."
+msgstr "An error occurred while loading the document."
+
#: packages/lib/constants/recipient-roles.ts:8
msgid "Approve"
msgstr "Approve"
+#: packages/email/template-components/template-document-invite.tsx:106
+msgid "Approve Document"
+msgstr "Approve Document"
+
+#: packages/lib/constants/recipient-roles.ts:68
+#~ msgid "APPROVE_REQUEST"
+#~ msgstr "APPROVE_REQUEST"
+
#: packages/lib/constants/recipient-roles.ts:9
msgid "Approved"
msgstr "Approved"
@@ -131,18 +483,38 @@ msgstr "Approved"
msgid "Approver"
msgstr "Approver"
+#: packages/lib/constants/recipient-roles.ts:12
+msgid "Approvers"
+msgstr "Approvers"
+
#: packages/lib/constants/recipient-roles.ts:10
msgid "Approving"
msgstr "Approving"
-#: packages/ui/primitives/signature-pad/signature-pad.tsx:276
+#: packages/email/template-components/template-confirmation-email.tsx:25
+msgid "Before you get started, please confirm your email address by clicking the button below:"
+msgstr "Before you get started, please confirm your email address by clicking the button below:"
+
+#: packages/ui/primitives/signature-pad/signature-pad.tsx:377
msgid "Black"
msgstr "Black"
-#: packages/ui/primitives/signature-pad/signature-pad.tsx:290
+#: packages/ui/primitives/signature-pad/signature-pad.tsx:391
msgid "Blue"
msgstr "Blue"
+#: packages/email/templates/team-invite.tsx:84
+msgid "by <0>{senderName}0>"
+msgstr "by <0>{senderName}0>"
+
+#: packages/email/templates/confirm-team-email.tsx:87
+msgid "By accepting this request, you will be granting <0>{teamName}0> access to:"
+msgstr "By accepting this request, you will be granting <0>{teamName}0> access to:"
+
+#: packages/email/templates/team-transfer-request.tsx:70
+msgid "By accepting this request, you will take responsibility for any billing items associated with this team."
+msgstr "By accepting this request, you will take responsibility for any billing items associated with this team."
+
#: packages/ui/primitives/document-flow/field-item-advanced-settings.tsx:356
#: packages/ui/primitives/document-flow/send-document-action-dialog.tsx:58
msgid "Cancel"
@@ -152,29 +524,28 @@ msgstr "Cancel"
msgid "Cannot remove signer"
msgstr "Cannot remove signer"
-#: packages/ui/primitives/document-flow/add-signers.tsx:221
-#~ msgid "Cannot update signer because they have already signed a field"
-#~ msgstr "Cannot update signer because they have already signed a field"
-
-#: packages/lib/constants/recipient-roles.ts:17
+#: packages/lib/constants/recipient-roles.ts:18
msgid "Cc"
msgstr "Cc"
-#: packages/lib/constants/recipient-roles.ts:14
-#: packages/lib/constants/recipient-roles.ts:16
+#: packages/lib/constants/recipient-roles.ts:15
+#: packages/lib/constants/recipient-roles.ts:17
msgid "CC"
msgstr "CC"
-#: packages/lib/constants/recipient-roles.ts:15
+#: packages/lib/constants/recipient-roles.ts:16
msgid "CC'd"
msgstr "CC'd"
+#: packages/lib/constants/recipient-roles.ts:19
+msgid "Ccers"
+msgstr "Ccers"
+
#: packages/ui/primitives/document-flow/field-items-advanced-settings/text-field.tsx:86
msgid "Character Limit"
msgstr "Character Limit"
-#: packages/ui/primitives/document-flow/add-fields.tsx:993
-#: packages/ui/primitives/template-flow/add-template-fields.tsx:788
+#: packages/ui/primitives/document-flow/types.ts:58
msgid "Checkbox"
msgstr "Checkbox"
@@ -186,7 +557,7 @@ msgstr "Checkbox values"
msgid "Clear filters"
msgstr "Clear filters"
-#: packages/ui/primitives/signature-pad/signature-pad.tsx:310
+#: packages/ui/primitives/signature-pad/signature-pad.tsx:411
msgid "Clear Signature"
msgstr "Clear Signature"
@@ -198,61 +569,226 @@ msgstr "Click to insert field"
msgid "Close"
msgstr "Close"
+#: packages/email/template-components/template-document-completed.tsx:35
+#: packages/email/template-components/template-document-self-signed.tsx:36
+#: packages/lib/constants/document.ts:10
+msgid "Completed"
+msgstr "Completed"
+
+#: packages/email/templates/document-completed.tsx:23
+#: packages/email/templates/document-self-signed.tsx:19
+msgid "Completed Document"
+msgstr "Completed Document"
+
#: packages/lib/constants/template.ts:12
msgid "Configure Direct Recipient"
msgstr "Configure Direct Recipient"
-#: packages/ui/primitives/document-flow/add-fields.tsx:566
-#: packages/ui/primitives/template-flow/add-template-fields.tsx:403
+#: packages/ui/primitives/document-flow/add-fields.tsx:577
+#: packages/ui/primitives/template-flow/add-template-fields.tsx:410
msgid "Configure the {0} field"
msgstr "Configure the {0} field"
+#: packages/email/template-components/template-confirmation-email.tsx:35
+msgid "Confirm email"
+msgstr "Confirm email"
+
#: packages/ui/primitives/document-flow/document-flow-root.tsx:141
msgid "Continue"
msgstr "Continue"
+#: packages/email/template-components/template-document-invite.tsx:72
+#~ msgid "Continue by {0} the document."
+#~ msgstr "Continue by {0} the document."
+
+#: packages/email/template-components/template-document-invite.tsx:86
+msgid "Continue by approving the document."
+msgstr "Continue by approving the document."
+
+#: packages/email/template-components/template-document-completed.tsx:45
+msgid "Continue by downloading the document."
+msgstr "Continue by downloading the document."
+
+#: packages/email/template-components/template-document-invite.tsx:84
+msgid "Continue by signing the document."
+msgstr "Continue by signing the document."
+
+#: packages/email/template-components/template-document-invite.tsx:85
+msgid "Continue by viewing the document."
+msgstr "Continue by viewing the document."
+
+#: packages/ui/primitives/document-flow/add-subject.tsx:254
+msgid "Copied"
+msgstr "Copied"
+
#: packages/ui/components/document/document-share-button.tsx:46
+#: packages/ui/primitives/document-flow/add-subject.tsx:241
msgid "Copied to clipboard"
msgstr "Copied to clipboard"
+#: packages/ui/primitives/document-flow/add-subject.tsx:249
+msgid "Copy"
+msgstr "Copy"
+
+#: packages/ui/components/document/document-share-button.tsx:194
+msgid "Copy Link"
+msgstr "Copy Link"
+
+#: packages/email/template-components/template-document-self-signed.tsx:46
+msgid "Create a <0>free account0> to access your signed documents at any time."
+msgstr "Create a <0>free account0> to access your signed documents at any time."
+
+#: packages/email/template-components/template-document-self-signed.tsx:68
+msgid "Create account"
+msgstr "Create account"
+
#: packages/ui/primitives/document-flow/add-signature.tsx:360
msgid "Custom Text"
msgstr "Custom Text"
-#: packages/ui/primitives/document-flow/add-fields.tsx:889
-#: packages/ui/primitives/template-flow/add-template-fields.tsx:684
+#: packages/ui/primitives/document-flow/add-fields.tsx:934
+#: packages/ui/primitives/document-flow/types.ts:53
+#: packages/ui/primitives/template-flow/add-template-fields.tsx:697
msgid "Date"
msgstr "Date"
-#: packages/ui/primitives/document-flow/add-settings.tsx:271
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:279
+#: packages/ui/primitives/document-flow/add-settings.tsx:313
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:408
msgid "Date Format"
msgstr "Date Format"
-#: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:570
+#: packages/email/templates/team-invite.tsx:100
+msgid "Decline"
+msgstr "Decline"
+
+#: packages/email/templates/reset-password.tsx:71
+msgid "Didn't request a password change? We are here to help you secure your account, just <0>contact us.0>"
+msgstr "Didn't request a password change? We are here to help you secure your account, just <0>contact us.0>"
+
+#: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:578
msgid "Direct link receiver"
msgstr "Direct link receiver"
+#: packages/lib/jobs/definitions/emails/send-rejection-emails.ts:149
+msgid "Document \"{0}\" - Rejected by {1}"
+msgstr "Document \"{0}\" - Rejected by {1}"
+
+#: packages/lib/jobs/definitions/emails/send-rejection-emails.ts:109
+msgid "Document \"{0}\" - Rejection Confirmed"
+msgstr "Document \"{0}\" - Rejection Confirmed"
+
#: packages/ui/components/document/document-global-auth-access-select.tsx:62
-#: packages/ui/primitives/document-flow/add-settings.tsx:174
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:151
+#: packages/ui/primitives/document-flow/add-settings.tsx:216
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:202
msgid "Document access"
msgstr "Document access"
+#: packages/lib/utils/document-audit-logs.ts:306
+msgid "Document access auth updated"
+msgstr "Document access auth updated"
+
+#: packages/lib/server-only/document/delete-document.ts:246
+#: packages/lib/server-only/document/super-delete-document.ts:98
+msgid "Document Cancelled"
+msgstr "Document Cancelled"
+
+#: packages/lib/utils/document-audit-logs.ts:369
+#: packages/lib/utils/document-audit-logs.ts:370
+msgid "Document completed"
+msgstr "Document completed"
+
+#: packages/ui/components/document/document-email-checkboxes.tsx:168
+msgid "Document completed email"
+msgstr "Document completed email"
+
+#: packages/lib/utils/document-audit-logs.ts:286
+msgid "Document created"
+msgstr "Document created"
+
+#: packages/email/templates/document-created-from-direct-template.tsx:32
+#: packages/lib/server-only/template/create-document-from-direct-template.ts:567
+msgid "Document created from direct template"
+msgstr "Document created from direct template"
+
#: packages/lib/constants/template.ts:20
msgid "Document Creation"
msgstr "Document Creation"
+#: packages/lib/utils/document-audit-logs.ts:290
+msgid "Document deleted"
+msgstr "Document deleted"
+
+#: packages/ui/components/document/document-email-checkboxes.tsx:207
+msgid "Document deleted email"
+msgstr "Document deleted email"
+
+#: packages/lib/server-only/document/send-delete-email.ts:82
+msgid "Document Deleted!"
+msgstr "Document Deleted!"
+
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:219
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:228
+msgid "Document Distribution Method"
+msgstr "Document Distribution Method"
+
+#: packages/lib/utils/document-audit-logs.ts:326
+msgid "Document external ID updated"
+msgstr "Document external ID updated"
+
+#: packages/lib/utils/document-audit-logs.ts:334
+msgid "Document moved to team"
+msgstr "Document moved to team"
+
+#: packages/lib/utils/document-audit-logs.ts:318
+msgid "Document opened"
+msgstr "Document opened"
+
+#: packages/ui/components/document/document-email-checkboxes.tsx:128
+msgid "Document pending email"
+msgstr "Document pending email"
+
+#: packages/email/template-components/template-document-rejected.tsx:21
+msgid "Document Rejected"
+msgstr "Document Rejected"
+
+#~ msgid "Document Rejection Confirmed"
+#~ msgstr "Document Rejection Confirmed"
+
+#: packages/lib/utils/document-audit-logs.ts:330
+msgid "Document sent"
+msgstr "Document sent"
+
+#: packages/lib/utils/document-audit-logs.ts:310
+msgid "Document signing auth updated"
+msgstr "Document signing auth updated"
+
+#: packages/lib/utils/document-audit-logs.ts:322
+msgid "Document title updated"
+msgstr "Document title updated"
+
+#: packages/lib/utils/document-audit-logs.ts:314
+msgid "Document updated"
+msgstr "Document updated"
+
+#: packages/lib/utils/document-audit-logs.ts:302
+msgid "Document visibility updated"
+msgstr "Document visibility updated"
+
+#: packages/email/template-components/template-document-completed.tsx:57
#: packages/ui/components/document/document-download-button.tsx:68
msgid "Download"
msgstr "Download"
+#: packages/lib/constants/document.ts:13
+msgid "Draft"
+msgstr "Draft"
+
#: packages/ui/primitives/document-dropzone.tsx:162
msgid "Drag & drop your PDF here."
msgstr "Drag & drop your PDF here."
-#: packages/ui/primitives/document-flow/add-fields.tsx:1019
-#: packages/ui/primitives/template-flow/add-template-fields.tsx:814
+#: packages/ui/primitives/document-flow/add-fields.tsx:1065
+#: packages/ui/primitives/template-flow/add-template-fields.tsx:827
msgid "Dropdown"
msgstr "Dropdown"
@@ -260,20 +796,35 @@ msgstr "Dropdown"
msgid "Dropdown options"
msgstr "Dropdown options"
-#: packages/ui/primitives/document-flow/add-fields.tsx:837
+#: packages/lib/constants/document.ts:28
+#: packages/ui/primitives/document-flow/add-fields.tsx:882
#: packages/ui/primitives/document-flow/add-signature.tsx:272
-#: packages/ui/primitives/document-flow/add-signers.tsx:500
-#: packages/ui/primitives/template-flow/add-template-fields.tsx:632
-#: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:463
-#: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:470
+#: packages/ui/primitives/document-flow/add-signers.tsx:512
+#: packages/ui/primitives/document-flow/add-signers.tsx:519
+#: packages/ui/primitives/document-flow/types.ts:54
+#: packages/ui/primitives/template-flow/add-template-fields.tsx:645
+#: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:471
+#: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:478
msgid "Email"
msgstr "Email"
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:184
+#: packages/ui/primitives/document-flow/add-signature.types.ts:7
+msgid "Email is required"
+msgstr "Email is required"
+
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:307
msgid "Email Options"
msgstr "Email Options"
-#: packages/ui/primitives/document-flow/add-fields.tsx:1082
+#: packages/lib/utils/document-audit-logs.ts:363
+msgid "Email resent"
+msgstr "Email resent"
+
+#: packages/lib/utils/document-audit-logs.ts:363
+msgid "Email sent"
+msgstr "Email sent"
+
+#: packages/ui/primitives/document-flow/add-fields.tsx:1130
msgid "Empty field"
msgstr "Empty field"
@@ -282,20 +833,25 @@ msgid "Enable Direct Link Signing"
msgstr "Enable Direct Link Signing"
#: packages/ui/primitives/document-flow/add-signers.tsx:401
-#: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:362
+#: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:370
msgid "Enable signing order"
msgstr "Enable signing order"
+#: packages/ui/primitives/document-flow/add-fields.tsx:802
+msgid "Enable Typed Signatures"
+msgstr "Enable Typed Signatures"
+
#: packages/ui/primitives/document-password-dialog.tsx:84
msgid "Enter password"
msgstr "Enter password"
#: packages/ui/primitives/document-flow/field-item-advanced-settings.tsx:257
+#: packages/ui/primitives/pdf-viewer.tsx:166
msgid "Error"
msgstr "Error"
-#: packages/ui/primitives/document-flow/add-settings.tsx:241
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:249
+#: packages/ui/primitives/document-flow/add-settings.tsx:283
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:378
msgid "External ID"
msgstr "External ID"
@@ -328,6 +884,14 @@ msgstr "Field label"
msgid "Field placeholder"
msgstr "Field placeholder"
+#: packages/lib/utils/document-audit-logs.ts:294
+msgid "Field signed"
+msgstr "Field signed"
+
+#: packages/lib/utils/document-audit-logs.ts:298
+msgid "Field unsigned"
+msgstr "Field unsigned"
+
#: packages/ui/primitives/document-flow/field-items-advanced-settings/date-field.tsx:56
#: packages/ui/primitives/document-flow/field-items-advanced-settings/email-field.tsx:38
#: packages/ui/primitives/document-flow/field-items-advanced-settings/initials-field.tsx:38
@@ -337,6 +901,22 @@ msgstr "Field placeholder"
msgid "Font Size"
msgstr "Font Size"
+#: packages/lib/server-only/auth/send-forgot-password.ts:61
+msgid "Forgot Password?"
+msgstr "Forgot Password?"
+
+#: packages/email/template-components/template-forgot-password.tsx:21
+msgid "Forgot your password?"
+msgstr "Forgot your password?"
+
+#: packages/ui/primitives/document-flow/types.ts:50
+msgid "Free Signature"
+msgstr "Free Signature"
+
+#: packages/ui/primitives/document-flow/add-subject.tsx:89
+msgid "Generate Links"
+msgstr "Generate Links"
+
#: packages/ui/components/document/document-global-auth-action-select.tsx:64
msgid "Global recipient action authentication"
msgstr "Global recipient action authentication"
@@ -345,41 +925,75 @@ msgstr "Global recipient action authentication"
msgid "Go Back"
msgstr "Go Back"
-#: packages/ui/primitives/signature-pad/signature-pad.tsx:297
+#: packages/ui/primitives/signature-pad/signature-pad.tsx:398
msgid "Green"
msgstr "Green"
-#: packages/lib/constants/recipient-roles.ts:72
+#~ msgid "Hello {recipientName},"
+#~ msgstr "Hello {recipientName},"
+
+#: packages/email/templates/reset-password.tsx:56
+msgid "Hi, {userName} <0>({userEmail})0>"
+msgstr "Hi, {userName} <0>({userEmail})0>"
+
+#: packages/lib/constants/recipient-roles.ts:44
msgid "I am a signer of this document"
msgstr "I am a signer of this document"
-#: packages/lib/constants/recipient-roles.ts:75
+#: packages/lib/constants/recipient-roles.ts:47
msgid "I am a viewer of this document"
msgstr "I am a viewer of this document"
-#: packages/lib/constants/recipient-roles.ts:73
+#: packages/lib/constants/recipient-roles.ts:45
msgid "I am an approver of this document"
msgstr "I am an approver of this document"
-#: packages/lib/constants/recipient-roles.ts:74
+#: packages/lib/constants/recipient-roles.ts:46
msgid "I am required to receive a copy of this document"
msgstr "I am required to receive a copy of this document"
-#: packages/lib/constants/recipient-roles.ts:74
-#~ msgid "I am required to recieve a copy of this document"
-#~ msgstr "I am required to recieve a copy of this document"
-
#: packages/ui/components/recipient/recipient-action-auth-select.tsx:29
#: packages/ui/components/recipient/recipient-action-auth-select.tsx:87
msgid "Inherit authentication method"
msgstr "Inherit authentication method"
+#: packages/ui/primitives/document-flow/types.ts:51
+msgid "Initials"
+msgstr "Initials"
+
+#: packages/ui/primitives/document-flow/add-signers.types.ts:17
+msgid "Invalid email"
+msgstr "Invalid email"
+
+#: packages/ui/primitives/document-flow/add-signature.types.ts:8
+msgid "Invalid email address"
+msgstr "Invalid email address"
+
+#: packages/email/templates/team-invite.tsx:72
+msgid "Join {teamName} on Documenso"
+msgstr "Join {teamName} on Documenso"
+
#: packages/ui/primitives/document-flow/field-items-advanced-settings/number-field.tsx:67
#: packages/ui/primitives/document-flow/field-items-advanced-settings/number-field.tsx:72
#: packages/ui/primitives/document-flow/field-items-advanced-settings/text-field.tsx:48
msgid "Label"
msgstr "Label"
+#: packages/ui/primitives/document-flow/add-settings.tsx:176
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:162
+msgid "Language"
+msgstr "Language"
+
+#: packages/email/templates/confirm-team-email.tsx:124
+#: packages/email/templates/team-transfer-request.tsx:87
+msgid "Link expires in 1 hour."
+msgstr "Link expires in 1 hour."
+
+#: packages/ui/primitives/lazy-pdf-viewer.tsx:15
+#: packages/ui/primitives/pdf-viewer.tsx:44
+msgid "Loading document..."
+msgstr "Loading document..."
+
#: packages/lib/constants/teams.ts:11
msgid "Manager"
msgstr "Manager"
@@ -392,8 +1006,8 @@ msgstr "Max"
msgid "Member"
msgstr "Member"
-#: packages/ui/primitives/document-flow/add-subject.tsx:95
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:215
+#: packages/ui/primitives/document-flow/add-subject.tsx:160
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:338
msgid "Message <0>(Optional)0>"
msgstr "Message <0>(Optional)0>"
@@ -401,13 +1015,14 @@ msgstr "Message <0>(Optional)0>"
msgid "Min"
msgstr "Min"
-#: packages/ui/primitives/document-flow/add-fields.tsx:863
+#: packages/ui/primitives/document-flow/add-fields.tsx:908
#: packages/ui/primitives/document-flow/add-signature.tsx:298
-#: packages/ui/primitives/document-flow/add-signers.tsx:535
-#: packages/ui/primitives/document-flow/add-signers.tsx:541
-#: packages/ui/primitives/template-flow/add-template-fields.tsx:658
-#: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:498
-#: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:504
+#: packages/ui/primitives/document-flow/add-signers.tsx:550
+#: packages/ui/primitives/document-flow/add-signers.tsx:556
+#: packages/ui/primitives/document-flow/types.ts:55
+#: packages/ui/primitives/template-flow/add-template-fields.tsx:671
+#: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:506
+#: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:512
msgid "Name"
msgstr "Name"
@@ -423,13 +1038,17 @@ msgstr "Needs to sign"
msgid "Needs to view"
msgstr "Needs to view"
-#: packages/ui/primitives/document-flow/add-fields.tsx:674
-#: packages/ui/primitives/template-flow/add-template-fields.tsx:497
+#: packages/ui/primitives/document-flow/add-fields.tsx:693
+#: packages/ui/primitives/template-flow/add-template-fields.tsx:511
msgid "No recipient matching this description was found."
msgstr "No recipient matching this description was found."
-#: packages/ui/primitives/document-flow/add-fields.tsx:690
-#: packages/ui/primitives/template-flow/add-template-fields.tsx:513
+#: packages/ui/primitives/document-flow/add-subject.tsx:215
+msgid "No recipients"
+msgstr "No recipients"
+
+#: packages/ui/primitives/document-flow/add-fields.tsx:708
+#: packages/ui/primitives/template-flow/add-template-fields.tsx:526
msgid "No recipients with this role"
msgstr "No recipients with this role"
@@ -453,8 +1072,13 @@ msgstr "No signature field found"
msgid "No value found."
msgstr "No value found."
-#: packages/ui/primitives/document-flow/add-fields.tsx:941
-#: packages/ui/primitives/template-flow/add-template-fields.tsx:736
+#: packages/lib/constants/document.ts:32
+msgid "None"
+msgstr "None"
+
+#: packages/ui/primitives/document-flow/add-fields.tsx:986
+#: packages/ui/primitives/document-flow/types.ts:56
+#: packages/ui/primitives/template-flow/add-template-fields.tsx:749
msgid "Number"
msgstr "Number"
@@ -474,10 +1098,34 @@ msgstr "Once your template is set up, share the link anywhere you want. The pers
msgid "Page {0} of {1}"
msgstr "Page {0} of {1}"
+#: packages/ui/primitives/pdf-viewer.tsx:259
+msgid "Page {0} of {numPages}"
+msgstr "Page {0} of {numPages}"
+
#: packages/ui/primitives/document-password-dialog.tsx:62
msgid "Password Required"
msgstr "Password Required"
+#: packages/email/templates/forgot-password.tsx:19
+msgid "Password Reset Requested"
+msgstr "Password Reset Requested"
+
+#: packages/email/templates/reset-password.tsx:20
+msgid "Password Reset Successful"
+msgstr "Password Reset Successful"
+
+#: packages/email/template-components/template-reset-password.tsx:22
+msgid "Password updated!"
+msgstr "Password updated!"
+
+#: packages/lib/constants/document.ts:16
+msgid "Pending"
+msgstr "Pending"
+
+#: packages/email/templates/document-pending.tsx:19
+msgid "Pending Document"
+msgstr "Pending Document"
+
#: packages/ui/primitives/document-flow/field-items-advanced-settings/checkbox-field.tsx:156
msgid "Pick a number"
msgstr "Pick a number"
@@ -488,8 +1136,41 @@ msgstr "Pick a number"
msgid "Placeholder"
msgstr "Placeholder"
-#: packages/ui/primitives/document-flow/add-fields.tsx:967
-#: packages/ui/primitives/template-flow/add-template-fields.tsx:762
+#: packages/email/template-components/template-document-invite.tsx:56
+msgid "Please {0} your document<0/>\"{documentName}\""
+msgstr "Please {0} your document<0/>\"{documentName}\""
+
+#: packages/email/templates/document-invite.tsx:50
+msgid "Please {action} your document {documentName}"
+msgstr "Please {action} your document {documentName}"
+
+#: packages/lib/jobs/definitions/emails/send-signing-email.ts:111
+msgid "Please {recipientActionVerb} this document"
+msgstr "Please {recipientActionVerb} this document"
+
+#: packages/lib/jobs/definitions/emails/send-signing-email.ts:125
+msgid "Please {recipientActionVerb} this document created by your direct template"
+msgstr "Please {recipientActionVerb} this document created by your direct template"
+
+#: packages/lib/jobs/definitions/emails/send-signing-email.ts:117
+msgid "Please {recipientActionVerb} your document"
+msgstr "Please {recipientActionVerb} your document"
+
+#: packages/lib/server-only/auth/send-confirmation-email.ts:67
+msgid "Please confirm your email"
+msgstr "Please confirm your email"
+
+#: packages/email/templates/confirm-email.tsx:17
+msgid "Please confirm your email address"
+msgstr "Please confirm your email address"
+
+#: packages/ui/primitives/pdf-viewer.tsx:223
+#: packages/ui/primitives/pdf-viewer.tsx:238
+msgid "Please try again or contact our support."
+msgstr "Please try again or contact our support."
+
+#: packages/ui/primitives/document-flow/types.ts:57
+#: packages/ui/primitives/template-flow/add-template-fields.tsx:775
msgid "Radio"
msgstr "Radio"
@@ -505,26 +1186,71 @@ msgstr "Radio values"
msgid "Read only"
msgstr "Read only"
+#: packages/email/template-components/template-document-rejected.tsx:32
+msgid "Reason for rejection: {rejectionReason}"
+msgstr "Reason for rejection: {rejectionReason}"
+
#: packages/ui/components/recipient/recipient-role-select.tsx:95
msgid "Receives copy"
msgstr "Receives copy"
+#: packages/lib/utils/document-audit-logs.ts:338
+#: packages/lib/utils/document-audit-logs.ts:353
+msgid "Recipient"
+msgstr "Recipient"
+
#: packages/ui/components/recipient/recipient-action-auth-select.tsx:39
-#: packages/ui/primitives/document-flow/add-settings.tsx:215
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:169
+#: packages/ui/primitives/document-flow/add-settings.tsx:257
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:291
msgid "Recipient action authentication"
msgstr "Recipient action authentication"
-#: packages/ui/primitives/signature-pad/signature-pad.tsx:283
+#: packages/ui/components/document/document-email-checkboxes.tsx:89
+msgid "Recipient removed email"
+msgstr "Recipient removed email"
+
+#: packages/ui/components/document/document-email-checkboxes.tsx:50
+msgid "Recipient signing request email"
+msgstr "Recipient signing request email"
+
+#: packages/ui/primitives/signature-pad/signature-pad.tsx:384
msgid "Red"
msgstr "Red"
-#: packages/ui/primitives/document-flow/add-settings.tsx:329
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:332
+#: packages/ui/primitives/document-flow/add-settings.tsx:371
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:461
msgid "Redirect URL"
msgstr "Redirect URL"
-#: packages/ui/primitives/document-flow/add-fields.tsx:1069
+#: packages/email/template-components/template-document-invite.tsx:96
+msgid "Reject Document"
+msgstr "Reject Document"
+
+#: packages/email/template-components/template-document-rejection-confirmed.tsx:22
+msgid "Rejection Confirmed"
+msgstr "Rejection Confirmed"
+
+#: packages/email/template-components/template-document-rejection-confirmed.tsx:34
+msgid "Rejection reason: {reason}"
+msgstr "Rejection reason: {reason}"
+
+#: packages/lib/server-only/document/resend-document.tsx:192
+msgid "Reminder: {0}"
+msgstr "Reminder: {0}"
+
+#: packages/lib/server-only/document/resend-document.tsx:132
+msgid "Reminder: {0} invited you to {recipientActionVerb} a document"
+msgstr "Reminder: {0} invited you to {recipientActionVerb} a document"
+
+#: packages/lib/server-only/document/resend-document.tsx:121
+msgid "Reminder: Please {recipientActionVerb} this document"
+msgstr "Reminder: Please {recipientActionVerb} this document"
+
+#: packages/lib/server-only/document/resend-document.tsx:127
+msgid "Reminder: Please {recipientActionVerb} your document"
+msgstr "Reminder: Please {recipientActionVerb} your document"
+
+#: packages/ui/primitives/document-flow/add-fields.tsx:1117
msgid "Remove"
msgstr "Remove"
@@ -536,6 +1262,18 @@ msgstr "Remove"
msgid "Required field"
msgstr "Required field"
+#: packages/ui/primitives/document-flow/add-subject.tsx:84
+msgid "Resend"
+msgstr "Resend"
+
+#: packages/email/template-components/template-forgot-password.tsx:33
+msgid "Reset Password"
+msgstr "Reset Password"
+
+#: packages/ui/components/document/document-share-button.tsx:147
+msgid "Rest assured, your document is strictly confidential and will never be shared. Only your signing experience will be highlighted. Share your personalized signing card to showcase your signature!"
+msgstr "Rest assured, your document is strictly confidential and will never be shared. Only your signing experience will be highlighted. Share your personalized signing card to showcase your signature!"
+
#: packages/ui/primitives/data-table-pagination.tsx:55
msgid "Rows per page"
msgstr "Rows per page"
@@ -544,7 +1282,7 @@ msgstr "Rows per page"
msgid "Save"
msgstr "Save"
-#: packages/ui/primitives/template-flow/add-template-fields.tsx:848
+#: packages/ui/primitives/template-flow/add-template-fields.tsx:861
msgid "Save Template"
msgstr "Save Template"
@@ -553,6 +1291,7 @@ msgid "Search languages..."
msgstr "Search languages..."
#: packages/ui/primitives/document-flow/field-items-advanced-settings/dropdown-field.tsx:115
+#: packages/ui/primitives/document-flow/types.ts:59
msgid "Select"
msgstr "Select"
@@ -568,7 +1307,8 @@ msgstr "Select at least"
msgid "Select default option"
msgstr "Select default option"
-#: packages/ui/primitives/document-flow/add-subject.tsx:124
+#: packages/ui/primitives/document-flow/add-subject.tsx:82
+#: packages/ui/primitives/document-flow/add-subject.tsx:85
#: packages/ui/primitives/document-flow/send-document-action-dialog.tsx:34
#: packages/ui/primitives/document-flow/send-document-action-dialog.tsx:64
msgid "Send"
@@ -578,6 +1318,30 @@ msgstr "Send"
msgid "Send Document"
msgstr "Send Document"
+#: packages/ui/components/document/document-email-checkboxes.tsx:158
+msgid "Send document completed email"
+msgstr "Send document completed email"
+
+#: packages/ui/components/document/document-email-checkboxes.tsx:197
+msgid "Send document deleted email"
+msgstr "Send document deleted email"
+
+#: packages/ui/components/document/document-email-checkboxes.tsx:118
+msgid "Send document pending email"
+msgstr "Send document pending email"
+
+#: packages/email/templates/confirm-team-email.tsx:101
+msgid "Send documents on behalf of the team using the email address"
+msgstr "Send documents on behalf of the team using the email address"
+
+#: packages/ui/components/document/document-email-checkboxes.tsx:79
+msgid "Send recipient removed email"
+msgstr "Send recipient removed email"
+
+#: packages/ui/components/document/document-email-checkboxes.tsx:40
+msgid "Send recipient signing request email"
+msgstr "Send recipient signing request email"
+
#: packages/ui/components/document/document-share-button.tsx:135
msgid "Share Signature Card"
msgstr "Share Signature Card"
@@ -586,34 +1350,64 @@ msgstr "Share Signature Card"
msgid "Share the Link"
msgstr "Share the Link"
-#: packages/ui/primitives/document-flow/add-signers.tsx:680
-#: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:655
+#: packages/ui/components/document/document-share-button.tsx:143
+msgid "Share your signing experience!"
+msgstr "Share your signing experience!"
+
+#: packages/ui/primitives/document-flow/add-signers.tsx:709
+#: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:663
msgid "Show advanced settings"
msgstr "Show advanced settings"
-#: packages/lib/constants/recipient-roles.ts:20
+#: packages/lib/constants/recipient-roles.ts:22
msgid "Sign"
msgstr "Sign"
-#: packages/ui/primitives/document-flow/add-fields.tsx:785
+#: packages/email/template-components/template-document-invite.tsx:104
+msgid "Sign Document"
+msgstr "Sign Document"
+
+#: packages/email/template-components/template-reset-password.tsx:34
+msgid "Sign In"
+msgstr "Sign In"
+
+#: packages/ui/primitives/document-flow/add-fields.tsx:830
#: packages/ui/primitives/document-flow/add-signature.tsx:323
#: packages/ui/primitives/document-flow/field-icon.tsx:52
-#: packages/ui/primitives/template-flow/add-template-fields.tsx:580
+#: packages/ui/primitives/document-flow/types.ts:49
+#: packages/ui/primitives/template-flow/add-template-fields.tsx:593
msgid "Signature"
msgstr "Signature"
-#: packages/lib/constants/recipient-roles.ts:21
+#: packages/lib/constants/recipient-roles.ts:23
msgid "Signed"
msgstr "Signed"
-#: packages/lib/constants/recipient-roles.ts:23
+#: packages/lib/constants/recipient-roles.ts:25
msgid "Signer"
msgstr "Signer"
-#: packages/lib/constants/recipient-roles.ts:22
+#: packages/lib/constants/recipient-roles.ts:26
+msgid "Signers"
+msgstr "Signers"
+
+#: packages/ui/primitives/document-flow/add-signers.types.ts:36
+msgid "Signers must have unique emails"
+msgstr "Signers must have unique emails"
+
+#: packages/lib/constants/recipient-roles.ts:24
msgid "Signing"
msgstr "Signing"
+#: packages/lib/server-only/document/send-completed-email.ts:114
+#: packages/lib/server-only/document/send-completed-email.ts:194
+msgid "Signing Complete!"
+msgstr "Signing Complete!"
+
+#: packages/lib/constants/recipient-roles.ts:66
+#~ msgid "SIGNING_REQUEST"
+#~ msgstr "SIGNING_REQUEST"
+
#: packages/ui/primitives/document-flow/missing-signature-field-dialog.tsx:34
msgid "Some signers have not been assigned a signature field. Please assign at least 1 signature field to each signer before proceeding."
msgstr "Some signers have not been assigned a signature field. Please assign at least 1 signature field to each signer before proceeding."
@@ -622,6 +1416,11 @@ msgstr "Some signers have not been assigned a signature field. Please assign at
msgid "Something went wrong"
msgstr "Something went wrong"
+#: packages/ui/primitives/pdf-viewer.tsx:220
+#: packages/ui/primitives/pdf-viewer.tsx:235
+msgid "Something went wrong while loading the document."
+msgstr "Something went wrong while loading the document."
+
#: packages/ui/primitives/data-table.tsx:136
msgid "Something went wrong."
msgstr "Something went wrong."
@@ -630,8 +1429,8 @@ msgstr "Something went wrong."
msgid "Step <0>{step} of {maxStep}0>"
msgstr "Step <0>{step} of {maxStep}0>"
-#: packages/ui/primitives/document-flow/add-subject.tsx:78
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:195
+#: packages/ui/primitives/document-flow/add-subject.tsx:143
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:318
msgid "Subject <0>(Optional)0>"
msgstr "Subject <0>(Optional)0>"
@@ -639,15 +1438,36 @@ msgstr "Subject <0>(Optional)0>"
msgid "Submit"
msgstr "Submit"
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:134
+#: packages/lib/server-only/team/delete-team.ts:124
+msgid "Team \"{0}\" has been deleted on Documenso"
+msgstr "Team \"{0}\" has been deleted on Documenso"
+
+#: packages/lib/server-only/team/delete-team-email.ts:104
+msgid "Team email has been revoked for {0}"
+msgstr "Team email has been revoked for {0}"
+
+#: packages/email/templates/team-email-removed.tsx:59
+msgid "Team email removed"
+msgstr "Team email removed"
+
+#: packages/email/templates/team-email-removed.tsx:29
+msgid "Team email removed for {teamName} on Documenso"
+msgstr "Team email removed for {teamName} on Documenso"
+
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:145
msgid "Template title"
msgstr "Template title"
-#: packages/ui/primitives/document-flow/add-fields.tsx:915
-#: packages/ui/primitives/template-flow/add-template-fields.tsx:710
+#: packages/ui/primitives/document-flow/add-fields.tsx:960
+#: packages/ui/primitives/document-flow/types.ts:52
+#: packages/ui/primitives/template-flow/add-template-fields.tsx:723
msgid "Text"
msgstr "Text"
+#: packages/email/template-components/template-forgot-password.tsx:25
+msgid "That's okay, it happens! Click the button below to reset your password."
+msgstr "That's okay, it happens! Click the button below to reset your password."
+
#: packages/ui/components/recipient/recipient-action-auth-select.tsx:44
msgid "The authentication required for recipients to sign fields"
msgstr "The authentication required for recipients to sign fields"
@@ -660,14 +1480,33 @@ msgstr "The authentication required for recipients to sign the signature field."
msgid "The authentication required for recipients to view the document."
msgstr "The authentication required for recipients to view the document."
+#~ msgid "The document owner has been notified of this rejection. No further action is required from you at this time."
+#~ msgstr "The document owner has been notified of this rejection. No further action is required from you at this time."
+
+#: packages/email/template-components/template-document-rejection-confirmed.tsx:39
+msgid "The document owner has been notified of this rejection. No further action is required from you at this time. The document owner may contact you with any questions regarding this rejection."
+msgstr "The document owner has been notified of this rejection. No further action is required from you at this time. The document owner may contact you with any questions regarding this rejection."
+
#: packages/ui/components/document/document-send-email-message-helper.tsx:31
msgid "The document's name"
msgstr "The document's name"
+#: packages/email/templates/team-delete.tsx:37
+msgid "The following team has been deleted by its owner. You will no longer be able to access this team and its documents"
+msgstr "The following team has been deleted by its owner. You will no longer be able to access this team and its documents"
+
+#: packages/email/templates/team-delete.tsx:36
+msgid "The following team has been deleted by you"
+msgstr "The following team has been deleted by you"
+
#: packages/ui/primitives/document-password-dialog.tsx:52
msgid "The password you have entered is incorrect. Please try again."
msgstr "The password you have entered is incorrect. Please try again."
+#: packages/email/template-components/template-document-super-delete.tsx:38
+msgid "The reason provided for deletion is the following:"
+msgstr "The reason provided for deletion is the following:"
+
#: packages/ui/components/recipient/recipient-role-select.tsx:103
msgid "The recipient is not required to take any action and receives a copy of the document after it is completed."
msgstr "The recipient is not required to take any action and receives a copy of the document after it is completed."
@@ -700,11 +1539,23 @@ msgstr "The signer's email"
msgid "The signer's name"
msgstr "The signer's name"
+#: packages/ui/primitives/document-flow/add-subject.tsx:243
+msgid "The signing link has been copied to your clipboard."
+msgstr "The signing link has been copied to your clipboard."
+
+#: packages/email/templates/team-email-removed.tsx:63
+msgid "The team email <0>{teamEmail}0> has been removed from the following team"
+msgstr "The team email <0>{teamEmail}0> has been removed from the following team"
+
#: packages/ui/components/document/document-global-auth-action-select.tsx:72
msgid "This can be overriden by setting the authentication requirements directly on each recipient in the next step."
msgstr "This can be overriden by setting the authentication requirements directly on each recipient in the next step."
-#: packages/ui/primitives/document-flow/add-fields.tsx:746
+#: packages/email/template-components/template-document-super-delete.tsx:31
+msgid "This document can not be recovered, if you would like to dispute the reason for future documents please contact support."
+msgstr "This document can not be recovered, if you would like to dispute the reason for future documents please contact support."
+
+#: packages/ui/primitives/document-flow/add-fields.tsx:764
msgid "This document has already been sent to this recipient. You can no longer edit this recipient."
msgstr "This document has already been sent to this recipient. You can no longer edit this recipient."
@@ -712,41 +1563,72 @@ msgstr "This document has already been sent to this recipient. You can no longer
msgid "This document is password protected. Please enter the password to view the document."
msgstr "This document is password protected. Please enter the password to view the document."
-#: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:573
+#: packages/email/template-components/template-footer.tsx:17
+msgid "This document was sent using <0>Documenso.0>"
+msgstr "This document was sent using <0>Documenso.0>"
+
+#~ msgid "This email confirms that you have rejected the document \"{documentName}\" sent by {documentOwnerName}."
+#~ msgstr "This email confirms that you have rejected the document \"{documentName}\" sent by {documentOwnerName}."
+
+#: packages/email/template-components/template-document-rejection-confirmed.tsx:26
+msgid "This email confirms that you have rejected the document <0>\"{documentName}\"0> sent by {documentOwnerName}."
+msgstr "This email confirms that you have rejected the document <0>\"{documentName}\"0> sent by {documentOwnerName}."
+
+#: packages/ui/components/document/document-email-checkboxes.tsx:94
+msgid "This email is sent to the recipient if they are removed from a pending document."
+msgstr "This email is sent to the recipient if they are removed from a pending document."
+
+#: packages/ui/components/document/document-email-checkboxes.tsx:55
+msgid "This email is sent to the recipient requesting them to sign the document."
+msgstr "This email is sent to the recipient requesting them to sign the document."
+
+#: packages/ui/components/document/document-email-checkboxes.tsx:133
+msgid "This email will be sent to the recipient who has just signed the document, if there are still other recipients who have not signed yet."
+msgstr "This email will be sent to the recipient who has just signed the document, if there are still other recipients who have not signed yet."
+
+#: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:581
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."
msgstr "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."
-#: packages/ui/primitives/document-flow/add-fields.tsx:1050
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:233
+msgid "This is how the document will reach the recipients once the document is ready for signing."
+msgstr "This is how the document will reach the recipients once the document is ready for signing."
+
+#: packages/ui/primitives/document-flow/add-fields.tsx:1097
msgid "This recipient can no longer be modified as they have signed a field, or completed the document."
msgstr "This recipient can no longer be modified as they have signed a field, or completed the document."
-#: packages/ui/primitives/document-flow/add-signers.tsx:165
-#~ msgid "This signer has already received the document."
-#~ msgstr "This signer has already received the document."
-
#: packages/ui/primitives/document-flow/add-signers.tsx:194
msgid "This signer has already signed the document."
msgstr "This signer has already signed the document."
+#: packages/ui/components/document/document-email-checkboxes.tsx:212
+msgid "This will be sent to all recipients if a pending document has been deleted."
+msgstr "This will be sent to all recipients if a pending document has been deleted."
+
+#: packages/ui/components/document/document-email-checkboxes.tsx:173
+msgid "This will be sent to all recipients once the document has been fully completed."
+msgstr "This will be sent to all recipients once the document has been fully completed."
+
#: packages/ui/components/recipient/recipient-action-auth-select.tsx:48
msgid "This will override any global settings."
msgstr "This will override any global settings."
-#: packages/ui/primitives/document-flow/add-settings.tsx:305
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:309
+#: packages/ui/primitives/document-flow/add-settings.tsx:347
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:438
msgid "Time Zone"
msgstr "Time Zone"
-#: packages/ui/primitives/document-flow/add-settings.tsx:153
+#: packages/ui/primitives/document-flow/add-settings.tsx:155
msgid "Title"
msgstr "Title"
-#: packages/ui/primitives/document-flow/add-fields.tsx:1033
-#: packages/ui/primitives/template-flow/add-template-fields.tsx:828
+#: packages/ui/primitives/document-flow/add-fields.tsx:1080
+#: packages/ui/primitives/template-flow/add-template-fields.tsx:841
msgid "To proceed further, please set at least one value for the {0} field."
msgstr "To proceed further, please set at least one value for the {0} field."
-#: packages/ui/primitives/document-flow/add-subject.tsx:124
+#: packages/ui/primitives/document-flow/add-subject.tsx:86
msgid "Update"
msgstr "Update"
@@ -772,38 +1654,158 @@ msgstr "Validation"
msgid "Value"
msgstr "Value"
-#: packages/lib/constants/recipient-roles.ts:26
+#: packages/email/templates/confirm-team-email.tsx:71
+msgid "Verify your team email address"
+msgstr "Verify your team email address"
+
+#: packages/lib/constants/recipient-roles.ts:29
msgid "View"
msgstr "View"
-#: packages/lib/constants/recipient-roles.ts:27
+#: packages/email/templates/confirm-team-email.tsx:95
+msgid "View all documents sent to and from this email address"
+msgstr "View all documents sent to and from this email address"
+
+#: packages/email/templates/document-created-from-direct-template.tsx:75
+msgid "View document"
+msgstr "View document"
+
+#: packages/email/template-components/template-document-invite.tsx:105
+#: packages/email/template-components/template-document-rejected.tsx:44
+#: packages/ui/primitives/document-flow/add-subject.tsx:90
+#: packages/ui/primitives/document-flow/add-subject.tsx:91
+msgid "View Document"
+msgstr "View Document"
+
+#: packages/email/template-components/template-document-self-signed.tsx:79
+msgid "View plans"
+msgstr "View plans"
+
+#: packages/lib/constants/recipient-roles.ts:67
+#~ msgid "VIEW_REQUEST"
+#~ msgstr "VIEW_REQUEST"
+
+#: packages/lib/constants/recipient-roles.ts:30
msgid "Viewed"
msgstr "Viewed"
-#: packages/lib/constants/recipient-roles.ts:29
+#: packages/lib/constants/recipient-roles.ts:32
msgid "Viewer"
msgstr "Viewer"
-#: packages/lib/constants/recipient-roles.ts:28
+#: packages/lib/constants/recipient-roles.ts:33
+msgid "Viewers"
+msgstr "Viewers"
+
+#: packages/lib/constants/recipient-roles.ts:31
msgid "Viewing"
msgstr "Viewing"
-#: packages/ui/primitives/signature-pad/signature-pad.tsx:280
-#~ msgid "White"
-#~ msgstr "White"
+#: packages/email/template-components/template-document-pending.tsx:31
+msgid "Waiting for others"
+msgstr "Waiting for others"
+
+#: packages/lib/server-only/document/send-pending-email.ts:96
+msgid "Waiting for others to complete signing."
+msgstr "Waiting for others to complete signing."
+
+#: packages/ui/primitives/document-flow/add-subject.tsx:205
+msgid "We will generate signing links for with you, which you can send to the recipients through your method of choice."
+msgstr "We will generate signing links for with you, which you can send to the recipients through your method of choice."
+
+#: packages/ui/primitives/document-flow/add-subject.tsx:201
+msgid "We won't send anything to notify recipients."
+msgstr "We won't send anything to notify recipients."
+
+#: packages/email/template-components/template-document-pending.tsx:41
+msgid "We're still waiting for other signers to sign this document.<0/>We'll notify you as soon as it's ready."
+msgstr "We're still waiting for other signers to sign this document.<0/>We'll notify you as soon as it's ready."
+
+#: packages/email/templates/reset-password.tsx:65
+msgid "We've changed your password as you asked. You can now sign in with your new password."
+msgstr "We've changed your password as you asked. You can now sign in with your new password."
+
+#: packages/email/template-components/template-confirmation-email.tsx:21
+msgid "Welcome to Documenso!"
+msgstr "Welcome to Documenso!"
+
+#: packages/lib/utils/document-audit-logs.ts:258
+msgid "You"
+msgstr "You"
#: packages/ui/primitives/document-flow/send-document-action-dialog.tsx:44
msgid "You are about to send this document to the recipients. Are you sure you want to continue?"
msgstr "You are about to send this document to the recipients. Are you sure you want to continue?"
+#: packages/email/template-components/template-confirmation-email.tsx:38
+msgid "You can also copy and paste this link into your browser: {confirmationLink} (link expires in 1 hour)"
+msgstr "You can also copy and paste this link into your browser: {confirmationLink} (link expires in 1 hour)"
+
+#: packages/email/templates/confirm-team-email.tsx:106
+msgid "You can revoke access at any time in your team settings on Documenso <0>here.0>"
+msgstr "You can revoke access at any time in your team settings on Documenso <0>here.0>"
+
#: packages/ui/components/document/document-send-email-message-helper.tsx:11
msgid "You can use the following variables in your message:"
msgstr "You can use the following variables in your message:"
+#: packages/email/template-components/template-document-rejected.tsx:37
+msgid "You can view the document and its status by clicking the button below."
+msgstr "You can view the document and its status by clicking the button below."
+
#: packages/ui/primitives/document-dropzone.tsx:43
msgid "You cannot upload documents at this time."
msgstr "You cannot upload documents at this time."
+#: packages/email/template-components/template-document-cancel.tsx:35
+msgid "You don't need to sign it anymore."
+msgstr "You don't need to sign it anymore."
+
+#: packages/lib/server-only/team/create-team-member-invites.ts:186
+msgid "You have been invited to join {0} on Documenso"
+msgstr "You have been invited to join {0} on Documenso"
+
+#: packages/email/templates/team-invite.tsx:76
+msgid "You have been invited to join the following team"
+msgstr "You have been invited to join the following team"
+
+#: packages/lib/server-only/recipient/set-recipients-for-document.ts:329
+msgid "You have been removed from a document"
+msgstr "You have been removed from a document"
+
+#: packages/lib/server-only/team/request-team-ownership-transfer.ts:114
+msgid "You have been requested to take ownership of team {0} on Documenso"
+msgstr "You have been requested to take ownership of team {0} on Documenso"
+
+#: packages/lib/jobs/definitions/emails/send-signing-email.ts:115
+#: packages/lib/server-only/document/resend-document.tsx:125
+msgid "You have initiated the document {0} that requires you to {recipientActionVerb} it."
+msgstr "You have initiated the document {0} that requires you to {recipientActionVerb} it."
+
#: packages/ui/primitives/document-dropzone.tsx:69
msgid "You have reached your document limit."
msgstr "You have reached your document limit."
+
+#: packages/email/templates/document-rejection-confirmed.tsx:27
+msgid "You have rejected the document '{documentName}'"
+msgstr "You have rejected the document '{documentName}'"
+
+#~ msgid "You have rejected the document \"{documentName}\""
+#~ msgstr "You have rejected the document \"{documentName}\""
+
+#: packages/email/template-components/template-document-self-signed.tsx:42
+msgid "You have signed “{documentName}”"
+msgstr "You have signed “{documentName}”"
+
+#: packages/email/template-components/template-document-super-delete.tsx:23
+msgid "Your document has been deleted by an admin!"
+msgstr "Your document has been deleted by an admin!"
+
+#: packages/email/template-components/template-reset-password.tsx:26
+msgid "Your password has been updated."
+msgstr "Your password has been updated."
+
+#: packages/email/templates/team-delete.tsx:28
+#: packages/email/templates/team-delete.tsx:32
+msgid "Your team has been deleted"
+msgstr "Your team has been deleted"
diff --git a/packages/lib/translations/en/marketing.js b/packages/lib/translations/en/marketing.js
deleted file mode 100644
index 2e560167e..000000000
--- a/packages/lib/translations/en/marketing.js
+++ /dev/null
@@ -1 +0,0 @@
-/*eslint-disable*/module.exports={messages:JSON.parse("{\"J/hVSQ\":[[\"0\"]],\"u0zktA\":\"5 standard documents per month\",\"rKtmiD\":\"5 Users Included\",\"vaHmll\":\"A 10x better signing experience.\",\"t7ZCoe\":\"Add document\",\"gBefbz\":[\"Add More Users for \",[\"0\"]],\"XkF8tv\":\"All our metrics, finances, and learnings are public. We believe in transparency and want to share our journey with you. You can read more about why here: <0>Announcing Open Metrics0>\",\"tkQ/WI\":\"Amount Raised\",\"qOMroC\":\"API Access\",\"FNv8t7\":\"Beautiful.\",\"W/TUoX\":\"Because signing should be celebrated. That’s why we care about the smallest detail in our product.\",\"astDB+\":\"Blog\",\"7zGun7\":\"Build on top.\",\"fxgcNV\":\"Can I use Documenso commercially?\",\"V+D/YP\":\"Careers\",\"CWe7wB\":\"Changelog\",\"JZbmjL\":\"Choose a template from the community app store. Or submit your own template for others to use.\",\"chL5IG\":\"Community\",\"p5+XQN\":\"Completed Documents\",\"NApCXa\":\"Completed Documents per Month\",\"z5kV0h\":\"Connections\",\"YcfUZ9\":\"Contact Us\",\"1NJjIG\":\"Create connections and automations with Zapier and more to integrate with your favorite tools.\",\"rr83qK\":\"Create your account and start using state-of-the-art document signing. Open and beautiful signing is within your grasp.\",\"75ojt0\":\"Customers with an Active Subscriptions.\",\"pF9qTh\":\"Customise and expand.\",\"f8fH8W\":\"Design\",\"W6qD1T\":\"Designed for every stage of your journey.\",\"K6KbY4\":\"Direct Link\",\"aLD+Td\":\"Documenso is a community effort to create an open and vibrant ecosystem around a tool, everybody is free to use and adapt. By being truly open we want to create trusted infrastructure for the future of the internet.\",\"32yG8y\":\"Documenso on X\",\"+1xAO7\":\"Document signing,<0/>finally open source.\",\"TvY/XA\":\"Documentation\",\"tSS7hj\":\"Easily embed Documenso into your product. Simply copy and paste our react widget into your application.\",\"BWMGM4\":\"Easy Sharing (Soon).\",\"LRAhFG\":\"Easy Sharing.\",\"V6EY8B\":\"Email and Discord Support\",\"C0/bri\":\"Engagement\",\"JejrgO\":\"Enter your details.\",\"8Zy3YU\":\"Enterprise Compliance, License or Technical Needs?\",\"ZSW8id\":\"Everything you need for a great signing experience.\",\"sXswT6\":\"Fast.\",\"cT9Z9e\":\"Faster, smarter and more beautiful.\",\"k/ANik\":\"Finances\",\"I7Exsw\":\"Follow us on X\",\"f3Botn\":\"For companies looking to scale across multiple teams.\",\"y2DcZj\":\"For small teams and individuals with basic needs.\",\"2POOFK\":\"Free\",\"OdieZe\":\"From the blog\",\"IPgkVQ\":\"Full-Time\",\"aSWzT9\":\"Get paid (Soon).\",\"ZDIydz\":\"Get started\",\"c3b0B0\":\"Get Started\",\"pS8wej\":\"Get started today.\",\"7FPIvI\":\"Get the latest news from Documenso, including product updates, team announcements and more!\",\"kV0qBq\":\"GitHub: Total Merged PRs\",\"652R6j\":\"GitHub: Total Open Issues\",\"R1aJ0W\":\"GitHub: Total Stars\",\"P1ovAc\":\"Global Salary Bands\",\"IAq/yr\":\"Growth\",\"Xi7f+z\":\"How can I contribute?\",\"9VGuMA\":\"How do you handle my data?\",\"fByw/g\":\"Individual\",\"Csm+TN\":\"Integrated payments with Stripe so you don’t have to worry about getting paid.\",\"phSPy7\":\"Integrates with all your favourite tools.\",\"pfjrI2\":\"Is there more?\",\"LOyqaC\":\"It’s up to you. Either clone our repository or rely on our easy to use hosting solution.\",\"PCgMVa\":\"Join Date\",\"TgL4dH\":\"Join the Open Signing Movement\",\"wJijgU\":\"Location\",\"OIowgO\":\"Make it your own through advanced customization and adjustability.\",\"GHelWd\":\"Merged PR's\",\"vXBVQZ\":\"Merged PRs\",\"+8Nek/\":\"Monthly\",\"6YtxFj\":\"Name\",\"CtgXe4\":\"New Users\",\"OpNhRn\":\"No credit card required\",\"6C9AxJ\":\"No Credit Card required\",\"igwAqT\":\"None of these work for you? Try self-hosting!\",\"jjAtjQ\":\"Open Issues\",\"b76QYo\":\"Open Source or Hosted.\",\"OWsQIe\":\"Open Startup\",\"Un80BR\":\"OSS Friends\",\"6zNyfI\":\"Our custom templates come with smart rules that can help you save time and energy.\",\"+OmhKD\":\"Our Enterprise License is great for large organizations looking to switch to Documenso for all their signing needs. It's available for our cloud offering as well as self-hosted setups and offers a wide range of compliance and Adminstration Features.\",\"eK0veR\":\"Our Enterprise License is great large organizations looking to switch to Documenso for all their signing needs. It's availible for our cloud offering as well as self-hosted setups and offer a wide range of compliance and Adminstration Features.\",\"I2ufwS\":\"Our self-hosted option is great for small teams and individuals who need a simple solution. You can use our docker based setup to get started in minutes. Take control with full customizability and data ownership.\",\"F9564X\":\"Part-Time\",\"qJVkX+\":\"Premium Profile Name\",\"aHCEmh\":\"Pricing\",\"rjGI/Q\":\"Privacy\",\"vERlcd\":\"Profile\",\"77/8W2\":\"React Widget (Soon).\",\"OYoVNk\":\"Receive your personal link to share with everyone you care about.\",\"GDvlUT\":\"Role\",\"bUqwb8\":\"Salary\",\"GNfoAO\":\"Save $60 or $120\",\"StoBff\":\"Search languages...\",\"dhi4w4\":\"Securely. Our data centers are located in Frankfurt (Germany), giving us the best local privacy laws. We are very aware of the sensitive nature of our data and follow best practices to ensure the security and integrity of the data entrusted to us.\",\"kZBxnz\":\"Send, connect, receive and embed everywhere.\",\"eSfS30\":\"Seniority\",\"aoDa18\":\"Shop\",\"c+Fnce\":\"Sign\",\"5lWFkC\":\"Sign in\",\"e+RpCP\":\"Sign up\",\"4yiZOB\":\"Signing Process\",\"RkUXMm\":\"Signup Now\",\"omz3DH\":\"Smart.\",\"AvYbUL\":\"Star on GitHub\",\"y2dGtU\":\"Stars\",\"uAQUqI\":\"Status\",\"XYLcNv\":\"Support\",\"KM6m8p\":\"Team\",\"lm5v+6\":\"Team Inbox\",\"CAL6E9\":\"Teams\",\"w4nM1s\":\"Template Store (Soon).\",\"yFoQ27\":\"That's awesome. You can take a look at the current <0>Issues0> and join our <1>Discord Community1> to keep up to date, on what the current priorities are. In any case, we are an open community and welcome all input, technical and non-technical ❤️\",\"GE1BlA\":\"This page is evolving as we learn what makes a great signing company. We'll update it when we have more to share.\",\"MHrjPM\":\"Title\",\"2YvdxE\":\"Total Completed Documents\",\"8e4lIo\":\"Total Customers\",\"bPpoCb\":\"Total Funding Raised\",\"vb0Q0/\":\"Total Users\",\"mgQhDS\":\"Truly your own.\",\"4McJfQ\":\"Try our Free Plan\",\"9mkNAn\":\"Twitter Stats\",\"CHzOWB\":\"Unlimited Documents per Month\",\"BOV7DD\":\"Up to 10 recipients per document\",\"fydTfa\":\"Upload a document and add fields.\",\"vdAd7c\":\"Using our hosted version is the easiest way to get started, you can simply subscribe and start signing your documents. We take care of the infrastructure, so you can focus on your business. Additionally, when using our hosted version you benefit from our trusted signing certificates which helps you to build trust with your customers.\",\"W2nDs0\":\"View all stats\",\"WMfAK8\":\"We are happy to assist you at <0>support@documenso.com0> or <1>in our Discord-Support-Channel1> please message either Lucas or Timur to get added to the channel if you are not already a member.\",\"ZaMyxU\":\"What is the difference between the plans?\",\"8GpyFt\":\"When it comes to sending or receiving a contract, you can count on lightning-fast speeds.\",\"HEDnID\":\"Where can I get support?\",\"sib3h3\":\"Why should I prefer Documenso over DocuSign or some other signing tool?\",\"cVPDPt\":\"Why should I use your hosting service?\",\"zkWmBh\":\"Yearly\",\"8AKApo\":\"Yes! Documenso is offered under the GNU AGPL V3 open source license. This means you can use it for free and even modify it to fit your needs, as long as you publish your changes under the same license.\",\"rzQpex\":\"You can self-host Documenso for free or use our ready-to-use hosted version. The hosted version comes with additional support, painless scalability and more. Early adopters will get access to all features we build this year, for no additional cost! Forever! Yes, that includes multiple users per account later. If you want Documenso for your enterprise, we are happy to talk about your needs.\",\"1j9aoC\":\"Your browser does not support the video tag.\",\"73XXzw\":[[\"0\"],\" of \",[\"1\"],\" row(s) selected.\"],\"lZ4w45\":[[\"visibleRows\",\"plural\",{\"one\":[\"Showing \",\"#\",\" result.\"],\"other\":[\"Showing \",\"#\",\" results.\"]}]],\"AhYxw5\":\"<0>Inherit authentication method0> - Use the global action signing authentication method configured in the \\\"General Settings\\\" step\",\"OepImG\":\"<0>No restrictions0> - No authentication required\",\"07+JZ2\":\"<0>No restrictions0> - The document can be accessed directly by the URL sent to the recipient\",\"jx/lwn\":\"<0>None0> - No authentication required\",\"CUT3u1\":\"<0>Require 2FA0> - The recipient must have an account and 2FA enabled via their settings\",\"2PbD3D\":\"<0>Require account0> - The recipient must be signed in to view the document\",\"QHSbey\":\"<0>Require passkey0> - The recipient must have an account and passkey configured via their settings\",\"Oy5nEc\":\"Add a document\",\"7Pz5x5\":\"Add a URL to redirect the user to once the document is signed\",\"aILOUH\":\"Add an external ID to the document. This can be used to identify the document in external systems.\",\"bK1dPK\":\"Add an external ID to the template. This can be used to identify in external systems.\",\"nnZ1Sa\":\"Add another option\",\"0/UVRw\":\"Add another value\",\"VaCh6w\":\"Add myself\",\"jAa/lz\":\"Add Myself\",\"29QK6H\":\"Add Placeholder Recipient\",\"vcxlzZ\":\"Add Signer\",\"MwcOtB\":\"Add text\",\"7F2ltK\":\"Add text to the field\",\"U3pytU\":\"Admin\",\"NFIOKv\":\"Advanced Options\",\"VNgKZz\":\"Advanced settings\",\"bNUpvl\":\"After submission, a document will be automatically generated and added to your documents page. You will also receive a notification via email.\",\"Z7ZXbT\":\"Approve\",\"7kb4LU\":\"Approved\",\"ca9AbO\":\"Approver\",\"j2Uisd\":\"Approving\",\"THokF3\":\"Black\",\"Zn5crm\":\"Blue\",\"dEgA5A\":\"Cancel\",\"brJrDl\":\"Cannot remove signer\",\"uOcAi7\":\"Cannot update signer because they have already signed a field\",\"RpYfjZ\":\"Cc\",\"XdZeJk\":\"CC\",\"nrL/ZD\":\"CC'd\",\"EEk+d0\":\"Character Limit\",\"G1XxbZ\":\"Checkbox\",\"wbixMe\":\"Checkbox values\",\"u8JHrO\":\"Clear filters\",\"IqxkER\":\"Clear Signature\",\"eZ6/Uj\":\"Click to insert field\",\"yz7wBu\":\"Close\",\"OrcxNk\":\"Configure Direct Recipient\",\"92KLYs\":[\"Configure the \",[\"0\"],\" field\"],\"xGVfLh\":\"Continue\",\"FxVG/l\":\"Copied to clipboard\",\"GB2F11\":\"Custom Text\",\"mYGY3B\":\"Date\",\"4BHv90\":\"Date Format\",\"NLXhq7\":\"Direct link receiver\",\"YScG1E\":\"Document access\",\"rAqi0g\":\"Document Creation\",\"mzI/c+\":\"Download\",\"6GyScL\":\"Drag & drop your PDF here.\",\"iKQcPM\":\"Dropdown\",\"XXvhMd\":\"Dropdown options\",\"O3oNi5\":\"Email\",\"XLpxoj\":\"Email Options\",\"qChNnS\":\"Enable Direct Link Signing\",\"S+mLLv\":\"Enable signing order\",\"f7sXvi\":\"Enter password\",\"SlfejT\":\"Error\",\"5KfWxA\":\"External ID\",\"4CP+OV\":\"Failed to save settings.\",\"LK3SFK\":\"Field character limit\",\"C21JWH\":\"Field font size\",\"NYkIsf\":\"Field format\",\"X6Tb6Q\":\"Field label\",\"NaVkSD\":\"Field placeholder\",\"cGeFup\":\"Font Size\",\"N1UTWT\":\"Global recipient action authentication\",\"sr0UJD\":\"Go Back\",\"VmkjGB\":\"Green\",\"uCroPU\":\"I am a signer of this document\",\"K6KTX2\":\"I am a viewer of this document\",\"ngj5km\":\"I am an approver of this document\",\"JUZIGu\":\"I am required to receive a copy of this document\",\"ZjDoG7\":\"I am required to recieve a copy of this document\",\"fnbcC0\":\"Inherit authentication method\",\"87a/t/\":\"Label\",\"dtOoGl\":\"Manager\",\"CK1KXz\":\"Max\",\"OvoEq7\":\"Member\",\"ziXm9u\":\"Message <0>(Optional)0>\",\"eTUF28\":\"Min\",\"4nqUV0\":\"Needs to approve\",\"lNQBPg\":\"Needs to sign\",\"eUAUyG\":\"Needs to view\",\"GBIRGD\":\"No recipient matching this description was found.\",\"f34Qxi\":\"No recipients with this role\",\"qQ7oqE\":\"No restrictions\",\"AxPAXW\":\"No results found\",\"pt86ev\":\"No signature field found\",\"CSOFdu\":\"No value found.\",\"HptUxX\":\"Number\",\"bR2sEm\":\"Number format\",\"eY6ns+\":\"Once enabled, you can select any active recipient to be a direct link signing recipient, or create a new one. This recipient type cannot be edited or deleted.\",\"JE2qy+\":\"Once your template is set up, share the link anywhere you want. The person who opens the link will be able to enter their information in the direct link recipient field and complete any other fields assigned to them.\",\"fpzyLj\":[\"Page \",[\"0\"],\" of \",[\"1\"]],\"8ltyoa\":\"Password Required\",\"ayaTI6\":\"Pick a number\",\"hx1ePY\":\"Placeholder\",\"MtkqZc\":\"Radio\",\"5cEi0C\":\"Radio values\",\"uNQ6eB\":\"Read only\",\"UTnF5X\":\"Receives copy\",\"ZIuo5V\":\"Recipient action authentication\",\"wRTiSD\":\"Red\",\"VTB2Rz\":\"Redirect URL\",\"t/YqKh\":\"Remove\",\"8dg+Yo\":\"Required field\",\"xxCtZv\":\"Rows per page\",\"tfDRzk\":\"Save\",\"9Y3hAT\":\"Save Template\",\"rG3WVm\":\"Select\",\"hVPa4O\":\"Select an option\",\"IM+vrQ\":\"Select at least\",\"Gve6FG\":\"Select default option\",\"JlFcis\":\"Send\",\"AEV4wo\":\"Send Document\",\"iE3nGO\":\"Share Signature Card\",\"y+hKWu\":\"Share the Link\",\"ydZ6yi\":\"Show advanced settings\",\"n+8yVN\":\"Signature\",\"PoH7eg\":\"Signed\",\"jTCAGu\":\"Signer\",\"6G8s+q\":\"Signing\",\"kW2h2Z\":\"Some signers have not been assigned a signature field. Please assign at least 1 signature field to each signer before proceeding.\",\"nwtY4N\":\"Something went wrong\",\"kf83Ld\":\"Something went wrong.\",\"WlBiWh\":[\"Step <0>\",[\"step\"],\" of \",[\"maxStep\"],\"0>\"],\"ki77Td\":\"Subject <0>(Optional)0>\",\"hQRttt\":\"Submit\",\"URdrTr\":\"Template title\",\"xeiujy\":\"Text\",\"imClgr\":\"The authentication required for recipients to sign fields\",\"yyD2dE\":\"The authentication required for recipients to sign the signature field.\",\"GtDmLf\":\"The authentication required for recipients to view the document.\",\"zAoaPB\":\"The document's name\",\"Ev3GOS\":\"The password you have entered is incorrect. Please try again.\",\"OPnnb6\":\"The recipient is not required to take any action and receives a copy of the document after it is completed.\",\"v8p6Mb\":\"The recipient is required to approve the document for it to be completed.\",\"CPv0TB\":\"The recipient is required to sign the document for it to be completed.\",\"oIvIfH\":\"The recipient is required to view the document for it to be completed.\",\"Br2bvS\":\"The sharing link could not be created at this time. Please try again.\",\"XJIzqY\":\"The sharing link has been copied to your clipboard.\",\"UyM8/E\":\"The signer's email\",\"zHJ+vk\":\"The signer's name\",\"kaEF2i\":\"This can be overriden by setting the authentication requirements directly on each recipient in the next step.\",\"QUZVfd\":\"This document has already been sent to this recipient. You can no longer edit this recipient.\",\"riNGUC\":\"This document is password protected. Please enter the password to view the document.\",\"Qkeh+t\":\"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.\",\"xrWgbt\":\"This recipient can no longer be modified as they have signed a field, or completed the document.\",\"l2Xt6u\":\"This signer has already received the document.\",\"+J77hf\":\"This signer has already signed the document.\",\"6iFh5a\":\"This will override any global settings.\",\"RxsRD6\":\"Time Zone\",\"UWmOq4\":[\"To proceed further, please set at least one value for the \",[\"0\"],\" field.\"],\"EkH9pt\":\"Update\",\"GT+2nz\":\"Update the role and add fields as required for the direct recipient. The individual who uses the direct link will sign the document as the direct recipient.\",\"kwkhPe\":\"Upgrade\",\"06fEqf\":\"Upload Template Document\",\"lGWE4b\":\"Validation\",\"wMHvYH\":\"Value\",\"jpctdh\":\"View\",\"vXtpAZ\":\"Viewed\",\"M/TIv1\":\"Viewer\",\"RVWz5F\":\"Viewing\",\"5Ex+AP\":\"White\",\"4/hUq0\":\"You are about to send this document to the recipients. Are you sure you want to continue?\",\"rb/T41\":\"You can use the following variables in your message:\",\"9+Ph0R\":\"You cannot upload documents at this time.\",\"m5RA9C\":\"You have reached your document limit.\"}")};
\ No newline at end of file
diff --git a/packages/lib/translations/en/marketing.po b/packages/lib/translations/en/marketing.po
index d5eafc50f..427ba58e5 100644
--- a/packages/lib/translations/en/marketing.po
+++ b/packages/lib/translations/en/marketing.po
@@ -155,10 +155,6 @@ msgstr "Documentation"
msgid "Easily embed Documenso into your product. Simply copy and paste our react widget into your application."
msgstr "Easily embed Documenso into your product. Simply copy and paste our react widget into your application."
-#: apps/marketing/src/components/(marketing)/share-connect-paid-widget-bento.tsx:42
-#~ msgid "Easy Sharing (Soon)."
-#~ msgstr "Easy Sharing (Soon)."
-
#: apps/marketing/src/components/(marketing)/share-connect-paid-widget-bento.tsx:46
msgid "Easy Sharing."
msgstr "Easy Sharing."
@@ -372,18 +368,10 @@ msgstr "Our custom templates come with smart rules that can help you save time a
msgid "Our Enterprise License is great for large organizations looking to switch to Documenso for all their signing needs. It's available for our cloud offering as well as self-hosted setups and offers a wide range of compliance and Adminstration Features."
msgstr "Our Enterprise License is great for large organizations looking to switch to Documenso for all their signing needs. It's available for our cloud offering as well as self-hosted setups and offers a wide range of compliance and Adminstration Features."
-#: apps/marketing/src/components/(marketing)/enterprise.tsx:20
-#~ msgid "Our Enterprise License is great large organizations looking to switch to Documenso for all their signing needs. It's availible for our cloud offering as well as self-hosted setups and offer a wide range of compliance and Adminstration Features."
-#~ msgstr "Our Enterprise License is great large organizations looking to switch to Documenso for all their signing needs. It's availible for our cloud offering as well as self-hosted setups and offer a wide range of compliance and Adminstration Features."
-
#: apps/marketing/src/app/(marketing)/pricing/page.tsx:65
msgid "Our self-hosted option is great for small teams and individuals who need a simple solution. You can use our docker based setup to get started in minutes. Take control with full customizability and data ownership."
msgstr "Our self-hosted option is great for small teams and individuals who need a simple solution. You can use our docker based setup to get started in minutes. Take control with full customizability and data ownership."
-#: apps/marketing/src/app/(marketing)/open/data.ts:25
-#~ msgid "Part-Time"
-#~ msgstr "Part-Time"
-
#: apps/marketing/src/components/(marketing)/pricing-table.tsx:151
msgid "Premium Profile Name"
msgstr "Premium Profile Name"
@@ -425,10 +413,6 @@ msgstr "Salary"
msgid "Save $60 or $120"
msgstr "Save $60 or $120"
-#: apps/marketing/src/components/(marketing)/i18n-switcher.tsx:47
-#~ msgid "Search languages..."
-#~ msgstr "Search languages..."
-
#: apps/marketing/src/app/(marketing)/pricing/page.tsx:109
msgid "Securely. Our data centers are located in Frankfurt (Germany), giving us the best local privacy laws. We are very aware of the sensitive nature of our data and follow best practices to ensure the security and integrity of the data entrusted to us."
msgstr "Securely. Our data centers are located in Frankfurt (Germany), giving us the best local privacy laws. We are very aware of the sensitive nature of our data and follow best practices to ensure the security and integrity of the data entrusted to us."
diff --git a/packages/lib/translations/en/web.po b/packages/lib/translations/en/web.po
index 65cc1086e..74dab2ac9 100644
--- a/packages/lib/translations/en/web.po
+++ b/packages/lib/translations/en/web.po
@@ -13,6 +13,10 @@ msgstr ""
"Language-Team: \n"
"Plural-Forms: \n"
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:214
+msgid "\"{0}\" has invited you to sign \"example document\"."
+msgstr "\"{0}\" has invited you to sign \"example document\"."
+
#: apps/web/src/app/(signing)/sign/[token]/date-field.tsx:69
msgid "\"{0}\" will appear on the document as it has a timezone of \"{timezone}\"."
msgstr "\"{0}\" will appear on the document as it has a timezone of \"{timezone}\"."
@@ -21,19 +25,39 @@ msgstr "\"{0}\" will appear on the document as it has a timezone of \"{timezone}
msgid "\"{documentTitle}\" has been successfully deleted"
msgstr "\"{documentTitle}\" has been successfully deleted"
-#: apps/web/src/app/(signing)/sign/[token]/signing-page-view.tsx:78
+#: apps/web/src/components/(teams)/forms/update-team-form.tsx:234
+msgid "\"{email}\" on behalf of \"{teamName}\" has invited you to sign \"example document\"."
+msgstr "\"{email}\" on behalf of \"{teamName}\" has invited you to sign \"example document\"."
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:209
+#~ msgid ""
+#~ "\"{placeholderEmail}\" on behalf of \"{0}\" has invited you to sign \"example\n"
+#~ "document\"."
+#~ msgstr ""
+#~ "\"{placeholderEmail}\" on behalf of \"{0}\" has invited you to sign \"example\n"
+#~ "document\"."
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:209
+msgid "\"{placeholderEmail}\" on behalf of \"{0}\" has invited you to sign \"example document\"."
+msgstr "\"{placeholderEmail}\" on behalf of \"{0}\" has invited you to sign \"example document\"."
+
+#: apps/web/src/components/(teams)/forms/update-team-form.tsx:241
+msgid "\"{teamUrl}\" has invited you to sign \"example document\"."
+msgstr "\"{teamUrl}\" has invited you to sign \"example document\"."
+
+#: apps/web/src/app/(signing)/sign/[token]/signing-page-view.tsx:80
msgid "({0}) has invited you to approve this document"
msgstr "({0}) has invited you to approve this document"
-#: apps/web/src/app/(signing)/sign/[token]/signing-page-view.tsx:75
+#: apps/web/src/app/(signing)/sign/[token]/signing-page-view.tsx:77
msgid "({0}) has invited you to sign this document"
msgstr "({0}) has invited you to sign this document"
-#: apps/web/src/app/(signing)/sign/[token]/signing-page-view.tsx:72
+#: apps/web/src/app/(signing)/sign/[token]/signing-page-view.tsx:74
msgid "({0}) has invited you to view this document"
msgstr "({0}) has invited you to view this document"
-#: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:311
+#: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:313
msgid "{0, plural, one {(1 character over)} other {(# characters over)}}"
msgstr "{0, plural, one {(1 character over)} other {(# characters over)}}"
@@ -55,11 +79,15 @@ msgstr "{0, plural, one {# Seat} other {# Seats}}"
msgid "{0, plural, one {<0>You have <1>11> pending team invitation0>} other {<2>You have <3>#3> pending team invitations2>}}"
msgstr "{0, plural, one {<0>You have <1>11> pending team invitation0>} other {<2>You have <3>#3> pending team invitations2>}}"
+#: apps/web/src/app/(signing)/sign/[token]/auto-sign.tsx:196
+msgid "{0, plural, one {1 matching field} other {# matching fields}}"
+msgstr "{0, plural, one {1 matching field} other {# matching fields}}"
+
#: apps/web/src/app/(dashboard)/documents/[id]/edit/document-edit-page-view.tsx:129
msgid "{0, plural, one {1 Recipient} other {# Recipients}}"
msgstr "{0, plural, one {1 Recipient} other {# Recipients}}"
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:230
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:235
msgid "{0, plural, one {Waiting on 1 recipient} other {Waiting on # recipients}}"
msgstr "{0, plural, one {Waiting on 1 recipient} other {Waiting on # recipients}}"
@@ -67,27 +95,31 @@ msgstr "{0, plural, one {Waiting on 1 recipient} other {Waiting on # recipients}
msgid "{0, plural, zero {Select values} other {# selected...}}"
msgstr "{0, plural, zero {Select values} other {# selected...}}"
+#: apps/web/src/app/(signing)/sign/[token]/auto-sign.tsx:193
+msgid "{0}"
+msgstr "{0}"
+
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:249
msgid "{0} direct signing templates"
msgstr "{0} direct signing templates"
#: apps/web/src/app/(recipient)/d/[token]/direct-template.tsx:66
-msgid "{0} document"
-msgstr "{0} document"
+#~ msgid "{0} document"
+#~ msgstr "{0} document"
#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:146
msgid "{0} of {1} documents remaining this month."
msgstr "{0} of {1} documents remaining this month."
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:165
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:170
msgid "{0} Recipient(s)"
msgstr "{0} Recipient(s)"
#: apps/web/src/app/(recipient)/d/[token]/direct-template.tsx:67
-msgid "{0} the document to complete the process."
-msgstr "{0} the document to complete the process."
+#~ msgid "{0} the document to complete the process."
+#~ msgstr "{0} the document to complete the process."
-#: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:292
+#: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:294
msgid "{charactersRemaining, plural, one {1 character remaining} other {{charactersRemaining} characters remaining}}"
msgstr "{charactersRemaining, plural, one {1 character remaining} other {{charactersRemaining} characters remaining}}"
@@ -99,6 +131,14 @@ msgstr "{formattedTeamMemberQuanity} • Monthly • Renews: {formattedDate}"
msgid "{numberOfSeats, plural, one {# member} other {# members}}"
msgstr "{numberOfSeats, plural, one {# member} other {# members}}"
+#: apps/web/src/app/(recipient)/d/[token]/direct-template.tsx:67
+msgid "{recipientActionVerb} document"
+msgstr "{recipientActionVerb} document"
+
+#: apps/web/src/app/(recipient)/d/[token]/direct-template.tsx:68
+msgid "{recipientActionVerb} the document to complete the process."
+msgstr "{recipientActionVerb} the document to complete the process."
+
#: apps/web/src/components/forms/public-profile-form.tsx:231
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:389
msgid "{remaningLength, plural, one {# character remaining} other {# characters remaining}}"
@@ -112,6 +152,18 @@ msgstr "<0>\"{0}\"0>is no longer available to sign"
msgid "<0>Sender:0> All"
msgstr "<0>Sender:0> All"
+#: apps/web/src/components/(dashboard)/settings/token/contants.ts:5
+msgid "1 month"
+msgstr "1 month"
+
+#: apps/web/src/components/(dashboard)/settings/token/contants.ts:8
+msgid "12 months"
+msgstr "12 months"
+
+#: apps/web/src/components/(dashboard)/settings/token/contants.ts:6
+msgid "3 months"
+msgstr "3 months"
+
#: apps/web/src/components/partials/not-found.tsx:45
msgid "404 Page not found"
msgstr "404 Page not found"
@@ -128,14 +180,30 @@ msgstr "404 Team not found"
msgid "404 Template not found"
msgstr "404 Template not found"
+#: apps/web/src/components/(dashboard)/settings/token/contants.ts:7
+msgid "6 months"
+msgstr "6 months"
+
+#: apps/web/src/components/(dashboard)/settings/token/contants.ts:4
+msgid "7 days"
+msgstr "7 days"
+
#: apps/web/src/components/forms/send-confirmation-email.tsx:55
msgid "A confirmation email has been sent, and it should arrive in your inbox shortly."
msgstr "A confirmation email has been sent, and it should arrive in your inbox shortly."
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:193
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:70
+msgid "A device capable of accessing, opening, and reading documents"
+msgstr "A device capable of accessing, opening, and reading documents"
+
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:218
msgid "A draft document will be created"
msgstr "A draft document will be created"
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:73
+msgid "A means to print or download documents for your records"
+msgstr "A means to print or download documents for your records"
+
#: apps/web/src/components/forms/token.tsx:127
msgid "A new token was created successfully."
msgstr "A new token was created successfully."
@@ -158,12 +226,16 @@ msgstr "A secret that will be sent to your URL so you can verify that the reques
msgid "A secret that will be sent to your URL so you can verify that the request has been sent by Documenso."
msgstr "A secret that will be sent to your URL so you can verify that the request has been sent by Documenso."
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:64
+msgid "A stable internet connection"
+msgstr "A stable internet connection"
+
#: apps/web/src/components/forms/public-profile-form.tsx:198
msgid "A unique URL to access your profile"
msgstr "A unique URL to access your profile"
#: apps/web/src/components/(teams)/dialogs/create-team-dialog.tsx:206
-#: apps/web/src/components/(teams)/forms/update-team-form.tsx:139
+#: apps/web/src/components/(teams)/forms/update-team-form.tsx:179
msgid "A unique URL to identify your team"
msgstr "A unique URL to identify your team"
@@ -175,24 +247,42 @@ msgstr "A verification email will be sent to the provided email."
msgid "Accept"
msgstr "Accept"
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:33
+msgid "Acceptance and Consent"
+msgstr "Acceptance and Consent"
+
#: apps/web/src/app/(dashboard)/settings/teams/accept-team-invitation-button.tsx:26
msgid "Accepted team invitation"
msgstr "Accepted team invitation"
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:128
+msgid "Account Authentication"
+msgstr "Account Authentication"
+
#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:51
#: apps/web/src/app/(dashboard)/settings/profile/delete-account-dialog.tsx:48
msgid "Account deleted"
msgstr "Account deleted"
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:105
-#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-data-table.tsx:104
-#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:125
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:119
+msgid "Account Re-Authentication"
+msgstr "Account Re-Authentication"
+
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:139
+msgid "Acknowledgment"
+msgstr "Acknowledgment"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:108
+#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-data-table.tsx:100
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:123
#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:164
#: apps/web/src/app/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx:118
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/data-table.tsx:46
msgid "Action"
msgstr "Action"
#: apps/web/src/app/(dashboard)/documents/data-table.tsx:85
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:181
#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:140
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:133
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:142
@@ -201,7 +291,7 @@ msgstr "Action"
msgid "Actions"
msgstr "Actions"
-#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:101
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:107
#: apps/web/src/components/(teams)/tables/teams-member-page-data-table.tsx:76
#: apps/web/src/components/(teams)/tables/user-settings-teams-page-data-table.tsx:71
msgid "Active"
@@ -215,12 +305,12 @@ msgstr "Active Subscriptions"
msgid "Add"
msgstr "Add"
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:157
-#: apps/web/src/app/(dashboard)/templates/[id]/edit-template.tsx:87
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:177
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:88
msgid "Add all relevant fields for each recipient."
msgstr "Add all relevant fields for each recipient."
-#: apps/web/src/app/(dashboard)/templates/[id]/edit-template.tsx:82
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:83
msgid "Add all relevant placeholders for each recipient."
msgstr "Add all relevant placeholders for each recipient."
@@ -236,8 +326,8 @@ msgstr "Add an authenticator to serve as a secondary authentication method when
msgid "Add email"
msgstr "Add email"
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:156
-#: apps/web/src/app/(dashboard)/templates/[id]/edit-template.tsx:86
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:176
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:87
msgid "Add Fields"
msgstr "Add Fields"
@@ -245,55 +335,47 @@ msgstr "Add Fields"
msgid "Add more"
msgstr "Add more"
-#: apps/web/src/app/(signing)/sign/[token]/number-field.tsx:270
-#~ msgid "Add number"
-#~ msgstr "Add number"
-
#: apps/web/src/app/(dashboard)/settings/security/passkeys/create-passkey-dialog.tsx:146
#: apps/web/src/app/(dashboard)/settings/security/passkeys/create-passkey-dialog.tsx:154
msgid "Add passkey"
msgstr "Add passkey"
-#: apps/web/src/app/(dashboard)/templates/[id]/edit-template.tsx:81
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:82
msgid "Add Placeholders"
msgstr "Add Placeholders"
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:151
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:171
msgid "Add Signers"
msgstr "Add Signers"
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:161
-msgid "Add Subject"
-msgstr "Add Subject"
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:180
+#~ msgid "Add Subject"
+#~ msgstr "Add Subject"
#: apps/web/src/components/(teams)/dialogs/add-team-email-dialog.tsx:133
msgid "Add team email"
msgstr "Add team email"
-#: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:256
-#~ msgid "Add text"
-#~ msgstr "Add text"
-
-#: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:272
-#~ msgid "Add Text"
-#~ msgstr "Add Text"
-
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:152
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:172
msgid "Add the people who will sign the document."
msgstr "Add the people who will sign the document."
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:195
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:220
msgid "Add the recipients to create the document with"
msgstr "Add the recipients to create the document with"
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:162
-msgid "Add the subject and message you wish to send to signers."
-msgstr "Add the subject and message you wish to send to signers."
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:181
+#~ msgid "Add the subject and message you wish to send to signers."
+#~ msgstr "Add the subject and message you wish to send to signers."
#: apps/web/src/components/(teams)/dialogs/create-team-checkout-dialog.tsx:152
msgid "Adding and removing seats will adjust your invoice accordingly."
msgstr "Adding and removing seats will adjust your invoice accordingly."
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/branding-preferences.tsx:303
+msgid "Additional brand information to display at the bottom of emails"
+msgstr "Additional brand information to display at the bottom of emails"
+
#: apps/web/src/app/(dashboard)/admin/documents/[id]/page.tsx:59
msgid "Admin Actions"
msgstr "Admin Actions"
@@ -302,6 +384,10 @@ msgstr "Admin Actions"
msgid "Admin panel"
msgstr "Admin panel"
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:129
+msgid "After signing a document electronically, you will be provided the opportunity to view, download, and print the document for your records. It is highly recommended that you retain a copy of all electronically signed documents for your personal records. We will also retain a copy of the signed document for our records however we may not be able to provide you with a copy of the signed document after a certain period of time."
+msgstr "After signing a document electronically, you will be provided the opportunity to view, download, and print the document for your records. It is highly recommended that you retain a copy of all electronically signed documents for your personal records. We will also retain a copy of the signed document for our records however we may not be able to provide you with a copy of the signed document after a certain period of time."
+
#: apps/web/src/components/formatter/document-status.tsx:46
msgid "All"
msgstr "All"
@@ -314,6 +400,10 @@ msgstr "All documents"
msgid "All documents have been processed. Any new documents that are sent or received will show here."
msgstr "All documents have been processed. Any new documents that are sent or received will show here."
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:81
+msgid "All documents related to the electronic signing process will be provided to you electronically through our platform or via email. It is your responsibility to ensure that your email address is current and that you can receive and open our emails."
+msgstr "All documents related to the electronic signing process will be provided to you electronically through our platform or via email. It is your responsibility to ensure that your email address is current and that you can receive and open our emails."
+
#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:145
msgid "All inserted signatures will be voided"
msgstr "All inserted signatures will be voided"
@@ -322,6 +412,10 @@ msgstr "All inserted signatures will be voided"
msgid "All recipients will be notified"
msgstr "All recipients will be notified"
+#: apps/web/src/components/document/document-recipient-link-copy-dialog.tsx:62
+msgid "All signing links have been copied to your clipboard."
+msgstr "All signing links have been copied to your clipboard."
+
#: apps/web/src/components/(dashboard)/common/command-menu.tsx:57
msgid "All templates"
msgstr "All templates"
@@ -342,6 +436,14 @@ msgstr "Already have an account? <0>Sign in instead0>"
msgid "Amount"
msgstr "Amount"
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:48
+msgid "An electronic signature provided by you on our platform, achieved through clicking through to a document and entering your name, or any other electronic signing method we provide, is legally binding. It carries the same weight and enforceability as a manual signature written with ink on paper."
+msgstr "An electronic signature provided by you on our platform, achieved through clicking through to a document and entering your name, or any other electronic signing method we provide, is legally binding. It carries the same weight and enforceability as a manual signature written with ink on paper."
+
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:67
+msgid "An email account"
+msgstr "An email account"
+
#: apps/web/src/components/(teams)/dialogs/invite-team-member-dialog.tsx:262
msgid "An email containing an invitation will be sent to each member."
msgstr "An email containing an invitation will be sent to each member."
@@ -365,17 +467,21 @@ msgstr "An email requesting the transfer of this team has been sent."
msgid "An error occurred"
msgstr "An error occurred"
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:248
-#: apps/web/src/app/(dashboard)/templates/[id]/edit-template.tsx:197
-#: apps/web/src/app/(dashboard)/templates/[id]/edit-template.tsx:231
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:269
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:201
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:235
msgid "An error occurred while adding signers."
msgstr "An error occurred while adding signers."
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:278
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:304
msgid "An error occurred while adding the fields."
msgstr "An error occurred while adding the fields."
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:153
+#: apps/web/src/app/(signing)/sign/[token]/auto-sign.tsx:154
+msgid "An error occurred while auto-signing the document, some fields may not be signed. Please review and manually sign any remaining fields."
+msgstr "An error occurred while auto-signing the document, some fields may not be signed. Please review and manually sign any remaining fields."
+
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:176
msgid "An error occurred while creating document from template."
msgstr "An error occurred while creating document from template."
@@ -388,9 +494,9 @@ msgid "An error occurred while disabling direct link signing."
msgstr "An error occurred while disabling direct link signing."
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-button.tsx:64
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:89
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:92
#: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:76
-#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:109
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:107
msgid "An error occurred while downloading your document."
msgstr "An error occurred while downloading your document."
@@ -414,6 +520,10 @@ msgstr "An error occurred while moving the document."
msgid "An error occurred while moving the template."
msgstr "An error occurred while moving the template."
+#: apps/web/src/app/(signing)/sign/[token]/initials-field.tsx:116
+msgid "An error occurred while removing the field."
+msgstr "An error occurred while removing the field."
+
#: apps/web/src/app/(signing)/sign/[token]/checkbox-field.tsx:152
#: apps/web/src/app/(signing)/sign/[token]/date-field.tsx:126
#: apps/web/src/app/(signing)/sign/[token]/dropdown-field.tsx:137
@@ -421,7 +531,7 @@ msgstr "An error occurred while moving the template."
#: apps/web/src/app/(signing)/sign/[token]/name-field.tsx:148
#: apps/web/src/app/(signing)/sign/[token]/number-field.tsx:195
#: apps/web/src/app/(signing)/sign/[token]/radio-field.tsx:129
-#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:175
+#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:173
msgid "An error occurred while removing the signature."
msgstr "An error occurred while removing the signature."
@@ -429,7 +539,7 @@ msgstr "An error occurred while removing the signature."
msgid "An error occurred while removing the text."
msgstr "An error occurred while removing the text."
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:309
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:350
msgid "An error occurred while sending the document."
msgstr "An error occurred while sending the document."
@@ -441,10 +551,11 @@ msgstr "An error occurred while sending your confirmation email"
#: apps/web/src/app/(signing)/sign/[token]/date-field.tsx:100
#: apps/web/src/app/(signing)/sign/[token]/dropdown-field.tsx:106
#: apps/web/src/app/(signing)/sign/[token]/email-field.tsx:84
+#: apps/web/src/app/(signing)/sign/[token]/initials-field.tsx:90
#: apps/web/src/app/(signing)/sign/[token]/name-field.tsx:122
#: apps/web/src/app/(signing)/sign/[token]/number-field.tsx:150
#: apps/web/src/app/(signing)/sign/[token]/radio-field.tsx:102
-#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:149
+#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:147
#: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:168
msgid "An error occurred while signing the document."
msgstr "An error occurred while signing the document."
@@ -453,11 +564,15 @@ msgstr "An error occurred while signing the document."
msgid "An error occurred while trying to create a checkout session."
msgstr "An error occurred while trying to create a checkout session."
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:214
-#: apps/web/src/app/(dashboard)/templates/[id]/edit-template.tsx:166
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:235
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:170
msgid "An error occurred while updating the document settings."
msgstr "An error occurred while updating the document settings."
+#: apps/web/src/components/forms/team-document-settings.tsx:78
+#~ msgid "An error occurred while updating the global team settings."
+#~ msgstr "An error occurred while updating the global team settings."
+
#: apps/web/src/app/(signing)/sign/[token]/checkbox-field.tsx:213
msgid "An error occurred while updating the signature."
msgstr "An error occurred while updating the signature."
@@ -488,7 +603,7 @@ msgstr "An error occurred while uploading your document."
#: apps/web/src/components/(teams)/dialogs/transfer-team-dialog.tsx:116
#: apps/web/src/components/(teams)/dialogs/update-team-email-dialog.tsx:89
#: apps/web/src/components/(teams)/dialogs/update-team-member-dialog.tsx:100
-#: apps/web/src/components/(teams)/forms/update-team-form.tsx:94
+#: apps/web/src/components/(teams)/forms/update-team-form.tsx:134
#: apps/web/src/components/forms/avatar-image.tsx:94
#: apps/web/src/components/forms/avatar-image.tsx:122
#: apps/web/src/components/forms/password.tsx:84
@@ -517,13 +632,21 @@ msgstr "An unknown error occurred"
msgid "Any payment methods attached to this team will remain attached to this team. Please contact us if you need to update this information."
msgstr "Any payment methods attached to this team will remain attached to this team. Please contact us if you need to update this information."
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:225
+msgid "Any Source"
+msgstr "Any Source"
+
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:205
+msgid "Any Status"
+msgstr "Any Status"
+
#: apps/web/src/app/(dashboard)/settings/tokens/page.tsx:22
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx:42
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx:56
#: apps/web/src/components/(dashboard)/settings/layout/desktop-nav.tsx:90
#: apps/web/src/components/(dashboard)/settings/layout/mobile-nav.tsx:93
-#: apps/web/src/components/(teams)/settings/layout/desktop-nav.tsx:81
-#: apps/web/src/components/(teams)/settings/layout/mobile-nav.tsx:89
+#: apps/web/src/components/(teams)/settings/layout/desktop-nav.tsx:96
+#: apps/web/src/components/(teams)/settings/layout/mobile-nav.tsx:105
msgid "API Tokens"
msgstr "API Tokens"
@@ -533,12 +656,16 @@ msgstr "App Version"
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-button.tsx:89
#: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:120
-#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:148
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:146
#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:125
msgid "Approve"
msgstr "Approve"
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:78
+#: apps/web/src/app/(signing)/sign/[token]/form.tsx:129
+msgid "Approve Document"
+msgstr "Approve Document"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:94
msgid "Approved"
msgstr "Approved"
@@ -546,6 +673,10 @@ msgstr "Approved"
msgid "Are you sure you want to delete this token?"
msgstr "Are you sure you want to delete this token?"
+#: apps/web/src/app/(signing)/sign/[token]/reject-document-dialog.tsx:120
+msgid "Are you sure you want to reject this document? This action cannot be undone."
+msgstr "Are you sure you want to reject this document? This action cannot be undone."
+
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:188
msgid "Are you sure you want to remove the <0>{passkeyName}0> passkey."
msgstr "Are you sure you want to remove the <0>{passkeyName}0> passkey."
@@ -556,7 +687,7 @@ msgstr "Are you sure you wish to delete this team?"
#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:98
#: apps/web/src/app/(dashboard)/settings/teams/team-email-usage.tsx:94
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:453
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:455
#: apps/web/src/components/(teams)/dialogs/delete-team-member-dialog.tsx:81
#: apps/web/src/components/(teams)/dialogs/leave-team-dialog.tsx:81
#: apps/web/src/components/(teams)/dialogs/remove-team-email-dialog.tsx:116
@@ -568,10 +699,14 @@ msgstr "Are you sure?"
msgid "Attempts sealing the document again, useful for after a code change has occurred to resolve an erroneous document."
msgstr "Attempts sealing the document again, useful for after a code change has occurred to resolve an erroneous document."
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:127
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:130
msgid "Audit Log"
msgstr "Audit Log"
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:198
+msgid "Authentication Level"
+msgstr "Authentication Level"
+
#: apps/web/src/app/(recipient)/d/[token]/signing-auth-page.tsx:41
#: apps/web/src/app/(signing)/sign/[token]/signing-auth-page.tsx:52
msgid "Authentication required"
@@ -585,7 +720,7 @@ msgstr "Avatar"
msgid "Avatar Updated"
msgstr "Avatar Updated"
-#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:121
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:127
msgid "Awaiting email confirmation"
msgstr "Awaiting email confirmation"
@@ -595,7 +730,7 @@ msgstr "Awaiting email confirmation"
msgid "Back"
msgstr "Back"
-#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:109
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:164
msgid "Back to Documents"
msgstr "Back to Documents"
@@ -620,23 +755,36 @@ msgstr "Banner Updated"
msgid "Basic details"
msgstr "Basic details"
-#: apps/web/src/app/(dashboard)/settings/billing/page.tsx:72
+#: apps/web/src/app/(dashboard)/settings/billing/page.tsx:74
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/billing/page.tsx:61
#: apps/web/src/components/(dashboard)/settings/layout/desktop-nav.tsx:117
#: apps/web/src/components/(dashboard)/settings/layout/mobile-nav.tsx:120
-#: apps/web/src/components/(teams)/settings/layout/desktop-nav.tsx:108
-#: apps/web/src/components/(teams)/settings/layout/mobile-nav.tsx:116
+#: apps/web/src/components/(teams)/settings/layout/desktop-nav.tsx:123
+#: apps/web/src/components/(teams)/settings/layout/mobile-nav.tsx:132
msgid "Billing"
msgstr "Billing"
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/page.tsx:42
+msgid "Branding Preferences"
+msgstr "Branding Preferences"
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/branding-preferences.tsx:102
+msgid "Branding preferences updated"
+msgstr "Branding preferences updated"
+
#: apps/web/src/components/formatter/document-status.tsx:51
msgid "Bin"
msgstr "Bin"
#: apps/web/src/app/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx:99
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/data-table.tsx:48
msgid "Browser"
msgstr "Browser"
+#: apps/web/src/components/document/document-recipient-link-copy-dialog.tsx:145
+msgid "Bulk Copy"
+msgstr "Bulk Copy"
+
#: apps/web/src/components/(teams)/dialogs/invite-team-member-dialog.tsx:279
msgid "Bulk Import"
msgstr "Bulk Import"
@@ -649,9 +797,22 @@ msgstr "By deleting this document, the following will occur:"
msgid "By enabling 2FA, you will be required to enter a code from your authenticator app every time you sign in."
msgstr "By enabling 2FA, you will be required to enter a code from your authenticator app every time you sign in."
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:142
+msgid "By proceeding to use the electronic signature service provided by Documenso, you affirm that you have read and understood this disclosure. You agree to all terms and conditions related to the use of electronic signatures and electronic transactions as outlined herein."
+msgstr "By proceeding to use the electronic signature service provided by Documenso, you affirm that you have read and understood this disclosure. You agree to all terms and conditions related to the use of electronic signatures and electronic transactions as outlined herein."
+
+#: apps/web/src/components/general/signing-disclosure.tsx:14
+msgid "By proceeding with your electronic signature, you acknowledge and consent that it will be used to sign the given document and holds the same legal validity as a handwritten signature. By completing the electronic signing process, you affirm your understanding and acceptance of these conditions."
+msgstr "By proceeding with your electronic signature, you acknowledge and consent that it will be used to sign the given document and holds the same legal validity as a handwritten signature. By completing the electronic signing process, you affirm your understanding and acceptance of these conditions."
+
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:92
+msgid "By using the electronic signature feature, you are consenting to conduct transactions and receive disclosures electronically. You acknowledge that your electronic signature on documents is binding and that you accept the terms outlined in the documents you are signing."
+msgstr "By using the electronic signature feature, you are consenting to conduct transactions and receive disclosures electronically. You acknowledge that your electronic signature on documents is binding and that you accept the terms outlined in the documents you are signing."
+
#: apps/web/src/app/(dashboard)/documents/_action-items/resend-document.tsx:186
#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:190
#: apps/web/src/app/(dashboard)/documents/duplicate-document-dialog.tsx:108
+#: apps/web/src/app/(dashboard)/documents/move-document-dialog.tsx:120
#: apps/web/src/app/(dashboard)/settings/security/passkeys/create-passkey-dialog.tsx:248
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:157
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:198
@@ -659,17 +820,20 @@ msgstr "By enabling 2FA, you will be required to enter a code from your authenti
#: apps/web/src/app/(dashboard)/templates/delete-template-dialog.tsx:81
#: apps/web/src/app/(dashboard)/templates/duplicate-template-dialog.tsx:78
#: apps/web/src/app/(dashboard)/templates/move-template-dialog.tsx:119
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:470
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:472
+#: apps/web/src/app/(signing)/sign/[token]/auto-sign.tsx:220
#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-2fa.tsx:178
#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-account.tsx:71
#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-passkey.tsx:164
#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-passkey.tsx:189
-#: apps/web/src/app/(signing)/sign/[token]/form.tsx:150
+#: apps/web/src/app/(signing)/sign/[token]/form.tsx:151
+#: apps/web/src/app/(signing)/sign/[token]/form.tsx:220
#: apps/web/src/app/(signing)/sign/[token]/name-field.tsx:215
-#: apps/web/src/app/(signing)/sign/[token]/number-field.tsx:327
+#: apps/web/src/app/(signing)/sign/[token]/number-field.tsx:328
+#: apps/web/src/app/(signing)/sign/[token]/reject-document-dialog.tsx:153
#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:113
-#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:250
-#: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:333
+#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:248
+#: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:335
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/team-transfer-status.tsx:121
#: apps/web/src/components/(dashboard)/settings/token/delete-token-dialog.tsx:176
#: apps/web/src/components/(dashboard)/settings/webhooks/create-webhook-dialog.tsx:242
@@ -699,6 +863,10 @@ msgstr "Cancelled by user"
msgid "Charts"
msgstr "Charts"
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/documents/page.tsx:32
+#~ msgid "Check out the documentaton for the <0>global team settings0>."
+#~ msgstr "Check out the documentaton for the <0>global team settings0>."
+
#: apps/web/src/components/(teams)/dialogs/create-team-checkout-dialog.tsx:179
msgid "Checkout"
msgstr "Checkout"
@@ -711,6 +879,10 @@ msgstr "Choose an existing recipient from below to continue"
msgid "Choose Direct Link Recipient"
msgstr "Choose Direct Link Recipient"
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:182
+msgid "Choose how the document will reach recipients"
+msgstr "Choose how the document will reach recipients"
+
#: apps/web/src/components/forms/token.tsx:200
msgid "Choose..."
msgstr "Choose..."
@@ -737,6 +909,7 @@ msgstr "Click here to get started"
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recent-activity.tsx:78
#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:118
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:68
#: apps/web/src/components/document/document-history-sheet.tsx:133
msgid "Click here to retry"
msgstr "Click here to retry"
@@ -751,17 +924,18 @@ msgid "Click to copy signing link for sending to recipient"
msgstr "Click to copy signing link for sending to recipient"
#: apps/web/src/app/(recipient)/d/[token]/sign-direct-template.tsx:175
-#: apps/web/src/app/(signing)/sign/[token]/form.tsx:114
-#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:435
-#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:314
+#: apps/web/src/app/(signing)/sign/[token]/form.tsx:115
+#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:440
+#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:319
msgid "Click to insert field"
msgstr "Click to insert field"
#: apps/web/src/app/(dashboard)/templates/new-template-dialog.tsx:126
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:304
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:389
#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-2fa.tsx:125
#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-passkey.tsx:138
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/team-transfer-status.tsx:121
+#: apps/web/src/components/document/document-recipient-link-copy-dialog.tsx:140
#: apps/web/src/components/forms/2fa/enable-authenticator-app-dialog.tsx:180
#: apps/web/src/components/forms/2fa/view-recovery-codes-dialog.tsx:102
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:319
@@ -770,8 +944,8 @@ msgid "Close"
msgstr "Close"
#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:61
-#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:425
-#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:304
+#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:430
+#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:309
#: apps/web/src/components/forms/v2/signup.tsx:534
msgid "Complete"
msgstr "Complete"
@@ -788,7 +962,8 @@ msgstr "Complete Signing"
msgid "Complete Viewing"
msgstr "Complete Viewing"
-#: apps/web/src/components/(dashboard)/avatar/stack-avatars-with-tooltip.tsx:62
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:208
+#: apps/web/src/components/(dashboard)/avatar/stack-avatars-with-tooltip.tsx:77
#: apps/web/src/components/formatter/document-status.tsx:28
msgid "Completed"
msgstr "Completed"
@@ -801,11 +976,11 @@ msgstr "Completed documents"
msgid "Completed Documents"
msgstr "Completed Documents"
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:147
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:167
msgid "Configure general settings for the document."
msgstr "Configure general settings for the document."
-#: apps/web/src/app/(dashboard)/templates/[id]/edit-template.tsx:77
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:78
msgid "Configure general settings for the template."
msgstr "Configure general settings for the template."
@@ -813,7 +988,7 @@ msgstr "Configure general settings for the template."
msgid "Configure template"
msgstr "Configure template"
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:479
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:481
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:460
msgid "Confirm"
msgstr "Confirm"
@@ -843,6 +1018,14 @@ msgstr "Confirm email"
msgid "Confirmation email sent"
msgstr "Confirmation email sent"
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:89
+msgid "Consent to Electronic Transactions"
+msgstr "Consent to Electronic Transactions"
+
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:151
+msgid "Contact Information"
+msgstr "Contact Information"
+
#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:189
msgid "Content"
msgstr "Content"
@@ -861,14 +1044,37 @@ msgstr "Continue"
msgid "Continue to login"
msgstr "Continue to login"
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:173
+msgid "Controls the default language of an uploaded document. This will be used as the language in email communications with the recipients."
+msgstr "Controls the default language of an uploaded document. This will be used as the language in email communications with the recipients."
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:141
+msgid "Controls the default visibility of an uploaded document."
+msgstr "Controls the default visibility of an uploaded document."
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:220
+msgid "Controls the formatting of the message that will be sent when inviting a recipient to sign a document. If a custom message has been provided while configuring the document, it will be used instead."
+msgstr "Controls the formatting of the message that will be sent when inviting a recipient to sign a document. If a custom message has been provided while configuring the document, it will be used instead."
+
+#: apps/web/src/components/document/document-recipient-link-copy-dialog.tsx:128
+msgid "Copied"
+msgstr "Copied"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:162
#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:77
#: apps/web/src/app/(dashboard)/templates/template-direct-link-badge.tsx:31
#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:163
#: apps/web/src/components/(dashboard)/avatar/avatar-with-recipient.tsx:40
+#: apps/web/src/components/document/document-recipient-link-copy-dialog.tsx:61
+#: apps/web/src/components/document/document-recipient-link-copy-dialog.tsx:117
#: apps/web/src/components/forms/public-profile-form.tsx:117
msgid "Copied to clipboard"
msgstr "Copied to clipboard"
+#: apps/web/src/components/document/document-recipient-link-copy-dialog.tsx:123
+msgid "Copy"
+msgstr "Copy"
+
#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:169
msgid "Copy sharable link"
msgstr "Copy sharable link"
@@ -877,6 +1083,10 @@ msgstr "Copy sharable link"
msgid "Copy Shareable Link"
msgstr "Copy Shareable Link"
+#: apps/web/src/components/document/document-recipient-link-copy-dialog.tsx:83
+msgid "Copy Signing Links"
+msgstr "Copy Signing Links"
+
#: apps/web/src/components/forms/token.tsx:288
msgid "Copy token"
msgstr "Copy token"
@@ -899,15 +1109,19 @@ msgstr "Create a team to collaborate with your team members."
msgid "Create account"
msgstr "Create account"
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:310
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:397
msgid "Create and send"
msgstr "Create and send"
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:312
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:395
msgid "Create as draft"
msgstr "Create as draft"
-#: apps/web/src/app/(dashboard)/templates/[id]/template-direct-link-dialog-wrapper.tsx:35
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:355
+msgid "Create as pending"
+msgstr "Create as pending"
+
+#: apps/web/src/app/(dashboard)/templates/[id]/template-direct-link-dialog-wrapper.tsx:37
msgid "Create Direct Link"
msgstr "Create Direct Link"
@@ -915,7 +1129,7 @@ msgstr "Create Direct Link"
msgid "Create Direct Signing Link"
msgstr "Create Direct Signing Link"
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:189
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:214
msgid "Create document from template"
msgstr "Create document from template"
@@ -927,6 +1141,10 @@ msgstr "Create now"
msgid "Create one automatically"
msgstr "Create one automatically"
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:399
+msgid "Create signing links"
+msgstr "Create signing links"
+
#: apps/web/src/components/(dashboard)/layout/menu-switcher.tsx:181
#: apps/web/src/components/(dashboard)/layout/menu-switcher.tsx:251
#: apps/web/src/components/(teams)/dialogs/create-team-dialog.tsx:138
@@ -938,6 +1156,10 @@ msgstr "Create team"
msgid "Create Team"
msgstr "Create Team"
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:362
+msgid "Create the document as pending and ready to sign."
+msgstr "Create the document as pending and ready to sign."
+
#: apps/web/src/components/forms/token.tsx:250
#: apps/web/src/components/forms/token.tsx:259
msgid "Create token"
@@ -963,12 +1185,15 @@ msgstr "Create your account and start using state-of-the-art document signing. O
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-information.tsx:35
#: apps/web/src/app/(dashboard)/documents/data-table.tsx:54
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table.tsx:65
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:109
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-information.tsx:34
#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:56
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:274
msgid "Created"
msgstr "Created"
#: apps/web/src/app/(dashboard)/admin/subscriptions/page.tsx:35
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:111
msgid "Created At"
msgstr "Created At"
@@ -983,19 +1208,11 @@ msgstr "Created on"
#: apps/web/src/app/(dashboard)/settings/tokens/page.tsx:67
#: apps/web/src/app/(dashboard)/settings/webhooks/page.tsx:88
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx:100
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/page.tsx:93
msgid "Created on {0}"
msgstr "Created on {0}"
-#: apps/web/src/app/(dashboard)/settings/webhooks/page.tsx:89
-#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/page.tsx:94
-#~ msgid "Created on <0/>"
-#~ msgstr "Created on <0/>"
-
-#: apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx:100
-msgid "Created on{0}"
-msgstr "Created on{0}"
-
#: apps/web/src/components/forms/password.tsx:107
msgid "Current Password"
msgstr "Current Password"
@@ -1029,16 +1246,29 @@ msgstr "Decline"
msgid "Declined team invitation"
msgstr "Declined team invitation"
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:141
-#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:208
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:153
+msgid "Default Document Language"
+msgstr "Default Document Language"
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:117
+#: apps/web/src/components/(teams)/forms/update-team-form.tsx:195
+msgid "Default Document Visibility"
+msgstr "Default Document Visibility"
+
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:90
+msgid "delete"
+msgstr "delete"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:144
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:189
#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:200
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:177
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:211
#: apps/web/src/app/(dashboard)/settings/tokens/page.tsx:83
#: apps/web/src/app/(dashboard)/settings/webhooks/page.tsx:100
-#: apps/web/src/app/(dashboard)/templates/data-table-action-dropdown.tsx:91
+#: apps/web/src/app/(dashboard)/templates/data-table-action-dropdown.tsx:94
#: apps/web/src/app/(dashboard)/templates/delete-template-dialog.tsx:90
-#: apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx:122
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx:116
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/page.tsx:105
#: apps/web/src/components/(dashboard)/settings/token/delete-token-dialog.tsx:121
#: apps/web/src/components/(dashboard)/settings/webhooks/delete-webhook-dialog.tsx:109
@@ -1047,6 +1277,15 @@ msgstr "Declined team invitation"
msgid "Delete"
msgstr "Delete"
+#: apps/web/src/components/(dashboard)/settings/token/delete-token-dialog.tsx:56
+#: apps/web/src/components/(dashboard)/settings/webhooks/delete-webhook-dialog.tsx:54
+msgid "delete {0}"
+msgstr "delete {0}"
+
+#: apps/web/src/components/(teams)/dialogs/delete-team-dialog.tsx:50
+msgid "delete {teamName}"
+msgstr "delete {teamName}"
+
#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:137
msgid "Delete account"
msgstr "Delete account"
@@ -1073,7 +1312,7 @@ msgstr "Delete Document"
msgid "Delete passkey"
msgstr "Delete passkey"
-#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:191
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:197
#: apps/web/src/components/(teams)/dialogs/delete-team-dialog.tsx:118
msgid "Delete team"
msgstr "Delete team"
@@ -1099,6 +1338,7 @@ msgid "Delete your account and all its contents, including completed documents.
msgstr "Delete your account and all its contents, including completed documents. This action is irreversible and will cancel your subscription, so proceed with caution."
#: apps/web/src/app/(dashboard)/admin/documents/[id]/page.tsx:41
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:97
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-information.tsx:50
msgid "Deleted"
msgstr "Deleted"
@@ -1107,11 +1347,12 @@ msgstr "Deleted"
msgid "Deleting account..."
msgstr "Deleting account..."
-#: apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx:135
-#~ msgid "Deleting document"
-#~ msgstr "Deleting document"
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:178
+msgid "Details"
+msgstr "Details"
#: apps/web/src/app/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx:75
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:234
msgid "Device"
msgstr "Device"
@@ -1120,10 +1361,16 @@ msgstr "Device"
msgid "direct link"
msgstr "direct link"
-#: apps/web/src/app/(dashboard)/templates/data-table-action-dropdown.tsx:76
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:40
+#: apps/web/src/app/(dashboard)/templates/data-table-action-dropdown.tsx:79
msgid "Direct link"
msgstr "Direct link"
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:160
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:231
+msgid "Direct Link"
+msgstr "Direct Link"
+
#: apps/web/src/app/(dashboard)/templates/template-direct-link-badge.tsx:46
msgid "direct link disabled"
msgstr "direct link disabled"
@@ -1179,6 +1426,10 @@ msgstr "Disabling direct link signing will prevent anyone from accessing the lin
msgid "Display your name and email in documents"
msgstr "Display your name and email in documents"
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:181
+msgid "Distribute Document"
+msgstr "Distribute Document"
+
#: apps/web/src/app/(dashboard)/templates/delete-template-dialog.tsx:63
msgid "Do you want to delete this template?"
msgstr "Do you want to delete this template?"
@@ -1192,6 +1443,7 @@ msgid "Documenso will delete <0>all of your documents0>, along with all of you
msgstr "Documenso will delete <0>all of your documents0>, along with all of your completed documents, signatures, and all other resources belonging to your Account."
#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-page-view.tsx:119
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:38
msgid "Document"
msgstr "Document"
@@ -1219,12 +1471,20 @@ msgstr "Document completed"
msgid "Document Completed!"
msgstr "Document Completed!"
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:142
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:156
msgid "Document created"
msgstr "Document created"
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:129
+msgid "Document created by <0>{0}0>"
+msgstr "Document created by <0>{0}0>"
+
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:134
+msgid "Document created using a <0>direct link0>"
+msgstr "Document created using a <0>direct link0>"
+
#: apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx:51
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:173
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:178
#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:59
msgid "Document deleted"
msgstr "Document deleted"
@@ -1237,12 +1497,13 @@ msgstr "Document draft"
msgid "Document Duplicated"
msgstr "Document Duplicated"
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:184
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:189
#: apps/web/src/components/document/document-history-sheet.tsx:104
msgid "Document history"
msgstr "Document history"
#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-page-view.tsx:71
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:81
msgid "Document ID"
msgstr "Document ID"
@@ -1250,7 +1511,7 @@ msgstr "Document ID"
msgid "Document inbox"
msgstr "Document inbox"
-#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:178
+#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:180
msgid "Document Limit Exceeded!"
msgstr "Document Limit Exceeded!"
@@ -1270,18 +1531,30 @@ msgstr "Document no longer available to sign"
msgid "Document pending"
msgstr "Document pending"
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:91
+msgid "Document preferences updated"
+msgstr "Document preferences updated"
+
#: apps/web/src/app/(dashboard)/documents/_action-items/resend-document.tsx:97
msgid "Document re-sent"
msgstr "Document re-sent"
+#: apps/web/src/app/(signing)/sign/[token]/rejected/page.tsx:83
+msgid "Document Rejected"
+msgstr "Document Rejected"
+
#: apps/web/src/app/(dashboard)/admin/documents/[id]/admin-actions.tsx:36
msgid "Document resealed"
msgstr "Document resealed"
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:298
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:327
msgid "Document sent"
msgstr "Document sent"
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/documents/page.tsx:26
+#~ msgid "Document Settings"
+#~ msgstr "Document Settings"
+
#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:132
msgid "Document Signed"
msgstr "Document Signed"
@@ -1316,7 +1589,7 @@ msgstr "Document will be permanently deleted"
#: apps/web/src/app/(dashboard)/admin/nav.tsx:65
#: apps/web/src/app/(dashboard)/admin/users/data-table-users.tsx:92
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:139
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:144
#: apps/web/src/app/(dashboard)/documents/[id]/edit/document-edit-page-view.tsx:109
#: apps/web/src/app/(dashboard)/documents/[id]/loading.tsx:16
#: apps/web/src/app/(dashboard)/documents/[id]/sent/page.tsx:15
@@ -1330,6 +1603,10 @@ msgstr "Document will be permanently deleted"
msgid "Documents"
msgstr "Documents"
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view.tsx:195
+msgid "Documents created from template"
+msgstr "Documents created from template"
+
#: apps/web/src/app/(dashboard)/admin/stats/page.tsx:113
msgid "Documents Received"
msgstr "Documents Received"
@@ -1344,9 +1621,9 @@ msgid "Don't have an account? <0>Sign up0>"
msgstr "Don't have an account? <0>Sign up0>"
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-button.tsx:111
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:120
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:123
#: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:141
-#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:164
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:162
#: apps/web/src/components/(teams)/tables/team-billing-invoices-data-table.tsx:110
#: apps/web/src/components/forms/2fa/enable-authenticator-app-dialog.tsx:185
#: apps/web/src/components/forms/2fa/view-recovery-codes-dialog.tsx:107
@@ -1357,10 +1634,11 @@ msgstr "Download"
msgid "Download Audit Logs"
msgstr "Download Audit Logs"
-#: apps/web/src/app/(dashboard)/documents/[id]/logs/download-certificate-button.tsx:84
+#: apps/web/src/app/(dashboard)/documents/[id]/logs/download-certificate-button.tsx:86
msgid "Download Certificate"
msgstr "Download Certificate"
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:214
#: apps/web/src/components/formatter/document-status.tsx:34
msgid "Draft"
msgstr "Draft"
@@ -1377,41 +1655,55 @@ msgstr "Drafted Documents"
msgid "Due to an unpaid invoice, your team has been restricted. Please settle the payment to restore full access to your team."
msgstr "Due to an unpaid invoice, your team has been restricted. Please settle the payment to restore full access to your team."
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:133
-#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:169
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:136
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:167
#: apps/web/src/app/(dashboard)/documents/duplicate-document-dialog.tsx:85
#: apps/web/src/app/(dashboard)/documents/duplicate-document-dialog.tsx:118
-#: apps/web/src/app/(dashboard)/templates/data-table-action-dropdown.tsx:71
+#: apps/web/src/app/(dashboard)/templates/data-table-action-dropdown.tsx:74
#: apps/web/src/app/(dashboard)/templates/duplicate-template-dialog.tsx:91
msgid "Duplicate"
msgstr "Duplicate"
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-button.tsx:104
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:112
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:115
#: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:102
-#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:158
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:156
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:111
#: apps/web/src/app/(dashboard)/settings/webhooks/page.tsx:95
-#: apps/web/src/app/(dashboard)/templates/data-table-action-dropdown.tsx:62
+#: apps/web/src/app/(dashboard)/templates/data-table-action-dropdown.tsx:65
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/team-email-dropdown.tsx:77
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/page.tsx:100
msgid "Edit"
msgstr "Edit"
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view.tsx:115
+msgid "Edit Template"
+msgstr "Edit Template"
+
#: apps/web/src/app/(dashboard)/settings/webhooks/[id]/page.tsx:94
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/[id]/page.tsx:100
msgid "Edit webhook"
msgstr "Edit webhook"
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:78
+msgid "Electronic Delivery of Documents"
+msgstr "Electronic Delivery of Documents"
+
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:17
+msgid "Electronic Signature Disclosure"
+msgstr "Electronic Signature Disclosure"
+
#: apps/web/src/app/(dashboard)/admin/documents/[id]/recipient-item.tsx:166
#: apps/web/src/app/(dashboard)/admin/users/[id]/page.tsx:114
#: apps/web/src/app/(dashboard)/admin/users/data-table-users.tsx:71
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:213
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:220
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:265
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:272
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:122
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:129
#: apps/web/src/app/(recipient)/d/[token]/configure-direct-template.tsx:118
#: apps/web/src/app/(signing)/sign/[token]/email-field.tsx:126
-#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:376
-#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:256
+#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:377
+#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:257
#: apps/web/src/components/(teams)/dialogs/add-team-email-dialog.tsx:169
#: apps/web/src/components/(teams)/dialogs/update-team-email-dialog.tsx:153
#: apps/web/src/components/forms/forgot-password.tsx:81
@@ -1431,6 +1723,10 @@ msgstr "Email address"
msgid "Email Address"
msgstr "Email Address"
+#: apps/web/src/app/(recipient)/d/[token]/configure-direct-template.tsx:80
+msgid "Email cannot already exist in the template"
+msgstr "Email cannot already exist in the template"
+
#: apps/web/src/app/(unauthenticated)/verify-email/[token]/client.tsx:36
msgid "Email Confirmed!"
msgstr "Email Confirmed!"
@@ -1456,6 +1752,10 @@ msgstr "Enable 2FA"
msgid "Enable Authenticator App"
msgstr "Enable Authenticator App"
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/branding-preferences.tsx:170
+msgid "Enable custom branding for all documents in this team."
+msgstr "Enable custom branding for all documents in this team."
+
#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:251
msgid "Enable direct link signing"
msgstr "Enable direct link signing"
@@ -1473,10 +1773,18 @@ msgstr "Enable Direct Link Signing"
msgid "Enabled"
msgstr "Enabled"
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:87
+msgid "Enclosed Document"
+msgstr "Enclosed Document"
+
#: apps/web/src/app/(dashboard)/admin/subscriptions/page.tsx:38
msgid "Ends On"
msgstr "Ends On"
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/branding-preferences.tsx:295
+msgid "Enter your brand details"
+msgstr "Enter your brand details"
+
#: apps/web/src/app/(signing)/sign/[token]/complete/claim-account.tsx:137
msgid "Enter your email"
msgstr "Enter your email"
@@ -1489,25 +1797,26 @@ msgstr "Enter your email address to receive the completed document."
msgid "Enter your name"
msgstr "Enter your name"
-#: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:278
+#: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:280
msgid "Enter your text here"
msgstr "Enter your text here"
#: apps/web/src/app/(dashboard)/admin/documents/[id]/admin-actions.tsx:41
#: apps/web/src/app/(dashboard)/admin/users/[id]/page.tsx:78
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:213
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:247
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:277
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:308
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:234
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:268
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:303
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:349
#: apps/web/src/app/(dashboard)/documents/move-document-dialog.tsx:57
#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:106
#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:112
-#: apps/web/src/app/(dashboard)/templates/[id]/edit-template.tsx:165
-#: apps/web/src/app/(dashboard)/templates/[id]/edit-template.tsx:196
-#: apps/web/src/app/(dashboard)/templates/[id]/edit-template.tsx:230
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:169
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:200
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:234
#: apps/web/src/app/(dashboard)/templates/duplicate-template-dialog.tsx:51
#: apps/web/src/app/(dashboard)/templates/move-template-dialog.tsx:56
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:152
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:175
+#: apps/web/src/app/(signing)/sign/[token]/auto-sign.tsx:152
#: apps/web/src/app/(signing)/sign/[token]/checkbox-field.tsx:122
#: apps/web/src/app/(signing)/sign/[token]/checkbox-field.tsx:151
#: apps/web/src/app/(signing)/sign/[token]/checkbox-field.tsx:212
@@ -1517,14 +1826,16 @@ msgstr "Enter your text here"
#: apps/web/src/app/(signing)/sign/[token]/dropdown-field.tsx:136
#: apps/web/src/app/(signing)/sign/[token]/email-field.tsx:83
#: apps/web/src/app/(signing)/sign/[token]/email-field.tsx:109
+#: apps/web/src/app/(signing)/sign/[token]/initials-field.tsx:89
+#: apps/web/src/app/(signing)/sign/[token]/initials-field.tsx:115
#: apps/web/src/app/(signing)/sign/[token]/name-field.tsx:121
#: apps/web/src/app/(signing)/sign/[token]/name-field.tsx:147
#: apps/web/src/app/(signing)/sign/[token]/number-field.tsx:149
#: apps/web/src/app/(signing)/sign/[token]/number-field.tsx:194
#: apps/web/src/app/(signing)/sign/[token]/radio-field.tsx:101
#: apps/web/src/app/(signing)/sign/[token]/radio-field.tsx:128
-#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:148
-#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:174
+#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:146
+#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:172
#: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:167
#: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:195
#: apps/web/src/components/(dashboard)/layout/verify-email-banner.tsx:54
@@ -1532,6 +1843,14 @@ msgstr "Enter your text here"
msgid "Error"
msgstr "Error"
+#: apps/web/src/components/forms/team-document-settings.tsx:77
+#~ msgid "Error updating global team settings"
+#~ msgstr "Error updating global team settings"
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:128
+msgid "Everyone can access and view the document"
+msgstr "Everyone can access and view the document"
+
#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:142
msgid "Everyone has signed"
msgstr "Everyone has signed"
@@ -1544,28 +1863,15 @@ msgstr "Everyone has signed! You will receive an Email copy of the signed docume
msgid "Exceeded timeout"
msgstr "Exceeded timeout"
-#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:114
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:120
msgid "Expired"
msgstr "Expired"
-#: apps/web/src/app/(dashboard)/settings/tokens/page.tsx:73
-#: apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx:106
-#~ msgid "Expires on"
-#~ msgstr "Expires on"
-
#: apps/web/src/app/(dashboard)/settings/tokens/page.tsx:71
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx:104
msgid "Expires on {0}"
msgstr "Expires on {0}"
-#: apps/web/src/app/(dashboard)/settings/tokens/page.tsx:75
-#: apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx:108
-#~ msgid "Expires on <0/>"
-#~ msgstr "Expires on <0/>"
-
-#: apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx:107
-msgid "Expires on{0}"
-msgstr "Expires on{0}"
-
#: apps/web/src/app/(dashboard)/admin/documents/[id]/admin-actions.tsx:42
msgid "Failed to reseal document"
msgstr "Failed to reseal document"
@@ -1587,28 +1893,42 @@ msgstr "Fields"
msgid "File cannot be larger than {APP_DOCUMENT_UPLOAD_SIZE_LIMIT}MB"
msgstr "File cannot be larger than {APP_DOCUMENT_UPLOAD_SIZE_LIMIT}MB"
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:154
+msgid "For any questions regarding this disclosure, electronic signatures, or any related process, please contact us at: <0>{SUPPORT_EMAIL}0>"
+msgstr "For any questions regarding this disclosure, electronic signatures, or any related process, please contact us at: <0>{SUPPORT_EMAIL}0>"
+
#: apps/web/src/app/(unauthenticated)/forgot-password/page.tsx:21
#: apps/web/src/components/forms/signin.tsx:370
msgid "Forgot your password?"
msgstr "Forgot your password?"
#: apps/web/src/app/(recipient)/d/[token]/sign-direct-template.tsx:326
+#: apps/web/src/app/(signing)/sign/[token]/form.tsx:178
#: apps/web/src/app/(signing)/sign/[token]/name-field.tsx:193
-#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:361
-#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:241
+#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:362
+#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:242
#: apps/web/src/components/forms/profile.tsx:110
#: apps/web/src/components/forms/v2/signup.tsx:312
msgid "Full Name"
msgstr "Full Name"
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:146
-#: apps/web/src/app/(dashboard)/templates/[id]/edit-template.tsx:76
-#: apps/web/src/app/(recipient)/d/[token]/direct-template.tsx:60
-#: apps/web/src/components/(teams)/settings/layout/desktop-nav.tsx:43
-#: apps/web/src/components/(teams)/settings/layout/mobile-nav.tsx:51
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:166
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:77
+#: apps/web/src/app/(recipient)/d/[token]/direct-template.tsx:62
+#: apps/web/src/components/(teams)/settings/layout/desktop-nav.tsx:44
+#: apps/web/src/components/(teams)/settings/layout/mobile-nav.tsx:52
msgid "General"
msgstr "General"
+#: apps/web/src/components/(teams)/settings/layout/desktop-nav.tsx:57
+#: apps/web/src/components/(teams)/settings/layout/mobile-nav.tsx:65
+#~ msgid "Global Settings"
+#~ msgstr "Global Settings"
+
+#: apps/web/src/components/forms/team-document-settings.tsx:69
+#~ msgid "Global Team Settings Updated"
+#~ msgstr "Global Team Settings Updated"
+
#: apps/web/src/app/(profile)/p/[url]/not-found.tsx:30
#: apps/web/src/app/(recipient)/d/[token]/not-found.tsx:33
#: apps/web/src/app/(teams)/t/[teamUrl]/error.tsx:51
@@ -1645,6 +1965,14 @@ msgstr "Here you can edit your personal details."
msgid "Here you can manage your password and security settings."
msgstr "Here you can manage your password and security settings."
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/page.tsx:43
+msgid "Here you can set preferences and defaults for branding."
+msgstr "Here you can set preferences and defaults for branding."
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/page.tsx:34
+msgid "Here you can set preferences and defaults for your team."
+msgstr "Here you can set preferences and defaults for your team."
+
#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:206
msgid "Here's how it works:"
msgstr "Here's how it works:"
@@ -1653,7 +1981,7 @@ msgstr "Here's how it works:"
msgid "Hey I’m Timur"
msgstr "Hey I’m Timur"
-#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:208
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:189
#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:200
#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:155
msgid "Hide"
@@ -1663,9 +1991,9 @@ msgstr "Hide"
msgid "Hide additional information"
msgstr "Hide additional information"
-#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:40
-#~ msgid "I am the owner of this document"
-#~ msgstr "I am the owner of this document"
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:43
+msgid "I am the owner of this document"
+msgstr "I am the owner of this document"
#: apps/web/src/components/(dashboard)/settings/token/delete-token-dialog.tsx:186
#: apps/web/src/components/(dashboard)/settings/webhooks/delete-webhook-dialog.tsx:173
@@ -1696,10 +2024,19 @@ msgstr "Inbox"
msgid "Inbox documents"
msgstr "Inbox documents"
+#: apps/web/src/components/forms/team-document-settings.tsx:132
+#~ msgid "Include Sender Details"
+#~ msgstr "Include Sender Details"
+
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-information.tsx:65
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-information.tsx:50
msgid "Information"
msgstr "Information"
+#: apps/web/src/app/(signing)/sign/[token]/initials-field.tsx:132
+msgid "Initials"
+msgstr "Initials"
+
#: apps/web/src/app/(dashboard)/admin/documents/[id]/recipient-item.tsx:78
msgid "Inserted"
msgstr "Inserted"
@@ -1766,6 +2103,15 @@ msgstr "Invited At"
msgid "Invoice"
msgstr "Invoice"
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/data-table.tsx:47
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:227
+msgid "IP Address"
+msgstr "IP Address"
+
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:118
+msgid "It is crucial to keep your contact information, especially your email address, up to date with us. Please notify us immediately of any changes to ensure that you continue to receive all necessary communications."
+msgstr "It is crucial to keep your contact information, especially your email address, up to date with us. Please notify us immediately of any changes to ensure that you continue to receive all necessary communications."
+
#: apps/web/src/app/(profile)/p/[url]/page.tsx:134
msgid "It looks like {0} hasn't added any documents to their profile yet."
msgstr "It looks like {0} hasn't added any documents to their profile yet."
@@ -1803,6 +2149,7 @@ msgid "Last 7 days"
msgstr "Last 7 days"
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-information.tsx:41
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-information.tsx:38
msgid "Last modified"
msgstr "Last modified"
@@ -1810,6 +2157,10 @@ msgstr "Last modified"
msgid "Last updated"
msgstr "Last updated"
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:121
+msgid "Last Updated"
+msgstr "Last Updated"
+
#: apps/web/src/app/(dashboard)/admin/documents/[id]/page.tsx:52
msgid "Last updated at"
msgstr "Last updated at"
@@ -1827,6 +2178,10 @@ msgstr "Leave"
msgid "Leave team"
msgstr "Leave team"
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:45
+msgid "Legality of Electronic Signatures"
+msgstr "Legality of Electronic Signatures"
+
#: apps/web/src/components/(dashboard)/common/command-menu.tsx:264
msgid "Light Mode"
msgstr "Light Mode"
@@ -1839,6 +2194,10 @@ msgstr "Like to have your own public profile with agreements?"
msgid "Link template"
msgstr "Link template"
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:338
+msgid "Links Generated"
+msgstr "Links Generated"
+
#: apps/web/src/app/(dashboard)/settings/webhooks/page.tsx:79
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/page.tsx:84
msgid "Listening to {0}"
@@ -1885,11 +2244,19 @@ msgstr "Manage {0}'s profile"
msgid "Manage all teams you are currently associated with."
msgstr "Manage all teams you are currently associated with."
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view.tsx:159
+msgid "Manage and view template"
+msgstr "Manage and view template"
+
+#: apps/web/src/app/(dashboard)/settings/billing/page.tsx:136
+msgid "Manage billing"
+msgstr "Manage billing"
+
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:341
msgid "Manage details for this public template"
msgstr "Manage details for this public template"
-#: apps/web/src/app/(dashboard)/templates/[id]/template-direct-link-dialog-wrapper.tsx:33
+#: apps/web/src/app/(dashboard)/templates/[id]/template-direct-link-dialog-wrapper.tsx:35
msgid "Manage Direct Link"
msgstr "Manage Direct Link"
@@ -1905,7 +2272,7 @@ msgstr "Manage passkeys"
msgid "Manage subscription"
msgstr "Manage subscription"
-#: apps/web/src/app/(dashboard)/settings/billing/billing-portal-button.tsx:66
+#: apps/web/src/app/(dashboard)/settings/billing/billing-portal-button.tsx:67
msgid "Manage Subscription"
msgstr "Manage Subscription"
@@ -1959,12 +2326,13 @@ msgid "Member Since"
msgstr "Member Since"
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/members/page.tsx:31
-#: apps/web/src/components/(teams)/settings/layout/desktop-nav.tsx:71
-#: apps/web/src/components/(teams)/settings/layout/mobile-nav.tsx:79
+#: apps/web/src/components/(teams)/settings/layout/desktop-nav.tsx:86
+#: apps/web/src/components/(teams)/settings/layout/mobile-nav.tsx:95
msgid "Members"
msgstr "Members"
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:40
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:55
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recipients.tsx:35
msgid "Modify recipients"
msgstr "Modify recipients"
@@ -1980,6 +2348,7 @@ msgstr "Monthly Active Users: Users that created at least one Document"
msgid "Monthly Active Users: Users that had at least one of their documents completed"
msgstr "Monthly Active Users: Users that had at least one of their documents completed"
+#: apps/web/src/app/(dashboard)/documents/move-document-dialog.tsx:123
#: apps/web/src/app/(dashboard)/templates/move-template-dialog.tsx:122
msgid "Move"
msgstr "Move"
@@ -1992,11 +2361,12 @@ msgstr "Move Document to Team"
msgid "Move Template to Team"
msgstr "Move Template to Team"
-#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:176
-#: apps/web/src/app/(dashboard)/templates/data-table-action-dropdown.tsx:82
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:174
+#: apps/web/src/app/(dashboard)/templates/data-table-action-dropdown.tsx:85
msgid "Move to Team"
msgstr "Move to Team"
+#: apps/web/src/app/(dashboard)/documents/move-document-dialog.tsx:123
#: apps/web/src/app/(dashboard)/templates/move-template-dialog.tsx:122
msgid "Moving..."
msgstr "Moving..."
@@ -2010,8 +2380,8 @@ msgstr "My templates"
#: apps/web/src/app/(dashboard)/admin/users/data-table-users.tsx:66
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:144
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table.tsx:61
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:235
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:242
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:287
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:294
#: apps/web/src/app/(signing)/sign/[token]/complete/claim-account.tsx:119
#: apps/web/src/app/(signing)/sign/[token]/name-field.tsx:170
#: apps/web/src/components/(teams)/dialogs/add-team-email-dialog.tsx:153
@@ -2041,8 +2411,8 @@ msgstr "New team owner"
msgid "New Template"
msgstr "New Template"
-#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:416
-#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:295
+#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:421
+#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:300
#: apps/web/src/components/forms/v2/signup.tsx:521
msgid "Next"
msgstr "Next"
@@ -2055,6 +2425,10 @@ msgstr "Next field"
msgid "No active drafts"
msgstr "No active drafts"
+#: apps/web/src/app/(signing)/sign/[token]/rejected/page.tsx:99
+msgid "No further action is required from you at this time."
+msgstr "No further action is required from you at this time."
+
#: apps/web/src/app/(dashboard)/documents/empty-state.tsx:34
msgid "No documents in the bin"
msgstr "No documents in the bin"
@@ -2071,7 +2445,13 @@ msgstr "No public profile templates found"
msgid "No recent activity"
msgstr "No recent activity"
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:55
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:103
+msgid "No recent documents"
+msgstr "No recent documents"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:70
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recipients.tsx:49
+#: apps/web/src/components/document/document-recipient-link-copy-dialog.tsx:96
msgid "No recipients"
msgstr "No recipients"
@@ -2109,7 +2489,7 @@ msgstr "Not supported"
msgid "Nothing to do"
msgstr "Nothing to do"
-#: apps/web/src/app/(signing)/sign/[token]/number-field.tsx:270
+#: apps/web/src/app/(signing)/sign/[token]/number-field.tsx:271
msgid "Number"
msgstr "Number"
@@ -2143,6 +2523,14 @@ msgstr "Once confirmed, the following will occur:"
msgid "Once you have scanned the QR code or entered the code manually, enter the code provided by your authenticator app below."
msgstr "Once you have scanned the QR code or entered the code manually, enter the code provided by your authenticator app below."
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:134
+msgid "Only admins can access and view the document"
+msgstr "Only admins can access and view the document"
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:131
+msgid "Only managers and above can access and view the document"
+msgstr "Only managers and above can access and view the document"
+
#: apps/web/src/app/(profile)/p/[url]/not-found.tsx:19
#: apps/web/src/app/(recipient)/d/[token]/not-found.tsx:19
#: apps/web/src/app/(teams)/t/[teamUrl]/error.tsx:37
@@ -2151,7 +2539,7 @@ msgstr "Once you have scanned the QR code or entered the code manually, enter th
msgid "Oops! Something went wrong."
msgstr "Oops! Something went wrong."
-#: apps/web/src/components/(dashboard)/avatar/stack-avatars-with-tooltip.tsx:101
+#: apps/web/src/components/(dashboard)/avatar/stack-avatars-with-tooltip.tsx:140
msgid "Opened"
msgstr "Opened"
@@ -2166,12 +2554,15 @@ msgstr "Or"
msgid "Or continue with"
msgstr "Or continue with"
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:289
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:341
msgid "Otherwise, the document will be created as a draft."
msgstr "Otherwise, the document will be created as a draft."
#: apps/web/src/app/(dashboard)/admin/documents/document-results.tsx:86
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:103
#: apps/web/src/components/(dashboard)/layout/menu-switcher.tsx:81
+#: apps/web/src/components/(teams)/tables/current-user-teams-data-table.tsx:86
+#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:109
msgid "Owner"
msgstr "Owner"
@@ -2203,6 +2594,10 @@ msgstr "Passkey has been updated"
msgid "Passkey name"
msgstr "Passkey name"
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:121
+msgid "Passkey Re-Authentication"
+msgstr "Passkey Re-Authentication"
+
#: apps/web/src/app/(dashboard)/settings/security/page.tsx:106
#: apps/web/src/app/(dashboard)/settings/security/passkeys/page.tsx:32
msgid "Passkeys"
@@ -2243,9 +2638,11 @@ msgstr "Payment is required to finalise the creation of your team."
msgid "Payment overdue"
msgstr "Payment overdue"
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:115
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:131
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:211
#: apps/web/src/components/(teams)/tables/teams-member-page-data-table.tsx:82
#: apps/web/src/components/(teams)/tables/user-settings-teams-page-data-table.tsx:77
+#: apps/web/src/components/document/document-read-only-fields.tsx:89
#: apps/web/src/components/formatter/document-status.tsx:22
msgid "Pending"
msgstr "Pending"
@@ -2302,11 +2699,11 @@ msgstr "Please contact support if you would like to revert this action."
msgid "Please enter a meaningful name for your token. This will help you identify it later."
msgstr "Please enter a meaningful name for your token. This will help you identify it later."
-#: apps/web/src/app/(signing)/sign/[token]/form.tsx:134
+#: apps/web/src/app/(signing)/sign/[token]/form.tsx:135
msgid "Please mark as viewed to complete"
msgstr "Please mark as viewed to complete"
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:457
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:459
msgid "Please note that proceeding will remove direct linking recipient and turn it into a placeholder."
msgstr "Please note that proceeding will remove direct linking recipient and turn it into a placeholder."
@@ -2334,6 +2731,10 @@ msgstr "Please note that this action is irreversible. Once confirmed, your webho
msgid "Please note that you will lose access to all documents associated with this team & all the members will be removed and notified"
msgstr "Please note that you will lose access to all documents associated with this team & all the members will be removed and notified"
+#: apps/web/src/app/(signing)/sign/[token]/reject-document-dialog.tsx:37
+msgid "Please provide a reason"
+msgstr "Please provide a reason"
+
#: apps/web/src/components/forms/2fa/disable-authenticator-app-dialog.tsx:127
msgid "Please provide a token from the authenticator, or a backup code. If you do not have a backup code available, please contact support."
msgstr "Please provide a token from the authenticator, or a backup code. If you do not have a backup code available, please contact support."
@@ -2342,6 +2743,10 @@ msgstr "Please provide a token from the authenticator, or a backup code. If you
msgid "Please provide a token from your authenticator, or a backup code."
msgstr "Please provide a token from your authenticator, or a backup code."
+#: apps/web/src/app/(signing)/sign/[token]/form.tsx:169
+msgid "Please review the document before signing."
+msgstr "Please review the document before signing."
+
#: apps/web/src/components/forms/send-confirmation-email.tsx:64
msgid "Please try again and make sure you enter the correct email address."
msgstr "Please try again and make sure you enter the correct email address."
@@ -2359,13 +2764,23 @@ msgid "Please type <0>{0}0> to confirm."
msgstr "Please type <0>{0}0> to confirm."
#: apps/web/src/components/(dashboard)/common/command-menu.tsx:214
+#: apps/web/src/components/(teams)/settings/layout/desktop-nav.tsx:58
+#: apps/web/src/components/(teams)/settings/layout/mobile-nav.tsx:67
msgid "Preferences"
msgstr "Preferences"
-#: apps/web/src/app/(recipient)/d/[token]/direct-template.tsx:61
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:204
+msgid "Preview"
+msgstr "Preview"
+
+#: apps/web/src/app/(recipient)/d/[token]/direct-template.tsx:63
msgid "Preview and configure template."
msgstr "Preview and configure template."
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:130
+#~ msgid "Preview: {0}"
+#~ msgstr "Preview: {0}"
+
#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:105
#: apps/web/src/components/formatter/template-type.tsx:22
msgid "Private"
@@ -2403,8 +2818,8 @@ msgstr "Public"
#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:42
#: apps/web/src/components/(dashboard)/settings/layout/desktop-nav.tsx:50
#: apps/web/src/components/(dashboard)/settings/layout/mobile-nav.tsx:53
-#: apps/web/src/components/(teams)/settings/layout/desktop-nav.tsx:57
-#: apps/web/src/components/(teams)/settings/layout/mobile-nav.tsx:65
+#: apps/web/src/components/(teams)/settings/layout/desktop-nav.tsx:72
+#: apps/web/src/components/(teams)/settings/layout/mobile-nav.tsx:81
msgid "Public Profile"
msgstr "Public Profile"
@@ -2424,10 +2839,26 @@ msgstr "Public templates are connected to your public profile. Any modifications
msgid "Read only field"
msgstr "Read only field"
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:90
+#: apps/web/src/components/general/signing-disclosure.tsx:21
+msgid "Read the full <0>signature disclosure0>."
+msgstr "Read the full <0>signature disclosure0>."
+
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:106
msgid "Ready"
msgstr "Ready"
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:281
+msgid "Reason"
+msgstr "Reason"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:146
+msgid "Reason for rejection:"
+msgstr "Reason for rejection:"
+
+#: apps/web/src/app/(signing)/sign/[token]/reject-document-dialog.tsx:38
+msgid "Reason must be less than 500 characters"
+msgstr "Reason must be less than 500 characters"
+
#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-dialog.tsx:62
msgid "Reauthentication is required to sign this field"
msgstr "Reauthentication is required to sign this field"
@@ -2437,7 +2868,12 @@ msgstr "Reauthentication is required to sign this field"
msgid "Recent activity"
msgstr "Recent activity"
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:47
+msgid "Recent documents"
+msgstr "Recent documents"
+
#: apps/web/src/app/(dashboard)/documents/data-table.tsx:69
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:120
#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:280
msgid "Recipient"
msgstr "Recipient"
@@ -2447,7 +2883,9 @@ msgid "Recipient updated"
msgstr "Recipient updated"
#: apps/web/src/app/(dashboard)/admin/documents/[id]/page.tsx:66
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:34
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:49
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recipients.tsx:30
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:139
msgid "Recipients"
msgstr "Recipients"
@@ -2473,6 +2911,17 @@ msgstr "Recovery codes"
msgid "Registration Successful"
msgstr "Registration Successful"
+#: apps/web/src/app/(signing)/sign/[token]/reject-document-dialog.tsx:109
+#: apps/web/src/app/(signing)/sign/[token]/reject-document-dialog.tsx:116
+#: apps/web/src/app/(signing)/sign/[token]/reject-document-dialog.tsx:162
+msgid "Reject Document"
+msgstr "Reject Document"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:141
+#: apps/web/src/components/(dashboard)/avatar/stack-avatars-with-tooltip.tsx:101
+msgid "Rejected"
+msgstr "Rejected"
+
#: apps/web/src/app/(unauthenticated)/forgot-password/page.tsx:34
msgid "Remembered your password? <0>Sign In0>"
msgstr "Remembered your password? <0>Sign In0>"
@@ -2481,6 +2930,7 @@ msgstr "Remembered your password? <0>Sign In0>"
#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:431
#: apps/web/src/app/(signing)/sign/[token]/signing-field-container.tsx:156
#: apps/web/src/app/(signing)/sign/[token]/signing-field-container.tsx:180
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/branding-preferences.tsx:250
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/team-email-dropdown.tsx:89
#: apps/web/src/components/(teams)/dialogs/remove-team-email-dialog.tsx:159
#: apps/web/src/components/(teams)/tables/pending-user-teams-data-table-actions.tsx:54
@@ -2524,7 +2974,7 @@ msgstr "Resend Confirmation Email"
msgid "Resend verification"
msgstr "Resend verification"
-#: apps/web/src/components/(teams)/forms/update-team-form.tsx:164
+#: apps/web/src/components/(teams)/forms/update-team-form.tsx:266
#: apps/web/src/components/forms/public-profile-form.tsx:267
msgid "Reset"
msgstr "Reset"
@@ -2551,6 +3001,10 @@ msgstr "Resolve"
msgid "Resolve payment"
msgstr "Resolve payment"
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:126
+msgid "Retention of Documents"
+msgstr "Retention of Documents"
+
#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-passkey.tsx:168
msgid "Retry"
msgstr "Retry"
@@ -2597,9 +3051,11 @@ msgstr "Role"
msgid "Roles"
msgstr "Roles"
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:444
-#: apps/web/src/app/(signing)/sign/[token]/number-field.tsx:336
-#: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:342
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:446
+#: apps/web/src/app/(signing)/sign/[token]/number-field.tsx:337
+#: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:344
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/branding-preferences.tsx:312
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:232
msgid "Save"
msgstr "Save"
@@ -2618,6 +3074,10 @@ msgstr "Search by document title"
msgid "Search by name or email"
msgstr "Search by name or email"
+#: apps/web/src/components/(dashboard)/document-search/document-search.tsx:42
+msgid "Search documents..."
+msgstr "Search documents..."
+
#: apps/web/src/app/(dashboard)/settings/webhooks/[id]/page.tsx:189
#: apps/web/src/components/(dashboard)/settings/webhooks/create-webhook-dialog.tsx:217
msgid "Secret"
@@ -2666,10 +3126,15 @@ msgstr "Select passkey"
msgid "Send confirmation email"
msgstr "Send confirmation email"
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:273
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:326
msgid "Send document"
msgstr "Send document"
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:188
+#: apps/web/src/components/(teams)/forms/update-team-form.tsx:220
+msgid "Send on Behalf of Team"
+msgstr "Send on Behalf of Team"
+
#: apps/web/src/app/(dashboard)/documents/_action-items/resend-document.tsx:191
msgid "Send reminder"
msgstr "Send reminder"
@@ -2686,7 +3151,8 @@ msgstr "Sending Reset Email..."
msgid "Sending..."
msgstr "Sending..."
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:85
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:101
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:248
msgid "Sent"
msgstr "Sent"
@@ -2705,13 +3171,13 @@ msgstr "Settings"
msgid "Setup"
msgstr "Setup"
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:145
-#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:212
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:148
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:193
msgid "Share"
msgstr "Share"
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:161
-#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:224
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:179
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:219
msgid "Share Signing Card"
msgstr "Share Signing Card"
@@ -2733,34 +3199,35 @@ msgstr "Show templates in your team public profile for your audience to sign and
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-button.tsx:83
#: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:114
-#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:141
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:139
#: apps/web/src/app/(profile)/p/[url]/page.tsx:192
+#: apps/web/src/app/(signing)/sign/[token]/auto-sign.tsx:229
#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-2fa.tsx:182
#: apps/web/src/app/(signing)/sign/[token]/name-field.tsx:224
#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:124
-#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:259
+#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:256
#: apps/web/src/components/ui/user-profile-skeleton.tsx:75
#: apps/web/src/components/ui/user-profile-timur.tsx:81
msgid "Sign"
msgstr "Sign"
-#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:219
+#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:217
msgid "Sign as {0} <0>({1})0>"
msgstr "Sign as {0} <0>({1})0>"
-#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:219
-#~ msgid "Sign as <0>{0} <1>({1})1>0>"
-#~ msgstr "Sign as <0>{0} <1>({1})1>0>"
-
#: apps/web/src/app/(signing)/sign/[token]/name-field.tsx:183
msgid "Sign as<0>{0} <1>({1})1>0>"
msgstr "Sign as<0>{0} <1>({1})1>0>"
-#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:329
-#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:209
+#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:330
+#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:210
msgid "Sign document"
msgstr "Sign document"
+#: apps/web/src/app/(signing)/sign/[token]/form.tsx:128
+msgid "Sign Document"
+msgstr "Sign Document"
+
#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-dialog.tsx:59
msgid "Sign field"
msgstr "Sign field"
@@ -2785,8 +3252,8 @@ msgstr "Sign in to your account"
msgid "Sign Out"
msgstr "Sign Out"
-#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:350
-#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:230
+#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:351
+#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:231
msgid "Sign the document to complete the process."
msgstr "Sign the document to complete the process."
@@ -2809,15 +3276,21 @@ msgid "Sign Up with OIDC"
msgstr "Sign Up with OIDC"
#: apps/web/src/app/(dashboard)/admin/documents/[id]/recipient-item.tsx:88
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:177
#: apps/web/src/app/(recipient)/d/[token]/sign-direct-template.tsx:338
-#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:197
-#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:227
-#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:391
-#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:270
+#: apps/web/src/app/(signing)/sign/[token]/form.tsx:192
+#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:195
+#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:225
+#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:392
+#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:271
#: apps/web/src/components/forms/profile.tsx:132
msgid "Signature"
msgstr "Signature"
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:220
+msgid "Signature ID"
+msgstr "Signature ID"
+
#: apps/web/src/app/(dashboard)/admin/stats/page.tsx:123
msgid "Signatures Collected"
msgstr "Signatures Collected"
@@ -2826,15 +3299,38 @@ msgstr "Signatures Collected"
msgid "Signatures will appear once the document has been completed"
msgstr "Signatures will appear once the document has been completed"
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:98
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:114
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:270
+#: apps/web/src/components/document/document-read-only-fields.tsx:84
msgid "Signed"
msgstr "Signed"
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:176
+msgid "Signer Events"
+msgstr "Signer Events"
+
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:168
+msgid "Signing Certificate"
+msgstr "Signing Certificate"
+
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:303
+msgid "Signing certificate provided by"
+msgstr "Signing certificate provided by"
+
#: apps/web/src/components/forms/signin.tsx:383
#: apps/web/src/components/forms/signin.tsx:510
msgid "Signing in..."
msgstr "Signing in..."
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:160
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:203
+msgid "Signing Links"
+msgstr "Signing Links"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:339
+msgid "Signing links have been generated for this document."
+msgstr "Signing links have been generated for this document."
+
#: apps/web/src/components/forms/signup.tsx:235
msgid "Signing up..."
msgstr "Signing up..."
@@ -2854,15 +3350,15 @@ msgstr "Site Settings"
#: apps/web/src/app/(dashboard)/documents/_action-items/resend-document.tsx:105
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-button.tsx:63
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:88
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:91
#: apps/web/src/app/(dashboard)/documents/[id]/logs/download-audit-log-button.tsx:65
-#: apps/web/src/app/(dashboard)/documents/[id]/logs/download-certificate-button.tsx:66
+#: apps/web/src/app/(dashboard)/documents/[id]/logs/download-certificate-button.tsx:68
#: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:75
-#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:108
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:106
#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:80
#: apps/web/src/app/(dashboard)/documents/duplicate-document-dialog.tsx:72
#: apps/web/src/app/(dashboard)/settings/billing/billing-plans.tsx:62
-#: apps/web/src/app/(dashboard)/settings/billing/billing-portal-button.tsx:50
+#: apps/web/src/app/(dashboard)/settings/billing/billing-portal-button.tsx:51
#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:124
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:73
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:93
@@ -2874,10 +3370,11 @@ msgstr "Site Settings"
#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:104
#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:127
#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:151
-#: apps/web/src/app/(recipient)/d/[token]/direct-template.tsx:117
+#: apps/web/src/app/(recipient)/d/[token]/direct-template.tsx:118
#: apps/web/src/app/(recipient)/d/[token]/signing-auth-page.tsx:27
#: apps/web/src/app/(signing)/sign/[token]/signing-auth-page.tsx:38
#: apps/web/src/app/(teams)/t/[teamUrl]/layout-billing-banner.tsx:53
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/branding-preferences.tsx:107
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/team-email-dropdown.tsx:39
#: apps/web/src/app/(unauthenticated)/verify-email/[token]/page.tsx:61
#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:243
@@ -2914,6 +3411,10 @@ msgstr "Something went wrong while sending the confirmation email."
msgid "Something went wrong while updating the team billing subscription, please contact support."
msgstr "Something went wrong while updating the team billing subscription, please contact support."
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:96
+msgid "Something went wrong!"
+msgstr "Something went wrong!"
+
#: apps/web/src/app/(dashboard)/settings/security/passkeys/create-passkey-dialog.tsx:240
#: apps/web/src/components/forms/2fa/view-recovery-codes-dialog.tsx:154
msgid "Something went wrong. Please try again or contact support."
@@ -2923,10 +3424,14 @@ msgstr "Something went wrong. Please try again or contact support."
msgid "Sorry, we were unable to download the audit logs. Please try again later."
msgstr "Sorry, we were unable to download the audit logs. Please try again later."
-#: apps/web/src/app/(dashboard)/documents/[id]/logs/download-certificate-button.tsx:68
+#: apps/web/src/app/(dashboard)/documents/[id]/logs/download-certificate-button.tsx:70
msgid "Sorry, we were unable to download the certificate. Please try again later."
msgstr "Sorry, we were unable to download the certificate. Please try again later."
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:138
+msgid "Source"
+msgstr "Source"
+
#: apps/web/src/app/(dashboard)/admin/nav.tsx:37
msgid "Stats"
msgstr "Stats"
@@ -2934,11 +3439,13 @@ msgstr "Stats"
#: apps/web/src/app/(dashboard)/admin/documents/document-results.tsx:81
#: apps/web/src/app/(dashboard)/admin/subscriptions/page.tsx:32
#: apps/web/src/app/(dashboard)/documents/data-table.tsx:79
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:130
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:93
#: apps/web/src/components/(teams)/tables/team-billing-invoices-data-table.tsx:73
msgid "Status"
msgstr "Status"
-#: apps/web/src/app/(dashboard)/settings/billing/billing-plans.tsx:128
+#: apps/web/src/app/(dashboard)/settings/billing/billing-plans.tsx:129
msgid "Subscribe"
msgstr "Subscribe"
@@ -2972,7 +3479,7 @@ msgstr "Subscriptions"
#: apps/web/src/components/(teams)/dialogs/transfer-team-dialog.tsx:108
#: apps/web/src/components/(teams)/dialogs/update-team-email-dialog.tsx:79
#: apps/web/src/components/(teams)/dialogs/update-team-member-dialog.tsx:92
-#: apps/web/src/components/(teams)/forms/update-team-form.tsx:68
+#: apps/web/src/components/(teams)/forms/update-team-form.tsx:106
#: apps/web/src/components/(teams)/tables/pending-user-teams-data-table-actions.tsx:27
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:62
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:79
@@ -2986,6 +3493,10 @@ msgstr "Success"
msgid "Successfully created passkey"
msgstr "Successfully created passkey"
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:57
+msgid "System Requirements"
+msgstr "System Requirements"
+
#: apps/web/src/components/(dashboard)/common/command-menu.tsx:266
msgid "System Theme"
msgstr "System Theme"
@@ -2999,8 +3510,8 @@ msgstr "Team"
msgid "Team checkout"
msgstr "Team checkout"
-#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:61
-#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:140
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:67
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:146
msgid "Team email"
msgstr "Team email"
@@ -3043,7 +3554,7 @@ msgid "Team Member"
msgstr "Team Member"
#: apps/web/src/components/(teams)/dialogs/create-team-dialog.tsx:166
-#: apps/web/src/components/(teams)/forms/update-team-form.tsx:113
+#: apps/web/src/components/(teams)/forms/update-team-form.tsx:153
msgid "Team Name"
msgstr "Team Name"
@@ -3067,6 +3578,10 @@ msgstr "Team ownership transfer already completed!"
msgid "Team ownership transferred!"
msgstr "Team ownership transferred!"
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/page.tsx:33
+msgid "Team Preferences"
+msgstr "Team Preferences"
+
#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:49
msgid "Team Public Profile"
msgstr "Team Public Profile"
@@ -3092,7 +3607,7 @@ msgid "Team transfer request expired"
msgstr "Team transfer request expired"
#: apps/web/src/components/(teams)/dialogs/create-team-dialog.tsx:196
-#: apps/web/src/components/(teams)/forms/update-team-form.tsx:129
+#: apps/web/src/components/(teams)/forms/update-team-form.tsx:169
msgid "Team URL"
msgstr "Team URL"
@@ -3108,6 +3623,11 @@ msgstr "Teams"
msgid "Teams restricted"
msgstr "Teams restricted"
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/template-edit-page-view.tsx:63
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:39
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:148
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:228
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view.tsx:146
#: apps/web/src/components/(teams)/dialogs/invite-team-member-dialog.tsx:408
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:271
msgid "Template"
@@ -3137,11 +3657,11 @@ msgstr "Template has been updated."
msgid "Template moved"
msgstr "Template moved"
-#: apps/web/src/app/(dashboard)/templates/[id]/edit-template.tsx:219
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:223
msgid "Template saved"
msgstr "Template saved"
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view.tsx:60
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view.tsx:87
#: apps/web/src/app/(dashboard)/templates/templates-page-view.tsx:55
#: apps/web/src/components/(dashboard)/common/command-menu.tsx:208
#: apps/web/src/components/(dashboard)/layout/desktop-nav.tsx:22
@@ -3153,8 +3673,8 @@ msgstr "Templates"
msgid "Templates allow you to quickly generate documents with pre-filled recipients and fields."
msgstr "Templates allow you to quickly generate documents with pre-filled recipients and fields."
-#: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:256
-#: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:272
+#: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:257
+#: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:274
msgid "Text"
msgstr "Text"
@@ -3162,6 +3682,10 @@ msgstr "Text"
msgid "Text Color"
msgstr "Text Color"
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:24
+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."
+msgstr "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."
+
#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:52
msgid "The account has been deleted successfully."
msgstr "The account has been deleted successfully."
@@ -3184,7 +3708,11 @@ msgstr "The document has been successfully moved to the selected team."
msgid "The document is now completed, please follow any instructions provided within the parent application."
msgstr "The document is now completed, please follow any instructions provided within the parent application."
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:159
+#: apps/web/src/app/(signing)/sign/[token]/rejected/page.tsx:92
+msgid "The document owner has been notified of your decision. They may contact you with further instructions if necessary."
+msgstr "The document owner has been notified of your decision. They may contact you with further instructions if necessary."
+
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:182
msgid "The document was created but could not be sent to recipients."
msgstr "The document was created but could not be sent to recipients."
@@ -3192,7 +3720,7 @@ msgstr "The document was created but could not be sent to recipients."
msgid "The document will be hidden from your account"
msgstr "The document will be hidden from your account"
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:281
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:334
msgid "The document will be immediately sent to recipients if this is checked."
msgstr "The document will be immediately sent to recipients if this is checked."
@@ -3202,6 +3730,10 @@ msgstr "The document will be immediately sent to recipients if this is checked."
msgid "The events that will trigger a webhook to be sent to your URL."
msgstr "The events that will trigger a webhook to be sent to your URL."
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/documents/page.tsx:27
+#~ msgid "The global settings for the documents in your team account."
+#~ msgstr "The global settings for the documents in your team account."
+
#: apps/web/src/app/(unauthenticated)/team/verify/transfer/[token]/page.tsx:114
msgid "The ownership of team <0>{0}0> has been successfully transferred to you."
msgstr "The ownership of team <0>{0}0> has been successfully transferred to you."
@@ -3234,7 +3766,9 @@ msgstr "The recipient has been updated successfully"
msgid "The selected team member will receive an email which they must accept before the team is transferred"
msgstr "The selected team member will receive an email which they must accept before the team is transferred"
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:163
#: apps/web/src/components/(dashboard)/avatar/avatar-with-recipient.tsx:41
+#: apps/web/src/components/document/document-recipient-link-copy-dialog.tsx:118
msgid "The signing link has been copied to your clipboard."
msgstr "The signing link has been copied to your clipboard."
@@ -3339,14 +3873,22 @@ msgstr "This document has been cancelled by the owner and is no longer available
msgid "This document has been cancelled by the owner."
msgstr "This document has been cancelled by the owner."
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:219
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:224
msgid "This document has been signed by all recipients"
msgstr "This document has been signed by all recipients"
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:222
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:227
msgid "This document is currently a draft and has not been sent"
msgstr "This document is currently a draft and has not been sent"
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:152
+msgid "This document was created by you or a team member using the template above."
+msgstr "This document was created by you or a team member using the template above."
+
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:164
+msgid "This document was created using a direct link."
+msgstr "This document was created using a direct link."
+
#: apps/web/src/components/(teams)/dialogs/add-team-email-dialog.tsx:93
msgid "This email is already being used by another team."
msgstr "This email is already being used by another team."
@@ -3375,7 +3917,7 @@ msgstr "This price includes minimum 5 seats."
msgid "This session has expired. Please try again."
msgstr "This session has expired. Please try again."
-#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:195
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:201
msgid "This team, and any associated data excluding billing invoices will be permanently deleted."
msgstr "This team, and any associated data excluding billing invoices will be permanently deleted."
@@ -3392,7 +3934,7 @@ msgid "This token is invalid or has expired. Please contact your team for a new
msgstr "This token is invalid or has expired. Please contact your team for a new invitation."
#: apps/web/src/components/(teams)/dialogs/create-team-dialog.tsx:98
-#: apps/web/src/components/(teams)/forms/update-team-form.tsx:87
+#: apps/web/src/components/(teams)/forms/update-team-form.tsx:127
msgid "This URL is already in use."
msgstr "This URL is already in use."
@@ -3404,7 +3946,8 @@ msgstr "This username has already been taken"
msgid "This username is already taken"
msgstr "This username is already taken"
-#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-data-table.tsx:77
+#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-data-table.tsx:73
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/data-table.tsx:44
msgid "Time"
msgstr "Time"
@@ -3412,8 +3955,13 @@ msgstr "Time"
msgid "Time zone"
msgstr "Time zone"
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:131
+msgid "Time Zone"
+msgstr "Time Zone"
+
#: apps/web/src/app/(dashboard)/admin/documents/document-results.tsx:67
#: apps/web/src/app/(dashboard)/documents/data-table.tsx:60
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:115
#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:61
msgid "Title"
msgstr "Title"
@@ -3450,6 +3998,10 @@ msgstr "To gain access to your account, please confirm your email address by cli
msgid "To mark this document as viewed, you need to be logged in as <0>{0}0>"
msgstr "To mark this document as viewed, you need to be logged in as <0>{0}0>"
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:60
+msgid "To use our electronic signature service, you must have access to:"
+msgstr "To use our electronic signature service, you must have access to:"
+
#: apps/web/src/app/embed/authenticate.tsx:21
msgid "To view this document you need to be signed into your account, please sign in to continue."
msgstr "To view this document you need to be signed into your account, please sign in to continue."
@@ -3479,7 +4031,7 @@ msgid "Token deleted"
msgstr "Token deleted"
#: apps/web/src/app/(dashboard)/settings/tokens/page.tsx:75
-#: apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx:114
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx:108
msgid "Token doesn't have an expiration date"
msgstr "Token doesn't have an expiration date"
@@ -3507,17 +4059,21 @@ msgstr "Total Signers that Signed Up"
msgid "Total Users"
msgstr "Total Users"
+#: apps/web/src/components/(teams)/dialogs/transfer-team-dialog.tsx:76
+msgid "transfer {teamName}"
+msgstr "transfer {teamName}"
+
#: apps/web/src/components/(teams)/dialogs/transfer-team-dialog.tsx:160
msgid "Transfer ownership of this team to a selected team member."
msgstr "Transfer ownership of this team to a selected team member."
-#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:169
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:175
#: apps/web/src/components/(teams)/dialogs/transfer-team-dialog.tsx:147
#: apps/web/src/components/(teams)/dialogs/transfer-team-dialog.tsx:156
msgid "Transfer team"
msgstr "Transfer team"
-#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:173
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:179
msgid "Transfer the ownership of the team to another team member."
msgstr "Transfer the ownership of the team to another team member."
@@ -3551,6 +4107,10 @@ msgstr "Two-factor authentication enabled"
msgid "Two-factor authentication has been disabled for your account. You will no longer be required to enter a code from your authenticator app when signing in."
msgstr "Two-factor authentication has been disabled for your account. You will no longer be required to enter a code from your authenticator app when signing in."
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:120
+msgid "Two-Factor Re-Authentication"
+msgstr "Two-Factor Re-Authentication"
+
#: apps/web/src/app/(dashboard)/admin/documents/[id]/recipient-item.tsx:73
#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:67
msgid "Type"
@@ -3609,6 +4169,10 @@ msgstr "Unable to join this team at this time."
msgid "Unable to load document history"
msgstr "Unable to load document history"
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:62
+msgid "Unable to load documents"
+msgstr "Unable to load documents"
+
#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:111
msgid "Unable to load your public profile templates at this time"
msgstr "Unable to load your public profile templates at this time"
@@ -3648,10 +4212,17 @@ msgstr "Unable to sign in"
msgid "Unauthorized"
msgstr "Unauthorized"
-#: apps/web/src/components/(dashboard)/avatar/stack-avatars-with-tooltip.tsx:116
+#: apps/web/src/components/(dashboard)/avatar/stack-avatars-with-tooltip.tsx:155
msgid "Uncompleted"
msgstr "Uncompleted"
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:229
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:254
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:265
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:276
+msgid "Unknown"
+msgstr "Unknown"
+
#: apps/web/src/app/(teams)/t/[teamUrl]/error.tsx:23
msgid "Unknown error"
msgstr "Unknown error"
@@ -3693,7 +4264,7 @@ msgstr "Update Recipient"
msgid "Update role"
msgstr "Update role"
-#: apps/web/src/components/(teams)/forms/update-team-form.tsx:176
+#: apps/web/src/components/(teams)/forms/update-team-form.tsx:278
msgid "Update team"
msgstr "Update team"
@@ -3724,11 +4295,20 @@ msgstr "Updating password..."
msgid "Updating profile..."
msgstr "Updating profile..."
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:115
+msgid "Updating Your Information"
+msgstr "Updating Your Information"
+
#: apps/web/src/components/forms/avatar-image.tsx:182
msgid "Upload Avatar"
msgstr "Upload Avatar"
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/branding-preferences.tsx:256
+msgid "Upload your brand logo (max 5MB, JPG, PNG, or WebP)"
+msgstr "Upload your brand logo (max 5MB, JPG, PNG, or WebP)"
+
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-information.tsx:31
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-information.tsx:30
msgid "Uploaded by"
msgstr "Uploaded by"
@@ -3744,6 +4324,10 @@ msgstr "Uploaded file is too small"
msgid "Uploaded file not an allowed file type"
msgstr "Uploaded file not an allowed file type"
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view.tsx:170
+msgid "Use"
+msgstr "Use"
+
#: apps/web/src/components/forms/2fa/disable-authenticator-app-dialog.tsx:187
#: apps/web/src/components/forms/signin.tsx:505
msgid "Use Authenticator"
@@ -3754,11 +4338,12 @@ msgstr "Use Authenticator"
msgid "Use Backup Code"
msgstr "Use Backup Code"
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:183
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:207
msgid "Use Template"
msgstr "Use Template"
-#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-data-table.tsx:82
+#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-data-table.tsx:78
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/data-table.tsx:45
msgid "User"
msgstr "User"
@@ -3806,10 +4391,14 @@ msgstr "Verify your email address to unlock all features."
msgid "Verify your email to upload documents."
msgstr "Verify your email to upload documents."
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:75
+msgid "Version History"
+msgstr "Version History"
+
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-button.tsx:95
#: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:126
#: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:135
-#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:134
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:132
#: apps/web/src/components/(teams)/tables/team-billing-invoices-data-table.tsx:100
#: apps/web/src/components/forms/2fa/view-recovery-codes-dialog.tsx:168
msgid "View"
@@ -3827,6 +4416,10 @@ msgstr "View all documents sent to your account"
msgid "View all recent security activity related to your account."
msgstr "View all recent security activity related to your account."
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:157
+msgid "View all related documents"
+msgstr "View all related documents"
+
#: apps/web/src/app/(dashboard)/settings/security/activity/page.tsx:26
msgid "View all security activity related to your account."
msgstr "View all security activity related to your account."
@@ -3835,7 +4428,11 @@ msgstr "View all security activity related to your account."
msgid "View Codes"
msgstr "View Codes"
-#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:150
+#: apps/web/src/app/(signing)/sign/[token]/form.tsx:127
+msgid "View Document"
+msgstr "View Document"
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:156
msgid "View documents associated with this email"
msgstr "View documents associated with this email"
@@ -3843,6 +4440,10 @@ msgstr "View documents associated with this email"
msgid "View invites"
msgstr "View invites"
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:95
+msgid "View more"
+msgstr "View more"
+
#: apps/web/src/app/(signing)/sign/[token]/complete/document-preview-button.tsx:34
msgid "View Original Document"
msgstr "View Original Document"
@@ -3856,11 +4457,12 @@ msgstr "View Recovery Codes"
msgid "View teams"
msgstr "View teams"
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:104
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:120
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:259
msgid "Viewed"
msgstr "Viewed"
-#: apps/web/src/components/(dashboard)/avatar/stack-avatars-with-tooltip.tsx:86
+#: apps/web/src/components/(dashboard)/avatar/stack-avatars-with-tooltip.tsx:125
msgid "Waiting"
msgstr "Waiting"
@@ -3880,7 +4482,7 @@ msgstr "Want to send slick signing links like this one? <0>Check out Documenso.<
msgid "Want your own public profile?"
msgstr "Want your own public profile?"
-#: apps/web/src/app/(dashboard)/settings/billing/billing-portal-button.tsx:40
+#: apps/web/src/app/(dashboard)/settings/billing/billing-portal-button.tsx:41
#: apps/web/src/app/(teams)/t/[teamUrl]/layout-billing-banner.tsx:55
#: apps/web/src/components/(teams)/team-billing-portal-button.tsx:31
msgid "We are unable to proceed to the billing portal at this time. Please try again, or contact support."
@@ -4016,7 +4618,7 @@ msgstr "We encountered an unknown error while attempting to update your password
msgid "We encountered an unknown error while attempting to update your public profile. Please try again later."
msgstr "We encountered an unknown error while attempting to update your public profile. Please try again later."
-#: apps/web/src/components/(teams)/forms/update-team-form.tsx:96
+#: apps/web/src/components/(teams)/forms/update-team-form.tsx:136
msgid "We encountered an unknown error while attempting to update your team. Please try again later."
msgstr "We encountered an unknown error while attempting to update your team. Please try again later."
@@ -4058,12 +4660,20 @@ msgstr "We were unable to set your public profile to public. Please try again."
msgid "We were unable to setup two-factor authentication for your account. Please ensure that you have entered your code correctly and try again."
msgstr "We were unable to setup two-factor authentication for your account. Please ensure that you have entered your code correctly and try again."
-#: apps/web/src/app/(recipient)/d/[token]/direct-template.tsx:119
+#: apps/web/src/app/(recipient)/d/[token]/direct-template.tsx:120
#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:245
#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:127
msgid "We were unable to submit this document at this time. Please try again later."
msgstr "We were unable to submit this document at this time. Please try again later."
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/branding-preferences.tsx:109
+msgid "We were unable to update your branding preferences at this time, please try again later"
+msgstr "We were unable to update your branding preferences at this time, please try again later"
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:98
+msgid "We were unable to update your document preferences at this time, please try again later"
+msgstr "We were unable to update your document preferences at this time, please try again later"
+
#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-2fa.tsx:169
msgid "We were unable to verify your details. Please try again or contact support"
msgstr "We were unable to verify your details. Please try again or contact support"
@@ -4072,6 +4682,14 @@ msgstr "We were unable to verify your details. Please try again or contact suppo
msgid "We were unable to verify your email. If your email is not verified already, please try again."
msgstr "We were unable to verify your email. If your email is not verified already, please try again."
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:370
+msgid "We will generate signing links for you, which you can send to the recipients through your method of choice."
+msgstr "We will generate signing links for you, which you can send to the recipients through your method of choice."
+
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:366
+msgid "We won't send anything to notify recipients."
+msgstr "We won't send anything to notify recipients."
+
#: apps/web/src/app/(dashboard)/documents/empty-state.tsx:29
#: apps/web/src/app/(dashboard)/templates/empty-state.tsx:11
msgid "We're all empty"
@@ -4103,8 +4721,8 @@ msgstr "Webhook URL"
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/page.tsx:33
#: apps/web/src/components/(dashboard)/settings/layout/desktop-nav.tsx:103
#: apps/web/src/components/(dashboard)/settings/layout/mobile-nav.tsx:106
-#: apps/web/src/components/(teams)/settings/layout/desktop-nav.tsx:94
-#: apps/web/src/components/(teams)/settings/layout/mobile-nav.tsx:102
+#: apps/web/src/components/(teams)/settings/layout/desktop-nav.tsx:109
+#: apps/web/src/components/(teams)/settings/layout/mobile-nav.tsx:118
msgid "Webhooks"
msgstr "Webhooks"
@@ -4112,6 +4730,10 @@ msgstr "Webhooks"
msgid "Weekly"
msgstr "Weekly"
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:21
+msgid "Welcome"
+msgstr "Welcome"
+
#: apps/web/src/app/(unauthenticated)/signin/page.tsx:33
msgid "Welcome back, we are lucky to have you."
msgstr "Welcome back, we are lucky to have you."
@@ -4124,6 +4746,14 @@ msgstr "Were you trying to edit this document instead?"
msgid "When you click continue, you will be prompted to add the first available authenticator on your system."
msgstr "When you click continue, you will be prompted to add the first available authenticator on your system."
+#: apps/web/src/app/(signing)/sign/[token]/auto-sign.tsx:183
+msgid "When you sign a document, we can automatically fill in and sign the following fields using information that has already been provided. You can also manually sign or remove any automatically signed fields afterwards if you desire."
+msgstr "When you sign a document, we can automatically fill in and sign the following fields using information that has already been provided. You can also manually sign or remove any automatically signed fields afterwards if you desire."
+
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:36
+msgid "When you use our platform to affix your electronic signature to documents, you are consenting to do so under the Electronic Signatures in Global and National Commerce Act (E-Sign Act) and other applicable laws. This action indicates your agreement to use electronic means to sign documents and receive notifications."
+msgstr "When you use our platform to affix your electronic signature to documents, you are consenting to do so under the Electronic Signatures in Global and National Commerce Act (E-Sign Act) and other applicable laws. This action indicates your agreement to use electronic means to sign documents and receive notifications."
+
#: apps/web/src/app/(profile)/p/[url]/page.tsx:139
msgid "While waiting for them to do so you can create your own Documenso account and get started with document signing right away."
msgstr "While waiting for them to do so you can create your own Documenso account and get started with document signing right away."
@@ -4132,6 +4762,10 @@ msgstr "While waiting for them to do so you can create your own Documenso accoun
msgid "Who do you want to remind?"
msgstr "Who do you want to remind?"
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:101
+msgid "Withdrawing Consent"
+msgstr "Withdrawing Consent"
+
#: apps/web/src/components/forms/public-profile-form.tsx:223
msgid "Write about the team"
msgstr "Write about the team"
@@ -4145,6 +4779,7 @@ msgid "Yearly"
msgstr "Yearly"
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-information.tsx:32
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-information.tsx:31
msgid "You"
msgstr "You"
@@ -4184,14 +4819,10 @@ msgstr "You are about to remove the following user from <0>{teamName}0>."
msgid "You are about to revoke access for team <0>{0}0> ({1}) to use your email."
msgstr "You are about to revoke access for team <0>{0}0> ({1}) to use your email."
-#: apps/web/src/app/(dashboard)/settings/billing/page.tsx:78
+#: apps/web/src/app/(dashboard)/settings/billing/page.tsx:80
msgid "You are currently on the <0>Free Plan0>."
msgstr "You are currently on the <0>Free Plan0>."
-#: apps/web/src/app/(dashboard)/settings/billing/page.tsx:92
-#~ msgid "You are currently subscribed to <0>{0}0>"
-#~ msgstr "You are currently subscribed to <0>{0}0>"
-
#: apps/web/src/components/(teams)/dialogs/update-team-member-dialog.tsx:148
msgid "You are currently updating <0>{teamMemberName}.0>"
msgstr "You are currently updating <0>{teamMemberName}.0>"
@@ -4216,11 +4847,15 @@ msgstr "You can choose to enable or disable your team profile for public view."
msgid "You can claim your profile later on by going to your profile settings!"
msgstr "You can claim your profile later on by going to your profile settings!"
+#: apps/web/src/components/document/document-recipient-link-copy-dialog.tsx:87
+msgid "You can copy and share these links to recipients so they can action the document."
+msgstr "You can copy and share these links to recipients so they can action the document."
+
#: apps/web/src/components/forms/public-profile-form.tsx:154
msgid "You can update the profile URL by updating the team URL in the general settings page."
msgstr "You can update the profile URL by updating the team URL in the general settings page."
-#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:65
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:71
msgid "You can view documents associated with this email and use this identity when sending documents."
msgstr "You can view documents associated with this email and use this identity when sending documents."
@@ -4236,11 +4871,7 @@ msgstr "You cannot modify a team member who has a higher role than you."
msgid "You cannot upload encrypted PDFs"
msgstr "You cannot upload encrypted PDFs"
-#: apps/web/src/app/(dashboard)/settings/billing/page.tsx:97
-#~ msgid "You currently have an active plan"
-#~ msgstr "You currently have an active plan"
-
-#: apps/web/src/app/(dashboard)/settings/billing/billing-portal-button.tsx:45
+#: apps/web/src/app/(dashboard)/settings/billing/billing-portal-button.tsx:46
msgid "You do not currently have a customer record, this should not happen. Please contact support for assistance."
msgstr "You do not currently have a customer record, this should not happen. Please contact support for assistance."
@@ -4286,10 +4917,14 @@ msgstr "You have reached the maximum limit of {0} direct templates. <0>Upgrade y
msgid "You have reached your document limit."
msgstr "You have reached your document limit."
-#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:181
+#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:183
msgid "You have reached your document limit. <0>Upgrade your account to continue!0>"
msgstr "You have reached your document limit. <0>Upgrade your account to continue!0>"
+#: apps/web/src/app/(signing)/sign/[token]/rejected/page.tsx:88
+msgid "You have rejected this document"
+msgstr "You have rejected this document"
+
#: apps/web/src/components/(teams)/dialogs/leave-team-dialog.tsx:50
msgid "You have successfully left this team."
msgstr "You have successfully left this team."
@@ -4308,6 +4943,10 @@ msgstr "You have successfully removed this user from the team."
msgid "You have successfully revoked access."
msgstr "You have successfully revoked access."
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:104
+msgid "You have the right to withdraw your consent to use electronic signatures at any time before completing the signing process. To withdraw your consent, please contact the sender of the document. In failing to contact the sender you may reach out to <0>{SUPPORT_EMAIL}0> for assistance. Be aware that withdrawing consent may delay or halt the completion of the related transaction or service."
+msgstr "You have the right to withdraw your consent to use electronic signatures at any time before completing the signing process. To withdraw your consent, please contact the sender of the document. In failing to contact the sender you may reach out to <0>{SUPPORT_EMAIL}0> for assistance. Be aware that withdrawing consent may delay or halt the completion of the related transaction or service."
+
#: apps/web/src/components/(teams)/dialogs/update-team-member-dialog.tsx:93
msgid "You have updated {teamMemberName}."
msgstr "You have updated {teamMemberName}."
@@ -4320,10 +4959,6 @@ msgstr "You have verified your email address for <0>{0}0>."
msgid "You must be an admin of this team to manage billing."
msgstr "You must be an admin of this team to manage billing."
-#: apps/web/src/components/(teams)/dialogs/transfer-team-dialog.tsx:80
-#~ msgid "You must enter '{confirmTransferMessage}' to proceed"
-#~ msgstr "You must enter '{confirmTransferMessage}' to proceed"
-
#: apps/web/src/components/(dashboard)/settings/token/delete-token-dialog.tsx:60
#: apps/web/src/components/(dashboard)/settings/webhooks/delete-webhook-dialog.tsx:58
#: apps/web/src/components/(teams)/dialogs/delete-team-dialog.tsx:54
@@ -4374,7 +5009,15 @@ msgstr "Your avatar has been updated successfully."
msgid "Your banner has been updated successfully."
msgstr "Your banner has been updated successfully."
-#: apps/web/src/app/(dashboard)/settings/billing/page.tsx:119
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/branding-preferences.tsx:280
+msgid "Your brand website URL"
+msgstr "Your brand website URL"
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/branding-preferences.tsx:103
+msgid "Your branding preferences have been updated"
+msgstr "Your branding preferences have been updated"
+
+#: apps/web/src/app/(dashboard)/settings/billing/page.tsx:125
msgid "Your current plan is past due. Please update your payment information."
msgstr "Your current plan is past due. Please update your payment information."
@@ -4386,7 +5029,7 @@ msgstr "Your direct signing templates"
msgid "Your document failed to upload."
msgstr "Your document failed to upload."
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:143
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:157
msgid "Your document has been created from the template successfully."
msgstr "Your document has been created from the template successfully."
@@ -4394,7 +5037,7 @@ msgstr "Your document has been created from the template successfully."
msgid "Your document has been re-sent successfully."
msgstr "Your document has been re-sent successfully."
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:299
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:328
msgid "Your document has been sent successfully."
msgstr "Your document has been sent successfully."
@@ -4410,6 +5053,10 @@ msgstr "Your document has been uploaded successfully."
msgid "Your document has been uploaded successfully. You will be redirected to the template page."
msgstr "Your document has been uploaded successfully. You will be redirected to the template page."
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:92
+msgid "Your document preferences have been updated"
+msgstr "Your document preferences have been updated"
+
#: apps/web/src/components/(dashboard)/common/command-menu.tsx:223
msgid "Your documents"
msgstr "Your documents"
@@ -4427,6 +5074,10 @@ msgstr "Your email is currently being used by team <0>{0}0> ({1})."
msgid "Your existing tokens"
msgstr "Your existing tokens"
+#: apps/web/src/components/forms/team-document-settings.tsx:70
+#~ msgid "Your global team document settings has been updated successfully."
+#~ msgstr "Your global team document settings has been updated successfully."
+
#: apps/web/src/components/forms/password.tsx:72
#: apps/web/src/components/forms/reset-password.tsx:73
msgid "Your password has been updated successfully."
@@ -4469,7 +5120,7 @@ msgstr "Your team has been created."
msgid "Your team has been successfully deleted."
msgstr "Your team has been successfully deleted."
-#: apps/web/src/components/(teams)/forms/update-team-form.tsx:69
+#: apps/web/src/components/(teams)/forms/update-team-form.tsx:107
msgid "Your team has been successfully updated."
msgstr "Your team has been successfully updated."
@@ -4485,7 +5136,7 @@ msgstr "Your template has been successfully deleted."
msgid "Your template will be duplicated."
msgstr "Your template will be duplicated."
-#: apps/web/src/app/(dashboard)/templates/[id]/edit-template.tsx:220
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:224
msgid "Your templates has been saved successfully."
msgstr "Your templates has been saved successfully."
diff --git a/packages/lib/translations/es/common.po b/packages/lib/translations/es/common.po
new file mode 100644
index 000000000..6c0db8de5
--- /dev/null
+++ b/packages/lib/translations/es/common.po
@@ -0,0 +1,1817 @@
+msgid ""
+msgstr ""
+"POT-Creation-Date: 2024-07-24 13:01+1000\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: @lingui/cli\n"
+"Language: es\n"
+"Project-Id-Version: documenso-app\n"
+"Report-Msgid-Bugs-To: \n"
+"PO-Revision-Date: 2024-11-20 11:56\n"
+"Last-Translator: \n"
+"Language-Team: Spanish\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Crowdin-Project: documenso-app\n"
+"X-Crowdin-Project-ID: 694691\n"
+"X-Crowdin-Language: es-ES\n"
+"X-Crowdin-File: common.po\n"
+"X-Crowdin-File-ID: 4\n"
+
+#: packages/email/template-components/template-document-super-delete.tsx:27
+msgid "\"{documentName}\" has been deleted by an admin."
+msgstr "\"{documentName}\" ha sido eliminado por un admin."
+
+#: packages/email/template-components/template-document-pending.tsx:37
+msgid "“{documentName}” has been signed"
+msgstr "“{documentName}” ha sido firmado"
+
+#: packages/email/template-components/template-document-completed.tsx:41
+msgid "“{documentName}” was signed by all signers"
+msgstr "\"{documentName}\" fue firmado por todos los firmantes"
+
+#: packages/lib/server-only/document/resend-document.tsx:109
+#~ msgid "{0}"
+#~ msgstr "{0}"
+
+#: packages/email/template-components/template-document-invite.tsx:80
+#~ msgid "{0} Document"
+#~ msgstr "{0} Document"
+
+#: packages/lib/jobs/definitions/emails/send-signing-email.ts:137
+msgid "{0} has invited you to {recipientActionVerb} the document \"{1}\"."
+msgstr "{0} te ha invitado a {recipientActionVerb} el documento \"{1}\"."
+
+#: packages/lib/jobs/definitions/emails/send-signing-email.ts:130
+msgid "{0} invited you to {recipientActionVerb} a document"
+msgstr "{0} te invitó a {recipientActionVerb} un documento"
+
+#: packages/email/templates/team-join.tsx:61
+msgid "{0} joined the team {teamName} on Documenso"
+msgstr "{0} se unió al equipo {teamName} en Documenso"
+
+#: packages/email/templates/team-leave.tsx:61
+msgid "{0} left the team {teamName} on Documenso"
+msgstr "{0} dejó el equipo {teamName} en Documenso"
+
+#: packages/ui/primitives/data-table-pagination.tsx:30
+msgid "{0} of {1} row(s) selected."
+msgstr "{0} de {1} fila(s) seleccionada."
+
+#: packages/lib/jobs/definitions/emails/send-signing-email.ts:136
+#: packages/lib/server-only/document/resend-document.tsx:137
+msgid "{0} on behalf of {1} has invited you to {recipientActionVerb} the document \"{2}\"."
+msgstr "{0} en nombre de {1} te ha invitado a {recipientActionVerb} el documento \"{2}\"."
+
+#: packages/email/template-components/template-document-invite.tsx:51
+#~ msgid "{0}<0/>\"{documentName}\""
+#~ msgstr "{0}<0/>\"{documentName}\""
+
+#: packages/email/templates/document-invite.tsx:94
+msgid "{inviterName} <0>({inviterEmail})0>"
+msgstr "{inviterName} <0>({inviterEmail})0>"
+
+#: packages/email/templates/document-cancel.tsx:21
+msgid "{inviterName} has cancelled the document {documentName}, you don't need to sign it anymore."
+msgstr "{inviterName} ha cancelado el documento {documentName}, ya no necesitas firmarlo."
+
+#: packages/email/template-components/template-document-cancel.tsx:24
+msgid "{inviterName} has cancelled the document<0/>\"{documentName}\""
+msgstr "{inviterName} ha cancelado el documento<0/>\"{documentName}\""
+
+#: packages/email/template-components/template-document-invite.tsx:75
+msgid "{inviterName} has invited you to {0}<0/>\"{documentName}\""
+msgstr "{inviterName} te ha invitado a {0}<0/>\"{documentName}\""
+
+#: packages/email/templates/document-invite.tsx:41
+msgid "{inviterName} has invited you to {action} {documentName}"
+msgstr "{inviterName} te ha invitado a {action} {documentName}"
+
+#: packages/email/templates/document-invite.tsx:106
+msgid "{inviterName} has invited you to {action} the document \"{documentName}\"."
+msgstr "{inviterName} te ha invitado a {action} el documento \"{documentName}\"."
+
+#: packages/email/templates/recipient-removed-from-document.tsx:20
+msgid "{inviterName} has removed you from the document {documentName}."
+msgstr "{inviterName} te ha eliminado del documento {documentName}."
+
+#: packages/email/templates/recipient-removed-from-document.tsx:49
+msgid "{inviterName} has removed you from the document<0/>\"{documentName}\""
+msgstr "{inviterName} te ha eliminado del documento<0/>\"{documentName}\""
+
+#: packages/email/template-components/template-document-invite.tsx:63
+msgid "{inviterName} on behalf of {teamName} has invited you to {0}"
+msgstr "{inviterName} en nombre de {teamName} te ha invitado a {0}"
+
+#: packages/email/template-components/template-document-invite.tsx:49
+#~ msgid "{inviterName} on behalf of {teamName} has invited you to {0}<0/>\"{documentName}\""
+#~ msgstr "{inviterName} on behalf of {teamName} has invited you to {0}<0/>\"{documentName}\""
+
+#: packages/email/templates/document-invite.tsx:45
+msgid "{inviterName} on behalf of {teamName} has invited you to {action} {documentName}"
+msgstr "{inviterName} en nombre de {teamName} te ha invitado a {action} {documentName}"
+
+#: packages/email/templates/team-join.tsx:67
+msgid "{memberEmail} joined the following team"
+msgstr "{memberEmail} se unió al siguiente equipo"
+
+#: packages/email/templates/team-leave.tsx:67
+msgid "{memberEmail} left the following team"
+msgstr "{memberEmail} dejó el siguiente equipo"
+
+#: packages/lib/utils/document-audit-logs.ts:263
+msgid "{prefix} added a field"
+msgstr "{prefix} agregó un campo"
+
+#: packages/lib/utils/document-audit-logs.ts:275
+msgid "{prefix} added a recipient"
+msgstr "{prefix} agregó un destinatario"
+
+#: packages/lib/utils/document-audit-logs.ts:287
+msgid "{prefix} created the document"
+msgstr "{prefix} creó el documento"
+
+#: packages/lib/utils/document-audit-logs.ts:291
+msgid "{prefix} deleted the document"
+msgstr "{prefix} eliminó el documento"
+
+#: packages/lib/utils/document-audit-logs.ts:335
+msgid "{prefix} moved the document to team"
+msgstr "{prefix} movió el documento al equipo"
+
+#: packages/lib/utils/document-audit-logs.ts:319
+msgid "{prefix} opened the document"
+msgstr "{prefix} abrió el documento"
+
+#: packages/lib/utils/document-audit-logs.ts:267
+msgid "{prefix} removed a field"
+msgstr "{prefix} eliminó un campo"
+
+#: packages/lib/utils/document-audit-logs.ts:279
+msgid "{prefix} removed a recipient"
+msgstr "{prefix} eliminó un destinatario"
+
+#: packages/lib/utils/document-audit-logs.ts:365
+msgid "{prefix} resent an email to {0}"
+msgstr "{prefix} reenviaron un correo electrónico a {0}"
+
+#: packages/lib/utils/document-audit-logs.ts:366
+msgid "{prefix} sent an email to {0}"
+msgstr "{prefix} envió un correo electrónico a {0}"
+
+#: packages/lib/utils/document-audit-logs.ts:331
+msgid "{prefix} sent the document"
+msgstr "{prefix} envió el documento"
+
+#: packages/lib/utils/document-audit-logs.ts:295
+msgid "{prefix} signed a field"
+msgstr "{prefix} firmó un campo"
+
+#: packages/lib/utils/document-audit-logs.ts:299
+msgid "{prefix} unsigned a field"
+msgstr "{prefix} no firmó un campo"
+
+#: packages/lib/utils/document-audit-logs.ts:271
+msgid "{prefix} updated a field"
+msgstr "{prefix} actualizó un campo"
+
+#: packages/lib/utils/document-audit-logs.ts:283
+msgid "{prefix} updated a recipient"
+msgstr "{prefix} actualizó un destinatario"
+
+#: packages/lib/utils/document-audit-logs.ts:315
+msgid "{prefix} updated the document"
+msgstr "{prefix} actualizó el documento"
+
+#: packages/lib/utils/document-audit-logs.ts:307
+msgid "{prefix} updated the document access auth requirements"
+msgstr "{prefix} actualizó los requisitos de autorización de acceso al documento"
+
+#: packages/lib/utils/document-audit-logs.ts:327
+msgid "{prefix} updated the document external ID"
+msgstr "{prefix} actualizó el ID externo del documento"
+
+#: packages/lib/utils/document-audit-logs.ts:311
+msgid "{prefix} updated the document signing auth requirements"
+msgstr "{prefix} actualizó los requisitos de autenticación para la firma del documento"
+
+#: packages/lib/utils/document-audit-logs.ts:323
+msgid "{prefix} updated the document title"
+msgstr "{prefix} actualizó el título del documento"
+
+#: packages/lib/utils/document-audit-logs.ts:303
+msgid "{prefix} updated the document visibility"
+msgstr "{prefix} actualizó la visibilidad del documento"
+
+#: packages/email/templates/document-created-from-direct-template.tsx:61
+msgid "{recipientName} {action} a document by using one of your direct links"
+msgstr "{recipientName} {action} un documento utilizando uno de tus enlaces directos"
+
+#: packages/email/templates/document-rejected.tsx:27
+msgid "{recipientName} has rejected the document '{documentName}'"
+msgstr "{recipientName} ha rechazado el documento '{documentName}'"
+
+#: packages/email/template-components/template-document-rejected.tsx:25
+msgid "{signerName} has rejected the document \"{documentName}\"."
+msgstr "{signerName} ha rechazado el documento \"{documentName}\"."
+
+#: packages/email/template-components/template-document-invite.tsx:68
+msgid "{teamName} has invited you to {0}"
+msgstr "{teamName} te ha invitado a {0}"
+
+#: packages/email/templates/document-invite.tsx:46
+msgid "{teamName} has invited you to {action} {documentName}"
+msgstr "{teamName} te ha invitado a {action} {documentName}"
+
+#: packages/email/templates/team-transfer-request.tsx:55
+msgid "{teamName} ownership transfer request"
+msgstr "solicitud de transferencia de propiedad de {teamName}"
+
+#: packages/lib/utils/document-audit-logs.ts:343
+msgid "{userName} approved the document"
+msgstr "{userName} aprobó el documento"
+
+#: packages/lib/utils/document-audit-logs.ts:344
+msgid "{userName} CC'd the document"
+msgstr "{userName} envió una copia del documento"
+
+#: packages/lib/utils/document-audit-logs.ts:345
+msgid "{userName} completed their task"
+msgstr "{userName} completó su tarea"
+
+#: packages/lib/utils/document-audit-logs.ts:355
+msgid "{userName} rejected the document"
+msgstr "{userName} rechazó el documento"
+
+#: packages/lib/utils/document-audit-logs.ts:341
+msgid "{userName} signed the document"
+msgstr "{userName} firmó el documento"
+
+#: packages/lib/utils/document-audit-logs.ts:342
+msgid "{userName} viewed the document"
+msgstr "{userName} vio el documento"
+
+#: packages/ui/primitives/data-table-pagination.tsx:41
+msgid "{visibleRows, plural, one {Showing # result.} other {Showing # results.}}"
+msgstr "{visibleRows, plural, one {Mostrando # resultado.} other {Mostrando # resultados.}}"
+
+#: packages/email/templates/document-invite.tsx:100
+#~ msgid "`${inviterName} has invited you to ${action} the document \"${documentName}\".`"
+#~ msgstr "`${inviterName} has invited you to ${action} the document \"${documentName}\".`"
+
+#: packages/email/templates/team-transfer-request.tsx:59
+msgid "<0>{senderName}0> has requested that you take ownership of the following team"
+msgstr "<0>{senderName}0> ha solicitado que asumas la propiedad del siguiente equipo"
+
+#: packages/email/templates/confirm-team-email.tsx:75
+msgid "<0>{teamName}0> has requested to use your email address for their team on Documenso."
+msgstr "<0>{teamName}0> ha solicitado usar tu dirección de correo electrónico para su equipo en Documenso."
+
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:241
+msgid "<0>Email0> - The recipient will be emailed the document to sign, approve, etc."
+msgstr "<0>Correo electrónico0> - Al destinatario se le enviará el documento para firmar, aprobar, etc."
+
+#: packages/ui/components/recipient/recipient-action-auth-select.tsx:53
+msgid "<0>Inherit authentication method0> - Use the global action signing authentication method configured in the \"General Settings\" step"
+msgstr "<0>Heredar método de autenticación0> - Use el método de autenticación de firma de acción global configurado en el paso \"Configuración General\""
+
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:247
+msgid "<0>Links0> - We will generate links which you can send to the recipients manually."
+msgstr "<0>Enlaces0> - Generaremos enlaces que puedes enviar a los destinatarios manualmente."
+
+#: packages/ui/components/document/document-global-auth-action-select.tsx:95
+msgid "<0>No restrictions0> - No authentication required"
+msgstr "<0>Sin restricciones0> - No se requiere autenticación"
+
+#: packages/ui/components/document/document-global-auth-access-select.tsx:77
+msgid "<0>No restrictions0> - The document can be accessed directly by the URL sent to the recipient"
+msgstr "<0>Sin restricciones0> - El documento se puede acceder directamente a través de la URL enviada al destinatario"
+
+#: packages/ui/components/recipient/recipient-action-auth-select.tsx:75
+msgid "<0>None0> - No authentication required"
+msgstr "<0>Ninguno0> - No se requiere autenticación"
+
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:254
+msgid "<0>Note0> - If you use Links in combination with direct templates, you will need to manually send the links to the remaining recipients."
+msgstr "<0>Nota0> - Si usas Enlaces en combinación con plantillas directas, necesitarás enviar manualmente los enlaces a los destinatarios restantes."
+
+#: packages/ui/components/document/document-global-auth-action-select.tsx:89
+#: packages/ui/components/recipient/recipient-action-auth-select.tsx:69
+msgid "<0>Require 2FA0> - The recipient must have an account and 2FA enabled via their settings"
+msgstr "<0>Requerir 2FA0> - El destinatario debe tener una cuenta y 2FA habilitado a través de sus configuraciones"
+
+#: packages/ui/components/document/document-global-auth-access-select.tsx:72
+msgid "<0>Require account0> - The recipient must be signed in to view the document"
+msgstr "<0>Requerir cuenta0> - El destinatario debe haber iniciado sesión para ver el documento"
+
+#: packages/ui/components/document/document-global-auth-action-select.tsx:83
+#: packages/ui/components/recipient/recipient-action-auth-select.tsx:63
+msgid "<0>Require passkey0> - The recipient must have an account and passkey configured via their settings"
+msgstr "<0>Requerir clave de acceso0> - El destinatario debe tener una cuenta y clave de acceso configurada a través de sus configuraciones"
+
+#: packages/lib/jobs/definitions/emails/send-signing-email.ts:122
+msgid "A document was created by your direct template that requires you to {recipientActionVerb} it."
+msgstr "Se creó un documento a partir de tu plantilla directa que requiere que {recipientActionVerb}."
+
+#: packages/lib/utils/document-audit-logs.ts:262
+msgid "A field was added"
+msgstr "Se añadió un campo"
+
+#: packages/lib/utils/document-audit-logs.ts:266
+msgid "A field was removed"
+msgstr "Se eliminó un campo"
+
+#: packages/lib/utils/document-audit-logs.ts:270
+msgid "A field was updated"
+msgstr "Se actualizó un campo"
+
+#: packages/lib/jobs/definitions/emails/send-team-member-joined-email.ts:107
+msgid "A new member has joined your team"
+msgstr "Un nuevo miembro se ha unido a tu equipo"
+
+#: packages/lib/utils/document-audit-logs.ts:274
+msgid "A recipient was added"
+msgstr "Se añadió un destinatario"
+
+#: packages/lib/utils/document-audit-logs.ts:278
+msgid "A recipient was removed"
+msgstr "Se eliminó un destinatario"
+
+#: packages/lib/utils/document-audit-logs.ts:282
+msgid "A recipient was updated"
+msgstr "Se actualizó un destinatario"
+
+#: packages/lib/server-only/team/create-team-email-verification.ts:156
+msgid "A request to use your email has been initiated by {0} on Documenso"
+msgstr "Se ha iniciado una solicitud para usar tu correo electrónico por {0} en Documenso"
+
+#: packages/lib/server-only/team/create-team-email-verification.ts:142
+#~ msgid "A request to use your email has been initiated by {teamName} on Documenso"
+#~ msgstr "A request to use your email has been initiated by {teamName} on Documenso"
+
+#: packages/email/templates/team-join.tsx:31
+msgid "A team member has joined a team on Documenso"
+msgstr "Un miembro del equipo se ha unido a un equipo en Documenso"
+
+#: packages/lib/jobs/definitions/emails/send-team-member-left-email.ts:96
+msgid "A team member has left {0}"
+msgstr "Un miembro del equipo ha dejado {0}"
+
+#: packages/email/templates/team-leave.tsx:31
+msgid "A team member has left a team on Documenso"
+msgstr "Un miembro del equipo ha dejado un equipo en Documenso"
+
+#: packages/email/templates/team-delete.tsx:29
+#: packages/email/templates/team-delete.tsx:33
+msgid "A team you were a part of has been deleted"
+msgstr "Un equipo del que formabas parte ha sido eliminado"
+
+#: packages/email/templates/confirm-team-email.tsx:118
+#: packages/email/templates/team-invite.tsx:94
+#: packages/email/templates/team-transfer-request.tsx:81
+msgid "Accept"
+msgstr "Aceptar"
+
+#: packages/email/templates/team-invite.tsx:42
+msgid "Accept invitation to join a team on Documenso"
+msgstr "Aceptar invitación para unirse a un equipo en Documenso"
+
+#: packages/email/templates/confirm-team-email.tsx:41
+msgid "Accept team email request for {teamName} on Documenso"
+msgstr "Aceptar la solicitud de correo electrónico del equipo para {teamName} en Documenso"
+
+#: packages/email/templates/team-transfer-request.tsx:29
+msgid "Accept team transfer request on Documenso"
+msgstr "Aceptar solicitud de transferencia de equipo en Documenso"
+
+#: packages/ui/primitives/document-dropzone.tsx:69
+msgid "Add a document"
+msgstr "Agregar un documento"
+
+#: packages/ui/primitives/document-flow/add-settings.tsx:378
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:468
+msgid "Add a URL to redirect the user to once the document is signed"
+msgstr "Agregue una URL para redirigir al usuario una vez que se firme el documento"
+
+#: packages/ui/primitives/document-flow/add-settings.tsx:290
+msgid "Add an external ID to the document. This can be used to identify the document in external systems."
+msgstr "Agregue un ID externo al documento. Esto se puede usar para identificar el documento en sistemas externos."
+
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:385
+msgid "Add an external ID to the template. This can be used to identify in external systems."
+msgstr "Agregue un ID externo a la plantilla. Esto se puede usar para identificar en sistemas externos."
+
+#: packages/ui/primitives/document-flow/field-items-advanced-settings/dropdown-field.tsx:187
+msgid "Add another option"
+msgstr "Agregar otra opción"
+
+#: packages/ui/primitives/document-flow/field-items-advanced-settings/checkbox-field.tsx:232
+#: packages/ui/primitives/document-flow/field-items-advanced-settings/radio-field.tsx:167
+msgid "Add another value"
+msgstr "Agregar otro valor"
+
+#: packages/ui/primitives/document-flow/add-signers.tsx:691
+msgid "Add myself"
+msgstr "Agregame"
+
+#: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:645
+msgid "Add Myself"
+msgstr "Agregame"
+
+#: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:631
+msgid "Add Placeholder Recipient"
+msgstr "Agregar destinatario de marcador de posición"
+
+#: packages/ui/primitives/document-flow/add-signers.tsx:680
+msgid "Add Signer"
+msgstr "Agregar firmante"
+
+#: packages/ui/primitives/document-flow/field-items-advanced-settings/text-field.tsx:73
+msgid "Add text"
+msgstr "Agregar texto"
+
+#: packages/ui/primitives/document-flow/field-items-advanced-settings/text-field.tsx:78
+msgid "Add text to the field"
+msgstr "Agregar texto al campo"
+
+#: packages/lib/constants/teams.ts:10
+msgid "Admin"
+msgstr "Admin"
+
+#: packages/ui/primitives/document-flow/add-settings.tsx:272
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:367
+msgid "Advanced Options"
+msgstr "Opciones avanzadas"
+
+#: packages/ui/primitives/document-flow/add-fields.tsx:576
+#: packages/ui/primitives/template-flow/add-template-fields.tsx:409
+msgid "Advanced settings"
+msgstr "Configuraciones avanzadas"
+
+#: packages/lib/constants/template.ts:21
+msgid "After submission, a document will be automatically generated and added to your documents page. You will also receive a notification via email."
+msgstr "Después de la presentación, se generará automáticamente un documento y se agregará a su página de documentos. También recibirá una notificación por correo electrónico."
+
+#: packages/email/template-components/template-document-cancel.tsx:31
+msgid "All signatures have been voided."
+msgstr "Todas las firmas han sido anuladas."
+
+#: packages/email/templates/confirm-team-email.tsx:98
+msgid "Allow document recipients to reply directly to this email address"
+msgstr "Permitir que los destinatarios del documento respondan directamente a esta dirección de correo electrónico"
+
+#: packages/email/templates/document-super-delete.tsx:22
+msgid "An admin has deleted your document \"{documentName}\"."
+msgstr "Un administrador ha eliminado tu documento \"{documentName}\"."
+
+#: packages/ui/primitives/pdf-viewer.tsx:167
+msgid "An error occurred while loading the document."
+msgstr "Se produjo un error al cargar el documento."
+
+#: packages/lib/constants/recipient-roles.ts:8
+msgid "Approve"
+msgstr "Aprobar"
+
+#: packages/email/template-components/template-document-invite.tsx:106
+msgid "Approve Document"
+msgstr "Aprobar Documento"
+
+#: packages/lib/constants/recipient-roles.ts:68
+#~ msgid "APPROVE_REQUEST"
+#~ msgstr "APPROVE_REQUEST"
+
+#: packages/lib/constants/recipient-roles.ts:9
+msgid "Approved"
+msgstr "Aprobado"
+
+#: packages/lib/constants/recipient-roles.ts:11
+msgid "Approver"
+msgstr "Aprobador"
+
+#: packages/lib/constants/recipient-roles.ts:12
+msgid "Approvers"
+msgstr "Aprobadores"
+
+#: packages/lib/constants/recipient-roles.ts:10
+msgid "Approving"
+msgstr "Aprobando"
+
+#: packages/email/template-components/template-confirmation-email.tsx:25
+msgid "Before you get started, please confirm your email address by clicking the button below:"
+msgstr "Antes de comenzar, por favor confirma tu dirección de correo electrónico haciendo clic en el botón de abajo:"
+
+#: packages/ui/primitives/signature-pad/signature-pad.tsx:377
+msgid "Black"
+msgstr "Negro"
+
+#: packages/ui/primitives/signature-pad/signature-pad.tsx:391
+msgid "Blue"
+msgstr "Azul"
+
+#: packages/email/templates/team-invite.tsx:84
+msgid "by <0>{senderName}0>"
+msgstr "por <0>{senderName}0>"
+
+#: packages/email/templates/confirm-team-email.tsx:87
+msgid "By accepting this request, you will be granting <0>{teamName}0> access to:"
+msgstr "Al aceptar esta solicitud, estarás concediendo a <0>{teamName}0> acceso a:"
+
+#: packages/email/templates/team-transfer-request.tsx:70
+msgid "By accepting this request, you will take responsibility for any billing items associated with this team."
+msgstr "Al aceptar esta solicitud, asumirás la responsabilidad de cualquier ítem de facturación asociado con este equipo."
+
+#: packages/ui/primitives/document-flow/field-item-advanced-settings.tsx:356
+#: packages/ui/primitives/document-flow/send-document-action-dialog.tsx:58
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: packages/ui/primitives/document-flow/add-signers.tsx:193
+msgid "Cannot remove signer"
+msgstr "No se puede eliminar el firmante"
+
+#: packages/lib/constants/recipient-roles.ts:18
+msgid "Cc"
+msgstr "Cc"
+
+#: packages/lib/constants/recipient-roles.ts:15
+#: packages/lib/constants/recipient-roles.ts:17
+msgid "CC"
+msgstr "CC"
+
+#: packages/lib/constants/recipient-roles.ts:16
+msgid "CC'd"
+msgstr "CC'd"
+
+#: packages/lib/constants/recipient-roles.ts:19
+msgid "Ccers"
+msgstr "Ccers"
+
+#: packages/ui/primitives/document-flow/field-items-advanced-settings/text-field.tsx:86
+msgid "Character Limit"
+msgstr "Límite de caracteres"
+
+#: packages/ui/primitives/document-flow/types.ts:58
+msgid "Checkbox"
+msgstr "Checkbox"
+
+#: packages/ui/primitives/document-flow/field-items-advanced-settings/checkbox-field.tsx:197
+msgid "Checkbox values"
+msgstr "Valores de Checkbox"
+
+#: packages/ui/primitives/data-table.tsx:156
+msgid "Clear filters"
+msgstr "Limpiar filtros"
+
+#: packages/ui/primitives/signature-pad/signature-pad.tsx:411
+msgid "Clear Signature"
+msgstr "Limpiar firma"
+
+#: packages/ui/primitives/document-flow/add-signature.tsx:394
+msgid "Click to insert field"
+msgstr "Haga clic para insertar campo"
+
+#: packages/ui/primitives/document-flow/missing-signature-field-dialog.tsx:44
+msgid "Close"
+msgstr "Cerrar"
+
+#: packages/email/template-components/template-document-completed.tsx:35
+#: packages/email/template-components/template-document-self-signed.tsx:36
+#: packages/lib/constants/document.ts:10
+msgid "Completed"
+msgstr "Completado"
+
+#: packages/email/templates/document-completed.tsx:23
+#: packages/email/templates/document-self-signed.tsx:19
+msgid "Completed Document"
+msgstr "Documento completado"
+
+#: packages/lib/constants/template.ts:12
+msgid "Configure Direct Recipient"
+msgstr "Configurar destinatario directo"
+
+#: packages/ui/primitives/document-flow/add-fields.tsx:577
+#: packages/ui/primitives/template-flow/add-template-fields.tsx:410
+msgid "Configure the {0} field"
+msgstr "Configurar el campo {0}"
+
+#: packages/email/template-components/template-confirmation-email.tsx:35
+msgid "Confirm email"
+msgstr "Confirmar correo electrónico"
+
+#: packages/ui/primitives/document-flow/document-flow-root.tsx:141
+msgid "Continue"
+msgstr "Continuar"
+
+#: packages/email/template-components/template-document-invite.tsx:72
+#~ msgid "Continue by {0} the document."
+#~ msgstr "Continue by {0} the document."
+
+#: packages/email/template-components/template-document-invite.tsx:86
+msgid "Continue by approving the document."
+msgstr "Continúa aprobando el documento."
+
+#: packages/email/template-components/template-document-completed.tsx:45
+msgid "Continue by downloading the document."
+msgstr "Continúa descargando el documento."
+
+#: packages/email/template-components/template-document-invite.tsx:84
+msgid "Continue by signing the document."
+msgstr "Continúa firmando el documento."
+
+#: packages/email/template-components/template-document-invite.tsx:85
+msgid "Continue by viewing the document."
+msgstr "Continúa viendo el documento."
+
+#: packages/ui/primitives/document-flow/add-subject.tsx:254
+msgid "Copied"
+msgstr "Copiado"
+
+#: packages/ui/components/document/document-share-button.tsx:46
+#: packages/ui/primitives/document-flow/add-subject.tsx:241
+msgid "Copied to clipboard"
+msgstr "Copiado al portapapeles"
+
+#: packages/ui/primitives/document-flow/add-subject.tsx:249
+msgid "Copy"
+msgstr "Copiar"
+
+#: packages/ui/components/document/document-share-button.tsx:194
+msgid "Copy Link"
+msgstr "Copiar enlace"
+
+#: packages/email/template-components/template-document-self-signed.tsx:46
+msgid "Create a <0>free account0> to access your signed documents at any time."
+msgstr "Crea una <0>cuenta gratuita0> para acceder a tus documentos firmados en cualquier momento."
+
+#: packages/email/template-components/template-document-self-signed.tsx:68
+msgid "Create account"
+msgstr "Crear cuenta"
+
+#: packages/ui/primitives/document-flow/add-signature.tsx:360
+msgid "Custom Text"
+msgstr "Texto personalizado"
+
+#: packages/ui/primitives/document-flow/add-fields.tsx:934
+#: packages/ui/primitives/document-flow/types.ts:53
+#: packages/ui/primitives/template-flow/add-template-fields.tsx:697
+msgid "Date"
+msgstr "Fecha"
+
+#: packages/ui/primitives/document-flow/add-settings.tsx:313
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:408
+msgid "Date Format"
+msgstr "Formato de fecha"
+
+#: packages/email/templates/team-invite.tsx:100
+msgid "Decline"
+msgstr "Rechazar"
+
+#: packages/email/templates/reset-password.tsx:71
+msgid "Didn't request a password change? We are here to help you secure your account, just <0>contact us.0>"
+msgstr "¿No solicitaste un cambio de contraseña? Estamos aquí para ayudarte a asegurar tu cuenta, solo <0>contáctanos.0>"
+
+#: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:578
+msgid "Direct link receiver"
+msgstr "Receptor de enlace directo"
+
+#: packages/lib/jobs/definitions/emails/send-rejection-emails.ts:149
+msgid "Document \"{0}\" - Rejected by {1}"
+msgstr "Documento \"{0}\" - Rechazado por {1}"
+
+#: packages/lib/jobs/definitions/emails/send-rejection-emails.ts:109
+msgid "Document \"{0}\" - Rejection Confirmed"
+msgstr "Documento \"{0}\" - Rechazo confirmado"
+
+#: packages/ui/components/document/document-global-auth-access-select.tsx:62
+#: packages/ui/primitives/document-flow/add-settings.tsx:216
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:202
+msgid "Document access"
+msgstr "Acceso al documento"
+
+#: packages/lib/utils/document-audit-logs.ts:306
+msgid "Document access auth updated"
+msgstr "Se actualizó la autenticación de acceso al documento"
+
+#: packages/lib/server-only/document/delete-document.ts:246
+#: packages/lib/server-only/document/super-delete-document.ts:98
+msgid "Document Cancelled"
+msgstr "Documento cancelado"
+
+#: packages/lib/utils/document-audit-logs.ts:369
+#: packages/lib/utils/document-audit-logs.ts:370
+msgid "Document completed"
+msgstr "Documento completado"
+
+#: packages/ui/components/document/document-email-checkboxes.tsx:168
+msgid "Document completed email"
+msgstr "Correo electrónico de documento completado"
+
+#: packages/lib/utils/document-audit-logs.ts:286
+msgid "Document created"
+msgstr "Documento creado"
+
+#: packages/email/templates/document-created-from-direct-template.tsx:32
+#: packages/lib/server-only/template/create-document-from-direct-template.ts:567
+msgid "Document created from direct template"
+msgstr "Documento creado a partir de plantilla directa"
+
+#: packages/lib/constants/template.ts:20
+msgid "Document Creation"
+msgstr "Creación de documento"
+
+#: packages/lib/utils/document-audit-logs.ts:290
+msgid "Document deleted"
+msgstr "Documento eliminado"
+
+#: packages/ui/components/document/document-email-checkboxes.tsx:207
+msgid "Document deleted email"
+msgstr "Correo electrónico de documento eliminado"
+
+#: packages/lib/server-only/document/send-delete-email.ts:82
+msgid "Document Deleted!"
+msgstr "¡Documento eliminado!"
+
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:219
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:228
+msgid "Document Distribution Method"
+msgstr "Método de distribución de documentos"
+
+#: packages/lib/utils/document-audit-logs.ts:326
+msgid "Document external ID updated"
+msgstr "ID externo del documento actualizado"
+
+#: packages/lib/utils/document-audit-logs.ts:334
+msgid "Document moved to team"
+msgstr "Documento movido al equipo"
+
+#: packages/lib/utils/document-audit-logs.ts:318
+msgid "Document opened"
+msgstr "Documento abierto"
+
+#: packages/ui/components/document/document-email-checkboxes.tsx:128
+msgid "Document pending email"
+msgstr "Correo electrónico de documento pendiente"
+
+#: packages/email/template-components/template-document-rejected.tsx:21
+msgid "Document Rejected"
+msgstr "Documento Rechazado"
+
+#~ msgid "Document Rejection Confirmed"
+#~ msgstr "Document Rejection Confirmed"
+
+#: packages/lib/utils/document-audit-logs.ts:330
+msgid "Document sent"
+msgstr "Documento enviado"
+
+#: packages/lib/utils/document-audit-logs.ts:310
+msgid "Document signing auth updated"
+msgstr "Se actualizó la autenticación de firma del documento"
+
+#: packages/lib/utils/document-audit-logs.ts:322
+msgid "Document title updated"
+msgstr "Título del documento actualizado"
+
+#: packages/lib/utils/document-audit-logs.ts:314
+msgid "Document updated"
+msgstr "Documento actualizado"
+
+#: packages/lib/utils/document-audit-logs.ts:302
+msgid "Document visibility updated"
+msgstr "Visibilidad del documento actualizada"
+
+#: packages/email/template-components/template-document-completed.tsx:57
+#: packages/ui/components/document/document-download-button.tsx:68
+msgid "Download"
+msgstr "Descargar"
+
+#: packages/lib/constants/document.ts:13
+msgid "Draft"
+msgstr "Borrador"
+
+#: packages/ui/primitives/document-dropzone.tsx:162
+msgid "Drag & drop your PDF here."
+msgstr "Arrastre y suelte su PDF aquí."
+
+#: packages/ui/primitives/document-flow/add-fields.tsx:1065
+#: packages/ui/primitives/template-flow/add-template-fields.tsx:827
+msgid "Dropdown"
+msgstr "Menú desplegable"
+
+#: packages/ui/primitives/document-flow/field-items-advanced-settings/dropdown-field.tsx:158
+msgid "Dropdown options"
+msgstr "Opciones de menú desplegable"
+
+#: packages/lib/constants/document.ts:28
+#: packages/ui/primitives/document-flow/add-fields.tsx:882
+#: packages/ui/primitives/document-flow/add-signature.tsx:272
+#: packages/ui/primitives/document-flow/add-signers.tsx:512
+#: packages/ui/primitives/document-flow/add-signers.tsx:519
+#: packages/ui/primitives/document-flow/types.ts:54
+#: packages/ui/primitives/template-flow/add-template-fields.tsx:645
+#: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:471
+#: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:478
+msgid "Email"
+msgstr "Correo electrónico"
+
+#: packages/ui/primitives/document-flow/add-signature.types.ts:7
+msgid "Email is required"
+msgstr "Se requiere email"
+
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:307
+msgid "Email Options"
+msgstr "Opciones de correo electrónico"
+
+#: packages/lib/utils/document-audit-logs.ts:363
+msgid "Email resent"
+msgstr "Correo electrónico reeenviado"
+
+#: packages/lib/utils/document-audit-logs.ts:363
+msgid "Email sent"
+msgstr "Correo electrónico enviado"
+
+#: packages/ui/primitives/document-flow/add-fields.tsx:1130
+msgid "Empty field"
+msgstr "Campo vacío"
+
+#: packages/lib/constants/template.ts:8
+msgid "Enable Direct Link Signing"
+msgstr "Habilitar firma de enlace directo"
+
+#: packages/ui/primitives/document-flow/add-signers.tsx:401
+#: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:370
+msgid "Enable signing order"
+msgstr "Habilitar orden de firma"
+
+#: packages/ui/primitives/document-flow/add-fields.tsx:802
+msgid "Enable Typed Signatures"
+msgstr "Habilitar firmas escritas"
+
+#: packages/ui/primitives/document-password-dialog.tsx:84
+msgid "Enter password"
+msgstr "Ingrese la contraseña"
+
+#: packages/ui/primitives/document-flow/field-item-advanced-settings.tsx:257
+#: packages/ui/primitives/pdf-viewer.tsx:166
+msgid "Error"
+msgstr "Error"
+
+#: packages/ui/primitives/document-flow/add-settings.tsx:283
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:378
+msgid "External ID"
+msgstr "ID externo"
+
+#: packages/ui/primitives/document-flow/field-item-advanced-settings.tsx:258
+msgid "Failed to save settings."
+msgstr "Fallo al guardar configuraciones."
+
+#: packages/ui/primitives/document-flow/field-items-advanced-settings/text-field.tsx:93
+msgid "Field character limit"
+msgstr "Límite de caracteres del campo"
+
+#: packages/ui/primitives/document-flow/field-items-advanced-settings/date-field.tsx:62
+#: packages/ui/primitives/document-flow/field-items-advanced-settings/email-field.tsx:44
+#: packages/ui/primitives/document-flow/field-items-advanced-settings/initials-field.tsx:44
+#: packages/ui/primitives/document-flow/field-items-advanced-settings/name-field.tsx:44
+#: packages/ui/primitives/document-flow/field-items-advanced-settings/number-field.tsx:130
+#: packages/ui/primitives/document-flow/field-items-advanced-settings/text-field.tsx:107
+msgid "Field font size"
+msgstr "Tamaño de fuente del campo"
+
+#: packages/ui/primitives/document-flow/field-items-advanced-settings/number-field.tsx:110
+msgid "Field format"
+msgstr "Formato de campo"
+
+#: packages/ui/primitives/document-flow/field-items-advanced-settings/text-field.tsx:53
+msgid "Field label"
+msgstr "Etiqueta de campo"
+
+#: packages/ui/primitives/document-flow/field-items-advanced-settings/text-field.tsx:65
+msgid "Field placeholder"
+msgstr "Marcador de posición de campo"
+
+#: packages/lib/utils/document-audit-logs.ts:294
+msgid "Field signed"
+msgstr "Campo firmado"
+
+#: packages/lib/utils/document-audit-logs.ts:298
+msgid "Field unsigned"
+msgstr "Campo no firmado"
+
+#: packages/ui/primitives/document-flow/field-items-advanced-settings/date-field.tsx:56
+#: packages/ui/primitives/document-flow/field-items-advanced-settings/email-field.tsx:38
+#: packages/ui/primitives/document-flow/field-items-advanced-settings/initials-field.tsx:38
+#: packages/ui/primitives/document-flow/field-items-advanced-settings/name-field.tsx:38
+#: packages/ui/primitives/document-flow/field-items-advanced-settings/number-field.tsx:124
+#: packages/ui/primitives/document-flow/field-items-advanced-settings/text-field.tsx:101
+msgid "Font Size"
+msgstr "Tamaño de fuente"
+
+#: packages/lib/server-only/auth/send-forgot-password.ts:61
+msgid "Forgot Password?"
+msgstr "¿Olvidaste tu contraseña?"
+
+#: packages/email/template-components/template-forgot-password.tsx:21
+msgid "Forgot your password?"
+msgstr "¿Olvidaste tu contraseña?"
+
+#: packages/ui/primitives/document-flow/types.ts:50
+msgid "Free Signature"
+msgstr "Firma gratuita"
+
+#: packages/ui/primitives/document-flow/add-subject.tsx:89
+msgid "Generate Links"
+msgstr "Generar enlaces"
+
+#: packages/ui/components/document/document-global-auth-action-select.tsx:64
+msgid "Global recipient action authentication"
+msgstr "Autenticación de acción de destinatario global"
+
+#: packages/ui/primitives/document-flow/document-flow-root.tsx:142
+msgid "Go Back"
+msgstr "Regresar"
+
+#: packages/ui/primitives/signature-pad/signature-pad.tsx:398
+msgid "Green"
+msgstr "Verde"
+
+#~ msgid "Hello {recipientName},"
+#~ msgstr "Hello {recipientName},"
+
+#: packages/email/templates/reset-password.tsx:56
+msgid "Hi, {userName} <0>({userEmail})0>"
+msgstr "Hola, {userName} <0>({userEmail})0>"
+
+#: packages/lib/constants/recipient-roles.ts:44
+msgid "I am a signer of this document"
+msgstr "Soy un firmante de este documento"
+
+#: packages/lib/constants/recipient-roles.ts:47
+msgid "I am a viewer of this document"
+msgstr "Soy un visualizador de este documento"
+
+#: packages/lib/constants/recipient-roles.ts:45
+msgid "I am an approver of this document"
+msgstr "Soy un aprobador de este documento"
+
+#: packages/lib/constants/recipient-roles.ts:46
+msgid "I am required to receive a copy of this document"
+msgstr "Se me requiere recibir una copia de este documento"
+
+#: packages/ui/components/recipient/recipient-action-auth-select.tsx:29
+#: packages/ui/components/recipient/recipient-action-auth-select.tsx:87
+msgid "Inherit authentication method"
+msgstr "Heredar método de autenticación"
+
+#: packages/ui/primitives/document-flow/types.ts:51
+msgid "Initials"
+msgstr "Iniciales"
+
+#: packages/ui/primitives/document-flow/add-signers.types.ts:17
+msgid "Invalid email"
+msgstr "Email inválido"
+
+#: packages/ui/primitives/document-flow/add-signature.types.ts:8
+msgid "Invalid email address"
+msgstr "Dirección de email inválida"
+
+#: packages/email/templates/team-invite.tsx:72
+msgid "Join {teamName} on Documenso"
+msgstr "Únete a {teamName} en Documenso"
+
+#: packages/ui/primitives/document-flow/field-items-advanced-settings/number-field.tsx:67
+#: packages/ui/primitives/document-flow/field-items-advanced-settings/number-field.tsx:72
+#: packages/ui/primitives/document-flow/field-items-advanced-settings/text-field.tsx:48
+msgid "Label"
+msgstr "Etiqueta"
+
+#: packages/ui/primitives/document-flow/add-settings.tsx:176
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:162
+msgid "Language"
+msgstr "Idioma"
+
+#: packages/email/templates/confirm-team-email.tsx:124
+#: packages/email/templates/team-transfer-request.tsx:87
+msgid "Link expires in 1 hour."
+msgstr "El enlace expira en 1 hora."
+
+#: packages/ui/primitives/lazy-pdf-viewer.tsx:15
+#: packages/ui/primitives/pdf-viewer.tsx:44
+msgid "Loading document..."
+msgstr "Cargando documento..."
+
+#: packages/lib/constants/teams.ts:11
+msgid "Manager"
+msgstr "Gerente"
+
+#: packages/ui/primitives/document-flow/field-items-advanced-settings/number-field.tsx:188
+msgid "Max"
+msgstr "Máx"
+
+#: packages/lib/constants/teams.ts:12
+msgid "Member"
+msgstr "Miembro"
+
+#: packages/ui/primitives/document-flow/add-subject.tsx:160
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:338
+msgid "Message <0>(Optional)0>"
+msgstr "Mensaje <0>(Opcional)0>"
+
+#: packages/ui/primitives/document-flow/field-items-advanced-settings/number-field.tsx:176
+msgid "Min"
+msgstr "Mín"
+
+#: packages/ui/primitives/document-flow/add-fields.tsx:908
+#: packages/ui/primitives/document-flow/add-signature.tsx:298
+#: packages/ui/primitives/document-flow/add-signers.tsx:550
+#: packages/ui/primitives/document-flow/add-signers.tsx:556
+#: packages/ui/primitives/document-flow/types.ts:55
+#: packages/ui/primitives/template-flow/add-template-fields.tsx:671
+#: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:506
+#: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:512
+msgid "Name"
+msgstr "Nombre"
+
+#: packages/ui/components/recipient/recipient-role-select.tsx:52
+msgid "Needs to approve"
+msgstr "Necesita aprobar"
+
+#: packages/ui/components/recipient/recipient-role-select.tsx:31
+msgid "Needs to sign"
+msgstr "Necesita firmar"
+
+#: packages/ui/components/recipient/recipient-role-select.tsx:73
+msgid "Needs to view"
+msgstr "Necesita ver"
+
+#: packages/ui/primitives/document-flow/add-fields.tsx:693
+#: packages/ui/primitives/template-flow/add-template-fields.tsx:511
+msgid "No recipient matching this description was found."
+msgstr "No se encontró ningún destinatario que coincidiera con esta descripción."
+
+#: packages/ui/primitives/document-flow/add-subject.tsx:215
+msgid "No recipients"
+msgstr "Sin destinatarios"
+
+#: packages/ui/primitives/document-flow/add-fields.tsx:708
+#: packages/ui/primitives/template-flow/add-template-fields.tsx:526
+msgid "No recipients with this role"
+msgstr "No hay destinatarios con este rol"
+
+#: packages/ui/components/document/document-global-auth-access-select.tsx:30
+#: packages/ui/components/document/document-global-auth-access-select.tsx:43
+#: packages/ui/components/document/document-global-auth-action-select.tsx:31
+#: packages/ui/components/document/document-global-auth-action-select.tsx:46
+msgid "No restrictions"
+msgstr "Sin restricciones"
+
+#: packages/ui/primitives/data-table.tsx:148
+msgid "No results found"
+msgstr "No se encontraron resultados"
+
+#: packages/ui/primitives/document-flow/missing-signature-field-dialog.tsx:30
+msgid "No signature field found"
+msgstr "No se encontró campo de firma"
+
+#: packages/ui/primitives/combobox.tsx:60
+#: packages/ui/primitives/multi-select-combobox.tsx:153
+msgid "No value found."
+msgstr "No se encontró valor."
+
+#: packages/lib/constants/document.ts:32
+msgid "None"
+msgstr "Ninguno"
+
+#: packages/ui/primitives/document-flow/add-fields.tsx:986
+#: packages/ui/primitives/document-flow/types.ts:56
+#: packages/ui/primitives/template-flow/add-template-fields.tsx:749
+msgid "Number"
+msgstr "Número"
+
+#: packages/ui/primitives/document-flow/field-items-advanced-settings/number-field.tsx:103
+msgid "Number format"
+msgstr "Formato de número"
+
+#: packages/lib/constants/template.ts:9
+msgid "Once enabled, you can select any active recipient to be a direct link signing recipient, or create a new one. This recipient type cannot be edited or deleted."
+msgstr "Una vez habilitado, puede seleccionar cualquier destinatario activo para que sea un destinatario de firma por enlace directo, o crear uno nuevo. Este tipo de destinatario no puede ser editado ni eliminado."
+
+#: packages/lib/constants/template.ts:17
+msgid "Once your template is set up, share the link anywhere you want. The person who opens the link will be able to enter their information in the direct link recipient field and complete any other fields assigned to them."
+msgstr "Una vez que su plantilla esté configurada, comparta el enlace donde desee. La persona que abra el enlace podrá ingresar su información en el campo de destinatario de enlace directo y completar cualquier otro campo que se le haya asignado."
+
+#: packages/ui/primitives/data-table-pagination.tsx:77
+msgid "Page {0} of {1}"
+msgstr "Página {0} de {1}"
+
+#: packages/ui/primitives/pdf-viewer.tsx:259
+msgid "Page {0} of {numPages}"
+msgstr "Página {0} de {numPages}"
+
+#: packages/ui/primitives/document-password-dialog.tsx:62
+msgid "Password Required"
+msgstr "Se requiere contraseña"
+
+#: packages/email/templates/forgot-password.tsx:19
+msgid "Password Reset Requested"
+msgstr "Solicitud de restablecimiento de contraseña"
+
+#: packages/email/templates/reset-password.tsx:20
+msgid "Password Reset Successful"
+msgstr "Restablecimiento de contraseña exitoso"
+
+#: packages/email/template-components/template-reset-password.tsx:22
+msgid "Password updated!"
+msgstr "¡Contraseña actualizada!"
+
+#: packages/lib/constants/document.ts:16
+msgid "Pending"
+msgstr "Pendiente"
+
+#: packages/email/templates/document-pending.tsx:19
+msgid "Pending Document"
+msgstr "Documento pendiente"
+
+#: packages/ui/primitives/document-flow/field-items-advanced-settings/checkbox-field.tsx:156
+msgid "Pick a number"
+msgstr "Seleccione un número"
+
+#: packages/ui/primitives/document-flow/field-items-advanced-settings/number-field.tsx:79
+#: packages/ui/primitives/document-flow/field-items-advanced-settings/number-field.tsx:84
+#: packages/ui/primitives/document-flow/field-items-advanced-settings/text-field.tsx:60
+msgid "Placeholder"
+msgstr "Marcador de posición"
+
+#: packages/email/template-components/template-document-invite.tsx:56
+msgid "Please {0} your document<0/>\"{documentName}\""
+msgstr "Por favor {0} tu documento<0/>\"{documentName}\""
+
+#: packages/email/templates/document-invite.tsx:50
+msgid "Please {action} your document {documentName}"
+msgstr "Por favor {action} tu documento {documentName}"
+
+#: packages/lib/jobs/definitions/emails/send-signing-email.ts:111
+msgid "Please {recipientActionVerb} this document"
+msgstr "Por favor {recipientActionVerb} este documento"
+
+#: packages/lib/jobs/definitions/emails/send-signing-email.ts:125
+msgid "Please {recipientActionVerb} this document created by your direct template"
+msgstr "Por favor {recipientActionVerb} este documento creado a partir de tu plantilla directa"
+
+#: packages/lib/jobs/definitions/emails/send-signing-email.ts:117
+msgid "Please {recipientActionVerb} your document"
+msgstr "Por favor {recipientActionVerb} tu documento"
+
+#: packages/lib/server-only/auth/send-confirmation-email.ts:67
+msgid "Please confirm your email"
+msgstr "Por favor confirma tu correo electrónico"
+
+#: packages/email/templates/confirm-email.tsx:17
+msgid "Please confirm your email address"
+msgstr "Por favor confirma tu dirección de correo electrónico"
+
+#: packages/ui/primitives/pdf-viewer.tsx:223
+#: packages/ui/primitives/pdf-viewer.tsx:238
+msgid "Please try again or contact our support."
+msgstr "Por favor, inténtalo de nuevo o contacta a nuestro soporte."
+
+#: packages/ui/primitives/document-flow/types.ts:57
+#: packages/ui/primitives/template-flow/add-template-fields.tsx:775
+msgid "Radio"
+msgstr "Radio"
+
+#: packages/ui/primitives/document-flow/field-items-advanced-settings/radio-field.tsx:133
+msgid "Radio values"
+msgstr "Valores de radio"
+
+#: packages/ui/primitives/document-flow/field-items-advanced-settings/checkbox-field.tsx:186
+#: packages/ui/primitives/document-flow/field-items-advanced-settings/dropdown-field.tsx:147
+#: packages/ui/primitives/document-flow/field-items-advanced-settings/number-field.tsx:156
+#: packages/ui/primitives/document-flow/field-items-advanced-settings/radio-field.tsx:122
+#: packages/ui/primitives/document-flow/field-items-advanced-settings/text-field.tsx:133
+msgid "Read only"
+msgstr "Solo lectura"
+
+#: packages/email/template-components/template-document-rejected.tsx:32
+msgid "Reason for rejection: {rejectionReason}"
+msgstr "Razón del rechazo: {rejectionReason}"
+
+#: packages/ui/components/recipient/recipient-role-select.tsx:95
+msgid "Receives copy"
+msgstr "Recibe copia"
+
+#: packages/lib/utils/document-audit-logs.ts:338
+#: packages/lib/utils/document-audit-logs.ts:353
+msgid "Recipient"
+msgstr "Destinatario"
+
+#: packages/ui/components/recipient/recipient-action-auth-select.tsx:39
+#: packages/ui/primitives/document-flow/add-settings.tsx:257
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:291
+msgid "Recipient action authentication"
+msgstr "Autenticación de acción de destinatario"
+
+#: packages/ui/components/document/document-email-checkboxes.tsx:89
+msgid "Recipient removed email"
+msgstr "Correo electrónico de destinatario eliminado"
+
+#: packages/ui/components/document/document-email-checkboxes.tsx:50
+msgid "Recipient signing request email"
+msgstr "Correo electrónico de solicitud de firma de destinatario"
+
+#: packages/ui/primitives/signature-pad/signature-pad.tsx:384
+msgid "Red"
+msgstr "Rojo"
+
+#: packages/ui/primitives/document-flow/add-settings.tsx:371
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:461
+msgid "Redirect URL"
+msgstr "URL de redirección"
+
+#: packages/email/template-components/template-document-invite.tsx:96
+msgid "Reject Document"
+msgstr "Rechazar Documento"
+
+#: packages/email/template-components/template-document-rejection-confirmed.tsx:22
+msgid "Rejection Confirmed"
+msgstr "Rechazo Confirmado"
+
+#: packages/email/template-components/template-document-rejection-confirmed.tsx:34
+msgid "Rejection reason: {reason}"
+msgstr "Razón del rechazo: {reason}"
+
+#: packages/lib/server-only/document/resend-document.tsx:192
+msgid "Reminder: {0}"
+msgstr "Recordatorio: {0}"
+
+#: packages/lib/server-only/document/resend-document.tsx:132
+msgid "Reminder: {0} invited you to {recipientActionVerb} a document"
+msgstr "Recordatorio: {0} te invitó a {recipientActionVerb} un documento"
+
+#: packages/lib/server-only/document/resend-document.tsx:121
+msgid "Reminder: Please {recipientActionVerb} this document"
+msgstr "Recordatorio: Por favor {recipientActionVerb} este documento"
+
+#: packages/lib/server-only/document/resend-document.tsx:127
+msgid "Reminder: Please {recipientActionVerb} your document"
+msgstr "Recordatorio: Por favor {recipientActionVerb} tu documento"
+
+#: packages/ui/primitives/document-flow/add-fields.tsx:1117
+msgid "Remove"
+msgstr "Eliminar"
+
+#: packages/ui/primitives/document-flow/field-items-advanced-settings/checkbox-field.tsx:176
+#: packages/ui/primitives/document-flow/field-items-advanced-settings/dropdown-field.tsx:137
+#: packages/ui/primitives/document-flow/field-items-advanced-settings/number-field.tsx:146
+#: packages/ui/primitives/document-flow/field-items-advanced-settings/radio-field.tsx:112
+#: packages/ui/primitives/document-flow/field-items-advanced-settings/text-field.tsx:123
+msgid "Required field"
+msgstr "Campo obligatorio"
+
+#: packages/ui/primitives/document-flow/add-subject.tsx:84
+msgid "Resend"
+msgstr "Reenviar"
+
+#: packages/email/template-components/template-forgot-password.tsx:33
+msgid "Reset Password"
+msgstr "Restablecer contraseña"
+
+#: packages/ui/components/document/document-share-button.tsx:147
+msgid "Rest assured, your document is strictly confidential and will never be shared. Only your signing experience will be highlighted. Share your personalized signing card to showcase your signature!"
+msgstr "Ten la seguridad de que tu documento es estrictamente confidencial y nunca será compartido. Solo se destacará tu experiencia de firma. ¡Comparte tu tarjeta de firma personalizada para mostrar tu firma!"
+
+#: packages/ui/primitives/data-table-pagination.tsx:55
+msgid "Rows per page"
+msgstr "Filas por página"
+
+#: packages/ui/primitives/document-flow/field-item-advanced-settings.tsx:355
+msgid "Save"
+msgstr "Guardar"
+
+#: packages/ui/primitives/template-flow/add-template-fields.tsx:861
+msgid "Save Template"
+msgstr "Guardar plantilla"
+
+#: packages/ui/components/common/language-switcher-dialog.tsx:34
+msgid "Search languages..."
+msgstr "Buscar idiomas..."
+
+#: packages/ui/primitives/document-flow/field-items-advanced-settings/dropdown-field.tsx:115
+#: packages/ui/primitives/document-flow/types.ts:59
+msgid "Select"
+msgstr "Seleccionar"
+
+#: packages/ui/primitives/combobox.tsx:38
+msgid "Select an option"
+msgstr "Seleccionar una opción"
+
+#: packages/ui/primitives/document-flow/field-items-advanced-settings/checkbox-field.tsx:139
+msgid "Select at least"
+msgstr "Seleccionar al menos"
+
+#: packages/ui/primitives/document-flow/field-items-advanced-settings/dropdown-field.tsx:105
+msgid "Select default option"
+msgstr "Seleccionar opción predeterminada"
+
+#: packages/ui/primitives/document-flow/add-subject.tsx:82
+#: packages/ui/primitives/document-flow/add-subject.tsx:85
+#: packages/ui/primitives/document-flow/send-document-action-dialog.tsx:34
+#: packages/ui/primitives/document-flow/send-document-action-dialog.tsx:64
+msgid "Send"
+msgstr "Enviar"
+
+#: packages/ui/primitives/document-flow/send-document-action-dialog.tsx:41
+msgid "Send Document"
+msgstr "Enviar documento"
+
+#: packages/ui/components/document/document-email-checkboxes.tsx:158
+msgid "Send document completed email"
+msgstr "Enviar correo electrónico de documento completado"
+
+#: packages/ui/components/document/document-email-checkboxes.tsx:197
+msgid "Send document deleted email"
+msgstr "Enviar correo electrónico de documento eliminado"
+
+#: packages/ui/components/document/document-email-checkboxes.tsx:118
+msgid "Send document pending email"
+msgstr "Enviar correo electrónico de documento pendiente"
+
+#: packages/email/templates/confirm-team-email.tsx:101
+msgid "Send documents on behalf of the team using the email address"
+msgstr "Enviar documentos en nombre del equipo usando la dirección de correo electrónico"
+
+#: packages/ui/components/document/document-email-checkboxes.tsx:79
+msgid "Send recipient removed email"
+msgstr "Enviar correo electrónico de destinatario eliminado"
+
+#: packages/ui/components/document/document-email-checkboxes.tsx:40
+msgid "Send recipient signing request email"
+msgstr "Enviar correo electrónico de solicitud de firma de destinatario"
+
+#: packages/ui/components/document/document-share-button.tsx:135
+msgid "Share Signature Card"
+msgstr "Compartir tarjeta de firma"
+
+#: packages/lib/constants/template.ts:16
+msgid "Share the Link"
+msgstr "Compartir el enlace"
+
+#: packages/ui/components/document/document-share-button.tsx:143
+msgid "Share your signing experience!"
+msgstr "¡Comparte tu experiencia de firma!"
+
+#: packages/ui/primitives/document-flow/add-signers.tsx:709
+#: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:663
+msgid "Show advanced settings"
+msgstr "Mostrar configuraciones avanzadas"
+
+#: packages/lib/constants/recipient-roles.ts:22
+msgid "Sign"
+msgstr "Firmar"
+
+#: packages/email/template-components/template-document-invite.tsx:104
+msgid "Sign Document"
+msgstr "Firmar Documento"
+
+#: packages/email/template-components/template-reset-password.tsx:34
+msgid "Sign In"
+msgstr "Iniciar sesión"
+
+#: packages/ui/primitives/document-flow/add-fields.tsx:830
+#: packages/ui/primitives/document-flow/add-signature.tsx:323
+#: packages/ui/primitives/document-flow/field-icon.tsx:52
+#: packages/ui/primitives/document-flow/types.ts:49
+#: packages/ui/primitives/template-flow/add-template-fields.tsx:593
+msgid "Signature"
+msgstr "Firma"
+
+#: packages/lib/constants/recipient-roles.ts:23
+msgid "Signed"
+msgstr "Firmado"
+
+#: packages/lib/constants/recipient-roles.ts:25
+msgid "Signer"
+msgstr "Firmante"
+
+#: packages/lib/constants/recipient-roles.ts:26
+msgid "Signers"
+msgstr "Firmantes"
+
+#: packages/ui/primitives/document-flow/add-signers.types.ts:36
+msgid "Signers must have unique emails"
+msgstr "Los firmantes deben tener correos electrónicos únicos"
+
+#: packages/lib/constants/recipient-roles.ts:24
+msgid "Signing"
+msgstr "Firmando"
+
+#: packages/lib/server-only/document/send-completed-email.ts:114
+#: packages/lib/server-only/document/send-completed-email.ts:194
+msgid "Signing Complete!"
+msgstr "¡Firma completa!"
+
+#: packages/lib/constants/recipient-roles.ts:66
+#~ msgid "SIGNING_REQUEST"
+#~ msgstr "SIGNING_REQUEST"
+
+#: packages/ui/primitives/document-flow/missing-signature-field-dialog.tsx:34
+msgid "Some signers have not been assigned a signature field. Please assign at least 1 signature field to each signer before proceeding."
+msgstr "Algunos firmantes no han sido asignados a un campo de firma. Asigne al menos 1 campo de firma a cada firmante antes de continuar."
+
+#: packages/ui/components/document/document-share-button.tsx:51
+msgid "Something went wrong"
+msgstr "Algo salió mal"
+
+#: packages/ui/primitives/pdf-viewer.tsx:220
+#: packages/ui/primitives/pdf-viewer.tsx:235
+msgid "Something went wrong while loading the document."
+msgstr "Algo salió mal al cargar el documento."
+
+#: packages/ui/primitives/data-table.tsx:136
+msgid "Something went wrong."
+msgstr "Algo salió mal."
+
+#: packages/ui/primitives/document-flow/document-flow-root.tsx:107
+msgid "Step <0>{step} of {maxStep}0>"
+msgstr "Paso <0>{step} de {maxStep}0>"
+
+#: packages/ui/primitives/document-flow/add-subject.tsx:143
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:318
+msgid "Subject <0>(Optional)0>"
+msgstr "Asunto <0>(Opcional)0>"
+
+#: packages/ui/primitives/document-password-dialog.tsx:97
+msgid "Submit"
+msgstr "Enviar"
+
+#: packages/lib/server-only/team/delete-team.ts:124
+msgid "Team \"{0}\" has been deleted on Documenso"
+msgstr "El equipo \"{0}\" ha sido eliminado en Documenso"
+
+#: packages/lib/server-only/team/delete-team-email.ts:104
+msgid "Team email has been revoked for {0}"
+msgstr "El correo electrónico del equipo ha sido revocado para {0}"
+
+#: packages/email/templates/team-email-removed.tsx:59
+msgid "Team email removed"
+msgstr "Correo electrónico del equipo eliminado"
+
+#: packages/email/templates/team-email-removed.tsx:29
+msgid "Team email removed for {teamName} on Documenso"
+msgstr "Correo electrónico del equipo eliminado para {teamName} en Documenso"
+
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:145
+msgid "Template title"
+msgstr "Título de plantilla"
+
+#: packages/ui/primitives/document-flow/add-fields.tsx:960
+#: packages/ui/primitives/document-flow/types.ts:52
+#: packages/ui/primitives/template-flow/add-template-fields.tsx:723
+msgid "Text"
+msgstr "Texto"
+
+#: packages/email/template-components/template-forgot-password.tsx:25
+msgid "That's okay, it happens! Click the button below to reset your password."
+msgstr "Está bien, ¡sucede! Haz clic en el botón de abajo para restablecer tu contraseña."
+
+#: packages/ui/components/recipient/recipient-action-auth-select.tsx:44
+msgid "The authentication required for recipients to sign fields"
+msgstr "La autenticación requerida para que los destinatarios firmen campos"
+
+#: packages/ui/components/document/document-global-auth-action-select.tsx:68
+msgid "The authentication required for recipients to sign the signature field."
+msgstr "La autenticación requerida para que los destinatarios firmen el campo de firma."
+
+#: packages/ui/components/document/document-global-auth-access-select.tsx:67
+msgid "The authentication required for recipients to view the document."
+msgstr "La autenticación requerida para que los destinatarios vean el documento."
+
+#~ msgid "The document owner has been notified of this rejection. No further action is required from you at this time."
+#~ msgstr "The document owner has been notified of this rejection. No further action is required from you at this time."
+
+#: packages/email/template-components/template-document-rejection-confirmed.tsx:39
+msgid "The document owner has been notified of this rejection. No further action is required from you at this time. The document owner may contact you with any questions regarding this rejection."
+msgstr "El propietario del documento ha sido notificado de este rechazo. No se requiere ninguna acción adicional de su parte en este momento. El propietario del documento puede contactarlo con cualquier pregunta relacionada con este rechazo."
+
+#: packages/ui/components/document/document-send-email-message-helper.tsx:31
+msgid "The document's name"
+msgstr "El nombre del documento"
+
+#: packages/email/templates/team-delete.tsx:37
+msgid "The following team has been deleted by its owner. You will no longer be able to access this team and its documents"
+msgstr "El siguiente equipo ha sido eliminado por su propietario. Ya no podrás acceder a este equipo y sus documentos"
+
+#: packages/email/templates/team-delete.tsx:36
+msgid "The following team has been deleted by you"
+msgstr "El siguiente equipo ha sido eliminado por ti"
+
+#: packages/ui/primitives/document-password-dialog.tsx:52
+msgid "The password you have entered is incorrect. Please try again."
+msgstr "La contraseña que ha ingresado es incorrecta. Por favor, inténtelo de nuevo."
+
+#: packages/email/template-components/template-document-super-delete.tsx:38
+msgid "The reason provided for deletion is the following:"
+msgstr "La razón proporcionada para la eliminación es la siguiente:"
+
+#: packages/ui/components/recipient/recipient-role-select.tsx:103
+msgid "The recipient is not required to take any action and receives a copy of the document after it is completed."
+msgstr "El destinatario no está obligado a tomar ninguna acción y recibe una copia del documento una vez completado."
+
+#: packages/ui/components/recipient/recipient-role-select.tsx:60
+msgid "The recipient is required to approve the document for it to be completed."
+msgstr "El destinatario debe aprobar el documento para que se complete."
+
+#: packages/ui/components/recipient/recipient-role-select.tsx:39
+msgid "The recipient is required to sign the document for it to be completed."
+msgstr "El destinatario debe firmar el documento para que se complete."
+
+#: packages/ui/components/recipient/recipient-role-select.tsx:81
+msgid "The recipient is required to view the document for it to be completed."
+msgstr "El destinatario debe ver el documento para que se complete."
+
+#: packages/ui/components/document/document-share-button.tsx:52
+msgid "The sharing link could not be created at this time. Please try again."
+msgstr "El enlace de compartición no se pudo crear en este momento. Por favor, inténtelo de nuevo."
+
+#: packages/ui/components/document/document-share-button.tsx:47
+msgid "The sharing link has been copied to your clipboard."
+msgstr "El enlace de compartición ha sido copiado a su portapapeles."
+
+#: packages/ui/components/document/document-send-email-message-helper.tsx:25
+msgid "The signer's email"
+msgstr "El correo electrónico del firmante"
+
+#: packages/ui/components/document/document-send-email-message-helper.tsx:19
+msgid "The signer's name"
+msgstr "El nombre del firmante"
+
+#: packages/ui/primitives/document-flow/add-subject.tsx:243
+msgid "The signing link has been copied to your clipboard."
+msgstr "El enlace de firma ha sido copiado a tu portapapeles."
+
+#: packages/email/templates/team-email-removed.tsx:63
+msgid "The team email <0>{teamEmail}0> has been removed from the following team"
+msgstr "El correo electrónico del equipo <0>{teamEmail}0> ha sido eliminado del siguiente equipo"
+
+#: packages/ui/components/document/document-global-auth-action-select.tsx:72
+msgid "This can be overriden by setting the authentication requirements directly on each recipient in the next step."
+msgstr "Esto se puede anular configurando los requisitos de autenticación directamente en cada destinatario en el siguiente paso."
+
+#: packages/email/template-components/template-document-super-delete.tsx:31
+msgid "This document can not be recovered, if you would like to dispute the reason for future documents please contact support."
+msgstr "Este documento no se puede recuperar, si deseas impugnar la razón para documentos futuros, por favor contacta con el soporte."
+
+#: packages/ui/primitives/document-flow/add-fields.tsx:764
+msgid "This document has already been sent to this recipient. You can no longer edit this recipient."
+msgstr "Este documento ya ha sido enviado a este destinatario. Ya no puede editar a este destinatario."
+
+#: packages/ui/primitives/document-password-dialog.tsx:66
+msgid "This document is password protected. Please enter the password to view the document."
+msgstr "Este documento está protegido por contraseña. Por favor ingrese la contraseña para ver el documento."
+
+#: packages/email/template-components/template-footer.tsx:17
+msgid "This document was sent using <0>Documenso.0>"
+msgstr "Este documento fue enviado usando <0>Documenso.0>"
+
+#~ msgid "This email confirms that you have rejected the document \"{documentName}\" sent by {documentOwnerName}."
+#~ msgstr "This email confirms that you have rejected the document \"{documentName}\" sent by {documentOwnerName}."
+
+#: packages/email/template-components/template-document-rejection-confirmed.tsx:26
+msgid "This email confirms that you have rejected the document <0>\"{documentName}\"0> sent by {documentOwnerName}."
+msgstr "Este correo electrónico confirma que ha rechazado el documento <0>\"{documentName}\"0> enviado por {documentOwnerName}."
+
+#: packages/ui/components/document/document-email-checkboxes.tsx:94
+msgid "This email is sent to the recipient if they are removed from a pending document."
+msgstr "Este correo electrónico se envía al destinatario si es eliminado de un documento pendiente."
+
+#: packages/ui/components/document/document-email-checkboxes.tsx:55
+msgid "This email is sent to the recipient requesting them to sign the document."
+msgstr "Este correo electrónico se envía al destinatario solicitando que firme el documento."
+
+#: packages/ui/components/document/document-email-checkboxes.tsx:133
+msgid "This email will be sent to the recipient who has just signed the document, if there are still other recipients who have not signed yet."
+msgstr "Este correo electrónico se enviará al destinatario que acaba de firmar el documento, si todavía hay otros destinatarios que no han firmado."
+
+#: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:581
+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."
+msgstr "Este campo no se puede modificar ni eliminar. Cuando comparta el enlace directo de esta plantilla o lo agregue a su perfil público, cualquiera que acceda podrá ingresar su nombre y correo electrónico, y completar los campos que se le hayan asignado."
+
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:233
+msgid "This is how the document will reach the recipients once the document is ready for signing."
+msgstr "Así es como el documento llegará a los destinatarios una vez que esté listo para firmarse."
+
+#: packages/ui/primitives/document-flow/add-fields.tsx:1097
+msgid "This recipient can no longer be modified as they have signed a field, or completed the document."
+msgstr "Este destinatario ya no puede ser modificado ya que ha firmado un campo o completado el documento."
+
+#: packages/ui/primitives/document-flow/add-signers.tsx:194
+msgid "This signer has already signed the document."
+msgstr "Este firmante ya ha firmado el documento."
+
+#: packages/ui/components/document/document-email-checkboxes.tsx:212
+msgid "This will be sent to all recipients if a pending document has been deleted."
+msgstr "Esto se enviará a todos los destinatarios si un documento pendiente ha sido eliminado."
+
+#: packages/ui/components/document/document-email-checkboxes.tsx:173
+msgid "This will be sent to all recipients once the document has been fully completed."
+msgstr "Esto se enviará a todos los destinatarios una vez que el documento esté completamente completado."
+
+#: packages/ui/components/recipient/recipient-action-auth-select.tsx:48
+msgid "This will override any global settings."
+msgstr "Esto anulará cualquier configuración global."
+
+#: packages/ui/primitives/document-flow/add-settings.tsx:347
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:438
+msgid "Time Zone"
+msgstr "Zona horaria"
+
+#: packages/ui/primitives/document-flow/add-settings.tsx:155
+msgid "Title"
+msgstr "Título"
+
+#: packages/ui/primitives/document-flow/add-fields.tsx:1080
+#: packages/ui/primitives/template-flow/add-template-fields.tsx:841
+msgid "To proceed further, please set at least one value for the {0} field."
+msgstr "Para continuar, por favor establezca al menos un valor para el campo {0}."
+
+#: packages/ui/primitives/document-flow/add-subject.tsx:86
+msgid "Update"
+msgstr "Actualizar"
+
+#: packages/lib/constants/template.ts:13
+msgid "Update the role and add fields as required for the direct recipient. The individual who uses the direct link will sign the document as the direct recipient."
+msgstr "Actualizar el rol y agregar campos según sea necesario para el destinatario directo. La persona que utilice el enlace directo firmará el documento como destinatario directo."
+
+#: packages/ui/primitives/document-dropzone.tsx:168
+msgid "Upgrade"
+msgstr "Actualizar"
+
+#: packages/ui/primitives/document-dropzone.tsx:70
+msgid "Upload Template Document"
+msgstr "Cargar Documento Plantilla"
+
+#: packages/ui/primitives/document-flow/field-items-advanced-settings/checkbox-field.tsx:132
+#: packages/ui/primitives/document-flow/field-items-advanced-settings/number-field.tsx:167
+msgid "Validation"
+msgstr "Validación"
+
+#: packages/ui/primitives/document-flow/field-items-advanced-settings/number-field.tsx:91
+#: packages/ui/primitives/document-flow/field-items-advanced-settings/number-field.tsx:96
+msgid "Value"
+msgstr "Valor"
+
+#: packages/email/templates/confirm-team-email.tsx:71
+msgid "Verify your team email address"
+msgstr "Verifica tu dirección de correo electrónico del equipo"
+
+#: packages/lib/constants/recipient-roles.ts:29
+msgid "View"
+msgstr "Ver"
+
+#: packages/email/templates/confirm-team-email.tsx:95
+msgid "View all documents sent to and from this email address"
+msgstr "Ver todos los documentos enviados hacia y desde esta dirección de correo electrónico"
+
+#: packages/email/templates/document-created-from-direct-template.tsx:75
+msgid "View document"
+msgstr "Ver documento"
+
+#: packages/email/template-components/template-document-invite.tsx:105
+#: packages/email/template-components/template-document-rejected.tsx:44
+#: packages/ui/primitives/document-flow/add-subject.tsx:90
+#: packages/ui/primitives/document-flow/add-subject.tsx:91
+msgid "View Document"
+msgstr "Ver Documento"
+
+#: packages/email/template-components/template-document-self-signed.tsx:79
+msgid "View plans"
+msgstr "Ver planes"
+
+#: packages/lib/constants/recipient-roles.ts:67
+#~ msgid "VIEW_REQUEST"
+#~ msgstr "VIEW_REQUEST"
+
+#: packages/lib/constants/recipient-roles.ts:30
+msgid "Viewed"
+msgstr "Visto"
+
+#: packages/lib/constants/recipient-roles.ts:32
+msgid "Viewer"
+msgstr "Visor"
+
+#: packages/lib/constants/recipient-roles.ts:33
+msgid "Viewers"
+msgstr "Espectadores"
+
+#: packages/lib/constants/recipient-roles.ts:31
+msgid "Viewing"
+msgstr "Viendo"
+
+#: packages/email/template-components/template-document-pending.tsx:31
+msgid "Waiting for others"
+msgstr "Esperando a otros"
+
+#: packages/lib/server-only/document/send-pending-email.ts:96
+msgid "Waiting for others to complete signing."
+msgstr "Esperando a que otros completen la firma."
+
+#: packages/ui/primitives/document-flow/add-subject.tsx:205
+msgid "We will generate signing links for with you, which you can send to the recipients through your method of choice."
+msgstr "Generaremos enlaces de firma para ti, que podrás enviar a los destinatarios a través de tu método preferido."
+
+#: packages/ui/primitives/document-flow/add-subject.tsx:201
+msgid "We won't send anything to notify recipients."
+msgstr "No enviaremos nada para notificar a los destinatarios."
+
+#: packages/email/template-components/template-document-pending.tsx:41
+msgid "We're still waiting for other signers to sign this document.<0/>We'll notify you as soon as it's ready."
+msgstr "Aún estamos esperando a que otros firmantes firmen este documento.<0/>Te notificaremos tan pronto como esté listo."
+
+#: packages/email/templates/reset-password.tsx:65
+msgid "We've changed your password as you asked. You can now sign in with your new password."
+msgstr "Hemos cambiado tu contraseña como solicitaste. Ahora puedes iniciar sesión con tu nueva contraseña."
+
+#: packages/email/template-components/template-confirmation-email.tsx:21
+msgid "Welcome to Documenso!"
+msgstr "¡Bienvenido a Documenso!"
+
+#: packages/lib/utils/document-audit-logs.ts:258
+msgid "You"
+msgstr "Tú"
+
+#: packages/ui/primitives/document-flow/send-document-action-dialog.tsx:44
+msgid "You are about to send this document to the recipients. Are you sure you want to continue?"
+msgstr "Está a punto de enviar este documento a los destinatarios. ¿Está seguro de que desea continuar?"
+
+#: packages/email/template-components/template-confirmation-email.tsx:38
+msgid "You can also copy and paste this link into your browser: {confirmationLink} (link expires in 1 hour)"
+msgstr "También puedes copiar y pegar este enlace en tu navegador: {confirmationLink} (el enlace expira en 1 hora)"
+
+#: packages/email/templates/confirm-team-email.tsx:106
+msgid "You can revoke access at any time in your team settings on Documenso <0>here.0>"
+msgstr "Puedes revocar el acceso en cualquier momento en la configuración de tu equipo en Documenso <0>aquí.0>"
+
+#: packages/ui/components/document/document-send-email-message-helper.tsx:11
+msgid "You can use the following variables in your message:"
+msgstr "Puede usar las siguientes variables en su mensaje:"
+
+#: packages/email/template-components/template-document-rejected.tsx:37
+msgid "You can view the document and its status by clicking the button below."
+msgstr "Puede ver el documento y su estado haciendo clic en el botón de abajo."
+
+#: packages/ui/primitives/document-dropzone.tsx:43
+msgid "You cannot upload documents at this time."
+msgstr "No puede cargar documentos en este momento."
+
+#: packages/email/template-components/template-document-cancel.tsx:35
+msgid "You don't need to sign it anymore."
+msgstr "Ya no necesitas firmarlo."
+
+#: packages/lib/server-only/team/create-team-member-invites.ts:186
+msgid "You have been invited to join {0} on Documenso"
+msgstr "Te han invitado a unirte a {0} en Documenso"
+
+#: packages/email/templates/team-invite.tsx:76
+msgid "You have been invited to join the following team"
+msgstr "Te han invitado a unirte al siguiente equipo"
+
+#: packages/lib/server-only/recipient/set-recipients-for-document.ts:329
+msgid "You have been removed from a document"
+msgstr "Te han eliminado de un documento"
+
+#: packages/lib/server-only/team/request-team-ownership-transfer.ts:114
+msgid "You have been requested to take ownership of team {0} on Documenso"
+msgstr "Se te ha solicitado asumir la propiedad del equipo {0} en Documenso"
+
+#: packages/lib/jobs/definitions/emails/send-signing-email.ts:115
+#: packages/lib/server-only/document/resend-document.tsx:125
+msgid "You have initiated the document {0} that requires you to {recipientActionVerb} it."
+msgstr "Has iniciado el documento {0} que requiere que {recipientActionVerb}."
+
+#: packages/ui/primitives/document-dropzone.tsx:69
+msgid "You have reached your document limit."
+msgstr "Ha alcanzado su límite de documentos."
+
+#: packages/email/templates/document-rejection-confirmed.tsx:27
+msgid "You have rejected the document '{documentName}'"
+msgstr "Ha rechazado el documento '{documentName}'"
+
+#~ msgid "You have rejected the document \"{documentName}\""
+#~ msgstr "You have rejected the document \"{documentName}\""
+
+#: packages/email/template-components/template-document-self-signed.tsx:42
+msgid "You have signed “{documentName}”"
+msgstr "Has firmado “{documentName}”"
+
+#: packages/email/template-components/template-document-super-delete.tsx:23
+msgid "Your document has been deleted by an admin!"
+msgstr "¡Tu documento ha sido eliminado por un administrador!"
+
+#: packages/email/template-components/template-reset-password.tsx:26
+msgid "Your password has been updated."
+msgstr "Tu contraseña ha sido actualizada."
+
+#: packages/email/templates/team-delete.tsx:28
+#: packages/email/templates/team-delete.tsx:32
+msgid "Your team has been deleted"
+msgstr "Tu equipo ha sido eliminado"
+
diff --git a/packages/lib/translations/es/marketing.po b/packages/lib/translations/es/marketing.po
new file mode 100644
index 000000000..5a14fd8a8
--- /dev/null
+++ b/packages/lib/translations/es/marketing.po
@@ -0,0 +1,605 @@
+msgid ""
+msgstr ""
+"POT-Creation-Date: 2024-07-24 13:01+1000\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: @lingui/cli\n"
+"Language: es\n"
+"Project-Id-Version: documenso-app\n"
+"Report-Msgid-Bugs-To: \n"
+"PO-Revision-Date: 2024-11-20 11:56\n"
+"Last-Translator: \n"
+"Language-Team: Spanish\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Crowdin-Project: documenso-app\n"
+"X-Crowdin-Project-ID: 694691\n"
+"X-Crowdin-Language: es-ES\n"
+"X-Crowdin-File: marketing.po\n"
+"X-Crowdin-File-ID: 6\n"
+
+#: apps/marketing/src/app/(marketing)/blog/page.tsx:45
+msgid "{0}"
+msgstr "{0}"
+
+#: apps/marketing/src/components/(marketing)/pricing-table.tsx:100
+msgid "5 standard documents per month"
+msgstr "5 documentos estándar por mes"
+
+#: apps/marketing/src/components/(marketing)/pricing-table.tsx:198
+msgid "5 Users Included"
+msgstr "5 Usuarios incluidos"
+
+#: apps/marketing/src/components/(marketing)/faster-smarter-beautiful-bento.tsx:34
+msgid "A 10x better signing experience."
+msgstr "Una experiencia de firma 10 veces mejor."
+
+#: apps/marketing/src/app/(marketing)/singleplayer/client.tsx:51
+msgid "Add document"
+msgstr "Agregar documento"
+
+#: apps/marketing/src/components/(marketing)/pricing-table.tsx:201
+msgid "Add More Users for {0}"
+msgstr "Agregar más usuarios por {0}"
+
+#: apps/marketing/src/app/(marketing)/open/page.tsx:165
+msgid "All our metrics, finances, and learnings are public. We believe in transparency and want to share our journey with you. You can read more about why here: <0>Announcing Open Metrics0>"
+msgstr "Todos nuestros métricas, finanzas y aprendizajes son públicos. Creemos en la transparencia y queremos compartir nuestro viaje contigo. Puedes leer más sobre por qué aquí: <0>Anunciando Métricas Abiertas0>"
+
+#: apps/marketing/src/app/(marketing)/open/funding-raised.tsx:58
+#: apps/marketing/src/app/(marketing)/open/funding-raised.tsx:65
+msgid "Amount Raised"
+msgstr "Monto recaudado"
+
+#: apps/marketing/src/components/(marketing)/pricing-table.tsx:145
+#: apps/marketing/src/components/(marketing)/pricing-table.tsx:189
+msgid "API Access"
+msgstr "Acceso a API"
+
+#: apps/marketing/src/components/(marketing)/faster-smarter-beautiful-bento.tsx:67
+msgid "Beautiful."
+msgstr "Hermoso."
+
+#: apps/marketing/src/components/(marketing)/faster-smarter-beautiful-bento.tsx:69
+msgid "Because signing should be celebrated. That’s why we care about the smallest detail in our product."
+msgstr "Porque la firma debe ser celebrada. Por eso nos importa el más mínimo detalle en nuestro producto."
+
+#: apps/marketing/src/components/(marketing)/footer.tsx:35
+#: apps/marketing/src/components/(marketing)/header.tsx:57
+#: apps/marketing/src/components/(marketing)/mobile-navigation.tsx:36
+msgid "Blog"
+msgstr "Blog"
+
+#: apps/marketing/src/components/(marketing)/open-build-template-bento.tsx:64
+msgid "Build on top."
+msgstr "Construir sobre."
+
+#: apps/marketing/src/app/(marketing)/pricing/page.tsx:163
+msgid "Can I use Documenso commercially?"
+msgstr "¿Puedo usar Documenso comercialmente?"
+
+#: apps/marketing/src/components/(marketing)/footer.tsx:42
+msgid "Careers"
+msgstr "Carreras"
+
+#: apps/marketing/src/components/(marketing)/footer.tsx:36
+msgid "Changelog"
+msgstr "Registro de cambios"
+
+#: apps/marketing/src/components/(marketing)/open-build-template-bento.tsx:85
+msgid "Choose a template from the community app store. Or submit your own template for others to use."
+msgstr "Elige una plantilla de la tienda de aplicaciones de la comunidad. O envía tu propia plantilla para que otros la usen."
+
+#: apps/marketing/src/app/(marketing)/open/page.tsx:219
+msgid "Community"
+msgstr "Comunidad"
+
+#: apps/marketing/src/app/(marketing)/open/monthly-completed-documents-chart.tsx:55
+msgid "Completed Documents"
+msgstr "Documentos Completados"
+
+#: apps/marketing/src/app/(marketing)/open/monthly-completed-documents-chart.tsx:33
+msgid "Completed Documents per Month"
+msgstr "Documentos Completados por Mes"
+
+#: apps/marketing/src/components/(marketing)/share-connect-paid-widget-bento.tsx:65
+msgid "Connections"
+msgstr "Conexiones"
+
+#: apps/marketing/src/components/(marketing)/enterprise.tsx:35
+msgid "Contact Us"
+msgstr "Contáctanos"
+
+#: apps/marketing/src/components/(marketing)/share-connect-paid-widget-bento.tsx:67
+msgid "Create connections and automations with Zapier and more to integrate with your favorite tools."
+msgstr "Crea conexiones y automatizaciones con Zapier y más para integrarte con tus herramientas favoritas."
+
+#: apps/marketing/src/components/(marketing)/call-to-action.tsx:23
+msgid "Create your account and start using state-of-the-art document signing. Open and beautiful signing is within your grasp."
+msgstr "Crea tu cuenta y comienza a usar la firma de documentos de última generación. La firma abierta y hermosa está a tu alcance."
+
+#: apps/marketing/src/app/(marketing)/open/tooltip.tsx:35
+msgid "Customers with an Active Subscriptions."
+msgstr "Clientes con suscripciones activas."
+
+#: apps/marketing/src/components/(marketing)/open-build-template-bento.tsx:33
+msgid "Customise and expand."
+msgstr "Personaliza y expande."
+
+#: apps/marketing/src/components/(marketing)/footer.tsx:38
+msgid "Design"
+msgstr "Diseño"
+
+#: apps/marketing/src/app/(marketing)/pricing/page.tsx:44
+msgid "Designed for every stage of your journey."
+msgstr "Diseñado para cada etapa de tu viaje."
+
+#: apps/marketing/src/components/(marketing)/carousel.tsx:40
+msgid "Direct Link"
+msgstr "Enlace Directo"
+
+#: apps/marketing/src/app/(marketing)/pricing/page.tsx:181
+msgid "Documenso is a community effort to create an open and vibrant ecosystem around a tool, everybody is free to use and adapt. By being truly open we want to create trusted infrastructure for the future of the internet."
+msgstr "Documenso es un esfuerzo comunitario para crear un ecosistema abierto y vibrante alrededor de una herramienta que todos son libres de usar y adaptar. Al ser verdaderamente abierto, queremos crear una infraestructura confiable para el futuro de internet."
+
+#: apps/marketing/src/app/(marketing)/open/typefully.tsx:28
+msgid "Documenso on X"
+msgstr "Documenso en X"
+
+#: apps/marketing/src/components/(marketing)/hero.tsx:104
+msgid "Document signing,<0/>finally open source."
+msgstr "Firma de documentos,<0/>finalmente código abierto."
+
+#: apps/marketing/src/components/(marketing)/footer.tsx:33
+#: apps/marketing/src/components/(marketing)/header.tsx:50
+#: apps/marketing/src/components/(marketing)/mobile-navigation.tsx:28
+msgid "Documentation"
+msgstr "Documentación"
+
+#: apps/marketing/src/components/(marketing)/share-connect-paid-widget-bento.tsx:110
+msgid "Easily embed Documenso into your product. Simply copy and paste our react widget into your application."
+msgstr "Incrusta fácilmente Documenso en tu producto. Simplemente copia y pega nuestro widget de react en tu aplicación."
+
+#: apps/marketing/src/components/(marketing)/share-connect-paid-widget-bento.tsx:46
+msgid "Easy Sharing."
+msgstr "Compartición fácil."
+
+#: apps/marketing/src/components/(marketing)/pricing-table.tsx:148
+#: apps/marketing/src/components/(marketing)/pricing-table.tsx:192
+msgid "Email and Discord Support"
+msgstr "Soporte por correo electrónico y Discord"
+
+#: apps/marketing/src/app/(marketing)/open/team-members.tsx:43
+msgid "Engagement"
+msgstr "Compromiso"
+
+#: apps/marketing/src/app/(marketing)/singleplayer/client.tsx:64
+msgid "Enter your details."
+msgstr "Ingresa tus detalles."
+
+#: apps/marketing/src/components/(marketing)/enterprise.tsx:16
+msgid "Enterprise Compliance, License or Technical Needs?"
+msgstr "¿Cumplimiento, licencia o necesidades técnicas de la empresa?"
+
+#: apps/marketing/src/components/(marketing)/pricing-table.tsx:128
+msgid "Everything you need for a great signing experience."
+msgstr "Todo lo que necesitas para una gran experiencia de firma."
+
+#: apps/marketing/src/components/(marketing)/faster-smarter-beautiful-bento.tsx:45
+msgid "Fast."
+msgstr "Rápido."
+
+#: apps/marketing/src/components/(marketing)/faster-smarter-beautiful-bento.tsx:36
+msgid "Faster, smarter and more beautiful."
+msgstr "Más rápido, más inteligente y más hermoso."
+
+#: apps/marketing/src/app/(marketing)/open/page.tsx:210
+msgid "Finances"
+msgstr "Finanzas"
+
+#: apps/marketing/src/app/(marketing)/open/typefully.tsx:38
+msgid "Follow us on X"
+msgstr "Síguenos en X"
+
+#: apps/marketing/src/components/(marketing)/pricing-table.tsx:172
+msgid "For companies looking to scale across multiple teams."
+msgstr "Para empresas que buscan escalar en múltiples equipos."
+
+#: apps/marketing/src/components/(marketing)/pricing-table.tsx:85
+msgid "For small teams and individuals with basic needs."
+msgstr "Para pequeños equipos e individuos con necesidades básicas."
+
+#: apps/marketing/src/components/(marketing)/pricing-table.tsx:80
+msgid "Free"
+msgstr "Gratis"
+
+#: apps/marketing/src/app/(marketing)/blog/page.tsx:26
+msgid "From the blog"
+msgstr "Del blog"
+
+#: apps/marketing/src/app/(marketing)/open/data.ts:9
+#: apps/marketing/src/app/(marketing)/open/data.ts:17
+#: apps/marketing/src/app/(marketing)/open/data.ts:25
+#: apps/marketing/src/app/(marketing)/open/data.ts:33
+#: apps/marketing/src/app/(marketing)/open/data.ts:41
+#: apps/marketing/src/app/(marketing)/open/data.ts:49
+msgid "Full-Time"
+msgstr "A tiempo completo"
+
+#: apps/marketing/src/components/(marketing)/share-connect-paid-widget-bento.tsx:87
+msgid "Get paid (Soon)."
+msgstr "Recibe pago (Pronto)."
+
+#: apps/marketing/src/components/(marketing)/call-to-action.tsx:31
+msgid "Get started"
+msgstr "Empezar"
+
+#: apps/marketing/src/app/(marketing)/pricing/page.tsx:75
+msgid "Get Started"
+msgstr "Comienza"
+
+#: apps/marketing/src/app/(marketing)/pricing/page.tsx:47
+msgid "Get started today."
+msgstr "Comienza hoy."
+
+#: apps/marketing/src/app/(marketing)/blog/page.tsx:30
+msgid "Get the latest news from Documenso, including product updates, team announcements and more!"
+msgstr "¡Obtén las últimas noticias de Documenso, incluidas actualizaciones de productos, anuncios del equipo y más!"
+
+#: apps/marketing/src/app/(marketing)/open/page.tsx:233
+msgid "GitHub: Total Merged PRs"
+msgstr "GitHub: Total de PRs fusionados"
+
+#: apps/marketing/src/app/(marketing)/open/page.tsx:251
+msgid "GitHub: Total Open Issues"
+msgstr "GitHub: Total de problemas abiertos"
+
+#: apps/marketing/src/app/(marketing)/open/page.tsx:225
+msgid "GitHub: Total Stars"
+msgstr "GitHub: Total de estrellas"
+
+#: apps/marketing/src/app/(marketing)/open/salary-bands.tsx:23
+msgid "Global Salary Bands"
+msgstr "Bandas salariales globales"
+
+#: apps/marketing/src/app/(marketing)/open/page.tsx:261
+msgid "Growth"
+msgstr "Crecimiento"
+
+#: apps/marketing/src/app/(marketing)/pricing/page.tsx:134
+msgid "How can I contribute?"
+msgstr "¿Cómo puedo contribuir?"
+
+#: apps/marketing/src/app/(marketing)/pricing/page.tsx:105
+msgid "How do you handle my data?"
+msgstr "¿Cómo manejan mis datos?"
+
+#: apps/marketing/src/components/(marketing)/pricing-table.tsx:118
+msgid "Individual"
+msgstr "Individual"
+
+#: apps/marketing/src/components/(marketing)/share-connect-paid-widget-bento.tsx:89
+msgid "Integrated payments with Stripe so you don’t have to worry about getting paid."
+msgstr "Pagos integrados con Stripe para que no tengas que preocuparte por cobrar."
+
+#: apps/marketing/src/components/(marketing)/share-connect-paid-widget-bento.tsx:35
+msgid "Integrates with all your favourite tools."
+msgstr "Se integra con todas tus herramientas favoritas."
+
+#: apps/marketing/src/app/(marketing)/open/page.tsx:289
+msgid "Is there more?"
+msgstr "¿Hay más?"
+
+#: apps/marketing/src/components/(marketing)/open-build-template-bento.tsx:44
+msgid "It’s up to you. Either clone our repository or rely on our easy to use hosting solution."
+msgstr "Depende de ti. O bien clona nuestro repositorio o confía en nuestra solución de hosting fácil de usar."
+
+#: apps/marketing/src/app/(marketing)/open/team-members.tsx:49
+msgid "Join Date"
+msgstr "Fecha de ingreso"
+
+#: apps/marketing/src/components/(marketing)/call-to-action.tsx:19
+msgid "Join the Open Signing Movement"
+msgstr "Únete al Movimiento de Firma Abierta"
+
+#: apps/marketing/src/app/(marketing)/open/team-members.tsx:46
+msgid "Location"
+msgstr "Ubicación"
+
+#: apps/marketing/src/components/(marketing)/open-build-template-bento.tsx:66
+msgid "Make it your own through advanced customization and adjustability."
+msgstr "Hazlo tuyo a través de personalización y ajustabilidad avanzadas."
+
+#: apps/marketing/src/app/(marketing)/open/page.tsx:199
+msgid "Merged PR's"
+msgstr "PRs fusionados"
+
+#: apps/marketing/src/app/(marketing)/open/page.tsx:234
+msgid "Merged PRs"
+msgstr "PRs fusionados"
+
+#: apps/marketing/src/components/(marketing)/pricing-table.tsx:40
+msgid "Monthly"
+msgstr "Mensual"
+
+#: apps/marketing/src/app/(marketing)/open/team-members.tsx:34
+msgid "Name"
+msgstr "Nombre"
+
+#: apps/marketing/src/app/(marketing)/open/monthly-new-users-chart.tsx:30
+#: apps/marketing/src/app/(marketing)/open/monthly-new-users-chart.tsx:43
+#: apps/marketing/src/app/(marketing)/open/monthly-new-users-chart.tsx:52
+msgid "New Users"
+msgstr "Nuevos Usuarios"
+
+#: apps/marketing/src/components/(marketing)/pricing-table.tsx:106
+msgid "No credit card required"
+msgstr "No se requiere tarjeta de crédito"
+
+#: apps/marketing/src/components/(marketing)/callout.tsx:29
+#: apps/marketing/src/components/(marketing)/hero.tsx:125
+msgid "No Credit Card required"
+msgstr "No se requiere tarjeta de crédito"
+
+#: apps/marketing/src/app/(marketing)/pricing/page.tsx:61
+msgid "None of these work for you? Try self-hosting!"
+msgstr "¿Ninguna de estas opciones funciona para ti? ¡Prueba el autoalojamiento!"
+
+#: apps/marketing/src/app/(marketing)/open/page.tsx:194
+#: apps/marketing/src/app/(marketing)/open/page.tsx:252
+msgid "Open Issues"
+msgstr "Problemas Abiertos"
+
+#: apps/marketing/src/components/(marketing)/open-build-template-bento.tsx:42
+msgid "Open Source or Hosted."
+msgstr "Código Abierto o Alojado."
+
+#: apps/marketing/src/app/(marketing)/open/page.tsx:161
+#: apps/marketing/src/components/(marketing)/footer.tsx:37
+#: apps/marketing/src/components/(marketing)/header.tsx:64
+#: apps/marketing/src/components/(marketing)/mobile-navigation.tsx:40
+msgid "Open Startup"
+msgstr "Startup Abierta"
+
+#: apps/marketing/src/components/(marketing)/footer.tsx:41
+msgid "OSS Friends"
+msgstr "Amigos OSS"
+
+#: apps/marketing/src/components/(marketing)/faster-smarter-beautiful-bento.tsx:91
+msgid "Our custom templates come with smart rules that can help you save time and energy."
+msgstr "Nuestras plantillas personalizadas vienen con reglas inteligentes que pueden ayudarte a ahorrar tiempo y energía."
+
+#: apps/marketing/src/components/(marketing)/enterprise.tsx:20
+msgid "Our Enterprise License is great for large organizations looking to switch to Documenso for all their signing needs. It's available for our cloud offering as well as self-hosted setups and offers a wide range of compliance and Adminstration Features."
+msgstr "Nuestra Licencia Empresarial es excelente para grandes organizaciones que buscan cambiar a Documenso para todas sus necesidades de firma. Está disponible para nuestra oferta en la nube, así como para configuraciones autoalojadas y ofrece una amplia gama de funciones de cumplimiento y administración."
+
+#: apps/marketing/src/app/(marketing)/pricing/page.tsx:65
+msgid "Our self-hosted option is great for small teams and individuals who need a simple solution. You can use our docker based setup to get started in minutes. Take control with full customizability and data ownership."
+msgstr "Nuestra opción de autoalojamiento es excelente para pequeños equipos e individuos que necesitan una solución simple. Puedes usar nuestra configuración basada en docker para empezar en minutos. Toma el control con total personalización y propiedad de los datos."
+
+#: apps/marketing/src/components/(marketing)/pricing-table.tsx:151
+msgid "Premium Profile Name"
+msgstr "Nombre de Perfil Premium"
+
+#: apps/marketing/src/app/(marketing)/pricing/page.tsx:40
+#: apps/marketing/src/components/(marketing)/footer.tsx:31
+#: apps/marketing/src/components/(marketing)/header.tsx:42
+#: apps/marketing/src/components/(marketing)/mobile-navigation.tsx:24
+msgid "Pricing"
+msgstr "Precios"
+
+#: apps/marketing/src/components/(marketing)/footer.tsx:43
+#: apps/marketing/src/components/(marketing)/mobile-navigation.tsx:53
+msgid "Privacy"
+msgstr "Privacidad"
+
+#: apps/marketing/src/components/(marketing)/carousel.tsx:58
+msgid "Profile"
+msgstr "Perfil"
+
+#: apps/marketing/src/components/(marketing)/share-connect-paid-widget-bento.tsx:108
+msgid "React Widget (Soon)."
+msgstr "Widget de React (Pronto)."
+
+#: apps/marketing/src/components/(marketing)/share-connect-paid-widget-bento.tsx:48
+msgid "Receive your personal link to share with everyone you care about."
+msgstr "Recibe tu enlace personal para compartirlo con todos los que te importan."
+
+#: apps/marketing/src/app/(marketing)/open/team-members.tsx:37
+msgid "Role"
+msgstr "Rol"
+
+#: apps/marketing/src/app/(marketing)/open/salary-bands.tsx:37
+#: apps/marketing/src/app/(marketing)/open/team-members.tsx:40
+msgid "Salary"
+msgstr "Salario"
+
+#: apps/marketing/src/components/(marketing)/pricing-table.tsx:62
+msgid "Save $60 or $120"
+msgstr "Ahorra $60 o $120"
+
+#: apps/marketing/src/app/(marketing)/pricing/page.tsx:109
+msgid "Securely. Our data centers are located in Frankfurt (Germany), giving us the best local privacy laws. We are very aware of the sensitive nature of our data and follow best practices to ensure the security and integrity of the data entrusted to us."
+msgstr "De manera segura. Nuestros centros de datos están ubicados en Frankfurt (Alemania), dándonos las mejores leyes de privacidad locales. Somos muy conscientes de la naturaleza sensible de nuestros datos y seguimos las mejores prácticas para garantizar la seguridad y la integridad de los datos que se nos confían."
+
+#: apps/marketing/src/components/(marketing)/share-connect-paid-widget-bento.tsx:37
+msgid "Send, connect, receive and embed everywhere."
+msgstr "Enviar, conectar, recibir e incrustar en todas partes."
+
+#: apps/marketing/src/app/(marketing)/open/salary-bands.tsx:34
+msgid "Seniority"
+msgstr "Antigüedad"
+
+#: apps/marketing/src/components/(marketing)/footer.tsx:39
+msgid "Shop"
+msgstr "Tienda"
+
+#: apps/marketing/src/app/(marketing)/singleplayer/client.tsx:63
+msgid "Sign"
+msgstr "Firmar"
+
+#: apps/marketing/src/components/(marketing)/header.tsx:72
+#: apps/marketing/src/components/(marketing)/mobile-navigation.tsx:61
+msgid "Sign in"
+msgstr "Iniciar sesión"
+
+#: apps/marketing/src/components/(marketing)/header.tsx:77
+#: apps/marketing/src/components/(marketing)/mobile-navigation.tsx:57
+msgid "Sign up"
+msgstr "Registrarse"
+
+#: apps/marketing/src/components/(marketing)/carousel.tsx:22
+msgid "Signing Process"
+msgstr "Proceso de firma"
+
+#: apps/marketing/src/components/(marketing)/pricing-table.tsx:94
+#: apps/marketing/src/components/(marketing)/pricing-table.tsx:136
+#: apps/marketing/src/components/(marketing)/pricing-table.tsx:180
+msgid "Signup Now"
+msgstr "Regístrate ahora"
+
+#: apps/marketing/src/components/(marketing)/faster-smarter-beautiful-bento.tsx:89
+msgid "Smart."
+msgstr "Inteligente."
+
+#: apps/marketing/src/components/(marketing)/hero.tsx:132
+msgid "Star on GitHub"
+msgstr "Estrella en GitHub"
+
+#: apps/marketing/src/app/(marketing)/open/page.tsx:226
+msgid "Stars"
+msgstr "Estrellas"
+
+#: apps/marketing/src/components/(marketing)/footer.tsx:40
+#: apps/marketing/src/components/(marketing)/mobile-navigation.tsx:44
+msgid "Status"
+msgstr "Estado"
+
+#: apps/marketing/src/components/(marketing)/footer.tsx:34
+#: apps/marketing/src/components/(marketing)/mobile-navigation.tsx:48
+msgid "Support"
+msgstr "Soporte"
+
+#: apps/marketing/src/app/(marketing)/open/team-members.tsx:26
+msgid "Team"
+msgstr "Equipo"
+
+#: apps/marketing/src/components/(marketing)/pricing-table.tsx:195
+msgid "Team Inbox"
+msgstr "Bandeja de entrada del equipo"
+
+#: apps/marketing/src/components/(marketing)/carousel.tsx:28
+#: apps/marketing/src/components/(marketing)/pricing-table.tsx:162
+msgid "Teams"
+msgstr "Equipos"
+
+#: apps/marketing/src/components/(marketing)/open-build-template-bento.tsx:83
+msgid "Template Store (Soon)."
+msgstr "Tienda de Plantillas (Pronto)."
+
+#: apps/marketing/src/app/(marketing)/pricing/page.tsx:138
+msgid "That's awesome. You can take a look at the current <0>Issues0> and join our <1>Discord Community1> to keep up to date, on what the current priorities are. In any case, we are an open community and welcome all input, technical and non-technical ❤️"
+msgstr "Eso es increíble. Puedes echar un vistazo a los <0>Problemas0> actuales y unirte a nuestra <1>Comunidad de Discord1> para mantenerte al día sobre cuáles son las prioridades actuales. En cualquier caso, somos una comunidad abierta y agradecemos todas las aportaciones, técnicas y no técnicas ❤️"
+
+#: apps/marketing/src/app/(marketing)/open/page.tsx:293
+msgid "This page is evolving as we learn what makes a great signing company. We'll update it when we have more to share."
+msgstr "Esta página está evolucionando a medida que aprendemos lo que hace una gran empresa de firmas. La actualizaremos cuando tengamos más para compartir."
+
+#: apps/marketing/src/app/(marketing)/open/salary-bands.tsx:31
+msgid "Title"
+msgstr "Título"
+
+#: apps/marketing/src/app/(marketing)/open/total-signed-documents-chart.tsx:30
+#: apps/marketing/src/app/(marketing)/open/total-signed-documents-chart.tsx:55
+msgid "Total Completed Documents"
+msgstr "Total de Documentos Completados"
+
+#: apps/marketing/src/app/(marketing)/open/page.tsx:267
+#: apps/marketing/src/app/(marketing)/open/page.tsx:268
+msgid "Total Customers"
+msgstr "Total de Clientes"
+
+#: apps/marketing/src/app/(marketing)/open/funding-raised.tsx:29
+msgid "Total Funding Raised"
+msgstr "Total de Fondos Recaudados"
+
+#: apps/marketing/src/app/(marketing)/open/monthly-total-users-chart.tsx:30
+#: apps/marketing/src/app/(marketing)/open/monthly-total-users-chart.tsx:43
+#: apps/marketing/src/app/(marketing)/open/monthly-total-users-chart.tsx:52
+msgid "Total Users"
+msgstr "Total de Usuarios"
+
+#: apps/marketing/src/components/(marketing)/open-build-template-bento.tsx:31
+msgid "Truly your own."
+msgstr "Realmente tuyo."
+
+#: apps/marketing/src/components/(marketing)/callout.tsx:27
+#: apps/marketing/src/components/(marketing)/hero.tsx:123
+msgid "Try our Free Plan"
+msgstr "Prueba nuestro Plan Gratuito"
+
+#: apps/marketing/src/app/(marketing)/open/typefully.tsx:20
+msgid "Twitter Stats"
+msgstr "Estadísticas de Twitter"
+
+#: apps/marketing/src/components/(marketing)/pricing-table.tsx:142
+#: apps/marketing/src/components/(marketing)/pricing-table.tsx:186
+msgid "Unlimited Documents per Month"
+msgstr "Documentos ilimitados por mes"
+
+#: apps/marketing/src/components/(marketing)/pricing-table.tsx:103
+msgid "Up to 10 recipients per document"
+msgstr "Hasta 10 destinatarios por documento"
+
+#: apps/marketing/src/app/(marketing)/singleplayer/client.tsx:52
+msgid "Upload a document and add fields."
+msgstr "Sube un documento y agrega campos."
+
+#: apps/marketing/src/app/(marketing)/pricing/page.tsx:123
+msgid "Using our hosted version is the easiest way to get started, you can simply subscribe and start signing your documents. We take care of the infrastructure, so you can focus on your business. Additionally, when using our hosted version you benefit from our trusted signing certificates which helps you to build trust with your customers."
+msgstr "Usar nuestra versión alojada es la forma más fácil de comenzar, simplemente puedes suscribirte y comenzar a firmar tus documentos. Nos ocupamos de la infraestructura, para que puedas concentrarte en tu negocio. Además, al utilizar nuestra versión alojada, te beneficias de nuestros certificados de firma confiables, lo que te ayuda a generar confianza con tus clientes."
+
+#: apps/marketing/src/app/(marketing)/open/typefully.tsx:33
+msgid "View all stats"
+msgstr "Ver todas las estadísticas"
+
+#: apps/marketing/src/app/(marketing)/pricing/page.tsx:195
+msgid "We are happy to assist you at <0>support@documenso.com0> or <1>in our Discord-Support-Channel1> please message either Lucas or Timur to get added to the channel if you are not already a member."
+msgstr "Estamos felices de ayudarte en <0>support@documenso.com0> o <1>en nuestro canal de soporte de Discord1>. Mensaje a Lucas o Timur para que te agreguen al canal si aún no eres miembro."
+
+#: apps/marketing/src/app/(marketing)/pricing/page.tsx:89
+msgid "What is the difference between the plans?"
+msgstr "¿Cuál es la diferencia entre los planes?"
+
+#: apps/marketing/src/components/(marketing)/faster-smarter-beautiful-bento.tsx:47
+msgid "When it comes to sending or receiving a contract, you can count on lightning-fast speeds."
+msgstr "Cuando se trata de enviar o recibir un contrato, puedes contar con velocidades ultrarrápidas."
+
+#: apps/marketing/src/app/(marketing)/pricing/page.tsx:191
+msgid "Where can I get support?"
+msgstr "¿Dónde puedo obtener soporte?"
+
+#: apps/marketing/src/app/(marketing)/pricing/page.tsx:177
+msgid "Why should I prefer Documenso over DocuSign or some other signing tool?"
+msgstr "¿Por qué debería preferir Documenso sobre DocuSign u otra herramienta de firma?"
+
+#: apps/marketing/src/app/(marketing)/pricing/page.tsx:119
+msgid "Why should I use your hosting service?"
+msgstr "¿Por qué debería usar su servicio de alojamiento?"
+
+#: apps/marketing/src/components/(marketing)/pricing-table.tsx:60
+msgid "Yearly"
+msgstr "Anual"
+
+#: apps/marketing/src/app/(marketing)/pricing/page.tsx:167
+msgid "Yes! Documenso is offered under the GNU AGPL V3 open source license. This means you can use it for free and even modify it to fit your needs, as long as you publish your changes under the same license."
+msgstr "¡Sí! Documenso se ofrece bajo la licencia de código abierto GNU AGPL V3. Esto significa que puedes usarlo de forma gratuita e incluso modificarlo para adaptarlo a tus necesidades, siempre que publiques tus cambios bajo la misma licencia."
+
+#: apps/marketing/src/app/(marketing)/pricing/page.tsx:93
+msgid "You can self-host Documenso for free or use our ready-to-use hosted version. The hosted version comes with additional support, painless scalability and more. Early adopters will get access to all features we build this year, for no additional cost! Forever! Yes, that includes multiple users per account later. If you want Documenso for your enterprise, we are happy to talk about your needs."
+msgstr "Puedes autoalojar Documenso de forma gratuita o usar nuestra versión alojada lista para usar. La versión alojada viene con soporte adicional, escalabilidad sin problemas y más. Los primeros adoptantes tendrán acceso a todas las funciones que construimos este año, sin costo adicional. ¡Para siempre! Sí, eso incluye múltiples usuarios por cuenta más adelante. Si quieres Documenso para tu empresa, estaremos encantados de hablar sobre tus necesidades."
+
+#: apps/marketing/src/components/(marketing)/carousel.tsx:272
+msgid "Your browser does not support the video tag."
+msgstr "Tu navegador no soporta la etiqueta de video."
+
diff --git a/packages/lib/translations/es/web.po b/packages/lib/translations/es/web.po
new file mode 100644
index 000000000..937dcbedf
--- /dev/null
+++ b/packages/lib/translations/es/web.po
@@ -0,0 +1,5143 @@
+msgid ""
+msgstr ""
+"POT-Creation-Date: 2024-07-24 13:01+1000\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: @lingui/cli\n"
+"Language: es\n"
+"Project-Id-Version: documenso-app\n"
+"Report-Msgid-Bugs-To: \n"
+"PO-Revision-Date: 2024-11-20 11:56\n"
+"Last-Translator: \n"
+"Language-Team: Spanish\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Crowdin-Project: documenso-app\n"
+"X-Crowdin-Project-ID: 694691\n"
+"X-Crowdin-Language: es-ES\n"
+"X-Crowdin-File: web.po\n"
+"X-Crowdin-File-ID: 8\n"
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:214
+msgid "\"{0}\" has invited you to sign \"example document\"."
+msgstr "\"{0}\" te ha invitado a firmar \"ejemplo de documento\"."
+
+#: apps/web/src/app/(signing)/sign/[token]/date-field.tsx:69
+msgid "\"{0}\" will appear on the document as it has a timezone of \"{timezone}\"."
+msgstr "\"{0}\" aparecerá en el documento ya que tiene un huso horario de \"{timezone}\"."
+
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:60
+msgid "\"{documentTitle}\" has been successfully deleted"
+msgstr "\"{documentTitle}\" ha sido eliminado con éxito"
+
+#: apps/web/src/components/(teams)/forms/update-team-form.tsx:234
+msgid "\"{email}\" on behalf of \"{teamName}\" has invited you to sign \"example document\"."
+msgstr "\"{email}\" en nombre de \"{teamName}\" te ha invitado a firmar \"ejemplo de documento\"."
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:209
+#~ msgid ""
+#~ "\"{placeholderEmail}\" on behalf of \"{0}\" has invited you to sign \"example\n"
+#~ "document\"."
+#~ msgstr ""
+#~ "\"{placeholderEmail}\" on behalf of \"{0}\" has invited you to sign \"example\n"
+#~ "document\"."
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:209
+msgid "\"{placeholderEmail}\" on behalf of \"{0}\" has invited you to sign \"example document\"."
+msgstr "\"{placeholderEmail}\" en nombre de \"{0}\" te ha invitado a firmar \"documento de ejemplo\"."
+
+#: apps/web/src/components/(teams)/forms/update-team-form.tsx:241
+msgid "\"{teamUrl}\" has invited you to sign \"example document\"."
+msgstr "\"{teamUrl}\" te ha invitado a firmar \"ejemplo de documento\"."
+
+#: apps/web/src/app/(signing)/sign/[token]/signing-page-view.tsx:80
+msgid "({0}) has invited you to approve this document"
+msgstr "({0}) te ha invitado a aprobar este documento"
+
+#: apps/web/src/app/(signing)/sign/[token]/signing-page-view.tsx:77
+msgid "({0}) has invited you to sign this document"
+msgstr "({0}) te ha invitado a firmar este documento"
+
+#: apps/web/src/app/(signing)/sign/[token]/signing-page-view.tsx:74
+msgid "({0}) has invited you to view this document"
+msgstr "({0}) te ha invitado a ver este documento"
+
+#: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:313
+msgid "{0, plural, one {(1 character over)} other {(# characters over)}}"
+msgstr "{0, plural, one {(1 carácter excedido)} other {(# caracteres excedidos)}}"
+
+#: apps/web/src/components/forms/public-profile-form.tsx:237
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:395
+msgid "{0, plural, one {# character over the limit} other {# characters over the limit}}"
+msgstr "{0, plural, one {# carácter sobre el límite} other {# caracteres sobre el límite}}"
+
+#: apps/web/src/app/(recipient)/d/[token]/page.tsx:82
+msgid "{0, plural, one {# recipient} other {# recipients}}"
+msgstr "{0, plural, one {# destinatario} other {# destinatarios}}"
+
+#: apps/web/src/components/(teams)/tables/team-billing-invoices-data-table.tsx:66
+msgid "{0, plural, one {# Seat} other {# Seats}}"
+msgstr "{0, plural, one {# Asiento} other {# Asientos}}"
+
+#: apps/web/src/app/(dashboard)/settings/teams/team-invitations.tsx:37
+#: apps/web/src/app/(dashboard)/settings/teams/team-invitations.tsx:66
+msgid "{0, plural, one {<0>You have <1>11> pending team invitation0>} other {<2>You have <3>#3> pending team invitations2>}}"
+msgstr "{0, plural, one {<0>Tienes <1>11> invitación de equipo pendiente0>} other {<2>Tienes <3>#3> invitaciones de equipo pendientes2>}}"
+
+#: apps/web/src/app/(signing)/sign/[token]/auto-sign.tsx:196
+msgid "{0, plural, one {1 matching field} other {# matching fields}}"
+msgstr "{0, plural, one {1 campo que coincide} other {# campos que coinciden}}"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/edit/document-edit-page-view.tsx:129
+msgid "{0, plural, one {1 Recipient} other {# Recipients}}"
+msgstr "{0, plural, one {1 Destinatario} other {# Destinatarios}}"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:235
+msgid "{0, plural, one {Waiting on 1 recipient} other {Waiting on # recipients}}"
+msgstr "{0, plural, one {Esperando 1 destinatario} other {Esperando # destinatarios}}"
+
+#: apps/web/src/components/(dashboard)/settings/webhooks/trigger-multiselect-combobox.tsx:64
+msgid "{0, plural, zero {Select values} other {# selected...}}"
+msgstr "{0, plural, zero {Selecciona valores} other {# seleccionados...}}"
+
+#: apps/web/src/app/(signing)/sign/[token]/auto-sign.tsx:193
+msgid "{0}"
+msgstr "{0}"
+
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:249
+msgid "{0} direct signing templates"
+msgstr "{0} plantillas de firma directa"
+
+#: apps/web/src/app/(recipient)/d/[token]/direct-template.tsx:66
+#~ msgid "{0} document"
+#~ msgstr "{0} document"
+
+#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:146
+msgid "{0} of {1} documents remaining this month."
+msgstr "{0} de {1} documentos restantes este mes."
+
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:170
+msgid "{0} Recipient(s)"
+msgstr "{0} Destinatario(s)"
+
+#: apps/web/src/app/(recipient)/d/[token]/direct-template.tsx:67
+#~ msgid "{0} the document to complete the process."
+#~ msgstr "{0} the document to complete the process."
+
+#: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:294
+msgid "{charactersRemaining, plural, one {1 character remaining} other {{charactersRemaining} characters remaining}}"
+msgstr "{charactersRemaining, plural, one {1 carácter restante} other {{charactersRemaining} caracteres restantes}}"
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/billing/page.tsx:55
+msgid "{formattedTeamMemberQuanity} • Monthly • Renews: {formattedDate}"
+msgstr "{formattedTeamMemberQuanity} • Mensual • Renovaciones: {formattedDate}"
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/billing/page.tsx:48
+msgid "{numberOfSeats, plural, one {# member} other {# members}}"
+msgstr "{numberOfSeats, plural, one {# miembro} other {# miembros}}"
+
+#: apps/web/src/app/(recipient)/d/[token]/direct-template.tsx:67
+msgid "{recipientActionVerb} document"
+msgstr "{recipientActionVerb} documento"
+
+#: apps/web/src/app/(recipient)/d/[token]/direct-template.tsx:68
+msgid "{recipientActionVerb} the document to complete the process."
+msgstr "{recipientActionVerb} el documento para completar el proceso."
+
+#: apps/web/src/components/forms/public-profile-form.tsx:231
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:389
+msgid "{remaningLength, plural, one {# character remaining} other {# characters remaining}}"
+msgstr "{remaningLength, plural, one {# carácter restante} other {# caracteres restantes}}"
+
+#: apps/web/src/app/(signing)/sign/[token]/no-longer-available.tsx:45
+msgid "<0>\"{0}\"0>is no longer available to sign"
+msgstr "<0>\"{0}\"0> ya no está disponible para firmar"
+
+#: apps/web/src/app/(dashboard)/documents/data-table-sender-filter.tsx:57
+msgid "<0>Sender:0> All"
+msgstr "<0>Remitente:0> Todos"
+
+#: apps/web/src/components/(dashboard)/settings/token/contants.ts:5
+msgid "1 month"
+msgstr "1 mes"
+
+#: apps/web/src/components/(dashboard)/settings/token/contants.ts:8
+msgid "12 months"
+msgstr "12 meses"
+
+#: apps/web/src/components/(dashboard)/settings/token/contants.ts:6
+msgid "3 months"
+msgstr "3 meses"
+
+#: apps/web/src/components/partials/not-found.tsx:45
+msgid "404 Page not found"
+msgstr "404 Página no encontrada"
+
+#: apps/web/src/app/(profile)/p/[url]/not-found.tsx:15
+msgid "404 Profile not found"
+msgstr "404 Perfil no encontrado"
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/not-found.tsx:15
+msgid "404 Team not found"
+msgstr "404 Equipo no encontrado"
+
+#: apps/web/src/app/(recipient)/d/[token]/not-found.tsx:15
+msgid "404 Template not found"
+msgstr "404 Plantilla no encontrada"
+
+#: apps/web/src/components/(dashboard)/settings/token/contants.ts:7
+msgid "6 months"
+msgstr "6 meses"
+
+#: apps/web/src/components/(dashboard)/settings/token/contants.ts:4
+msgid "7 days"
+msgstr "7 días"
+
+#: apps/web/src/components/forms/send-confirmation-email.tsx:55
+msgid "A confirmation email has been sent, and it should arrive in your inbox shortly."
+msgstr "Se ha enviado un correo electrónico de confirmación y debería llegar a tu bandeja de entrada en breve."
+
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:70
+msgid "A device capable of accessing, opening, and reading documents"
+msgstr "Un dispositivo capaz de acceder, abrir y leer documentos"
+
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:218
+msgid "A draft document will be created"
+msgstr "Se creará un documento borrador"
+
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:73
+msgid "A means to print or download documents for your records"
+msgstr "Un medio para imprimir o descargar documentos para sus registros"
+
+#: apps/web/src/components/forms/token.tsx:127
+msgid "A new token was created successfully."
+msgstr "Un nuevo token se ha creado con éxito."
+
+#: apps/web/src/app/(unauthenticated)/check-email/page.tsx:24
+#: apps/web/src/components/forms/forgot-password.tsx:58
+msgid "A password reset email has been sent, if you have an account you should see it in your inbox shortly."
+msgstr "Se ha enviado un correo electrónico para restablecer la contraseña, si tienes una cuenta deberías verlo en tu bandeja de entrada en breve."
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/team-transfer-status.tsx:94
+msgid "A request to transfer the ownership of this team has been sent to <0>{0} ({1})0>"
+msgstr "Se ha enviado una solicitud para transferir la propiedad de este equipo a <0>{0} ({1})0>"
+
+#: apps/web/src/components/(dashboard)/settings/webhooks/create-webhook-dialog.tsx:228
+msgid "A secret that will be sent to your URL so you can verify that the request has been sent by Documenso"
+msgstr "Un secreto que se enviará a tu URL para que puedas verificar que la solicitud ha sido enviada por Documenso"
+
+#: apps/web/src/app/(dashboard)/settings/webhooks/[id]/page.tsx:196
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/[id]/page.tsx:198
+msgid "A secret that will be sent to your URL so you can verify that the request has been sent by Documenso."
+msgstr "Un secreto que se enviará a tu URL para que puedas verificar que la solicitud ha sido enviada por Documenso."
+
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:64
+msgid "A stable internet connection"
+msgstr "Una conexión a Internet estable"
+
+#: apps/web/src/components/forms/public-profile-form.tsx:198
+msgid "A unique URL to access your profile"
+msgstr "Una URL única para acceder a tu perfil"
+
+#: apps/web/src/components/(teams)/dialogs/create-team-dialog.tsx:206
+#: apps/web/src/components/(teams)/forms/update-team-form.tsx:179
+msgid "A unique URL to identify your team"
+msgstr "Una URL única para identificar tu equipo"
+
+#: apps/web/src/components/(teams)/dialogs/add-team-email-dialog.tsx:137
+msgid "A verification email will be sent to the provided email."
+msgstr "Se enviará un correo electrónico de verificación a la dirección proporcionada."
+
+#: apps/web/src/app/(dashboard)/settings/teams/accept-team-invitation-button.tsx:46
+msgid "Accept"
+msgstr "Aceptar"
+
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:33
+msgid "Acceptance and Consent"
+msgstr "Aceptación y Consentimiento"
+
+#: apps/web/src/app/(dashboard)/settings/teams/accept-team-invitation-button.tsx:26
+msgid "Accepted team invitation"
+msgstr "Invitación de equipo aceptada"
+
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:128
+msgid "Account Authentication"
+msgstr "Autenticación de Cuenta"
+
+#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:51
+#: apps/web/src/app/(dashboard)/settings/profile/delete-account-dialog.tsx:48
+msgid "Account deleted"
+msgstr "Cuenta eliminada"
+
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:119
+msgid "Account Re-Authentication"
+msgstr "Re-autenticación de Cuenta"
+
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:139
+msgid "Acknowledgment"
+msgstr "Reconocimiento"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:108
+#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-data-table.tsx:100
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:123
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:164
+#: apps/web/src/app/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx:118
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/data-table.tsx:46
+msgid "Action"
+msgstr "Acción"
+
+#: apps/web/src/app/(dashboard)/documents/data-table.tsx:85
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:181
+#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:140
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:133
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:142
+#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:118
+#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:127
+msgid "Actions"
+msgstr "Acciones"
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:107
+#: apps/web/src/components/(teams)/tables/teams-member-page-data-table.tsx:76
+#: apps/web/src/components/(teams)/tables/user-settings-teams-page-data-table.tsx:71
+msgid "Active"
+msgstr "Activo"
+
+#: apps/web/src/app/(dashboard)/admin/stats/page.tsx:68
+msgid "Active Subscriptions"
+msgstr "Suscripciones Activas"
+
+#: apps/web/src/components/(teams)/dialogs/add-team-email-dialog.tsx:189
+msgid "Add"
+msgstr "Agregar"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:177
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:88
+msgid "Add all relevant fields for each recipient."
+msgstr "Agrega todos los campos relevantes para cada destinatario."
+
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:83
+msgid "Add all relevant placeholders for each recipient."
+msgstr "Agrega todos los marcadores de posición relevantes para cada destinatario."
+
+#: apps/web/src/app/(dashboard)/settings/security/page.tsx:62
+msgid "Add an authenticator to serve as a secondary authentication method for signing documents."
+msgstr "Agrega un autenticador para servir como método de autenticación secundario para firmar documentos."
+
+#: apps/web/src/app/(dashboard)/settings/security/page.tsx:57
+msgid "Add an authenticator to serve as a secondary authentication method when signing in, or when signing documents."
+msgstr "Agrega un autenticador para servir como método de autenticación secundario al iniciar sesión o al firmar documentos."
+
+#: apps/web/src/components/(teams)/dialogs/add-team-email-dialog.tsx:125
+msgid "Add email"
+msgstr "Agregar correo electrónico"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:176
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:87
+msgid "Add Fields"
+msgstr "Agregar Campos"
+
+#: apps/web/src/components/(teams)/dialogs/invite-team-member-dialog.tsx:364
+msgid "Add more"
+msgstr "Agregar más"
+
+#: apps/web/src/app/(dashboard)/settings/security/passkeys/create-passkey-dialog.tsx:146
+#: apps/web/src/app/(dashboard)/settings/security/passkeys/create-passkey-dialog.tsx:154
+msgid "Add passkey"
+msgstr "Agregar clave"
+
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:82
+msgid "Add Placeholders"
+msgstr "Agregar Marcadores de posición"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:171
+msgid "Add Signers"
+msgstr "Agregar Firmantes"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:180
+#~ msgid "Add Subject"
+#~ msgstr "Add Subject"
+
+#: apps/web/src/components/(teams)/dialogs/add-team-email-dialog.tsx:133
+msgid "Add team email"
+msgstr "Agregar correo electrónico del equipo"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:172
+msgid "Add the people who will sign the document."
+msgstr "Agrega a las personas que firmarán el documento."
+
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:220
+msgid "Add the recipients to create the document with"
+msgstr "Agrega los destinatarios con los que crear el documento"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:181
+#~ msgid "Add the subject and message you wish to send to signers."
+#~ msgstr "Add the subject and message you wish to send to signers."
+
+#: apps/web/src/components/(teams)/dialogs/create-team-checkout-dialog.tsx:152
+msgid "Adding and removing seats will adjust your invoice accordingly."
+msgstr "Agregar y eliminar asientos ajustará tu factura en consecuencia."
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/branding-preferences.tsx:303
+msgid "Additional brand information to display at the bottom of emails"
+msgstr "Información adicional de la marca para mostrar al final de los correos electrónicos"
+
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/page.tsx:59
+msgid "Admin Actions"
+msgstr "Acciones Administrativas"
+
+#: apps/web/src/components/(dashboard)/layout/menu-switcher.tsx:262
+msgid "Admin panel"
+msgstr "Panel administrativo"
+
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:129
+msgid "After signing a document electronically, you will be provided the opportunity to view, download, and print the document for your records. It is highly recommended that you retain a copy of all electronically signed documents for your personal records. We will also retain a copy of the signed document for our records however we may not be able to provide you with a copy of the signed document after a certain period of time."
+msgstr "Después de firmar un documento electrónicamente, se le dará la oportunidad de ver, descargar e imprimir el documento para sus registros. Se recomienda encarecidamente que conserve una copia de todos los documentos firmados electrónicamente para sus registros personales. También mantendremos una copia del documento firmado para nuestros registros, sin embargo, es posible que no podamos proporcionarle una copia del documento firmado después de un cierto período de tiempo."
+
+#: apps/web/src/components/formatter/document-status.tsx:46
+msgid "All"
+msgstr "Todos"
+
+#: apps/web/src/components/(dashboard)/common/command-menu.tsx:42
+msgid "All documents"
+msgstr "Todos los documentos"
+
+#: apps/web/src/app/(dashboard)/documents/empty-state.tsx:35
+msgid "All documents have been processed. Any new documents that are sent or received will show here."
+msgstr "Todos los documentos han sido procesados. Cualquier nuevo documento que se envíe o reciba aparecerá aquí."
+
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:81
+msgid "All documents related to the electronic signing process will be provided to you electronically through our platform or via email. It is your responsibility to ensure that your email address is current and that you can receive and open our emails."
+msgstr "Todos los documentos relacionados con el proceso de firma electrónica se le proporcionarán electrónicamente a través de nuestra plataforma o por correo electrónico. Es su responsabilidad asegurarse de que su dirección de correo electrónico esté actualizada y que pueda recibir y abrir nuestros correos electrónicos."
+
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:145
+msgid "All inserted signatures will be voided"
+msgstr "Todas las firmas insertadas serán anuladas"
+
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:148
+msgid "All recipients will be notified"
+msgstr "Todos los destinatarios serán notificados"
+
+#: apps/web/src/components/document/document-recipient-link-copy-dialog.tsx:62
+msgid "All signing links have been copied to your clipboard."
+msgstr "Todos los enlaces de firma se han copiado en su portapapeles."
+
+#: apps/web/src/components/(dashboard)/common/command-menu.tsx:57
+msgid "All templates"
+msgstr "Todas las plantillas"
+
+#: apps/web/src/components/(dashboard)/period-selector/period-selector.tsx:55
+msgid "All Time"
+msgstr "Todo el Tiempo"
+
+#: apps/web/src/app/(dashboard)/settings/security/page.tsx:110
+msgid "Allows authenticating using biometrics, password managers, hardware keys, etc."
+msgstr "Permite autenticarse usando biometría, administradores de contraseñas, claves de hardware, etc."
+
+#: apps/web/src/components/forms/v2/signup.tsx:423
+msgid "Already have an account? <0>Sign in instead0>"
+msgstr "¿Ya tienes una cuenta? <0>Iniciar sesión en su lugar0>"
+
+#: apps/web/src/components/(teams)/tables/team-billing-invoices-data-table.tsx:86
+msgid "Amount"
+msgstr "Cantidad"
+
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:48
+msgid "An electronic signature provided by you on our platform, achieved through clicking through to a document and entering your name, or any other electronic signing method we provide, is legally binding. It carries the same weight and enforceability as a manual signature written with ink on paper."
+msgstr "Una firma electrónica proporcionada por usted en nuestra plataforma, lograda mediante el clic en un documento e ingresando su nombre, o cualquier otro método de firma electrónica que proporcionemos, es legalmente vinculante. Tiene el mismo peso y exigibilidad que una firma manual escrita con tinta en papel."
+
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:67
+msgid "An email account"
+msgstr "Una cuenta de correo electrónico"
+
+#: apps/web/src/components/(teams)/dialogs/invite-team-member-dialog.tsx:262
+msgid "An email containing an invitation will be sent to each member."
+msgstr "Un correo electrónico que contiene una invitación se enviará a cada miembro."
+
+#: apps/web/src/components/(teams)/dialogs/transfer-team-dialog.tsx:109
+msgid "An email requesting the transfer of this team has been sent."
+msgstr "Se ha enviado un correo electrónico solicitando la transferencia de este equipo."
+
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx:60
+#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:83
+#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:60
+#: apps/web/src/app/(dashboard)/settings/profile/delete-account-dialog.tsx:57
+#: apps/web/src/app/(signing)/sign/[token]/complete/claim-account.tsx:92
+#: apps/web/src/components/forms/avatar-image.tsx:116
+#: apps/web/src/components/forms/password.tsx:78
+#: apps/web/src/components/forms/profile.tsx:81
+#: apps/web/src/components/forms/reset-password.tsx:81
+#: apps/web/src/components/forms/signup.tsx:107
+#: apps/web/src/components/forms/token.tsx:137
+#: apps/web/src/components/forms/v2/signup.tsx:154
+msgid "An error occurred"
+msgstr "Ocurrió un error"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:269
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:201
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:235
+msgid "An error occurred while adding signers."
+msgstr "Ocurrió un error al agregar firmantes."
+
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:304
+msgid "An error occurred while adding the fields."
+msgstr "Ocurrió un error al agregar los campos."
+
+#: apps/web/src/app/(signing)/sign/[token]/auto-sign.tsx:154
+msgid "An error occurred while auto-signing the document, some fields may not be signed. Please review and manually sign any remaining fields."
+msgstr "Se produjo un error al firmar automáticamente el documento, es posible que algunos campos no estén firmados. Por favor, revise y firme manualmente cualquier campo restante."
+
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:176
+msgid "An error occurred while creating document from template."
+msgstr "Ocurrió un error al crear el documento a partir de la plantilla."
+
+#: apps/web/src/components/(dashboard)/settings/webhooks/create-webhook-dialog.tsx:102
+msgid "An error occurred while creating the webhook. Please try again."
+msgstr "Ocurrió un error al crear el webhook. Por favor, intenta de nuevo."
+
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:124
+msgid "An error occurred while disabling direct link signing."
+msgstr "Ocurrió un error al desactivar la firma de enlace directo."
+
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-button.tsx:64
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:92
+#: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:76
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:107
+msgid "An error occurred while downloading your document."
+msgstr "Ocurrió un error al descargar tu documento."
+
+#: apps/web/src/app/(dashboard)/templates/duplicate-template-dialog.tsx:52
+msgid "An error occurred while duplicating template."
+msgstr "Ocurrió un error al duplicar la plantilla."
+
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:123
+msgid "An error occurred while enabling direct link signing."
+msgstr "Ocurrió un error al habilitar la firma de enlace directo."
+
+#: apps/web/src/components/(teams)/dialogs/transfer-team-dialog.tsx:299
+msgid "An error occurred while loading team members. Please try again later."
+msgstr "Ocurrió un error al cargar los miembros del equipo. Por favor intenta de nuevo más tarde."
+
+#: apps/web/src/app/(dashboard)/documents/move-document-dialog.tsx:58
+msgid "An error occurred while moving the document."
+msgstr "Ocurrió un error al mover el documento."
+
+#: apps/web/src/app/(dashboard)/templates/move-template-dialog.tsx:57
+msgid "An error occurred while moving the template."
+msgstr "Ocurrió un error al mover la plantilla."
+
+#: apps/web/src/app/(signing)/sign/[token]/initials-field.tsx:116
+msgid "An error occurred while removing the field."
+msgstr "Ocurrió un error mientras se eliminaba el campo."
+
+#: apps/web/src/app/(signing)/sign/[token]/checkbox-field.tsx:152
+#: apps/web/src/app/(signing)/sign/[token]/date-field.tsx:126
+#: apps/web/src/app/(signing)/sign/[token]/dropdown-field.tsx:137
+#: apps/web/src/app/(signing)/sign/[token]/email-field.tsx:110
+#: apps/web/src/app/(signing)/sign/[token]/name-field.tsx:148
+#: apps/web/src/app/(signing)/sign/[token]/number-field.tsx:195
+#: apps/web/src/app/(signing)/sign/[token]/radio-field.tsx:129
+#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:173
+msgid "An error occurred while removing the signature."
+msgstr "Ocurrió un error al eliminar la firma."
+
+#: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:196
+msgid "An error occurred while removing the text."
+msgstr "Ocurrió un error al eliminar el texto."
+
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:350
+msgid "An error occurred while sending the document."
+msgstr "Ocurrió un error al enviar el documento."
+
+#: apps/web/src/components/forms/send-confirmation-email.tsx:63
+msgid "An error occurred while sending your confirmation email"
+msgstr "Ocurrió un error al enviar tu correo electrónico de confirmación"
+
+#: apps/web/src/app/(signing)/sign/[token]/checkbox-field.tsx:123
+#: apps/web/src/app/(signing)/sign/[token]/date-field.tsx:100
+#: apps/web/src/app/(signing)/sign/[token]/dropdown-field.tsx:106
+#: apps/web/src/app/(signing)/sign/[token]/email-field.tsx:84
+#: apps/web/src/app/(signing)/sign/[token]/initials-field.tsx:90
+#: apps/web/src/app/(signing)/sign/[token]/name-field.tsx:122
+#: apps/web/src/app/(signing)/sign/[token]/number-field.tsx:150
+#: apps/web/src/app/(signing)/sign/[token]/radio-field.tsx:102
+#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:147
+#: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:168
+msgid "An error occurred while signing the document."
+msgstr "Ocurrió un error al firmar el documento."
+
+#: apps/web/src/app/(dashboard)/settings/billing/billing-plans.tsx:63
+msgid "An error occurred while trying to create a checkout session."
+msgstr "Ocurrió un error al intentar crear una sesión de pago."
+
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:235
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:170
+msgid "An error occurred while updating the document settings."
+msgstr "Ocurrió un error al actualizar la configuración del documento."
+
+#: apps/web/src/components/forms/team-document-settings.tsx:78
+#~ msgid "An error occurred while updating the global team settings."
+#~ msgstr "An error occurred while updating the global team settings."
+
+#: apps/web/src/app/(signing)/sign/[token]/checkbox-field.tsx:213
+msgid "An error occurred while updating the signature."
+msgstr "Ocurrió un error al actualizar la firma."
+
+#: apps/web/src/app/(dashboard)/admin/users/[id]/page.tsx:79
+msgid "An error occurred while updating your profile."
+msgstr "Ocurrió un error al actualizar tu perfil."
+
+#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:113
+msgid "An error occurred while uploading your document."
+msgstr "Ocurrió un error al subir tu documento."
+
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx:66
+#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:89
+#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:66
+#: apps/web/src/app/(dashboard)/settings/profile/delete-account-dialog.tsx:63
+#: apps/web/src/app/(signing)/sign/[token]/complete/claim-account.tsx:98
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/team-transfer-status.tsx:54
+#: apps/web/src/components/(dashboard)/common/command-menu.tsx:301
+#: apps/web/src/components/(dashboard)/settings/token/delete-token-dialog.tsx:97
+#: apps/web/src/components/(dashboard)/settings/webhooks/delete-webhook-dialog.tsx:88
+#: apps/web/src/components/(teams)/dialogs/add-team-email-dialog.tsx:100
+#: apps/web/src/components/(teams)/dialogs/create-team-dialog.tsx:105
+#: apps/web/src/components/(teams)/dialogs/delete-team-dialog.tsx:84
+#: apps/web/src/components/(teams)/dialogs/delete-team-member-dialog.tsx:58
+#: apps/web/src/components/(teams)/dialogs/invite-team-member-dialog.tsx:158
+#: apps/web/src/components/(teams)/dialogs/leave-team-dialog.tsx:58
+#: apps/web/src/components/(teams)/dialogs/transfer-team-dialog.tsx:116
+#: apps/web/src/components/(teams)/dialogs/update-team-email-dialog.tsx:89
+#: apps/web/src/components/(teams)/dialogs/update-team-member-dialog.tsx:100
+#: apps/web/src/components/(teams)/forms/update-team-form.tsx:134
+#: apps/web/src/components/forms/avatar-image.tsx:94
+#: apps/web/src/components/forms/avatar-image.tsx:122
+#: apps/web/src/components/forms/password.tsx:84
+#: apps/web/src/components/forms/profile.tsx:87
+#: apps/web/src/components/forms/public-profile-claim-dialog.tsx:113
+#: apps/web/src/components/forms/public-profile-form.tsx:104
+#: apps/web/src/components/forms/reset-password.tsx:87
+#: apps/web/src/components/forms/signin.tsx:248
+#: apps/web/src/components/forms/signin.tsx:256
+#: apps/web/src/components/forms/signin.tsx:270
+#: apps/web/src/components/forms/signin.tsx:285
+#: apps/web/src/components/forms/signin.tsx:301
+#: apps/web/src/components/forms/signup.tsx:113
+#: apps/web/src/components/forms/signup.tsx:128
+#: apps/web/src/components/forms/signup.tsx:142
+#: apps/web/src/components/forms/token.tsx:143
+#: apps/web/src/components/forms/v2/signup.tsx:160
+#: apps/web/src/components/forms/v2/signup.tsx:183
+#: apps/web/src/components/forms/v2/signup.tsx:197
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:141
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:178
+msgid "An unknown error occurred"
+msgstr "Ocurrió un error desconocido"
+
+#: apps/web/src/components/(teams)/dialogs/transfer-team-dialog.tsx:260
+msgid "Any payment methods attached to this team will remain attached to this team. Please contact us if you need to update this information."
+msgstr "Cualquier método de pago adjunto a este equipo permanecerá adjunto a este equipo. Por favor, contáctanos si necesitas actualizar esta información."
+
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:225
+msgid "Any Source"
+msgstr "Cualquier fuente"
+
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:205
+msgid "Any Status"
+msgstr "Cualquier estado"
+
+#: apps/web/src/app/(dashboard)/settings/tokens/page.tsx:22
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx:42
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx:56
+#: apps/web/src/components/(dashboard)/settings/layout/desktop-nav.tsx:90
+#: apps/web/src/components/(dashboard)/settings/layout/mobile-nav.tsx:93
+#: apps/web/src/components/(teams)/settings/layout/desktop-nav.tsx:96
+#: apps/web/src/components/(teams)/settings/layout/mobile-nav.tsx:105
+msgid "API Tokens"
+msgstr "Tokens de API"
+
+#: apps/web/src/app/(dashboard)/admin/stats/page.tsx:74
+msgid "App Version"
+msgstr "Versión de la Aplicación"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-button.tsx:89
+#: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:120
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:146
+#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:125
+msgid "Approve"
+msgstr "Aprobar"
+
+#: apps/web/src/app/(signing)/sign/[token]/form.tsx:129
+msgid "Approve Document"
+msgstr "Aprobar Documento"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:94
+msgid "Approved"
+msgstr "Aprobado"
+
+#: apps/web/src/components/(dashboard)/settings/token/delete-token-dialog.tsx:129
+msgid "Are you sure you want to delete this token?"
+msgstr "¿Estás seguro de que deseas eliminar este token?"
+
+#: apps/web/src/app/(signing)/sign/[token]/reject-document-dialog.tsx:120
+msgid "Are you sure you want to reject this document? This action cannot be undone."
+msgstr "Are you sure you want to reject this document? This action cannot be undone."
+
+#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:188
+msgid "Are you sure you want to remove the <0>{passkeyName}0> passkey."
+msgstr "¿Está seguro de que desea eliminar la clave de acceso <0>{passkeyName}0>?"
+
+#: apps/web/src/components/(teams)/dialogs/delete-team-dialog.tsx:126
+msgid "Are you sure you wish to delete this team?"
+msgstr "¿Estás seguro de que deseas eliminar este equipo?"
+
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:98
+#: apps/web/src/app/(dashboard)/settings/teams/team-email-usage.tsx:94
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:455
+#: apps/web/src/components/(teams)/dialogs/delete-team-member-dialog.tsx:81
+#: apps/web/src/components/(teams)/dialogs/leave-team-dialog.tsx:81
+#: apps/web/src/components/(teams)/dialogs/remove-team-email-dialog.tsx:116
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:439
+msgid "Are you sure?"
+msgstr "¿Estás seguro?"
+
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/admin-actions.tsx:66
+msgid "Attempts sealing the document again, useful for after a code change has occurred to resolve an erroneous document."
+msgstr "Intenta sellar el documento de nuevo, útil después de que se haya producido un cambio de código para resolver un documento erróneo."
+
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:130
+msgid "Audit Log"
+msgstr "Registro de Auditoría"
+
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:198
+msgid "Authentication Level"
+msgstr "Nivel de Autenticación"
+
+#: apps/web/src/app/(recipient)/d/[token]/signing-auth-page.tsx:41
+#: apps/web/src/app/(signing)/sign/[token]/signing-auth-page.tsx:52
+msgid "Authentication required"
+msgstr "Se requiere autenticación"
+
+#: apps/web/src/components/forms/avatar-image.tsx:145
+msgid "Avatar"
+msgstr "Avatar"
+
+#: apps/web/src/components/forms/avatar-image.tsx:107
+msgid "Avatar Updated"
+msgstr "Avatar actualizado"
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:127
+msgid "Awaiting email confirmation"
+msgstr "Esperando confirmación de correo electrónico"
+
+#: apps/web/src/app/(recipient)/d/[token]/sign-direct-template.tsx:369
+#: apps/web/src/components/(dashboard)/settings/layout/activity-back.tsx:20
+#: apps/web/src/components/forms/v2/signup.tsx:509
+msgid "Back"
+msgstr "Atrás"
+
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:164
+msgid "Back to Documents"
+msgstr "Volver a Documentos"
+
+#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:146
+msgid "Background Color"
+msgstr "Color de Fondo"
+
+#: apps/web/src/components/forms/2fa/disable-authenticator-app-dialog.tsx:167
+#: apps/web/src/components/forms/signin.tsx:485
+msgid "Backup Code"
+msgstr "Código de respaldo"
+
+#: apps/web/src/components/forms/2fa/enable-authenticator-app-dialog.tsx:164
+msgid "Backup codes"
+msgstr "Códigos de respaldo"
+
+#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:74
+msgid "Banner Updated"
+msgstr "Banner actualizado"
+
+#: apps/web/src/components/forms/v2/signup.tsx:472
+msgid "Basic details"
+msgstr "Detalles básicos"
+
+#: apps/web/src/app/(dashboard)/settings/billing/page.tsx:74
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/billing/page.tsx:61
+#: apps/web/src/components/(dashboard)/settings/layout/desktop-nav.tsx:117
+#: apps/web/src/components/(dashboard)/settings/layout/mobile-nav.tsx:120
+#: apps/web/src/components/(teams)/settings/layout/desktop-nav.tsx:123
+#: apps/web/src/components/(teams)/settings/layout/mobile-nav.tsx:132
+msgid "Billing"
+msgstr "Facturación"
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/page.tsx:42
+msgid "Branding Preferences"
+msgstr "Preferencias de marca"
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/branding-preferences.tsx:102
+msgid "Branding preferences updated"
+msgstr "Preferencias de marca actualizadas"
+
+#: apps/web/src/app/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx:99
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/data-table.tsx:48
+msgid "Browser"
+msgstr "Navegador"
+
+#: apps/web/src/components/document/document-recipient-link-copy-dialog.tsx:145
+msgid "Bulk Copy"
+msgstr "Copia masiva"
+
+#: apps/web/src/components/(teams)/dialogs/invite-team-member-dialog.tsx:279
+msgid "Bulk Import"
+msgstr "Importación masiva"
+
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:156
+msgid "By deleting this document, the following will occur:"
+msgstr "Al eliminar este documento, ocurrirá lo siguiente:"
+
+#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-2fa.tsx:114
+msgid "By enabling 2FA, you will be required to enter a code from your authenticator app every time you sign in."
+msgstr "Al habilitar la 2FA, se requerirá ingresar un código de su aplicación de autenticación cada vez que inicie sesión."
+
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:142
+msgid "By proceeding to use the electronic signature service provided by Documenso, you affirm that you have read and understood this disclosure. You agree to all terms and conditions related to the use of electronic signatures and electronic transactions as outlined herein."
+msgstr "Al continuar utilizando el servicio de firma electrónica proporcionado por Documenso, usted afirma que ha leído y entendido esta divulgación. Acepta todos los términos y condiciones relacionados con el uso de firmas electrónicas y transacciones electrónicas según lo detallado aquí."
+
+#: apps/web/src/components/general/signing-disclosure.tsx:14
+msgid "By proceeding with your electronic signature, you acknowledge and consent that it will be used to sign the given document and holds the same legal validity as a handwritten signature. By completing the electronic signing process, you affirm your understanding and acceptance of these conditions."
+msgstr "Al continuar con su firma electrónica, usted reconoce y consiente que se utilizará para firmar el documento dado y tiene la misma validez legal que una firma manuscrita. Al completar el proceso de firma electrónica, usted afirma su comprensión y aceptación de estas condiciones."
+
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:92
+msgid "By using the electronic signature feature, you are consenting to conduct transactions and receive disclosures electronically. You acknowledge that your electronic signature on documents is binding and that you accept the terms outlined in the documents you are signing."
+msgstr "Al utilizar la función de firma electrónica, usted está consintiendo realizar transacciones y recibir divulgaciones electrónicamente. Reconoce que su firma electrónica en los documentos es vinculante y que acepta los términos esbozados en los documentos que está firmando."
+
+#: apps/web/src/app/(dashboard)/documents/_action-items/resend-document.tsx:186
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:190
+#: apps/web/src/app/(dashboard)/documents/duplicate-document-dialog.tsx:108
+#: apps/web/src/app/(dashboard)/documents/move-document-dialog.tsx:120
+#: apps/web/src/app/(dashboard)/settings/security/passkeys/create-passkey-dialog.tsx:248
+#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:157
+#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:198
+#: apps/web/src/app/(dashboard)/settings/teams/team-email-usage.tsx:109
+#: apps/web/src/app/(dashboard)/templates/delete-template-dialog.tsx:81
+#: apps/web/src/app/(dashboard)/templates/duplicate-template-dialog.tsx:78
+#: apps/web/src/app/(dashboard)/templates/move-template-dialog.tsx:119
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:472
+#: apps/web/src/app/(signing)/sign/[token]/auto-sign.tsx:220
+#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-2fa.tsx:178
+#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-account.tsx:71
+#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-passkey.tsx:164
+#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-passkey.tsx:189
+#: apps/web/src/app/(signing)/sign/[token]/form.tsx:151
+#: apps/web/src/app/(signing)/sign/[token]/form.tsx:220
+#: apps/web/src/app/(signing)/sign/[token]/name-field.tsx:215
+#: apps/web/src/app/(signing)/sign/[token]/number-field.tsx:328
+#: apps/web/src/app/(signing)/sign/[token]/reject-document-dialog.tsx:153
+#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:113
+#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:248
+#: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:335
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/team-transfer-status.tsx:121
+#: apps/web/src/components/(dashboard)/settings/token/delete-token-dialog.tsx:176
+#: apps/web/src/components/(dashboard)/settings/webhooks/create-webhook-dialog.tsx:242
+#: apps/web/src/components/(dashboard)/settings/webhooks/delete-webhook-dialog.tsx:163
+#: apps/web/src/components/(teams)/dialogs/add-team-email-dialog.tsx:185
+#: apps/web/src/components/(teams)/dialogs/create-team-checkout-dialog.tsx:166
+#: apps/web/src/components/(teams)/dialogs/create-team-dialog.tsx:218
+#: apps/web/src/components/(teams)/dialogs/delete-team-dialog.tsx:163
+#: apps/web/src/components/(teams)/dialogs/delete-team-member-dialog.tsx:104
+#: apps/web/src/components/(teams)/dialogs/invite-team-member-dialog.tsx:369
+#: apps/web/src/components/(teams)/dialogs/leave-team-dialog.tsx:102
+#: apps/web/src/components/(teams)/dialogs/remove-team-email-dialog.tsx:150
+#: apps/web/src/components/(teams)/dialogs/transfer-team-dialog.tsx:278
+#: apps/web/src/components/(teams)/dialogs/update-team-email-dialog.tsx:162
+#: apps/web/src/components/(teams)/dialogs/update-team-member-dialog.tsx:187
+#: apps/web/src/components/forms/2fa/enable-authenticator-app-dialog.tsx:257
+#: apps/web/src/components/forms/2fa/view-recovery-codes-dialog.tsx:163
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:450
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: apps/web/src/app/(dashboard)/settings/security/passkeys/create-passkey-dialog.tsx:226
+msgid "Cancelled by user"
+msgstr "Cancelado por el usuario"
+
+#: apps/web/src/app/(dashboard)/admin/stats/page.tsx:132
+msgid "Charts"
+msgstr "Gráficas"
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/documents/page.tsx:32
+#~ msgid "Check out the documentaton for the <0>global team settings0>."
+#~ msgstr "Check out the documentaton for the <0>global team settings0>."
+
+#: apps/web/src/components/(teams)/dialogs/create-team-checkout-dialog.tsx:179
+msgid "Checkout"
+msgstr "Checkout"
+
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:271
+msgid "Choose an existing recipient from below to continue"
+msgstr "Elija un destinatario existente de abajo para continuar"
+
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:267
+msgid "Choose Direct Link Recipient"
+msgstr "Elija el destinatario del enlace directo"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:182
+msgid "Choose how the document will reach recipients"
+msgstr "Elige cómo el documento llegará a los destinatarios"
+
+#: apps/web/src/components/forms/token.tsx:200
+msgid "Choose..."
+msgstr "Elija..."
+
+#: apps/web/src/app/(signing)/sign/[token]/complete/claim-account.tsx:160
+msgid "Claim account"
+msgstr "Reclamar cuenta"
+
+#: apps/web/src/components/forms/v2/signup.tsx:481
+msgid "Claim username"
+msgstr "Reclamar nombre de usuario"
+
+#: apps/web/src/app/(dashboard)/documents/upcoming-profile-claim-teaser.tsx:28
+msgid "Claim your profile later"
+msgstr "Reclame su perfil más tarde"
+
+#: apps/web/src/components/forms/v2/signup.tsx:279
+msgid "Claim your username now"
+msgstr "Reclame su nombre de usuario ahora"
+
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:130
+msgid "Click here to get started"
+msgstr "Haga clic aquí para comenzar"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recent-activity.tsx:78
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:118
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:68
+#: apps/web/src/components/document/document-history-sheet.tsx:133
+msgid "Click here to retry"
+msgstr "Haga clic aquí para reintentar"
+
+#: apps/web/src/components/(teams)/dialogs/invite-team-member-dialog.tsx:392
+msgid "Click here to upload"
+msgstr "Haga clic aquí para subir"
+
+#: apps/web/src/components/(dashboard)/avatar/avatar-with-recipient.tsx:52
+#: apps/web/src/components/(dashboard)/avatar/avatar-with-recipient.tsx:65
+msgid "Click to copy signing link for sending to recipient"
+msgstr "Haga clic para copiar el enlace de firma para enviar al destinatario"
+
+#: apps/web/src/app/(recipient)/d/[token]/sign-direct-template.tsx:175
+#: apps/web/src/app/(signing)/sign/[token]/form.tsx:115
+#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:440
+#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:319
+msgid "Click to insert field"
+msgstr "Haga clic para insertar campo"
+
+#: apps/web/src/app/(dashboard)/templates/new-template-dialog.tsx:126
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:389
+#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-2fa.tsx:125
+#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-passkey.tsx:138
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/team-transfer-status.tsx:121
+#: apps/web/src/components/document/document-recipient-link-copy-dialog.tsx:140
+#: apps/web/src/components/forms/2fa/enable-authenticator-app-dialog.tsx:180
+#: apps/web/src/components/forms/2fa/view-recovery-codes-dialog.tsx:102
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:319
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:423
+msgid "Close"
+msgstr "Cerrar"
+
+#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:61
+#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:430
+#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:309
+#: apps/web/src/components/forms/v2/signup.tsx:534
+msgid "Complete"
+msgstr "Completo"
+
+#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:70
+msgid "Complete Approval"
+msgstr "Completar Aprobación"
+
+#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:69
+msgid "Complete Signing"
+msgstr "Completar Firmado"
+
+#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:68
+msgid "Complete Viewing"
+msgstr "Completar Visualización"
+
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:208
+#: apps/web/src/components/(dashboard)/avatar/stack-avatars-with-tooltip.tsx:77
+#: apps/web/src/components/formatter/document-status.tsx:28
+msgid "Completed"
+msgstr "Completado"
+
+#: apps/web/src/components/(dashboard)/common/command-menu.tsx:48
+msgid "Completed documents"
+msgstr "Documentos completados"
+
+#: apps/web/src/app/(dashboard)/admin/stats/page.tsx:94
+msgid "Completed Documents"
+msgstr "Documentos Completados"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:167
+msgid "Configure general settings for the document."
+msgstr "Configurar ajustes generales para el documento."
+
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:78
+msgid "Configure general settings for the template."
+msgstr "Configurar ajustes generales para la plantilla."
+
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:337
+msgid "Configure template"
+msgstr "Configurar plantilla"
+
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:481
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:460
+msgid "Confirm"
+msgstr "Confirmar"
+
+#: apps/web/src/components/(teams)/dialogs/transfer-team-dialog.tsx:207
+msgid "Confirm by typing <0>{confirmTransferMessage}0>"
+msgstr "Confirme escribiendo <0>{confirmTransferMessage}0>"
+
+#: apps/web/src/components/(teams)/dialogs/delete-team-dialog.tsx:149
+msgid "Confirm by typing <0>{deleteMessage}0>"
+msgstr "Confirme escribiendo <0>{deleteMessage}0>"
+
+#: apps/web/src/components/(dashboard)/settings/token/delete-token-dialog.tsx:152
+#: apps/web/src/components/(dashboard)/settings/webhooks/delete-webhook-dialog.tsx:140
+msgid "Confirm by typing: <0>{deleteMessage}0>"
+msgstr "Confirme escribiendo: <0>{deleteMessage}0>"
+
+#: apps/web/src/app/(dashboard)/settings/profile/delete-account-dialog.tsx:157
+msgid "Confirm Deletion"
+msgstr "Confirmar Eliminación"
+
+#: apps/web/src/app/(unauthenticated)/unverified-account/page.tsx:19
+msgid "Confirm email"
+msgstr "Confirmar correo electrónico"
+
+#: apps/web/src/components/forms/send-confirmation-email.tsx:53
+msgid "Confirmation email sent"
+msgstr "Correo electrónico de confirmación enviado"
+
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:89
+msgid "Consent to Electronic Transactions"
+msgstr "Consentimiento para Transacciones Electrónicas"
+
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:151
+msgid "Contact Information"
+msgstr "Información de Contacto"
+
+#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:189
+msgid "Content"
+msgstr "Contenido"
+
+#: apps/web/src/app/(dashboard)/settings/security/passkeys/create-passkey-dialog.tsx:252
+#: apps/web/src/app/(unauthenticated)/team/invite/[token]/page.tsx:135
+#: apps/web/src/app/(unauthenticated)/team/verify/email/[token]/page.tsx:69
+#: apps/web/src/app/(unauthenticated)/team/verify/email/[token]/page.tsx:143
+#: apps/web/src/app/(unauthenticated)/team/verify/transfer/[token]/page.tsx:72
+#: apps/web/src/app/(unauthenticated)/team/verify/transfer/[token]/page.tsx:122
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:328
+msgid "Continue"
+msgstr "Continuar"
+
+#: apps/web/src/app/(unauthenticated)/team/invite/[token]/page.tsx:141
+msgid "Continue to login"
+msgstr "Continuar con el inicio de sesión"
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:173
+msgid "Controls the default language of an uploaded document. This will be used as the language in email communications with the recipients."
+msgstr "Controla el idioma predeterminado de un documento cargado. Este se utilizará como el idioma en las comunicaciones por correo electrónico con los destinatarios."
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:141
+msgid "Controls the default visibility of an uploaded document."
+msgstr "Controla la visibilidad predeterminada de un documento cargado."
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:220
+msgid "Controls the formatting of the message that will be sent when inviting a recipient to sign a document. If a custom message has been provided while configuring the document, it will be used instead."
+msgstr "Controla el formato del mensaje que se enviará al invitar a un destinatario a firmar un documento. Si se ha proporcionado un mensaje personalizado al configurar el documento, se usará en su lugar."
+
+#: apps/web/src/components/document/document-recipient-link-copy-dialog.tsx:128
+msgid "Copied"
+msgstr "Copiado"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:162
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:77
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-badge.tsx:31
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:163
+#: apps/web/src/components/(dashboard)/avatar/avatar-with-recipient.tsx:40
+#: apps/web/src/components/document/document-recipient-link-copy-dialog.tsx:61
+#: apps/web/src/components/document/document-recipient-link-copy-dialog.tsx:117
+#: apps/web/src/components/forms/public-profile-form.tsx:117
+msgid "Copied to clipboard"
+msgstr "Copiado al portapapeles"
+
+#: apps/web/src/components/document/document-recipient-link-copy-dialog.tsx:123
+msgid "Copy"
+msgstr "Copiar"
+
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:169
+msgid "Copy sharable link"
+msgstr "Copiar enlace compartible"
+
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:397
+msgid "Copy Shareable Link"
+msgstr "Copiar enlace compartible"
+
+#: apps/web/src/components/document/document-recipient-link-copy-dialog.tsx:83
+msgid "Copy Signing Links"
+msgstr "Copiar enlaces de firma"
+
+#: apps/web/src/components/forms/token.tsx:288
+msgid "Copy token"
+msgstr "Copiar token"
+
+#: apps/web/src/app/(profile)/profile-header.tsx:83
+#: apps/web/src/components/(dashboard)/settings/webhooks/create-webhook-dialog.tsx:245
+msgid "Create"
+msgstr "Crear"
+
+#: apps/web/src/components/forms/v2/signup.tsx:264
+msgid "Create a new account"
+msgstr "Crear una nueva cuenta"
+
+#: apps/web/src/components/(teams)/dialogs/create-team-dialog.tsx:150
+msgid "Create a team to collaborate with your team members."
+msgstr "Crea un equipo para colaborar con los miembros de tu equipo."
+
+#: apps/web/src/app/(unauthenticated)/team/decline/[token]/page.tsx:106
+#: apps/web/src/app/(unauthenticated)/team/invite/[token]/page.tsx:111
+msgid "Create account"
+msgstr "Crear cuenta"
+
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:397
+msgid "Create and send"
+msgstr "Crear y enviar"
+
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:395
+msgid "Create as draft"
+msgstr "Crear como borrador"
+
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:355
+msgid "Create as pending"
+msgstr "Crear como pendiente"
+
+#: apps/web/src/app/(dashboard)/templates/[id]/template-direct-link-dialog-wrapper.tsx:37
+msgid "Create Direct Link"
+msgstr "Crear enlace directo"
+
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:202
+msgid "Create Direct Signing Link"
+msgstr "Crear enlace de firma directo"
+
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:214
+msgid "Create document from template"
+msgstr "Crear documento a partir de la plantilla"
+
+#: apps/web/src/app/(profile)/profile-header.tsx:79
+msgid "Create now"
+msgstr "Crear ahora"
+
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:352
+msgid "Create one automatically"
+msgstr "Crear uno automáticamente"
+
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:399
+msgid "Create signing links"
+msgstr "Crear enlaces de firma"
+
+#: apps/web/src/components/(dashboard)/layout/menu-switcher.tsx:181
+#: apps/web/src/components/(dashboard)/layout/menu-switcher.tsx:251
+#: apps/web/src/components/(teams)/dialogs/create-team-dialog.tsx:138
+#: apps/web/src/components/(teams)/dialogs/create-team-dialog.tsx:146
+msgid "Create team"
+msgstr "Crear equipo"
+
+#: apps/web/src/components/(teams)/dialogs/create-team-dialog.tsx:226
+msgid "Create Team"
+msgstr "Crear Equipo"
+
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:362
+msgid "Create the document as pending and ready to sign."
+msgstr "Crear el documento como pendiente y listo para firmar."
+
+#: apps/web/src/components/forms/token.tsx:250
+#: apps/web/src/components/forms/token.tsx:259
+msgid "Create token"
+msgstr "Crear token"
+
+#: apps/web/src/components/(dashboard)/settings/webhooks/create-webhook-dialog.tsx:125
+msgid "Create webhook"
+msgstr "Crear webhook"
+
+#: apps/web/src/components/(dashboard)/settings/webhooks/create-webhook-dialog.tsx:117
+msgid "Create Webhook"
+msgstr "Crear Webhook"
+
+#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:215
+msgid "Create your account and start using state-of-the-art document signing."
+msgstr "Crea tu cuenta y comienza a utilizar la firma de documentos de última generación."
+
+#: apps/web/src/components/forms/v2/signup.tsx:268
+msgid "Create your account and start using state-of-the-art document signing. Open and beautiful signing is within your grasp."
+msgstr "Crea tu cuenta y comienza a utilizar la firma de documentos de última generación. La firma abierta y hermosa está al alcance de tu mano."
+
+#: apps/web/src/app/(dashboard)/admin/documents/document-results.tsx:62
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-information.tsx:35
+#: apps/web/src/app/(dashboard)/documents/data-table.tsx:54
+#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table.tsx:65
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:109
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-information.tsx:34
+#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:56
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:274
+msgid "Created"
+msgstr "Creado"
+
+#: apps/web/src/app/(dashboard)/admin/subscriptions/page.tsx:35
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:111
+msgid "Created At"
+msgstr "Creado En"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-page-view.tsx:79
+msgid "Created by"
+msgstr "Creado por"
+
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/page.tsx:48
+#: apps/web/src/components/(teams)/tables/pending-user-teams-data-table.tsx:78
+msgid "Created on"
+msgstr "Creado el"
+
+#: apps/web/src/app/(dashboard)/settings/tokens/page.tsx:67
+#: apps/web/src/app/(dashboard)/settings/webhooks/page.tsx:88
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx:100
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/page.tsx:93
+msgid "Created on {0}"
+msgstr "Creado el {0}"
+
+#: apps/web/src/components/forms/password.tsx:107
+msgid "Current Password"
+msgstr "Contraseña actual"
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/billing/page.tsx:69
+msgid "Current plan: {0}"
+msgstr "Plan actual: {0}"
+
+#: apps/web/src/app/(dashboard)/settings/billing/billing-plans.tsx:28
+msgid "Daily"
+msgstr "Diario"
+
+#: apps/web/src/components/(dashboard)/common/command-menu.tsx:265
+msgid "Dark Mode"
+msgstr "Modo Oscuro"
+
+#: apps/web/src/app/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx:70
+#: apps/web/src/app/(signing)/sign/[token]/date-field.tsx:148
+msgid "Date"
+msgstr "Fecha"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-page-view.tsx:85
+msgid "Date created"
+msgstr "Fecha de creación"
+
+#: apps/web/src/app/(dashboard)/settings/teams/decline-team-invitation-button.tsx:47
+msgid "Decline"
+msgstr "Rechazar"
+
+#: apps/web/src/app/(dashboard)/settings/teams/decline-team-invitation-button.tsx:26
+msgid "Declined team invitation"
+msgstr "Invitación de equipo rechazada"
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:153
+msgid "Default Document Language"
+msgstr "Idioma predeterminado del documento"
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:117
+#: apps/web/src/components/(teams)/forms/update-team-form.tsx:195
+msgid "Default Document Visibility"
+msgstr "Visibilidad predeterminada del documento"
+
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:90
+msgid "delete"
+msgstr "eliminar"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:144
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:189
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:200
+#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:177
+#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:211
+#: apps/web/src/app/(dashboard)/settings/tokens/page.tsx:83
+#: apps/web/src/app/(dashboard)/settings/webhooks/page.tsx:100
+#: apps/web/src/app/(dashboard)/templates/data-table-action-dropdown.tsx:94
+#: apps/web/src/app/(dashboard)/templates/delete-template-dialog.tsx:90
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx:116
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/page.tsx:105
+#: apps/web/src/components/(dashboard)/settings/token/delete-token-dialog.tsx:121
+#: apps/web/src/components/(dashboard)/settings/webhooks/delete-webhook-dialog.tsx:109
+#: apps/web/src/components/(teams)/dialogs/delete-team-dialog.tsx:167
+#: apps/web/src/components/(teams)/dialogs/delete-team-member-dialog.tsx:113
+msgid "Delete"
+msgstr "Eliminar"
+
+#: apps/web/src/components/(dashboard)/settings/token/delete-token-dialog.tsx:56
+#: apps/web/src/components/(dashboard)/settings/webhooks/delete-webhook-dialog.tsx:54
+msgid "delete {0}"
+msgstr "eliminar {0}"
+
+#: apps/web/src/components/(teams)/dialogs/delete-team-dialog.tsx:50
+msgid "delete {teamName}"
+msgstr "eliminar {teamName}"
+
+#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:137
+msgid "Delete account"
+msgstr "Eliminar cuenta"
+
+#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:98
+#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:105
+#: apps/web/src/app/(dashboard)/settings/profile/delete-account-dialog.tsx:83
+#: apps/web/src/app/(dashboard)/settings/profile/delete-account-dialog.tsx:97
+#: apps/web/src/app/(dashboard)/settings/profile/delete-account-dialog.tsx:104
+msgid "Delete Account"
+msgstr "Eliminar Cuenta"
+
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx:135
+msgid "Delete document"
+msgstr "Eliminar documento"
+
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx:85
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx:98
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx:105
+msgid "Delete Document"
+msgstr "Eliminar Documento"
+
+#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:184
+msgid "Delete passkey"
+msgstr "Eliminar clave de paso"
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:197
+#: apps/web/src/components/(teams)/dialogs/delete-team-dialog.tsx:118
+msgid "Delete team"
+msgstr "Eliminar equipo"
+
+#: apps/web/src/components/(teams)/dialogs/delete-team-member-dialog.tsx:73
+msgid "Delete team member"
+msgstr "Eliminar miembro del equipo"
+
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx:88
+msgid "Delete the document. This action is irreversible so proceed with caution."
+msgstr "Eliminar el documento. Esta acción es irreversible, así que proceda con precaución."
+
+#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:87
+msgid "Delete the users account and all its contents. This action is irreversible and will cancel their subscription, so proceed with caution."
+msgstr "Eliminar la cuenta de usuario y todo su contenido. Esta acción es irreversible y cancelará su suscripción, así que proceda con cautela."
+
+#: apps/web/src/components/(dashboard)/settings/webhooks/delete-webhook-dialog.tsx:117
+msgid "Delete Webhook"
+msgstr "Eliminar Webhook"
+
+#: apps/web/src/app/(dashboard)/settings/profile/delete-account-dialog.tsx:86
+msgid "Delete your account and all its contents, including completed documents. This action is irreversible and will cancel your subscription, so proceed with caution."
+msgstr "Eliminar su cuenta y todo su contenido, incluidos documentos completados. Esta acción es irreversible y cancelará su suscripción, así que proceda con cuidado."
+
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/page.tsx:41
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:97
+msgid "Deleted"
+msgstr "Eliminado"
+
+#: apps/web/src/app/(dashboard)/settings/profile/delete-account-dialog.tsx:157
+msgid "Deleting account..."
+msgstr "Eliminando cuenta..."
+
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:178
+msgid "Details"
+msgstr "Detalles"
+
+#: apps/web/src/app/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx:75
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:234
+msgid "Device"
+msgstr "Dispositivo"
+
+#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:91
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-badge.tsx:46
+msgid "direct link"
+msgstr "enlace directo"
+
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:40
+#: apps/web/src/app/(dashboard)/templates/data-table-action-dropdown.tsx:79
+msgid "Direct link"
+msgstr "Enlace directo"
+
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:160
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:231
+msgid "Direct Link"
+msgstr "Enlace directo"
+
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-badge.tsx:46
+msgid "direct link disabled"
+msgstr "enlace directo deshabilitado"
+
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:363
+msgid "Direct Link Signing"
+msgstr "Firma de enlace directo"
+
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:115
+msgid "Direct link signing has been disabled"
+msgstr "La firma de enlace directo ha sido deshabilitada"
+
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:114
+msgid "Direct link signing has been enabled"
+msgstr "La firma de enlace directo ha sido habilitada"
+
+#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:95
+msgid "Direct link templates contain one dynamic recipient placeholder. Anyone with access to this link can sign the document, and it will then appear on your documents page."
+msgstr "Las plantillas de enlace directo contienen un marcador de posición de destinatario dinámico. Cualquiera que tenga acceso a este enlace puede firmar el documento, y luego aparecerá en su página de documentos."
+
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:142
+msgid "Direct template link deleted"
+msgstr "Enlace de plantilla directo eliminado"
+
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:228
+msgid "Direct template link usage exceeded ({0}/{1})"
+msgstr "El uso de enlace de plantilla directo excedió ({0}/{1})"
+
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:417
+msgid "Disable"
+msgstr "Deshabilitar"
+
+#: apps/web/src/components/forms/2fa/disable-authenticator-app-dialog.tsx:116
+#: apps/web/src/components/forms/2fa/disable-authenticator-app-dialog.tsx:123
+#: apps/web/src/components/forms/2fa/disable-authenticator-app-dialog.tsx:192
+msgid "Disable 2FA"
+msgstr "Deshabilitar 2FA"
+
+#: apps/web/src/app/(dashboard)/settings/profile/delete-account-dialog.tsx:116
+msgid "Disable Two Factor Authentication before deleting your account."
+msgstr "Deshabilite la Autenticación de Dos Factores antes de eliminar su cuenta."
+
+#: apps/web/src/app/(dashboard)/settings/webhooks/page.tsx:74
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/page.tsx:79
+msgid "Disabled"
+msgstr "Deshabilitado"
+
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:380
+msgid "Disabling direct link signing will prevent anyone from accessing the link."
+msgstr "Deshabilitar la firma de enlace directo evitará que cualquiera acceda al enlace."
+
+#: apps/web/src/app/(dashboard)/settings/teams/team-email-usage.tsx:75
+msgid "Display your name and email in documents"
+msgstr "Mostrar su nombre y correo electrónico en documentos"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:181
+msgid "Distribute Document"
+msgstr "Distribuir documento"
+
+#: apps/web/src/app/(dashboard)/templates/delete-template-dialog.tsx:63
+msgid "Do you want to delete this template?"
+msgstr "¿Desea eliminar esta plantilla?"
+
+#: apps/web/src/app/(dashboard)/templates/duplicate-template-dialog.tsx:63
+msgid "Do you want to duplicate this template?"
+msgstr "¿Desea duplicar esta plantilla?"
+
+#: apps/web/src/app/(dashboard)/settings/profile/delete-account-dialog.tsx:122
+msgid "Documenso will delete <0>all of your documents0>, along with all of your completed documents, signatures, and all other resources belonging to your Account."
+msgstr "Documenso eliminará <0>todos sus documentos0>, junto con todos sus documentos completados, firmas y todos los demás recursos de su cuenta."
+
+#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-page-view.tsx:119
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:38
+msgid "Document"
+msgstr "Documento"
+
+#: apps/web/src/components/formatter/document-status.tsx:47
+msgid "Document All"
+msgstr "Documentar Todo"
+
+#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:134
+msgid "Document Approved"
+msgstr "Documento Aprobado"
+
+#: apps/web/src/app/(signing)/sign/[token]/no-longer-available.tsx:40
+msgid "Document Cancelled"
+msgstr "Documento Cancelado"
+
+#: apps/web/src/components/formatter/document-status.tsx:29
+msgid "Document completed"
+msgstr "Documento completado"
+
+#: apps/web/src/app/embed/completed.tsx:16
+msgid "Document Completed!"
+msgstr "¡Documento completado!"
+
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:156
+msgid "Document created"
+msgstr "Documento creado"
+
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:129
+msgid "Document created by <0>{0}0>"
+msgstr "Documento creado por <0>{0}0>"
+
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:134
+msgid "Document created using a <0>direct link0>"
+msgstr "Documento creado usando un <0>enlace directo0>"
+
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx:51
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:178
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:59
+msgid "Document deleted"
+msgstr "Documento eliminado"
+
+#: apps/web/src/components/formatter/document-status.tsx:35
+msgid "Document draft"
+msgstr "Borrador de documento"
+
+#: apps/web/src/app/(dashboard)/documents/duplicate-document-dialog.tsx:58
+msgid "Document Duplicated"
+msgstr "Documento duplicado"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:189
+#: apps/web/src/components/document/document-history-sheet.tsx:104
+msgid "Document history"
+msgstr "Historial de documentos"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-page-view.tsx:71
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:81
+msgid "Document ID"
+msgstr "ID del documento"
+
+#: apps/web/src/components/formatter/document-status.tsx:41
+msgid "Document inbox"
+msgstr "Bandeja de documentos"
+
+#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:180
+msgid "Document Limit Exceeded!"
+msgstr "¡Límite de documentos excedido!"
+
+#: apps/web/src/app/(dashboard)/admin/stats/page.tsx:82
+msgid "Document metrics"
+msgstr "Métricas de documento"
+
+#: apps/web/src/app/(dashboard)/documents/move-document-dialog.tsx:49
+msgid "Document moved"
+msgstr "Documento movido"
+
+#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:158
+msgid "Document no longer available to sign"
+msgstr "El documento ya no está disponible para firmar"
+
+#: apps/web/src/components/formatter/document-status.tsx:23
+msgid "Document pending"
+msgstr "Documento pendiente"
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:91
+msgid "Document preferences updated"
+msgstr "Preferencias del documento actualizadas"
+
+#: apps/web/src/app/(dashboard)/documents/_action-items/resend-document.tsx:97
+msgid "Document re-sent"
+msgstr "Documento reenviado"
+
+#: apps/web/src/app/(signing)/sign/[token]/rejected/page.tsx:83
+msgid "Document Rejected"
+msgstr "Document Rejected"
+
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/admin-actions.tsx:36
+msgid "Document resealed"
+msgstr "Documento sellado nuevamente"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:327
+msgid "Document sent"
+msgstr "Documento enviado"
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/documents/page.tsx:26
+#~ msgid "Document Settings"
+#~ msgstr "Document Settings"
+
+#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:132
+msgid "Document Signed"
+msgstr "Documento firmado"
+
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:142
+msgid "Document signing process will be cancelled"
+msgstr "El proceso de firma del documento será cancelado"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-page-view.tsx:75
+msgid "Document status"
+msgstr "Estado del documento"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-page-view.tsx:67
+msgid "Document title"
+msgstr "Título del documento"
+
+#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:51
+msgid "Document upload disabled due to unpaid invoices"
+msgstr "La carga de documentos está deshabilitada debido a facturas impagadas"
+
+#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:81
+msgid "Document uploaded"
+msgstr "Documento subido"
+
+#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:133
+msgid "Document Viewed"
+msgstr "Documento visto"
+
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:139
+msgid "Document will be permanently deleted"
+msgstr "El documento será eliminado permanentemente"
+
+#: apps/web/src/app/(dashboard)/admin/nav.tsx:65
+#: apps/web/src/app/(dashboard)/admin/users/data-table-users.tsx:92
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:144
+#: apps/web/src/app/(dashboard)/documents/[id]/edit/document-edit-page-view.tsx:109
+#: apps/web/src/app/(dashboard)/documents/[id]/loading.tsx:16
+#: apps/web/src/app/(dashboard)/documents/[id]/sent/page.tsx:15
+#: apps/web/src/app/(dashboard)/documents/documents-page-view.tsx:119
+#: apps/web/src/app/(profile)/p/[url]/page.tsx:166
+#: apps/web/src/app/not-found.tsx:21
+#: apps/web/src/components/(dashboard)/common/command-menu.tsx:205
+#: apps/web/src/components/(dashboard)/layout/desktop-nav.tsx:18
+#: apps/web/src/components/(dashboard)/layout/mobile-navigation.tsx:35
+#: apps/web/src/components/ui/user-profile-timur.tsx:60
+msgid "Documents"
+msgstr "Documentos"
+
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view.tsx:195
+msgid "Documents created from template"
+msgstr "Documentos creados a partir de la plantilla"
+
+#: apps/web/src/app/(dashboard)/admin/stats/page.tsx:113
+msgid "Documents Received"
+msgstr "Documentos recibidos"
+
+#: apps/web/src/app/(dashboard)/admin/stats/page.tsx:118
+msgid "Documents Viewed"
+msgstr "Documentos vistos"
+
+#: apps/web/src/app/(unauthenticated)/reset-password/[token]/page.tsx:40
+#: apps/web/src/app/(unauthenticated)/signin/page.tsx:45
+msgid "Don't have an account? <0>Sign up0>"
+msgstr "¿No tienes una cuenta? <0>Regístrate0>"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-button.tsx:111
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:123
+#: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:141
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:162
+#: apps/web/src/components/(teams)/tables/team-billing-invoices-data-table.tsx:110
+#: apps/web/src/components/forms/2fa/enable-authenticator-app-dialog.tsx:185
+#: apps/web/src/components/forms/2fa/view-recovery-codes-dialog.tsx:107
+msgid "Download"
+msgstr "Descargar"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/logs/download-audit-log-button.tsx:81
+msgid "Download Audit Logs"
+msgstr "Descargar registros de auditoría"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/logs/download-certificate-button.tsx:86
+msgid "Download Certificate"
+msgstr "Descargar certificado"
+
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:214
+#: apps/web/src/components/formatter/document-status.tsx:34
+msgid "Draft"
+msgstr "Borrador"
+
+#: apps/web/src/components/(dashboard)/common/command-menu.tsx:46
+msgid "Draft documents"
+msgstr "Documentos en borrador"
+
+#: apps/web/src/app/(dashboard)/admin/stats/page.tsx:86
+msgid "Drafted Documents"
+msgstr "Documentos redactados"
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/layout-billing-banner.tsx:121
+msgid "Due to an unpaid invoice, your team has been restricted. Please settle the payment to restore full access to your team."
+msgstr "Debido a una factura impaga, tu equipo ha sido restringido. Realiza el pago para restaurar el acceso completo a tu equipo."
+
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:136
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:167
+#: apps/web/src/app/(dashboard)/documents/duplicate-document-dialog.tsx:85
+#: apps/web/src/app/(dashboard)/documents/duplicate-document-dialog.tsx:118
+#: apps/web/src/app/(dashboard)/templates/data-table-action-dropdown.tsx:74
+#: apps/web/src/app/(dashboard)/templates/duplicate-template-dialog.tsx:91
+msgid "Duplicate"
+msgstr "Duplicar"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-button.tsx:104
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:115
+#: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:102
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:156
+#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:111
+#: apps/web/src/app/(dashboard)/settings/webhooks/page.tsx:95
+#: apps/web/src/app/(dashboard)/templates/data-table-action-dropdown.tsx:65
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/team-email-dropdown.tsx:77
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/page.tsx:100
+msgid "Edit"
+msgstr "Editar"
+
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view.tsx:115
+msgid "Edit Template"
+msgstr "Editar plantilla"
+
+#: apps/web/src/app/(dashboard)/settings/webhooks/[id]/page.tsx:94
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/[id]/page.tsx:100
+msgid "Edit webhook"
+msgstr "Editar webhook"
+
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:78
+msgid "Electronic Delivery of Documents"
+msgstr "Entrega Electrónica de Documentos"
+
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:17
+msgid "Electronic Signature Disclosure"
+msgstr "Divulgación de Firma Electrónica"
+
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/recipient-item.tsx:166
+#: apps/web/src/app/(dashboard)/admin/users/[id]/page.tsx:114
+#: apps/web/src/app/(dashboard)/admin/users/data-table-users.tsx:71
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:265
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:272
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:122
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:129
+#: apps/web/src/app/(recipient)/d/[token]/configure-direct-template.tsx:118
+#: apps/web/src/app/(signing)/sign/[token]/email-field.tsx:126
+#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:377
+#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:257
+#: apps/web/src/components/(teams)/dialogs/add-team-email-dialog.tsx:169
+#: apps/web/src/components/(teams)/dialogs/update-team-email-dialog.tsx:153
+#: apps/web/src/components/forms/forgot-password.tsx:81
+#: apps/web/src/components/forms/profile.tsx:122
+#: apps/web/src/components/forms/signin.tsx:338
+#: apps/web/src/components/forms/signup.tsx:180
+msgid "Email"
+msgstr "Correo electrónico"
+
+#: apps/web/src/app/(signing)/sign/[token]/complete/claim-account.tsx:134
+#: apps/web/src/components/(teams)/dialogs/invite-team-member-dialog.tsx:300
+#: apps/web/src/components/forms/send-confirmation-email.tsx:82
+msgid "Email address"
+msgstr "Dirección de correo electrónico"
+
+#: apps/web/src/components/forms/v2/signup.tsx:328
+msgid "Email Address"
+msgstr "Dirección de correo electrónico"
+
+#: apps/web/src/app/(recipient)/d/[token]/configure-direct-template.tsx:80
+msgid "Email cannot already exist in the template"
+msgstr "El correo electrónico no puede existir ya en la plantilla"
+
+#: apps/web/src/app/(unauthenticated)/verify-email/[token]/client.tsx:36
+msgid "Email Confirmed!"
+msgstr "¡Correo electrónico confirmado!"
+
+#: apps/web/src/app/(unauthenticated)/check-email/page.tsx:20
+msgid "Email sent!"
+msgstr "¡Correo electrónico enviado!"
+
+#: apps/web/src/components/(teams)/dialogs/remove-team-email-dialog.tsx:77
+msgid "Email verification has been removed"
+msgstr "La verificación de correo electrónico ha sido eliminada"
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/team-email-dropdown.tsx:33
+msgid "Email verification has been resent"
+msgstr "La verificación de correo electrónico ha sido reenviada"
+
+#: apps/web/src/components/forms/2fa/enable-authenticator-app-dialog.tsx:153
+#: apps/web/src/components/forms/2fa/enable-authenticator-app-dialog.tsx:262
+msgid "Enable 2FA"
+msgstr "Habilitar 2FA"
+
+#: apps/web/src/components/forms/2fa/enable-authenticator-app-dialog.tsx:194
+msgid "Enable Authenticator App"
+msgstr "Habilitar aplicación autenticadora"
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/branding-preferences.tsx:170
+msgid "Enable custom branding for all documents in this team."
+msgstr "Habilitar branding personalizado para todos los documentos en este equipo."
+
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:251
+msgid "Enable direct link signing"
+msgstr "Habilitar firma de enlace directo"
+
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:374
+msgid "Enable Direct Link Signing"
+msgstr "Habilitar firma de enlace directo"
+
+#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:123
+#: apps/web/src/app/(dashboard)/settings/webhooks/[id]/page.tsx:138
+#: apps/web/src/app/(dashboard)/settings/webhooks/page.tsx:74
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/[id]/page.tsx:142
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/page.tsx:79
+#: apps/web/src/components/(dashboard)/settings/webhooks/create-webhook-dialog.tsx:166
+msgid "Enabled"
+msgstr "Habilitado"
+
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:87
+msgid "Enclosed Document"
+msgstr "Documento Adjunto"
+
+#: apps/web/src/app/(dashboard)/admin/subscriptions/page.tsx:38
+msgid "Ends On"
+msgstr "Termina en"
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/branding-preferences.tsx:295
+msgid "Enter your brand details"
+msgstr "Ingresa los detalles de tu marca"
+
+#: apps/web/src/app/(signing)/sign/[token]/complete/claim-account.tsx:137
+msgid "Enter your email"
+msgstr "Ingresa tu correo electrónico"
+
+#: apps/web/src/app/(recipient)/d/[token]/configure-direct-template.tsx:135
+msgid "Enter your email address to receive the completed document."
+msgstr "Ingresa tu dirección de correo electrónico para recibir el documento completado."
+
+#: apps/web/src/app/(signing)/sign/[token]/complete/claim-account.tsx:122
+msgid "Enter your name"
+msgstr "Ingresa tu nombre"
+
+#: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:280
+msgid "Enter your text here"
+msgstr "Ingresa tu texto aquí"
+
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/admin-actions.tsx:41
+#: apps/web/src/app/(dashboard)/admin/users/[id]/page.tsx:78
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:234
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:268
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:303
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:349
+#: apps/web/src/app/(dashboard)/documents/move-document-dialog.tsx:57
+#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:106
+#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:112
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:169
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:200
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:234
+#: apps/web/src/app/(dashboard)/templates/duplicate-template-dialog.tsx:51
+#: apps/web/src/app/(dashboard)/templates/move-template-dialog.tsx:56
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:175
+#: apps/web/src/app/(signing)/sign/[token]/auto-sign.tsx:152
+#: apps/web/src/app/(signing)/sign/[token]/checkbox-field.tsx:122
+#: apps/web/src/app/(signing)/sign/[token]/checkbox-field.tsx:151
+#: apps/web/src/app/(signing)/sign/[token]/checkbox-field.tsx:212
+#: apps/web/src/app/(signing)/sign/[token]/date-field.tsx:99
+#: apps/web/src/app/(signing)/sign/[token]/date-field.tsx:125
+#: apps/web/src/app/(signing)/sign/[token]/dropdown-field.tsx:105
+#: apps/web/src/app/(signing)/sign/[token]/dropdown-field.tsx:136
+#: apps/web/src/app/(signing)/sign/[token]/email-field.tsx:83
+#: apps/web/src/app/(signing)/sign/[token]/email-field.tsx:109
+#: apps/web/src/app/(signing)/sign/[token]/initials-field.tsx:89
+#: apps/web/src/app/(signing)/sign/[token]/initials-field.tsx:115
+#: apps/web/src/app/(signing)/sign/[token]/name-field.tsx:121
+#: apps/web/src/app/(signing)/sign/[token]/name-field.tsx:147
+#: apps/web/src/app/(signing)/sign/[token]/number-field.tsx:149
+#: apps/web/src/app/(signing)/sign/[token]/number-field.tsx:194
+#: apps/web/src/app/(signing)/sign/[token]/radio-field.tsx:101
+#: apps/web/src/app/(signing)/sign/[token]/radio-field.tsx:128
+#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:146
+#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:172
+#: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:167
+#: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:195
+#: apps/web/src/components/(dashboard)/layout/verify-email-banner.tsx:54
+#: apps/web/src/components/(dashboard)/settings/webhooks/create-webhook-dialog.tsx:101
+msgid "Error"
+msgstr "Error"
+
+#: apps/web/src/components/forms/team-document-settings.tsx:77
+#~ msgid "Error updating global team settings"
+#~ msgstr "Error updating global team settings"
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:128
+msgid "Everyone can access and view the document"
+msgstr "Todos pueden acceder y ver el documento"
+
+#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:142
+msgid "Everyone has signed"
+msgstr "Todos han firmado"
+
+#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:166
+msgid "Everyone has signed! You will receive an Email copy of the signed document."
+msgstr "¡Todos han firmado! Recibirás una copia por correo electrónico del documento firmado."
+
+#: apps/web/src/app/(dashboard)/settings/security/passkeys/create-passkey-dialog.tsx:232
+msgid "Exceeded timeout"
+msgstr "Tiempo de espera excedido"
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:120
+msgid "Expired"
+msgstr "Expirado"
+
+#: apps/web/src/app/(dashboard)/settings/tokens/page.tsx:71
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx:104
+msgid "Expires on {0}"
+msgstr "Expira el {0}"
+
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/admin-actions.tsx:42
+msgid "Failed to reseal document"
+msgstr "Falló al volver a sellar el documento"
+
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/recipient-item.tsx:125
+msgid "Failed to update recipient"
+msgstr "Falló al actualizar el destinatario"
+
+#: apps/web/src/app/(dashboard)/settings/webhooks/[id]/page.tsx:82
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/[id]/page.tsx:88
+msgid "Failed to update webhook"
+msgstr "Falló al actualizar el webhook"
+
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/recipient-item.tsx:190
+msgid "Fields"
+msgstr "Campos"
+
+#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:125
+msgid "File cannot be larger than {APP_DOCUMENT_UPLOAD_SIZE_LIMIT}MB"
+msgstr "El archivo no puede ser mayor a {APP_DOCUMENT_UPLOAD_SIZE_LIMIT}MB"
+
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:154
+msgid "For any questions regarding this disclosure, electronic signatures, or any related process, please contact us at: <0>{SUPPORT_EMAIL}0>"
+msgstr "Si tiene alguna pregunta sobre esta divulgación, firmas electrónicas o cualquier proceso relacionado, comuníquese con nosotros en: <0>{SUPPORT_EMAIL}0>"
+
+#: apps/web/src/app/(unauthenticated)/forgot-password/page.tsx:21
+#: apps/web/src/components/forms/signin.tsx:370
+msgid "Forgot your password?"
+msgstr "¿Olvidaste tu contraseña?"
+
+#: apps/web/src/app/(recipient)/d/[token]/sign-direct-template.tsx:326
+#: apps/web/src/app/(signing)/sign/[token]/form.tsx:178
+#: apps/web/src/app/(signing)/sign/[token]/name-field.tsx:193
+#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:362
+#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:242
+#: apps/web/src/components/forms/profile.tsx:110
+#: apps/web/src/components/forms/v2/signup.tsx:312
+msgid "Full Name"
+msgstr "Nombre completo"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:166
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:77
+#: apps/web/src/app/(recipient)/d/[token]/direct-template.tsx:62
+#: apps/web/src/components/(teams)/settings/layout/desktop-nav.tsx:44
+#: apps/web/src/components/(teams)/settings/layout/mobile-nav.tsx:52
+msgid "General"
+msgstr "General"
+
+#: apps/web/src/components/(teams)/settings/layout/desktop-nav.tsx:57
+#: apps/web/src/components/(teams)/settings/layout/mobile-nav.tsx:65
+#~ msgid "Global Settings"
+#~ msgstr "Global Settings"
+
+#: apps/web/src/components/forms/team-document-settings.tsx:69
+#~ msgid "Global Team Settings Updated"
+#~ msgstr "Global Team Settings Updated"
+
+#: apps/web/src/app/(profile)/p/[url]/not-found.tsx:30
+#: apps/web/src/app/(recipient)/d/[token]/not-found.tsx:33
+#: apps/web/src/app/(teams)/t/[teamUrl]/error.tsx:51
+#: apps/web/src/app/(teams)/t/[teamUrl]/not-found.tsx:32
+#: apps/web/src/components/partials/not-found.tsx:67
+msgid "Go Back"
+msgstr "Regresar"
+
+#: apps/web/src/app/(unauthenticated)/verify-email/[token]/client.tsx:48
+#: apps/web/src/app/(unauthenticated)/verify-email/[token]/page.tsx:73
+#: apps/web/src/app/(unauthenticated)/verify-email/[token]/page.tsx:101
+#: apps/web/src/app/(unauthenticated)/verify-email/page.tsx:38
+msgid "Go back home"
+msgstr "Regresar a casa"
+
+#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:226
+#: apps/web/src/app/(signing)/sign/[token]/no-longer-available.tsx:57
+msgid "Go Back Home"
+msgstr "Regresar a casa"
+
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/admin-actions.tsx:76
+msgid "Go to owner"
+msgstr "Ir al propietario"
+
+#: apps/web/src/app/(profile)/p/[url]/page.tsx:147
+msgid "Go to your <0>public profile settings0> to add documents."
+msgstr "Ve a tu <0>configuración de perfil público0> para agregar documentos."
+
+#: apps/web/src/app/(dashboard)/settings/profile/page.tsx:29
+msgid "Here you can edit your personal details."
+msgstr "Aquí puedes editar tus datos personales."
+
+#: apps/web/src/app/(dashboard)/settings/security/page.tsx:35
+msgid "Here you can manage your password and security settings."
+msgstr "Aquí puedes gestionar tu contraseña y la configuración de seguridad."
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/page.tsx:43
+msgid "Here you can set preferences and defaults for branding."
+msgstr "Aquí puedes establecer preferencias y valores predeterminados para la marca."
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/page.tsx:34
+msgid "Here you can set preferences and defaults for your team."
+msgstr "Aquí puedes establecer preferencias y valores predeterminados para tu equipo."
+
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:206
+msgid "Here's how it works:"
+msgstr "Así es como funciona:"
+
+#: apps/web/src/components/ui/user-profile-timur.tsx:49
+msgid "Hey I’m Timur"
+msgstr "Hola, soy Timur"
+
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:189
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:200
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:155
+msgid "Hide"
+msgstr "Ocultar"
+
+#: apps/web/src/components/document/document-history-sheet.tsx:111
+msgid "Hide additional information"
+msgstr "Ocultar información adicional"
+
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:43
+msgid "I am the owner of this document"
+msgstr "Soy el propietario de este documento"
+
+#: apps/web/src/components/(dashboard)/settings/token/delete-token-dialog.tsx:186
+#: apps/web/src/components/(dashboard)/settings/webhooks/delete-webhook-dialog.tsx:173
+msgid "I'm sure! Delete it"
+msgstr "¡Estoy seguro! Elimínalo"
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/team-transfer-status.tsx:103
+msgid "If they accept this request, the team will be transferred to their account."
+msgstr "Si aceptan esta solicitud, el equipo será transferido a su cuenta."
+
+#: apps/web/src/app/(dashboard)/settings/security/passkeys/create-passkey-dialog.tsx:196
+msgid "If you do not want to use the authenticator prompted, you can close it, which will then display the next available authenticator."
+msgstr "Si no deseas usar el autenticador solicitado, puedes cerrarlo, lo que mostrará el próximo autenticador disponible."
+
+#: apps/web/src/app/(unauthenticated)/unverified-account/page.tsx:30
+msgid "If you don't find the confirmation link in your inbox, you can request a new one below."
+msgstr "Si no encuentras el enlace de confirmación en tu bandeja de entrada, puedes solicitar uno nuevo a continuación."
+
+#: apps/web/src/components/forms/2fa/enable-authenticator-app-dialog.tsx:213
+msgid "If your authenticator app does not support QR codes, you can use the following code instead:"
+msgstr "Si tu aplicación de autenticación no admite códigos QR, puedes usar el siguiente código en su lugar:"
+
+#: apps/web/src/components/formatter/document-status.tsx:40
+msgid "Inbox"
+msgstr "Bandeja de entrada"
+
+#: apps/web/src/components/(dashboard)/common/command-menu.tsx:52
+msgid "Inbox documents"
+msgstr "Documentos en bandeja de entrada"
+
+#: apps/web/src/components/forms/team-document-settings.tsx:132
+#~ msgid "Include Sender Details"
+#~ msgstr "Include Sender Details"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-information.tsx:53
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-information.tsx:50
+msgid "Information"
+msgstr "Información"
+
+#: apps/web/src/app/(signing)/sign/[token]/initials-field.tsx:132
+msgid "Initials"
+msgstr "Iniciales"
+
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/recipient-item.tsx:78
+msgid "Inserted"
+msgstr "Insertado"
+
+#: apps/web/src/app/(dashboard)/admin/stats/page.tsx:60
+msgid "Instance Stats"
+msgstr "Estadísticas de instancia"
+
+#: apps/web/src/components/forms/2fa/view-recovery-codes-dialog.tsx:151
+msgid "Invalid code. Please try again."
+msgstr "Código inválido. Por favor, intenta nuevamente."
+
+#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:100
+msgid "Invalid file"
+msgstr "Archivo inválido"
+
+#: apps/web/src/app/(unauthenticated)/team/verify/email/[token]/page.tsx:33
+#: apps/web/src/app/(unauthenticated)/team/verify/transfer/[token]/page.tsx:36
+msgid "Invalid link"
+msgstr "Enlace inválido"
+
+#: apps/web/src/app/(unauthenticated)/team/decline/[token]/page.tsx:39
+#: apps/web/src/app/(unauthenticated)/team/invite/[token]/page.tsx:39
+msgid "Invalid token"
+msgstr "Token inválido"
+
+#: apps/web/src/app/(unauthenticated)/team/invite/[token]/page.tsx:123
+msgid "Invitation accepted!"
+msgstr "¡Invitación aceptada!"
+
+#: apps/web/src/app/(unauthenticated)/team/decline/[token]/page.tsx:118
+msgid "Invitation declined"
+msgstr "Invitación rechazada"
+
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:80
+msgid "Invitation has been deleted"
+msgstr "La invitación ha sido eliminada"
+
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:63
+msgid "Invitation has been resent"
+msgstr "La invitación ha sido reenviada"
+
+#: apps/web/src/components/(teams)/dialogs/invite-team-member-dialog.tsx:374
+msgid "Invite"
+msgstr "Invitar"
+
+#: apps/web/src/components/(teams)/dialogs/invite-team-member-dialog.tsx:250
+msgid "Invite member"
+msgstr "Invitar miembro"
+
+#: apps/web/src/components/(teams)/dialogs/invite-team-member-dialog.tsx:275
+msgid "Invite Members"
+msgstr "Invitar a miembros"
+
+#: apps/web/src/components/(teams)/dialogs/invite-team-member-dialog.tsx:258
+msgid "Invite team members"
+msgstr "Invitar a miembros del equipo"
+
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:128
+msgid "Invited At"
+msgstr "Invitado el"
+
+#: apps/web/src/components/(teams)/tables/team-billing-invoices-data-table.tsx:55
+msgid "Invoice"
+msgstr "Factura"
+
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/data-table.tsx:47
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:227
+msgid "IP Address"
+msgstr "Dirección IP"
+
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:118
+msgid "It is crucial to keep your contact information, especially your email address, up to date with us. Please notify us immediately of any changes to ensure that you continue to receive all necessary communications."
+msgstr "Es crucial mantener su información de contacto, especialmente su dirección de correo electrónico, actual con nosotros. Por favor, notifíquenos inmediatamente sobre cualquier cambio para asegurarse de seguir recibiendo todas las comunicaciones necesarias."
+
+#: apps/web/src/app/(profile)/p/[url]/page.tsx:134
+msgid "It looks like {0} hasn't added any documents to their profile yet."
+msgstr "Parece que {0} aún no ha agregado documentos a su perfil."
+
+#: apps/web/src/app/(unauthenticated)/verify-email/[token]/page.tsx:93
+msgid "It seems that the provided token has expired. We've just sent you another token, please check your email and try again."
+msgstr "Parece que el token proporcionado ha expirado. Te hemos enviado otro token, por favor revisa tu correo electrónico y vuelve a intentarlo."
+
+#: apps/web/src/app/(unauthenticated)/verify-email/page.tsx:30
+msgid "It seems that there is no token provided, if you are trying to verify your email please follow the link in your email."
+msgstr "Parece que no se ha proporcionado un token, si estás intentando verificar tu correo electrónico, por favor sigue el enlace en tu correo electrónico."
+
+#: apps/web/src/app/(unauthenticated)/verify-email/[token]/page.tsx:40
+msgid "It seems that there is no token provided. Please check your email and try again."
+msgstr "Parece que no se ha proporcionado un token. Por favor revisa tu correo electrónico y vuelve a intentarlo."
+
+#: apps/web/src/app/(signing)/sign/[token]/waiting/page.tsx:74
+msgid "It's currently not your turn to sign. You will receive an email with instructions once it's your turn to sign the document."
+msgstr "Actualmente no es tu turno para firmar. Recibirás un correo electrónico con instrucciones una vez sea tu turno para firmar el documento."
+
+#: apps/web/src/components/(dashboard)/layout/menu-switcher.tsx:286
+msgid "Language"
+msgstr "Idioma"
+
+#: apps/web/src/components/(dashboard)/period-selector/period-selector.tsx:61
+msgid "Last 14 days"
+msgstr "Últimos 14 días"
+
+#: apps/web/src/components/(dashboard)/period-selector/period-selector.tsx:64
+msgid "Last 30 days"
+msgstr "Últimos 30 días"
+
+#: apps/web/src/components/(dashboard)/period-selector/period-selector.tsx:58
+msgid "Last 7 days"
+msgstr "Últimos 7 días"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-information.tsx:41
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-information.tsx:38
+msgid "Last modified"
+msgstr "Última modificación"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-page-view.tsx:91
+msgid "Last updated"
+msgstr "Última actualización"
+
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:121
+msgid "Last Updated"
+msgstr "Última Actualización"
+
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/page.tsx:52
+msgid "Last updated at"
+msgstr "Última actualización el"
+
+#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table.tsx:71
+msgid "Last used"
+msgstr "Último uso"
+
+#: apps/web/src/components/(teams)/dialogs/leave-team-dialog.tsx:111
+#: apps/web/src/components/(teams)/tables/current-user-teams-data-table.tsx:117
+msgid "Leave"
+msgstr "Salir"
+
+#: apps/web/src/components/(teams)/dialogs/leave-team-dialog.tsx:73
+msgid "Leave team"
+msgstr "Salir del equipo"
+
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:45
+msgid "Legality of Electronic Signatures"
+msgstr "Legalidad de las Firmas Electrónicas"
+
+#: apps/web/src/components/(dashboard)/common/command-menu.tsx:264
+msgid "Light Mode"
+msgstr "Modo claro"
+
+#: apps/web/src/app/(profile)/profile-header.tsx:71
+msgid "Like to have your own public profile with agreements?"
+msgstr "¿Te gustaría tener tu propio perfil público con acuerdos?"
+
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:216
+msgid "Link template"
+msgstr "Enlace de plantilla"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:338
+msgid "Links Generated"
+msgstr "Enlaces generados"
+
+#: apps/web/src/app/(dashboard)/settings/webhooks/page.tsx:79
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/page.tsx:84
+msgid "Listening to {0}"
+msgstr "Escuchando a {0}"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recent-activity.tsx:100
+msgid "Load older activity"
+msgstr "Cargar actividad anterior"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/loading.tsx:33
+msgid "Loading document..."
+msgstr "Cargando documento..."
+
+#: apps/web/src/app/(dashboard)/documents/[id]/loading.tsx:20
+#: apps/web/src/app/(dashboard)/documents/[id]/sent/page.tsx:19
+#: apps/web/src/app/(dashboard)/documents/duplicate-document-dialog.tsx:91
+msgid "Loading Document..."
+msgstr "Cargando Documento..."
+
+#: apps/web/src/app/(dashboard)/documents/move-document-dialog.tsx:92
+#: apps/web/src/app/(dashboard)/templates/move-template-dialog.tsx:91
+msgid "Loading teams..."
+msgstr "Cargando equipos..."
+
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recent-activity.tsx:100
+msgid "Loading..."
+msgstr "Cargando..."
+
+#: apps/web/src/app/(recipient)/d/[token]/signing-auth-page.tsx:54
+#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-account.tsx:75
+#: apps/web/src/app/(signing)/sign/[token]/signing-auth-page.tsx:67
+msgid "Login"
+msgstr "Iniciar sesión"
+
+#: apps/web/src/components/(teams)/tables/current-user-teams-data-table.tsx:101
+msgid "Manage"
+msgstr "Gestionar"
+
+#: apps/web/src/app/(dashboard)/admin/users/[id]/page.tsx:88
+msgid "Manage {0}'s profile"
+msgstr "Gestionar el perfil de {0}"
+
+#: apps/web/src/app/(dashboard)/settings/teams/page.tsx:26
+msgid "Manage all teams you are currently associated with."
+msgstr "Gestionar todos los equipos con los que estás asociado actualmente."
+
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view.tsx:159
+msgid "Manage and view template"
+msgstr "Gestionar y ver plantilla"
+
+#: apps/web/src/app/(dashboard)/settings/billing/page.tsx:136
+msgid "Manage billing"
+msgstr "Gestionar la facturación"
+
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:341
+msgid "Manage details for this public template"
+msgstr "Gestionar detalles de esta plantilla pública"
+
+#: apps/web/src/app/(dashboard)/templates/[id]/template-direct-link-dialog-wrapper.tsx:35
+msgid "Manage Direct Link"
+msgstr "Gestionar enlace directo"
+
+#: apps/web/src/app/(dashboard)/admin/documents/page.tsx:13
+msgid "Manage documents"
+msgstr "Gestionar documentos"
+
+#: apps/web/src/app/(dashboard)/settings/security/page.tsx:118
+msgid "Manage passkeys"
+msgstr "Gestionar claves de acceso"
+
+#: apps/web/src/components/(teams)/team-billing-portal-button.tsx:41
+msgid "Manage subscription"
+msgstr "Gestionar suscripción"
+
+#: apps/web/src/app/(dashboard)/settings/billing/billing-portal-button.tsx:67
+msgid "Manage Subscription"
+msgstr "Gestionar Suscripción"
+
+#: apps/web/src/app/(dashboard)/admin/subscriptions/page.tsx:24
+msgid "Manage subscriptions"
+msgstr "Gestionar suscripciones"
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/billing/page.tsx:81
+msgid "Manage team subscription."
+msgstr "Gestionar suscripción de equipo."
+
+#: apps/web/src/components/(dashboard)/layout/menu-switcher.tsx:168
+msgid "Manage teams"
+msgstr "Gestionar equipos"
+
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:367
+msgid "Manage the direct link signing for this template"
+msgstr "Gestionar la firma de enlace directo para esta plantilla"
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/members/page.tsx:32
+msgid "Manage the members or invite new members."
+msgstr "Gestionar los miembros o invitar nuevos miembros."
+
+#: apps/web/src/app/(dashboard)/admin/users/page.tsx:35
+msgid "Manage users"
+msgstr "Gestionar usuarios"
+
+#: apps/web/src/app/(dashboard)/settings/security/passkeys/page.tsx:33
+msgid "Manage your passkeys."
+msgstr "Gestionar tus claves de acceso."
+
+#: apps/web/src/app/(dashboard)/admin/site-settings/page.tsx:27
+msgid "Manage your site settings here"
+msgstr "Gestionar la configuración de tu sitio aquí"
+
+#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:123
+msgid "Mark as Viewed"
+msgstr "Marcar como visto"
+
+#: apps/web/src/app/(dashboard)/admin/stats/page.tsx:137
+msgid "MAU (created document)"
+msgstr "MAU (documento creado)"
+
+#: apps/web/src/app/(dashboard)/admin/stats/page.tsx:143
+msgid "MAU (had document completed)"
+msgstr "MAU (documento completado)"
+
+#: apps/web/src/components/(teams)/tables/current-user-teams-data-table.tsx:90
+#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:113
+msgid "Member Since"
+msgstr "Miembro desde"
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/members/page.tsx:31
+#: apps/web/src/components/(teams)/settings/layout/desktop-nav.tsx:86
+#: apps/web/src/components/(teams)/settings/layout/mobile-nav.tsx:95
+msgid "Members"
+msgstr "Miembros"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:55
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recipients.tsx:35
+msgid "Modify recipients"
+msgstr "Modificar destinatarios"
+
+#: apps/web/src/app/(dashboard)/settings/billing/billing-plans.tsx:30
+msgid "Monthly"
+msgstr "Mensual"
+
+#: apps/web/src/app/(dashboard)/admin/stats/page.tsx:138
+msgid "Monthly Active Users: Users that created at least one Document"
+msgstr "Usuarios activos mensuales: Usuarios que crearon al menos un documento"
+
+#: apps/web/src/app/(dashboard)/admin/stats/page.tsx:145
+msgid "Monthly Active Users: Users that had at least one of their documents completed"
+msgstr "Usuarios activos mensuales: Usuarios que completaron al menos uno de sus documentos"
+
+#: apps/web/src/app/(dashboard)/documents/move-document-dialog.tsx:123
+#: apps/web/src/app/(dashboard)/templates/move-template-dialog.tsx:122
+msgid "Move"
+msgstr "Mover"
+
+#: apps/web/src/app/(dashboard)/documents/move-document-dialog.tsx:78
+msgid "Move Document to Team"
+msgstr "Mover documento al equipo"
+
+#: apps/web/src/app/(dashboard)/templates/move-template-dialog.tsx:77
+msgid "Move Template to Team"
+msgstr "Mover plantilla al equipo"
+
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:174
+#: apps/web/src/app/(dashboard)/templates/data-table-action-dropdown.tsx:85
+msgid "Move to Team"
+msgstr "Mover al equipo"
+
+#: apps/web/src/app/(dashboard)/documents/move-document-dialog.tsx:123
+#: apps/web/src/app/(dashboard)/templates/move-template-dialog.tsx:122
+msgid "Moving..."
+msgstr "Moviendo..."
+
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:44
+msgid "My templates"
+msgstr "Mis plantillas"
+
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/recipient-item.tsx:148
+#: apps/web/src/app/(dashboard)/admin/users/[id]/page.tsx:99
+#: apps/web/src/app/(dashboard)/admin/users/data-table-users.tsx:66
+#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:144
+#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table.tsx:61
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:287
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:294
+#: apps/web/src/app/(signing)/sign/[token]/complete/claim-account.tsx:119
+#: apps/web/src/app/(signing)/sign/[token]/name-field.tsx:170
+#: apps/web/src/components/(teams)/dialogs/add-team-email-dialog.tsx:153
+#: apps/web/src/components/(teams)/dialogs/update-team-email-dialog.tsx:141
+#: apps/web/src/components/forms/signup.tsx:164
+msgid "Name"
+msgstr "Nombre"
+
+#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:211
+msgid "Need to sign documents?"
+msgstr "¿Necesitas firmar documentos?"
+
+#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table.tsx:76
+msgid "Never"
+msgstr "Nunca"
+
+#: apps/web/src/components/forms/token.tsx:224
+msgid "Never expire"
+msgstr "Nunca expira"
+
+#: apps/web/src/components/(teams)/dialogs/transfer-team-dialog.tsx:176
+msgid "New team owner"
+msgstr "Nuevo propietario del equipo"
+
+#: apps/web/src/app/(dashboard)/templates/new-template-dialog.tsx:96
+#: apps/web/src/app/(dashboard)/templates/new-template-dialog.tsx:103
+msgid "New Template"
+msgstr "Nueva plantilla"
+
+#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:421
+#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:300
+#: apps/web/src/components/forms/v2/signup.tsx:521
+msgid "Next"
+msgstr "Siguiente"
+
+#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:61
+msgid "Next field"
+msgstr "Siguiente campo"
+
+#: apps/web/src/app/(dashboard)/documents/empty-state.tsx:24
+msgid "No active drafts"
+msgstr "No hay borradores activos"
+
+#: apps/web/src/app/(signing)/sign/[token]/rejected/page.tsx:99
+msgid "No further action is required from you at this time."
+msgstr "No further action is required from you at this time."
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/billing/page.tsx:42
+msgid "No payment required"
+msgstr "No se requiere pago"
+
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:125
+msgid "No public profile templates found"
+msgstr "No se encontraron plantillas de perfil público"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recent-activity.tsx:108
+msgid "No recent activity"
+msgstr "No hay actividad reciente"
+
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:103
+msgid "No recent documents"
+msgstr "No hay documentos recientes"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:70
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recipients.tsx:49
+#: apps/web/src/components/document/document-recipient-link-copy-dialog.tsx:96
+msgid "No recipients"
+msgstr "No hay destinatarios"
+
+#: apps/web/src/components/(dashboard)/common/command-menu.tsx:200
+msgid "No results found."
+msgstr "No se encontraron resultados."
+
+#: apps/web/src/app/(unauthenticated)/verify-email/[token]/page.tsx:37
+msgid "No token provided"
+msgstr "No se proporcionó token"
+
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:284
+msgid "No valid direct templates found"
+msgstr "No se encontraron plantillas directas válidas"
+
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:293
+msgid "No valid recipients found"
+msgstr "No se encontraron destinatarios válidos"
+
+#: apps/web/src/app/(dashboard)/admin/users/[id]/multiselect-role-combobox.tsx:64
+#: apps/web/src/components/(dashboard)/settings/webhooks/trigger-multiselect-combobox.tsx:77
+msgid "No value found."
+msgstr "No se encontró valor."
+
+#: apps/web/src/app/(unauthenticated)/forgot-password/page.tsx:25
+msgid "No worries, it happens! Enter your email and we'll email you a special link to reset your password."
+msgstr "¡No te preocupes, sucede! Ingresa tu correo electrónico y te enviaremos un enlace especial para restablecer tu contraseña."
+
+#: apps/web/src/components/forms/signin.tsx:160
+msgid "Not supported"
+msgstr "No soportado"
+
+#: apps/web/src/app/(dashboard)/documents/empty-state.tsx:19
+#: apps/web/src/app/(dashboard)/documents/empty-state.tsx:34
+msgid "Nothing to do"
+msgstr "Nada que hacer"
+
+#: apps/web/src/app/(signing)/sign/[token]/number-field.tsx:271
+msgid "Number"
+msgstr "Número"
+
+#: apps/web/src/components/(dashboard)/settings/webhooks/create-webhook-dialog.tsx:128
+msgid "On this page, you can create a new webhook."
+msgstr "En esta página, puedes crear un nuevo webhook."
+
+#: apps/web/src/app/(dashboard)/settings/tokens/page.tsx:26
+msgid "On this page, you can create new API tokens and manage the existing ones. <0/>Also see our <1>Documentation1>."
+msgstr "En esta página, puedes crear nuevos tokens de API y gestionar los existentes. <0/>También consulta nuestra <1>Documentación1>."
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx:60
+msgid "On this page, you can create new API tokens and manage the existing ones. <0/>You can view our swagger docs <1>here1>"
+msgstr "En esta página, puedes crear nuevos tokens de API y gestionar los existentes. <0/>Puedes ver nuestra documentación de swagger <1>aquí1>"
+
+#: apps/web/src/app/(dashboard)/settings/webhooks/page.tsx:29
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/page.tsx:34
+msgid "On this page, you can create new Webhooks and manage the existing ones."
+msgstr "En esta página, puedes editar el webhook y sus configuraciones."
+
+#: apps/web/src/app/(dashboard)/settings/webhooks/[id]/page.tsx:95
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/[id]/page.tsx:101
+msgid "On this page, you can edit the webhook and its settings."
+msgstr "En esta página, puedes editar el webhook y su configuración."
+
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:134
+msgid "Once confirmed, the following will occur:"
+msgstr "Una vez confirmado, ocurrirá lo siguiente:"
+
+#: apps/web/src/components/forms/2fa/enable-authenticator-app-dialog.tsx:224
+msgid "Once you have scanned the QR code or entered the code manually, enter the code provided by your authenticator app below."
+msgstr "Una vez que hayas escaneado el código QR o ingresado el código manualmente, ingresa el código proporcionado por tu aplicación de autenticación a continuación."
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:134
+msgid "Only admins can access and view the document"
+msgstr "Solo los administradores pueden acceder y ver el documento"
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:131
+msgid "Only managers and above can access and view the document"
+msgstr "Solo los gerentes y superiores pueden acceder y ver el documento"
+
+#: apps/web/src/app/(profile)/p/[url]/not-found.tsx:19
+#: apps/web/src/app/(recipient)/d/[token]/not-found.tsx:19
+#: apps/web/src/app/(teams)/t/[teamUrl]/error.tsx:37
+#: apps/web/src/app/(teams)/t/[teamUrl]/not-found.tsx:19
+#: apps/web/src/components/partials/not-found.tsx:49
+msgid "Oops! Something went wrong."
+msgstr "¡Ups! Algo salió mal."
+
+#: apps/web/src/components/(dashboard)/avatar/stack-avatars-with-tooltip.tsx:140
+msgid "Opened"
+msgstr "Abierto"
+
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:337
+#: apps/web/src/components/forms/signup.tsx:243
+#: apps/web/src/components/forms/signup.tsx:267
+#: apps/web/src/components/forms/v2/signup.tsx:383
+msgid "Or"
+msgstr "O"
+
+#: apps/web/src/components/forms/signin.tsx:390
+msgid "Or continue with"
+msgstr "O continúa con"
+
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:341
+msgid "Otherwise, the document will be created as a draft."
+msgstr "De lo contrario, el documento se creará como un borrador."
+
+#: apps/web/src/app/(dashboard)/admin/documents/document-results.tsx:86
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:103
+#: apps/web/src/components/(dashboard)/layout/menu-switcher.tsx:81
+#: apps/web/src/components/(teams)/tables/current-user-teams-data-table.tsx:86
+#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:109
+msgid "Owner"
+msgstr "Propietario"
+
+#: apps/web/src/components/(teams)/tables/team-billing-invoices-data-table.tsx:79
+msgid "Paid"
+msgstr "Pagado"
+
+#: apps/web/src/components/forms/signin.tsx:435
+msgid "Passkey"
+msgstr "Clave de acceso"
+
+#: apps/web/src/app/(dashboard)/settings/security/passkeys/create-passkey-dialog.tsx:229
+msgid "Passkey already exists for the provided authenticator"
+msgstr "Ya existe una clave de acceso para el autenticador proporcionado"
+
+#: apps/web/src/app/(dashboard)/settings/security/passkeys/create-passkey-dialog.tsx:219
+msgid "Passkey creation cancelled due to one of the following reasons:"
+msgstr "La creación de la clave de acceso se canceló debido a una de las siguientes razones:"
+
+#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:88
+msgid "Passkey has been removed"
+msgstr "La clave de acceso ha sido eliminada"
+
+#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:68
+msgid "Passkey has been updated"
+msgstr "La clave de acceso ha sido actualizada"
+
+#: apps/web/src/app/(dashboard)/settings/security/passkeys/create-passkey-dialog.tsx:177
+msgid "Passkey name"
+msgstr "Nombre de clave de acceso"
+
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:121
+msgid "Passkey Re-Authentication"
+msgstr "Re-autenticación de Passkey"
+
+#: apps/web/src/app/(dashboard)/settings/security/page.tsx:106
+#: apps/web/src/app/(dashboard)/settings/security/passkeys/page.tsx:32
+msgid "Passkeys"
+msgstr "Claves de acceso"
+
+#: apps/web/src/app/(dashboard)/settings/security/passkeys/create-passkey-dialog.tsx:158
+msgid "Passkeys allow you to sign in and authenticate using biometrics, password managers, etc."
+msgstr "Las claves de acceso te permiten iniciar sesión y autenticarte utilizando biometría, gestores de contraseñas, etc."
+
+#: apps/web/src/components/forms/signin.tsx:161
+msgid "Passkeys are not supported on this browser"
+msgstr "Las claves de acceso no están soportadas en este navegador"
+
+#: apps/web/src/components/(dashboard)/common/command-menu.tsx:70
+#: apps/web/src/components/forms/password.tsx:123
+#: apps/web/src/components/forms/reset-password.tsx:110
+#: apps/web/src/components/forms/signin.tsx:356
+#: apps/web/src/components/forms/signup.tsx:196
+#: apps/web/src/components/forms/v2/signup.tsx:344
+msgid "Password"
+msgstr "Contraseña"
+
+#: apps/web/src/components/forms/password.tsx:71
+#: apps/web/src/components/forms/reset-password.tsx:72
+msgid "Password updated"
+msgstr "Contraseña actualizada"
+
+#: apps/web/src/components/(teams)/tables/pending-user-teams-data-table-actions.tsx:46
+msgid "Pay"
+msgstr "Pagar"
+
+#: apps/web/src/components/(teams)/dialogs/create-team-checkout-dialog.tsx:89
+msgid "Payment is required to finalise the creation of your team."
+msgstr "Se requiere pago para finalizar la creación de tu equipo."
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/layout-billing-banner.tsx:82
+#: apps/web/src/app/(teams)/t/[teamUrl]/layout-billing-banner.tsx:107
+msgid "Payment overdue"
+msgstr "Pago atrasado"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:131
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:211
+#: apps/web/src/components/(teams)/tables/teams-member-page-data-table.tsx:82
+#: apps/web/src/components/(teams)/tables/user-settings-teams-page-data-table.tsx:77
+#: apps/web/src/components/document/document-read-only-fields.tsx:89
+#: apps/web/src/components/formatter/document-status.tsx:22
+msgid "Pending"
+msgstr "Pendiente"
+
+#: apps/web/src/components/(dashboard)/common/command-menu.tsx:51
+msgid "Pending documents"
+msgstr "Documentos pendientes"
+
+#: apps/web/src/app/(dashboard)/admin/stats/page.tsx:89
+msgid "Pending Documents"
+msgstr "Documentos Pendientes"
+
+#: apps/web/src/app/(dashboard)/settings/teams/team-invitations.tsx:62
+msgid "Pending invitations"
+msgstr "Invitaciones pendientes"
+
+#: apps/web/src/components/(teams)/tables/pending-user-teams-data-table-actions.tsx:28
+msgid "Pending team deleted."
+msgstr "Equipo pendiente eliminado."
+
+#: apps/web/src/components/(dashboard)/layout/menu-switcher.tsx:134
+msgid "Personal"
+msgstr "Personal"
+
+#: apps/web/src/components/(dashboard)/layout/menu-switcher.tsx:77
+msgid "Personal Account"
+msgstr "Cuenta personal"
+
+#: apps/web/src/app/(signing)/sign/[token]/complete/claim-account.tsx:152
+msgid "Pick a password"
+msgstr "Elige una contraseña"
+
+#: apps/web/src/components/ui/user-profile-timur.tsx:53
+msgid "Pick any of the following agreements below and start signing to get started"
+msgstr "Elige cualquiera de los siguientes acuerdos a continuación y comience a firmar para empezar"
+
+#: apps/web/src/components/(teams)/dialogs/invite-team-member-dialog.tsx:212
+msgid "Please check the CSV file and make sure it is according to our format"
+msgstr "Por favor, revisa el archivo CSV y asegúrate de que esté de acuerdo con nuestro formato"
+
+#: apps/web/src/app/(signing)/sign/[token]/waiting/page.tsx:81
+msgid "Please check your email for updates."
+msgstr "Por favor, revisa tu correo electrónico para actualizaciones."
+
+#: apps/web/src/app/(unauthenticated)/reset-password/[token]/page.tsx:34
+msgid "Please choose your new password"
+msgstr "Por favor, elige tu nueva contraseña"
+
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:174
+msgid "Please contact support if you would like to revert this action."
+msgstr "Por favor, contacta al soporte si deseas revertir esta acción."
+
+#: apps/web/src/components/forms/token.tsx:175
+msgid "Please enter a meaningful name for your token. This will help you identify it later."
+msgstr "Por favor, ingresa un nombre significativo para tu token. Esto te ayudará a identificarlo más tarde."
+
+#: apps/web/src/app/(signing)/sign/[token]/form.tsx:135
+msgid "Please mark as viewed to complete"
+msgstr "Por favor, marca como visto para completar"
+
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:459
+msgid "Please note that proceeding will remove direct linking recipient and turn it into a placeholder."
+msgstr "Por favor, ten en cuenta que proceder eliminará el destinatario de enlace directo y lo convertirá en un marcador de posición."
+
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:128
+msgid "Please note that this action is <0>irreversible0>."
+msgstr "Por favor, ten en cuenta que esta acción es <0>irreversible0>."
+
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:119
+msgid "Please note that this action is <0>irreversible0>. Once confirmed, this document will be permanently deleted."
+msgstr "Por favor, ten en cuenta que esta acción es <0>irreversible0>. Una vez confirmada, este documento será eliminado permanentemente."
+
+#: apps/web/src/app/(dashboard)/templates/delete-template-dialog.tsx:67
+msgid "Please note that this action is irreversible. Once confirmed, your template will be permanently deleted."
+msgstr "Por favor, ten en cuenta que esta acción es irreversible. Una vez confirmada, tu plantilla será eliminada permanentemente."
+
+#: apps/web/src/components/(dashboard)/settings/token/delete-token-dialog.tsx:133
+msgid "Please note that this action is irreversible. Once confirmed, your token will be permanently deleted."
+msgstr "Por favor, ten en cuenta que esta acción es irreversible. Una vez confirmada, tu token será eliminado permanentemente."
+
+#: apps/web/src/components/(dashboard)/settings/webhooks/delete-webhook-dialog.tsx:121
+msgid "Please note that this action is irreversible. Once confirmed, your webhook will be permanently deleted."
+msgstr "Por favor, ten en cuenta que esta acción es irreversible. Una vez confirmada, tu webhook será eliminado permanentemente."
+
+#: apps/web/src/components/(teams)/dialogs/delete-team-dialog.tsx:130
+msgid "Please note that you will lose access to all documents associated with this team & all the members will be removed and notified"
+msgstr "Por favor, ten en cuenta que perderás acceso a todos los documentos asociados con este equipo y todos los miembros serán eliminados y notificados"
+
+#: apps/web/src/app/(signing)/sign/[token]/reject-document-dialog.tsx:37
+msgid "Please provide a reason"
+msgstr "Please provide a reason"
+
+#: apps/web/src/components/forms/2fa/disable-authenticator-app-dialog.tsx:127
+msgid "Please provide a token from the authenticator, or a backup code. If you do not have a backup code available, please contact support."
+msgstr "Por favor, proporciona un token del autenticador o un código de respaldo. Si no tienes un código de respaldo disponible, contacta al soporte."
+
+#: apps/web/src/components/forms/2fa/view-recovery-codes-dialog.tsx:120
+msgid "Please provide a token from your authenticator, or a backup code."
+msgstr "Por favor, proporciona un token de tu autenticador, o un código de respaldo."
+
+#: apps/web/src/app/(signing)/sign/[token]/form.tsx:169
+msgid "Please review the document before signing."
+msgstr "Por favor, revise el documento antes de firmar."
+
+#: apps/web/src/components/forms/send-confirmation-email.tsx:64
+msgid "Please try again and make sure you enter the correct email address."
+msgstr "Por favor, intenta de nuevo y asegúrate de ingresar la dirección de correo electrónico correcta."
+
+#: apps/web/src/components/forms/signin.tsx:203
+msgid "Please try again later or login using your normal details"
+msgstr "Por favor, intenta de nuevo más tarde o inicia sesión utilizando tus datos normales"
+
+#: apps/web/src/app/(dashboard)/templates/new-template-dialog.tsx:80
+msgid "Please try again later."
+msgstr "Por favor, intenta de nuevo más tarde."
+
+#: apps/web/src/app/(dashboard)/settings/profile/delete-account-dialog.tsx:134
+msgid "Please type <0>{0}0> to confirm."
+msgstr "Por favor, escribe <0>{0}0> para confirmar."
+
+#: apps/web/src/components/(dashboard)/common/command-menu.tsx:214
+#: apps/web/src/components/(teams)/settings/layout/desktop-nav.tsx:58
+#: apps/web/src/components/(teams)/settings/layout/mobile-nav.tsx:67
+msgid "Preferences"
+msgstr "Preferencias"
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:204
+msgid "Preview"
+msgstr "Vista previa"
+
+#: apps/web/src/app/(recipient)/d/[token]/direct-template.tsx:63
+msgid "Preview and configure template."
+msgstr "Vista previa y configurar plantilla."
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:130
+#~ msgid "Preview: {0}"
+#~ msgstr "Preview: {0}"
+
+#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:105
+#: apps/web/src/components/formatter/template-type.tsx:22
+msgid "Private"
+msgstr "Privado"
+
+#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:115
+msgid "Private templates can only be modified and viewed by you."
+msgstr "Las plantillas privadas solo pueden ser modificadas y vistas por ti."
+
+#: apps/web/src/app/(dashboard)/settings/profile/page.tsx:28
+#: apps/web/src/components/(dashboard)/common/command-menu.tsx:69
+#: apps/web/src/components/(dashboard)/settings/layout/desktop-nav.tsx:36
+#: apps/web/src/components/(dashboard)/settings/layout/mobile-nav.tsx:39
+msgid "Profile"
+msgstr "Perfil"
+
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:184
+msgid "Profile is currently <0>hidden0>."
+msgstr "El perfil está actualmente <0>oculto0>."
+
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:172
+msgid "Profile is currently <0>visible0>."
+msgstr "El perfil está actualmente <0>visible0>."
+
+#: apps/web/src/app/(dashboard)/admin/users/[id]/page.tsx:72
+#: apps/web/src/components/forms/profile.tsx:72
+msgid "Profile updated"
+msgstr "Perfil actualizado"
+
+#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:78
+#: apps/web/src/components/formatter/template-type.tsx:27
+msgid "Public"
+msgstr "Público"
+
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:42
+#: apps/web/src/components/(dashboard)/settings/layout/desktop-nav.tsx:50
+#: apps/web/src/components/(dashboard)/settings/layout/mobile-nav.tsx:53
+#: apps/web/src/components/(teams)/settings/layout/desktop-nav.tsx:72
+#: apps/web/src/components/(teams)/settings/layout/mobile-nav.tsx:81
+msgid "Public Profile"
+msgstr "Perfil Público"
+
+#: apps/web/src/components/forms/public-profile-form.tsx:146
+msgid "Public profile URL"
+msgstr "URL del perfil público"
+
+#: apps/web/src/components/forms/v2/signup.tsx:450
+msgid "Public profile username"
+msgstr "Nombre de usuario del perfil público"
+
+#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:82
+msgid "Public templates are connected to your public profile. Any modifications to public templates will also appear in your public profile."
+msgstr "Las plantillas públicas están conectadas a tu perfil público. Cualquier modificación a las plantillas públicas también aparecerá en tu perfil público."
+
+#: apps/web/src/app/(signing)/sign/[token]/signing-field-container.tsx:144
+msgid "Read only field"
+msgstr "Campo de solo lectura"
+
+#: apps/web/src/components/general/signing-disclosure.tsx:21
+msgid "Read the full <0>signature disclosure0>."
+msgstr "Lea la <0>divulgación de firma0> completa."
+
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:106
+msgid "Ready"
+msgstr "Listo"
+
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:281
+msgid "Reason"
+msgstr "Razón"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:146
+msgid "Reason for rejection:"
+msgstr "Reason for rejection:"
+
+#: apps/web/src/app/(signing)/sign/[token]/reject-document-dialog.tsx:38
+msgid "Reason must be less than 500 characters"
+msgstr "Reason must be less than 500 characters"
+
+#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-dialog.tsx:62
+msgid "Reauthentication is required to sign this field"
+msgstr "Se requiere reautenticación para firmar este campo"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recent-activity.tsx:57
+#: apps/web/src/app/(dashboard)/settings/security/page.tsx:130
+msgid "Recent activity"
+msgstr "Actividad reciente"
+
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:47
+msgid "Recent documents"
+msgstr "Documentos recientes"
+
+#: apps/web/src/app/(dashboard)/documents/data-table.tsx:69
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:120
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:280
+msgid "Recipient"
+msgstr "Destinatario"
+
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/recipient-item.tsx:118
+msgid "Recipient updated"
+msgstr "Destinatario actualizado"
+
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/page.tsx:66
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:49
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recipients.tsx:30
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:139
+msgid "Recipients"
+msgstr "Destinatarios"
+
+#: apps/web/src/app/(dashboard)/admin/stats/page.tsx:102
+msgid "Recipients metrics"
+msgstr "Métricas de destinatarios"
+
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:164
+msgid "Recipients will still retain their copy of the document"
+msgstr "Los destinatarios aún conservarán su copia del documento"
+
+#: apps/web/src/components/forms/2fa/recovery-code-list.tsx:26
+msgid "Recovery code copied"
+msgstr "Código de recuperación copiado"
+
+#: apps/web/src/app/(dashboard)/settings/security/page.tsx:84
+msgid "Recovery codes"
+msgstr "Códigos de recuperación"
+
+#: apps/web/src/app/(signing)/sign/[token]/complete/claim-account.tsx:78
+#: apps/web/src/components/forms/signup.tsx:93
+#: apps/web/src/components/forms/v2/signup.tsx:127
+msgid "Registration Successful"
+msgstr "Registro exitoso"
+
+#: apps/web/src/app/(signing)/sign/[token]/reject-document-dialog.tsx:109
+#: apps/web/src/app/(signing)/sign/[token]/reject-document-dialog.tsx:116
+#: apps/web/src/app/(signing)/sign/[token]/reject-document-dialog.tsx:162
+msgid "Reject Document"
+msgstr "Reject Document"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:141
+#: apps/web/src/components/(dashboard)/avatar/stack-avatars-with-tooltip.tsx:101
+msgid "Rejected"
+msgstr "Rejected"
+
+#: apps/web/src/app/(unauthenticated)/forgot-password/page.tsx:34
+msgid "Remembered your password? <0>Sign In0>"
+msgstr "¿Recordaste tu contraseña? <0>Iniciar sesión0>"
+
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:193
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:431
+#: apps/web/src/app/(signing)/sign/[token]/signing-field-container.tsx:156
+#: apps/web/src/app/(signing)/sign/[token]/signing-field-container.tsx:180
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/branding-preferences.tsx:250
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/team-email-dropdown.tsx:89
+#: apps/web/src/components/(teams)/dialogs/remove-team-email-dialog.tsx:159
+#: apps/web/src/components/(teams)/tables/pending-user-teams-data-table-actions.tsx:54
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:166
+#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:167
+#: apps/web/src/components/forms/avatar-image.tsx:169
+msgid "Remove"
+msgstr "Eliminar"
+
+#: apps/web/src/components/(teams)/dialogs/remove-team-email-dialog.tsx:108
+msgid "Remove team email"
+msgstr "Eliminar correo electrónico del equipo"
+
+#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:164
+msgid "Remove team member"
+msgstr "Eliminar miembro del equipo"
+
+#: apps/web/src/components/forms/password.tsx:139
+#: apps/web/src/components/forms/reset-password.tsx:126
+msgid "Repeat Password"
+msgstr "Repetir contraseña"
+
+#: apps/web/src/components/(teams)/dialogs/transfer-team-dialog.tsx:282
+msgid "Request transfer"
+msgstr "Solicitar transferencia"
+
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/admin-actions.tsx:61
+msgid "Reseal document"
+msgstr "Re-sellar documento"
+
+#: apps/web/src/app/(dashboard)/documents/_action-items/resend-document.tsx:118
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:154
+msgid "Resend"
+msgstr "Reenviar"
+
+#: apps/web/src/components/(dashboard)/layout/verify-email-banner.tsx:128
+msgid "Resend Confirmation Email"
+msgstr "Reenviar correo de confirmación"
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/team-email-dropdown.tsx:67
+msgid "Resend verification"
+msgstr "Reenviar verificación"
+
+#: apps/web/src/components/(teams)/forms/update-team-form.tsx:266
+#: apps/web/src/components/forms/public-profile-form.tsx:267
+msgid "Reset"
+msgstr "Restablecer"
+
+#: apps/web/src/components/forms/forgot-password.tsx:56
+msgid "Reset email sent"
+msgstr "Correo de restablecimiento enviado"
+
+#: apps/web/src/app/(unauthenticated)/reset-password/[token]/page.tsx:30
+#: apps/web/src/components/forms/forgot-password.tsx:93
+#: apps/web/src/components/forms/reset-password.tsx:138
+msgid "Reset Password"
+msgstr "Restablecer contraseña"
+
+#: apps/web/src/components/forms/reset-password.tsx:138
+msgid "Resetting Password..."
+msgstr "Restableciendo contraseña..."
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/layout-billing-banner.tsx:99
+msgid "Resolve"
+msgstr "Resolver"
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/layout-billing-banner.tsx:132
+msgid "Resolve payment"
+msgstr "Resolver pago"
+
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:126
+msgid "Retention of Documents"
+msgstr "Retención de Documentos"
+
+#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-passkey.tsx:168
+msgid "Retry"
+msgstr "Reintentar"
+
+#: apps/web/src/app/(unauthenticated)/team/decline/[token]/page.tsx:48
+#: apps/web/src/app/(unauthenticated)/team/invite/[token]/page.tsx:50
+#: apps/web/src/app/(unauthenticated)/team/verify/email/[token]/page.tsx:45
+#: apps/web/src/app/(unauthenticated)/team/verify/transfer/[token]/page.tsx:48
+msgid "Return"
+msgstr "Regresar"
+
+#: apps/web/src/app/(unauthenticated)/team/decline/[token]/page.tsx:130
+msgid "Return to Dashboard"
+msgstr "Regresar al tablero"
+
+#: apps/web/src/app/(unauthenticated)/team/decline/[token]/page.tsx:136
+msgid "Return to Home"
+msgstr "Regresar a la página de inicio"
+
+#: apps/web/src/app/(unauthenticated)/check-email/page.tsx:32
+#: apps/web/src/app/(unauthenticated)/reset-password/page.tsx:32
+msgid "Return to sign in"
+msgstr "Regresar para iniciar sesión"
+
+#: apps/web/src/app/(dashboard)/settings/teams/team-email-usage.tsx:118
+msgid "Revoke"
+msgstr "Revocar"
+
+#: apps/web/src/app/(dashboard)/settings/teams/team-email-usage.tsx:87
+msgid "Revoke access"
+msgstr "Revocar acceso"
+
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:283
+#: apps/web/src/components/(teams)/dialogs/invite-team-member-dialog.tsx:318
+#: apps/web/src/components/(teams)/dialogs/update-team-member-dialog.tsx:163
+#: apps/web/src/components/(teams)/tables/current-user-teams-data-table.tsx:82
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:123
+#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:105
+msgid "Role"
+msgstr "Rol"
+
+#: apps/web/src/app/(dashboard)/admin/users/[id]/page.tsx:131
+#: apps/web/src/app/(dashboard)/admin/users/data-table-users.tsx:76
+msgid "Roles"
+msgstr "Roles"
+
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:446
+#: apps/web/src/app/(signing)/sign/[token]/number-field.tsx:337
+#: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:344
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/branding-preferences.tsx:312
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:232
+msgid "Save"
+msgstr "Guardar"
+
+#: apps/web/src/app/(dashboard)/documents/data-table-sender-filter.tsx:63
+#: apps/web/src/components/(dashboard)/layout/desktop-nav.tsx:81
+#: apps/web/src/components/(teams)/tables/teams-member-page-data-table.tsx:69
+#: apps/web/src/components/(teams)/tables/user-settings-teams-page-data-table.tsx:64
+msgid "Search"
+msgstr "Buscar"
+
+#: apps/web/src/app/(dashboard)/admin/documents/document-results.tsx:140
+msgid "Search by document title"
+msgstr "Buscar por título del documento"
+
+#: apps/web/src/app/(dashboard)/admin/users/data-table-users.tsx:144
+msgid "Search by name or email"
+msgstr "Buscar por nombre o correo electrónico"
+
+#: apps/web/src/components/(dashboard)/document-search/document-search.tsx:42
+msgid "Search documents..."
+msgstr "Buscar documentos..."
+
+#: apps/web/src/app/(dashboard)/settings/webhooks/[id]/page.tsx:189
+#: apps/web/src/components/(dashboard)/settings/webhooks/create-webhook-dialog.tsx:217
+msgid "Secret"
+msgstr "Secreto"
+
+#: apps/web/src/app/(dashboard)/settings/security/page.tsx:34
+#: apps/web/src/components/(dashboard)/settings/layout/desktop-nav.tsx:77
+#: apps/web/src/components/(dashboard)/settings/layout/mobile-nav.tsx:80
+msgid "Security"
+msgstr "Seguridad"
+
+#: apps/web/src/app/(dashboard)/settings/security/activity/page.tsx:25
+msgid "Security activity"
+msgstr "Actividad de seguridad"
+
+#: apps/web/src/app/(signing)/sign/[token]/dropdown-field.tsx:194
+msgid "Select"
+msgstr "Seleccionar"
+
+#: apps/web/src/app/(dashboard)/documents/move-document-dialog.tsx:87
+#: apps/web/src/app/(dashboard)/templates/move-template-dialog.tsx:86
+msgid "Select a team"
+msgstr "Seleccionar un equipo"
+
+#: apps/web/src/app/(dashboard)/documents/move-document-dialog.tsx:81
+msgid "Select a team to move this document to. This action cannot be undone."
+msgstr "Seleccionar un equipo para mover este documento. Esta acción no se puede deshacer."
+
+#: apps/web/src/app/(dashboard)/templates/move-template-dialog.tsx:80
+msgid "Select a team to move this template to. This action cannot be undone."
+msgstr "Seleccionar un equipo para mover esta plantilla. Esta acción no se puede deshacer."
+
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:261
+msgid "Select a template you'd like to display on your public profile"
+msgstr "Seleccionar una plantilla que te gustaría mostrar en tu perfil público"
+
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:257
+msgid "Select a template you'd like to display on your team's public profile"
+msgstr "Seleccionar una plantilla que te gustaría mostrar en el perfil público de tu equipo"
+
+#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-passkey.tsx:222
+msgid "Select passkey"
+msgstr "Seleccionar clave de acceso"
+
+#: apps/web/src/components/forms/send-confirmation-email.tsx:94
+msgid "Send confirmation email"
+msgstr "Enviar correo de confirmación"
+
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:326
+msgid "Send document"
+msgstr "Enviar documento"
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:188
+#: apps/web/src/components/(teams)/forms/update-team-form.tsx:220
+msgid "Send on Behalf of Team"
+msgstr "Enviar en nombre del equipo"
+
+#: apps/web/src/app/(dashboard)/documents/_action-items/resend-document.tsx:191
+msgid "Send reminder"
+msgstr "Enviar recordatorio"
+
+#: apps/web/src/app/(dashboard)/documents/data-table.tsx:65
+msgid "Sender"
+msgstr "Remitente"
+
+#: apps/web/src/components/forms/forgot-password.tsx:93
+msgid "Sending Reset Email..."
+msgstr "Enviando correo de restablecimiento..."
+
+#: apps/web/src/components/(dashboard)/layout/verify-email-banner.tsx:128
+msgid "Sending..."
+msgstr "Enviando..."
+
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:101
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:248
+msgid "Sent"
+msgstr "Enviado"
+
+#: apps/web/src/app/(signing)/sign/[token]/complete/claim-account.tsx:149
+msgid "Set a password"
+msgstr "Establecer una contraseña"
+
+#: apps/web/src/app/(dashboard)/settings/layout.tsx:20
+#: apps/web/src/components/(dashboard)/common/command-menu.tsx:65
+#: apps/web/src/components/(dashboard)/common/command-menu.tsx:211
+#: apps/web/src/components/(dashboard)/layout/mobile-navigation.tsx:47
+msgid "Settings"
+msgstr "Configuraciones"
+
+#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-passkey.tsx:196
+msgid "Setup"
+msgstr "Configuración"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:148
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:193
+msgid "Share"
+msgstr "Compartir"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:179
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:219
+msgid "Share Signing Card"
+msgstr "Compartir tarjeta de firma"
+
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:163
+msgid "Show"
+msgstr "Mostrar"
+
+#: apps/web/src/components/document/document-history-sheet.tsx:113
+msgid "Show additional information"
+msgstr "Mostrar información adicional"
+
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:45
+msgid "Show templates in your public profile for your audience to sign and get started quickly"
+msgstr "Mostrar plantillas en tu perfil público para que tu audiencia firme y comience rápidamente"
+
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:52
+msgid "Show templates in your team public profile for your audience to sign and get started quickly"
+msgstr "Mostrar plantillas en el perfil público de tu equipo para que tu audiencia firme y comience rápidamente"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-button.tsx:83
+#: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:114
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:139
+#: apps/web/src/app/(profile)/p/[url]/page.tsx:192
+#: apps/web/src/app/(signing)/sign/[token]/auto-sign.tsx:229
+#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-2fa.tsx:182
+#: apps/web/src/app/(signing)/sign/[token]/name-field.tsx:224
+#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:124
+#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:256
+#: apps/web/src/components/ui/user-profile-skeleton.tsx:75
+#: apps/web/src/components/ui/user-profile-timur.tsx:81
+msgid "Sign"
+msgstr "Firmar"
+
+#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:217
+msgid "Sign as {0} <0>({1})0>"
+msgstr "Firmar como {0} <0>({1})0>"
+
+#: apps/web/src/app/(signing)/sign/[token]/name-field.tsx:183
+msgid "Sign as<0>{0} <1>({1})1>0>"
+msgstr "Firmar como<0>{0} <1>({1})1>0>"
+
+#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:330
+#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:210
+msgid "Sign document"
+msgstr "Firmar documento"
+
+#: apps/web/src/app/(signing)/sign/[token]/form.tsx:128
+msgid "Sign Document"
+msgstr "Firmar Documento"
+
+#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-dialog.tsx:59
+msgid "Sign field"
+msgstr "Campo de firma"
+
+#: apps/web/src/components/forms/signup.tsx:212
+#: apps/web/src/components/forms/v2/signup.tsx:362
+msgid "Sign Here"
+msgstr "Firmar aquí"
+
+#: apps/web/src/app/not-found.tsx:29
+#: apps/web/src/components/forms/signin.tsx:383
+#: apps/web/src/components/forms/signin.tsx:510
+msgid "Sign In"
+msgstr "Iniciar sesión"
+
+#: apps/web/src/app/(unauthenticated)/signin/page.tsx:29
+msgid "Sign in to your account"
+msgstr "Inicia sesión en tu cuenta"
+
+#: apps/web/src/components/(dashboard)/layout/menu-switcher.tsx:297
+#: apps/web/src/components/(dashboard)/layout/mobile-navigation.tsx:84
+msgid "Sign Out"
+msgstr "Cerrar sesión"
+
+#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:351
+#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:231
+msgid "Sign the document to complete the process."
+msgstr "Firma el documento para completar el proceso."
+
+#: apps/web/src/app/(signing)/sign/[token]/signing-auth-page.tsx:67
+msgid "Sign up"
+msgstr "Regístrate"
+
+#: apps/web/src/components/forms/signup.tsx:235
+msgid "Sign Up"
+msgstr "Regístrate"
+
+#: apps/web/src/components/forms/signup.tsx:257
+#: apps/web/src/components/forms/v2/signup.tsx:401
+msgid "Sign Up with Google"
+msgstr "Regístrate con Google"
+
+#: apps/web/src/components/forms/signup.tsx:281
+#: apps/web/src/components/forms/v2/signup.tsx:417
+msgid "Sign Up with OIDC"
+msgstr "Regístrate con OIDC"
+
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/recipient-item.tsx:88
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:177
+#: apps/web/src/app/(recipient)/d/[token]/sign-direct-template.tsx:338
+#: apps/web/src/app/(signing)/sign/[token]/form.tsx:192
+#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:195
+#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:225
+#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:392
+#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:271
+#: apps/web/src/components/forms/profile.tsx:132
+msgid "Signature"
+msgstr "Firma"
+
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:220
+msgid "Signature ID"
+msgstr "ID de Firma"
+
+#: apps/web/src/app/(dashboard)/admin/stats/page.tsx:123
+msgid "Signatures Collected"
+msgstr "Firmas recolectadas"
+
+#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:200
+msgid "Signatures will appear once the document has been completed"
+msgstr "Las firmas aparecerán una vez que el documento se haya completado"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:114
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:270
+#: apps/web/src/components/document/document-read-only-fields.tsx:84
+msgid "Signed"
+msgstr "Firmado"
+
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:176
+msgid "Signer Events"
+msgstr "Eventos del Firmante"
+
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:168
+msgid "Signing Certificate"
+msgstr "Certificado de Firma"
+
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:303
+msgid "Signing certificate provided by"
+msgstr "Certificado de firma proporcionado por"
+
+#: apps/web/src/components/forms/signin.tsx:383
+#: apps/web/src/components/forms/signin.tsx:510
+msgid "Signing in..."
+msgstr "Iniciando sesión..."
+
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:160
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:203
+msgid "Signing Links"
+msgstr "Enlaces de firma"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:339
+msgid "Signing links have been generated for this document."
+msgstr "Se han generado enlaces de firma para este documento."
+
+#: apps/web/src/components/forms/signup.tsx:235
+msgid "Signing up..."
+msgstr "Registrándose..."
+
+#: apps/web/src/app/(profile)/p/[url]/page.tsx:109
+msgid "Since {0}"
+msgstr "Desde {0}"
+
+#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:102
+msgid "Site Banner"
+msgstr "Banner del sitio"
+
+#: apps/web/src/app/(dashboard)/admin/nav.tsx:93
+#: apps/web/src/app/(dashboard)/admin/site-settings/page.tsx:26
+msgid "Site Settings"
+msgstr "Configuraciones del sitio"
+
+#: apps/web/src/app/(dashboard)/documents/_action-items/resend-document.tsx:105
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-button.tsx:63
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:91
+#: apps/web/src/app/(dashboard)/documents/[id]/logs/download-audit-log-button.tsx:65
+#: apps/web/src/app/(dashboard)/documents/[id]/logs/download-certificate-button.tsx:68
+#: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:75
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:106
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:80
+#: apps/web/src/app/(dashboard)/documents/duplicate-document-dialog.tsx:72
+#: apps/web/src/app/(dashboard)/settings/billing/billing-plans.tsx:62
+#: apps/web/src/app/(dashboard)/settings/billing/billing-portal-button.tsx:51
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:124
+#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:73
+#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:93
+#: apps/web/src/app/(dashboard)/settings/teams/accept-team-invitation-button.tsx:32
+#: apps/web/src/app/(dashboard)/settings/teams/decline-team-invitation-button.tsx:32
+#: apps/web/src/app/(dashboard)/settings/teams/team-email-usage.tsx:44
+#: apps/web/src/app/(dashboard)/templates/delete-template-dialog.tsx:50
+#: apps/web/src/app/(dashboard)/templates/new-template-dialog.tsx:79
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:104
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:127
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:151
+#: apps/web/src/app/(recipient)/d/[token]/direct-template.tsx:118
+#: apps/web/src/app/(recipient)/d/[token]/signing-auth-page.tsx:27
+#: apps/web/src/app/(signing)/sign/[token]/signing-auth-page.tsx:38
+#: apps/web/src/app/(teams)/t/[teamUrl]/layout-billing-banner.tsx:53
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/branding-preferences.tsx:107
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/team-email-dropdown.tsx:39
+#: apps/web/src/app/(unauthenticated)/verify-email/[token]/page.tsx:61
+#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:243
+#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:125
+#: apps/web/src/components/(teams)/dialogs/create-team-checkout-dialog.tsx:50
+#: apps/web/src/components/(teams)/dialogs/create-team-checkout-dialog.tsx:99
+#: apps/web/src/components/(teams)/dialogs/invite-team-member-dialog.tsx:210
+#: apps/web/src/components/(teams)/dialogs/remove-team-email-dialog.tsx:64
+#: apps/web/src/components/(teams)/dialogs/remove-team-email-dialog.tsx:83
+#: apps/web/src/components/(teams)/tables/pending-user-teams-data-table-actions.tsx:33
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:68
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:85
+#: apps/web/src/components/(teams)/team-billing-portal-button.tsx:29
+msgid "Something went wrong"
+msgstr "Algo salió mal"
+
+#: apps/web/src/app/(unauthenticated)/team/verify/transfer/[token]/page.tsx:98
+msgid "Something went wrong while attempting to transfer the ownership of team <0>{0}0> to your. Please try again later or contact support."
+msgstr "Algo salió mal al intentar transferir la propiedad del equipo <0>{0}0> a tu equipo. Por favor, intenta de nuevo más tarde o contacta al soporte."
+
+#: apps/web/src/app/(unauthenticated)/team/verify/email/[token]/page.tsx:120
+msgid "Something went wrong while attempting to verify your email address for <0>{0}0>. Please try again later."
+msgstr "Algo salió mal al intentar verificar tu dirección de correo electrónico para <0>{0}0>. Por favor, intenta de nuevo más tarde."
+
+#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-passkey.tsx:158
+msgid "Something went wrong while loading your passkeys."
+msgstr "Algo salió mal al cargar tus claves de acceso."
+
+#: apps/web/src/components/(dashboard)/layout/verify-email-banner.tsx:55
+msgid "Something went wrong while sending the confirmation email."
+msgstr "Algo salió mal al enviar el correo de confirmación."
+
+#: apps/web/src/components/(teams)/dialogs/delete-team-dialog.tsx:96
+msgid "Something went wrong while updating the team billing subscription, please contact support."
+msgstr "Algo salió mal al actualizar la suscripción de facturación del equipo, por favor contacta al soporte."
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:96
+msgid "Something went wrong!"
+msgstr "¡Algo salió mal!"
+
+#: apps/web/src/app/(dashboard)/settings/security/passkeys/create-passkey-dialog.tsx:240
+#: apps/web/src/components/forms/2fa/view-recovery-codes-dialog.tsx:154
+msgid "Something went wrong. Please try again or contact support."
+msgstr "Algo salió mal. Por favor, intenta de nuevo o contacta al soporte."
+
+#: apps/web/src/app/(dashboard)/documents/[id]/logs/download-audit-log-button.tsx:67
+msgid "Sorry, we were unable to download the audit logs. Please try again later."
+msgstr "Lo sentimos, no pudimos descargar los registros de auditoría. Por favor, intenta de nuevo más tarde."
+
+#: apps/web/src/app/(dashboard)/documents/[id]/logs/download-certificate-button.tsx:70
+msgid "Sorry, we were unable to download the certificate. Please try again later."
+msgstr "Lo sentimos, no pudimos descargar el certificado. Por favor, intenta de nuevo más tarde."
+
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:138
+msgid "Source"
+msgstr "Fuente"
+
+#: apps/web/src/app/(dashboard)/admin/nav.tsx:37
+msgid "Stats"
+msgstr "Estadísticas"
+
+#: apps/web/src/app/(dashboard)/admin/documents/document-results.tsx:81
+#: apps/web/src/app/(dashboard)/admin/subscriptions/page.tsx:32
+#: apps/web/src/app/(dashboard)/documents/data-table.tsx:79
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:130
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:93
+#: apps/web/src/components/(teams)/tables/team-billing-invoices-data-table.tsx:73
+msgid "Status"
+msgstr "Estado"
+
+#: apps/web/src/app/(dashboard)/settings/billing/billing-plans.tsx:129
+msgid "Subscribe"
+msgstr "Suscribirse"
+
+#: apps/web/src/app/(dashboard)/admin/users/data-table-users.tsx:81
+msgid "Subscription"
+msgstr "Suscripción"
+
+#: apps/web/src/app/(dashboard)/admin/nav.tsx:79
+msgid "Subscriptions"
+msgstr "Suscripciones"
+
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/admin-actions.tsx:35
+#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:67
+#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:87
+#: apps/web/src/app/(dashboard)/settings/teams/accept-team-invitation-button.tsx:25
+#: apps/web/src/app/(dashboard)/settings/teams/decline-team-invitation-button.tsx:25
+#: apps/web/src/app/(dashboard)/settings/teams/team-email-usage.tsx:37
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:118
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:141
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/team-email-dropdown.tsx:32
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/team-transfer-status.tsx:44
+#: apps/web/src/components/(dashboard)/layout/verify-email-banner.tsx:44
+#: apps/web/src/components/(teams)/dialogs/add-team-email-dialog.tsx:79
+#: apps/web/src/components/(teams)/dialogs/create-team-dialog.tsx:88
+#: apps/web/src/components/(teams)/dialogs/delete-team-dialog.tsx:72
+#: apps/web/src/components/(teams)/dialogs/delete-team-member-dialog.tsx:49
+#: apps/web/src/components/(teams)/dialogs/invite-team-member-dialog.tsx:150
+#: apps/web/src/components/(teams)/dialogs/leave-team-dialog.tsx:49
+#: apps/web/src/components/(teams)/dialogs/remove-team-email-dialog.tsx:57
+#: apps/web/src/components/(teams)/dialogs/remove-team-email-dialog.tsx:76
+#: apps/web/src/components/(teams)/dialogs/transfer-team-dialog.tsx:108
+#: apps/web/src/components/(teams)/dialogs/update-team-email-dialog.tsx:79
+#: apps/web/src/components/(teams)/dialogs/update-team-member-dialog.tsx:92
+#: apps/web/src/components/(teams)/forms/update-team-form.tsx:106
+#: apps/web/src/components/(teams)/tables/pending-user-teams-data-table-actions.tsx:27
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:62
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:79
+#: apps/web/src/components/forms/public-profile-form.tsx:80
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:133
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:170
+msgid "Success"
+msgstr "Éxito"
+
+#: apps/web/src/app/(dashboard)/settings/security/passkeys/create-passkey-dialog.tsx:87
+msgid "Successfully created passkey"
+msgstr "Clave de acceso creada con éxito"
+
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:57
+msgid "System Requirements"
+msgstr "Requisitos del Sistema"
+
+#: apps/web/src/components/(dashboard)/common/command-menu.tsx:266
+msgid "System Theme"
+msgstr "Tema del sistema"
+
+#: apps/web/src/components/(teams)/tables/current-user-teams-data-table.tsx:65
+#: apps/web/src/components/(teams)/tables/pending-user-teams-data-table.tsx:64
+msgid "Team"
+msgstr "Equipo"
+
+#: apps/web/src/components/(teams)/dialogs/create-team-checkout-dialog.tsx:85
+msgid "Team checkout"
+msgstr "Checkout del equipo"
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:67
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:146
+msgid "Team email"
+msgstr "Correo del equipo"
+
+#: apps/web/src/app/(dashboard)/settings/teams/team-email-usage.tsx:58
+msgid "Team Email"
+msgstr "Correo del equipo"
+
+#: apps/web/src/app/(unauthenticated)/team/verify/email/[token]/page.tsx:57
+msgid "Team email already verified!"
+msgstr "¡Correo electrónico del equipo ya verificado!"
+
+#: apps/web/src/components/(teams)/dialogs/remove-team-email-dialog.tsx:58
+msgid "Team email has been removed"
+msgstr "El correo del equipo ha sido eliminado"
+
+#: apps/web/src/app/(unauthenticated)/team/verify/email/[token]/page.tsx:116
+msgid "Team email verification"
+msgstr "Verificación del correo del equipo"
+
+#: apps/web/src/app/(unauthenticated)/team/verify/email/[token]/page.tsx:132
+msgid "Team email verified!"
+msgstr "¡Correo del equipo verificado!"
+
+#: apps/web/src/components/(teams)/dialogs/update-team-email-dialog.tsx:80
+msgid "Team email was updated."
+msgstr "El correo del equipo ha sido actualizado."
+
+#: apps/web/src/app/(unauthenticated)/team/decline/[token]/page.tsx:91
+#: apps/web/src/app/(unauthenticated)/team/invite/[token]/page.tsx:96
+msgid "Team invitation"
+msgstr "Invitación del equipo"
+
+#: apps/web/src/components/(teams)/dialogs/invite-team-member-dialog.tsx:151
+msgid "Team invitations have been sent."
+msgstr "Las invitaciones al equipo han sido enviadas."
+
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:109
+#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:86
+msgid "Team Member"
+msgstr "Miembro del equipo"
+
+#: apps/web/src/components/(teams)/dialogs/create-team-dialog.tsx:166
+#: apps/web/src/components/(teams)/forms/update-team-form.tsx:153
+msgid "Team Name"
+msgstr "Nombre del equipo"
+
+#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:105
+msgid "Team Only"
+msgstr "Solo equipo"
+
+#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:110
+msgid "Team only templates are not linked anywhere and are visible only to your team."
+msgstr "Las plantillas solo para el equipo no están vinculadas en ningún lado y son visibles solo para tu equipo."
+
+#: apps/web/src/app/(unauthenticated)/team/verify/transfer/[token]/page.tsx:94
+msgid "Team ownership transfer"
+msgstr "Transferencia de propiedad del equipo"
+
+#: apps/web/src/app/(unauthenticated)/team/verify/transfer/[token]/page.tsx:60
+msgid "Team ownership transfer already completed!"
+msgstr "¡La transferencia de propiedad del equipo ya se ha completado!"
+
+#: apps/web/src/app/(unauthenticated)/team/verify/transfer/[token]/page.tsx:110
+msgid "Team ownership transferred!"
+msgstr "¡Propiedad del equipo transferida!"
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/page.tsx:33
+msgid "Team Preferences"
+msgstr "Preferencias del equipo"
+
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:49
+msgid "Team Public Profile"
+msgstr "Perfil público del equipo"
+
+#: apps/web/src/components/(dashboard)/layout/menu-switcher.tsx:277
+msgid "Team settings"
+msgstr "Configuraciones del equipo"
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/layout.tsx:50
+msgid "Team Settings"
+msgstr "Configuraciones del equipo"
+
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:51
+msgid "Team templates"
+msgstr "Plantillas del equipo"
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/team-transfer-status.tsx:79
+msgid "Team transfer in progress"
+msgstr "Transferencia de equipo en progreso"
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/team-transfer-status.tsx:77
+msgid "Team transfer request expired"
+msgstr "Solicitud de transferencia del equipo expirada"
+
+#: apps/web/src/components/(teams)/dialogs/create-team-dialog.tsx:196
+#: apps/web/src/components/(teams)/forms/update-team-form.tsx:169
+msgid "Team URL"
+msgstr "URL del equipo"
+
+#: apps/web/src/app/(dashboard)/settings/teams/page.tsx:25
+#: apps/web/src/components/(dashboard)/layout/menu-switcher.tsx:162
+#: apps/web/src/components/(dashboard)/layout/mobile-navigation.tsx:43
+#: apps/web/src/components/(dashboard)/settings/layout/desktop-nav.tsx:64
+#: apps/web/src/components/(dashboard)/settings/layout/mobile-nav.tsx:67
+msgid "Teams"
+msgstr "Equipos"
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/layout-billing-banner.tsx:83
+msgid "Teams restricted"
+msgstr "Equipos restringidos"
+
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/template-edit-page-view.tsx:63
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:39
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:148
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:228
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view.tsx:146
+#: apps/web/src/components/(teams)/dialogs/invite-team-member-dialog.tsx:408
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:271
+msgid "Template"
+msgstr "Plantilla"
+
+#: apps/web/src/app/(dashboard)/templates/delete-template-dialog.tsx:41
+msgid "Template deleted"
+msgstr "Plantilla eliminada"
+
+#: apps/web/src/app/(dashboard)/templates/new-template-dialog.tsx:67
+msgid "Template document uploaded"
+msgstr "Documento de plantilla subido"
+
+#: apps/web/src/app/(dashboard)/templates/duplicate-template-dialog.tsx:42
+msgid "Template duplicated"
+msgstr "Plantilla duplicada"
+
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:134
+msgid "Template has been removed from your public profile."
+msgstr "La plantilla ha sido eliminada de tu perfil público."
+
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:171
+msgid "Template has been updated."
+msgstr "La plantilla ha sido actualizada."
+
+#: apps/web/src/app/(dashboard)/templates/move-template-dialog.tsx:48
+msgid "Template moved"
+msgstr "Plantilla movida"
+
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:223
+msgid "Template saved"
+msgstr "Plantilla guardada"
+
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view.tsx:87
+#: apps/web/src/app/(dashboard)/templates/templates-page-view.tsx:55
+#: apps/web/src/components/(dashboard)/common/command-menu.tsx:208
+#: apps/web/src/components/(dashboard)/layout/desktop-nav.tsx:22
+#: apps/web/src/components/(dashboard)/layout/mobile-navigation.tsx:39
+msgid "Templates"
+msgstr "Plantillas"
+
+#: apps/web/src/app/(dashboard)/templates/new-template-dialog.tsx:106
+msgid "Templates allow you to quickly generate documents with pre-filled recipients and fields."
+msgstr "Las plantillas te permiten generar documentos rápidamente con destinatarios y campos prellenados."
+
+#: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:257
+#: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:274
+msgid "Text"
+msgstr "Texto"
+
+#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:166
+msgid "Text Color"
+msgstr "Color de texto"
+
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:24
+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."
+msgstr "Gracias por usar Documenso para realizar su firma electrónica de documentos. El propósito de esta divulgación es informarle sobre el proceso, la legalidad y sus derechos con respecto al uso de firmas electrónicas en nuestra plataforma. Al optar por usar una firma electrónica, usted está aceptando los términos y condiciones descritos a continuación."
+
+#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:52
+msgid "The account has been deleted successfully."
+msgstr "La cuenta ha sido eliminada con éxito."
+
+#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:197
+msgid "The content to show in the banner, HTML is allowed"
+msgstr "El contenido que se mostrará en el banner, se permite HTML"
+
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:78
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-badge.tsx:32
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:164
+msgid "The direct link has been copied to your clipboard"
+msgstr "El enlace directo ha sido copiado a tu portapapeles"
+
+#: apps/web/src/app/(dashboard)/documents/move-document-dialog.tsx:50
+msgid "The document has been successfully moved to the selected team."
+msgstr "El documento ha sido movido con éxito al equipo seleccionado."
+
+#: apps/web/src/app/embed/completed.tsx:29
+msgid "The document is now completed, please follow any instructions provided within the parent application."
+msgstr "El documento ahora está completado, por favor sigue cualquier instrucción proporcionada dentro de la aplicación principal."
+
+#: apps/web/src/app/(signing)/sign/[token]/rejected/page.tsx:92
+msgid "The document owner has been notified of your decision. They may contact you with further instructions if necessary."
+msgstr "The document owner has been notified of your decision. They may contact you with further instructions if necessary."
+
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:182
+msgid "The document was created but could not be sent to recipients."
+msgstr "El documento fue creado pero no se pudo enviar a los destinatarios."
+
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:161
+msgid "The document will be hidden from your account"
+msgstr "El documento será ocultado de tu cuenta"
+
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:334
+msgid "The document will be immediately sent to recipients if this is checked."
+msgstr "El documento se enviará inmediatamente a los destinatarios si esto está marcado."
+
+#: apps/web/src/app/(dashboard)/settings/webhooks/[id]/page.tsx:175
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/[id]/page.tsx:179
+#: apps/web/src/components/(dashboard)/settings/webhooks/create-webhook-dialog.tsx:203
+msgid "The events that will trigger a webhook to be sent to your URL."
+msgstr "Los eventos que activarán un webhook para ser enviado a tu URL."
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/documents/page.tsx:27
+#~ msgid "The global settings for the documents in your team account."
+#~ msgstr "The global settings for the documents in your team account."
+
+#: apps/web/src/app/(unauthenticated)/team/verify/transfer/[token]/page.tsx:114
+msgid "The ownership of team <0>{0}0> has been successfully transferred to you."
+msgstr "La propiedad del equipo <0>{0}0> ha sido transferida con éxito a ti."
+
+#: apps/web/src/components/partials/not-found.tsx:53
+msgid "The page you are looking for was moved, removed, renamed or might never have existed."
+msgstr "La página que buscas fue movida, eliminada, renombrada o puede que nunca haya existido."
+
+#: apps/web/src/components/forms/public-profile-form.tsx:118
+msgid "The profile link has been copied to your clipboard"
+msgstr "El enlace del perfil ha sido copiado a tu portapapeles"
+
+#: apps/web/src/app/(profile)/p/[url]/not-found.tsx:23
+msgid "The profile you are looking for could not be found."
+msgstr "El perfil que estás buscando no se pudo encontrar."
+
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:380
+msgid "The public description that will be displayed with this template"
+msgstr "La descripción pública que se mostrará con esta plantilla"
+
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:358
+msgid "The public name for your template"
+msgstr "El nombre público de tu plantilla"
+
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/recipient-item.tsx:119
+msgid "The recipient has been updated successfully"
+msgstr "El destinatario ha sido actualizado con éxito"
+
+#: apps/web/src/components/(teams)/dialogs/transfer-team-dialog.tsx:267
+msgid "The selected team member will receive an email which they must accept before the team is transferred"
+msgstr "El miembro del equipo seleccionado recibirá un correo electrónico que debe aceptar antes de que se transfiera el equipo"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:163
+#: apps/web/src/components/(dashboard)/avatar/avatar-with-recipient.tsx:41
+#: apps/web/src/components/document/document-recipient-link-copy-dialog.tsx:118
+msgid "The signing link has been copied to your clipboard."
+msgstr "El enlace de firma ha sido copiado a tu portapapeles."
+
+#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:105
+msgid "The site banner is a message that is shown at the top of the site. It can be used to display important information to your users."
+msgstr "El banner del sitio es un mensaje que se muestra en la parte superior del sitio. Se puede usar para mostrar información importante a tus usuarios."
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/team-transfer-status.tsx:45
+msgid "The team transfer invitation has been successfully deleted."
+msgstr "La invitación para la transferencia de equipo ha sido eliminada con éxito."
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/team-transfer-status.tsx:86
+msgid "The team transfer request to <0>{0}0> has expired."
+msgstr "La solicitud de transferencia de equipo a <0>{0}0> ha expirado."
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/not-found.tsx:23
+msgid "The team you are looking for may have been removed, renamed or may have never existed."
+msgstr "El equipo que buscas puede haber sido eliminado, renombrado o puede que nunca haya existido."
+
+#: apps/web/src/app/(dashboard)/templates/move-template-dialog.tsx:49
+msgid "The template has been successfully moved to the selected team."
+msgstr "La plantilla ha sido movida con éxito al equipo seleccionado."
+
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:443
+msgid "The template will be removed from your profile"
+msgstr "La plantilla será eliminada de tu perfil"
+
+#: apps/web/src/app/(recipient)/d/[token]/not-found.tsx:23
+msgid "The template you are looking for may have been disabled, deleted or may have never existed."
+msgstr "La plantilla que buscas puede haber sido desactivada, eliminada o puede que nunca haya existido."
+
+#: apps/web/src/components/forms/token.tsx:106
+msgid "The token was copied to your clipboard."
+msgstr "El token fue copiado a tu portapapeles."
+
+#: apps/web/src/components/(dashboard)/settings/token/delete-token-dialog.tsx:88
+msgid "The token was deleted successfully."
+msgstr "El token fue eliminado con éxito."
+
+#: apps/web/src/app/(unauthenticated)/reset-password/page.tsx:24
+msgid "The token you have used to reset your password is either expired or it never existed. If you have still forgotten your password, please request a new reset link."
+msgstr "El token que has utilizado para restablecer tu contraseña ha expirado o nunca existió. Si aún has olvidado tu contraseña, por favor solicita un nuevo enlace de restablecimiento."
+
+#: apps/web/src/app/(dashboard)/settings/webhooks/[id]/page.tsx:124
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/[id]/page.tsx:128
+#: apps/web/src/components/(dashboard)/settings/webhooks/create-webhook-dialog.tsx:152
+msgid "The URL for Documenso to send webhook events to."
+msgstr "La URL para Documenso para enviar eventos de webhook."
+
+#: apps/web/src/components/(dashboard)/settings/webhooks/delete-webhook-dialog.tsx:79
+msgid "The webhook has been successfully deleted."
+msgstr "El webhook ha sido eliminado con éxito."
+
+#: apps/web/src/app/(dashboard)/settings/webhooks/[id]/page.tsx:75
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/[id]/page.tsx:81
+msgid "The webhook has been updated successfully."
+msgstr "El webhook ha sido actualizado con éxito."
+
+#: apps/web/src/components/(dashboard)/settings/webhooks/create-webhook-dialog.tsx:93
+msgid "The webhook was successfully created."
+msgstr "El webhook fue creado con éxito."
+
+#: apps/web/src/app/(dashboard)/documents/empty-state.tsx:25
+msgid "There are no active drafts at the current moment. You can upload a document to start drafting."
+msgstr "No hay borradores activos en este momento. Puedes subir un documento para comenzar a redactar."
+
+#: apps/web/src/app/(dashboard)/documents/empty-state.tsx:20
+msgid "There are no completed documents yet. Documents that you have created or received will appear here once completed."
+msgstr "Aún no hay documentos completados. Los documentos que hayas creado o recibido aparecerán aquí una vez completados."
+
+#: apps/web/src/app/(dashboard)/settings/teams/team-email-usage.tsx:70
+msgid "They have permission on your behalf to:"
+msgstr "Tienen permiso en tu nombre para:"
+
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx:110
+#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:110
+#: apps/web/src/app/(dashboard)/settings/profile/delete-account-dialog.tsx:109
+msgid "This action is not reversible. Please be certain."
+msgstr "Esta acción no es reversible. Por favor, asegúrate."
+
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:81
+msgid "This document could not be deleted at this time. Please try again."
+msgstr "Este documento no se pudo eliminar en este momento. Por favor, inténtalo de nuevo."
+
+#: apps/web/src/app/(dashboard)/documents/duplicate-document-dialog.tsx:73
+msgid "This document could not be duplicated at this time. Please try again."
+msgstr "Este documento no se pudo duplicar en este momento. Por favor, inténtalo de nuevo."
+
+#: apps/web/src/app/(dashboard)/documents/_action-items/resend-document.tsx:106
+msgid "This document could not be re-sent at this time. Please try again."
+msgstr "Este documento no se pudo reenviar en este momento. Por favor, inténtalo de nuevo."
+
+#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:180
+msgid "This document has been cancelled by the owner and is no longer available for others to sign."
+msgstr "Este documento ha sido cancelado por el propietario y ya no está disponible para que otros lo firmen."
+
+#: apps/web/src/app/(signing)/sign/[token]/no-longer-available.tsx:52
+msgid "This document has been cancelled by the owner."
+msgstr "Este documento ha sido cancelado por el propietario."
+
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:224
+msgid "This document has been signed by all recipients"
+msgstr "Este documento ha sido firmado por todos los destinatarios"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:227
+msgid "This document is currently a draft and has not been sent"
+msgstr "Este documento es actualmente un borrador y no ha sido enviado"
+
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:152
+msgid "This document was created by you or a team member using the template above."
+msgstr "Este documento fue creado por ti o un miembro del equipo usando la plantilla anterior."
+
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:164
+msgid "This document was created using a direct link."
+msgstr "Este documento fue creado usando un enlace directo."
+
+#: apps/web/src/components/(teams)/dialogs/add-team-email-dialog.tsx:93
+msgid "This email is already being used by another team."
+msgstr "Este correo electrónico ya está siendo utilizado por otro equipo."
+
+#: apps/web/src/app/(unauthenticated)/team/verify/transfer/[token]/page.tsx:40
+msgid "This link is invalid or has expired. Please contact your team to resend a transfer request."
+msgstr "Este enlace es inválido o ha expirado. Por favor, contacta a tu equipo para reenviar una solicitud de transferencia."
+
+#: apps/web/src/app/(unauthenticated)/team/verify/email/[token]/page.tsx:37
+msgid "This link is invalid or has expired. Please contact your team to resend a verification."
+msgstr "Este enlace es inválido o ha expirado. Por favor, contacta a tu equipo para reenviar una verificación."
+
+#: apps/web/src/app/(dashboard)/settings/security/passkeys/create-passkey-dialog.tsx:208
+msgid "This passkey has already been registered."
+msgstr "Esta clave de acceso ya ha sido registrada."
+
+#: apps/web/src/components/forms/signin.tsx:200
+msgid "This passkey is not configured for this application. Please login and add one in the user settings."
+msgstr "Esta clave de acceso no está configurada para esta aplicación. Por favor, inicia sesión y añade una en la configuración del usuario."
+
+#: apps/web/src/components/(teams)/dialogs/create-team-checkout-dialog.tsx:148
+msgid "This price includes minimum 5 seats."
+msgstr "Este precio incluye un mínimo de 5 asientos."
+
+#: apps/web/src/components/forms/signin.tsx:202
+msgid "This session has expired. Please try again."
+msgstr "Esta sesión ha expirado. Por favor, inténtalo de nuevo."
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:201
+msgid "This team, and any associated data excluding billing invoices will be permanently deleted."
+msgstr "Este equipo, y cualquier dato asociado, excluyendo las facturas de facturación, serán eliminados permanentemente."
+
+#: apps/web/src/app/(dashboard)/templates/delete-template-dialog.tsx:51
+msgid "This template could not be deleted at this time. Please try again."
+msgstr "Esta plantilla no se pudo eliminar en este momento. Por favor, inténtalo de nuevo."
+
+#: apps/web/src/app/(unauthenticated)/team/decline/[token]/page.tsx:43
+msgid "This token is invalid or has expired. No action is needed."
+msgstr "Este token es inválido o ha expirado. No se necesita ninguna acción."
+
+#: apps/web/src/app/(unauthenticated)/team/invite/[token]/page.tsx:43
+msgid "This token is invalid or has expired. Please contact your team for a new invitation."
+msgstr "Este token es inválido o ha expirado. Por favor, contacta a tu equipo para una nueva invitación."
+
+#: apps/web/src/components/(teams)/dialogs/create-team-dialog.tsx:98
+#: apps/web/src/components/(teams)/forms/update-team-form.tsx:127
+msgid "This URL is already in use."
+msgstr "Esta URL ya está en uso."
+
+#: apps/web/src/components/forms/v2/signup.tsx:145
+msgid "This username has already been taken"
+msgstr "Este nombre de usuario ya ha sido tomado"
+
+#: apps/web/src/components/forms/public-profile-claim-dialog.tsx:98
+msgid "This username is already taken"
+msgstr "Este nombre de usuario ya está tomado"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-data-table.tsx:73
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/data-table.tsx:44
+msgid "Time"
+msgstr "Hora"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-page-view.tsx:97
+msgid "Time zone"
+msgstr "Zona horaria"
+
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:131
+msgid "Time Zone"
+msgstr "Zona Horaria"
+
+#: apps/web/src/app/(dashboard)/admin/documents/document-results.tsx:67
+#: apps/web/src/app/(dashboard)/documents/data-table.tsx:60
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:115
+#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:61
+msgid "Title"
+msgstr "Título"
+
+#: apps/web/src/app/(unauthenticated)/team/invite/[token]/page.tsx:106
+msgid "To accept this invitation you must create an account."
+msgstr "Para aceptar esta invitación debes crear una cuenta."
+
+#: apps/web/src/components/(teams)/dialogs/update-team-email-dialog.tsx:125
+msgid "To change the email you must remove and add a new email address."
+msgstr "Para cambiar el correo electrónico debes eliminar y añadir una nueva dirección de correo electrónico."
+
+#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:117
+msgid "To confirm, please enter the accounts email address <0/>({0})."
+msgstr "Para confirmar, por favor ingresa la dirección de correo electrónico de la cuenta <0/>({0})."
+
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx:117
+msgid "To confirm, please enter the reason"
+msgstr "Para confirmar, por favor ingresa la razón"
+
+#: apps/web/src/app/(unauthenticated)/team/decline/[token]/page.tsx:101
+msgid "To decline this invitation you must create an account."
+msgstr "Para rechazar esta invitación debes crear una cuenta."
+
+#: apps/web/src/components/forms/2fa/enable-authenticator-app-dialog.tsx:197
+msgid "To enable two-factor authentication, scan the following QR code using your authenticator app."
+msgstr "Para habilitar la autenticación de dos factores, escanea el siguiente código QR usando tu aplicación de autenticador."
+
+#: apps/web/src/app/(unauthenticated)/unverified-account/page.tsx:23
+msgid "To gain access to your account, please confirm your email address by clicking on the confirmation link from your inbox."
+msgstr "Para acceder a tu cuenta, por favor confirma tu dirección de correo electrónico haciendo clic en el enlace de confirmación de tu bandeja de entrada."
+
+#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-account.tsx:54
+msgid "To mark this document as viewed, you need to be logged in as <0>{0}0>"
+msgstr "Para marcar este documento como visto, debes iniciar sesión como <0>{0}0>"
+
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:60
+msgid "To use our electronic signature service, you must have access to:"
+msgstr "Para usar nuestro servicio de firma electrónica, debe tener acceso a:"
+
+#: apps/web/src/app/embed/authenticate.tsx:21
+msgid "To view this document you need to be signed into your account, please sign in to continue."
+msgstr "Para ver este documento debes iniciar sesión en tu cuenta, por favor inicia sesión para continuar."
+
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:178
+msgid "Toggle the switch to hide your profile from the public."
+msgstr "Activa el interruptor para ocultar tu perfil del público."
+
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:190
+msgid "Toggle the switch to show your profile to the public."
+msgstr "Activa el interruptor para mostrar tu perfil al público."
+
+#: apps/web/src/components/forms/2fa/enable-authenticator-app-dialog.tsx:236
+msgid "Token"
+msgstr "Token"
+
+#: apps/web/src/components/forms/token.tsx:105
+msgid "Token copied to clipboard"
+msgstr "Token copiado al portapapeles"
+
+#: apps/web/src/components/forms/token.tsx:126
+msgid "Token created"
+msgstr "Token creado"
+
+#: apps/web/src/components/(dashboard)/settings/token/delete-token-dialog.tsx:87
+msgid "Token deleted"
+msgstr "Token eliminado"
+
+#: apps/web/src/app/(dashboard)/settings/tokens/page.tsx:75
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx:108
+msgid "Token doesn't have an expiration date"
+msgstr "El token no tiene una fecha de expiración"
+
+#: apps/web/src/components/forms/token.tsx:193
+msgid "Token expiration date"
+msgstr "Fecha de expiración del token"
+
+#: apps/web/src/components/forms/token.tsx:165
+msgid "Token name"
+msgstr "Nombre del token"
+
+#: apps/web/src/app/(dashboard)/admin/stats/page.tsx:65
+msgid "Total Documents"
+msgstr "Total de documentos"
+
+#: apps/web/src/app/(dashboard)/admin/stats/page.tsx:108
+msgid "Total Recipients"
+msgstr "Total de destinatarios"
+
+#: apps/web/src/app/(dashboard)/admin/stats/page.tsx:150
+msgid "Total Signers that Signed Up"
+msgstr "Total de firmantes que se registraron"
+
+#: apps/web/src/app/(dashboard)/admin/stats/page.tsx:64
+msgid "Total Users"
+msgstr "Total de usuarios"
+
+#: apps/web/src/components/(teams)/dialogs/transfer-team-dialog.tsx:76
+msgid "transfer {teamName}"
+msgstr "transferir {teamName}"
+
+#: apps/web/src/components/(teams)/dialogs/transfer-team-dialog.tsx:160
+msgid "Transfer ownership of this team to a selected team member."
+msgstr "Transferir la propiedad de este equipo a un miembro del equipo seleccionado."
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:175
+#: apps/web/src/components/(teams)/dialogs/transfer-team-dialog.tsx:147
+#: apps/web/src/components/(teams)/dialogs/transfer-team-dialog.tsx:156
+msgid "Transfer team"
+msgstr "Transferir equipo"
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:179
+msgid "Transfer the ownership of the team to another team member."
+msgstr "Transferir la propiedad del equipo a otro miembro del equipo."
+
+#: apps/web/src/app/(dashboard)/settings/webhooks/[id]/page.tsx:163
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/[id]/page.tsx:167
+#: apps/web/src/components/(dashboard)/settings/webhooks/create-webhook-dialog.tsx:191
+msgid "Triggers"
+msgstr "Desencadenadores"
+
+#: apps/web/src/app/(dashboard)/settings/security/page.tsx:52
+msgid "Two factor authentication"
+msgstr "Autenticación de dos factores"
+
+#: apps/web/src/app/(dashboard)/settings/security/page.tsx:88
+msgid "Two factor authentication recovery codes are used to access your account in the event that you lose access to your authenticator app."
+msgstr "Los códigos de recuperación de autenticación de dos factores se utilizan para acceder a tu cuenta en caso de perder el acceso a tu aplicación de autenticador."
+
+#: apps/web/src/components/forms/signin.tsx:448
+msgid "Two-Factor Authentication"
+msgstr "Autenticación de dos factores"
+
+#: apps/web/src/components/forms/2fa/disable-authenticator-app-dialog.tsx:90
+msgid "Two-factor authentication disabled"
+msgstr "Autenticación de dos factores desactivada"
+
+#: apps/web/src/components/forms/2fa/enable-authenticator-app-dialog.tsx:94
+msgid "Two-factor authentication enabled"
+msgstr "Autenticación de dos factores habilitada"
+
+#: apps/web/src/components/forms/2fa/disable-authenticator-app-dialog.tsx:92
+msgid "Two-factor authentication has been disabled for your account. You will no longer be required to enter a code from your authenticator app when signing in."
+msgstr "La autenticación de dos factores ha sido desactivada para tu cuenta. Ya no se te pedirá ingresar un código de tu aplicación de autenticador al iniciar sesión."
+
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:120
+msgid "Two-Factor Re-Authentication"
+msgstr "Re-autenticación de Doble Factor"
+
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/recipient-item.tsx:73
+#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:67
+msgid "Type"
+msgstr "Tipo"
+
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:184
+msgid "Type 'delete' to confirm"
+msgstr "Escribe 'eliminar' para confirmar"
+
+#: apps/web/src/components/(dashboard)/common/command-menu.tsx:186
+msgid "Type a command or search..."
+msgstr "Escribe un comando o busca..."
+
+#: apps/web/src/app/(unauthenticated)/verify-email/page.tsx:26
+msgid "Uh oh! Looks like you're missing a token"
+msgstr "¡Oh no! Parece que te falta un token"
+
+#: apps/web/src/components/(dashboard)/common/command-menu.tsx:303
+msgid "Unable to change the language at this time. Please try again later."
+msgstr "No se puede cambiar el idioma en este momento. Por favor intenta nuevamente más tarde."
+
+#: apps/web/src/components/forms/2fa/recovery-code-list.tsx:31
+msgid "Unable to copy recovery code"
+msgstr "No se pudo copiar el código de recuperación"
+
+#: apps/web/src/components/forms/token.tsx:110
+msgid "Unable to copy token"
+msgstr "No se pudo copiar el token"
+
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:105
+msgid "Unable to create direct template access. Please try again later."
+msgstr "No se pudo crear acceso directo a la plantilla. Por favor, inténtalo de nuevo más tarde."
+
+#: apps/web/src/app/(dashboard)/settings/teams/decline-team-invitation-button.tsx:33
+msgid "Unable to decline this team invitation at this time."
+msgstr "No se pudo rechazar esta invitación al equipo en este momento."
+
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:86
+msgid "Unable to delete invitation. Please try again."
+msgstr "No se pudo eliminar la invitación. Por favor, inténtalo de nuevo."
+
+#: apps/web/src/components/(teams)/dialogs/delete-team-dialog.tsx:94
+msgid "Unable to delete team"
+msgstr "No se pudo eliminar el equipo"
+
+#: apps/web/src/components/forms/2fa/disable-authenticator-app-dialog.tsx:103
+msgid "Unable to disable two-factor authentication"
+msgstr "No se pudo desactivar la autenticación de dos factores"
+
+#: apps/web/src/app/(dashboard)/settings/teams/accept-team-invitation-button.tsx:33
+msgid "Unable to join this team at this time."
+msgstr "No se pudo unirte a este equipo en este momento."
+
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recent-activity.tsx:72
+#: apps/web/src/components/document/document-history-sheet.tsx:127
+msgid "Unable to load document history"
+msgstr "No se pudo cargar el historial del documento"
+
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:62
+msgid "Unable to load documents"
+msgstr "No se pueden cargar documentos"
+
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:111
+msgid "Unable to load your public profile templates at this time"
+msgstr "No se pudo cargar tus plantillas de perfil público en este momento"
+
+#: apps/web/src/components/(teams)/dialogs/remove-team-email-dialog.tsx:84
+msgid "Unable to remove email verification at this time. Please try again."
+msgstr "No se pudo eliminar la verificación de correo electrónico en este momento. Por favor, inténtalo de nuevo."
+
+#: apps/web/src/components/(teams)/dialogs/remove-team-email-dialog.tsx:65
+msgid "Unable to remove team email at this time. Please try again."
+msgstr "No se pudo eliminar el correo electrónico del equipo en este momento. Por favor, inténtalo de nuevo."
+
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:69
+msgid "Unable to resend invitation. Please try again."
+msgstr "No se pudo reenviar la invitación. Por favor, inténtalo de nuevo."
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/team-email-dropdown.tsx:40
+msgid "Unable to resend verification at this time. Please try again."
+msgstr "No se pudo reenviar la verificación en este momento. Por favor, inténtalo de nuevo."
+
+#: apps/web/src/app/(unauthenticated)/reset-password/page.tsx:20
+msgid "Unable to reset password"
+msgstr "No se pudo restablecer la contraseña"
+
+#: apps/web/src/components/forms/2fa/enable-authenticator-app-dialog.tsx:68
+#: apps/web/src/components/forms/2fa/enable-authenticator-app-dialog.tsx:101
+msgid "Unable to setup two-factor authentication"
+msgstr "No se pudo configurar la autenticación de dos factores"
+
+#: apps/web/src/components/forms/signin.tsx:247
+#: apps/web/src/components/forms/signin.tsx:255
+msgid "Unable to sign in"
+msgstr "No se pudo iniciar sesión"
+
+#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-2fa.tsx:166
+#: apps/web/src/app/(teams)/t/[teamUrl]/error.tsx:27
+msgid "Unauthorized"
+msgstr "No autorizado"
+
+#: apps/web/src/components/(dashboard)/avatar/stack-avatars-with-tooltip.tsx:155
+msgid "Uncompleted"
+msgstr "Incompleto"
+
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:229
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:254
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:265
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:276
+msgid "Unknown"
+msgstr "Desconocido"
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/error.tsx:23
+msgid "Unknown error"
+msgstr "Error desconocido"
+
+#: apps/web/src/components/(teams)/tables/team-billing-invoices-data-table.tsx:79
+msgid "Unpaid"
+msgstr "No pagado"
+
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:181
+#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:162
+#: apps/web/src/components/(teams)/dialogs/update-team-email-dialog.tsx:166
+#: apps/web/src/components/(teams)/dialogs/update-team-member-dialog.tsx:191
+#: apps/web/src/components/forms/public-profile-form.tsx:279
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:428
+msgid "Update"
+msgstr "Actualizar"
+
+#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:211
+msgid "Update Banner"
+msgstr "Actualizar banner"
+
+#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:118
+msgid "Update passkey"
+msgstr "Actualizar clave de acceso"
+
+#: apps/web/src/components/forms/password.tsx:152
+msgid "Update password"
+msgstr "Actualizar contraseña"
+
+#: apps/web/src/components/forms/profile.tsx:150
+msgid "Update profile"
+msgstr "Actualizar perfil"
+
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/recipient-item.tsx:180
+msgid "Update Recipient"
+msgstr "Actualizar destinatario"
+
+#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:146
+msgid "Update role"
+msgstr "Actualizar rol"
+
+#: apps/web/src/components/(teams)/forms/update-team-form.tsx:278
+msgid "Update team"
+msgstr "Actualizar equipo"
+
+#: apps/web/src/components/(teams)/dialogs/update-team-email-dialog.tsx:113
+#: apps/web/src/components/(teams)/dialogs/update-team-email-dialog.tsx:121
+msgid "Update team email"
+msgstr "Actualizar correo electrónico del equipo"
+
+#: apps/web/src/components/(teams)/dialogs/update-team-member-dialog.tsx:136
+#: apps/web/src/components/(teams)/dialogs/update-team-member-dialog.tsx:144
+msgid "Update team member"
+msgstr "Actualizar miembro del equipo"
+
+#: apps/web/src/app/(dashboard)/admin/users/[id]/page.tsx:147
+msgid "Update user"
+msgstr "Actualizar usuario"
+
+#: apps/web/src/app/(dashboard)/settings/webhooks/[id]/page.tsx:208
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/[id]/page.tsx:210
+msgid "Update webhook"
+msgstr "Actualizar webhook"
+
+#: apps/web/src/components/forms/password.tsx:152
+msgid "Updating password..."
+msgstr "Actualizando contraseña..."
+
+#: apps/web/src/components/forms/profile.tsx:150
+msgid "Updating profile..."
+msgstr "Actualizando perfil..."
+
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:115
+msgid "Updating Your Information"
+msgstr "Actualizando Su Información"
+
+#: apps/web/src/components/forms/avatar-image.tsx:182
+msgid "Upload Avatar"
+msgstr "Subir avatar"
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/branding-preferences.tsx:256
+msgid "Upload your brand logo (max 5MB, JPG, PNG, or WebP)"
+msgstr "Carga el logo de tu marca (máx 5MB, JPG, PNG o WebP)"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-information.tsx:31
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-information.tsx:30
+msgid "Uploaded by"
+msgstr "Subido por"
+
+#: apps/web/src/components/forms/avatar-image.tsx:91
+msgid "Uploaded file is too large"
+msgstr "El archivo subido es demasiado grande"
+
+#: apps/web/src/components/forms/avatar-image.tsx:92
+msgid "Uploaded file is too small"
+msgstr "El archivo subido es demasiado pequeño"
+
+#: apps/web/src/components/forms/avatar-image.tsx:93
+msgid "Uploaded file not an allowed file type"
+msgstr "El archivo subido no es un tipo de archivo permitido"
+
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view.tsx:170
+msgid "Use"
+msgstr "Usar"
+
+#: apps/web/src/components/forms/2fa/disable-authenticator-app-dialog.tsx:187
+#: apps/web/src/components/forms/signin.tsx:505
+msgid "Use Authenticator"
+msgstr "Usar Autenticador"
+
+#: apps/web/src/components/forms/2fa/disable-authenticator-app-dialog.tsx:185
+#: apps/web/src/components/forms/signin.tsx:503
+msgid "Use Backup Code"
+msgstr "Usar Código de Respaldo"
+
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:207
+msgid "Use Template"
+msgstr "Usar Plantilla"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-data-table.tsx:78
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/data-table.tsx:45
+msgid "User"
+msgstr "Usuario"
+
+#: apps/web/src/app/(dashboard)/admin/subscriptions/page.tsx:41
+msgid "User ID"
+msgstr "ID de Usuario"
+
+#: apps/web/src/components/forms/v2/signup.tsx:234
+msgid "User profiles are here!"
+msgstr "¡Los perfiles de usuario están aquí!"
+
+#: apps/web/src/components/(dashboard)/layout/menu-switcher.tsx:269
+msgid "User settings"
+msgstr "Configuraciones del usuario"
+
+#: apps/web/src/app/(dashboard)/admin/nav.tsx:51
+msgid "Users"
+msgstr "Usuarios"
+
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/recipient-item.tsx:83
+msgid "Value"
+msgstr "Valor"
+
+#: apps/web/src/components/(dashboard)/layout/verify-email-banner.tsx:100
+msgid "Verification Email Sent"
+msgstr "Correo Electrónico de Verificación Enviado"
+
+#: apps/web/src/components/(dashboard)/layout/verify-email-banner.tsx:45
+msgid "Verification email sent successfully."
+msgstr "Correo electrónico de verificación enviado con éxito."
+
+#: apps/web/src/components/(dashboard)/layout/verify-email-banner.tsx:102
+msgid "Verify Now"
+msgstr "Verifica Ahora"
+
+#: apps/web/src/components/(dashboard)/layout/verify-email-banner.tsx:112
+msgid "Verify your email address"
+msgstr "Verifica tu dirección de correo electrónico"
+
+#: apps/web/src/components/(dashboard)/layout/verify-email-banner.tsx:88
+msgid "Verify your email address to unlock all features."
+msgstr "Verifica tu dirección de correo electrónico para desbloquear todas las funciones."
+
+#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:56
+msgid "Verify your email to upload documents."
+msgstr "Verifica tu correo electrónico para subir documentos."
+
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:75
+msgid "Version History"
+msgstr "Historial de Versiones"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-button.tsx:95
+#: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:126
+#: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:135
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:132
+#: apps/web/src/components/(teams)/tables/team-billing-invoices-data-table.tsx:100
+#: apps/web/src/components/forms/2fa/view-recovery-codes-dialog.tsx:168
+msgid "View"
+msgstr "Ver"
+
+#: apps/web/src/app/(dashboard)/settings/security/page.tsx:140
+msgid "View activity"
+msgstr "Ver actividad"
+
+#: apps/web/src/app/(dashboard)/settings/teams/team-email-usage.tsx:78
+msgid "View all documents sent to your account"
+msgstr "Ver todos los documentos enviados a tu cuenta"
+
+#: apps/web/src/app/(dashboard)/settings/security/page.tsx:134
+msgid "View all recent security activity related to your account."
+msgstr "Ver toda la actividad de seguridad reciente relacionada con tu cuenta."
+
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:157
+msgid "View all related documents"
+msgstr "Ver todos los documentos relacionados"
+
+#: apps/web/src/app/(dashboard)/settings/security/activity/page.tsx:26
+msgid "View all security activity related to your account."
+msgstr "Ver toda la actividad de seguridad relacionada con tu cuenta."
+
+#: apps/web/src/components/forms/2fa/view-recovery-codes-dialog.tsx:78
+msgid "View Codes"
+msgstr "Ver Códigos"
+
+#: apps/web/src/app/(signing)/sign/[token]/form.tsx:127
+msgid "View Document"
+msgstr "Ver Documento"
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:156
+msgid "View documents associated with this email"
+msgstr "Ver documentos asociados con este correo electrónico"
+
+#: apps/web/src/app/(dashboard)/settings/teams/team-invitations.tsx:55
+msgid "View invites"
+msgstr "Ver invitaciones"
+
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:95
+msgid "View more"
+msgstr "Ver más"
+
+#: apps/web/src/app/(signing)/sign/[token]/complete/document-preview-button.tsx:34
+msgid "View Original Document"
+msgstr "Ver Documento Original"
+
+#: apps/web/src/components/forms/2fa/view-recovery-codes-dialog.tsx:87
+#: apps/web/src/components/forms/2fa/view-recovery-codes-dialog.tsx:116
+msgid "View Recovery Codes"
+msgstr "Ver Códigos de Recuperación"
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/error.tsx:56
+msgid "View teams"
+msgstr "Ver equipos"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:120
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:259
+msgid "Viewed"
+msgstr "Visto"
+
+#: apps/web/src/components/(dashboard)/avatar/stack-avatars-with-tooltip.tsx:125
+msgid "Waiting"
+msgstr "Esperando"
+
+#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:150
+msgid "Waiting for others to sign"
+msgstr "Esperando a que otros firmen"
+
+#: apps/web/src/app/(signing)/sign/[token]/waiting/page.tsx:70
+msgid "Waiting for Your Turn"
+msgstr "Esperando tu turno"
+
+#: apps/web/src/app/(signing)/sign/[token]/no-longer-available.tsx:61
+msgid "Want to send slick signing links like this one? <0>Check out Documenso.0>"
+msgstr "¿Quieres enviar enlaces de firma elegantes como este? <0>Consulta Documenso.0>"
+
+#: apps/web/src/app/(profile)/profile-header.tsx:68
+msgid "Want your own public profile?"
+msgstr "¿Quieres tu propio perfil público?"
+
+#: apps/web/src/app/(dashboard)/settings/billing/billing-portal-button.tsx:41
+#: apps/web/src/app/(teams)/t/[teamUrl]/layout-billing-banner.tsx:55
+#: apps/web/src/components/(teams)/team-billing-portal-button.tsx:31
+msgid "We are unable to proceed to the billing portal at this time. Please try again, or contact support."
+msgstr "No podemos proceder al portal de facturación en este momento. Por favor, inténtalo de nuevo o contacta con soporte."
+
+#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:95
+msgid "We are unable to remove this passkey at the moment. Please try again later."
+msgstr "No podemos eliminar esta clave de acceso en este momento. Por favor, inténtalo de nuevo más tarde."
+
+#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:75
+msgid "We are unable to update this passkey at the moment. Please try again later."
+msgstr "No podemos actualizar esta clave de acceso en este momento. Por favor, inténtalo de nuevo más tarde."
+
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:153
+msgid "We encountered an error while removing the direct template link. Please try again later."
+msgstr "Encontramos un error al eliminar el enlace directo de la plantilla. Por favor, inténtalo de nuevo más tarde."
+
+#: apps/web/src/app/(dashboard)/settings/webhooks/[id]/page.tsx:84
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/[id]/page.tsx:90
+msgid "We encountered an error while updating the webhook. Please try again later."
+msgstr "Encontramos un error al actualizar el webhook. Por favor, inténtalo de nuevo más tarde."
+
+#: apps/web/src/components/forms/token.tsx:145
+msgid "We encountered an unknown error while attempting create the new token. Please try again later."
+msgstr "Encontramos un error desconocido al intentar crear el nuevo token. Por favor, inténtalo de nuevo más tarde."
+
+#: apps/web/src/components/(teams)/dialogs/add-team-email-dialog.tsx:102
+msgid "We encountered an unknown error while attempting to add this email. Please try again later."
+msgstr "Encontramos un error desconocido al intentar añadir este correo electrónico. Por favor, inténtalo de nuevo más tarde."
+
+#: apps/web/src/components/(teams)/dialogs/create-team-dialog.tsx:107
+msgid "We encountered an unknown error while attempting to create a team. Please try again later."
+msgstr "Encontramos un error desconocido al intentar crear un equipo. Por favor, inténtalo de nuevo más tarde."
+
+#: apps/web/src/components/(dashboard)/settings/webhooks/delete-webhook-dialog.tsx:90
+msgid "We encountered an unknown error while attempting to delete it. Please try again later."
+msgstr "Encontramos un error desconocido al intentar eliminarlo. Por favor, inténtalo de nuevo más tarde."
+
+#: apps/web/src/components/(teams)/tables/pending-user-teams-data-table-actions.tsx:35
+msgid "We encountered an unknown error while attempting to delete the pending team. Please try again later."
+msgstr "Encontramos un error desconocido al intentar eliminar el equipo pendiente. Por favor, inténtalo de nuevo más tarde."
+
+#: apps/web/src/components/(teams)/dialogs/delete-team-dialog.tsx:86
+msgid "We encountered an unknown error while attempting to delete this team. Please try again later."
+msgstr "Encontramos un error desconocido al intentar eliminar este equipo. Por favor, inténtalo de nuevo más tarde."
+
+#: apps/web/src/components/(dashboard)/settings/token/delete-token-dialog.tsx:99
+msgid "We encountered an unknown error while attempting to delete this token. Please try again later."
+msgstr "Encontramos un error desconocido al intentar eliminar este token. Por favor, inténtalo de nuevo más tarde."
+
+#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:71
+#: apps/web/src/app/(dashboard)/settings/profile/delete-account-dialog.tsx:68
+msgid "We encountered an unknown error while attempting to delete your account. Please try again later."
+msgstr "Encontramos un error desconocido al intentar eliminar tu cuenta. Por favor, inténtalo de nuevo más tarde."
+
+#: apps/web/src/components/(teams)/dialogs/invite-team-member-dialog.tsx:160
+msgid "We encountered an unknown error while attempting to invite team members. Please try again later."
+msgstr "Encontramos un error desconocido al intentar invitar a miembros del equipo. Por favor, inténtalo de nuevo más tarde."
+
+#: apps/web/src/components/(teams)/dialogs/leave-team-dialog.tsx:60
+msgid "We encountered an unknown error while attempting to leave this team. Please try again later."
+msgstr "Encontramos un error desconocido al intentar salir de este equipo. Por favor, inténtalo de nuevo más tarde."
+
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:143
+msgid "We encountered an unknown error while attempting to remove this template from your profile. Please try again later."
+msgstr "Encontramos un error desconocido al intentar eliminar esta plantilla de tu perfil. Por favor, inténtalo de nuevo más tarde."
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/team-transfer-status.tsx:56
+msgid "We encountered an unknown error while attempting to remove this transfer. Please try again or contact support."
+msgstr "Encontramos un error desconocido al intentar eliminar esta transferencia. Por favor, inténtalo de nuevo o contacta con soporte."
+
+#: apps/web/src/components/(teams)/dialogs/delete-team-member-dialog.tsx:60
+msgid "We encountered an unknown error while attempting to remove this user. Please try again later."
+msgstr "Encontramos un error desconocido al intentar eliminar a este usuario. Por favor, inténtalo de nuevo más tarde."
+
+#: apps/web/src/components/(teams)/dialogs/transfer-team-dialog.tsx:118
+msgid "We encountered an unknown error while attempting to request a transfer of this team. Please try again later."
+msgstr "Encontramos un error desconocido al intentar solicitar una transferencia de este equipo. Por favor, inténtalo de nuevo más tarde."
+
+#: apps/web/src/components/forms/reset-password.tsx:89
+msgid "We encountered an unknown error while attempting to reset your password. Please try again later."
+msgstr "Encontramos un error desconocido al intentar restablecer tu contraseña. Por favor, inténtalo de nuevo más tarde."
+
+#: apps/web/src/app/(dashboard)/settings/teams/team-email-usage.tsx:46
+msgid "We encountered an unknown error while attempting to revoke access. Please try again or contact support."
+msgstr "Encontramos un error desconocido al intentar revocar el acceso. Por favor, inténtalo de nuevo o contacta con soporte."
+
+#: apps/web/src/components/forms/public-profile-claim-dialog.tsx:115
+msgid "We encountered an unknown error while attempting to save your details. Please try again later."
+msgstr "Encontramos un error desconocido al intentar guardar tus datos. Por favor, inténtalo de nuevo más tarde."
+
+#: apps/web/src/components/forms/profile.tsx:89
+#: apps/web/src/components/forms/signin.tsx:272
+#: apps/web/src/components/forms/signin.tsx:287
+#: apps/web/src/components/forms/signin.tsx:303
+msgid "We encountered an unknown error while attempting to sign you In. Please try again later."
+msgstr "Encontramos un error desconocido al intentar iniciar sesión. Por favor, inténtalo de nuevo más tarde."
+
+#: apps/web/src/app/(signing)/sign/[token]/complete/claim-account.tsx:100
+#: apps/web/src/components/forms/signup.tsx:115
+#: apps/web/src/components/forms/v2/signup.tsx:162
+msgid "We encountered an unknown error while attempting to sign you up. Please try again later."
+msgstr "Encontramos un error desconocido al intentar registrarte. Por favor, inténtalo de nuevo más tarde."
+
+#: apps/web/src/components/forms/signup.tsx:130
+#: apps/web/src/components/forms/signup.tsx:144
+#: apps/web/src/components/forms/v2/signup.tsx:185
+#: apps/web/src/components/forms/v2/signup.tsx:199
+msgid "We encountered an unknown error while attempting to sign you Up. Please try again later."
+msgstr "Encontramos un error desconocido al intentar registrarte. Por favor, inténtalo de nuevo más tarde."
+
+#: apps/web/src/components/forms/avatar-image.tsx:124
+msgid "We encountered an unknown error while attempting to update the avatar. Please try again later."
+msgstr "Encontramos un error desconocido al intentar actualizar el avatar. Por favor, inténtalo de nuevo más tarde."
+
+#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:92
+msgid "We encountered an unknown error while attempting to update the banner. Please try again later."
+msgstr "Encontramos un error desconocido al intentar actualizar el banner. Por favor, inténtalo de nuevo más tarde."
+
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:180
+msgid "We encountered an unknown error while attempting to update the template. Please try again later."
+msgstr "Encontramos un error desconocido al intentar actualizar la plantilla. Por favor, inténtalo de nuevo más tarde."
+
+#: apps/web/src/components/(teams)/dialogs/update-team-member-dialog.tsx:102
+msgid "We encountered an unknown error while attempting to update this team member. Please try again later."
+msgstr "Encontramos un error desconocido al intentar actualizar a este miembro del equipo. Por favor, inténtalo de nuevo más tarde."
+
+#: apps/web/src/components/forms/password.tsx:86
+msgid "We encountered an unknown error while attempting to update your password. Please try again later."
+msgstr "Encontramos un error desconocido al intentar actualizar tu contraseña. Por favor, inténtalo de nuevo más tarde."
+
+#: apps/web/src/components/forms/public-profile-form.tsx:106
+msgid "We encountered an unknown error while attempting to update your public profile. Please try again later."
+msgstr "Encontramos un error desconocido al intentar actualizar tu perfil público. Por favor, inténtalo de nuevo más tarde."
+
+#: apps/web/src/components/(teams)/forms/update-team-form.tsx:136
+msgid "We encountered an unknown error while attempting to update your team. Please try again later."
+msgstr "Encontramos un error desconocido al intentar actualizar tu equipo. Por favor, inténtalo de nuevo más tarde."
+
+#: apps/web/src/components/(teams)/dialogs/update-team-email-dialog.tsx:91
+msgid "We encountered an unknown error while attempting update the team email. Please try again later."
+msgstr "Encontramos un error desconocido al intentar actualizar el correo electrónico del equipo. Por favor, inténtalo de nuevo más tarde."
+
+#: apps/web/src/components/(teams)/dialogs/add-team-email-dialog.tsx:80
+msgid "We have sent a confirmation email for verification."
+msgstr "Hemos enviado un correo electrónico de confirmación para la verificación."
+
+#: apps/web/src/components/forms/token.tsx:111
+msgid "We were unable to copy the token to your clipboard. Please try again."
+msgstr "No pudimos copiar el token en tu portapapeles. Por favor, inténtalo de nuevo."
+
+#: apps/web/src/components/forms/2fa/recovery-code-list.tsx:33
+msgid "We were unable to copy your recovery code to your clipboard. Please try again."
+msgstr "No pudimos copiar tu código de recuperación en tu portapapeles. Por favor, inténtalo de nuevo."
+
+#: apps/web/src/components/(teams)/dialogs/create-team-checkout-dialog.tsx:52
+msgid "We were unable to create a checkout session. Please try again, or contact support"
+msgstr "No pudimos crear una sesión de pago. Por favor, inténtalo de nuevo o contacta con soporte"
+
+#: apps/web/src/components/forms/2fa/disable-authenticator-app-dialog.tsx:105
+msgid "We were unable to disable two-factor authentication for your account. Please ensure that you have entered your password and backup code correctly and try again."
+msgstr "No pudimos desactivar la autenticación de dos factores para tu cuenta. Asegúrate de haber ingresado correctamente tu contraseña y código de respaldo e inténtalo de nuevo."
+
+#: apps/web/src/app/(recipient)/d/[token]/signing-auth-page.tsx:28
+#: apps/web/src/app/(signing)/sign/[token]/signing-auth-page.tsx:39
+msgid "We were unable to log you out at this time."
+msgstr "No pudimos cerrar sesión en este momento."
+
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:125
+msgid "We were unable to set your public profile to public. Please try again."
+msgstr "No pudimos configurar tu perfil público como público. Por favor, inténtalo de nuevo."
+
+#: apps/web/src/components/forms/2fa/enable-authenticator-app-dialog.tsx:70
+#: apps/web/src/components/forms/2fa/enable-authenticator-app-dialog.tsx:103
+msgid "We were unable to setup two-factor authentication for your account. Please ensure that you have entered your code correctly and try again."
+msgstr "No pudimos configurar la autenticación de dos factores para tu cuenta. Asegúrate de haber ingresado correctamente tu código e inténtalo de nuevo."
+
+#: apps/web/src/app/(recipient)/d/[token]/direct-template.tsx:120
+#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:245
+#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:127
+msgid "We were unable to submit this document at this time. Please try again later."
+msgstr "No pudimos enviar este documento en este momento. Por favor, inténtalo de nuevo más tarde."
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/branding-preferences.tsx:109
+msgid "We were unable to update your branding preferences at this time, please try again later"
+msgstr "No pudimos actualizar tus preferencias de marca en este momento, por favor intenta de nuevo más tarde"
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:98
+msgid "We were unable to update your document preferences at this time, please try again later"
+msgstr "No pudimos actualizar tus preferencias de documento en este momento, por favor intenta de nuevo más tarde"
+
+#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-2fa.tsx:169
+msgid "We were unable to verify your details. Please try again or contact support"
+msgstr "No pudimos verificar tus datos. Por favor, inténtalo de nuevo o contacta con soporte"
+
+#: apps/web/src/app/(unauthenticated)/verify-email/[token]/page.tsx:65
+msgid "We were unable to verify your email. If your email is not verified already, please try again."
+msgstr "No pudimos verificar tu correo electrónico. Si tu correo electrónico no está verificado ya, por favor inténtalo de nuevo."
+
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:370
+msgid "We will generate signing links for you, which you can send to the recipients through your method of choice."
+msgstr "Generaremos enlaces de firma para ti, que podrás enviar a los destinatarios a través de tu método preferido."
+
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:366
+msgid "We won't send anything to notify recipients."
+msgstr "No enviaremos nada para notificar a los destinatarios."
+
+#: apps/web/src/app/(dashboard)/documents/empty-state.tsx:29
+#: apps/web/src/app/(dashboard)/templates/empty-state.tsx:11
+msgid "We're all empty"
+msgstr "No hay nada aquí"
+
+#: apps/web/src/components/(dashboard)/layout/verify-email-banner.tsx:116
+msgid "We've sent a confirmation email to <0>{email}0>. Please check your inbox and click the link in the email to verify your account."
+msgstr "Hemos enviado un correo electrónico de confirmación a <0>{email}0>. Por favor, revisa tu bandeja de entrada y haz clic en el enlace del correo electrónico para verificar tu cuenta."
+
+#: apps/web/src/components/(dashboard)/settings/webhooks/create-webhook-dialog.tsx:92
+msgid "Webhook created"
+msgstr "Webhook creado"
+
+#: apps/web/src/components/(dashboard)/settings/webhooks/delete-webhook-dialog.tsx:78
+msgid "Webhook deleted"
+msgstr "Webhook eliminado"
+
+#: apps/web/src/app/(dashboard)/settings/webhooks/[id]/page.tsx:74
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/[id]/page.tsx:80
+msgid "Webhook updated"
+msgstr "Webhook actualizado"
+
+#: apps/web/src/app/(dashboard)/settings/webhooks/[id]/page.tsx:117
+#: apps/web/src/components/(dashboard)/settings/webhooks/create-webhook-dialog.tsx:145
+msgid "Webhook URL"
+msgstr "URL del Webhook"
+
+#: apps/web/src/app/(dashboard)/settings/webhooks/page.tsx:28
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/page.tsx:33
+#: apps/web/src/components/(dashboard)/settings/layout/desktop-nav.tsx:103
+#: apps/web/src/components/(dashboard)/settings/layout/mobile-nav.tsx:106
+#: apps/web/src/components/(teams)/settings/layout/desktop-nav.tsx:109
+#: apps/web/src/components/(teams)/settings/layout/mobile-nav.tsx:118
+msgid "Webhooks"
+msgstr "Webhooks"
+
+#: apps/web/src/app/(dashboard)/settings/billing/billing-plans.tsx:29
+msgid "Weekly"
+msgstr "Semanal"
+
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:21
+msgid "Welcome"
+msgstr "Bienvenido"
+
+#: apps/web/src/app/(unauthenticated)/signin/page.tsx:33
+msgid "Welcome back, we are lucky to have you."
+msgstr "Bienvenido de nuevo, somos afortunados de tenerte."
+
+#: apps/web/src/app/(signing)/sign/[token]/waiting/page.tsx:88
+msgid "Were you trying to edit this document instead?"
+msgstr "¿Estabas intentando editar este documento en su lugar?"
+
+#: apps/web/src/app/(dashboard)/settings/security/passkeys/create-passkey-dialog.tsx:189
+msgid "When you click continue, you will be prompted to add the first available authenticator on your system."
+msgstr "Cuando haces clic en continuar, se te pedirá que añadas el primer autenticador disponible en tu sistema."
+
+#: apps/web/src/app/(signing)/sign/[token]/auto-sign.tsx:183
+msgid "When you sign a document, we can automatically fill in and sign the following fields using information that has already been provided. You can also manually sign or remove any automatically signed fields afterwards if you desire."
+msgstr "Cuando firme un documento, podemos completar y firmar automáticamente los siguientes campos usando información que ya se ha proporcionado. También puede firmar manualmente o eliminar cualquier campo firmado automáticamente más tarde si lo desea."
+
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:36
+msgid "When you use our platform to affix your electronic signature to documents, you are consenting to do so under the Electronic Signatures in Global and National Commerce Act (E-Sign Act) and other applicable laws. This action indicates your agreement to use electronic means to sign documents and receive notifications."
+msgstr "Cuando utilice nuestra plataforma para colocar su firma electrónica en documentos, está consintiendo hacerlo bajo la Ley de Firmas Electrónicas en el Comercio Global y Nacional (Ley E-Sign) y otras leyes aplicables. Esta acción indica su aceptación de usar medios electrónicos para firmar documentos y recibir notificaciones."
+
+#: apps/web/src/app/(profile)/p/[url]/page.tsx:139
+msgid "While waiting for them to do so you can create your own Documenso account and get started with document signing right away."
+msgstr "Mientras esperas a que ellos lo hagan, puedes crear tu propia cuenta de Documenso y comenzar a firmar documentos de inmediato."
+
+#: apps/web/src/app/(dashboard)/documents/_action-items/resend-document.tsx:126
+msgid "Who do you want to remind?"
+msgstr "¿A quién deseas recordar?"
+
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:101
+msgid "Withdrawing Consent"
+msgstr "Retirar Consentimiento"
+
+#: apps/web/src/components/forms/public-profile-form.tsx:223
+msgid "Write about the team"
+msgstr "Escribe sobre el equipo"
+
+#: apps/web/src/components/forms/public-profile-form.tsx:223
+msgid "Write about yourself"
+msgstr "Escribe sobre ti mismo"
+
+#: apps/web/src/app/(dashboard)/settings/billing/billing-plans.tsx:31
+msgid "Yearly"
+msgstr "Anual"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-information.tsx:32
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-information.tsx:31
+msgid "You"
+msgstr "Tú"
+
+#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:93
+msgid "You are about to complete approving \"{truncatedTitle}\".<0/> Are you sure?"
+msgstr "Estás a punto de completar la aprobación de \"{truncatedTitle}\".<0/> ¿Estás seguro?"
+
+#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:85
+msgid "You are about to complete signing \"{truncatedTitle}\".<0/> Are you sure?"
+msgstr "Estás a punto de completar la firma de \"{truncatedTitle}\".<0/> ¿Estás seguro?"
+
+#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:77
+msgid "You are about to complete viewing \"{truncatedTitle}\".<0/> Are you sure?"
+msgstr "Estás a punto de completar la visualización de \"{truncatedTitle}\".<0/> ¿Estás seguro?"
+
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:103
+msgid "You are about to delete <0>\"{documentTitle}\"0>"
+msgstr "Estás a punto de eliminar <0>\"{documentTitle}\"0>"
+
+#: apps/web/src/components/(teams)/dialogs/remove-team-email-dialog.tsx:120
+msgid "You are about to delete the following team email from <0>{teamName}0>."
+msgstr "Estás a punto de eliminar el siguiente correo electrónico del equipo de <0>{teamName}0>."
+
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:107
+msgid "You are about to hide <0>\"{documentTitle}\"0>"
+msgstr "Estás a punto de ocultar <0>\"{documentTitle}\"0>"
+
+#: apps/web/src/components/(teams)/dialogs/leave-team-dialog.tsx:85
+msgid "You are about to leave the following team."
+msgstr "Estás a punto de salir del siguiente equipo."
+
+#: apps/web/src/components/(teams)/dialogs/delete-team-member-dialog.tsx:85
+msgid "You are about to remove the following user from <0>{teamName}0>."
+msgstr "Estás a punto de eliminar al siguiente usuario de <0>{teamName}0>."
+
+#: apps/web/src/app/(dashboard)/settings/teams/team-email-usage.tsx:98
+msgid "You are about to revoke access for team <0>{0}0> ({1}) to use your email."
+msgstr "Estás a punto de revocar el acceso para el equipo <0>{0}0> ({1}) para usar tu correo electrónico."
+
+#: apps/web/src/app/(dashboard)/settings/billing/page.tsx:80
+msgid "You are currently on the <0>Free Plan0>."
+msgstr "Actualmente estás en el <0>Plan Gratuito0>."
+
+#: apps/web/src/components/(teams)/dialogs/update-team-member-dialog.tsx:148
+msgid "You are currently updating <0>{teamMemberName}.0>"
+msgstr "Actualmente estás actualizando <0>{teamMemberName}.0>"
+
+#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:122
+msgid "You are currently updating the <0>{passkeyName}0> passkey."
+msgstr "Actualmente estás actualizando la clave <0>{passkeyName}0>."
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/error.tsx:28
+msgid "You are not authorized to view this page."
+msgstr "No estás autorizado para ver esta página."
+
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:43
+msgid "You can choose to enable or disable your profile for public view."
+msgstr "Puedes elegir habilitar o deshabilitar tu perfil para la vista pública."
+
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:50
+msgid "You can choose to enable or disable your team profile for public view."
+msgstr "Puedes elegir habilitar o deshabilitar el perfil de tu equipo para la vista pública."
+
+#: apps/web/src/app/(dashboard)/documents/upcoming-profile-claim-teaser.tsx:30
+msgid "You can claim your profile later on by going to your profile settings!"
+msgstr "¡Puedes reclamar tu perfil más tarde yendo a la configuración de tu perfil!"
+
+#: apps/web/src/components/document/document-recipient-link-copy-dialog.tsx:87
+msgid "You can copy and share these links to recipients so they can action the document."
+msgstr "Puede copiar y compartir estos enlaces con los destinatarios para que puedan gestionar el documento."
+
+#: apps/web/src/components/forms/public-profile-form.tsx:154
+msgid "You can update the profile URL by updating the team URL in the general settings page."
+msgstr "Puedes actualizar la URL del perfil actualizando la URL del equipo en la página de configuración general."
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:71
+msgid "You can view documents associated with this email and use this identity when sending documents."
+msgstr "Puedes ver documentos asociados a este correo electrónico y usar esta identidad al enviar documentos."
+
+#: apps/web/src/app/(dashboard)/settings/security/passkeys/create-passkey-dialog.tsx:213
+msgid "You cannot have more than {MAXIMUM_PASSKEYS} passkeys."
+msgstr "No puedes tener más de {MAXIMUM_PASSKEYS} claves de acceso."
+
+#: apps/web/src/components/(teams)/dialogs/update-team-member-dialog.tsx:120
+msgid "You cannot modify a team member who has a higher role than you."
+msgstr "No puedes modificar a un miembro del equipo que tenga un rol más alto que tú."
+
+#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:101
+msgid "You cannot upload encrypted PDFs"
+msgstr "No puedes subir PDFs encriptados"
+
+#: apps/web/src/app/(dashboard)/settings/billing/billing-portal-button.tsx:46
+msgid "You do not currently have a customer record, this should not happen. Please contact support for assistance."
+msgstr "Actualmente no tienes un registro de cliente, esto no debería suceder. Por favor contacta a soporte para obtener asistencia."
+
+#: apps/web/src/app/(unauthenticated)/team/invite/[token]/page.tsx:127
+msgid "You have accepted an invitation from <0>{0}0> to join their team."
+msgstr "Has aceptado una invitación de <0>{0}0> para unirte a su equipo."
+
+#: apps/web/src/app/(unauthenticated)/team/verify/transfer/[token]/page.tsx:64
+msgid "You have already completed the ownership transfer for <0>{0}0>."
+msgstr "Ya has completado la transferencia de propiedad para <0>{0}0>."
+
+#: apps/web/src/app/(unauthenticated)/team/verify/email/[token]/page.tsx:61
+msgid "You have already verified your email address for <0>{0}0>."
+msgstr "Ya has verificado tu dirección de correo electrónico para <0>{0}0>."
+
+#: apps/web/src/app/(unauthenticated)/team/decline/[token]/page.tsx:95
+#: apps/web/src/app/(unauthenticated)/team/invite/[token]/page.tsx:100
+msgid "You have been invited by <0>{0}0> to join their team."
+msgstr "Has sido invitado por <0>{0}0> para unirte a su equipo."
+
+#: apps/web/src/app/(unauthenticated)/team/decline/[token]/page.tsx:122
+msgid "You have declined the invitation from <0>{0}0> to join their team."
+msgstr "Has rechazado la invitación de <0>{0}0> para unirte a su equipo."
+
+#: apps/web/src/app/(dashboard)/settings/webhooks/page.tsx:44
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/page.tsx:49
+msgid "You have no webhooks yet. Your webhooks will be shown here once you create them."
+msgstr "Aún no tienes webhooks. Tus webhooks se mostrarán aquí una vez que los crees."
+
+#: apps/web/src/app/(dashboard)/templates/empty-state.tsx:15
+msgid "You have not yet created any templates. To create a template please upload one."
+msgstr "Aún no has creado plantillas. Para crear una plantilla, por favor carga una."
+
+#: apps/web/src/app/(dashboard)/documents/empty-state.tsx:30
+msgid "You have not yet created or received any documents. To create a document please upload one."
+msgstr "Aún no has creado ni recibido documentos. Para crear un documento, por favor carga uno."
+
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:234
+msgid "You have reached the maximum limit of {0} direct templates. <0>Upgrade your account to continue!0>"
+msgstr "Has alcanzado el límite máximo de {0} plantillas directas. <0>¡Actualiza tu cuenta para continuar!0>"
+
+#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:52
+msgid "You have reached your document limit."
+msgstr "Has alcanzado tu límite de documentos."
+
+#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:183
+msgid "You have reached your document limit. <0>Upgrade your account to continue!0>"
+msgstr "Has alcanzado tu límite de documentos. <0>¡Actualiza tu cuenta para continuar!0>"
+
+#: apps/web/src/app/(signing)/sign/[token]/rejected/page.tsx:88
+msgid "You have rejected this document"
+msgstr "You have rejected this document"
+
+#: apps/web/src/components/(teams)/dialogs/leave-team-dialog.tsx:50
+msgid "You have successfully left this team."
+msgstr "Has salido de este equipo con éxito."
+
+#: apps/web/src/app/(signing)/sign/[token]/complete/claim-account.tsx:80
+#: apps/web/src/components/forms/signup.tsx:95
+#: apps/web/src/components/forms/v2/signup.tsx:129
+msgid "You have successfully registered. Please verify your account by clicking on the link you received in the email."
+msgstr "Te has registrado con éxito. Por favor verifica tu cuenta haciendo clic en el enlace que recibiste en el correo electrónico."
+
+#: apps/web/src/components/(teams)/dialogs/delete-team-member-dialog.tsx:50
+msgid "You have successfully removed this user from the team."
+msgstr "Has eliminado a este usuario del equipo con éxito."
+
+#: apps/web/src/app/(dashboard)/settings/teams/team-email-usage.tsx:38
+msgid "You have successfully revoked access."
+msgstr "Has revocado el acceso con éxito."
+
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:104
+msgid "You have the right to withdraw your consent to use electronic signatures at any time before completing the signing process. To withdraw your consent, please contact the sender of the document. In failing to contact the sender you may reach out to <0>{SUPPORT_EMAIL}0> for assistance. Be aware that withdrawing consent may delay or halt the completion of the related transaction or service."
+msgstr "Usted tiene el derecho de retirar su consentimiento para usar firmas electrónicas en cualquier momento antes de completar el proceso de firma. Para retirar su consentimiento, comuníquese con el remitente del documento. Si no se comunica con el remitente, puede comunicarse con <0>{SUPPORT_EMAIL}0> para obtener asistencia. Tenga en cuenta que retirar el consentimiento puede retrasar o detener la finalización de la transacción o servicio relacionado."
+
+#: apps/web/src/components/(teams)/dialogs/update-team-member-dialog.tsx:93
+msgid "You have updated {teamMemberName}."
+msgstr "Has actualizado a {teamMemberName}."
+
+#: apps/web/src/app/(unauthenticated)/team/verify/email/[token]/page.tsx:136
+msgid "You have verified your email address for <0>{0}0>."
+msgstr "Has verificado tu dirección de correo electrónico para <0>{0}0>."
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/billing/page.tsx:82
+msgid "You must be an admin of this team to manage billing."
+msgstr "Debes ser un administrador de este equipo para gestionar la facturación."
+
+#: apps/web/src/components/(dashboard)/settings/token/delete-token-dialog.tsx:60
+#: apps/web/src/components/(dashboard)/settings/webhooks/delete-webhook-dialog.tsx:58
+#: apps/web/src/components/(teams)/dialogs/delete-team-dialog.tsx:54
+msgid "You must enter '{deleteMessage}' to proceed"
+msgstr "Debes ingresar '{deleteMessage}' para continuar"
+
+#: apps/web/src/components/(teams)/dialogs/transfer-team-dialog.tsx:301
+msgid "You must have at least one other team member to transfer ownership."
+msgstr "Debes tener al menos otro miembro del equipo para transferir la propiedad."
+
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:109
+msgid "You must set a profile URL before enabling your public profile."
+msgstr "Debes establecer una URL de perfil antes de habilitar tu perfil público."
+
+#: apps/web/src/app/(signing)/sign/[token]/signing-auth-page.tsx:56
+msgid "You need to be logged in as <0>{email}0> to view this page."
+msgstr "Debes iniciar sesión como <0>{email}0> para ver esta página."
+
+#: apps/web/src/app/(recipient)/d/[token]/signing-auth-page.tsx:45
+msgid "You need to be logged in to view this page."
+msgstr "Debes iniciar sesión para ver esta página."
+
+#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-2fa.tsx:105
+msgid "You need to setup 2FA to mark this document as viewed."
+msgstr "Debes configurar 2FA para marcar este documento como visto."
+
+#: apps/web/src/components/forms/v2/signup.tsx:283
+msgid "You will get notified & be able to set up your documenso public profile when we launch the feature."
+msgstr "Recibirás una notificación y podrás configurar tu perfil público de Documenso cuando lanzemos la función."
+
+#: apps/web/src/components/forms/2fa/enable-authenticator-app-dialog.tsx:96
+msgid "You will now be required to enter a code from your authenticator app when signing in."
+msgstr "Ahora se te pedirá que ingreses un código de tu aplicación de autenticador al iniciar sesión."
+
+#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:173
+msgid "You will receive an Email copy of the signed document once everyone has signed."
+msgstr "Recibirás una copia por correo electrónico del documento firmado una vez que todos hayan firmado."
+
+#: apps/web/src/app/(dashboard)/settings/profile/delete-account-dialog.tsx:49
+msgid "Your account has been deleted successfully."
+msgstr "Tu cuenta ha sido eliminada con éxito."
+
+#: apps/web/src/components/forms/avatar-image.tsx:108
+msgid "Your avatar has been updated successfully."
+msgstr "Tu avatar ha sido actualizado con éxito."
+
+#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:75
+msgid "Your banner has been updated successfully."
+msgstr "Tu banner ha sido actualizado con éxito."
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/branding-preferences.tsx:280
+msgid "Your brand website URL"
+msgstr "La URL de tu sitio web de marca"
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/branding-preferences.tsx:103
+msgid "Your branding preferences have been updated"
+msgstr "Tus preferencias de marca han sido actualizadas"
+
+#: apps/web/src/app/(dashboard)/settings/billing/page.tsx:125
+msgid "Your current plan is past due. Please update your payment information."
+msgstr "Tu plan actual está vencido. Por favor actualiza tu información de pago."
+
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:251
+msgid "Your direct signing templates"
+msgstr "Tus {0} plantillas de firma directa"
+
+#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:124
+msgid "Your document failed to upload."
+msgstr "Tu documento no se pudo cargar."
+
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:157
+msgid "Your document has been created from the template successfully."
+msgstr "Tu documento se ha creado exitosamente a partir de la plantilla."
+
+#: apps/web/src/app/(dashboard)/documents/_action-items/resend-document.tsx:98
+msgid "Your document has been re-sent successfully."
+msgstr "Tu documento ha sido reenviado con éxito."
+
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:328
+msgid "Your document has been sent successfully."
+msgstr "Tu documento ha sido enviado con éxito."
+
+#: apps/web/src/app/(dashboard)/documents/duplicate-document-dialog.tsx:59
+msgid "Your document has been successfully duplicated."
+msgstr "Tu documento ha sido duplicado con éxito."
+
+#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:82
+msgid "Your document has been uploaded successfully."
+msgstr "Tu documento ha sido subido con éxito."
+
+#: apps/web/src/app/(dashboard)/templates/new-template-dialog.tsx:69
+msgid "Your document has been uploaded successfully. You will be redirected to the template page."
+msgstr "Tu documento ha sido subido con éxito. Serás redirigido a la página de plantillas."
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:92
+msgid "Your document preferences have been updated"
+msgstr "Tus preferencias de documento han sido actualizadas"
+
+#: apps/web/src/components/(dashboard)/common/command-menu.tsx:223
+msgid "Your documents"
+msgstr "Tus documentos"
+
+#: apps/web/src/app/(unauthenticated)/verify-email/[token]/client.tsx:40
+msgid "Your email has been successfully confirmed! You can now use all features of Documenso."
+msgstr "¡Tu correo electrónico ha sido confirmado con éxito! Ahora puedes usar todas las funciones de Documenso."
+
+#: apps/web/src/app/(dashboard)/settings/teams/team-email-usage.tsx:62
+msgid "Your email is currently being used by team <0>{0}0> ({1})."
+msgstr "Tu correo electrónico está siendo utilizado actualmente por el equipo <0>{0}0> ({1})."
+
+#: apps/web/src/app/(dashboard)/settings/tokens/page.tsx:47
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx:80
+msgid "Your existing tokens"
+msgstr "Tus tokens existentes"
+
+#: apps/web/src/components/forms/team-document-settings.tsx:70
+#~ msgid "Your global team document settings has been updated successfully."
+#~ msgstr "Your global team document settings has been updated successfully."
+
+#: apps/web/src/components/forms/password.tsx:72
+#: apps/web/src/components/forms/reset-password.tsx:73
+msgid "Your password has been updated successfully."
+msgstr "Tu contraseña ha sido actualizada con éxito."
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/layout-billing-banner.tsx:113
+msgid "Your payment for teams is overdue. Please settle the payment to avoid any service disruptions."
+msgstr "Tu pago por equipos está vencido. Por favor, salda el pago para evitar interrupciones en el servicio."
+
+#: apps/web/src/components/forms/profile.tsx:73
+msgid "Your profile has been updated successfully."
+msgstr "Tu perfil ha sido actualizado con éxito."
+
+#: apps/web/src/app/(dashboard)/admin/users/[id]/page.tsx:73
+msgid "Your profile has been updated."
+msgstr "Tu perfil ha sido actualizado."
+
+#: apps/web/src/components/forms/public-profile-form.tsx:81
+msgid "Your public profile has been updated."
+msgstr "Tu perfil público ha sido actualizado."
+
+#: apps/web/src/components/forms/2fa/recovery-code-list.tsx:27
+msgid "Your recovery code has been copied to your clipboard."
+msgstr "Tu código de recuperación ha sido copiado en tu portapapeles."
+
+#: apps/web/src/components/forms/2fa/enable-authenticator-app-dialog.tsx:167
+#: apps/web/src/components/forms/2fa/view-recovery-codes-dialog.tsx:91
+msgid "Your recovery codes are listed below. Please store them in a safe place."
+msgstr "Tus códigos de recuperación se enumeran a continuación. Por favor, guárdalos en un lugar seguro."
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/billing/page.tsx:62
+msgid "Your subscription is currently active."
+msgstr "Tu suscripción está actualmente activa."
+
+#: apps/web/src/components/(teams)/dialogs/create-team-dialog.tsx:89
+msgid "Your team has been created."
+msgstr "Tu equipo ha sido creado."
+
+#: apps/web/src/components/(teams)/dialogs/delete-team-dialog.tsx:73
+msgid "Your team has been successfully deleted."
+msgstr "Tu equipo ha sido eliminado con éxito."
+
+#: apps/web/src/components/(teams)/forms/update-team-form.tsx:107
+msgid "Your team has been successfully updated."
+msgstr "Tu equipo ha sido actualizado con éxito."
+
+#: apps/web/src/app/(dashboard)/templates/duplicate-template-dialog.tsx:43
+msgid "Your template has been duplicated successfully."
+msgstr "Tu plantilla ha sido duplicada con éxito."
+
+#: apps/web/src/app/(dashboard)/templates/delete-template-dialog.tsx:42
+msgid "Your template has been successfully deleted."
+msgstr "Tu plantilla ha sido eliminada con éxito."
+
+#: apps/web/src/app/(dashboard)/templates/duplicate-template-dialog.tsx:67
+msgid "Your template will be duplicated."
+msgstr "Tu plantilla será duplicada."
+
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:224
+msgid "Your templates has been saved successfully."
+msgstr "Tus plantillas han sido guardadas con éxito."
+
+#: apps/web/src/app/(unauthenticated)/verify-email/[token]/page.tsx:89
+msgid "Your token has expired!"
+msgstr "¡Tu token ha expirado!"
+
+#: apps/web/src/components/forms/token.tsx:277
+msgid "Your token was created successfully! Make sure to copy it because you won't be able to see it again!"
+msgstr "¡Tu token se creó con éxito! ¡Asegúrate de copiarlo porque no podrás verlo de nuevo!"
+
+#: apps/web/src/app/(dashboard)/settings/tokens/page.tsx:53
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx:86
+msgid "Your tokens will be shown here once you create them."
+msgstr "Tus tokens se mostrarán aquí una vez que los crees."
+
diff --git a/packages/lib/translations/fr/common.po b/packages/lib/translations/fr/common.po
index 2c85e90b0..998ab074c 100644
--- a/packages/lib/translations/fr/common.po
+++ b/packages/lib/translations/fr/common.po
@@ -8,7 +8,7 @@ msgstr ""
"Language: fr\n"
"Project-Id-Version: documenso-app\n"
"Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2024-10-08 12:05\n"
+"PO-Revision-Date: 2024-11-20 11:56\n"
"Last-Translator: \n"
"Language-Team: French\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
@@ -18,18 +18,267 @@ msgstr ""
"X-Crowdin-File: common.po\n"
"X-Crowdin-File-ID: 4\n"
+#: packages/email/template-components/template-document-super-delete.tsx:27
+msgid "\"{documentName}\" has been deleted by an admin."
+msgstr "\"{documentName}\" a été supprimé par un admin."
+
+#: packages/email/template-components/template-document-pending.tsx:37
+msgid "“{documentName}” has been signed"
+msgstr "« {documentName} » a été signé"
+
+#: packages/email/template-components/template-document-completed.tsx:41
+msgid "“{documentName}” was signed by all signers"
+msgstr "“{documentName}” a été signé par tous les signataires"
+
+#: packages/lib/server-only/document/resend-document.tsx:109
+#~ msgid "{0}"
+#~ msgstr "{0}"
+
+#: packages/email/template-components/template-document-invite.tsx:80
+#~ msgid "{0} Document"
+#~ msgstr "{0} Document"
+
+#: packages/lib/jobs/definitions/emails/send-signing-email.ts:137
+msgid "{0} has invited you to {recipientActionVerb} the document \"{1}\"."
+msgstr "{0} vous a invité à {recipientActionVerb} le document \"{1}\"."
+
+#: packages/lib/jobs/definitions/emails/send-signing-email.ts:130
+msgid "{0} invited you to {recipientActionVerb} a document"
+msgstr "{0} vous a invité à {recipientActionVerb} un document"
+
+#: packages/email/templates/team-join.tsx:61
+msgid "{0} joined the team {teamName} on Documenso"
+msgstr "{0} a rejoint l'équipe {teamName} sur Documenso"
+
+#: packages/email/templates/team-leave.tsx:61
+msgid "{0} left the team {teamName} on Documenso"
+msgstr "{0} a quitté l'équipe {teamName} sur Documenso"
+
#: packages/ui/primitives/data-table-pagination.tsx:30
msgid "{0} of {1} row(s) selected."
msgstr "{0} sur {1} ligne(s) sélectionnée(s)."
+#: packages/lib/jobs/definitions/emails/send-signing-email.ts:136
+#: packages/lib/server-only/document/resend-document.tsx:137
+msgid "{0} on behalf of {1} has invited you to {recipientActionVerb} the document \"{2}\"."
+msgstr "{0} au nom de {1} vous a invité à {recipientActionVerb} le document \"{2}\"."
+
+#: packages/email/template-components/template-document-invite.tsx:51
+#~ msgid "{0}<0/>\"{documentName}\""
+#~ msgstr "{0}<0/>\"{documentName}\""
+
+#: packages/email/templates/document-invite.tsx:94
+msgid "{inviterName} <0>({inviterEmail})0>"
+msgstr "{inviterName} <0>({inviterEmail})0>"
+
+#: packages/email/templates/document-cancel.tsx:21
+msgid "{inviterName} has cancelled the document {documentName}, you don't need to sign it anymore."
+msgstr "{inviterName} a annulé le document {documentName}, vous n'avez plus besoin de le signer."
+
+#: packages/email/template-components/template-document-cancel.tsx:24
+msgid "{inviterName} has cancelled the document<0/>\"{documentName}\""
+msgstr "{inviterName} a annulé le document<0/>\"{documentName}\""
+
+#: packages/email/template-components/template-document-invite.tsx:75
+msgid "{inviterName} has invited you to {0}<0/>\"{documentName}\""
+msgstr "{inviterName} vous a invité à {0}<0/>\"{documentName}\""
+
+#: packages/email/templates/document-invite.tsx:41
+msgid "{inviterName} has invited you to {action} {documentName}"
+msgstr "{inviterName} vous a invité à {action} {documentName}"
+
+#: packages/email/templates/document-invite.tsx:106
+msgid "{inviterName} has invited you to {action} the document \"{documentName}\"."
+msgstr "{inviterName} vous a invité à {action} le document \"{documentName}\"."
+
+#: packages/email/templates/recipient-removed-from-document.tsx:20
+msgid "{inviterName} has removed you from the document {documentName}."
+msgstr "{inviterName} vous a retiré du document {documentName}."
+
+#: packages/email/templates/recipient-removed-from-document.tsx:49
+msgid "{inviterName} has removed you from the document<0/>\"{documentName}\""
+msgstr "{inviterName} vous a retiré du document<0/>\"{documentName}\""
+
+#: packages/email/template-components/template-document-invite.tsx:63
+msgid "{inviterName} on behalf of {teamName} has invited you to {0}"
+msgstr "{inviterName} au nom de {teamName} vous a invité à {0}"
+
+#: packages/email/template-components/template-document-invite.tsx:49
+#~ msgid "{inviterName} on behalf of {teamName} has invited you to {0}<0/>\"{documentName}\""
+#~ msgstr "{inviterName} on behalf of {teamName} has invited you to {0}<0/>\"{documentName}\""
+
+#: packages/email/templates/document-invite.tsx:45
+msgid "{inviterName} on behalf of {teamName} has invited you to {action} {documentName}"
+msgstr "{inviterName} au nom de {teamName} vous a invité à {action} {documentName}"
+
+#: packages/email/templates/team-join.tsx:67
+msgid "{memberEmail} joined the following team"
+msgstr "{memberEmail} a rejoint l'équipe suivante"
+
+#: packages/email/templates/team-leave.tsx:67
+msgid "{memberEmail} left the following team"
+msgstr "{memberEmail} a quitté l'équipe suivante"
+
+#: packages/lib/utils/document-audit-logs.ts:263
+msgid "{prefix} added a field"
+msgstr "{prefix} a ajouté un champ"
+
+#: packages/lib/utils/document-audit-logs.ts:275
+msgid "{prefix} added a recipient"
+msgstr "{prefix} a ajouté un destinataire"
+
+#: packages/lib/utils/document-audit-logs.ts:287
+msgid "{prefix} created the document"
+msgstr "{prefix} a créé le document"
+
+#: packages/lib/utils/document-audit-logs.ts:291
+msgid "{prefix} deleted the document"
+msgstr "{prefix} a supprimé le document"
+
+#: packages/lib/utils/document-audit-logs.ts:335
+msgid "{prefix} moved the document to team"
+msgstr "{prefix} a déplacé le document vers l'équipe"
+
+#: packages/lib/utils/document-audit-logs.ts:319
+msgid "{prefix} opened the document"
+msgstr "{prefix} a ouvert le document"
+
+#: packages/lib/utils/document-audit-logs.ts:267
+msgid "{prefix} removed a field"
+msgstr "{prefix} a supprimé un champ"
+
+#: packages/lib/utils/document-audit-logs.ts:279
+msgid "{prefix} removed a recipient"
+msgstr "{prefix} a supprimé un destinataire"
+
+#: packages/lib/utils/document-audit-logs.ts:365
+msgid "{prefix} resent an email to {0}"
+msgstr "{prefix} a renvoyé un e-mail à {0}"
+
+#: packages/lib/utils/document-audit-logs.ts:366
+msgid "{prefix} sent an email to {0}"
+msgstr "{prefix} a envoyé un email à {0}"
+
+#: packages/lib/utils/document-audit-logs.ts:331
+msgid "{prefix} sent the document"
+msgstr "{prefix} a envoyé le document"
+
+#: packages/lib/utils/document-audit-logs.ts:295
+msgid "{prefix} signed a field"
+msgstr "{prefix} a signé un champ"
+
+#: packages/lib/utils/document-audit-logs.ts:299
+msgid "{prefix} unsigned a field"
+msgstr "{prefix} n'a pas signé un champ"
+
+#: packages/lib/utils/document-audit-logs.ts:271
+msgid "{prefix} updated a field"
+msgstr "{prefix} a mis à jour un champ"
+
+#: packages/lib/utils/document-audit-logs.ts:283
+msgid "{prefix} updated a recipient"
+msgstr "{prefix} a mis à jour un destinataire"
+
+#: packages/lib/utils/document-audit-logs.ts:315
+msgid "{prefix} updated the document"
+msgstr "{prefix} a mis à jour le document"
+
+#: packages/lib/utils/document-audit-logs.ts:307
+msgid "{prefix} updated the document access auth requirements"
+msgstr "{prefix} a mis à jour les exigences d'authentification d'accès au document"
+
+#: packages/lib/utils/document-audit-logs.ts:327
+msgid "{prefix} updated the document external ID"
+msgstr "{prefix} a mis à jour l'ID externe du document"
+
+#: packages/lib/utils/document-audit-logs.ts:311
+msgid "{prefix} updated the document signing auth requirements"
+msgstr "{prefix} a mis à jour les exigences d'authentification pour la signature du document"
+
+#: packages/lib/utils/document-audit-logs.ts:323
+msgid "{prefix} updated the document title"
+msgstr "{prefix} a mis à jour le titre du document"
+
+#: packages/lib/utils/document-audit-logs.ts:303
+msgid "{prefix} updated the document visibility"
+msgstr "{prefix} a mis à jour la visibilité du document"
+
+#: packages/email/templates/document-created-from-direct-template.tsx:61
+msgid "{recipientName} {action} a document by using one of your direct links"
+msgstr "{recipientName} {action} un document en utilisant l'un de vos liens directs"
+
+#: packages/email/templates/document-rejected.tsx:27
+msgid "{recipientName} has rejected the document '{documentName}'"
+msgstr "{recipientName} a rejeté le document '{documentName}'"
+
+#: packages/email/template-components/template-document-rejected.tsx:25
+msgid "{signerName} has rejected the document \"{documentName}\"."
+msgstr "{signerName} a rejeté le document \"{documentName}\"."
+
+#: packages/email/template-components/template-document-invite.tsx:68
+msgid "{teamName} has invited you to {0}"
+msgstr "{teamName} vous a invité à {0}"
+
+#: packages/email/templates/document-invite.tsx:46
+msgid "{teamName} has invited you to {action} {documentName}"
+msgstr "{teamName} vous a invité à {action} {documentName}"
+
+#: packages/email/templates/team-transfer-request.tsx:55
+msgid "{teamName} ownership transfer request"
+msgstr "Demande de transfert de propriété de {teamName}"
+
+#: packages/lib/utils/document-audit-logs.ts:343
+msgid "{userName} approved the document"
+msgstr "{userName} a approuvé le document"
+
+#: packages/lib/utils/document-audit-logs.ts:344
+msgid "{userName} CC'd the document"
+msgstr "{userName} a mis en copie le document"
+
+#: packages/lib/utils/document-audit-logs.ts:345
+msgid "{userName} completed their task"
+msgstr "{userName} a complété sa tâche"
+
+#: packages/lib/utils/document-audit-logs.ts:355
+msgid "{userName} rejected the document"
+msgstr "{userName} a rejeté le document"
+
+#: packages/lib/utils/document-audit-logs.ts:341
+msgid "{userName} signed the document"
+msgstr "{userName} a signé le document"
+
+#: packages/lib/utils/document-audit-logs.ts:342
+msgid "{userName} viewed the document"
+msgstr "{userName} a consulté le document"
+
#: packages/ui/primitives/data-table-pagination.tsx:41
msgid "{visibleRows, plural, one {Showing # result.} other {Showing # results.}}"
msgstr "{visibleRows, plural, one {Affichage de # résultat.} other {Affichage de # résultats.}}"
+#: packages/email/templates/document-invite.tsx:100
+#~ msgid "`${inviterName} has invited you to ${action} the document \"${documentName}\".`"
+#~ msgstr "`${inviterName} has invited you to ${action} the document \"${documentName}\".`"
+
+#: packages/email/templates/team-transfer-request.tsx:59
+msgid "<0>{senderName}0> has requested that you take ownership of the following team"
+msgstr "<0>{senderName}0> a demandé que vous preniez possession de l'équipe suivante"
+
+#: packages/email/templates/confirm-team-email.tsx:75
+msgid "<0>{teamName}0> has requested to use your email address for their team on Documenso."
+msgstr "<0>{teamName}0> a demandé à utiliser votre adresse e-mail pour leur équipe sur Documenso."
+
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:241
+msgid "<0>Email0> - The recipient will be emailed the document to sign, approve, etc."
+msgstr "<0>E-mail0> - Le destinataire recevra le document par e-mail pour signer, approuver, etc."
+
#: packages/ui/components/recipient/recipient-action-auth-select.tsx:53
msgid "<0>Inherit authentication method0> - Use the global action signing authentication method configured in the \"General Settings\" step"
msgstr "<0>Hériter du méthode d'authentification0> - Utiliser la méthode d'authentification de signature d'action globale configurée dans l'étape \"Paramètres Générales\""
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:247
+msgid "<0>Links0> - We will generate links which you can send to the recipients manually."
+msgstr "<0>Liens0> - Nous générerons des liens que vous pourrez envoyer manuellement aux destinataires."
+
#: packages/ui/components/document/document-global-auth-action-select.tsx:95
msgid "<0>No restrictions0> - No authentication required"
msgstr "<0>Aucune restriction0> - Aucune authentification requise"
@@ -42,6 +291,10 @@ msgstr "<0>Aucune restriction0> - Le document peut être accédé directement
msgid "<0>None0> - No authentication required"
msgstr "<0>Aucun0> - Aucune authentification requise"
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:254
+msgid "<0>Note0> - If you use Links in combination with direct templates, you will need to manually send the links to the remaining recipients."
+msgstr "<0>Remarque0> - Si vous utilisez des liens en combinaison avec des modèles directs, vous devrez envoyer manuellement les liens aux autres destinataires."
+
#: packages/ui/components/document/document-global-auth-action-select.tsx:89
#: packages/ui/components/recipient/recipient-action-auth-select.tsx:69
msgid "<0>Require 2FA0> - The recipient must have an account and 2FA enabled via their settings"
@@ -56,20 +309,95 @@ msgstr "<0>Exiger un compte0> - Le destinataire doit être connecté pour voir
msgid "<0>Require passkey0> - The recipient must have an account and passkey configured via their settings"
msgstr "<0>Exiger une clé d'accès0> - Le destinataire doit avoir un compte et une clé d'accès configurée via ses paramètres"
+#: packages/lib/jobs/definitions/emails/send-signing-email.ts:122
+msgid "A document was created by your direct template that requires you to {recipientActionVerb} it."
+msgstr "Un document a été créé par votre modèle direct qui nécessite que vous {recipientActionVerb} celui-ci."
+
+#: packages/lib/utils/document-audit-logs.ts:262
+msgid "A field was added"
+msgstr "Un champ a été ajouté"
+
+#: packages/lib/utils/document-audit-logs.ts:266
+msgid "A field was removed"
+msgstr "Un champ a été supprimé"
+
+#: packages/lib/utils/document-audit-logs.ts:270
+msgid "A field was updated"
+msgstr "Un champ a été mis à jour"
+
+#: packages/lib/jobs/definitions/emails/send-team-member-joined-email.ts:107
+msgid "A new member has joined your team"
+msgstr "Un nouveau membre a rejoint votre équipe"
+
+#: packages/lib/utils/document-audit-logs.ts:274
+msgid "A recipient was added"
+msgstr "Un destinataire a été ajouté"
+
+#: packages/lib/utils/document-audit-logs.ts:278
+msgid "A recipient was removed"
+msgstr "Un destinataire a été supprimé"
+
+#: packages/lib/utils/document-audit-logs.ts:282
+msgid "A recipient was updated"
+msgstr "Un destinataire a été mis à jour"
+
+#: packages/lib/server-only/team/create-team-email-verification.ts:156
+msgid "A request to use your email has been initiated by {0} on Documenso"
+msgstr "Une demande d'utilisation de votre e-mail a été initiée par {0} sur Documenso"
+
+#: packages/lib/server-only/team/create-team-email-verification.ts:142
+#~ msgid "A request to use your email has been initiated by {teamName} on Documenso"
+#~ msgstr "A request to use your email has been initiated by {teamName} on Documenso"
+
+#: packages/email/templates/team-join.tsx:31
+msgid "A team member has joined a team on Documenso"
+msgstr "Un membre de l'équipe a rejoint une équipe sur Documenso"
+
+#: packages/lib/jobs/definitions/emails/send-team-member-left-email.ts:96
+msgid "A team member has left {0}"
+msgstr "Un membre de l'équipe a quitté {0}"
+
+#: packages/email/templates/team-leave.tsx:31
+msgid "A team member has left a team on Documenso"
+msgstr "Un membre de l'équipe a quitté une équipe sur Documenso"
+
+#: packages/email/templates/team-delete.tsx:29
+#: packages/email/templates/team-delete.tsx:33
+msgid "A team you were a part of has been deleted"
+msgstr "Une équipe dont vous faisiez partie a été supprimée"
+
+#: packages/email/templates/confirm-team-email.tsx:118
+#: packages/email/templates/team-invite.tsx:94
+#: packages/email/templates/team-transfer-request.tsx:81
+msgid "Accept"
+msgstr "Accepter"
+
+#: packages/email/templates/team-invite.tsx:42
+msgid "Accept invitation to join a team on Documenso"
+msgstr "Accepter l'invitation à rejoindre une équipe sur Documenso"
+
+#: packages/email/templates/confirm-team-email.tsx:41
+msgid "Accept team email request for {teamName} on Documenso"
+msgstr "Accepter la demande d'email d'équipe pour {teamName} sur Documenso"
+
+#: packages/email/templates/team-transfer-request.tsx:29
+msgid "Accept team transfer request on Documenso"
+msgstr "Accepter la demande de transfert d'équipe sur Documenso"
+
#: packages/ui/primitives/document-dropzone.tsx:69
msgid "Add a document"
msgstr "Ajouter un document"
-#: packages/ui/primitives/document-flow/add-settings.tsx:336
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:339
+#: packages/ui/primitives/document-flow/add-settings.tsx:378
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:468
msgid "Add a URL to redirect the user to once the document is signed"
msgstr "Ajouter une URL pour rediriger l'utilisateur une fois le document signé"
-#: packages/ui/primitives/document-flow/add-settings.tsx:248
+#: packages/ui/primitives/document-flow/add-settings.tsx:290
msgid "Add an external ID to the document. This can be used to identify the document in external systems."
msgstr "Ajouter un ID externe au document. Cela peut être utilisé pour identifier le document dans des systèmes externes."
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:256
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:385
msgid "Add an external ID to the template. This can be used to identify in external systems."
msgstr "Ajouter un ID externe au modèle. Cela peut être utilisé pour identifier dans des systèmes externes."
@@ -82,19 +410,19 @@ msgstr "Ajouter une autre option"
msgid "Add another value"
msgstr "Ajouter une autre valeur"
-#: packages/ui/primitives/document-flow/add-signers.tsx:662
+#: packages/ui/primitives/document-flow/add-signers.tsx:691
msgid "Add myself"
msgstr "Ajoutez-moi"
-#: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:637
+#: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:645
msgid "Add Myself"
msgstr "Ajoutez-moi"
-#: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:623
+#: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:631
msgid "Add Placeholder Recipient"
msgstr "Ajouter un destinataire de substitution"
-#: packages/ui/primitives/document-flow/add-signers.tsx:651
+#: packages/ui/primitives/document-flow/add-signers.tsx:680
msgid "Add Signer"
msgstr "Ajouter un signataire"
@@ -110,13 +438,13 @@ msgstr "Ajouter du texte au champ"
msgid "Admin"
msgstr "Administrateur"
-#: packages/ui/primitives/document-flow/add-settings.tsx:230
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:238
+#: packages/ui/primitives/document-flow/add-settings.tsx:272
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:367
msgid "Advanced Options"
msgstr "Options avancées"
-#: packages/ui/primitives/document-flow/add-fields.tsx:565
-#: packages/ui/primitives/template-flow/add-template-fields.tsx:402
+#: packages/ui/primitives/document-flow/add-fields.tsx:576
+#: packages/ui/primitives/template-flow/add-template-fields.tsx:409
msgid "Advanced settings"
msgstr "Paramètres avancés"
@@ -124,10 +452,34 @@ msgstr "Paramètres avancés"
msgid "After submission, a document will be automatically generated and added to your documents page. You will also receive a notification via email."
msgstr "Après soumission, un document sera automatiquement généré et ajouté à votre page de documents. Vous recevrez également une notification par email."
+#: packages/email/template-components/template-document-cancel.tsx:31
+msgid "All signatures have been voided."
+msgstr "Toutes les signatures ont été annulées."
+
+#: packages/email/templates/confirm-team-email.tsx:98
+msgid "Allow document recipients to reply directly to this email address"
+msgstr "Autoriser les destinataires des documents à répondre directement à cette adresse e-mail"
+
+#: packages/email/templates/document-super-delete.tsx:22
+msgid "An admin has deleted your document \"{documentName}\"."
+msgstr "Un administrateur a supprimé votre document \"{documentName}\"."
+
+#: packages/ui/primitives/pdf-viewer.tsx:167
+msgid "An error occurred while loading the document."
+msgstr "Une erreur s'est produite lors du chargement du document."
+
#: packages/lib/constants/recipient-roles.ts:8
msgid "Approve"
msgstr "Approuver"
+#: packages/email/template-components/template-document-invite.tsx:106
+msgid "Approve Document"
+msgstr "Approuver le document"
+
+#: packages/lib/constants/recipient-roles.ts:68
+#~ msgid "APPROVE_REQUEST"
+#~ msgstr "APPROVE_REQUEST"
+
#: packages/lib/constants/recipient-roles.ts:9
msgid "Approved"
msgstr "Approuvé"
@@ -136,18 +488,38 @@ msgstr "Approuvé"
msgid "Approver"
msgstr "Approuveur"
+#: packages/lib/constants/recipient-roles.ts:12
+msgid "Approvers"
+msgstr "Approbateurs"
+
#: packages/lib/constants/recipient-roles.ts:10
msgid "Approving"
msgstr "En attente d'approbation"
-#: packages/ui/primitives/signature-pad/signature-pad.tsx:276
+#: packages/email/template-components/template-confirmation-email.tsx:25
+msgid "Before you get started, please confirm your email address by clicking the button below:"
+msgstr "Avant de commencer, veuillez confirmer votre adresse email en cliquant sur le bouton ci-dessous :"
+
+#: packages/ui/primitives/signature-pad/signature-pad.tsx:377
msgid "Black"
msgstr "Noir"
-#: packages/ui/primitives/signature-pad/signature-pad.tsx:290
+#: packages/ui/primitives/signature-pad/signature-pad.tsx:391
msgid "Blue"
msgstr "Bleu"
+#: packages/email/templates/team-invite.tsx:84
+msgid "by <0>{senderName}0>"
+msgstr "par <0>{senderName}0>"
+
+#: packages/email/templates/confirm-team-email.tsx:87
+msgid "By accepting this request, you will be granting <0>{teamName}0> access to:"
+msgstr "En acceptant cette demande, vous accorderez à <0>{teamName}0> l'accès à :"
+
+#: packages/email/templates/team-transfer-request.tsx:70
+msgid "By accepting this request, you will take responsibility for any billing items associated with this team."
+msgstr "En acceptant cette demande, vous serez responsable de tous les éléments de facturation associés à cette équipe."
+
#: packages/ui/primitives/document-flow/field-item-advanced-settings.tsx:356
#: packages/ui/primitives/document-flow/send-document-action-dialog.tsx:58
msgid "Cancel"
@@ -157,29 +529,28 @@ msgstr "Annuler"
msgid "Cannot remove signer"
msgstr "Impossible de retirer le signataire"
-#: packages/ui/primitives/document-flow/add-signers.tsx:221
-#~ msgid "Cannot update signer because they have already signed a field"
-#~ msgstr "Cannot update signer because they have already signed a field"
-
-#: packages/lib/constants/recipient-roles.ts:17
+#: packages/lib/constants/recipient-roles.ts:18
msgid "Cc"
msgstr "Cc"
-#: packages/lib/constants/recipient-roles.ts:14
-#: packages/lib/constants/recipient-roles.ts:16
+#: packages/lib/constants/recipient-roles.ts:15
+#: packages/lib/constants/recipient-roles.ts:17
msgid "CC"
msgstr "CC"
-#: packages/lib/constants/recipient-roles.ts:15
+#: packages/lib/constants/recipient-roles.ts:16
msgid "CC'd"
msgstr "CC'd"
+#: packages/lib/constants/recipient-roles.ts:19
+msgid "Ccers"
+msgstr "Ccers"
+
#: packages/ui/primitives/document-flow/field-items-advanced-settings/text-field.tsx:86
msgid "Character Limit"
msgstr "Limite de caractères"
-#: packages/ui/primitives/document-flow/add-fields.tsx:993
-#: packages/ui/primitives/template-flow/add-template-fields.tsx:788
+#: packages/ui/primitives/document-flow/types.ts:58
msgid "Checkbox"
msgstr "Case à cocher"
@@ -191,7 +562,7 @@ msgstr "Valeurs de case à cocher"
msgid "Clear filters"
msgstr "Effacer les filtres"
-#: packages/ui/primitives/signature-pad/signature-pad.tsx:310
+#: packages/ui/primitives/signature-pad/signature-pad.tsx:411
msgid "Clear Signature"
msgstr "Effacer la signature"
@@ -203,61 +574,226 @@ msgstr "Cliquez pour insérer un champ"
msgid "Close"
msgstr "Fermer"
+#: packages/email/template-components/template-document-completed.tsx:35
+#: packages/email/template-components/template-document-self-signed.tsx:36
+#: packages/lib/constants/document.ts:10
+msgid "Completed"
+msgstr "Terminé"
+
+#: packages/email/templates/document-completed.tsx:23
+#: packages/email/templates/document-self-signed.tsx:19
+msgid "Completed Document"
+msgstr "Document Terminé"
+
#: packages/lib/constants/template.ts:12
msgid "Configure Direct Recipient"
msgstr "Configurer le destinataire direct"
-#: packages/ui/primitives/document-flow/add-fields.tsx:566
-#: packages/ui/primitives/template-flow/add-template-fields.tsx:403
+#: packages/ui/primitives/document-flow/add-fields.tsx:577
+#: packages/ui/primitives/template-flow/add-template-fields.tsx:410
msgid "Configure the {0} field"
msgstr "Configurer le champ {0}"
+#: packages/email/template-components/template-confirmation-email.tsx:35
+msgid "Confirm email"
+msgstr "Confirmer l'email"
+
#: packages/ui/primitives/document-flow/document-flow-root.tsx:141
msgid "Continue"
msgstr "Continuer"
+#: packages/email/template-components/template-document-invite.tsx:72
+#~ msgid "Continue by {0} the document."
+#~ msgstr "Continue by {0} the document."
+
+#: packages/email/template-components/template-document-invite.tsx:86
+msgid "Continue by approving the document."
+msgstr "Continuez en approuvant le document."
+
+#: packages/email/template-components/template-document-completed.tsx:45
+msgid "Continue by downloading the document."
+msgstr "Continuez en téléchargeant le document."
+
+#: packages/email/template-components/template-document-invite.tsx:84
+msgid "Continue by signing the document."
+msgstr "Continuez en signant le document."
+
+#: packages/email/template-components/template-document-invite.tsx:85
+msgid "Continue by viewing the document."
+msgstr "Continuez en visualisant le document."
+
+#: packages/ui/primitives/document-flow/add-subject.tsx:254
+msgid "Copied"
+msgstr "Copié"
+
#: packages/ui/components/document/document-share-button.tsx:46
+#: packages/ui/primitives/document-flow/add-subject.tsx:241
msgid "Copied to clipboard"
msgstr "Copié dans le presse-papiers"
+#: packages/ui/primitives/document-flow/add-subject.tsx:249
+msgid "Copy"
+msgstr "Copier"
+
+#: packages/ui/components/document/document-share-button.tsx:194
+msgid "Copy Link"
+msgstr "Copier le lien"
+
+#: packages/email/template-components/template-document-self-signed.tsx:46
+msgid "Create a <0>free account0> to access your signed documents at any time."
+msgstr "Créez un <0>compte gratuit0> pour accéder à vos documents signés à tout moment."
+
+#: packages/email/template-components/template-document-self-signed.tsx:68
+msgid "Create account"
+msgstr "Créer un compte"
+
#: packages/ui/primitives/document-flow/add-signature.tsx:360
msgid "Custom Text"
msgstr "Texte personnalisé"
-#: packages/ui/primitives/document-flow/add-fields.tsx:889
-#: packages/ui/primitives/template-flow/add-template-fields.tsx:684
+#: packages/ui/primitives/document-flow/add-fields.tsx:934
+#: packages/ui/primitives/document-flow/types.ts:53
+#: packages/ui/primitives/template-flow/add-template-fields.tsx:697
msgid "Date"
msgstr "Date"
-#: packages/ui/primitives/document-flow/add-settings.tsx:271
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:279
+#: packages/ui/primitives/document-flow/add-settings.tsx:313
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:408
msgid "Date Format"
msgstr "Format de date"
-#: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:570
+#: packages/email/templates/team-invite.tsx:100
+msgid "Decline"
+msgstr "Décliner"
+
+#: packages/email/templates/reset-password.tsx:71
+msgid "Didn't request a password change? We are here to help you secure your account, just <0>contact us.0>"
+msgstr "Vous n'avez pas demandé de changement de mot de passe ? Nous sommes ici pour vous aider à sécuriser votre compte, il suffit de <0>nous contacter.0>"
+
+#: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:578
msgid "Direct link receiver"
msgstr "Receveur de lien direct"
+#: packages/lib/jobs/definitions/emails/send-rejection-emails.ts:149
+msgid "Document \"{0}\" - Rejected by {1}"
+msgstr "Document \"{0}\" - Rejeté par {1}"
+
+#: packages/lib/jobs/definitions/emails/send-rejection-emails.ts:109
+msgid "Document \"{0}\" - Rejection Confirmed"
+msgstr "Document \"{0}\" - Rejet Confirmé"
+
#: packages/ui/components/document/document-global-auth-access-select.tsx:62
-#: packages/ui/primitives/document-flow/add-settings.tsx:174
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:151
+#: packages/ui/primitives/document-flow/add-settings.tsx:216
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:202
msgid "Document access"
msgstr "Accès au document"
+#: packages/lib/utils/document-audit-logs.ts:306
+msgid "Document access auth updated"
+msgstr "L'authentification d'accès au document a été mise à jour"
+
+#: packages/lib/server-only/document/delete-document.ts:246
+#: packages/lib/server-only/document/super-delete-document.ts:98
+msgid "Document Cancelled"
+msgstr "Document Annulé"
+
+#: packages/lib/utils/document-audit-logs.ts:369
+#: packages/lib/utils/document-audit-logs.ts:370
+msgid "Document completed"
+msgstr "Document terminé"
+
+#: packages/ui/components/document/document-email-checkboxes.tsx:168
+msgid "Document completed email"
+msgstr "E-mail de document complété"
+
+#: packages/lib/utils/document-audit-logs.ts:286
+msgid "Document created"
+msgstr "Document créé"
+
+#: packages/email/templates/document-created-from-direct-template.tsx:32
+#: packages/lib/server-only/template/create-document-from-direct-template.ts:567
+msgid "Document created from direct template"
+msgstr "Document créé à partir d'un modèle direct"
+
#: packages/lib/constants/template.ts:20
msgid "Document Creation"
msgstr "Création de document"
+#: packages/lib/utils/document-audit-logs.ts:290
+msgid "Document deleted"
+msgstr "Document supprimé"
+
+#: packages/ui/components/document/document-email-checkboxes.tsx:207
+msgid "Document deleted email"
+msgstr "E-mail de document supprimé"
+
+#: packages/lib/server-only/document/send-delete-email.ts:82
+msgid "Document Deleted!"
+msgstr "Document Supprimé !"
+
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:219
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:228
+msgid "Document Distribution Method"
+msgstr "Méthode de distribution du document"
+
+#: packages/lib/utils/document-audit-logs.ts:326
+msgid "Document external ID updated"
+msgstr "ID externe du document mis à jour"
+
+#: packages/lib/utils/document-audit-logs.ts:334
+msgid "Document moved to team"
+msgstr "Document déplacé vers l'équipe"
+
+#: packages/lib/utils/document-audit-logs.ts:318
+msgid "Document opened"
+msgstr "Document ouvert"
+
+#: packages/ui/components/document/document-email-checkboxes.tsx:128
+msgid "Document pending email"
+msgstr "E-mail de document en attente"
+
+#: packages/email/template-components/template-document-rejected.tsx:21
+msgid "Document Rejected"
+msgstr "Document Rejeté"
+
+#~ msgid "Document Rejection Confirmed"
+#~ msgstr "Document Rejection Confirmed"
+
+#: packages/lib/utils/document-audit-logs.ts:330
+msgid "Document sent"
+msgstr "Document envoyé"
+
+#: packages/lib/utils/document-audit-logs.ts:310
+msgid "Document signing auth updated"
+msgstr "Authentification de signature de document mise à jour"
+
+#: packages/lib/utils/document-audit-logs.ts:322
+msgid "Document title updated"
+msgstr "Titre du document mis à jour"
+
+#: packages/lib/utils/document-audit-logs.ts:314
+msgid "Document updated"
+msgstr "Document mis à jour"
+
+#: packages/lib/utils/document-audit-logs.ts:302
+msgid "Document visibility updated"
+msgstr "Visibilité du document mise à jour"
+
+#: packages/email/template-components/template-document-completed.tsx:57
#: packages/ui/components/document/document-download-button.tsx:68
msgid "Download"
msgstr "Télécharger"
+#: packages/lib/constants/document.ts:13
+msgid "Draft"
+msgstr "Brouillon"
+
#: packages/ui/primitives/document-dropzone.tsx:162
msgid "Drag & drop your PDF here."
msgstr "Faites glisser et déposez votre PDF ici."
-#: packages/ui/primitives/document-flow/add-fields.tsx:1019
-#: packages/ui/primitives/template-flow/add-template-fields.tsx:814
+#: packages/ui/primitives/document-flow/add-fields.tsx:1065
+#: packages/ui/primitives/template-flow/add-template-fields.tsx:827
msgid "Dropdown"
msgstr "Liste déroulante"
@@ -265,20 +801,35 @@ msgstr "Liste déroulante"
msgid "Dropdown options"
msgstr "Options de liste déroulante"
-#: packages/ui/primitives/document-flow/add-fields.tsx:837
+#: packages/lib/constants/document.ts:28
+#: packages/ui/primitives/document-flow/add-fields.tsx:882
#: packages/ui/primitives/document-flow/add-signature.tsx:272
-#: packages/ui/primitives/document-flow/add-signers.tsx:500
-#: packages/ui/primitives/template-flow/add-template-fields.tsx:632
-#: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:463
-#: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:470
+#: packages/ui/primitives/document-flow/add-signers.tsx:512
+#: packages/ui/primitives/document-flow/add-signers.tsx:519
+#: packages/ui/primitives/document-flow/types.ts:54
+#: packages/ui/primitives/template-flow/add-template-fields.tsx:645
+#: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:471
+#: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:478
msgid "Email"
msgstr "Email"
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:184
+#: packages/ui/primitives/document-flow/add-signature.types.ts:7
+msgid "Email is required"
+msgstr "L'email est requis"
+
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:307
msgid "Email Options"
msgstr "Options d'email"
-#: packages/ui/primitives/document-flow/add-fields.tsx:1082
+#: packages/lib/utils/document-audit-logs.ts:363
+msgid "Email resent"
+msgstr "Email renvoyé"
+
+#: packages/lib/utils/document-audit-logs.ts:363
+msgid "Email sent"
+msgstr "Email envoyé"
+
+#: packages/ui/primitives/document-flow/add-fields.tsx:1130
msgid "Empty field"
msgstr "Champ vide"
@@ -287,20 +838,25 @@ msgid "Enable Direct Link Signing"
msgstr "Activer la signature de lien direct"
#: packages/ui/primitives/document-flow/add-signers.tsx:401
-#: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:362
+#: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:370
msgid "Enable signing order"
msgstr "Activer l'ordre de signature"
+#: packages/ui/primitives/document-flow/add-fields.tsx:802
+msgid "Enable Typed Signatures"
+msgstr "Activer les signatures tapées"
+
#: packages/ui/primitives/document-password-dialog.tsx:84
msgid "Enter password"
msgstr "Entrez le mot de passe"
#: packages/ui/primitives/document-flow/field-item-advanced-settings.tsx:257
+#: packages/ui/primitives/pdf-viewer.tsx:166
msgid "Error"
msgstr "Erreur"
-#: packages/ui/primitives/document-flow/add-settings.tsx:241
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:249
+#: packages/ui/primitives/document-flow/add-settings.tsx:283
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:378
msgid "External ID"
msgstr "ID externe"
@@ -319,7 +875,7 @@ msgstr "Limite de caractères du champ"
#: packages/ui/primitives/document-flow/field-items-advanced-settings/number-field.tsx:130
#: packages/ui/primitives/document-flow/field-items-advanced-settings/text-field.tsx:107
msgid "Field font size"
-msgstr ""
+msgstr "Taille de police du champ"
#: packages/ui/primitives/document-flow/field-items-advanced-settings/number-field.tsx:110
msgid "Field format"
@@ -333,6 +889,14 @@ msgstr "Étiquette du champ"
msgid "Field placeholder"
msgstr "Espace réservé du champ"
+#: packages/lib/utils/document-audit-logs.ts:294
+msgid "Field signed"
+msgstr "Champ signé"
+
+#: packages/lib/utils/document-audit-logs.ts:298
+msgid "Field unsigned"
+msgstr "Champ non signé"
+
#: packages/ui/primitives/document-flow/field-items-advanced-settings/date-field.tsx:56
#: packages/ui/primitives/document-flow/field-items-advanced-settings/email-field.tsx:38
#: packages/ui/primitives/document-flow/field-items-advanced-settings/initials-field.tsx:38
@@ -340,7 +904,23 @@ msgstr "Espace réservé du champ"
#: packages/ui/primitives/document-flow/field-items-advanced-settings/number-field.tsx:124
#: packages/ui/primitives/document-flow/field-items-advanced-settings/text-field.tsx:101
msgid "Font Size"
-msgstr ""
+msgstr "Taille de Police"
+
+#: packages/lib/server-only/auth/send-forgot-password.ts:61
+msgid "Forgot Password?"
+msgstr "Mot de passe oublié ?"
+
+#: packages/email/template-components/template-forgot-password.tsx:21
+msgid "Forgot your password?"
+msgstr "Vous avez oublié votre mot de passe ?"
+
+#: packages/ui/primitives/document-flow/types.ts:50
+msgid "Free Signature"
+msgstr "Signature gratuite"
+
+#: packages/ui/primitives/document-flow/add-subject.tsx:89
+msgid "Generate Links"
+msgstr "Générer des liens"
#: packages/ui/components/document/document-global-auth-action-select.tsx:64
msgid "Global recipient action authentication"
@@ -350,41 +930,75 @@ msgstr "Authentification d'action de destinataire globale"
msgid "Go Back"
msgstr "Retourner"
-#: packages/ui/primitives/signature-pad/signature-pad.tsx:297
+#: packages/ui/primitives/signature-pad/signature-pad.tsx:398
msgid "Green"
msgstr "Vert"
-#: packages/lib/constants/recipient-roles.ts:72
+#~ msgid "Hello {recipientName},"
+#~ msgstr "Hello {recipientName},"
+
+#: packages/email/templates/reset-password.tsx:56
+msgid "Hi, {userName} <0>({userEmail})0>"
+msgstr "Bonjour, {userName} <0>({userEmail})0>"
+
+#: packages/lib/constants/recipient-roles.ts:44
msgid "I am a signer of this document"
msgstr "Je suis un signataire de ce document"
-#: packages/lib/constants/recipient-roles.ts:75
+#: packages/lib/constants/recipient-roles.ts:47
msgid "I am a viewer of this document"
msgstr "Je suis un visualiseur de ce document"
-#: packages/lib/constants/recipient-roles.ts:73
+#: packages/lib/constants/recipient-roles.ts:45
msgid "I am an approver of this document"
msgstr "Je suis un approuveur de ce document"
-#: packages/lib/constants/recipient-roles.ts:74
+#: packages/lib/constants/recipient-roles.ts:46
msgid "I am required to receive a copy of this document"
msgstr "Je dois recevoir une copie de ce document"
-#: packages/lib/constants/recipient-roles.ts:74
-#~ msgid "I am required to recieve a copy of this document"
-#~ msgstr "I am required to recieve a copy of this document"
-
#: packages/ui/components/recipient/recipient-action-auth-select.tsx:29
#: packages/ui/components/recipient/recipient-action-auth-select.tsx:87
msgid "Inherit authentication method"
msgstr "Hériter de la méthode d'authentification"
+#: packages/ui/primitives/document-flow/types.ts:51
+msgid "Initials"
+msgstr "Initiales"
+
+#: packages/ui/primitives/document-flow/add-signers.types.ts:17
+msgid "Invalid email"
+msgstr "Email invalide"
+
+#: packages/ui/primitives/document-flow/add-signature.types.ts:8
+msgid "Invalid email address"
+msgstr "Adresse email invalide"
+
+#: packages/email/templates/team-invite.tsx:72
+msgid "Join {teamName} on Documenso"
+msgstr "Rejoindre {teamName} sur Documenso"
+
#: packages/ui/primitives/document-flow/field-items-advanced-settings/number-field.tsx:67
#: packages/ui/primitives/document-flow/field-items-advanced-settings/number-field.tsx:72
#: packages/ui/primitives/document-flow/field-items-advanced-settings/text-field.tsx:48
msgid "Label"
msgstr "Étiquette"
+#: packages/ui/primitives/document-flow/add-settings.tsx:176
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:162
+msgid "Language"
+msgstr "Langue"
+
+#: packages/email/templates/confirm-team-email.tsx:124
+#: packages/email/templates/team-transfer-request.tsx:87
+msgid "Link expires in 1 hour."
+msgstr "Le lien expire dans 1 heure."
+
+#: packages/ui/primitives/lazy-pdf-viewer.tsx:15
+#: packages/ui/primitives/pdf-viewer.tsx:44
+msgid "Loading document..."
+msgstr "Chargement du document..."
+
#: packages/lib/constants/teams.ts:11
msgid "Manager"
msgstr "Gestionnaire"
@@ -397,8 +1011,8 @@ msgstr "Max"
msgid "Member"
msgstr "Membre"
-#: packages/ui/primitives/document-flow/add-subject.tsx:95
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:215
+#: packages/ui/primitives/document-flow/add-subject.tsx:160
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:338
msgid "Message <0>(Optional)0>"
msgstr "Message <0>(Optionnel)0>"
@@ -406,13 +1020,14 @@ msgstr "Message <0>(Optionnel)0>"
msgid "Min"
msgstr "Min"
-#: packages/ui/primitives/document-flow/add-fields.tsx:863
+#: packages/ui/primitives/document-flow/add-fields.tsx:908
#: packages/ui/primitives/document-flow/add-signature.tsx:298
-#: packages/ui/primitives/document-flow/add-signers.tsx:535
-#: packages/ui/primitives/document-flow/add-signers.tsx:541
-#: packages/ui/primitives/template-flow/add-template-fields.tsx:658
-#: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:498
-#: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:504
+#: packages/ui/primitives/document-flow/add-signers.tsx:550
+#: packages/ui/primitives/document-flow/add-signers.tsx:556
+#: packages/ui/primitives/document-flow/types.ts:55
+#: packages/ui/primitives/template-flow/add-template-fields.tsx:671
+#: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:506
+#: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:512
msgid "Name"
msgstr "Nom"
@@ -428,13 +1043,17 @@ msgstr "Nécessite une signature"
msgid "Needs to view"
msgstr "Nécessite une visualisation"
-#: packages/ui/primitives/document-flow/add-fields.tsx:674
-#: packages/ui/primitives/template-flow/add-template-fields.tsx:497
+#: packages/ui/primitives/document-flow/add-fields.tsx:693
+#: packages/ui/primitives/template-flow/add-template-fields.tsx:511
msgid "No recipient matching this description was found."
msgstr "Aucun destinataire correspondant à cette description n'a été trouvé."
-#: packages/ui/primitives/document-flow/add-fields.tsx:690
-#: packages/ui/primitives/template-flow/add-template-fields.tsx:513
+#: packages/ui/primitives/document-flow/add-subject.tsx:215
+msgid "No recipients"
+msgstr "Aucun destinataire"
+
+#: packages/ui/primitives/document-flow/add-fields.tsx:708
+#: packages/ui/primitives/template-flow/add-template-fields.tsx:526
msgid "No recipients with this role"
msgstr "Aucun destinataire avec ce rôle"
@@ -458,8 +1077,13 @@ msgstr "Aucun champ de signature trouvé"
msgid "No value found."
msgstr "Aucune valeur trouvée."
-#: packages/ui/primitives/document-flow/add-fields.tsx:941
-#: packages/ui/primitives/template-flow/add-template-fields.tsx:736
+#: packages/lib/constants/document.ts:32
+msgid "None"
+msgstr "Aucun"
+
+#: packages/ui/primitives/document-flow/add-fields.tsx:986
+#: packages/ui/primitives/document-flow/types.ts:56
+#: packages/ui/primitives/template-flow/add-template-fields.tsx:749
msgid "Number"
msgstr "Numéro"
@@ -479,10 +1103,34 @@ msgstr "Une fois votre modèle configuré, partagez le lien où vous le souhaite
msgid "Page {0} of {1}"
msgstr "Page {0} sur {1}"
+#: packages/ui/primitives/pdf-viewer.tsx:259
+msgid "Page {0} of {numPages}"
+msgstr "Page {0} sur {numPages}"
+
#: packages/ui/primitives/document-password-dialog.tsx:62
msgid "Password Required"
msgstr "Mot de passe requis"
+#: packages/email/templates/forgot-password.tsx:19
+msgid "Password Reset Requested"
+msgstr "Réinitialisation du mot de passe demandée"
+
+#: packages/email/templates/reset-password.tsx:20
+msgid "Password Reset Successful"
+msgstr "Réinitialisation du mot de passe réussie"
+
+#: packages/email/template-components/template-reset-password.tsx:22
+msgid "Password updated!"
+msgstr "Mot de passe mis à jour !"
+
+#: packages/lib/constants/document.ts:16
+msgid "Pending"
+msgstr "En attente"
+
+#: packages/email/templates/document-pending.tsx:19
+msgid "Pending Document"
+msgstr "Document En Attente"
+
#: packages/ui/primitives/document-flow/field-items-advanced-settings/checkbox-field.tsx:156
msgid "Pick a number"
msgstr "Choisissez un numéro"
@@ -493,8 +1141,41 @@ msgstr "Choisissez un numéro"
msgid "Placeholder"
msgstr "Espace réservé"
-#: packages/ui/primitives/document-flow/add-fields.tsx:967
-#: packages/ui/primitives/template-flow/add-template-fields.tsx:762
+#: packages/email/template-components/template-document-invite.tsx:56
+msgid "Please {0} your document<0/>\"{documentName}\""
+msgstr "Veuillez {0} votre document<0/>\"{documentName}\""
+
+#: packages/email/templates/document-invite.tsx:50
+msgid "Please {action} your document {documentName}"
+msgstr "Veuillez {action} votre document {documentName}"
+
+#: packages/lib/jobs/definitions/emails/send-signing-email.ts:111
+msgid "Please {recipientActionVerb} this document"
+msgstr "Veuillez {recipientActionVerb} ce document"
+
+#: packages/lib/jobs/definitions/emails/send-signing-email.ts:125
+msgid "Please {recipientActionVerb} this document created by your direct template"
+msgstr "Veuillez {recipientActionVerb} ce document créé par votre modèle direct"
+
+#: packages/lib/jobs/definitions/emails/send-signing-email.ts:117
+msgid "Please {recipientActionVerb} your document"
+msgstr "Veuillez {recipientActionVerb} votre document"
+
+#: packages/lib/server-only/auth/send-confirmation-email.ts:67
+msgid "Please confirm your email"
+msgstr "Veuillez confirmer votre email"
+
+#: packages/email/templates/confirm-email.tsx:17
+msgid "Please confirm your email address"
+msgstr "Veuillez confirmer votre adresse email"
+
+#: packages/ui/primitives/pdf-viewer.tsx:223
+#: packages/ui/primitives/pdf-viewer.tsx:238
+msgid "Please try again or contact our support."
+msgstr "Veuillez réessayer ou contacter notre support."
+
+#: packages/ui/primitives/document-flow/types.ts:57
+#: packages/ui/primitives/template-flow/add-template-fields.tsx:775
msgid "Radio"
msgstr "Radio"
@@ -510,26 +1191,71 @@ msgstr "Valeurs radio"
msgid "Read only"
msgstr "Lecture seule"
+#: packages/email/template-components/template-document-rejected.tsx:32
+msgid "Reason for rejection: {rejectionReason}"
+msgstr "Raison du rejet : {rejectionReason}"
+
#: packages/ui/components/recipient/recipient-role-select.tsx:95
msgid "Receives copy"
msgstr "Recevoir une copie"
+#: packages/lib/utils/document-audit-logs.ts:338
+#: packages/lib/utils/document-audit-logs.ts:353
+msgid "Recipient"
+msgstr "Destinataire"
+
#: packages/ui/components/recipient/recipient-action-auth-select.tsx:39
-#: packages/ui/primitives/document-flow/add-settings.tsx:215
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:169
+#: packages/ui/primitives/document-flow/add-settings.tsx:257
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:291
msgid "Recipient action authentication"
msgstr "Authentification d'action de destinataire"
-#: packages/ui/primitives/signature-pad/signature-pad.tsx:283
+#: packages/ui/components/document/document-email-checkboxes.tsx:89
+msgid "Recipient removed email"
+msgstr "E-mail de destinataire supprimé"
+
+#: packages/ui/components/document/document-email-checkboxes.tsx:50
+msgid "Recipient signing request email"
+msgstr "E-mail de demande de signature de destinataire"
+
+#: packages/ui/primitives/signature-pad/signature-pad.tsx:384
msgid "Red"
msgstr "Rouge"
-#: packages/ui/primitives/document-flow/add-settings.tsx:329
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:332
+#: packages/ui/primitives/document-flow/add-settings.tsx:371
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:461
msgid "Redirect URL"
msgstr "URL de redirection"
-#: packages/ui/primitives/document-flow/add-fields.tsx:1069
+#: packages/email/template-components/template-document-invite.tsx:96
+msgid "Reject Document"
+msgstr "Rejeter le Document"
+
+#: packages/email/template-components/template-document-rejection-confirmed.tsx:22
+msgid "Rejection Confirmed"
+msgstr "Rejet Confirmé"
+
+#: packages/email/template-components/template-document-rejection-confirmed.tsx:34
+msgid "Rejection reason: {reason}"
+msgstr "Motif du rejet : {reason}"
+
+#: packages/lib/server-only/document/resend-document.tsx:192
+msgid "Reminder: {0}"
+msgstr "Rappel : {0}"
+
+#: packages/lib/server-only/document/resend-document.tsx:132
+msgid "Reminder: {0} invited you to {recipientActionVerb} a document"
+msgstr "Rappel : {0} vous a invité à {recipientActionVerb} un document"
+
+#: packages/lib/server-only/document/resend-document.tsx:121
+msgid "Reminder: Please {recipientActionVerb} this document"
+msgstr "Rappel : Veuillez {recipientActionVerb} ce document"
+
+#: packages/lib/server-only/document/resend-document.tsx:127
+msgid "Reminder: Please {recipientActionVerb} your document"
+msgstr "Rappel : Veuillez {recipientActionVerb} votre document"
+
+#: packages/ui/primitives/document-flow/add-fields.tsx:1117
msgid "Remove"
msgstr "Retirer"
@@ -541,6 +1267,18 @@ msgstr "Retirer"
msgid "Required field"
msgstr "Champ requis"
+#: packages/ui/primitives/document-flow/add-subject.tsx:84
+msgid "Resend"
+msgstr "Renvoyer"
+
+#: packages/email/template-components/template-forgot-password.tsx:33
+msgid "Reset Password"
+msgstr "Réinitialiser le mot de passe"
+
+#: packages/ui/components/document/document-share-button.tsx:147
+msgid "Rest assured, your document is strictly confidential and will never be shared. Only your signing experience will be highlighted. Share your personalized signing card to showcase your signature!"
+msgstr "Soyez assuré, votre document eststrictement confidentiel et ne sera jamais partagé. Seule votre expérience de signature sera mise en avant. Partagez votre carte de signature personnalisée pour mettre en valeur votre signature !"
+
#: packages/ui/primitives/data-table-pagination.tsx:55
msgid "Rows per page"
msgstr "Lignes par page"
@@ -549,7 +1287,7 @@ msgstr "Lignes par page"
msgid "Save"
msgstr "Sauvegarder"
-#: packages/ui/primitives/template-flow/add-template-fields.tsx:848
+#: packages/ui/primitives/template-flow/add-template-fields.tsx:861
msgid "Save Template"
msgstr "Sauvegarder le modèle"
@@ -558,6 +1296,7 @@ msgid "Search languages..."
msgstr "Rechercher des langues..."
#: packages/ui/primitives/document-flow/field-items-advanced-settings/dropdown-field.tsx:115
+#: packages/ui/primitives/document-flow/types.ts:59
msgid "Select"
msgstr "Sélectionner"
@@ -573,7 +1312,8 @@ msgstr "Sélectionnez au moins"
msgid "Select default option"
msgstr "Sélectionner l'option par défaut"
-#: packages/ui/primitives/document-flow/add-subject.tsx:124
+#: packages/ui/primitives/document-flow/add-subject.tsx:82
+#: packages/ui/primitives/document-flow/add-subject.tsx:85
#: packages/ui/primitives/document-flow/send-document-action-dialog.tsx:34
#: packages/ui/primitives/document-flow/send-document-action-dialog.tsx:64
msgid "Send"
@@ -583,6 +1323,30 @@ msgstr "Envoyer"
msgid "Send Document"
msgstr "Envoyer le document"
+#: packages/ui/components/document/document-email-checkboxes.tsx:158
+msgid "Send document completed email"
+msgstr "Envoyer l'e-mail de document complété"
+
+#: packages/ui/components/document/document-email-checkboxes.tsx:197
+msgid "Send document deleted email"
+msgstr "Envoyer l'e-mail de document supprimé"
+
+#: packages/ui/components/document/document-email-checkboxes.tsx:118
+msgid "Send document pending email"
+msgstr "Envoyer l'e-mail de document en attente"
+
+#: packages/email/templates/confirm-team-email.tsx:101
+msgid "Send documents on behalf of the team using the email address"
+msgstr "Envoyer des documents au nom de l'équipe en utilisant l'adresse e-mail"
+
+#: packages/ui/components/document/document-email-checkboxes.tsx:79
+msgid "Send recipient removed email"
+msgstr "Envoyer l'e-mail de destinataire supprimé"
+
+#: packages/ui/components/document/document-email-checkboxes.tsx:40
+msgid "Send recipient signing request email"
+msgstr "Envoyer l'e-mail de demande de signature de destinataire"
+
#: packages/ui/components/document/document-share-button.tsx:135
msgid "Share Signature Card"
msgstr "Partager la carte de signature"
@@ -591,34 +1355,64 @@ msgstr "Partager la carte de signature"
msgid "Share the Link"
msgstr "Partager le lien"
-#: packages/ui/primitives/document-flow/add-signers.tsx:680
-#: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:655
+#: packages/ui/components/document/document-share-button.tsx:143
+msgid "Share your signing experience!"
+msgstr "Partagez votre expérience de signature !"
+
+#: packages/ui/primitives/document-flow/add-signers.tsx:709
+#: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:663
msgid "Show advanced settings"
msgstr "Afficher les paramètres avancés"
-#: packages/lib/constants/recipient-roles.ts:20
+#: packages/lib/constants/recipient-roles.ts:22
msgid "Sign"
msgstr "Signer"
-#: packages/ui/primitives/document-flow/add-fields.tsx:785
+#: packages/email/template-components/template-document-invite.tsx:104
+msgid "Sign Document"
+msgstr "Signer le document"
+
+#: packages/email/template-components/template-reset-password.tsx:34
+msgid "Sign In"
+msgstr "Se connecter"
+
+#: packages/ui/primitives/document-flow/add-fields.tsx:830
#: packages/ui/primitives/document-flow/add-signature.tsx:323
#: packages/ui/primitives/document-flow/field-icon.tsx:52
-#: packages/ui/primitives/template-flow/add-template-fields.tsx:580
+#: packages/ui/primitives/document-flow/types.ts:49
+#: packages/ui/primitives/template-flow/add-template-fields.tsx:593
msgid "Signature"
msgstr "Signature"
-#: packages/lib/constants/recipient-roles.ts:21
+#: packages/lib/constants/recipient-roles.ts:23
msgid "Signed"
msgstr "Signé"
-#: packages/lib/constants/recipient-roles.ts:23
+#: packages/lib/constants/recipient-roles.ts:25
msgid "Signer"
msgstr "Signataire"
-#: packages/lib/constants/recipient-roles.ts:22
+#: packages/lib/constants/recipient-roles.ts:26
+msgid "Signers"
+msgstr "Signataires"
+
+#: packages/ui/primitives/document-flow/add-signers.types.ts:36
+msgid "Signers must have unique emails"
+msgstr "Les signataires doivent avoir des e-mails uniques"
+
+#: packages/lib/constants/recipient-roles.ts:24
msgid "Signing"
msgstr "Signature en cours"
+#: packages/lib/server-only/document/send-completed-email.ts:114
+#: packages/lib/server-only/document/send-completed-email.ts:194
+msgid "Signing Complete!"
+msgstr "Signature Complète !"
+
+#: packages/lib/constants/recipient-roles.ts:66
+#~ msgid "SIGNING_REQUEST"
+#~ msgstr "SIGNING_REQUEST"
+
#: packages/ui/primitives/document-flow/missing-signature-field-dialog.tsx:34
msgid "Some signers have not been assigned a signature field. Please assign at least 1 signature field to each signer before proceeding."
msgstr "Certains signataires n'ont pas été assignés à un champ de signature. Veuillez assigner au moins 1 champ de signature à chaque signataire avant de continuer."
@@ -627,6 +1421,11 @@ msgstr "Certains signataires n'ont pas été assignés à un champ de signature.
msgid "Something went wrong"
msgstr "Quelque chose a mal tourné"
+#: packages/ui/primitives/pdf-viewer.tsx:220
+#: packages/ui/primitives/pdf-viewer.tsx:235
+msgid "Something went wrong while loading the document."
+msgstr "Une erreur s'est produite lors du chargement du document."
+
#: packages/ui/primitives/data-table.tsx:136
msgid "Something went wrong."
msgstr "Quelque chose a mal tourné."
@@ -635,8 +1434,8 @@ msgstr "Quelque chose a mal tourné."
msgid "Step <0>{step} of {maxStep}0>"
msgstr "Étape <0>{step} sur {maxStep}0>"
-#: packages/ui/primitives/document-flow/add-subject.tsx:78
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:195
+#: packages/ui/primitives/document-flow/add-subject.tsx:143
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:318
msgid "Subject <0>(Optional)0>"
msgstr "Objet <0>(Optionnel)0>"
@@ -644,15 +1443,36 @@ msgstr "Objet <0>(Optionnel)0>"
msgid "Submit"
msgstr "Soumettre"
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:134
+#: packages/lib/server-only/team/delete-team.ts:124
+msgid "Team \"{0}\" has been deleted on Documenso"
+msgstr "L'équipe \"{0}\" a été supprimée sur Documenso"
+
+#: packages/lib/server-only/team/delete-team-email.ts:104
+msgid "Team email has been revoked for {0}"
+msgstr "L'email d'équipe a été révoqué pour {0}"
+
+#: packages/email/templates/team-email-removed.tsx:59
+msgid "Team email removed"
+msgstr "Email d'équipe supprimé"
+
+#: packages/email/templates/team-email-removed.tsx:29
+msgid "Team email removed for {teamName} on Documenso"
+msgstr "Email d'équipe supprimé pour {teamName} sur Documenso"
+
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:145
msgid "Template title"
msgstr "Titre du modèle"
-#: packages/ui/primitives/document-flow/add-fields.tsx:915
-#: packages/ui/primitives/template-flow/add-template-fields.tsx:710
+#: packages/ui/primitives/document-flow/add-fields.tsx:960
+#: packages/ui/primitives/document-flow/types.ts:52
+#: packages/ui/primitives/template-flow/add-template-fields.tsx:723
msgid "Text"
msgstr "Texte"
+#: packages/email/template-components/template-forgot-password.tsx:25
+msgid "That's okay, it happens! Click the button below to reset your password."
+msgstr "C'est d'accord, cela arrive ! Cliquez sur le bouton ci-dessous pour réinitialiser votre mot de passe."
+
#: packages/ui/components/recipient/recipient-action-auth-select.tsx:44
msgid "The authentication required for recipients to sign fields"
msgstr "L'authentification requise pour que les destinataires signent des champs"
@@ -665,14 +1485,33 @@ msgstr "L'authentification requise pour que les destinataires signent le champ d
msgid "The authentication required for recipients to view the document."
msgstr "L'authentification requise pour que les destinataires visualisent le document."
+#~ msgid "The document owner has been notified of this rejection. No further action is required from you at this time."
+#~ msgstr "The document owner has been notified of this rejection. No further action is required from you at this time."
+
+#: packages/email/template-components/template-document-rejection-confirmed.tsx:39
+msgid "The document owner has been notified of this rejection. No further action is required from you at this time. The document owner may contact you with any questions regarding this rejection."
+msgstr "Le propriétaire du document a été informé de ce rejet. Aucune action supplémentaire n'est requise de votre part pour le moment. Le propriétaire du document peut vous contacter pour toute question concernant ce rejet."
+
#: packages/ui/components/document/document-send-email-message-helper.tsx:31
msgid "The document's name"
msgstr "Le nom du document"
+#: packages/email/templates/team-delete.tsx:37
+msgid "The following team has been deleted by its owner. You will no longer be able to access this team and its documents"
+msgstr "L'équipe suivante a été supprimée par son propriétaire. Vous ne pourrez plus accéder à cette équipe et à ses documents"
+
+#: packages/email/templates/team-delete.tsx:36
+msgid "The following team has been deleted by you"
+msgstr "L'équipe suivante a été supprimée par vous"
+
#: packages/ui/primitives/document-password-dialog.tsx:52
msgid "The password you have entered is incorrect. Please try again."
msgstr "Le mot de passe que vous avez entré est incorrect. Veuillez réessayer."
+#: packages/email/template-components/template-document-super-delete.tsx:38
+msgid "The reason provided for deletion is the following:"
+msgstr "La raison fournie pour la suppression est la suivante :"
+
#: packages/ui/components/recipient/recipient-role-select.tsx:103
msgid "The recipient is not required to take any action and receives a copy of the document after it is completed."
msgstr "Le destinataire n'est pas tenu de prendre des mesures et reçoit une copie du document après son achèvement."
@@ -705,11 +1544,23 @@ msgstr "L'email du signataire"
msgid "The signer's name"
msgstr "Le nom du signataire"
+#: packages/ui/primitives/document-flow/add-subject.tsx:243
+msgid "The signing link has been copied to your clipboard."
+msgstr "Le lien de signature a été copié dans votre presse-papiers."
+
+#: packages/email/templates/team-email-removed.tsx:63
+msgid "The team email <0>{teamEmail}0> has been removed from the following team"
+msgstr "L'email d'équipe <0>{teamEmail}0> a été supprimé de l'équipe suivante"
+
#: packages/ui/components/document/document-global-auth-action-select.tsx:72
msgid "This can be overriden by setting the authentication requirements directly on each recipient in the next step."
msgstr "Cela peut être remplacé par le paramétrage direct des exigences d'authentification pour chaque destinataire à l'étape suivante."
-#: packages/ui/primitives/document-flow/add-fields.tsx:746
+#: packages/email/template-components/template-document-super-delete.tsx:31
+msgid "This document can not be recovered, if you would like to dispute the reason for future documents please contact support."
+msgstr "Ce document ne peut pas être récupéré, si vous souhaitez contester la raison des documents futurs, veuillez contacter le support."
+
+#: packages/ui/primitives/document-flow/add-fields.tsx:764
msgid "This document has already been sent to this recipient. You can no longer edit this recipient."
msgstr "Ce document a déjà été envoyé à ce destinataire. Vous ne pouvez plus modifier ce destinataire."
@@ -717,41 +1568,72 @@ msgstr "Ce document a déjà été envoyé à ce destinataire. Vous ne pouvez pl
msgid "This document is password protected. Please enter the password to view the document."
msgstr "Ce document est protégé par mot de passe. Veuillez entrer le mot de passe pour visualiser le document."
-#: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:573
+#: packages/email/template-components/template-footer.tsx:17
+msgid "This document was sent using <0>Documenso.0>"
+msgstr "Ce document a été envoyé via <0>Documenso.0>"
+
+#~ msgid "This email confirms that you have rejected the document \"{documentName}\" sent by {documentOwnerName}."
+#~ msgstr "This email confirms that you have rejected the document \"{documentName}\" sent by {documentOwnerName}."
+
+#: packages/email/template-components/template-document-rejection-confirmed.tsx:26
+msgid "This email confirms that you have rejected the document <0>\"{documentName}\"0> sent by {documentOwnerName}."
+msgstr "Cet e-mail confirme que vous avez rejeté le document <0>\"{documentName}\"0> envoyé par {documentOwnerName}."
+
+#: packages/ui/components/document/document-email-checkboxes.tsx:94
+msgid "This email is sent to the recipient if they are removed from a pending document."
+msgstr "Cet e-mail est envoyé au destinataire s'il est retiré d'un document en attente."
+
+#: packages/ui/components/document/document-email-checkboxes.tsx:55
+msgid "This email is sent to the recipient requesting them to sign the document."
+msgstr "Cet e-mail est envoyé au destinataire lui demandant de signer le document."
+
+#: packages/ui/components/document/document-email-checkboxes.tsx:133
+msgid "This email will be sent to the recipient who has just signed the document, if there are still other recipients who have not signed yet."
+msgstr "Cet e-mail sera envoyé au destinataire qui vient de signer le document, s'il y a encore d'autres destinataires qui n'ont pas signé."
+
+#: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:581
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."
msgstr "Ce champ ne peut pas être modifié ou supprimé. Lorsque vous partagez le lien direct de ce modèle ou l'ajoutez à votre profil public, toute personne qui y accède peut saisir son nom et son email, et remplir les champs qui lui sont attribués."
-#: packages/ui/primitives/document-flow/add-fields.tsx:1050
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:233
+msgid "This is how the document will reach the recipients once the document is ready for signing."
+msgstr "Voici comment le document atteindra les destinataires une fois qu'il sera prêt à être signé."
+
+#: packages/ui/primitives/document-flow/add-fields.tsx:1097
msgid "This recipient can no longer be modified as they have signed a field, or completed the document."
msgstr "Ce destinataire ne peut plus être modifié car il a signé un champ ou complété le document."
-#: packages/ui/primitives/document-flow/add-signers.tsx:165
-#~ msgid "This signer has already received the document."
-#~ msgstr "This signer has already received the document."
-
#: packages/ui/primitives/document-flow/add-signers.tsx:194
msgid "This signer has already signed the document."
msgstr "Ce signataire a déjà signé le document."
+#: packages/ui/components/document/document-email-checkboxes.tsx:212
+msgid "This will be sent to all recipients if a pending document has been deleted."
+msgstr "Cela sera envoyé à tous les destinataires si un document en attente a été supprimé."
+
+#: packages/ui/components/document/document-email-checkboxes.tsx:173
+msgid "This will be sent to all recipients once the document has been fully completed."
+msgstr "Cela sera envoyé à tous les destinataires une fois que le document aura été entièrement complété."
+
#: packages/ui/components/recipient/recipient-action-auth-select.tsx:48
msgid "This will override any global settings."
msgstr "Cela remplacera tous les paramètres globaux."
-#: packages/ui/primitives/document-flow/add-settings.tsx:305
-#: packages/ui/primitives/template-flow/add-template-settings.tsx:309
+#: packages/ui/primitives/document-flow/add-settings.tsx:347
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:438
msgid "Time Zone"
msgstr "Fuseau horaire"
-#: packages/ui/primitives/document-flow/add-settings.tsx:153
+#: packages/ui/primitives/document-flow/add-settings.tsx:155
msgid "Title"
msgstr "Titre"
-#: packages/ui/primitives/document-flow/add-fields.tsx:1033
-#: packages/ui/primitives/template-flow/add-template-fields.tsx:828
+#: packages/ui/primitives/document-flow/add-fields.tsx:1080
+#: packages/ui/primitives/template-flow/add-template-fields.tsx:841
msgid "To proceed further, please set at least one value for the {0} field."
msgstr "Pour continuer, veuillez définir au moins une valeur pour le champ {0}."
-#: packages/ui/primitives/document-flow/add-subject.tsx:124
+#: packages/ui/primitives/document-flow/add-subject.tsx:86
msgid "Update"
msgstr "Mettre à jour"
@@ -777,38 +1659,159 @@ msgstr "Validation"
msgid "Value"
msgstr "Valeur"
-#: packages/lib/constants/recipient-roles.ts:26
-msgid "View"
-msgstr "Vue"
+#: packages/email/templates/confirm-team-email.tsx:71
+msgid "Verify your team email address"
+msgstr "Vérifiez votre adresse e-mail d'équipe"
-#: packages/lib/constants/recipient-roles.ts:27
+#: packages/lib/constants/recipient-roles.ts:29
+msgid "View"
+msgstr "Voir"
+
+#: packages/email/templates/confirm-team-email.tsx:95
+msgid "View all documents sent to and from this email address"
+msgstr "Voir tous les documents envoyés à et depuis cette adresse e-mail"
+
+#: packages/email/templates/document-created-from-direct-template.tsx:75
+msgid "View document"
+msgstr "Voir le document"
+
+#: packages/email/template-components/template-document-invite.tsx:105
+#: packages/email/template-components/template-document-rejected.tsx:44
+#: packages/ui/primitives/document-flow/add-subject.tsx:90
+#: packages/ui/primitives/document-flow/add-subject.tsx:91
+msgid "View Document"
+msgstr "Voir le document"
+
+#: packages/email/template-components/template-document-self-signed.tsx:79
+msgid "View plans"
+msgstr "Voir les forfaits"
+
+#: packages/lib/constants/recipient-roles.ts:67
+#~ msgid "VIEW_REQUEST"
+#~ msgstr "VIEW_REQUEST"
+
+#: packages/lib/constants/recipient-roles.ts:30
msgid "Viewed"
msgstr "Vu"
-#: packages/lib/constants/recipient-roles.ts:29
+#: packages/lib/constants/recipient-roles.ts:32
msgid "Viewer"
msgstr "Visiteur"
-#: packages/lib/constants/recipient-roles.ts:28
-msgid "Viewing"
-msgstr "Visionnage"
+#: packages/lib/constants/recipient-roles.ts:33
+msgid "Viewers"
+msgstr "Spectateurs"
-#: packages/ui/primitives/signature-pad/signature-pad.tsx:280
-#~ msgid "White"
-#~ msgstr "White"
+#: packages/lib/constants/recipient-roles.ts:31
+msgid "Viewing"
+msgstr "Consultation"
+
+#: packages/email/template-components/template-document-pending.tsx:31
+msgid "Waiting for others"
+msgstr "En attente des autres"
+
+#: packages/lib/server-only/document/send-pending-email.ts:96
+msgid "Waiting for others to complete signing."
+msgstr "En attente que d'autres terminent la signature."
+
+#: packages/ui/primitives/document-flow/add-subject.tsx:205
+msgid "We will generate signing links for with you, which you can send to the recipients through your method of choice."
+msgstr "Nous générerons des liens de signature pour vous, que vous pourrez envoyer aux destinataires par votre méthode de choix."
+
+#: packages/ui/primitives/document-flow/add-subject.tsx:201
+msgid "We won't send anything to notify recipients."
+msgstr "Nous n'enverrons rien pour notifier les destinataires."
+
+#: packages/email/template-components/template-document-pending.tsx:41
+msgid "We're still waiting for other signers to sign this document.<0/>We'll notify you as soon as it's ready."
+msgstr "Nous attendons encore que d'autres signataires signent ce document.<0/>Nous vous préviendrons dès qu'il sera prêt."
+
+#: packages/email/templates/reset-password.tsx:65
+msgid "We've changed your password as you asked. You can now sign in with your new password."
+msgstr "Nous avons changé votre mot de passe comme demandé. Vous pouvez maintenant vous connecter avec votre nouveau mot de passe."
+
+#: packages/email/template-components/template-confirmation-email.tsx:21
+msgid "Welcome to Documenso!"
+msgstr "Bienvenue sur Documenso !"
+
+#: packages/lib/utils/document-audit-logs.ts:258
+msgid "You"
+msgstr "Vous"
#: packages/ui/primitives/document-flow/send-document-action-dialog.tsx:44
msgid "You are about to send this document to the recipients. Are you sure you want to continue?"
msgstr "Vous êtes sur le point d'envoyer ce document aux destinataires. Êtes-vous sûr de vouloir continuer ?"
+#: packages/email/template-components/template-confirmation-email.tsx:38
+msgid "You can also copy and paste this link into your browser: {confirmationLink} (link expires in 1 hour)"
+msgstr "Vous pouvez également copier et coller ce lien dans votre navigateur : {confirmationLink} (le lien expire dans 1 heure)"
+
+#: packages/email/templates/confirm-team-email.tsx:106
+msgid "You can revoke access at any time in your team settings on Documenso <0>here.0>"
+msgstr "Vous pouvez révoquer l'accès à tout moment dans les paramètres de votre équipe sur Documenso <0>ici.0>"
+
#: packages/ui/components/document/document-send-email-message-helper.tsx:11
msgid "You can use the following variables in your message:"
msgstr "Vous pouvez utiliser les variables suivantes dans votre message :"
+#: packages/email/template-components/template-document-rejected.tsx:37
+msgid "You can view the document and its status by clicking the button below."
+msgstr "Vous pouvez voir le document et son statut en cliquant sur le bouton ci-dessous."
+
#: packages/ui/primitives/document-dropzone.tsx:43
msgid "You cannot upload documents at this time."
msgstr "Vous ne pouvez pas télécharger de documents pour le moment."
+#: packages/email/template-components/template-document-cancel.tsx:35
+msgid "You don't need to sign it anymore."
+msgstr "Vous n'avez plus besoin de le signer."
+
+#: packages/lib/server-only/team/create-team-member-invites.ts:186
+msgid "You have been invited to join {0} on Documenso"
+msgstr "Vous avez été invité à rejoindre {0} sur Documenso"
+
+#: packages/email/templates/team-invite.tsx:76
+msgid "You have been invited to join the following team"
+msgstr "Vous avez été invité à rejoindre l'équipe suivante"
+
+#: packages/lib/server-only/recipient/set-recipients-for-document.ts:329
+msgid "You have been removed from a document"
+msgstr "Vous avez été supprimé d'un document"
+
+#: packages/lib/server-only/team/request-team-ownership-transfer.ts:114
+msgid "You have been requested to take ownership of team {0} on Documenso"
+msgstr "On vous a demandé de prendre possession de l'équipe {0} sur Documenso"
+
+#: packages/lib/jobs/definitions/emails/send-signing-email.ts:115
+#: packages/lib/server-only/document/resend-document.tsx:125
+msgid "You have initiated the document {0} that requires you to {recipientActionVerb} it."
+msgstr "Vous avez initié le document {0} qui nécessite que vous {recipientActionVerb} celui-ci."
+
#: packages/ui/primitives/document-dropzone.tsx:69
msgid "You have reached your document limit."
msgstr "Vous avez atteint votre limite de documents."
+
+#: packages/email/templates/document-rejection-confirmed.tsx:27
+msgid "You have rejected the document '{documentName}'"
+msgstr "Vous avez rejeté le document '{documentName}'"
+
+#~ msgid "You have rejected the document \"{documentName}\""
+#~ msgstr "You have rejected the document \"{documentName}\""
+
+#: packages/email/template-components/template-document-self-signed.tsx:42
+msgid "You have signed “{documentName}”"
+msgstr "Vous avez signé “{documentName}”"
+
+#: packages/email/template-components/template-document-super-delete.tsx:23
+msgid "Your document has been deleted by an admin!"
+msgstr "Votre document a été supprimé par un administrateur !"
+
+#: packages/email/template-components/template-reset-password.tsx:26
+msgid "Your password has been updated."
+msgstr "Votre mot de passe a été mis à jour."
+
+#: packages/email/templates/team-delete.tsx:28
+#: packages/email/templates/team-delete.tsx:32
+msgid "Your team has been deleted"
+msgstr "Votre équipe a été supprimée"
+
diff --git a/packages/lib/translations/fr/marketing.js b/packages/lib/translations/fr/marketing.js
deleted file mode 100644
index d773fa672..000000000
--- a/packages/lib/translations/fr/marketing.js
+++ /dev/null
@@ -1 +0,0 @@
-/*eslint-disable*/module.exports={messages:JSON.parse("{\"J/hVSQ\":[[\"0\"]],\"u0zktA\":\"5 documents standard par mois\",\"rKtmiD\":\"5 utilisateurs inclus\",\"vaHmll\":\"Une expérience de signature 10 fois meilleure.\",\"t7ZCoe\":\"Ajouter un document\",\"gBefbz\":[\"Ajouter plus d'utilisateurs pour \",[\"0\"]],\"XkF8tv\":\"Tous nos indicateurs, finances et apprentissages sont publics. Nous croyons en la transparence et souhaitons partager notre parcours avec vous. Vous pouvez en lire plus sur pourquoi ici : <0>Annonce de Open Metrics0>\",\"tkQ/WI\":\"Montant levé\",\"qOMroC\":\"Accès API\",\"FNv8t7\":\"Beau.\",\"W/TUoX\":\"Parce que la signature doit être célébrée. C'est pourquoi nous nous soucions du moindre détail dans notre produit.\",\"astDB+\":\"Blog\",\"7zGun7\":\"Construire dessus.\",\"fxgcNV\":\"Puis-je utiliser Documenso commercialement ?\",\"V+D/YP\":\"Carrières\",\"CWe7wB\":\"Changelog\",\"JZbmjL\":\"Choisissez un modèle dans la boutique d'applications communautaires. Ou soumettez votre propre modèle pour que d'autres puissent l'utiliser.\",\"chL5IG\":\"Communauté\",\"p5+XQN\":\"Documents complets\",\"NApCXa\":\"Documents complets par mois\",\"z5kV0h\":\"Connexions\",\"YcfUZ9\":\"Contactez-nous\",\"1NJjIG\":\"Créez des connexions et des automatisations avec Zapier et plus encore pour intégrer vos outils préférés.\",\"rr83qK\":\"Créez votre compte et commencez à utiliser la signature de documents à la pointe de la technologie. Une signature ouverte et belle est à votre portée.\",\"75ojt0\":\"Clients avec un abonnement actif.\",\"pF9qTh\":\"Personnaliser et étendre.\",\"f8fH8W\":\"Conception\",\"W6qD1T\":\"Conçu pour chaque étape de votre parcours.\",\"K6KbY4\":\"Lien Direct\",\"aLD+Td\":\"Documenso est un effort collectif pour créer un écosystème ouvert et dynamique autour d'un outil, tout le monde est libre de l'utiliser et de l'adapter. En étant vraiment ouvert, nous voulons créer une infrastructure de confiance pour l'avenir d'Internet.\",\"32yG8y\":\"Documenso sur X\",\"+1xAO7\":\"Signature de documents,<0/> enfin open source.\",\"TvY/XA\":\"Documentation\",\"tSS7hj\":\"Intégrez facilement Documenso dans votre produit. Il vous suffit de copier et coller notre widget React dans votre application.\",\"BWMGM4\":\"Easy Sharing (Soon).\",\"LRAhFG\":\"Partage facile.\",\"V6EY8B\":\"Support par e-mail et Discord\",\"C0/bri\":\"Engagement\",\"JejrgO\":\"Entrez vos détails.\",\"8Zy3YU\":\"Conformité des entreprises, besoins en licence ou techniques ?\",\"ZSW8id\":\"Tout ce dont vous avez besoin pour une excellente expérience de signature.\",\"sXswT6\":\"Rapide.\",\"cT9Z9e\":\"Plus rapide, plus intelligent et plus beau.\",\"k/ANik\":\"Finances\",\"I7Exsw\":\"Suivez-nous sur X\",\"f3Botn\":\"Pour les entreprises cherchant à se développer au sein de plusieurs équipes.\",\"y2DcZj\":\"Pour les petites équipes et les individus ayant des besoins de base.\",\"2POOFK\":\"Gratuit\",\"OdieZe\":\"Du blog\",\"IPgkVQ\":\"Temps plein\",\"aSWzT9\":\"Recevez une rémunération (Bientôt).\",\"ZDIydz\":\"Commencez\",\"c3b0B0\":\"Commencez\",\"pS8wej\":\"Commencez aujourd'hui.\",\"7FPIvI\":\"Obtenez les dernières nouvelles de Documenso, y compris les mises à jour de produits, les annonces d'équipe et plus encore !\",\"kV0qBq\":\"GitHub : Total des PRs fusionnées\",\"652R6j\":\"GitHub : Total des problèmes ouverts\",\"R1aJ0W\":\"GitHub : Nombre total d'étoiles\",\"P1ovAc\":\"Bandes de salaire globales\",\"IAq/yr\":\"Croissance\",\"Xi7f+z\":\"Comment puis-je contribuer ?\",\"9VGuMA\":\"Comment gérez-vous mes données ?\",\"fByw/g\":\"Individuel\",\"Csm+TN\":\"Paiements intégrés avec Stripe afin que vous n'ayez pas à vous soucier d'être payé.\",\"phSPy7\":\"S'intègre à tous vos outils préférés.\",\"pfjrI2\":\"Y a-t-il plus ?\",\"LOyqaC\":\"C'est à vous de décider. Soit vous clonez notre dépôt, soit vous vous fiez à notre solution d'hébergement simple à utiliser.\",\"PCgMVa\":\"Date d'adhésion\",\"TgL4dH\":\"Rejoignez le mouvement de signature ouverte\",\"wJijgU\":\"Emplacement\",\"OIowgO\":\"Faites-en votre propre grâce à une personnalisation avancée et un ajustement.\",\"GHelWd\":\"PRs fusionnées\",\"vXBVQZ\":\"PRs fusionnées\",\"+8Nek/\":\"Mensuel\",\"6YtxFj\":\"Nom\",\"CtgXe4\":\"Nouveaux utilisateurs\",\"OpNhRn\":\"Aucune carte de crédit requise\",\"6C9AxJ\":\"Aucune carte de crédit requise\",\"igwAqT\":\"Aucune de ces options ne fonctionne pour vous ? Essayez l'hébergement autonome !\",\"jjAtjQ\":\"Problèmes ouverts\",\"b76QYo\":\"Open Source ou hébergé.\",\"OWsQIe\":\"Startup ouverte\",\"Un80BR\":\"Amis OSS\",\"6zNyfI\":\"Nos modèles personnalisés sont dotés de règles intelligentes qui peuvent vous aider à gagner du temps et de l'énergie.\",\"+OmhKD\":\"Notre licence entreprise est idéale pour les grandes organisations cherchant à passer à Documenso pour tous leurs besoins de signature. Elle est disponible pour notre offre cloud ainsi que pour des configurations auto-hébergées et propose un large éventail de fonctionnalités de conformité et d'administration.\",\"eK0veR\":\"Our Enterprise License is great large organizations looking to switch to Documenso for all their signing needs. It's availible for our cloud offering as well as self-hosted setups and offer a wide range of compliance and Adminstration Features.\",\"I2ufwS\":\"Notre option auto-hébergée est idéale pour les petites équipes et les individus qui ont besoin d'une solution simple. Vous pouvez utiliser notre configuration basée sur Docker pour commencer en quelques minutes. Prenez le contrôle avec une personnalisation complète et une propriété des données.\",\"F9564X\":\"Temps partiel\",\"qJVkX+\":\"Nom de profil premium\",\"aHCEmh\":\"Prix\",\"rjGI/Q\":\"Confidentialité\",\"vERlcd\":\"Profil\",\"77/8W2\":\"Widget React (Bientôt).\",\"OYoVNk\":\"Recevez votre lien personnel à partager avec tous ceux qui vous tiennent à cœur.\",\"GDvlUT\":\"Rôle\",\"bUqwb8\":\"Salaire\",\"GNfoAO\":\"Économisez 60 $ ou 120 $\",\"StoBff\":\"Rechercher des langues...\",\"dhi4w4\":\"De manière sécurisée. Nos centres de données sont situés à Francfort (Allemagne), ce qui nous permet de bénéficier des meilleures lois locales sur la confidentialité. Nous sommes très conscients de la nature sensible de nos données et suivons les meilleures pratiques pour garantir la sécurité et l'intégrité des données qui nous sont confiées.\",\"kZBxnz\":\"Envoyer, connecter, recevoir et intégrer partout.\",\"eSfS30\":\"Ancienneté\",\"aoDa18\":\"Boutique\",\"c+Fnce\":\"Signer\",\"5lWFkC\":\"Se connecter\",\"e+RpCP\":\"S'inscrire\",\"4yiZOB\":\"Processus de signature\",\"RkUXMm\":\"Inscrivez-vous maintenant\",\"omz3DH\":\"Intelligent.\",\"AvYbUL\":\"Étoile sur GitHub\",\"y2dGtU\":\"Étoiles\",\"uAQUqI\":\"Statut\",\"XYLcNv\":\"Soutien\",\"KM6m8p\":\"Équipe\",\"lm5v+6\":\"Boîte de réception de l'équipe\",\"CAL6E9\":\"Équipes\",\"w4nM1s\":\"Boutique de modèles (Bientôt).\",\"yFoQ27\":\"C'est génial. Vous pouvez consulter les <0>Problèmes0> actuels et rejoindre notre <1>Communauté Discord1> pour rester à jour sur ce qui est actuellement prioritaire. Dans tous les cas, nous sommes une communauté ouverte et accueillons toutes les contributions, techniques et non techniques ❤️\",\"GE1BlA\":\"Cette page évolue à mesure que nous apprenons ce qui fait une grande entreprise de signature. Nous la mettrons à jour lorsque nous aurons plus à partager.\",\"MHrjPM\":\"Titre\",\"2YvdxE\":\"Documents totalisés complétés\",\"8e4lIo\":\"Total des clients\",\"bPpoCb\":\"Total des fonds levés\",\"vb0Q0/\":\"Total des utilisateurs\",\"mgQhDS\":\"Vraiment le vôtre.\",\"4McJfQ\":\"Essayez notre plan gratuit\",\"9mkNAn\":\"Statistiques Twitter\",\"CHzOWB\":\"Documents illimités par mois\",\"BOV7DD\":\"Jusqu'à 10 destinataires par document\",\"fydTfa\":\"Téléchargez un document et ajoutez des champs.\",\"vdAd7c\":\"Utiliser notre version hébergée est le moyen le plus simple de commencer, vous pouvez simplement vous abonner et commencer à signer vos documents. Nous nous occupons de l'infrastructure, vous pouvez vous concentrer sur votre entreprise. De plus, en utilisant notre version hébergée, vous bénéficiez de nos certificats de signature de confiance, ce qui vous aide à instaurer une relation de confiance avec vos clients.\",\"W2nDs0\":\"Voir toutes les statistiques\",\"WMfAK8\":\"Nous sommes heureux de vous aider à <0>support@documenso.com0> ou <1>dans notre canal de support Discord1>, veuillez envoyer un message à Lucas ou Timur pour être ajouté au canal si vous n'êtes pas déjà membre.\",\"ZaMyxU\":\"Quelle est la différence entre les plans ?\",\"8GpyFt\":\"En ce qui concerne l'envoi ou la réception d'un contrat, vous pouvez compter sur des vitesses ultrarapides.\",\"HEDnID\":\"Où puis-je obtenir du support ?\",\"sib3h3\":\"Pourquoi devrais-je préférer Documenso à DocuSign ou à un autre outil de signature ?\",\"cVPDPt\":\"Pourquoi devrais-je utiliser votre service d'hébergement ?\",\"zkWmBh\":\"Annuel\",\"8AKApo\":\"Oui ! Documenso est proposé sous la licence open source GNU AGPL V3. Cela signifie que vous pouvez l'utiliser gratuitement et même le modifier pour répondre à vos besoins, tant que vous publiez vos modifications sous la même licence.\",\"rzQpex\":\"Vous pouvez auto-héberger Documenso gratuitement ou utiliser notre version hébergée prête à l'emploi. La version hébergée est accompagnée d'une assistance supplémentaire, d'une montée en charge sans effort et d'autres avantages. Les premiers adoptants auront accès à toutes les fonctionnalités que nous construirons cette année, sans coût supplémentaire ! Pour toujours ! Oui, cela inclut plusieurs utilisateurs par compte à l'avenir. Si vous souhaitez Documenso pour votre entreprise, nous serons heureux de discuter de vos besoins.\",\"1j9aoC\":\"Votre navigateur ne prend pas en charge la balise vidéo.\",\"73XXzw\":[[\"0\"],\" sur \",[\"1\"],\" ligne(s) sélectionnée(s).\"],\"lZ4w45\":[[\"visibleRows\",\"plural\",{\"one\":[\"Affichage de \",\"#\",\" résultat.\"],\"other\":[\"Affichage de \",\"#\",\" résultats.\"]}]],\"AhYxw5\":\"<0>Hériter du méthode d'authentification0> - Utiliser la méthode d'authentification de signature d'action globale configurée dans l'étape \\\"Paramètres Générales\\\"\",\"OepImG\":\"<0>Aucune restriction0> - Aucune authentification requise\",\"07+JZ2\":\"<0>Aucune restriction0> - Le document peut être accédé directement par l'URL envoyée au destinataire\",\"jx/lwn\":\"<0>Aucun0> - Aucune authentification requise\",\"CUT3u1\":\"<0>Exiger 2FA0> - Le destinataire doit avoir un compte et 2FA activé via ses paramètres\",\"2PbD3D\":\"<0>Exiger un compte0> - Le destinataire doit être connecté pour voir le document\",\"QHSbey\":\"<0>Exiger une clé d'accès0> - Le destinataire doit avoir un compte et une clé d'accès configurée via ses paramètres\",\"Oy5nEc\":\"Ajouter un document\",\"7Pz5x5\":\"Ajouter une URL pour rediriger l'utilisateur une fois le document signé\",\"aILOUH\":\"Ajouter un ID externe au document. Cela peut être utilisé pour identifier le document dans des systèmes externes.\",\"bK1dPK\":\"Ajouter un ID externe au modèle. Cela peut être utilisé pour identifier dans des systèmes externes.\",\"nnZ1Sa\":\"Ajouter une autre option\",\"0/UVRw\":\"Ajouter une autre valeur\",\"VaCh6w\":\"Ajoutez-moi\",\"jAa/lz\":\"Ajoutez-moi\",\"29QK6H\":\"Ajouter un destinataire de substitution\",\"vcxlzZ\":\"Ajouter un signataire\",\"MwcOtB\":\"Ajouter du texte\",\"7F2ltK\":\"Ajouter du texte au champ\",\"U3pytU\":\"Administrateur\",\"NFIOKv\":\"Options avancées\",\"VNgKZz\":\"Paramètres avancés\",\"bNUpvl\":\"Après soumission, un document sera automatiquement généré et ajouté à votre page de documents. Vous recevrez également une notification par email.\",\"Z7ZXbT\":\"Approuver\",\"7kb4LU\":\"Approuvé\",\"ca9AbO\":\"Approuveur\",\"j2Uisd\":\"En attente d'approbation\",\"THokF3\":\"Noir\",\"Zn5crm\":\"Bleu\",\"dEgA5A\":\"Annuler\",\"brJrDl\":\"Impossible de retirer le signataire\",\"uOcAi7\":\"Cannot update signer because they have already signed a field\",\"RpYfjZ\":\"Cc\",\"XdZeJk\":\"CC\",\"nrL/ZD\":\"CC'd\",\"EEk+d0\":\"Limite de caractères\",\"G1XxbZ\":\"Case à cocher\",\"wbixMe\":\"Valeurs de case à cocher\",\"u8JHrO\":\"Effacer les filtres\",\"IqxkER\":\"Effacer la signature\",\"eZ6/Uj\":\"Cliquez pour insérer un champ\",\"yz7wBu\":\"Fermer\",\"OrcxNk\":\"Configurer le destinataire direct\",\"92KLYs\":[\"Configurer le champ \",[\"0\"]],\"xGVfLh\":\"Continuer\",\"FxVG/l\":\"Copié dans le presse-papiers\",\"GB2F11\":\"Texte personnalisé\",\"mYGY3B\":\"Date\",\"4BHv90\":\"Format de date\",\"NLXhq7\":\"Receveur de lien direct\",\"YScG1E\":\"Accès au document\",\"rAqi0g\":\"Création de document\",\"mzI/c+\":\"Télécharger\",\"6GyScL\":\"Faites glisser et déposez votre PDF ici.\",\"iKQcPM\":\"Liste déroulante\",\"XXvhMd\":\"Options de liste déroulante\",\"O3oNi5\":\"Email\",\"XLpxoj\":\"Options d'email\",\"qChNnS\":\"Activer la signature de lien direct\",\"S+mLLv\":\"Activer l'ordre de signature\",\"f7sXvi\":\"Entrez le mot de passe\",\"SlfejT\":\"Erreur\",\"5KfWxA\":\"ID externe\",\"4CP+OV\":\"Échec de l'enregistrement des paramètres.\",\"LK3SFK\":\"Limite de caractères du champ\",\"C21JWH\":\"Field font size\",\"NYkIsf\":\"Format du champ\",\"X6Tb6Q\":\"Étiquette du champ\",\"NaVkSD\":\"Espace réservé du champ\",\"cGeFup\":\"Font Size\",\"N1UTWT\":\"Authentification d'action de destinataire globale\",\"sr0UJD\":\"Retourner\",\"VmkjGB\":\"Vert\",\"uCroPU\":\"Je suis un signataire de ce document\",\"K6KTX2\":\"Je suis un visualiseur de ce document\",\"ngj5km\":\"Je suis un approuveur de ce document\",\"JUZIGu\":\"Je dois recevoir une copie de ce document\",\"ZjDoG7\":\"I am required to recieve a copy of this document\",\"fnbcC0\":\"Hériter de la méthode d'authentification\",\"87a/t/\":\"Étiquette\",\"dtOoGl\":\"Gestionnaire\",\"CK1KXz\":\"Max\",\"OvoEq7\":\"Membre\",\"ziXm9u\":\"Message <0>(Optionnel)0>\",\"eTUF28\":\"Min\",\"4nqUV0\":\"Nécessite une approbation\",\"lNQBPg\":\"Nécessite une signature\",\"eUAUyG\":\"Nécessite une visualisation\",\"GBIRGD\":\"Aucun destinataire correspondant à cette description n'a été trouvé.\",\"f34Qxi\":\"Aucun destinataire avec ce rôle\",\"qQ7oqE\":\"Aucune restriction\",\"AxPAXW\":\"Aucun résultat trouvé\",\"pt86ev\":\"Aucun champ de signature trouvé\",\"CSOFdu\":\"Aucune valeur trouvée.\",\"HptUxX\":\"Numéro\",\"bR2sEm\":\"Format de numéro\",\"eY6ns+\":\"Une fois activé, vous pouvez sélectionner n'importe quel destinataire actif pour être un destinataire de signature de lien direct ou en créer un nouveau. Ce type de destinataire ne peut pas être modifié ou supprimé.\",\"JE2qy+\":\"Une fois votre modèle configuré, partagez le lien où vous le souhaitez. La personne qui ouvre le lien pourra saisir ses informations dans le champ de destinataire de lien direct et remplir tout autre champ qui lui est attribué.\",\"fpzyLj\":[\"Page \",[\"0\"],\" sur \",[\"1\"]],\"8ltyoa\":\"Mot de passe requis\",\"ayaTI6\":\"Choisissez un numéro\",\"hx1ePY\":\"Espace réservé\",\"MtkqZc\":\"Radio\",\"5cEi0C\":\"Valeurs radio\",\"uNQ6eB\":\"Lecture seule\",\"UTnF5X\":\"Recevoir une copie\",\"ZIuo5V\":\"Authentification d'action de destinataire\",\"wRTiSD\":\"Rouge\",\"VTB2Rz\":\"URL de redirection\",\"t/YqKh\":\"Retirer\",\"8dg+Yo\":\"Champ requis\",\"xxCtZv\":\"Lignes par page\",\"tfDRzk\":\"Sauvegarder\",\"9Y3hAT\":\"Sauvegarder le modèle\",\"rG3WVm\":\"Sélectionner\",\"hVPa4O\":\"Sélectionner une option\",\"IM+vrQ\":\"Sélectionnez au moins\",\"Gve6FG\":\"Sélectionner l'option par défaut\",\"JlFcis\":\"Envoyer\",\"AEV4wo\":\"Envoyer le document\",\"iE3nGO\":\"Partager la carte de signature\",\"y+hKWu\":\"Partager le lien\",\"ydZ6yi\":\"Afficher les paramètres avancés\",\"n+8yVN\":\"Signature\",\"PoH7eg\":\"Signé\",\"jTCAGu\":\"Signataire\",\"6G8s+q\":\"Signature en cours\",\"kW2h2Z\":\"Certains signataires n'ont pas été assignés à un champ de signature. Veuillez assigner au moins 1 champ de signature à chaque signataire avant de continuer.\",\"nwtY4N\":\"Quelque chose a mal tourné\",\"kf83Ld\":\"Quelque chose a mal tourné.\",\"WlBiWh\":[\"Étape <0>\",[\"step\"],\" sur \",[\"maxStep\"],\"0>\"],\"ki77Td\":\"Objet <0>(Optionnel)0>\",\"hQRttt\":\"Soumettre\",\"URdrTr\":\"Titre du modèle\",\"xeiujy\":\"Texte\",\"imClgr\":\"L'authentification requise pour que les destinataires signent des champs\",\"yyD2dE\":\"L'authentification requise pour que les destinataires signent le champ de signature.\",\"GtDmLf\":\"L'authentification requise pour que les destinataires visualisent le document.\",\"zAoaPB\":\"Le nom du document\",\"Ev3GOS\":\"Le mot de passe que vous avez entré est incorrect. Veuillez réessayer.\",\"OPnnb6\":\"Le destinataire n'est pas tenu de prendre des mesures et reçoit une copie du document après son achèvement.\",\"v8p6Mb\":\"Le destinataire doit approuver le document pour qu'il soit complété.\",\"CPv0TB\":\"Le destinataire doit signer le document pour qu'il soit complété.\",\"oIvIfH\":\"Le destinataire doit visualiser le document pour qu'il soit complété.\",\"Br2bvS\":\"Le lien de partage n'a pas pu être créé pour le moment. Veuillez réessayer.\",\"XJIzqY\":\"Le lien de partage a été copié dans votre presse-papiers.\",\"UyM8/E\":\"L'email du signataire\",\"zHJ+vk\":\"Le nom du signataire\",\"kaEF2i\":\"Cela peut être remplacé par le paramétrage direct des exigences d'authentification pour chaque destinataire à l'étape suivante.\",\"QUZVfd\":\"Ce document a déjà été envoyé à ce destinataire. Vous ne pouvez plus modifier ce destinataire.\",\"riNGUC\":\"Ce document est protégé par mot de passe. Veuillez entrer le mot de passe pour visualiser le document.\",\"Qkeh+t\":\"Ce champ ne peut pas être modifié ou supprimé. Lorsque vous partagez le lien direct de ce modèle ou l'ajoutez à votre profil public, toute personne qui y accède peut saisir son nom et son email, et remplir les champs qui lui sont attribués.\",\"xrWgbt\":\"This recipient can no longer be modified as they have signed a field, or completed the document.\",\"l2Xt6u\":\"Ce signataire a déjà reçu le document.\",\"+J77hf\":\"This signer has already signed the document.\",\"6iFh5a\":\"Cela remplacera tous les paramètres globaux.\",\"RxsRD6\":\"Fuseau horaire\",\"UWmOq4\":[\"Pour continuer, veuillez définir au moins une valeur pour le champ \",[\"0\"],\".\"],\"EkH9pt\":\"Mettre à jour\",\"GT+2nz\":\"Mettez à jour le rôle et ajoutez des champs selon les besoins pour le destinataire direct. L'individu qui utilise le lien direct signera le document en tant que destinataire direct.\",\"kwkhPe\":\"Améliorer\",\"06fEqf\":\"Télécharger le document modèle\",\"lGWE4b\":\"Validation\",\"wMHvYH\":\"Valeur\",\"jpctdh\":\"Vue\",\"vXtpAZ\":\"Vu\",\"M/TIv1\":\"Visiteur\",\"RVWz5F\":\"Visionnage\",\"5Ex+AP\":\"White\",\"4/hUq0\":\"Vous êtes sur le point d'envoyer ce document aux destinataires. Êtes-vous sûr de vouloir continuer ?\",\"rb/T41\":\"Vous pouvez utiliser les variables suivantes dans votre message :\",\"9+Ph0R\":\"Vous ne pouvez pas télécharger de documents pour le moment.\",\"m5RA9C\":\"Vous avez atteint votre limite de documents.\"}")};
\ No newline at end of file
diff --git a/packages/lib/translations/fr/marketing.po b/packages/lib/translations/fr/marketing.po
index 3d5ee777a..a2d4ca002 100644
--- a/packages/lib/translations/fr/marketing.po
+++ b/packages/lib/translations/fr/marketing.po
@@ -8,7 +8,7 @@ msgstr ""
"Language: fr\n"
"Project-Id-Version: documenso-app\n"
"Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2024-10-08 12:05\n"
+"PO-Revision-Date: 2024-11-20 11:56\n"
"Last-Translator: \n"
"Language-Team: French\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
@@ -160,10 +160,6 @@ msgstr "Documentation"
msgid "Easily embed Documenso into your product. Simply copy and paste our react widget into your application."
msgstr "Intégrez facilement Documenso dans votre produit. Il vous suffit de copier et coller notre widget React dans votre application."
-#: apps/marketing/src/components/(marketing)/share-connect-paid-widget-bento.tsx:42
-#~ msgid "Easy Sharing (Soon)."
-#~ msgstr "Easy Sharing (Soon)."
-
#: apps/marketing/src/components/(marketing)/share-connect-paid-widget-bento.tsx:46
msgid "Easy Sharing."
msgstr "Partage facile."
@@ -377,18 +373,10 @@ msgstr "Nos modèles personnalisés sont dotés de règles intelligentes qui peu
msgid "Our Enterprise License is great for large organizations looking to switch to Documenso for all their signing needs. It's available for our cloud offering as well as self-hosted setups and offers a wide range of compliance and Adminstration Features."
msgstr "Notre licence entreprise est idéale pour les grandes organisations cherchant à passer à Documenso pour tous leurs besoins de signature. Elle est disponible pour notre offre cloud ainsi que pour des configurations auto-hébergées et propose un large éventail de fonctionnalités de conformité et d'administration."
-#: apps/marketing/src/components/(marketing)/enterprise.tsx:20
-#~ msgid "Our Enterprise License is great large organizations looking to switch to Documenso for all their signing needs. It's availible for our cloud offering as well as self-hosted setups and offer a wide range of compliance and Adminstration Features."
-#~ msgstr "Our Enterprise License is great large organizations looking to switch to Documenso for all their signing needs. It's availible for our cloud offering as well as self-hosted setups and offer a wide range of compliance and Adminstration Features."
-
#: apps/marketing/src/app/(marketing)/pricing/page.tsx:65
msgid "Our self-hosted option is great for small teams and individuals who need a simple solution. You can use our docker based setup to get started in minutes. Take control with full customizability and data ownership."
msgstr "Notre option auto-hébergée est idéale pour les petites équipes et les individus qui ont besoin d'une solution simple. Vous pouvez utiliser notre configuration basée sur Docker pour commencer en quelques minutes. Prenez le contrôle avec une personnalisation complète et une propriété des données."
-#: apps/marketing/src/app/(marketing)/open/data.ts:25
-#~ msgid "Part-Time"
-#~ msgstr "Part-Time"
-
#: apps/marketing/src/components/(marketing)/pricing-table.tsx:151
msgid "Premium Profile Name"
msgstr "Nom de profil premium"
@@ -430,10 +418,6 @@ msgstr "Salaire"
msgid "Save $60 or $120"
msgstr "Économisez 60 $ ou 120 $"
-#: apps/marketing/src/components/(marketing)/i18n-switcher.tsx:47
-#~ msgid "Search languages..."
-#~ msgstr "Search languages..."
-
#: apps/marketing/src/app/(marketing)/pricing/page.tsx:109
msgid "Securely. Our data centers are located in Frankfurt (Germany), giving us the best local privacy laws. We are very aware of the sensitive nature of our data and follow best practices to ensure the security and integrity of the data entrusted to us."
msgstr "De manière sécurisée. Nos centres de données sont situés à Francfort (Allemagne), ce qui nous permet de bénéficier des meilleures lois locales sur la confidentialité. Nous sommes très conscients de la nature sensible de nos données et suivons les meilleures pratiques pour garantir la sécurité et l'intégrité des données qui nous sont confiées."
@@ -618,3 +602,4 @@ msgstr "Vous pouvez auto-héberger Documenso gratuitement ou utiliser notre vers
#: apps/marketing/src/components/(marketing)/carousel.tsx:272
msgid "Your browser does not support the video tag."
msgstr "Votre navigateur ne prend pas en charge la balise vidéo."
+
diff --git a/packages/lib/translations/fr/web.po b/packages/lib/translations/fr/web.po
index 8cca9c317..846c94e2f 100644
--- a/packages/lib/translations/fr/web.po
+++ b/packages/lib/translations/fr/web.po
@@ -8,7 +8,7 @@ msgstr ""
"Language: fr\n"
"Project-Id-Version: documenso-app\n"
"Report-Msgid-Bugs-To: \n"
-"PO-Revision-Date: 2024-10-08 12:05\n"
+"PO-Revision-Date: 2024-11-20 11:56\n"
"Last-Translator: \n"
"Language-Team: French\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
@@ -18,6 +18,10 @@ msgstr ""
"X-Crowdin-File: web.po\n"
"X-Crowdin-File-ID: 8\n"
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:214
+msgid "\"{0}\" has invited you to sign \"example document\"."
+msgstr "\"{0}\" vous a invité à signer \"example document\"."
+
#: apps/web/src/app/(signing)/sign/[token]/date-field.tsx:69
msgid "\"{0}\" will appear on the document as it has a timezone of \"{timezone}\"."
msgstr "\"{0}\" apparaîtra sur le document car il a un fuseau horaire de \"{timezone}\"."
@@ -26,19 +30,39 @@ msgstr "\"{0}\" apparaîtra sur le document car il a un fuseau horaire de \"{tim
msgid "\"{documentTitle}\" has been successfully deleted"
msgstr "\"{documentTitle}\" a été supprimé avec succès"
-#: apps/web/src/app/(signing)/sign/[token]/signing-page-view.tsx:78
+#: apps/web/src/components/(teams)/forms/update-team-form.tsx:234
+msgid "\"{email}\" on behalf of \"{teamName}\" has invited you to sign \"example document\"."
+msgstr "\"{email}\" au nom de \"{teamName}\" vous a invité à signer \"example document\"."
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:209
+#~ msgid ""
+#~ "\"{placeholderEmail}\" on behalf of \"{0}\" has invited you to sign \"example\n"
+#~ "document\"."
+#~ msgstr ""
+#~ "\"{placeholderEmail}\" on behalf of \"{0}\" has invited you to sign \"example\n"
+#~ "document\"."
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:209
+msgid "\"{placeholderEmail}\" on behalf of \"{0}\" has invited you to sign \"example document\"."
+msgstr "\"{placeholderEmail}\" au nom de \"{0}\" vous a invité à signer \"exemple de document\"."
+
+#: apps/web/src/components/(teams)/forms/update-team-form.tsx:241
+msgid "\"{teamUrl}\" has invited you to sign \"example document\"."
+msgstr "\"{teamUrl}\" vous a invité à signer \"example document\"."
+
+#: apps/web/src/app/(signing)/sign/[token]/signing-page-view.tsx:80
msgid "({0}) has invited you to approve this document"
msgstr "({0}) vous a invité à approuver ce document"
-#: apps/web/src/app/(signing)/sign/[token]/signing-page-view.tsx:75
+#: apps/web/src/app/(signing)/sign/[token]/signing-page-view.tsx:77
msgid "({0}) has invited you to sign this document"
msgstr "({0}) vous a invité à signer ce document"
-#: apps/web/src/app/(signing)/sign/[token]/signing-page-view.tsx:72
+#: apps/web/src/app/(signing)/sign/[token]/signing-page-view.tsx:74
msgid "({0}) has invited you to view this document"
msgstr "({0}) vous a invité à consulter ce document"
-#: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:311
+#: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:313
msgid "{0, plural, one {(1 character over)} other {(# characters over)}}"
msgstr "{0, plural, one {(1 caractère de trop)} other {(# caractères de trop)}}"
@@ -60,11 +84,15 @@ msgstr "{0, plural, one {# siège} other {# sièges}}"
msgid "{0, plural, one {<0>You have <1>11> pending team invitation0>} other {<2>You have <3>#3> pending team invitations2>}}"
msgstr "{0, plural, one {<0>Vous avez <1>11> invitation d'équipe en attente0>} other {<2>Vous avez <3>#3> invitations d'équipe en attente2>}}"
+#: apps/web/src/app/(signing)/sign/[token]/auto-sign.tsx:196
+msgid "{0, plural, one {1 matching field} other {# matching fields}}"
+msgstr "{0, plural, one {1 champ correspondant} other {# champs correspondants}}"
+
#: apps/web/src/app/(dashboard)/documents/[id]/edit/document-edit-page-view.tsx:129
msgid "{0, plural, one {1 Recipient} other {# Recipients}}"
msgstr "{0, plural, one {1 Destinataire} other {# Destinataires}}"
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:230
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:235
msgid "{0, plural, one {Waiting on 1 recipient} other {Waiting on # recipients}}"
msgstr "{0, plural, one {En attente d'1 destinataire} other {En attente de # destinataires}}"
@@ -72,27 +100,31 @@ msgstr "{0, plural, one {En attente d'1 destinataire} other {En attente de # des
msgid "{0, plural, zero {Select values} other {# selected...}}"
msgstr "{0, plural, zero {Sélectionner des valeurs} other {# sélectionnées...}}"
+#: apps/web/src/app/(signing)/sign/[token]/auto-sign.tsx:193
+msgid "{0}"
+msgstr "{0}"
+
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:249
msgid "{0} direct signing templates"
msgstr "{0} modèles de signature directe"
#: apps/web/src/app/(recipient)/d/[token]/direct-template.tsx:66
-msgid "{0} document"
-msgstr "{0} document"
+#~ msgid "{0} document"
+#~ msgstr "{0} document"
#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:146
msgid "{0} of {1} documents remaining this month."
msgstr "{0} des {1} documents restants ce mois-ci."
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:165
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:170
msgid "{0} Recipient(s)"
msgstr "{0} Destinataire(s)"
#: apps/web/src/app/(recipient)/d/[token]/direct-template.tsx:67
-msgid "{0} the document to complete the process."
-msgstr "{0} le document pour compléter le processus."
+#~ msgid "{0} the document to complete the process."
+#~ msgstr "{0} the document to complete the process."
-#: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:292
+#: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:294
msgid "{charactersRemaining, plural, one {1 character remaining} other {{charactersRemaining} characters remaining}}"
msgstr "{charactersRemaining, plural, one {1 caractère restant} other {{charactersRemaining} caractères restants}}"
@@ -104,6 +136,14 @@ msgstr "{formattedTeamMemberQuanity} • Mensuel • Renouvelle : {formattedDate
msgid "{numberOfSeats, plural, one {# member} other {# members}}"
msgstr "{numberOfSeats, plural, one {# membre} other {# membres}}"
+#: apps/web/src/app/(recipient)/d/[token]/direct-template.tsx:67
+msgid "{recipientActionVerb} document"
+msgstr "{recipientActionVerb} document"
+
+#: apps/web/src/app/(recipient)/d/[token]/direct-template.tsx:68
+msgid "{recipientActionVerb} the document to complete the process."
+msgstr "{recipientActionVerb} the document to complete the process."
+
#: apps/web/src/components/forms/public-profile-form.tsx:231
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:389
msgid "{remaningLength, plural, one {# character remaining} other {# characters remaining}}"
@@ -117,6 +157,18 @@ msgstr "<0>\"{0}\"0> n'est plus disponible pour signer"
msgid "<0>Sender:0> All"
msgstr "<0>Expéditeur :0> Tous"
+#: apps/web/src/components/(dashboard)/settings/token/contants.ts:5
+msgid "1 month"
+msgstr "1 mois"
+
+#: apps/web/src/components/(dashboard)/settings/token/contants.ts:8
+msgid "12 months"
+msgstr "12 mois"
+
+#: apps/web/src/components/(dashboard)/settings/token/contants.ts:6
+msgid "3 months"
+msgstr "3 mois"
+
#: apps/web/src/components/partials/not-found.tsx:45
msgid "404 Page not found"
msgstr "404 Page non trouvée"
@@ -133,14 +185,30 @@ msgstr "404 Équipe non trouvée"
msgid "404 Template not found"
msgstr "404 Modèle non trouvé"
+#: apps/web/src/components/(dashboard)/settings/token/contants.ts:7
+msgid "6 months"
+msgstr "6 mois"
+
+#: apps/web/src/components/(dashboard)/settings/token/contants.ts:4
+msgid "7 days"
+msgstr "7 jours"
+
#: apps/web/src/components/forms/send-confirmation-email.tsx:55
msgid "A confirmation email has been sent, and it should arrive in your inbox shortly."
msgstr "Un e-mail de confirmation a été envoyé et devrait arriver dans votre boîte de réception sous peu."
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:193
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:70
+msgid "A device capable of accessing, opening, and reading documents"
+msgstr "Un appareil capable d'accéder, d'ouvrir et de lire des documents"
+
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:218
msgid "A draft document will be created"
msgstr "Un document brouillon sera créé"
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:73
+msgid "A means to print or download documents for your records"
+msgstr "Un moyen d'imprimer ou de télécharger des documents pour vos dossiers"
+
#: apps/web/src/components/forms/token.tsx:127
msgid "A new token was created successfully."
msgstr "Un nouveau jeton a été créé avec succès."
@@ -163,12 +231,16 @@ msgstr "Un secret qui sera envoyé à votre URL afin que vous puissiez vérifier
msgid "A secret that will be sent to your URL so you can verify that the request has been sent by Documenso."
msgstr "Un secret qui sera envoyé à votre URL afin que vous puissiez vérifier que la demande a été envoyée par Documenso."
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:64
+msgid "A stable internet connection"
+msgstr "Une connexion Internet stable"
+
#: apps/web/src/components/forms/public-profile-form.tsx:198
msgid "A unique URL to access your profile"
msgstr "Une URL unique pour accéder à votre profil"
#: apps/web/src/components/(teams)/dialogs/create-team-dialog.tsx:206
-#: apps/web/src/components/(teams)/forms/update-team-form.tsx:139
+#: apps/web/src/components/(teams)/forms/update-team-form.tsx:179
msgid "A unique URL to identify your team"
msgstr "Une URL unique pour identifier votre équipe"
@@ -180,24 +252,42 @@ msgstr "Un e-mail de vérification sera envoyé à l'adresse e-mail fournie."
msgid "Accept"
msgstr "Accepter"
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:33
+msgid "Acceptance and Consent"
+msgstr "Acceptation et consentement"
+
#: apps/web/src/app/(dashboard)/settings/teams/accept-team-invitation-button.tsx:26
msgid "Accepted team invitation"
msgstr "Invitation d'équipe acceptée"
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:128
+msgid "Account Authentication"
+msgstr "Authentification de compte"
+
#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:51
#: apps/web/src/app/(dashboard)/settings/profile/delete-account-dialog.tsx:48
msgid "Account deleted"
msgstr "Compte supprimé"
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:105
-#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-data-table.tsx:104
-#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:125
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:119
+msgid "Account Re-Authentication"
+msgstr "Ré-authentification de compte"
+
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:139
+msgid "Acknowledgment"
+msgstr "Reconnaissance"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:108
+#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-data-table.tsx:100
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:123
#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:164
#: apps/web/src/app/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx:118
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/data-table.tsx:46
msgid "Action"
msgstr "Action"
#: apps/web/src/app/(dashboard)/documents/data-table.tsx:85
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:181
#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:140
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:133
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:142
@@ -206,7 +296,7 @@ msgstr "Action"
msgid "Actions"
msgstr "Actions"
-#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:101
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:107
#: apps/web/src/components/(teams)/tables/teams-member-page-data-table.tsx:76
#: apps/web/src/components/(teams)/tables/user-settings-teams-page-data-table.tsx:71
msgid "Active"
@@ -220,12 +310,12 @@ msgstr "Abonnements actifs"
msgid "Add"
msgstr "Ajouter"
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:157
-#: apps/web/src/app/(dashboard)/templates/[id]/edit-template.tsx:87
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:177
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:88
msgid "Add all relevant fields for each recipient."
msgstr "Ajouter tous les champs pertinents pour chaque destinataire."
-#: apps/web/src/app/(dashboard)/templates/[id]/edit-template.tsx:82
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:83
msgid "Add all relevant placeholders for each recipient."
msgstr "Ajouter tous les espaces réservés pertinents pour chaque destinataire."
@@ -241,8 +331,8 @@ msgstr "Ajouter un authentificateur pour servir de méthode d'authentification s
msgid "Add email"
msgstr "Ajouter un e-mail"
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:156
-#: apps/web/src/app/(dashboard)/templates/[id]/edit-template.tsx:86
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:176
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:87
msgid "Add Fields"
msgstr "Ajouter des champs"
@@ -250,55 +340,47 @@ msgstr "Ajouter des champs"
msgid "Add more"
msgstr "Ajouter davantage"
-#: apps/web/src/app/(signing)/sign/[token]/number-field.tsx:270
-#~ msgid "Add number"
-#~ msgstr "Add number"
-
#: apps/web/src/app/(dashboard)/settings/security/passkeys/create-passkey-dialog.tsx:146
#: apps/web/src/app/(dashboard)/settings/security/passkeys/create-passkey-dialog.tsx:154
msgid "Add passkey"
msgstr "Ajouter une clé de passe"
-#: apps/web/src/app/(dashboard)/templates/[id]/edit-template.tsx:81
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:82
msgid "Add Placeholders"
msgstr "Ajouter des espaces réservés"
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:151
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:171
msgid "Add Signers"
msgstr "Ajouter des signataires"
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:161
-msgid "Add Subject"
-msgstr "Ajouter un sujet"
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:180
+#~ msgid "Add Subject"
+#~ msgstr "Add Subject"
#: apps/web/src/components/(teams)/dialogs/add-team-email-dialog.tsx:133
msgid "Add team email"
msgstr "Ajouter un e-mail d'équipe"
-#: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:256
-#~ msgid "Add text"
-#~ msgstr "Add text"
-
-#: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:272
-#~ msgid "Add Text"
-#~ msgstr "Add Text"
-
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:152
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:172
msgid "Add the people who will sign the document."
msgstr "Ajouter les personnes qui signeront le document."
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:195
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:220
msgid "Add the recipients to create the document with"
msgstr "Ajouter les destinataires pour créer le document avec"
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:162
-msgid "Add the subject and message you wish to send to signers."
-msgstr "Ajouter le sujet et le message que vous souhaitez envoyer aux signataires."
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:181
+#~ msgid "Add the subject and message you wish to send to signers."
+#~ msgstr "Add the subject and message you wish to send to signers."
#: apps/web/src/components/(teams)/dialogs/create-team-checkout-dialog.tsx:152
msgid "Adding and removing seats will adjust your invoice accordingly."
msgstr "Ajouter et supprimer des sièges ajustera votre facture en conséquence."
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/branding-preferences.tsx:303
+msgid "Additional brand information to display at the bottom of emails"
+msgstr "Informations supplémentaires sur la marque à afficher en bas des e-mails"
+
#: apps/web/src/app/(dashboard)/admin/documents/[id]/page.tsx:59
msgid "Admin Actions"
msgstr "Actions administratives"
@@ -307,6 +389,10 @@ msgstr "Actions administratives"
msgid "Admin panel"
msgstr "Panneau d'administration"
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:129
+msgid "After signing a document electronically, you will be provided the opportunity to view, download, and print the document for your records. It is highly recommended that you retain a copy of all electronically signed documents for your personal records. We will also retain a copy of the signed document for our records however we may not be able to provide you with a copy of the signed document after a certain period of time."
+msgstr "Après avoir signé un document électroniquement, vous aurez l'occasion de visualiser, télécharger et imprimer le document pour vos dossiers. Il est fortement recommandé de conserver une copie de tous les documents signés électroniquement pour vos dossiers personnels. Nous conserverons également une copie du document signé pour nos dossiers, mais nous pourrions ne pas être en mesure de vous fournir une copie du document signé après une certaine période."
+
#: apps/web/src/components/formatter/document-status.tsx:46
msgid "All"
msgstr "Tout"
@@ -319,6 +405,10 @@ msgstr "Tous les documents"
msgid "All documents have been processed. Any new documents that are sent or received will show here."
msgstr "Tous les documents ont été traités. Tous nouveaux documents envoyés ou reçus s'afficheront ici."
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:81
+msgid "All documents related to the electronic signing process will be provided to you electronically through our platform or via email. It is your responsibility to ensure that your email address is current and that you can receive and open our emails."
+msgstr "Tous les documents relatifs au processus de signature électronique vous seront fournis électroniquement via notre plateforme ou par e-mail. Il est de votre responsabilité de vous assurer que votre adresse e-mail est à jour et que vous pouvez recevoir et ouvrir nos e-mails."
+
#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:145
msgid "All inserted signatures will be voided"
msgstr "Toutes les signatures insérées seront annulées"
@@ -327,6 +417,10 @@ msgstr "Toutes les signatures insérées seront annulées"
msgid "All recipients will be notified"
msgstr "Tous les destinataires seront notifiés"
+#: apps/web/src/components/document/document-recipient-link-copy-dialog.tsx:62
+msgid "All signing links have been copied to your clipboard."
+msgstr "Tous les liens de signature ont été copiés dans votre presse-papiers."
+
#: apps/web/src/components/(dashboard)/common/command-menu.tsx:57
msgid "All templates"
msgstr "Tous les modèles"
@@ -347,6 +441,14 @@ msgstr "Vous avez déjà un compte ? <0>Connectez-vous plutôt0>"
msgid "Amount"
msgstr "Montant"
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:48
+msgid "An electronic signature provided by you on our platform, achieved through clicking through to a document and entering your name, or any other electronic signing method we provide, is legally binding. It carries the same weight and enforceability as a manual signature written with ink on paper."
+msgstr "Une signature électronique fournie par vous sur notre plateforme, obtenue en cliquant sur un document et en saisissant votre nom, ou toute autre méthode de signature électronique que nous fournis, est juridiquement contraignante. Elle a le même poids et la même force exécutoire qu'une signature manuelle écrite à l'encre sur papier."
+
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:67
+msgid "An email account"
+msgstr "Un compte e-mail"
+
#: apps/web/src/components/(teams)/dialogs/invite-team-member-dialog.tsx:262
msgid "An email containing an invitation will be sent to each member."
msgstr "Un e-mail contenant une invitation sera envoyé à chaque membre."
@@ -370,17 +472,21 @@ msgstr "Un e-mail demandant le transfert de cette équipe a été envoyé."
msgid "An error occurred"
msgstr "Une erreur est survenue"
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:248
-#: apps/web/src/app/(dashboard)/templates/[id]/edit-template.tsx:197
-#: apps/web/src/app/(dashboard)/templates/[id]/edit-template.tsx:231
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:269
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:201
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:235
msgid "An error occurred while adding signers."
msgstr "Une erreur est survenue lors de l'ajout de signataires."
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:278
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:304
msgid "An error occurred while adding the fields."
msgstr "Une erreur est survenue lors de l'ajout des champs."
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:153
+#: apps/web/src/app/(signing)/sign/[token]/auto-sign.tsx:154
+msgid "An error occurred while auto-signing the document, some fields may not be signed. Please review and manually sign any remaining fields."
+msgstr "Une erreur est survenue lors de la signature automatique du document, certains champs peuvent ne pas être signés. Veuillez vérifier et signer manuellement tous les champs restants."
+
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:176
msgid "An error occurred while creating document from template."
msgstr "Une erreur est survenue lors de la création du document à partir d'un modèle."
@@ -393,9 +499,9 @@ msgid "An error occurred while disabling direct link signing."
msgstr "Une erreur est survenue lors de la désactivation de la signature par lien direct."
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-button.tsx:64
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:89
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:92
#: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:76
-#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:109
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:107
msgid "An error occurred while downloading your document."
msgstr "Une erreur est survenue lors du téléchargement de votre document."
@@ -419,6 +525,10 @@ msgstr "Une erreur est survenue lors du déplacement du document."
msgid "An error occurred while moving the template."
msgstr "Une erreur est survenue lors du déplacement du modèle."
+#: apps/web/src/app/(signing)/sign/[token]/initials-field.tsx:116
+msgid "An error occurred while removing the field."
+msgstr "Une erreur est survenue lors de la suppression du champ."
+
#: apps/web/src/app/(signing)/sign/[token]/checkbox-field.tsx:152
#: apps/web/src/app/(signing)/sign/[token]/date-field.tsx:126
#: apps/web/src/app/(signing)/sign/[token]/dropdown-field.tsx:137
@@ -426,7 +536,7 @@ msgstr "Une erreur est survenue lors du déplacement du modèle."
#: apps/web/src/app/(signing)/sign/[token]/name-field.tsx:148
#: apps/web/src/app/(signing)/sign/[token]/number-field.tsx:195
#: apps/web/src/app/(signing)/sign/[token]/radio-field.tsx:129
-#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:175
+#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:173
msgid "An error occurred while removing the signature."
msgstr "Une erreur est survenue lors de la suppression de la signature."
@@ -434,7 +544,7 @@ msgstr "Une erreur est survenue lors de la suppression de la signature."
msgid "An error occurred while removing the text."
msgstr "Une erreur est survenue lors de la suppression du texte."
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:309
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:350
msgid "An error occurred while sending the document."
msgstr "Une erreur est survenue lors de l'envoi du document."
@@ -446,10 +556,11 @@ msgstr "Une erreur est survenue lors de l'envoi de votre e-mail de confirmation"
#: apps/web/src/app/(signing)/sign/[token]/date-field.tsx:100
#: apps/web/src/app/(signing)/sign/[token]/dropdown-field.tsx:106
#: apps/web/src/app/(signing)/sign/[token]/email-field.tsx:84
+#: apps/web/src/app/(signing)/sign/[token]/initials-field.tsx:90
#: apps/web/src/app/(signing)/sign/[token]/name-field.tsx:122
#: apps/web/src/app/(signing)/sign/[token]/number-field.tsx:150
#: apps/web/src/app/(signing)/sign/[token]/radio-field.tsx:102
-#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:149
+#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:147
#: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:168
msgid "An error occurred while signing the document."
msgstr "Une erreur est survenue lors de la signature du document."
@@ -458,11 +569,15 @@ msgstr "Une erreur est survenue lors de la signature du document."
msgid "An error occurred while trying to create a checkout session."
msgstr "Une erreur est survenue lors de la création d'une session de paiement."
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:214
-#: apps/web/src/app/(dashboard)/templates/[id]/edit-template.tsx:166
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:235
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:170
msgid "An error occurred while updating the document settings."
msgstr "Une erreur est survenue lors de la mise à jour des paramètres du document."
+#: apps/web/src/components/forms/team-document-settings.tsx:78
+#~ msgid "An error occurred while updating the global team settings."
+#~ msgstr "An error occurred while updating the global team settings."
+
#: apps/web/src/app/(signing)/sign/[token]/checkbox-field.tsx:213
msgid "An error occurred while updating the signature."
msgstr "Une erreur est survenue lors de la mise à jour de la signature."
@@ -493,7 +608,7 @@ msgstr "Une erreur est survenue lors du téléchargement de votre document."
#: apps/web/src/components/(teams)/dialogs/transfer-team-dialog.tsx:116
#: apps/web/src/components/(teams)/dialogs/update-team-email-dialog.tsx:89
#: apps/web/src/components/(teams)/dialogs/update-team-member-dialog.tsx:100
-#: apps/web/src/components/(teams)/forms/update-team-form.tsx:94
+#: apps/web/src/components/(teams)/forms/update-team-form.tsx:134
#: apps/web/src/components/forms/avatar-image.tsx:94
#: apps/web/src/components/forms/avatar-image.tsx:122
#: apps/web/src/components/forms/password.tsx:84
@@ -522,13 +637,21 @@ msgstr "Une erreur inconnue est survenue"
msgid "Any payment methods attached to this team will remain attached to this team. Please contact us if you need to update this information."
msgstr "Tous les moyens de paiement associés à cette équipe resteront associés à cette équipe. Veuillez nous contacter si vous avez besoin de mettre à jour ces informations."
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:225
+msgid "Any Source"
+msgstr "Toute source"
+
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:205
+msgid "Any Status"
+msgstr "Tout statut"
+
#: apps/web/src/app/(dashboard)/settings/tokens/page.tsx:22
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx:42
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx:56
#: apps/web/src/components/(dashboard)/settings/layout/desktop-nav.tsx:90
#: apps/web/src/components/(dashboard)/settings/layout/mobile-nav.tsx:93
-#: apps/web/src/components/(teams)/settings/layout/desktop-nav.tsx:81
-#: apps/web/src/components/(teams)/settings/layout/mobile-nav.tsx:89
+#: apps/web/src/components/(teams)/settings/layout/desktop-nav.tsx:96
+#: apps/web/src/components/(teams)/settings/layout/mobile-nav.tsx:105
msgid "API Tokens"
msgstr "Jetons API"
@@ -538,12 +661,16 @@ msgstr "Version de l'application"
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-button.tsx:89
#: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:120
-#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:148
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:146
#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:125
msgid "Approve"
msgstr "Approuver"
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:78
+#: apps/web/src/app/(signing)/sign/[token]/form.tsx:129
+msgid "Approve Document"
+msgstr "Approuver le document"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:94
msgid "Approved"
msgstr "Approuvé"
@@ -551,6 +678,10 @@ msgstr "Approuvé"
msgid "Are you sure you want to delete this token?"
msgstr "Êtes-vous sûr de vouloir supprimer ce jeton ?"
+#: apps/web/src/app/(signing)/sign/[token]/reject-document-dialog.tsx:120
+msgid "Are you sure you want to reject this document? This action cannot be undone."
+msgstr "Êtes-vous sûr de vouloir rejeter ce document ? Cette action ne peut pas être annulée."
+
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:188
msgid "Are you sure you want to remove the <0>{passkeyName}0> passkey."
msgstr "Êtes-vous sûr de vouloir supprimer la clé de passe <0>{passkeyName}0>."
@@ -561,7 +692,7 @@ msgstr "Êtes-vous sûr de vouloir supprimer cette équipe ?"
#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:98
#: apps/web/src/app/(dashboard)/settings/teams/team-email-usage.tsx:94
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:453
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:455
#: apps/web/src/components/(teams)/dialogs/delete-team-member-dialog.tsx:81
#: apps/web/src/components/(teams)/dialogs/leave-team-dialog.tsx:81
#: apps/web/src/components/(teams)/dialogs/remove-team-email-dialog.tsx:116
@@ -573,10 +704,14 @@ msgstr "Êtes-vous sûr ?"
msgid "Attempts sealing the document again, useful for after a code change has occurred to resolve an erroneous document."
msgstr "Essaye de sceller le document à nouveau, utile après qu'un changement de code ait eu lieu pour résoudre un document erroné."
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:127
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:130
msgid "Audit Log"
msgstr "Journal d'audit"
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:198
+msgid "Authentication Level"
+msgstr "Niveau d'authentification"
+
#: apps/web/src/app/(recipient)/d/[token]/signing-auth-page.tsx:41
#: apps/web/src/app/(signing)/sign/[token]/signing-auth-page.tsx:52
msgid "Authentication required"
@@ -590,7 +725,7 @@ msgstr "Avatar"
msgid "Avatar Updated"
msgstr "Avatar mis à jour"
-#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:121
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:127
msgid "Awaiting email confirmation"
msgstr "En attente de confirmation par e-mail"
@@ -600,7 +735,7 @@ msgstr "En attente de confirmation par e-mail"
msgid "Back"
msgstr "Retour"
-#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:109
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:164
msgid "Back to Documents"
msgstr "Retour aux documents"
@@ -625,23 +760,36 @@ msgstr "Bannière mise à jour"
msgid "Basic details"
msgstr "Détails de base"
-#: apps/web/src/app/(dashboard)/settings/billing/page.tsx:72
+#: apps/web/src/app/(dashboard)/settings/billing/page.tsx:74
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/billing/page.tsx:61
#: apps/web/src/components/(dashboard)/settings/layout/desktop-nav.tsx:117
#: apps/web/src/components/(dashboard)/settings/layout/mobile-nav.tsx:120
-#: apps/web/src/components/(teams)/settings/layout/desktop-nav.tsx:108
-#: apps/web/src/components/(teams)/settings/layout/mobile-nav.tsx:116
+#: apps/web/src/components/(teams)/settings/layout/desktop-nav.tsx:123
+#: apps/web/src/components/(teams)/settings/layout/mobile-nav.tsx:132
msgid "Billing"
msgstr "Facturation"
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/page.tsx:42
+msgid "Branding Preferences"
+msgstr "Préférences de branding"
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/branding-preferences.tsx:102
+msgid "Branding preferences updated"
+msgstr "Préférences de branding mises à jour"
+
#: apps/web/src/components/formatter/document-status.tsx:51
msgid "Bin"
msgstr ""
#: apps/web/src/app/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx:99
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/data-table.tsx:48
msgid "Browser"
msgstr "Navigateur"
+#: apps/web/src/components/document/document-recipient-link-copy-dialog.tsx:145
+msgid "Bulk Copy"
+msgstr "Copie groupée"
+
#: apps/web/src/components/(teams)/dialogs/invite-team-member-dialog.tsx:279
msgid "Bulk Import"
msgstr "Importation en masse"
@@ -654,9 +802,22 @@ msgstr "En supprimant ce document, les éléments suivants se produiront :"
msgid "By enabling 2FA, you will be required to enter a code from your authenticator app every time you sign in."
msgstr "En activant l'authentification à deux facteurs (2FA), vous devrez entrer un code provenant de votre application d'authentification chaque fois que vous vous connectez."
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:142
+msgid "By proceeding to use the electronic signature service provided by Documenso, you affirm that you have read and understood this disclosure. You agree to all terms and conditions related to the use of electronic signatures and electronic transactions as outlined herein."
+msgstr "En procédant à l'utilisation du service de signature électronique fourni par Documenso, vous affirmez avoir lu et compris cette divulgation. Vous acceptez tous les termes et conditions liés à l'utilisation des signatures électroniques et des transactions électroniques comme décrit ici."
+
+#: apps/web/src/components/general/signing-disclosure.tsx:14
+msgid "By proceeding with your electronic signature, you acknowledge and consent that it will be used to sign the given document and holds the same legal validity as a handwritten signature. By completing the electronic signing process, you affirm your understanding and acceptance of these conditions."
+msgstr "En procédant avec votre signature électronique, vous reconnaissez et consentez à ce qu'elle soit utilisée pour signer le document donné et a la même validité légale qu'une signature manuscrite. En complétant le processus de signature électronique, vous affirmez votre compréhension et votre acceptation de ces conditions."
+
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:92
+msgid "By using the electronic signature feature, you are consenting to conduct transactions and receive disclosures electronically. You acknowledge that your electronic signature on documents is binding and that you accept the terms outlined in the documents you are signing."
+msgstr "En utilisant la fonctionnalité de signature électronique, vous consentez à effectuer des transactions et à recevoir des divulgations électroniquement. Vous reconnaissez que votre signature électronique sur les documents est contraignante et que vous acceptez les termes énoncés dans les documents que vous signez."
+
#: apps/web/src/app/(dashboard)/documents/_action-items/resend-document.tsx:186
#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:190
#: apps/web/src/app/(dashboard)/documents/duplicate-document-dialog.tsx:108
+#: apps/web/src/app/(dashboard)/documents/move-document-dialog.tsx:120
#: apps/web/src/app/(dashboard)/settings/security/passkeys/create-passkey-dialog.tsx:248
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:157
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:198
@@ -664,17 +825,20 @@ msgstr "En activant l'authentification à deux facteurs (2FA), vous devrez entre
#: apps/web/src/app/(dashboard)/templates/delete-template-dialog.tsx:81
#: apps/web/src/app/(dashboard)/templates/duplicate-template-dialog.tsx:78
#: apps/web/src/app/(dashboard)/templates/move-template-dialog.tsx:119
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:470
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:472
+#: apps/web/src/app/(signing)/sign/[token]/auto-sign.tsx:220
#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-2fa.tsx:178
#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-account.tsx:71
#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-passkey.tsx:164
#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-passkey.tsx:189
-#: apps/web/src/app/(signing)/sign/[token]/form.tsx:150
+#: apps/web/src/app/(signing)/sign/[token]/form.tsx:151
+#: apps/web/src/app/(signing)/sign/[token]/form.tsx:220
#: apps/web/src/app/(signing)/sign/[token]/name-field.tsx:215
-#: apps/web/src/app/(signing)/sign/[token]/number-field.tsx:327
+#: apps/web/src/app/(signing)/sign/[token]/number-field.tsx:328
+#: apps/web/src/app/(signing)/sign/[token]/reject-document-dialog.tsx:153
#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:113
-#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:250
-#: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:333
+#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:248
+#: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:335
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/team-transfer-status.tsx:121
#: apps/web/src/components/(dashboard)/settings/token/delete-token-dialog.tsx:176
#: apps/web/src/components/(dashboard)/settings/webhooks/create-webhook-dialog.tsx:242
@@ -704,6 +868,10 @@ msgstr "Annulé par l'utilisateur"
msgid "Charts"
msgstr "Graphiques"
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/documents/page.tsx:32
+#~ msgid "Check out the documentaton for the <0>global team settings0>."
+#~ msgstr "Check out the documentaton for the <0>global team settings0>."
+
#: apps/web/src/components/(teams)/dialogs/create-team-checkout-dialog.tsx:179
msgid "Checkout"
msgstr "Passer à la caisse"
@@ -716,6 +884,10 @@ msgstr "Choisissez un destinataire existant ci-dessous pour continuer"
msgid "Choose Direct Link Recipient"
msgstr "Choisissez un destinataire pour le lien direct"
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:182
+msgid "Choose how the document will reach recipients"
+msgstr "Choisissez comment le document atteindra les destinataires"
+
#: apps/web/src/components/forms/token.tsx:200
msgid "Choose..."
msgstr "Choisissez..."
@@ -742,6 +914,7 @@ msgstr "Cliquez ici pour commencer"
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recent-activity.tsx:78
#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:118
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:68
#: apps/web/src/components/document/document-history-sheet.tsx:133
msgid "Click here to retry"
msgstr "Cliquez ici pour réessayer"
@@ -756,17 +929,18 @@ msgid "Click to copy signing link for sending to recipient"
msgstr "Cliquez pour copier le lien de signature à envoyer au destinataire"
#: apps/web/src/app/(recipient)/d/[token]/sign-direct-template.tsx:175
-#: apps/web/src/app/(signing)/sign/[token]/form.tsx:114
-#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:435
-#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:314
+#: apps/web/src/app/(signing)/sign/[token]/form.tsx:115
+#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:440
+#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:319
msgid "Click to insert field"
msgstr "Cliquez pour insérer le champ"
#: apps/web/src/app/(dashboard)/templates/new-template-dialog.tsx:126
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:304
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:389
#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-2fa.tsx:125
#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-passkey.tsx:138
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/team-transfer-status.tsx:121
+#: apps/web/src/components/document/document-recipient-link-copy-dialog.tsx:140
#: apps/web/src/components/forms/2fa/enable-authenticator-app-dialog.tsx:180
#: apps/web/src/components/forms/2fa/view-recovery-codes-dialog.tsx:102
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:319
@@ -775,8 +949,8 @@ msgid "Close"
msgstr "Fermer"
#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:61
-#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:425
-#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:304
+#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:430
+#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:309
#: apps/web/src/components/forms/v2/signup.tsx:534
msgid "Complete"
msgstr "Compléter"
@@ -793,7 +967,8 @@ msgstr "Compléter la signature"
msgid "Complete Viewing"
msgstr "Compléter la visualisation"
-#: apps/web/src/components/(dashboard)/avatar/stack-avatars-with-tooltip.tsx:62
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:208
+#: apps/web/src/components/(dashboard)/avatar/stack-avatars-with-tooltip.tsx:77
#: apps/web/src/components/formatter/document-status.tsx:28
msgid "Completed"
msgstr "Complété"
@@ -806,11 +981,11 @@ msgstr "Documents complétés"
msgid "Completed Documents"
msgstr "Documents Complétés"
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:147
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:167
msgid "Configure general settings for the document."
msgstr "Configurer les paramètres généraux pour le document."
-#: apps/web/src/app/(dashboard)/templates/[id]/edit-template.tsx:77
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:78
msgid "Configure general settings for the template."
msgstr "Configurer les paramètres généraux pour le modèle."
@@ -818,7 +993,7 @@ msgstr "Configurer les paramètres généraux pour le modèle."
msgid "Configure template"
msgstr "Configurer le modèle"
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:479
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:481
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:460
msgid "Confirm"
msgstr "Confirmer"
@@ -848,6 +1023,14 @@ msgstr "Confirmer l'email"
msgid "Confirmation email sent"
msgstr "Email de confirmation envoyé"
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:89
+msgid "Consent to Electronic Transactions"
+msgstr "Consentement aux transactions électroniques"
+
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:151
+msgid "Contact Information"
+msgstr "Coordonnées"
+
#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:189
msgid "Content"
msgstr "Contenu"
@@ -866,14 +1049,37 @@ msgstr "Continuer"
msgid "Continue to login"
msgstr "Continuer vers la connexion"
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:173
+msgid "Controls the default language of an uploaded document. This will be used as the language in email communications with the recipients."
+msgstr "Contrôle la langue par défaut d'un document téléchargé. Cela sera utilisé comme langue dans les communications par e-mail avec les destinataires."
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:141
+msgid "Controls the default visibility of an uploaded document."
+msgstr "Contrôle la visibilité par défaut d'un document téléchargé."
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:220
+msgid "Controls the formatting of the message that will be sent when inviting a recipient to sign a document. If a custom message has been provided while configuring the document, it will be used instead."
+msgstr "Contrôle le formatage du message qui sera envoyé lors de l'invitation d'un destinataire à signer un document. Si un message personnalisé a été fourni lors de la configuration du document, il sera utilisé à la place."
+
+#: apps/web/src/components/document/document-recipient-link-copy-dialog.tsx:128
+msgid "Copied"
+msgstr "Copié"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:162
#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:77
#: apps/web/src/app/(dashboard)/templates/template-direct-link-badge.tsx:31
#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:163
#: apps/web/src/components/(dashboard)/avatar/avatar-with-recipient.tsx:40
+#: apps/web/src/components/document/document-recipient-link-copy-dialog.tsx:61
+#: apps/web/src/components/document/document-recipient-link-copy-dialog.tsx:117
#: apps/web/src/components/forms/public-profile-form.tsx:117
msgid "Copied to clipboard"
msgstr "Copié dans le presse-papiers"
+#: apps/web/src/components/document/document-recipient-link-copy-dialog.tsx:123
+msgid "Copy"
+msgstr "Copier"
+
#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:169
msgid "Copy sharable link"
msgstr "Copier le lien partageable"
@@ -882,6 +1088,10 @@ msgstr "Copier le lien partageable"
msgid "Copy Shareable Link"
msgstr "Copier le lien partageable"
+#: apps/web/src/components/document/document-recipient-link-copy-dialog.tsx:83
+msgid "Copy Signing Links"
+msgstr "Copier les liens de signature"
+
#: apps/web/src/components/forms/token.tsx:288
msgid "Copy token"
msgstr "Copier le jeton"
@@ -904,15 +1114,19 @@ msgstr "Créer une équipe pour collaborer avec vos membres."
msgid "Create account"
msgstr "Créer un compte"
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:310
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:397
msgid "Create and send"
msgstr "Créer et envoyer"
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:312
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:395
msgid "Create as draft"
msgstr "Créer en tant que brouillon"
-#: apps/web/src/app/(dashboard)/templates/[id]/template-direct-link-dialog-wrapper.tsx:35
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:355
+msgid "Create as pending"
+msgstr "Créer comme en attente"
+
+#: apps/web/src/app/(dashboard)/templates/[id]/template-direct-link-dialog-wrapper.tsx:37
msgid "Create Direct Link"
msgstr "Créer un lien direct"
@@ -920,7 +1134,7 @@ msgstr "Créer un lien direct"
msgid "Create Direct Signing Link"
msgstr "Créer un lien de signature directe"
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:189
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:214
msgid "Create document from template"
msgstr "Créer un document à partir du modèle"
@@ -932,6 +1146,10 @@ msgstr "Créer maintenant"
msgid "Create one automatically"
msgstr "Créer un automatiquement"
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:399
+msgid "Create signing links"
+msgstr "Créer des liens de signature"
+
#: apps/web/src/components/(dashboard)/layout/menu-switcher.tsx:181
#: apps/web/src/components/(dashboard)/layout/menu-switcher.tsx:251
#: apps/web/src/components/(teams)/dialogs/create-team-dialog.tsx:138
@@ -943,6 +1161,10 @@ msgstr "Créer une équipe"
msgid "Create Team"
msgstr "Créer une équipe"
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:362
+msgid "Create the document as pending and ready to sign."
+msgstr "Créer le document comme en attente et prêt à signer."
+
#: apps/web/src/components/forms/token.tsx:250
#: apps/web/src/components/forms/token.tsx:259
msgid "Create token"
@@ -968,12 +1190,15 @@ msgstr "Créez votre compte et commencez à utiliser la signature de documents
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-information.tsx:35
#: apps/web/src/app/(dashboard)/documents/data-table.tsx:54
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table.tsx:65
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:109
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-information.tsx:34
#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:56
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:274
msgid "Created"
msgstr "Créé"
#: apps/web/src/app/(dashboard)/admin/subscriptions/page.tsx:35
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:111
msgid "Created At"
msgstr "Créé le"
@@ -988,19 +1213,11 @@ msgstr "Créé le"
#: apps/web/src/app/(dashboard)/settings/tokens/page.tsx:67
#: apps/web/src/app/(dashboard)/settings/webhooks/page.tsx:88
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx:100
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/page.tsx:93
msgid "Created on {0}"
msgstr "Créé le {0}"
-#: apps/web/src/app/(dashboard)/settings/webhooks/page.tsx:89
-#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/page.tsx:94
-#~ msgid "Created on <0/>"
-#~ msgstr "Created on <0/>"
-
-#: apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx:100
-msgid "Created on{0}"
-msgstr "Créé le{0}"
-
#: apps/web/src/components/forms/password.tsx:107
msgid "Current Password"
msgstr "Mot de passe actuel"
@@ -1034,16 +1251,29 @@ msgstr "Décliner"
msgid "Declined team invitation"
msgstr "Invitation d'équipe refusée"
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:141
-#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:208
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:153
+msgid "Default Document Language"
+msgstr "Langue par défaut du document"
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:117
+#: apps/web/src/components/(teams)/forms/update-team-form.tsx:195
+msgid "Default Document Visibility"
+msgstr "Visibilité par défaut du document"
+
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:90
+msgid "delete"
+msgstr "supprimer"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:144
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:189
#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:200
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:177
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:211
#: apps/web/src/app/(dashboard)/settings/tokens/page.tsx:83
#: apps/web/src/app/(dashboard)/settings/webhooks/page.tsx:100
-#: apps/web/src/app/(dashboard)/templates/data-table-action-dropdown.tsx:91
+#: apps/web/src/app/(dashboard)/templates/data-table-action-dropdown.tsx:94
#: apps/web/src/app/(dashboard)/templates/delete-template-dialog.tsx:90
-#: apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx:122
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx:116
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/page.tsx:105
#: apps/web/src/components/(dashboard)/settings/token/delete-token-dialog.tsx:121
#: apps/web/src/components/(dashboard)/settings/webhooks/delete-webhook-dialog.tsx:109
@@ -1052,6 +1282,15 @@ msgstr "Invitation d'équipe refusée"
msgid "Delete"
msgstr "Supprimer"
+#: apps/web/src/components/(dashboard)/settings/token/delete-token-dialog.tsx:56
+#: apps/web/src/components/(dashboard)/settings/webhooks/delete-webhook-dialog.tsx:54
+msgid "delete {0}"
+msgstr "supprimer {0}"
+
+#: apps/web/src/components/(teams)/dialogs/delete-team-dialog.tsx:50
+msgid "delete {teamName}"
+msgstr "supprimer {teamName}"
+
#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:137
msgid "Delete account"
msgstr "Supprimer le compte"
@@ -1078,7 +1317,7 @@ msgstr "Supprimer le document"
msgid "Delete passkey"
msgstr "Supprimer la clé d'accès"
-#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:191
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:197
#: apps/web/src/components/(teams)/dialogs/delete-team-dialog.tsx:118
msgid "Delete team"
msgstr "Supprimer l'équipe"
@@ -1104,7 +1343,7 @@ msgid "Delete your account and all its contents, including completed documents.
msgstr "Supprimez votre compte et tout son contenu, y compris les documents complétés. Cette action est irréversible et annulera votre abonnement, alors procédez avec prudence."
#: apps/web/src/app/(dashboard)/admin/documents/[id]/page.tsx:41
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-information.tsx:50
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:97
msgid "Deleted"
msgstr "Supprimé"
@@ -1112,11 +1351,12 @@ msgstr "Supprimé"
msgid "Deleting account..."
msgstr "Suppression du compte..."
-#: apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx:135
-#~ msgid "Deleting document"
-#~ msgstr "Deleting document"
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:178
+msgid "Details"
+msgstr "Détails"
#: apps/web/src/app/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx:75
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:234
msgid "Device"
msgstr "Appareil"
@@ -1125,10 +1365,16 @@ msgstr "Appareil"
msgid "direct link"
msgstr "lien direct"
-#: apps/web/src/app/(dashboard)/templates/data-table-action-dropdown.tsx:76
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:40
+#: apps/web/src/app/(dashboard)/templates/data-table-action-dropdown.tsx:79
msgid "Direct link"
msgstr "Lien direct"
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:160
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:231
+msgid "Direct Link"
+msgstr "Lien direct"
+
#: apps/web/src/app/(dashboard)/templates/template-direct-link-badge.tsx:46
msgid "direct link disabled"
msgstr "lien direct désactivé"
@@ -1184,6 +1430,10 @@ msgstr "Désactiver la signature de lien direct empêchera quiconque d'accéder
msgid "Display your name and email in documents"
msgstr "Afficher votre nom et votre email dans les documents"
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:181
+msgid "Distribute Document"
+msgstr "Distribuer le document"
+
#: apps/web/src/app/(dashboard)/templates/delete-template-dialog.tsx:63
msgid "Do you want to delete this template?"
msgstr "Voulez-vous supprimer ce modèle ?"
@@ -1197,6 +1447,7 @@ msgid "Documenso will delete <0>all of your documents0>, along with all of you
msgstr "Documenso supprimera <0>tous vos documents0>, ainsi que tous vos documents complétés, signatures, et toutes les autres ressources appartenant à votre compte."
#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-page-view.tsx:119
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:38
msgid "Document"
msgstr "Document"
@@ -1224,12 +1475,20 @@ msgstr "Document complété"
msgid "Document Completed!"
msgstr "Document Complété !"
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:142
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:156
msgid "Document created"
msgstr "Document créé"
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:129
+msgid "Document created by <0>{0}0>"
+msgstr "Document créé par <0>{0}0>"
+
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:134
+msgid "Document created using a <0>direct link0>"
+msgstr "Document créé en utilisant un <0>lien direct0>"
+
#: apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx:51
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:173
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:178
#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:59
msgid "Document deleted"
msgstr "Document supprimé"
@@ -1242,12 +1501,13 @@ msgstr "Brouillon de document"
msgid "Document Duplicated"
msgstr "Document dupliqué"
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:184
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:189
#: apps/web/src/components/document/document-history-sheet.tsx:104
msgid "Document history"
msgstr "Historique du document"
#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-page-view.tsx:71
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:81
msgid "Document ID"
msgstr "ID du document"
@@ -1255,7 +1515,7 @@ msgstr "ID du document"
msgid "Document inbox"
msgstr "Boîte de réception des documents"
-#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:178
+#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:180
msgid "Document Limit Exceeded!"
msgstr "Limite de documents dépassée !"
@@ -1275,18 +1535,30 @@ msgstr "Document non disponible pour signature"
msgid "Document pending"
msgstr "Document en attente"
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:91
+msgid "Document preferences updated"
+msgstr "Préférences de document mises à jour"
+
#: apps/web/src/app/(dashboard)/documents/_action-items/resend-document.tsx:97
msgid "Document re-sent"
msgstr "Document renvoyé"
+#: apps/web/src/app/(signing)/sign/[token]/rejected/page.tsx:83
+msgid "Document Rejected"
+msgstr "Document rejeté"
+
#: apps/web/src/app/(dashboard)/admin/documents/[id]/admin-actions.tsx:36
msgid "Document resealed"
msgstr "Document resealé"
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:298
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:327
msgid "Document sent"
msgstr "Document envoyé"
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/documents/page.tsx:26
+#~ msgid "Document Settings"
+#~ msgstr "Document Settings"
+
#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:132
msgid "Document Signed"
msgstr "Document signé"
@@ -1321,7 +1593,7 @@ msgstr "Le document sera supprimé de manière permanente"
#: apps/web/src/app/(dashboard)/admin/nav.tsx:65
#: apps/web/src/app/(dashboard)/admin/users/data-table-users.tsx:92
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:139
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:144
#: apps/web/src/app/(dashboard)/documents/[id]/edit/document-edit-page-view.tsx:109
#: apps/web/src/app/(dashboard)/documents/[id]/loading.tsx:16
#: apps/web/src/app/(dashboard)/documents/[id]/sent/page.tsx:15
@@ -1335,6 +1607,10 @@ msgstr "Le document sera supprimé de manière permanente"
msgid "Documents"
msgstr "Documents"
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view.tsx:195
+msgid "Documents created from template"
+msgstr "Documents créés à partir du modèle"
+
#: apps/web/src/app/(dashboard)/admin/stats/page.tsx:113
msgid "Documents Received"
msgstr "Documents reçus"
@@ -1349,9 +1625,9 @@ msgid "Don't have an account? <0>Sign up0>"
msgstr "Vous n'avez pas de compte? <0>Inscrivez-vous0>"
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-button.tsx:111
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:120
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:123
#: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:141
-#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:164
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:162
#: apps/web/src/components/(teams)/tables/team-billing-invoices-data-table.tsx:110
#: apps/web/src/components/forms/2fa/enable-authenticator-app-dialog.tsx:185
#: apps/web/src/components/forms/2fa/view-recovery-codes-dialog.tsx:107
@@ -1362,10 +1638,11 @@ msgstr "Télécharger"
msgid "Download Audit Logs"
msgstr "Télécharger les journaux d'audit"
-#: apps/web/src/app/(dashboard)/documents/[id]/logs/download-certificate-button.tsx:84
+#: apps/web/src/app/(dashboard)/documents/[id]/logs/download-certificate-button.tsx:86
msgid "Download Certificate"
msgstr "Télécharger le certificat"
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:214
#: apps/web/src/components/formatter/document-status.tsx:34
msgid "Draft"
msgstr "Brouillon"
@@ -1382,41 +1659,55 @@ msgstr "Documents brouillon"
msgid "Due to an unpaid invoice, your team has been restricted. Please settle the payment to restore full access to your team."
msgstr "En raison d'une facture impayée, votre équipe a été restreinte. Veuillez régler le paiement pour rétablir l'accès complet à votre équipe."
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:133
-#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:169
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:136
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:167
#: apps/web/src/app/(dashboard)/documents/duplicate-document-dialog.tsx:85
#: apps/web/src/app/(dashboard)/documents/duplicate-document-dialog.tsx:118
-#: apps/web/src/app/(dashboard)/templates/data-table-action-dropdown.tsx:71
+#: apps/web/src/app/(dashboard)/templates/data-table-action-dropdown.tsx:74
#: apps/web/src/app/(dashboard)/templates/duplicate-template-dialog.tsx:91
msgid "Duplicate"
msgstr "Dupliquer"
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-button.tsx:104
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:112
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:115
#: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:102
-#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:158
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:156
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:111
#: apps/web/src/app/(dashboard)/settings/webhooks/page.tsx:95
-#: apps/web/src/app/(dashboard)/templates/data-table-action-dropdown.tsx:62
+#: apps/web/src/app/(dashboard)/templates/data-table-action-dropdown.tsx:65
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/team-email-dropdown.tsx:77
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/page.tsx:100
msgid "Edit"
msgstr "Modifier"
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view.tsx:115
+msgid "Edit Template"
+msgstr "Modifier le modèle"
+
#: apps/web/src/app/(dashboard)/settings/webhooks/[id]/page.tsx:94
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/[id]/page.tsx:100
msgid "Edit webhook"
msgstr "Modifier le webhook"
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:78
+msgid "Electronic Delivery of Documents"
+msgstr "Remise électronique de documents"
+
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:17
+msgid "Electronic Signature Disclosure"
+msgstr "Divulgation de signature électronique"
+
#: apps/web/src/app/(dashboard)/admin/documents/[id]/recipient-item.tsx:166
#: apps/web/src/app/(dashboard)/admin/users/[id]/page.tsx:114
#: apps/web/src/app/(dashboard)/admin/users/data-table-users.tsx:71
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:213
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:220
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:265
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:272
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:122
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:129
#: apps/web/src/app/(recipient)/d/[token]/configure-direct-template.tsx:118
#: apps/web/src/app/(signing)/sign/[token]/email-field.tsx:126
-#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:376
-#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:256
+#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:377
+#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:257
#: apps/web/src/components/(teams)/dialogs/add-team-email-dialog.tsx:169
#: apps/web/src/components/(teams)/dialogs/update-team-email-dialog.tsx:153
#: apps/web/src/components/forms/forgot-password.tsx:81
@@ -1436,6 +1727,10 @@ msgstr "Adresse email"
msgid "Email Address"
msgstr "Adresse e-mail"
+#: apps/web/src/app/(recipient)/d/[token]/configure-direct-template.tsx:80
+msgid "Email cannot already exist in the template"
+msgstr "L'e-mail ne peut déjà exister dans le modèle"
+
#: apps/web/src/app/(unauthenticated)/verify-email/[token]/client.tsx:36
msgid "Email Confirmed!"
msgstr "Email confirmé !"
@@ -1461,6 +1756,10 @@ msgstr "Activer 2FA"
msgid "Enable Authenticator App"
msgstr "Activer l'application Authenticator"
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/branding-preferences.tsx:170
+msgid "Enable custom branding for all documents in this team."
+msgstr "Activer la personnalisation de la marque pour tous les documents de cette équipe."
+
#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:251
msgid "Enable direct link signing"
msgstr "Activer la signature par lien direct"
@@ -1478,10 +1777,18 @@ msgstr "Activer la signature par lien direct"
msgid "Enabled"
msgstr "Activé"
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:87
+msgid "Enclosed Document"
+msgstr "Document joint"
+
#: apps/web/src/app/(dashboard)/admin/subscriptions/page.tsx:38
msgid "Ends On"
msgstr "Se termine le"
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/branding-preferences.tsx:295
+msgid "Enter your brand details"
+msgstr "Entrez les détails de votre marque"
+
#: apps/web/src/app/(signing)/sign/[token]/complete/claim-account.tsx:137
msgid "Enter your email"
msgstr "Entrez votre email"
@@ -1494,25 +1801,26 @@ msgstr "Entrez votre adresse e-mail pour recevoir le document complété."
msgid "Enter your name"
msgstr "Entrez votre nom"
-#: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:278
+#: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:280
msgid "Enter your text here"
msgstr "Entrez votre texte ici"
#: apps/web/src/app/(dashboard)/admin/documents/[id]/admin-actions.tsx:41
#: apps/web/src/app/(dashboard)/admin/users/[id]/page.tsx:78
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:213
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:247
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:277
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:308
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:234
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:268
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:303
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:349
#: apps/web/src/app/(dashboard)/documents/move-document-dialog.tsx:57
#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:106
#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:112
-#: apps/web/src/app/(dashboard)/templates/[id]/edit-template.tsx:165
-#: apps/web/src/app/(dashboard)/templates/[id]/edit-template.tsx:196
-#: apps/web/src/app/(dashboard)/templates/[id]/edit-template.tsx:230
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:169
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:200
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:234
#: apps/web/src/app/(dashboard)/templates/duplicate-template-dialog.tsx:51
#: apps/web/src/app/(dashboard)/templates/move-template-dialog.tsx:56
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:152
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:175
+#: apps/web/src/app/(signing)/sign/[token]/auto-sign.tsx:152
#: apps/web/src/app/(signing)/sign/[token]/checkbox-field.tsx:122
#: apps/web/src/app/(signing)/sign/[token]/checkbox-field.tsx:151
#: apps/web/src/app/(signing)/sign/[token]/checkbox-field.tsx:212
@@ -1522,14 +1830,16 @@ msgstr "Entrez votre texte ici"
#: apps/web/src/app/(signing)/sign/[token]/dropdown-field.tsx:136
#: apps/web/src/app/(signing)/sign/[token]/email-field.tsx:83
#: apps/web/src/app/(signing)/sign/[token]/email-field.tsx:109
+#: apps/web/src/app/(signing)/sign/[token]/initials-field.tsx:89
+#: apps/web/src/app/(signing)/sign/[token]/initials-field.tsx:115
#: apps/web/src/app/(signing)/sign/[token]/name-field.tsx:121
#: apps/web/src/app/(signing)/sign/[token]/name-field.tsx:147
#: apps/web/src/app/(signing)/sign/[token]/number-field.tsx:149
#: apps/web/src/app/(signing)/sign/[token]/number-field.tsx:194
#: apps/web/src/app/(signing)/sign/[token]/radio-field.tsx:101
#: apps/web/src/app/(signing)/sign/[token]/radio-field.tsx:128
-#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:148
-#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:174
+#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:146
+#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:172
#: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:167
#: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:195
#: apps/web/src/components/(dashboard)/layout/verify-email-banner.tsx:54
@@ -1537,6 +1847,14 @@ msgstr "Entrez votre texte ici"
msgid "Error"
msgstr "Erreur"
+#: apps/web/src/components/forms/team-document-settings.tsx:77
+#~ msgid "Error updating global team settings"
+#~ msgstr "Error updating global team settings"
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:128
+msgid "Everyone can access and view the document"
+msgstr "Tout le monde peut accéder et voir le document"
+
#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:142
msgid "Everyone has signed"
msgstr "Tout le monde a signé"
@@ -1549,28 +1867,15 @@ msgstr "Tout le monde a signé ! Vous recevrez une copie par email du document s
msgid "Exceeded timeout"
msgstr "Délai dépassé"
-#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:114
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:120
msgid "Expired"
msgstr "Expiré"
-#: apps/web/src/app/(dashboard)/settings/tokens/page.tsx:73
-#: apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx:106
-#~ msgid "Expires on"
-#~ msgstr "Expires on"
-
#: apps/web/src/app/(dashboard)/settings/tokens/page.tsx:71
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx:104
msgid "Expires on {0}"
msgstr "Expire le {0}"
-#: apps/web/src/app/(dashboard)/settings/tokens/page.tsx:75
-#: apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx:108
-#~ msgid "Expires on <0/>"
-#~ msgstr "Expires on <0/>"
-
-#: apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx:107
-msgid "Expires on{0}"
-msgstr "Expire le{0}"
-
#: apps/web/src/app/(dashboard)/admin/documents/[id]/admin-actions.tsx:42
msgid "Failed to reseal document"
msgstr "Échec du reseal du document"
@@ -1592,28 +1897,42 @@ msgstr "Champs"
msgid "File cannot be larger than {APP_DOCUMENT_UPLOAD_SIZE_LIMIT}MB"
msgstr "Le fichier ne peut pas dépasser {APP_DOCUMENT_UPLOAD_SIZE_LIMIT} Mo"
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:154
+msgid "For any questions regarding this disclosure, electronic signatures, or any related process, please contact us at: <0>{SUPPORT_EMAIL}0>"
+msgstr "Pour toute question concernant cette divulgation, les signatures électroniques ou tout processus y afférent, veuillez nous contacter à : <0>{SUPPORT_EMAIL}0>"
+
#: apps/web/src/app/(unauthenticated)/forgot-password/page.tsx:21
#: apps/web/src/components/forms/signin.tsx:370
msgid "Forgot your password?"
msgstr "Mot de passe oublié ?"
#: apps/web/src/app/(recipient)/d/[token]/sign-direct-template.tsx:326
+#: apps/web/src/app/(signing)/sign/[token]/form.tsx:178
#: apps/web/src/app/(signing)/sign/[token]/name-field.tsx:193
-#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:361
-#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:241
+#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:362
+#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:242
#: apps/web/src/components/forms/profile.tsx:110
#: apps/web/src/components/forms/v2/signup.tsx:312
msgid "Full Name"
msgstr "Nom complet"
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:146
-#: apps/web/src/app/(dashboard)/templates/[id]/edit-template.tsx:76
-#: apps/web/src/app/(recipient)/d/[token]/direct-template.tsx:60
-#: apps/web/src/components/(teams)/settings/layout/desktop-nav.tsx:43
-#: apps/web/src/components/(teams)/settings/layout/mobile-nav.tsx:51
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:166
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:77
+#: apps/web/src/app/(recipient)/d/[token]/direct-template.tsx:62
+#: apps/web/src/components/(teams)/settings/layout/desktop-nav.tsx:44
+#: apps/web/src/components/(teams)/settings/layout/mobile-nav.tsx:52
msgid "General"
msgstr "Général"
+#: apps/web/src/components/(teams)/settings/layout/desktop-nav.tsx:57
+#: apps/web/src/components/(teams)/settings/layout/mobile-nav.tsx:65
+#~ msgid "Global Settings"
+#~ msgstr "Global Settings"
+
+#: apps/web/src/components/forms/team-document-settings.tsx:69
+#~ msgid "Global Team Settings Updated"
+#~ msgstr "Global Team Settings Updated"
+
#: apps/web/src/app/(profile)/p/[url]/not-found.tsx:30
#: apps/web/src/app/(recipient)/d/[token]/not-found.tsx:33
#: apps/web/src/app/(teams)/t/[teamUrl]/error.tsx:51
@@ -1650,6 +1969,14 @@ msgstr "Ici, vous pouvez modifier vos coordonnées personnelles."
msgid "Here you can manage your password and security settings."
msgstr "Ici, vous pouvez gérer votre mot de passe et vos paramètres de sécurité."
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/page.tsx:43
+msgid "Here you can set preferences and defaults for branding."
+msgstr "Ici, vous pouvez définir des préférences et des valeurs par défaut pour le branding."
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/page.tsx:34
+msgid "Here you can set preferences and defaults for your team."
+msgstr "Ici, vous pouvez définir des préférences et des valeurs par défaut pour votre équipe."
+
#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:206
msgid "Here's how it works:"
msgstr "Voici comment cela fonctionne :"
@@ -1658,7 +1985,7 @@ msgstr "Voici comment cela fonctionne :"
msgid "Hey I’m Timur"
msgstr "Salut, je suis Timur"
-#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:208
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:189
#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:200
#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:155
msgid "Hide"
@@ -1668,9 +1995,9 @@ msgstr "Cacher"
msgid "Hide additional information"
msgstr "Cacher des informations supplémentaires"
-#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:40
-#~ msgid "I am the owner of this document"
-#~ msgstr "I am the owner of this document"
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:43
+msgid "I am the owner of this document"
+msgstr "Je suis le propriétaire de ce document"
#: apps/web/src/components/(dashboard)/settings/token/delete-token-dialog.tsx:186
#: apps/web/src/components/(dashboard)/settings/webhooks/delete-webhook-dialog.tsx:173
@@ -1701,10 +2028,18 @@ msgstr "Boîte de réception"
msgid "Inbox documents"
msgstr "Documents de la boîte de réception"
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-information.tsx:65
+#: apps/web/src/components/forms/team-document-settings.tsx:132
+#~ msgid "Include Sender Details"
+#~ msgstr "Include Sender Details"
+
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-information.tsx:50
msgid "Information"
msgstr "Information"
+#: apps/web/src/app/(signing)/sign/[token]/initials-field.tsx:132
+msgid "Initials"
+msgstr "Initiales"
+
#: apps/web/src/app/(dashboard)/admin/documents/[id]/recipient-item.tsx:78
msgid "Inserted"
msgstr "Inséré"
@@ -1771,6 +2106,15 @@ msgstr "Invité à"
msgid "Invoice"
msgstr "Facture"
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/data-table.tsx:47
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:227
+msgid "IP Address"
+msgstr "Adresse IP"
+
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:118
+msgid "It is crucial to keep your contact information, especially your email address, up to date with us. Please notify us immediately of any changes to ensure that you continue to receive all necessary communications."
+msgstr "Il est crucial de maintenir vos coordonnées, en particulier votre adresse e-mail, à jour avec nous. Veuillez nous informer immédiatement de tout changement pour vous assurer que vous continuez à recevoir toutes les communications nécessaires."
+
#: apps/web/src/app/(profile)/p/[url]/page.tsx:134
msgid "It looks like {0} hasn't added any documents to their profile yet."
msgstr "Il semble que {0} n'ait pas encore ajouté de documents à son profil."
@@ -1808,6 +2152,7 @@ msgid "Last 7 days"
msgstr "Derniers 7 jours"
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-information.tsx:41
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-information.tsx:38
msgid "Last modified"
msgstr "Dernière modification"
@@ -1815,6 +2160,10 @@ msgstr "Dernière modification"
msgid "Last updated"
msgstr "Dernière mise à jour"
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:121
+msgid "Last Updated"
+msgstr "Dernière mise à jour"
+
#: apps/web/src/app/(dashboard)/admin/documents/[id]/page.tsx:52
msgid "Last updated at"
msgstr "Dernière mise à jour à"
@@ -1832,6 +2181,10 @@ msgstr "Quitter"
msgid "Leave team"
msgstr "Quitter l'équipe"
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:45
+msgid "Legality of Electronic Signatures"
+msgstr "Légalité des signatures électroniques"
+
#: apps/web/src/components/(dashboard)/common/command-menu.tsx:264
msgid "Light Mode"
msgstr "Mode clair"
@@ -1844,6 +2197,10 @@ msgstr "Vous voulez avoir votre propre profil public avec des accords ?"
msgid "Link template"
msgstr "Modèle de lien"
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:338
+msgid "Links Generated"
+msgstr "Liens générés"
+
#: apps/web/src/app/(dashboard)/settings/webhooks/page.tsx:79
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/page.tsx:84
msgid "Listening to {0}"
@@ -1890,11 +2247,19 @@ msgstr "Gérer le profil de {0}"
msgid "Manage all teams you are currently associated with."
msgstr "Gérer toutes les équipes avec lesquelles vous êtes actuellement associé."
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view.tsx:159
+msgid "Manage and view template"
+msgstr "Gérer et afficher le modèle"
+
+#: apps/web/src/app/(dashboard)/settings/billing/page.tsx:136
+msgid "Manage billing"
+msgstr "Gérer la facturation"
+
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:341
msgid "Manage details for this public template"
msgstr "Gérer les détails de ce modèle public"
-#: apps/web/src/app/(dashboard)/templates/[id]/template-direct-link-dialog-wrapper.tsx:33
+#: apps/web/src/app/(dashboard)/templates/[id]/template-direct-link-dialog-wrapper.tsx:35
msgid "Manage Direct Link"
msgstr "Gérer le lien direct"
@@ -1910,7 +2275,7 @@ msgstr "Gérer les clés d'accès"
msgid "Manage subscription"
msgstr "Gérer l'abonnement"
-#: apps/web/src/app/(dashboard)/settings/billing/billing-portal-button.tsx:66
+#: apps/web/src/app/(dashboard)/settings/billing/billing-portal-button.tsx:67
msgid "Manage Subscription"
msgstr "Gérer l'abonnement"
@@ -1964,12 +2329,13 @@ msgid "Member Since"
msgstr "Membre depuis"
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/members/page.tsx:31
-#: apps/web/src/components/(teams)/settings/layout/desktop-nav.tsx:71
-#: apps/web/src/components/(teams)/settings/layout/mobile-nav.tsx:79
+#: apps/web/src/components/(teams)/settings/layout/desktop-nav.tsx:86
+#: apps/web/src/components/(teams)/settings/layout/mobile-nav.tsx:95
msgid "Members"
msgstr "Membres"
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:40
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:55
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recipients.tsx:35
msgid "Modify recipients"
msgstr "Modifier les destinataires"
@@ -1985,6 +2351,7 @@ msgstr "Utilisateurs actifs mensuels : utilisateurs ayant créé au moins un doc
msgid "Monthly Active Users: Users that had at least one of their documents completed"
msgstr "Utilisateurs actifs mensuels : utilisateurs ayant terminé au moins un de leurs documents"
+#: apps/web/src/app/(dashboard)/documents/move-document-dialog.tsx:123
#: apps/web/src/app/(dashboard)/templates/move-template-dialog.tsx:122
msgid "Move"
msgstr "Déplacer"
@@ -1997,11 +2364,12 @@ msgstr "Déplacer le document vers l'équipe"
msgid "Move Template to Team"
msgstr "Déplacer le modèle vers l'équipe"
-#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:176
-#: apps/web/src/app/(dashboard)/templates/data-table-action-dropdown.tsx:82
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:174
+#: apps/web/src/app/(dashboard)/templates/data-table-action-dropdown.tsx:85
msgid "Move to Team"
msgstr "Déplacer vers l'équipe"
+#: apps/web/src/app/(dashboard)/documents/move-document-dialog.tsx:123
#: apps/web/src/app/(dashboard)/templates/move-template-dialog.tsx:122
msgid "Moving..."
msgstr "Déplacement..."
@@ -2015,8 +2383,8 @@ msgstr "Mes modèles"
#: apps/web/src/app/(dashboard)/admin/users/data-table-users.tsx:66
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:144
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table.tsx:61
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:235
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:242
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:287
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:294
#: apps/web/src/app/(signing)/sign/[token]/complete/claim-account.tsx:119
#: apps/web/src/app/(signing)/sign/[token]/name-field.tsx:170
#: apps/web/src/components/(teams)/dialogs/add-team-email-dialog.tsx:153
@@ -2046,8 +2414,8 @@ msgstr "Nouveau propriétaire d'équipe"
msgid "New Template"
msgstr "Nouveau modèle"
-#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:416
-#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:295
+#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:421
+#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:300
#: apps/web/src/components/forms/v2/signup.tsx:521
msgid "Next"
msgstr "Suivant"
@@ -2060,9 +2428,9 @@ msgstr "Champ suivant"
msgid "No active drafts"
msgstr "Pas de brouillons actifs"
-#: apps/web/src/app/(dashboard)/documents/empty-state.tsx:34
-msgid "No documents in the bin"
-msgstr ""
+#: apps/web/src/app/(signing)/sign/[token]/rejected/page.tsx:99
+msgid "No further action is required from you at this time."
+msgstr "Aucune autre action n'est requise de votre part pour le moment."
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/billing/page.tsx:42
msgid "No payment required"
@@ -2076,7 +2444,13 @@ msgstr "Aucun modèle de profil public trouvé"
msgid "No recent activity"
msgstr "Aucune activité récente"
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:55
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:103
+msgid "No recent documents"
+msgstr "Aucun document récent"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:70
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recipients.tsx:49
+#: apps/web/src/components/document/document-recipient-link-copy-dialog.tsx:96
msgid "No recipients"
msgstr "Pas de destinataires"
@@ -2114,7 +2488,7 @@ msgstr "Non pris en charge"
msgid "Nothing to do"
msgstr "Rien à faire"
-#: apps/web/src/app/(signing)/sign/[token]/number-field.tsx:270
+#: apps/web/src/app/(signing)/sign/[token]/number-field.tsx:271
msgid "Number"
msgstr "Numéro"
@@ -2148,6 +2522,14 @@ msgstr "Une fois confirmé, les éléments suivants se produiront :"
msgid "Once you have scanned the QR code or entered the code manually, enter the code provided by your authenticator app below."
msgstr "Une fois que vous avez scanné le code QR ou saisi le code manuellement, entrez le code fourni par votre application d'authentification ci-dessous."
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:134
+msgid "Only admins can access and view the document"
+msgstr "Seules les administrateurs peuvent accéder et voir le document"
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:131
+msgid "Only managers and above can access and view the document"
+msgstr "Seuls les responsables et au-dessus peuvent accéder et voir le document"
+
#: apps/web/src/app/(profile)/p/[url]/not-found.tsx:19
#: apps/web/src/app/(recipient)/d/[token]/not-found.tsx:19
#: apps/web/src/app/(teams)/t/[teamUrl]/error.tsx:37
@@ -2156,7 +2538,7 @@ msgstr "Une fois que vous avez scanné le code QR ou saisi le code manuellement,
msgid "Oops! Something went wrong."
msgstr "Oups ! Quelque chose a mal tourné."
-#: apps/web/src/components/(dashboard)/avatar/stack-avatars-with-tooltip.tsx:101
+#: apps/web/src/components/(dashboard)/avatar/stack-avatars-with-tooltip.tsx:140
msgid "Opened"
msgstr "Ouvert"
@@ -2171,12 +2553,15 @@ msgstr "Ou"
msgid "Or continue with"
msgstr "Ou continuez avec"
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:289
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:341
msgid "Otherwise, the document will be created as a draft."
msgstr "Sinon, le document sera créé sous forme de brouillon."
#: apps/web/src/app/(dashboard)/admin/documents/document-results.tsx:86
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:103
#: apps/web/src/components/(dashboard)/layout/menu-switcher.tsx:81
+#: apps/web/src/components/(teams)/tables/current-user-teams-data-table.tsx:86
+#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:109
msgid "Owner"
msgstr "Propriétaire"
@@ -2208,6 +2593,10 @@ msgstr "La clé d'accès a été mise à jour"
msgid "Passkey name"
msgstr "Nom de la clé d'accès"
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:121
+msgid "Passkey Re-Authentication"
+msgstr "Ré-authentification par clé d'accès"
+
#: apps/web/src/app/(dashboard)/settings/security/page.tsx:106
#: apps/web/src/app/(dashboard)/settings/security/passkeys/page.tsx:32
msgid "Passkeys"
@@ -2248,9 +2637,11 @@ msgstr "Un paiement est requis pour finaliser la création de votre équipe."
msgid "Payment overdue"
msgstr "Paiement en retard"
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:115
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:131
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:211
#: apps/web/src/components/(teams)/tables/teams-member-page-data-table.tsx:82
#: apps/web/src/components/(teams)/tables/user-settings-teams-page-data-table.tsx:77
+#: apps/web/src/components/document/document-read-only-fields.tsx:89
#: apps/web/src/components/formatter/document-status.tsx:22
msgid "Pending"
msgstr "En attente"
@@ -2307,11 +2698,11 @@ msgstr "Veuillez contacter le support si vous souhaitez annuler cette action."
msgid "Please enter a meaningful name for your token. This will help you identify it later."
msgstr "Veuillez entrer un nom significatif pour votre jeton. Cela vous aidera à l'identifier plus tard."
-#: apps/web/src/app/(signing)/sign/[token]/form.tsx:134
+#: apps/web/src/app/(signing)/sign/[token]/form.tsx:135
msgid "Please mark as viewed to complete"
msgstr "Veuillez marquer comme vu pour terminer"
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:457
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:459
msgid "Please note that proceeding will remove direct linking recipient and turn it into a placeholder."
msgstr "Veuillez noter que la poursuite supprimera le destinataire de lien direct et le transformera en espace réservé."
@@ -2339,6 +2730,10 @@ msgstr "Veuillez noter que cette action est irréversible. Une fois confirmée,
msgid "Please note that you will lose access to all documents associated with this team & all the members will be removed and notified"
msgstr "Veuillez noter que vous perdrez l'accès à tous les documents associés à cette équipe et que tous les membres seront supprimés et notifiés"
+#: apps/web/src/app/(signing)/sign/[token]/reject-document-dialog.tsx:37
+msgid "Please provide a reason"
+msgstr "Veuillez fournir une raison"
+
#: apps/web/src/components/forms/2fa/disable-authenticator-app-dialog.tsx:127
msgid "Please provide a token from the authenticator, or a backup code. If you do not have a backup code available, please contact support."
msgstr "Veuillez fournir un jeton de l'authentificateur, ou un code de secours. Si vous n'avez pas de code de secours disponible, veuillez contacter le support."
@@ -2347,6 +2742,10 @@ msgstr "Veuillez fournir un jeton de l'authentificateur, ou un code de secours.
msgid "Please provide a token from your authenticator, or a backup code."
msgstr "Veuillez fournir un jeton de votre authentificateur, ou un code de secours."
+#: apps/web/src/app/(signing)/sign/[token]/form.tsx:169
+msgid "Please review the document before signing."
+msgstr "Veuillez examiner le document avant de signer."
+
#: apps/web/src/components/forms/send-confirmation-email.tsx:64
msgid "Please try again and make sure you enter the correct email address."
msgstr "Veuillez réessayer et assurez-vous d'entrer la bonne adresse email."
@@ -2364,13 +2763,23 @@ msgid "Please type <0>{0}0> to confirm."
msgstr "Veuillez taper <0>{0}0> pour confirmer."
#: apps/web/src/components/(dashboard)/common/command-menu.tsx:214
+#: apps/web/src/components/(teams)/settings/layout/desktop-nav.tsx:58
+#: apps/web/src/components/(teams)/settings/layout/mobile-nav.tsx:67
msgid "Preferences"
msgstr "Préférences"
-#: apps/web/src/app/(recipient)/d/[token]/direct-template.tsx:61
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:204
+msgid "Preview"
+msgstr "Aperçu"
+
+#: apps/web/src/app/(recipient)/d/[token]/direct-template.tsx:63
msgid "Preview and configure template."
msgstr "Aperçu et configurer le modèle."
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:130
+#~ msgid "Preview: {0}"
+#~ msgstr "Preview: {0}"
+
#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:105
#: apps/web/src/components/formatter/template-type.tsx:22
msgid "Private"
@@ -2408,8 +2817,8 @@ msgstr "Public"
#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:42
#: apps/web/src/components/(dashboard)/settings/layout/desktop-nav.tsx:50
#: apps/web/src/components/(dashboard)/settings/layout/mobile-nav.tsx:53
-#: apps/web/src/components/(teams)/settings/layout/desktop-nav.tsx:57
-#: apps/web/src/components/(teams)/settings/layout/mobile-nav.tsx:65
+#: apps/web/src/components/(teams)/settings/layout/desktop-nav.tsx:72
+#: apps/web/src/components/(teams)/settings/layout/mobile-nav.tsx:81
msgid "Public Profile"
msgstr "Profil public"
@@ -2429,10 +2838,26 @@ msgstr "Les modèles publics sont connectés à votre profil public. Toute modif
msgid "Read only field"
msgstr "Champ en lecture seule"
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:90
+#: apps/web/src/components/general/signing-disclosure.tsx:21
+msgid "Read the full <0>signature disclosure0>."
+msgstr "Lisez l'intégralité de la <0>divulgation de signature0>."
+
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:106
msgid "Ready"
msgstr "Prêt"
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:281
+msgid "Reason"
+msgstr "Raison"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:146
+msgid "Reason for rejection:"
+msgstr "Raison du rejet :"
+
+#: apps/web/src/app/(signing)/sign/[token]/reject-document-dialog.tsx:38
+msgid "Reason must be less than 500 characters"
+msgstr "La raison doit contenir moins de 500 caractères"
+
#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-dialog.tsx:62
msgid "Reauthentication is required to sign this field"
msgstr "Une nouvelle authentification est requise pour signer ce champ"
@@ -2442,7 +2867,12 @@ msgstr "Une nouvelle authentification est requise pour signer ce champ"
msgid "Recent activity"
msgstr "Activité récente"
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:47
+msgid "Recent documents"
+msgstr "Documents récents"
+
#: apps/web/src/app/(dashboard)/documents/data-table.tsx:69
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:120
#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:280
msgid "Recipient"
msgstr "Destinataire"
@@ -2452,7 +2882,9 @@ msgid "Recipient updated"
msgstr "Destinataire mis à jour"
#: apps/web/src/app/(dashboard)/admin/documents/[id]/page.tsx:66
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:34
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:49
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recipients.tsx:30
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:139
msgid "Recipients"
msgstr "Destinataires"
@@ -2478,6 +2910,17 @@ msgstr "Codes de récupération"
msgid "Registration Successful"
msgstr "Inscription réussie"
+#: apps/web/src/app/(signing)/sign/[token]/reject-document-dialog.tsx:109
+#: apps/web/src/app/(signing)/sign/[token]/reject-document-dialog.tsx:116
+#: apps/web/src/app/(signing)/sign/[token]/reject-document-dialog.tsx:162
+msgid "Reject Document"
+msgstr "Rejeter le document"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:141
+#: apps/web/src/components/(dashboard)/avatar/stack-avatars-with-tooltip.tsx:101
+msgid "Rejected"
+msgstr "Rejeté"
+
#: apps/web/src/app/(unauthenticated)/forgot-password/page.tsx:34
msgid "Remembered your password? <0>Sign In0>"
msgstr "Vous vous souvenez de votre mot de passe ? <0>Connectez-vous0>"
@@ -2486,6 +2929,7 @@ msgstr "Vous vous souvenez de votre mot de passe ? <0>Connectez-vous0>"
#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:431
#: apps/web/src/app/(signing)/sign/[token]/signing-field-container.tsx:156
#: apps/web/src/app/(signing)/sign/[token]/signing-field-container.tsx:180
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/branding-preferences.tsx:250
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/team-email-dropdown.tsx:89
#: apps/web/src/components/(teams)/dialogs/remove-team-email-dialog.tsx:159
#: apps/web/src/components/(teams)/tables/pending-user-teams-data-table-actions.tsx:54
@@ -2529,7 +2973,7 @@ msgstr "Renvoyer l'e-mail de confirmation"
msgid "Resend verification"
msgstr "Renvoyer la vérification"
-#: apps/web/src/components/(teams)/forms/update-team-form.tsx:164
+#: apps/web/src/components/(teams)/forms/update-team-form.tsx:266
#: apps/web/src/components/forms/public-profile-form.tsx:267
msgid "Reset"
msgstr "Réinitialiser"
@@ -2556,6 +3000,10 @@ msgstr "Résoudre"
msgid "Resolve payment"
msgstr "Résoudre le paiement"
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:126
+msgid "Retention of Documents"
+msgstr "Conservation des documents"
+
#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-passkey.tsx:168
msgid "Retry"
msgstr "Réessayer"
@@ -2602,9 +3050,11 @@ msgstr "Rôle"
msgid "Roles"
msgstr "Rôles"
-#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:444
-#: apps/web/src/app/(signing)/sign/[token]/number-field.tsx:336
-#: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:342
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:446
+#: apps/web/src/app/(signing)/sign/[token]/number-field.tsx:337
+#: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:344
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/branding-preferences.tsx:312
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:232
msgid "Save"
msgstr "Sauvegarder"
@@ -2623,6 +3073,10 @@ msgstr "Recherche par titre de document"
msgid "Search by name or email"
msgstr "Recherche par nom ou e-mail"
+#: apps/web/src/components/(dashboard)/document-search/document-search.tsx:42
+msgid "Search documents..."
+msgstr "Rechercher des documents..."
+
#: apps/web/src/app/(dashboard)/settings/webhooks/[id]/page.tsx:189
#: apps/web/src/components/(dashboard)/settings/webhooks/create-webhook-dialog.tsx:217
msgid "Secret"
@@ -2671,10 +3125,15 @@ msgstr "Sélectionner la clé d'authentification"
msgid "Send confirmation email"
msgstr "Envoyer l'e-mail de confirmation"
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:273
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:326
msgid "Send document"
msgstr "Envoyer le document"
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:188
+#: apps/web/src/components/(teams)/forms/update-team-form.tsx:220
+msgid "Send on Behalf of Team"
+msgstr "Envoyer au nom de l'équipe"
+
#: apps/web/src/app/(dashboard)/documents/_action-items/resend-document.tsx:191
msgid "Send reminder"
msgstr "Envoyer un rappel"
@@ -2691,7 +3150,8 @@ msgstr "Envoi de l'e-mail de réinitialisation..."
msgid "Sending..."
msgstr "Envoi..."
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:85
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:101
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:248
msgid "Sent"
msgstr "Envoyé"
@@ -2710,13 +3170,13 @@ msgstr "Paramètres"
msgid "Setup"
msgstr "Configuration"
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:145
-#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:212
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:148
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:193
msgid "Share"
msgstr "Partager"
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:161
-#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:224
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:179
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:219
msgid "Share Signing Card"
msgstr "Partager la carte de signature"
@@ -2738,34 +3198,35 @@ msgstr "Afficher des modèles dans le profil public de votre équipe pour que vo
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-button.tsx:83
#: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:114
-#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:141
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:139
#: apps/web/src/app/(profile)/p/[url]/page.tsx:192
+#: apps/web/src/app/(signing)/sign/[token]/auto-sign.tsx:229
#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-2fa.tsx:182
#: apps/web/src/app/(signing)/sign/[token]/name-field.tsx:224
#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:124
-#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:259
+#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:256
#: apps/web/src/components/ui/user-profile-skeleton.tsx:75
#: apps/web/src/components/ui/user-profile-timur.tsx:81
msgid "Sign"
msgstr "Signer"
-#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:219
+#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:217
msgid "Sign as {0} <0>({1})0>"
msgstr "Signer comme {0} <0>({1})0>"
-#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:219
-#~ msgid "Sign as <0>{0} <1>({1})1>0>"
-#~ msgstr "Sign as <0>{0} <1>({1})1>0>"
-
#: apps/web/src/app/(signing)/sign/[token]/name-field.tsx:183
msgid "Sign as<0>{0} <1>({1})1>0>"
msgstr "Signer comme<0>{0} <1>({1})1>0>"
-#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:329
-#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:209
+#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:330
+#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:210
msgid "Sign document"
msgstr "Signer le document"
+#: apps/web/src/app/(signing)/sign/[token]/form.tsx:128
+msgid "Sign Document"
+msgstr "Signer le document"
+
#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-dialog.tsx:59
msgid "Sign field"
msgstr "Champ de signature"
@@ -2790,8 +3251,8 @@ msgstr "Connectez-vous à votre compte"
msgid "Sign Out"
msgstr "Déconnexion"
-#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:350
-#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:230
+#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:351
+#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:231
msgid "Sign the document to complete the process."
msgstr "Signez le document pour terminer le processus."
@@ -2814,15 +3275,21 @@ msgid "Sign Up with OIDC"
msgstr "S'inscrire avec OIDC"
#: apps/web/src/app/(dashboard)/admin/documents/[id]/recipient-item.tsx:88
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:177
#: apps/web/src/app/(recipient)/d/[token]/sign-direct-template.tsx:338
-#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:197
-#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:227
-#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:391
-#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:270
+#: apps/web/src/app/(signing)/sign/[token]/form.tsx:192
+#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:195
+#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:225
+#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:392
+#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:271
#: apps/web/src/components/forms/profile.tsx:132
msgid "Signature"
msgstr "Signature"
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:220
+msgid "Signature ID"
+msgstr "ID de signature"
+
#: apps/web/src/app/(dashboard)/admin/stats/page.tsx:123
msgid "Signatures Collected"
msgstr "Signatures collectées"
@@ -2831,15 +3298,38 @@ msgstr "Signatures collectées"
msgid "Signatures will appear once the document has been completed"
msgstr "Les signatures apparaîtront une fois le document complété"
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:98
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:114
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:270
+#: apps/web/src/components/document/document-read-only-fields.tsx:84
msgid "Signed"
msgstr "Signé"
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:176
+msgid "Signer Events"
+msgstr "Événements de signataire"
+
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:168
+msgid "Signing Certificate"
+msgstr "Certificat de signature"
+
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:303
+msgid "Signing certificate provided by"
+msgstr "Certificat de signature fourni par"
+
#: apps/web/src/components/forms/signin.tsx:383
#: apps/web/src/components/forms/signin.tsx:510
msgid "Signing in..."
msgstr "Connexion en cours..."
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:160
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:203
+msgid "Signing Links"
+msgstr "Liens de signature"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:339
+msgid "Signing links have been generated for this document."
+msgstr "Des liens de signature ont été générés pour ce document."
+
#: apps/web/src/components/forms/signup.tsx:235
msgid "Signing up..."
msgstr "Inscription en cours..."
@@ -2859,15 +3349,15 @@ msgstr "Paramètres du site"
#: apps/web/src/app/(dashboard)/documents/_action-items/resend-document.tsx:105
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-button.tsx:63
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:88
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:91
#: apps/web/src/app/(dashboard)/documents/[id]/logs/download-audit-log-button.tsx:65
-#: apps/web/src/app/(dashboard)/documents/[id]/logs/download-certificate-button.tsx:66
+#: apps/web/src/app/(dashboard)/documents/[id]/logs/download-certificate-button.tsx:68
#: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:75
-#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:108
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:106
#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:80
#: apps/web/src/app/(dashboard)/documents/duplicate-document-dialog.tsx:72
#: apps/web/src/app/(dashboard)/settings/billing/billing-plans.tsx:62
-#: apps/web/src/app/(dashboard)/settings/billing/billing-portal-button.tsx:50
+#: apps/web/src/app/(dashboard)/settings/billing/billing-portal-button.tsx:51
#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:124
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:73
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:93
@@ -2879,10 +3369,11 @@ msgstr "Paramètres du site"
#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:104
#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:127
#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:151
-#: apps/web/src/app/(recipient)/d/[token]/direct-template.tsx:117
+#: apps/web/src/app/(recipient)/d/[token]/direct-template.tsx:118
#: apps/web/src/app/(recipient)/d/[token]/signing-auth-page.tsx:27
#: apps/web/src/app/(signing)/sign/[token]/signing-auth-page.tsx:38
#: apps/web/src/app/(teams)/t/[teamUrl]/layout-billing-banner.tsx:53
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/branding-preferences.tsx:107
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/team-email-dropdown.tsx:39
#: apps/web/src/app/(unauthenticated)/verify-email/[token]/page.tsx:61
#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:243
@@ -2919,6 +3410,10 @@ msgstr "Quelque chose a mal tourné lors de l'envoi de l'e-mail de confirmation.
msgid "Something went wrong while updating the team billing subscription, please contact support."
msgstr "Quelque chose a mal tourné lors de la mise à jour de l'abonnement de l'équipe, veuillez contacter le support."
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:96
+msgid "Something went wrong!"
+msgstr "Quelque chose a mal tourné !"
+
#: apps/web/src/app/(dashboard)/settings/security/passkeys/create-passkey-dialog.tsx:240
#: apps/web/src/components/forms/2fa/view-recovery-codes-dialog.tsx:154
msgid "Something went wrong. Please try again or contact support."
@@ -2928,10 +3423,14 @@ msgstr "Quelque chose a mal tourné. Veuillez réessayer ou contacter le support
msgid "Sorry, we were unable to download the audit logs. Please try again later."
msgstr "Désolé, nous n'avons pas pu télécharger les journaux d'audit. Veuillez réessayer plus tard."
-#: apps/web/src/app/(dashboard)/documents/[id]/logs/download-certificate-button.tsx:68
+#: apps/web/src/app/(dashboard)/documents/[id]/logs/download-certificate-button.tsx:70
msgid "Sorry, we were unable to download the certificate. Please try again later."
msgstr "Désolé, nous n'avons pas pu télécharger le certificat. Veuillez réessayer plus tard."
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:138
+msgid "Source"
+msgstr "Source"
+
#: apps/web/src/app/(dashboard)/admin/nav.tsx:37
msgid "Stats"
msgstr "Statistiques"
@@ -2939,11 +3438,13 @@ msgstr "Statistiques"
#: apps/web/src/app/(dashboard)/admin/documents/document-results.tsx:81
#: apps/web/src/app/(dashboard)/admin/subscriptions/page.tsx:32
#: apps/web/src/app/(dashboard)/documents/data-table.tsx:79
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:130
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:93
#: apps/web/src/components/(teams)/tables/team-billing-invoices-data-table.tsx:73
msgid "Status"
msgstr "Statut"
-#: apps/web/src/app/(dashboard)/settings/billing/billing-plans.tsx:128
+#: apps/web/src/app/(dashboard)/settings/billing/billing-plans.tsx:129
msgid "Subscribe"
msgstr "S'abonner"
@@ -2977,7 +3478,7 @@ msgstr "Abonnements"
#: apps/web/src/components/(teams)/dialogs/transfer-team-dialog.tsx:108
#: apps/web/src/components/(teams)/dialogs/update-team-email-dialog.tsx:79
#: apps/web/src/components/(teams)/dialogs/update-team-member-dialog.tsx:92
-#: apps/web/src/components/(teams)/forms/update-team-form.tsx:68
+#: apps/web/src/components/(teams)/forms/update-team-form.tsx:106
#: apps/web/src/components/(teams)/tables/pending-user-teams-data-table-actions.tsx:27
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:62
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:79
@@ -2991,6 +3492,10 @@ msgstr "Succès"
msgid "Successfully created passkey"
msgstr "Clé d'authentification créée avec succès"
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:57
+msgid "System Requirements"
+msgstr "Exigences du système"
+
#: apps/web/src/components/(dashboard)/common/command-menu.tsx:266
msgid "System Theme"
msgstr "Thème système"
@@ -3004,8 +3509,8 @@ msgstr "Équipe"
msgid "Team checkout"
msgstr "Vérification de l'équipe"
-#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:61
-#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:140
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:67
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:146
msgid "Team email"
msgstr "Adresse e-mail de l'équipe"
@@ -3048,7 +3553,7 @@ msgid "Team Member"
msgstr "Membre de l'équipe"
#: apps/web/src/components/(teams)/dialogs/create-team-dialog.tsx:166
-#: apps/web/src/components/(teams)/forms/update-team-form.tsx:113
+#: apps/web/src/components/(teams)/forms/update-team-form.tsx:153
msgid "Team Name"
msgstr "Nom de l'équipe"
@@ -3072,6 +3577,10 @@ msgstr "Le transfert de propriété de l'équipe a déjà été effectué !"
msgid "Team ownership transferred!"
msgstr "Propriété de l'équipe transférée !"
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/page.tsx:33
+msgid "Team Preferences"
+msgstr "Préférences de l'équipe"
+
#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:49
msgid "Team Public Profile"
msgstr "Profil public de l'équipe"
@@ -3097,7 +3606,7 @@ msgid "Team transfer request expired"
msgstr "Demande de transfert d'équipe expirée"
#: apps/web/src/components/(teams)/dialogs/create-team-dialog.tsx:196
-#: apps/web/src/components/(teams)/forms/update-team-form.tsx:129
+#: apps/web/src/components/(teams)/forms/update-team-form.tsx:169
msgid "Team URL"
msgstr "URL de l'équipe"
@@ -3113,6 +3622,11 @@ msgstr "Équipes"
msgid "Teams restricted"
msgstr "Équipes restreintes"
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/template-edit-page-view.tsx:63
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:39
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:148
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:228
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view.tsx:146
#: apps/web/src/components/(teams)/dialogs/invite-team-member-dialog.tsx:408
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:271
msgid "Template"
@@ -3142,11 +3656,11 @@ msgstr "Le modèle a été mis à jour."
msgid "Template moved"
msgstr "Modèle déplacé"
-#: apps/web/src/app/(dashboard)/templates/[id]/edit-template.tsx:219
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:223
msgid "Template saved"
msgstr "Modèle enregistré"
-#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view.tsx:60
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view.tsx:87
#: apps/web/src/app/(dashboard)/templates/templates-page-view.tsx:55
#: apps/web/src/components/(dashboard)/common/command-menu.tsx:208
#: apps/web/src/components/(dashboard)/layout/desktop-nav.tsx:22
@@ -3158,8 +3672,8 @@ msgstr "Modèles"
msgid "Templates allow you to quickly generate documents with pre-filled recipients and fields."
msgstr "Les modèles vous permettent de générer rapidement des documents avec des destinataires et des champs pré-remplis."
-#: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:256
-#: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:272
+#: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:257
+#: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:274
msgid "Text"
msgstr "Texte"
@@ -3167,6 +3681,10 @@ msgstr "Texte"
msgid "Text Color"
msgstr "Couleur du texte"
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:24
+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."
+msgstr "Merci d'utiliser Documenso pour signer vos documents électroniquement. L'objectif de cette divulgation est de vous informer sur le processus, la légalité et vos droits concernant l'utilisation des signatures électroniques sur notre plateforme. En choisissant d'utiliser une signature électronique, vous acceptez les termes et conditions énoncés ci-dessous."
+
#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:52
msgid "The account has been deleted successfully."
msgstr "Le compte a été supprimé avec succès."
@@ -3189,7 +3707,11 @@ msgstr "Le document a été déplacé avec succès vers l'équipe sélectionnée
msgid "The document is now completed, please follow any instructions provided within the parent application."
msgstr "Le document est maintenant complet, veuillez suivre toutes les instructions fournies dans l'application parente."
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:159
+#: apps/web/src/app/(signing)/sign/[token]/rejected/page.tsx:92
+msgid "The document owner has been notified of your decision. They may contact you with further instructions if necessary."
+msgstr "Le propriétaire du document a été informé de votre décision. Il peut vous contacter pour des instructions supplémentaires si nécessaire."
+
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:182
msgid "The document was created but could not be sent to recipients."
msgstr "Le document a été créé mais n'a pas pu être envoyé aux destinataires."
@@ -3197,7 +3719,7 @@ msgstr "Le document a été créé mais n'a pas pu être envoyé aux destinatair
msgid "The document will be hidden from your account"
msgstr "Le document sera caché de votre compte"
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:281
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:334
msgid "The document will be immediately sent to recipients if this is checked."
msgstr "Le document sera immédiatement envoyé aux destinataires si cela est coché."
@@ -3207,6 +3729,10 @@ msgstr "Le document sera immédiatement envoyé aux destinataires si cela est co
msgid "The events that will trigger a webhook to be sent to your URL."
msgstr "Les événements qui déclencheront un webhook à envoyer à votre URL."
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/documents/page.tsx:27
+#~ msgid "The global settings for the documents in your team account."
+#~ msgstr "The global settings for the documents in your team account."
+
#: apps/web/src/app/(unauthenticated)/team/verify/transfer/[token]/page.tsx:114
msgid "The ownership of team <0>{0}0> has been successfully transferred to you."
msgstr "La propriété de l'équipe <0>{0}0> a été transférée avec succès à vous."
@@ -3239,7 +3765,9 @@ msgstr "Le destinataire a été mis à jour avec succès"
msgid "The selected team member will receive an email which they must accept before the team is transferred"
msgstr "Le membre d'équipe sélectionné recevra un e-mail qu'il devra accepter avant que l'équipe soit transférée"
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:163
#: apps/web/src/components/(dashboard)/avatar/avatar-with-recipient.tsx:41
+#: apps/web/src/components/document/document-recipient-link-copy-dialog.tsx:118
msgid "The signing link has been copied to your clipboard."
msgstr "Le lien de signature a été copié dans votre presse-papiers."
@@ -3344,14 +3872,22 @@ msgstr "Ce document a été annulé par le propriétaire et n'est plus disponibl
msgid "This document has been cancelled by the owner."
msgstr "Ce document a été annulé par le propriétaire."
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:219
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:224
msgid "This document has been signed by all recipients"
msgstr "Ce document a été signé par tous les destinataires"
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:222
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:227
msgid "This document is currently a draft and has not been sent"
msgstr "Ce document est actuellement un brouillon et n'a pas été envoyé"
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:152
+msgid "This document was created by you or a team member using the template above."
+msgstr "Ce document a été créé par vous ou un membre de l'équipe en utilisant le modèle ci-dessus."
+
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:164
+msgid "This document was created using a direct link."
+msgstr "Ce document a été créé en utilisant un lien direct."
+
#: apps/web/src/components/(teams)/dialogs/add-team-email-dialog.tsx:93
msgid "This email is already being used by another team."
msgstr "Cet e-mail est déjà utilisé par une autre équipe."
@@ -3380,7 +3916,7 @@ msgstr "Ce prix inclut un minimum de 5 sièges."
msgid "This session has expired. Please try again."
msgstr "Cette session a expiré. Veuillez réessayer."
-#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:195
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:201
msgid "This team, and any associated data excluding billing invoices will be permanently deleted."
msgstr "Cette équipe, et toutes les données associées à l'exception des factures de facturation, seront définitivement supprimées."
@@ -3397,7 +3933,7 @@ msgid "This token is invalid or has expired. Please contact your team for a new
msgstr "Ce jeton est invalide ou a expiré. Veuillez contacter votre équipe pour une nouvelle invitation."
#: apps/web/src/components/(teams)/dialogs/create-team-dialog.tsx:98
-#: apps/web/src/components/(teams)/forms/update-team-form.tsx:87
+#: apps/web/src/components/(teams)/forms/update-team-form.tsx:127
msgid "This URL is already in use."
msgstr "Cette URL est déjà utilisée."
@@ -3409,7 +3945,8 @@ msgstr "Ce nom d'utilisateur a déjà été pris"
msgid "This username is already taken"
msgstr "Ce nom d'utilisateur est déjà pris"
-#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-data-table.tsx:77
+#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-data-table.tsx:73
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/data-table.tsx:44
msgid "Time"
msgstr "Temps"
@@ -3417,8 +3954,13 @@ msgstr "Temps"
msgid "Time zone"
msgstr "Fuseau horaire"
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:131
+msgid "Time Zone"
+msgstr "Fuseau horaire"
+
#: apps/web/src/app/(dashboard)/admin/documents/document-results.tsx:67
#: apps/web/src/app/(dashboard)/documents/data-table.tsx:60
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:115
#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:61
msgid "Title"
msgstr "Titre"
@@ -3455,6 +3997,10 @@ msgstr "Pour accéder à votre compte, veuillez confirmer votre adresse e-mail e
msgid "To mark this document as viewed, you need to be logged in as <0>{0}0>"
msgstr "Pour marquer ce document comme consulté, vous devez être connecté en tant que <0>{0}0>"
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:60
+msgid "To use our electronic signature service, you must have access to:"
+msgstr "Pour utiliser notre service de signature électronique, vous devez avoir accès à :"
+
#: apps/web/src/app/embed/authenticate.tsx:21
msgid "To view this document you need to be signed into your account, please sign in to continue."
msgstr "Pour afficher ce document, vous devez être connecté à votre compte, veuillez vous connecter pour continuer."
@@ -3484,7 +4030,7 @@ msgid "Token deleted"
msgstr "Jeton supprimé"
#: apps/web/src/app/(dashboard)/settings/tokens/page.tsx:75
-#: apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx:114
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx:108
msgid "Token doesn't have an expiration date"
msgstr "Le jeton n'a pas de date d'expiration"
@@ -3512,17 +4058,21 @@ msgstr "Total des signataires qui se sont inscrits"
msgid "Total Users"
msgstr "Total des utilisateurs"
+#: apps/web/src/components/(teams)/dialogs/transfer-team-dialog.tsx:76
+msgid "transfer {teamName}"
+msgstr "transférer {teamName}"
+
#: apps/web/src/components/(teams)/dialogs/transfer-team-dialog.tsx:160
msgid "Transfer ownership of this team to a selected team member."
msgstr "Transférer la propriété de cette équipe à un membre d'équipe sélectionné."
-#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:169
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:175
#: apps/web/src/components/(teams)/dialogs/transfer-team-dialog.tsx:147
#: apps/web/src/components/(teams)/dialogs/transfer-team-dialog.tsx:156
msgid "Transfer team"
msgstr "Transférer l'équipe"
-#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:173
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:179
msgid "Transfer the ownership of the team to another team member."
msgstr "Transférer la propriété de l'équipe à un autre membre de l'équipe."
@@ -3556,6 +4106,10 @@ msgstr "Authentification à deux facteurs activée"
msgid "Two-factor authentication has been disabled for your account. You will no longer be required to enter a code from your authenticator app when signing in."
msgstr "L'authentification à deux facteurs a été désactivée pour votre compte. Vous ne serez plus tenu d'entrer un code de votre application d'authentification lors de la connexion."
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:120
+msgid "Two-Factor Re-Authentication"
+msgstr "Ré-authentification à deux facteurs"
+
#: apps/web/src/app/(dashboard)/admin/documents/[id]/recipient-item.tsx:73
#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:67
msgid "Type"
@@ -3614,6 +4168,10 @@ msgstr "Impossible de rejoindre cette équipe pour le moment."
msgid "Unable to load document history"
msgstr "Impossible de charger l'historique des documents"
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:62
+msgid "Unable to load documents"
+msgstr "Impossible de charger les documents"
+
#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:111
msgid "Unable to load your public profile templates at this time"
msgstr "Impossible de charger vos modèles de profil public pour le moment"
@@ -3653,10 +4211,17 @@ msgstr "Impossible de se connecter"
msgid "Unauthorized"
msgstr "Non autorisé"
-#: apps/web/src/components/(dashboard)/avatar/stack-avatars-with-tooltip.tsx:116
+#: apps/web/src/components/(dashboard)/avatar/stack-avatars-with-tooltip.tsx:155
msgid "Uncompleted"
msgstr "Non complet"
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:229
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:254
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:265
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:276
+msgid "Unknown"
+msgstr "Inconnu"
+
#: apps/web/src/app/(teams)/t/[teamUrl]/error.tsx:23
msgid "Unknown error"
msgstr "Erreur inconnue"
@@ -3698,7 +4263,7 @@ msgstr "Mettre à jour le destinataire"
msgid "Update role"
msgstr "Mettre à jour le rôle"
-#: apps/web/src/components/(teams)/forms/update-team-form.tsx:176
+#: apps/web/src/components/(teams)/forms/update-team-form.tsx:278
msgid "Update team"
msgstr "Mettre à jour l'équipe"
@@ -3729,11 +4294,20 @@ msgstr "Mise à jour du mot de passe..."
msgid "Updating profile..."
msgstr "Mise à jour du profil..."
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:115
+msgid "Updating Your Information"
+msgstr "Mise à jour de vos informations"
+
#: apps/web/src/components/forms/avatar-image.tsx:182
msgid "Upload Avatar"
msgstr "Télécharger un avatar"
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/branding-preferences.tsx:256
+msgid "Upload your brand logo (max 5MB, JPG, PNG, or WebP)"
+msgstr "Téléchargez votre logo de marque (max 5 Mo, JPG, PNG ou WebP)"
+
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-information.tsx:31
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-information.tsx:30
msgid "Uploaded by"
msgstr "Téléversé par"
@@ -3749,6 +4323,10 @@ msgstr "Le fichier téléchargé est trop petit"
msgid "Uploaded file not an allowed file type"
msgstr "Le fichier téléchargé n'est pas un type de fichier autorisé"
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view.tsx:170
+msgid "Use"
+msgstr "Utiliser"
+
#: apps/web/src/components/forms/2fa/disable-authenticator-app-dialog.tsx:187
#: apps/web/src/components/forms/signin.tsx:505
msgid "Use Authenticator"
@@ -3759,11 +4337,12 @@ msgstr "Utiliser l'authentificateur"
msgid "Use Backup Code"
msgstr "Utiliser le code de secours"
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:183
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:207
msgid "Use Template"
msgstr "Utiliser le modèle"
-#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-data-table.tsx:82
+#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-data-table.tsx:78
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/data-table.tsx:45
msgid "User"
msgstr "Utilisateur"
@@ -3811,10 +4390,14 @@ msgstr "Vérifiez votre adresse e-mail pour débloquer toutes les fonctionnalit
msgid "Verify your email to upload documents."
msgstr "Vérifiez votre e-mail pour télécharger des documents."
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:75
+msgid "Version History"
+msgstr "Historique des versions"
+
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-button.tsx:95
#: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:126
#: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:135
-#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:134
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:132
#: apps/web/src/components/(teams)/tables/team-billing-invoices-data-table.tsx:100
#: apps/web/src/components/forms/2fa/view-recovery-codes-dialog.tsx:168
msgid "View"
@@ -3832,6 +4415,10 @@ msgstr "Voir tous les documents envoyés à votre compte"
msgid "View all recent security activity related to your account."
msgstr "Voir toute l'activité de sécurité récente liée à votre compte."
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:157
+msgid "View all related documents"
+msgstr "Voir tous les documents associés"
+
#: apps/web/src/app/(dashboard)/settings/security/activity/page.tsx:26
msgid "View all security activity related to your account."
msgstr "Voir toute l'activité de sécurité liée à votre compte."
@@ -3840,7 +4427,11 @@ msgstr "Voir toute l'activité de sécurité liée à votre compte."
msgid "View Codes"
msgstr "Voir les codes"
-#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:150
+#: apps/web/src/app/(signing)/sign/[token]/form.tsx:127
+msgid "View Document"
+msgstr "Voir le document"
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:156
msgid "View documents associated with this email"
msgstr "Voir les documents associés à cet e-mail"
@@ -3848,6 +4439,10 @@ msgstr "Voir les documents associés à cet e-mail"
msgid "View invites"
msgstr "Voir les invitations"
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:95
+msgid "View more"
+msgstr "Voir plus"
+
#: apps/web/src/app/(signing)/sign/[token]/complete/document-preview-button.tsx:34
msgid "View Original Document"
msgstr "Voir le document original"
@@ -3861,11 +4456,12 @@ msgstr "Voir les codes de récupération"
msgid "View teams"
msgstr "Voir les équipes"
-#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:104
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:120
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:259
msgid "Viewed"
msgstr "Vu"
-#: apps/web/src/components/(dashboard)/avatar/stack-avatars-with-tooltip.tsx:86
+#: apps/web/src/components/(dashboard)/avatar/stack-avatars-with-tooltip.tsx:125
msgid "Waiting"
msgstr "En attente"
@@ -3885,7 +4481,7 @@ msgstr "Vous voulez envoyer des liens de signature élégants comme celui-ci ? <
msgid "Want your own public profile?"
msgstr "Vous voulez votre propre profil public ?"
-#: apps/web/src/app/(dashboard)/settings/billing/billing-portal-button.tsx:40
+#: apps/web/src/app/(dashboard)/settings/billing/billing-portal-button.tsx:41
#: apps/web/src/app/(teams)/t/[teamUrl]/layout-billing-banner.tsx:55
#: apps/web/src/components/(teams)/team-billing-portal-button.tsx:31
msgid "We are unable to proceed to the billing portal at this time. Please try again, or contact support."
@@ -4021,7 +4617,7 @@ msgstr "Une erreur inconnue s'est produite lors de la mise à jour de votre mot
msgid "We encountered an unknown error while attempting to update your public profile. Please try again later."
msgstr "Une erreur inconnue s'est produite lors de la mise à jour de votre profil public. Veuillez réessayer plus tard."
-#: apps/web/src/components/(teams)/forms/update-team-form.tsx:96
+#: apps/web/src/components/(teams)/forms/update-team-form.tsx:136
msgid "We encountered an unknown error while attempting to update your team. Please try again later."
msgstr "Une erreur inconnue s'est produite lors de la mise à jour de votre équipe. Veuillez réessayer plus tard."
@@ -4063,12 +4659,20 @@ msgstr "Nous n'avons pas pu définir votre profil public comme public. Veuillez
msgid "We were unable to setup two-factor authentication for your account. Please ensure that you have entered your code correctly and try again."
msgstr "Nous n'avons pas pu configurer l'authentification à deux facteurs pour votre compte. Veuillez vous assurer que vous avez correctement entré votre code et réessayez."
-#: apps/web/src/app/(recipient)/d/[token]/direct-template.tsx:119
+#: apps/web/src/app/(recipient)/d/[token]/direct-template.tsx:120
#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:245
#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:127
msgid "We were unable to submit this document at this time. Please try again later."
msgstr "Nous n'avons pas pu soumettre ce document pour le moment. Veuillez réessayer plus tard."
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/branding-preferences.tsx:109
+msgid "We were unable to update your branding preferences at this time, please try again later"
+msgstr "Nous n'avons pas pu mettre à jour vos préférences de branding pour le moment, veuillez réessayer plus tard"
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:98
+msgid "We were unable to update your document preferences at this time, please try again later"
+msgstr "Nous n'avons pas pu mettre à jour vos préférences de document pour le moment, veuillez réessayer plus tard"
+
#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-2fa.tsx:169
msgid "We were unable to verify your details. Please try again or contact support"
msgstr "Nous n'avons pas pu vérifier vos détails. Veuillez réessayer ou contacter le support"
@@ -4077,6 +4681,14 @@ msgstr "Nous n'avons pas pu vérifier vos détails. Veuillez réessayer ou conta
msgid "We were unable to verify your email. If your email is not verified already, please try again."
msgstr "Nous n'avons pas pu vérifier votre e-mail. Si votre e-mail n'est pas déjà vérifié, veuillez réessayer."
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:370
+msgid "We will generate signing links for you, which you can send to the recipients through your method of choice."
+msgstr "Nous allons générer des liens de signature pour vous, que vous pouvez envoyer aux destinataires par votre méthode de choix."
+
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:366
+msgid "We won't send anything to notify recipients."
+msgstr "Nous n'enverrons rien pour notifier les destinataires."
+
#: apps/web/src/app/(dashboard)/documents/empty-state.tsx:29
#: apps/web/src/app/(dashboard)/templates/empty-state.tsx:11
msgid "We're all empty"
@@ -4108,8 +4720,8 @@ msgstr "URL du webhook"
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/page.tsx:33
#: apps/web/src/components/(dashboard)/settings/layout/desktop-nav.tsx:103
#: apps/web/src/components/(dashboard)/settings/layout/mobile-nav.tsx:106
-#: apps/web/src/components/(teams)/settings/layout/desktop-nav.tsx:94
-#: apps/web/src/components/(teams)/settings/layout/mobile-nav.tsx:102
+#: apps/web/src/components/(teams)/settings/layout/desktop-nav.tsx:109
+#: apps/web/src/components/(teams)/settings/layout/mobile-nav.tsx:118
msgid "Webhooks"
msgstr "Webhooks"
@@ -4117,6 +4729,10 @@ msgstr "Webhooks"
msgid "Weekly"
msgstr "Hebdomadaire"
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:21
+msgid "Welcome"
+msgstr "Bienvenue"
+
#: apps/web/src/app/(unauthenticated)/signin/page.tsx:33
msgid "Welcome back, we are lucky to have you."
msgstr "Contentieux, nous avons de la chance de vous avoir."
@@ -4129,6 +4745,14 @@ msgstr "Essayiez-vous d'éditer ce document à la place ?"
msgid "When you click continue, you will be prompted to add the first available authenticator on your system."
msgstr "Lorsque vous cliquez sur continuer, vous serez invité à ajouter le premier authentificateur disponible sur votre système."
+#: apps/web/src/app/(signing)/sign/[token]/auto-sign.tsx:183
+msgid "When you sign a document, we can automatically fill in and sign the following fields using information that has already been provided. You can also manually sign or remove any automatically signed fields afterwards if you desire."
+msgstr "Lorsque vous signez un document, nous pouvons automatiquement remplir et signer les champs suivants à l'aide des informations déjà fournies. Vous pouvez également signer manuellement ou supprimer les champs signés automatiquement par la suite si vous le souhaitez."
+
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:36
+msgid "When you use our platform to affix your electronic signature to documents, you are consenting to do so under the Electronic Signatures in Global and National Commerce Act (E-Sign Act) and other applicable laws. This action indicates your agreement to use electronic means to sign documents and receive notifications."
+msgstr "Lorsque vous utilisez notre plateforme pour apposer votre signature électronique sur des documents, vous consentez à le faire conformément à la loi sur les signatures électroniques dans le commerce mondial et national (E-Sign Act) et aux autres lois applicables. Cette action indique votre accord à utiliser des moyens électroniques pour signer des documents et recevoir des notifications."
+
#: apps/web/src/app/(profile)/p/[url]/page.tsx:139
msgid "While waiting for them to do so you can create your own Documenso account and get started with document signing right away."
msgstr "En attendant qu'ils le fassent, vous pouvez créer votre propre compte Documenso et commencer à signer des documents dès maintenant."
@@ -4137,6 +4761,10 @@ msgstr "En attendant qu'ils le fassent, vous pouvez créer votre propre compte D
msgid "Who do you want to remind?"
msgstr "Qui voulez-vous rappeler ?"
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:101
+msgid "Withdrawing Consent"
+msgstr "Retrait du consentement"
+
#: apps/web/src/components/forms/public-profile-form.tsx:223
msgid "Write about the team"
msgstr "Écrivez sur l'équipe"
@@ -4150,6 +4778,7 @@ msgid "Yearly"
msgstr "Annuel"
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-information.tsx:32
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-information.tsx:31
msgid "You"
msgstr "Vous"
@@ -4189,14 +4818,10 @@ msgstr "Vous êtes sur le point de supprimer l'utilisateur suivant de <0>{teamNa
msgid "You are about to revoke access for team <0>{0}0> ({1}) to use your email."
msgstr "Vous êtes sur le point de révoquer l'accès de l'équipe <0>{0}0> ({1}) à votre e-mail."
-#: apps/web/src/app/(dashboard)/settings/billing/page.tsx:78
+#: apps/web/src/app/(dashboard)/settings/billing/page.tsx:80
msgid "You are currently on the <0>Free Plan0>."
msgstr "Vous êtes actuellement sur le <0>Plan Gratuit0>."
-#: apps/web/src/app/(dashboard)/settings/billing/page.tsx:92
-#~ msgid "You are currently subscribed to <0>{0}0>"
-#~ msgstr "You are currently subscribed to <0>{0}0>"
-
#: apps/web/src/components/(teams)/dialogs/update-team-member-dialog.tsx:148
msgid "You are currently updating <0>{teamMemberName}.0>"
msgstr "Vous mettez à jour actuellement <0>{teamMemberName}.0>"
@@ -4221,11 +4846,15 @@ msgstr "Vous pouvez choisir d'activer ou de désactiver le profil de votre équi
msgid "You can claim your profile later on by going to your profile settings!"
msgstr "Vous pouvez revendiquer votre profil plus tard en allant dans vos paramètres de profil !"
+#: apps/web/src/components/document/document-recipient-link-copy-dialog.tsx:87
+msgid "You can copy and share these links to recipients so they can action the document."
+msgstr "Vous pouvez copier et partager ces liens avec les destinataires afin qu'ils puissent agir sur le document."
+
#: apps/web/src/components/forms/public-profile-form.tsx:154
msgid "You can update the profile URL by updating the team URL in the general settings page."
msgstr "Vous pouvez mettre à jour l'URL de profil en mettant à jour l'URL de l'équipe dans la page des paramètres généraux."
-#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:65
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:71
msgid "You can view documents associated with this email and use this identity when sending documents."
msgstr "Vous pouvez voir les documents associés à cet e-mail et utiliser cette identité lors de l'envoi de documents."
@@ -4241,11 +4870,7 @@ msgstr "Vous ne pouvez pas modifier un membre de l'équipe qui a un rôle plus
msgid "You cannot upload encrypted PDFs"
msgstr "Vous ne pouvez pas télécharger de PDF cryptés"
-#: apps/web/src/app/(dashboard)/settings/billing/page.tsx:97
-#~ msgid "You currently have an active plan"
-#~ msgstr "You currently have an active plan"
-
-#: apps/web/src/app/(dashboard)/settings/billing/billing-portal-button.tsx:45
+#: apps/web/src/app/(dashboard)/settings/billing/billing-portal-button.tsx:46
msgid "You do not currently have a customer record, this should not happen. Please contact support for assistance."
msgstr "Vous n'avez actuellement pas de dossier client, cela ne devrait pas se produire. Veuillez contacter le support pour obtenir de l'aide."
@@ -4291,10 +4916,14 @@ msgstr "Vous avez atteint la limite maximale de {0} modèles directs. <0>Mettez
msgid "You have reached your document limit."
msgstr "Vous avez atteint votre limite de documents."
-#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:181
+#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:183
msgid "You have reached your document limit. <0>Upgrade your account to continue!0>"
msgstr "Vous avez atteint votre limite de documents. <0>Mettez à niveau votre compte pour continuer !0>"
+#: apps/web/src/app/(signing)/sign/[token]/rejected/page.tsx:88
+msgid "You have rejected this document"
+msgstr "Vous avez rejeté ce document"
+
#: apps/web/src/components/(teams)/dialogs/leave-team-dialog.tsx:50
msgid "You have successfully left this team."
msgstr "Vous avez quitté cette équipe avec succès."
@@ -4313,6 +4942,10 @@ msgstr "Vous avez retiré cet utilisateur de l'équipe avec succès."
msgid "You have successfully revoked access."
msgstr "Vous avez révoqué l'accès avec succès."
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:104
+msgid "You have the right to withdraw your consent to use electronic signatures at any time before completing the signing process. To withdraw your consent, please contact the sender of the document. In failing to contact the sender you may reach out to <0>{SUPPORT_EMAIL}0> for assistance. Be aware that withdrawing consent may delay or halt the completion of the related transaction or service."
+msgstr "Vous avez le droit de retirer votre consentement à l'utilisation des signatures électroniques à tout moment avant de terminer le processus de signature. Pour retirer votre consentement, veuillez contacter l'expéditeur du document. Si vous ne contactez pas l'expéditeur, vous pouvez contacter <0>{SUPPORT_EMAIL}0> pour obtenir de l'aide. Sachez que le retrait de consentement peut retarder ou arrêter l'achèvement de la transaction ou du service associé."
+
#: apps/web/src/components/(teams)/dialogs/update-team-member-dialog.tsx:93
msgid "You have updated {teamMemberName}."
msgstr "Vous avez mis à jour {teamMemberName}."
@@ -4325,10 +4958,6 @@ msgstr "Vous avez vérifié votre adresse e-mail pour <0>{0}0>."
msgid "You must be an admin of this team to manage billing."
msgstr "Vous devez être un administrateur de cette équipe pour gérer la facturation."
-#: apps/web/src/components/(teams)/dialogs/transfer-team-dialog.tsx:80
-#~ msgid "You must enter '{confirmTransferMessage}' to proceed"
-#~ msgstr "You must enter '{confirmTransferMessage}' to proceed"
-
#: apps/web/src/components/(dashboard)/settings/token/delete-token-dialog.tsx:60
#: apps/web/src/components/(dashboard)/settings/webhooks/delete-webhook-dialog.tsx:58
#: apps/web/src/components/(teams)/dialogs/delete-team-dialog.tsx:54
@@ -4379,7 +5008,15 @@ msgstr "Votre avatar a été mis à jour avec succès."
msgid "Your banner has been updated successfully."
msgstr "Votre bannière a été mise à jour avec succès."
-#: apps/web/src/app/(dashboard)/settings/billing/page.tsx:119
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/branding-preferences.tsx:280
+msgid "Your brand website URL"
+msgstr "L'URL de votre site web de marque"
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/branding-preferences.tsx:103
+msgid "Your branding preferences have been updated"
+msgstr "Vos préférences de branding ont été mises à jour"
+
+#: apps/web/src/app/(dashboard)/settings/billing/page.tsx:125
msgid "Your current plan is past due. Please update your payment information."
msgstr "Votre plan actuel est en retard. Veuillez mettre à jour vos informations de paiement."
@@ -4391,7 +5028,7 @@ msgstr "Vos modèles de signature directe"
msgid "Your document failed to upload."
msgstr "Votre document a échoué à se télécharger."
-#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:143
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:157
msgid "Your document has been created from the template successfully."
msgstr "Votre document a été créé à partir du modèle avec succès."
@@ -4399,7 +5036,7 @@ msgstr "Votre document a été créé à partir du modèle avec succès."
msgid "Your document has been re-sent successfully."
msgstr "Votre document a été renvoyé avec succès."
-#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:299
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:328
msgid "Your document has been sent successfully."
msgstr "Votre document a été envoyé avec succès."
@@ -4415,6 +5052,10 @@ msgstr "Votre document a été téléchargé avec succès."
msgid "Your document has been uploaded successfully. You will be redirected to the template page."
msgstr "Votre document a été téléchargé avec succès. Vous serez redirigé vers la page de modèle."
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:92
+msgid "Your document preferences have been updated"
+msgstr "Vos préférences de document ont été mises à jour"
+
#: apps/web/src/components/(dashboard)/common/command-menu.tsx:223
msgid "Your documents"
msgstr "Vos documents"
@@ -4432,6 +5073,10 @@ msgstr "Votre e-mail est actuellement utilisé par l'équipe <0>{0}0> ({1})."
msgid "Your existing tokens"
msgstr "Vos jetons existants"
+#: apps/web/src/components/forms/team-document-settings.tsx:70
+#~ msgid "Your global team document settings has been updated successfully."
+#~ msgstr "Your global team document settings has been updated successfully."
+
#: apps/web/src/components/forms/password.tsx:72
#: apps/web/src/components/forms/reset-password.tsx:73
msgid "Your password has been updated successfully."
@@ -4474,7 +5119,7 @@ msgstr "Votre équipe a été créée."
msgid "Your team has been successfully deleted."
msgstr "Votre équipe a été supprimée avec succès."
-#: apps/web/src/components/(teams)/forms/update-team-form.tsx:69
+#: apps/web/src/components/(teams)/forms/update-team-form.tsx:107
msgid "Your team has been successfully updated."
msgstr "Votre équipe a été mise à jour avec succès."
@@ -4490,7 +5135,7 @@ msgstr "Votre modèle a été supprimé avec succès."
msgid "Your template will be duplicated."
msgstr "Votre modèle sera dupliqué."
-#: apps/web/src/app/(dashboard)/templates/[id]/edit-template.tsx:220
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:224
msgid "Your templates has been saved successfully."
msgstr "Vos modèles ont été enregistrés avec succès."
@@ -4506,3 +5151,4 @@ msgstr "Votre jeton a été créé avec succès ! Assurez-vous de le copier car
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx:86
msgid "Your tokens will be shown here once you create them."
msgstr "Vos jetons seront affichés ici une fois que vous les aurez créés."
+
diff --git a/packages/lib/translations/pl/common.po b/packages/lib/translations/pl/common.po
new file mode 100644
index 000000000..f34deb226
--- /dev/null
+++ b/packages/lib/translations/pl/common.po
@@ -0,0 +1,1817 @@
+msgid ""
+msgstr ""
+"POT-Creation-Date: 2024-07-24 13:01+1000\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: @lingui/cli\n"
+"Language: pl\n"
+"Project-Id-Version: documenso-app\n"
+"Report-Msgid-Bugs-To: \n"
+"PO-Revision-Date: 2024-11-20 11:56\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"
+"X-Crowdin-Project: documenso-app\n"
+"X-Crowdin-Project-ID: 694691\n"
+"X-Crowdin-Language: pl\n"
+"X-Crowdin-File: common.po\n"
+"X-Crowdin-File-ID: 4\n"
+
+#: packages/email/template-components/template-document-super-delete.tsx:27
+msgid "\"{documentName}\" has been deleted by an admin."
+msgstr "\"{documentName}\" został usunięty przez administratora."
+
+#: packages/email/template-components/template-document-pending.tsx:37
+msgid "“{documentName}” has been signed"
+msgstr "„{documentName}” został podpisany"
+
+#: packages/email/template-components/template-document-completed.tsx:41
+msgid "“{documentName}” was signed by all signers"
+msgstr "„{documentName}” został podpisany przez wszystkich sygnatariuszy"
+
+#: packages/lib/server-only/document/resend-document.tsx:109
+#~ msgid "{0}"
+#~ msgstr "{0}"
+
+#: packages/email/template-components/template-document-invite.tsx:80
+#~ msgid "{0} Document"
+#~ msgstr "{0} Document"
+
+#: packages/lib/jobs/definitions/emails/send-signing-email.ts:137
+msgid "{0} has invited you to {recipientActionVerb} the document \"{1}\"."
+msgstr "{0} zaprosił cię do {recipientActionVerb} dokument „{1}”."
+
+#: packages/lib/jobs/definitions/emails/send-signing-email.ts:130
+msgid "{0} invited you to {recipientActionVerb} a document"
+msgstr "{0} zaprosił Cię do {recipientActionVerb} dokument"
+
+#: packages/email/templates/team-join.tsx:61
+msgid "{0} joined the team {teamName} on Documenso"
+msgstr "{0} dołączył do zespołu {teamName} na Documenso"
+
+#: packages/email/templates/team-leave.tsx:61
+msgid "{0} left the team {teamName} on Documenso"
+msgstr "{0} opuścił zespół {teamName} na Documenso"
+
+#: packages/ui/primitives/data-table-pagination.tsx:30
+msgid "{0} of {1} row(s) selected."
+msgstr "{0} z {1} wybranych wierszy."
+
+#: packages/lib/jobs/definitions/emails/send-signing-email.ts:136
+#: packages/lib/server-only/document/resend-document.tsx:137
+msgid "{0} on behalf of {1} has invited you to {recipientActionVerb} the document \"{2}\"."
+msgstr "{0} w imieniu {1} zaprosił Cię do {recipientActionVerb} dokument „{2}”."
+
+#: packages/email/template-components/template-document-invite.tsx:51
+#~ msgid "{0}<0/>\"{documentName}\""
+#~ msgstr "{0}<0/>\"{documentName}\""
+
+#: packages/email/templates/document-invite.tsx:94
+msgid "{inviterName} <0>({inviterEmail})0>"
+msgstr "{inviterName} <0>({inviterEmail})0>"
+
+#: packages/email/templates/document-cancel.tsx:21
+msgid "{inviterName} has cancelled the document {documentName}, you don't need to sign it anymore."
+msgstr "{inviterName} anulował dokument {documentName}, nie musisz go już podpisywać."
+
+#: packages/email/template-components/template-document-cancel.tsx:24
+msgid "{inviterName} has cancelled the document<0/>\"{documentName}\""
+msgstr "{inviterName} anulował dokument<0/>\"{documentName}\""
+
+#: packages/email/template-components/template-document-invite.tsx:75
+msgid "{inviterName} has invited you to {0}<0/>\"{documentName}\""
+msgstr "{inviterName} zaprosił Cię do {0}<0/>\"{documentName}\""
+
+#: packages/email/templates/document-invite.tsx:41
+msgid "{inviterName} has invited you to {action} {documentName}"
+msgstr "{inviterName} zaprosił Cię do {action} {documentName}"
+
+#: packages/email/templates/document-invite.tsx:106
+msgid "{inviterName} has invited you to {action} the document \"{documentName}\"."
+msgstr "{inviterName} zaprosił cię do {action} dokument „{documentName}”."
+
+#: packages/email/templates/recipient-removed-from-document.tsx:20
+msgid "{inviterName} has removed you from the document {documentName}."
+msgstr "{inviterName} usunął Cię z dokumentu {documentName}."
+
+#: packages/email/templates/recipient-removed-from-document.tsx:49
+msgid "{inviterName} has removed you from the document<0/>\"{documentName}\""
+msgstr "{inviterName} usunął cię z dokumentu<0/>„{documentName}”"
+
+#: packages/email/template-components/template-document-invite.tsx:63
+msgid "{inviterName} on behalf of {teamName} has invited you to {0}"
+msgstr "{inviterName} w imieniu {teamName} zaprosił cię do {0}"
+
+#: packages/email/template-components/template-document-invite.tsx:49
+#~ msgid "{inviterName} on behalf of {teamName} has invited you to {0}<0/>\"{documentName}\""
+#~ msgstr "{inviterName} on behalf of {teamName} has invited you to {0}<0/>\"{documentName}\""
+
+#: packages/email/templates/document-invite.tsx:45
+msgid "{inviterName} on behalf of {teamName} has invited you to {action} {documentName}"
+msgstr "{inviterName} w imieniu {teamName} zaprosił Cię do {action} {documentName}"
+
+#: packages/email/templates/team-join.tsx:67
+msgid "{memberEmail} joined the following team"
+msgstr "{memberEmail} dołączył do następującego zespołu"
+
+#: packages/email/templates/team-leave.tsx:67
+msgid "{memberEmail} left the following team"
+msgstr "{memberEmail} opuścił następujący zespół"
+
+#: packages/lib/utils/document-audit-logs.ts:263
+msgid "{prefix} added a field"
+msgstr "{prefix} dodał pole"
+
+#: packages/lib/utils/document-audit-logs.ts:275
+msgid "{prefix} added a recipient"
+msgstr "{prefix} dodał odbiorcę"
+
+#: packages/lib/utils/document-audit-logs.ts:287
+msgid "{prefix} created the document"
+msgstr "{prefix} utworzył dokument"
+
+#: packages/lib/utils/document-audit-logs.ts:291
+msgid "{prefix} deleted the document"
+msgstr "{prefix} usunął dokument"
+
+#: packages/lib/utils/document-audit-logs.ts:335
+msgid "{prefix} moved the document to team"
+msgstr "{prefix} przeniósł dokument do zespołu"
+
+#: packages/lib/utils/document-audit-logs.ts:319
+msgid "{prefix} opened the document"
+msgstr "{prefix} otworzył dokument"
+
+#: packages/lib/utils/document-audit-logs.ts:267
+msgid "{prefix} removed a field"
+msgstr "{prefix} usunął pole"
+
+#: packages/lib/utils/document-audit-logs.ts:279
+msgid "{prefix} removed a recipient"
+msgstr "{prefix} usunął odbiorcę"
+
+#: packages/lib/utils/document-audit-logs.ts:365
+msgid "{prefix} resent an email to {0}"
+msgstr "{prefix} ponownie wysłał e-mail do {0}"
+
+#: packages/lib/utils/document-audit-logs.ts:366
+msgid "{prefix} sent an email to {0}"
+msgstr "{prefix} wysłał e-mail do {0}"
+
+#: packages/lib/utils/document-audit-logs.ts:331
+msgid "{prefix} sent the document"
+msgstr "{prefix} wysłał dokument"
+
+#: packages/lib/utils/document-audit-logs.ts:295
+msgid "{prefix} signed a field"
+msgstr "{prefix} podpisał pole"
+
+#: packages/lib/utils/document-audit-logs.ts:299
+msgid "{prefix} unsigned a field"
+msgstr "{prefix} niepodpisane pole"
+
+#: packages/lib/utils/document-audit-logs.ts:271
+msgid "{prefix} updated a field"
+msgstr "{prefix} zaktualizowane pole"
+
+#: packages/lib/utils/document-audit-logs.ts:283
+msgid "{prefix} updated a recipient"
+msgstr "{prefix} zaktualizowany odbiorca"
+
+#: packages/lib/utils/document-audit-logs.ts:315
+msgid "{prefix} updated the document"
+msgstr "{prefix} zaktualizowany dokument"
+
+#: packages/lib/utils/document-audit-logs.ts:307
+msgid "{prefix} updated the document access auth requirements"
+msgstr "{prefix} zaktualizowane wymagania dotyczące autoryzacji dostępu do dokumentu"
+
+#: packages/lib/utils/document-audit-logs.ts:327
+msgid "{prefix} updated the document external ID"
+msgstr "{prefix} zaktualizowane ID zewnętrzne dokumentu"
+
+#: packages/lib/utils/document-audit-logs.ts:311
+msgid "{prefix} updated the document signing auth requirements"
+msgstr "{prefix} zaktualizowane wymagania dotyczące autoryzacji podpisu dokumentu"
+
+#: packages/lib/utils/document-audit-logs.ts:323
+msgid "{prefix} updated the document title"
+msgstr "{prefix} zaktualizowany tytuł dokumentu"
+
+#: packages/lib/utils/document-audit-logs.ts:303
+msgid "{prefix} updated the document visibility"
+msgstr "{prefix} zaktualizowana widoczność dokumentu"
+
+#: packages/email/templates/document-created-from-direct-template.tsx:61
+msgid "{recipientName} {action} a document by using one of your direct links"
+msgstr "{recipientName} {action} dokument, korzystając z jednego z Twoich bezpośrednich linków"
+
+#: packages/email/templates/document-rejected.tsx:27
+msgid "{recipientName} has rejected the document '{documentName}'"
+msgstr "{recipientName} odrzucił dokument '{documentName}'"
+
+#: packages/email/template-components/template-document-rejected.tsx:25
+msgid "{signerName} has rejected the document \"{documentName}\"."
+msgstr "{signerName} odrzucił dokument \"{documentName}\"."
+
+#: packages/email/template-components/template-document-invite.tsx:68
+msgid "{teamName} has invited you to {0}"
+msgstr "{teamName} zaprosił cię do {0}"
+
+#: packages/email/templates/document-invite.tsx:46
+msgid "{teamName} has invited you to {action} {documentName}"
+msgstr "{teamName} zaprosił cię do {action} {documentName}"
+
+#: packages/email/templates/team-transfer-request.tsx:55
+msgid "{teamName} ownership transfer request"
+msgstr "Prośba o przeniesienie własności zespołu {teamName}"
+
+#: packages/lib/utils/document-audit-logs.ts:343
+msgid "{userName} approved the document"
+msgstr "{userName} zatwierdził dokument"
+
+#: packages/lib/utils/document-audit-logs.ts:344
+msgid "{userName} CC'd the document"
+msgstr "{userName} dodał CC do dokumentu"
+
+#: packages/lib/utils/document-audit-logs.ts:345
+msgid "{userName} completed their task"
+msgstr "{userName} zakończył swoje zadanie"
+
+#: packages/lib/utils/document-audit-logs.ts:355
+msgid "{userName} rejected the document"
+msgstr "{userName} odrzucił dokument"
+
+#: packages/lib/utils/document-audit-logs.ts:341
+msgid "{userName} signed the document"
+msgstr "{userName} podpisał dokument"
+
+#: packages/lib/utils/document-audit-logs.ts:342
+msgid "{userName} viewed the document"
+msgstr "{userName} wyświetlił dokument"
+
+#: packages/ui/primitives/data-table-pagination.tsx:41
+msgid "{visibleRows, plural, one {Showing # result.} other {Showing # results.}}"
+msgstr "{visibleRows, plural, one {Wyświetlanie # wyniku.} other {Wyświetlanie # wyników.}}"
+
+#: packages/email/templates/document-invite.tsx:100
+#~ msgid "`${inviterName} has invited you to ${action} the document \"${documentName}\".`"
+#~ msgstr "`${inviterName} has invited you to ${action} the document \"${documentName}\".`"
+
+#: packages/email/templates/team-transfer-request.tsx:59
+msgid "<0>{senderName}0> has requested that you take ownership of the following team"
+msgstr "<0>{senderName}0> poprosił, abyś przejął własność następującego zespołu"
+
+#: packages/email/templates/confirm-team-email.tsx:75
+msgid "<0>{teamName}0> has requested to use your email address for their team on Documenso."
+msgstr "<0>{teamName}0> poprosił o używanie twojego adresu e-mail dla swojego zespołu w Documenso."
+
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:241
+msgid "<0>Email0> - The recipient will be emailed the document to sign, approve, etc."
+msgstr "<0>E-mail0> - Odbiorca otrzyma e-mail z dokumentem do podpisania, zatwierdzenia itp."
+
+#: packages/ui/components/recipient/recipient-action-auth-select.tsx:53
+msgid "<0>Inherit authentication method0> - Use the global action signing authentication method configured in the \"General Settings\" step"
+msgstr "<0>Przechwyć metodę uwierzytelniania0> - Użyj globalnej metody uwierzytelniania podpisywania akcji skonfigurowanej w kroku \"Ustawienia ogólne\""
+
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:247
+msgid "<0>Links0> - We will generate links which you can send to the recipients manually."
+msgstr "<0>Linki0> - Wygenerujemy linki, które możesz wysłać do odbiorców ręcznie."
+
+#: packages/ui/components/document/document-global-auth-action-select.tsx:95
+msgid "<0>No restrictions0> - No authentication required"
+msgstr "<0>Brak ograniczeń0> - Uwierzytelnianie nie jest wymagane"
+
+#: packages/ui/components/document/document-global-auth-access-select.tsx:77
+msgid "<0>No restrictions0> - The document can be accessed directly by the URL sent to the recipient"
+msgstr "<0>Brak ograniczeń0> - Dokument można bezpośrednio otworzyć za pomocą URL przesłanego do odbiorcy"
+
+#: packages/ui/components/recipient/recipient-action-auth-select.tsx:75
+msgid "<0>None0> - No authentication required"
+msgstr "<0>Brak0> - Uwierzytelnianie nie jest wymagane"
+
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:254
+msgid "<0>Note0> - If you use Links in combination with direct templates, you will need to manually send the links to the remaining recipients."
+msgstr "<0>Uwaga0> - Jeśli używasz linków w połączeniu z bezpośrednimi szablonami, musisz ręcznie wysłać linki do pozostałych odbiorców."
+
+#: packages/ui/components/document/document-global-auth-action-select.tsx:89
+#: packages/ui/components/recipient/recipient-action-auth-select.tsx:69
+msgid "<0>Require 2FA0> - The recipient must have an account and 2FA enabled via their settings"
+msgstr "<0>Wymagana 2FA0> - Odbiorca musi mieć konto i włączoną 2FA w swoich ustawieniach"
+
+#: packages/ui/components/document/document-global-auth-access-select.tsx:72
+msgid "<0>Require account0> - The recipient must be signed in to view the document"
+msgstr "<0>Wymagana konto0> - Odbiorca musi być zalogowany, aby wyświetlić dokument"
+
+#: packages/ui/components/document/document-global-auth-action-select.tsx:83
+#: packages/ui/components/recipient/recipient-action-auth-select.tsx:63
+msgid "<0>Require passkey0> - The recipient must have an account and passkey configured via their settings"
+msgstr "<0>Wymagana passkey0> - Odbiorca musi mieć konto i skonfigurowaną passkey w swoich ustawieniach"
+
+#: packages/lib/jobs/definitions/emails/send-signing-email.ts:122
+msgid "A document was created by your direct template that requires you to {recipientActionVerb} it."
+msgstr "Dokument został utworzony przez Twój bezpośredni szablon, który wymaga, abyś go {recipientActionVerb}."
+
+#: packages/lib/utils/document-audit-logs.ts:262
+msgid "A field was added"
+msgstr "Dodano pole"
+
+#: packages/lib/utils/document-audit-logs.ts:266
+msgid "A field was removed"
+msgstr "Usunięto pole"
+
+#: packages/lib/utils/document-audit-logs.ts:270
+msgid "A field was updated"
+msgstr "Zaktualizowano pole"
+
+#: packages/lib/jobs/definitions/emails/send-team-member-joined-email.ts:107
+msgid "A new member has joined your team"
+msgstr "Nowy członek dołączył do Twojego zespołu"
+
+#: packages/lib/utils/document-audit-logs.ts:274
+msgid "A recipient was added"
+msgstr "Dodano odbiorcę"
+
+#: packages/lib/utils/document-audit-logs.ts:278
+msgid "A recipient was removed"
+msgstr "Usunięto odbiorcę"
+
+#: packages/lib/utils/document-audit-logs.ts:282
+msgid "A recipient was updated"
+msgstr "Zaktualizowano odbiorcę"
+
+#: packages/lib/server-only/team/create-team-email-verification.ts:156
+msgid "A request to use your email has been initiated by {0} on Documenso"
+msgstr "Zgłoszenie potrzeby użycia twojego e-maila zostało inicjowane przez {0} na Documenso"
+
+#: packages/lib/server-only/team/create-team-email-verification.ts:142
+#~ msgid "A request to use your email has been initiated by {teamName} on Documenso"
+#~ msgstr "A request to use your email has been initiated by {teamName} on Documenso"
+
+#: packages/email/templates/team-join.tsx:31
+msgid "A team member has joined a team on Documenso"
+msgstr "Członek zespołu dołączył do zespołu na Documenso"
+
+#: packages/lib/jobs/definitions/emails/send-team-member-left-email.ts:96
+msgid "A team member has left {0}"
+msgstr "Członek zespołu opuścił {0}"
+
+#: packages/email/templates/team-leave.tsx:31
+msgid "A team member has left a team on Documenso"
+msgstr "Członek zespołu opuścił zespół na Documenso"
+
+#: packages/email/templates/team-delete.tsx:29
+#: packages/email/templates/team-delete.tsx:33
+msgid "A team you were a part of has been deleted"
+msgstr "Zespół, którego częścią byłeś, został usunięty"
+
+#: packages/email/templates/confirm-team-email.tsx:118
+#: packages/email/templates/team-invite.tsx:94
+#: packages/email/templates/team-transfer-request.tsx:81
+msgid "Accept"
+msgstr "Akceptuj"
+
+#: packages/email/templates/team-invite.tsx:42
+msgid "Accept invitation to join a team on Documenso"
+msgstr "Akceptuj zaproszenie do dołączenia do zespołu na Documenso"
+
+#: packages/email/templates/confirm-team-email.tsx:41
+msgid "Accept team email request for {teamName} on Documenso"
+msgstr "Akceptuj prośbę o email zespołowy dla {teamName} na Documenso"
+
+#: packages/email/templates/team-transfer-request.tsx:29
+msgid "Accept team transfer request on Documenso"
+msgstr "Akceptuj prośbę o przeniesienie zespołu na Documenso"
+
+#: packages/ui/primitives/document-dropzone.tsx:69
+msgid "Add a document"
+msgstr "Dodaj dokument"
+
+#: packages/ui/primitives/document-flow/add-settings.tsx:378
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:468
+msgid "Add a URL to redirect the user to once the document is signed"
+msgstr "Dodaj URL, aby przekierować użytkownika po podpisaniu dokumentu"
+
+#: packages/ui/primitives/document-flow/add-settings.tsx:290
+msgid "Add an external ID to the document. This can be used to identify the document in external systems."
+msgstr "Dodaj zewnętrzny ID do dokumentu. Może być używany do identyfikacji dokumentu w zewnętrznych systemach."
+
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:385
+msgid "Add an external ID to the template. This can be used to identify in external systems."
+msgstr "Dodaj zewnętrzny ID do szablonu. Może być używany do identyfikacji w systemach zewnętrznych."
+
+#: packages/ui/primitives/document-flow/field-items-advanced-settings/dropdown-field.tsx:187
+msgid "Add another option"
+msgstr "Dodaj kolejną opcję"
+
+#: packages/ui/primitives/document-flow/field-items-advanced-settings/checkbox-field.tsx:232
+#: packages/ui/primitives/document-flow/field-items-advanced-settings/radio-field.tsx:167
+msgid "Add another value"
+msgstr "Dodaj kolejną wartość"
+
+#: packages/ui/primitives/document-flow/add-signers.tsx:691
+msgid "Add myself"
+msgstr "Dodaj siebie"
+
+#: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:645
+msgid "Add Myself"
+msgstr "Dodaj siebie"
+
+#: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:631
+msgid "Add Placeholder Recipient"
+msgstr "Dodaj odbiorcę zastępczego"
+
+#: packages/ui/primitives/document-flow/add-signers.tsx:680
+msgid "Add Signer"
+msgstr "Dodaj sygnatariusza"
+
+#: packages/ui/primitives/document-flow/field-items-advanced-settings/text-field.tsx:73
+msgid "Add text"
+msgstr "Dodaj tekst"
+
+#: packages/ui/primitives/document-flow/field-items-advanced-settings/text-field.tsx:78
+msgid "Add text to the field"
+msgstr "Dodaj tekst do pola"
+
+#: packages/lib/constants/teams.ts:10
+msgid "Admin"
+msgstr "Administrator"
+
+#: packages/ui/primitives/document-flow/add-settings.tsx:272
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:367
+msgid "Advanced Options"
+msgstr "Opcje zaawansowane"
+
+#: packages/ui/primitives/document-flow/add-fields.tsx:576
+#: packages/ui/primitives/template-flow/add-template-fields.tsx:409
+msgid "Advanced settings"
+msgstr "Ustawienia zaawansowane"
+
+#: packages/lib/constants/template.ts:21
+msgid "After submission, a document will be automatically generated and added to your documents page. You will also receive a notification via email."
+msgstr "Po przesłaniu dokumentu zostanie automatycznie wygenerowany i dodany do Twojej strony dokumentów. Otrzymasz również powiadomienie pocztą elektroniczną."
+
+#: packages/email/template-components/template-document-cancel.tsx:31
+msgid "All signatures have been voided."
+msgstr "Wszystkie podpisy zostały unieważnione."
+
+#: packages/email/templates/confirm-team-email.tsx:98
+msgid "Allow document recipients to reply directly to this email address"
+msgstr "Zezwól odbiorcom dokumentów na bezpośrednią odpowiedź na ten adres e-mail"
+
+#: packages/email/templates/document-super-delete.tsx:22
+msgid "An admin has deleted your document \"{documentName}\"."
+msgstr "Administrator usunął Twój dokument \"{documentName}\"."
+
+#: packages/ui/primitives/pdf-viewer.tsx:167
+msgid "An error occurred while loading the document."
+msgstr "Wystąpił błąd podczas ładowania dokumentu."
+
+#: packages/lib/constants/recipient-roles.ts:8
+msgid "Approve"
+msgstr "Zatwierdź"
+
+#: packages/email/template-components/template-document-invite.tsx:106
+msgid "Approve Document"
+msgstr "Zatwierdź dokument"
+
+#: packages/lib/constants/recipient-roles.ts:68
+#~ msgid "APPROVE_REQUEST"
+#~ msgstr "APPROVE_REQUEST"
+
+#: packages/lib/constants/recipient-roles.ts:9
+msgid "Approved"
+msgstr "Zatwierdzono"
+
+#: packages/lib/constants/recipient-roles.ts:11
+msgid "Approver"
+msgstr "Zatwierdzający"
+
+#: packages/lib/constants/recipient-roles.ts:12
+msgid "Approvers"
+msgstr "Zatwierdzający"
+
+#: packages/lib/constants/recipient-roles.ts:10
+msgid "Approving"
+msgstr "Zatwierdzanie"
+
+#: packages/email/template-components/template-confirmation-email.tsx:25
+msgid "Before you get started, please confirm your email address by clicking the button below:"
+msgstr "Zanim zaczniesz, proszę potwierdź swój adres e-mail, klikając przycisk poniżej:"
+
+#: packages/ui/primitives/signature-pad/signature-pad.tsx:377
+msgid "Black"
+msgstr "Czarny"
+
+#: packages/ui/primitives/signature-pad/signature-pad.tsx:391
+msgid "Blue"
+msgstr "Niebieski"
+
+#: packages/email/templates/team-invite.tsx:84
+msgid "by <0>{senderName}0>"
+msgstr "przez <0>{senderName}0>"
+
+#: packages/email/templates/confirm-team-email.tsx:87
+msgid "By accepting this request, you will be granting <0>{teamName}0> access to:"
+msgstr "Akceptując tę prośbę, przyznasz <0>{teamName}0> dostęp do:"
+
+#: packages/email/templates/team-transfer-request.tsx:70
+msgid "By accepting this request, you will take responsibility for any billing items associated with this team."
+msgstr "Akceptując tę prośbę, przejmiesz odpowiedzialność za wszelkie pozycje dotyczące rozliczeń związane z tym zespołem."
+
+#: packages/ui/primitives/document-flow/field-item-advanced-settings.tsx:356
+#: packages/ui/primitives/document-flow/send-document-action-dialog.tsx:58
+msgid "Cancel"
+msgstr "Anuluj"
+
+#: packages/ui/primitives/document-flow/add-signers.tsx:193
+msgid "Cannot remove signer"
+msgstr "Nie można usunąć sygnatariusza"
+
+#: packages/lib/constants/recipient-roles.ts:18
+msgid "Cc"
+msgstr "Cc"
+
+#: packages/lib/constants/recipient-roles.ts:15
+#: packages/lib/constants/recipient-roles.ts:17
+msgid "CC"
+msgstr "CC"
+
+#: packages/lib/constants/recipient-roles.ts:16
+msgid "CC'd"
+msgstr "CC'd"
+
+#: packages/lib/constants/recipient-roles.ts:19
+msgid "Ccers"
+msgstr "Kserokopie"
+
+#: packages/ui/primitives/document-flow/field-items-advanced-settings/text-field.tsx:86
+msgid "Character Limit"
+msgstr "Limit znaków"
+
+#: packages/ui/primitives/document-flow/types.ts:58
+msgid "Checkbox"
+msgstr "Checkbox"
+
+#: packages/ui/primitives/document-flow/field-items-advanced-settings/checkbox-field.tsx:197
+msgid "Checkbox values"
+msgstr "Wartości checkboxa"
+
+#: packages/ui/primitives/data-table.tsx:156
+msgid "Clear filters"
+msgstr "Wyczyść filtry"
+
+#: packages/ui/primitives/signature-pad/signature-pad.tsx:411
+msgid "Clear Signature"
+msgstr "Wyczyść podpis"
+
+#: packages/ui/primitives/document-flow/add-signature.tsx:394
+msgid "Click to insert field"
+msgstr "Kliknij, aby wstawić pole"
+
+#: packages/ui/primitives/document-flow/missing-signature-field-dialog.tsx:44
+msgid "Close"
+msgstr "Zamknij"
+
+#: packages/email/template-components/template-document-completed.tsx:35
+#: packages/email/template-components/template-document-self-signed.tsx:36
+#: packages/lib/constants/document.ts:10
+msgid "Completed"
+msgstr "Zakończone"
+
+#: packages/email/templates/document-completed.tsx:23
+#: packages/email/templates/document-self-signed.tsx:19
+msgid "Completed Document"
+msgstr "Dokument zakończony"
+
+#: packages/lib/constants/template.ts:12
+msgid "Configure Direct Recipient"
+msgstr "Skonfiguruj bezpośredniego odbiorcę"
+
+#: packages/ui/primitives/document-flow/add-fields.tsx:577
+#: packages/ui/primitives/template-flow/add-template-fields.tsx:410
+msgid "Configure the {0} field"
+msgstr "Skonfiguruj pole {0}"
+
+#: packages/email/template-components/template-confirmation-email.tsx:35
+msgid "Confirm email"
+msgstr "Potwierdź e-mail"
+
+#: packages/ui/primitives/document-flow/document-flow-root.tsx:141
+msgid "Continue"
+msgstr "Kontynuuj"
+
+#: packages/email/template-components/template-document-invite.tsx:72
+#~ msgid "Continue by {0} the document."
+#~ msgstr "Continue by {0} the document."
+
+#: packages/email/template-components/template-document-invite.tsx:86
+msgid "Continue by approving the document."
+msgstr "Kontynuuj, zatwierdzając dokument."
+
+#: packages/email/template-components/template-document-completed.tsx:45
+msgid "Continue by downloading the document."
+msgstr "Kontynuuj, pobierając dokument."
+
+#: packages/email/template-components/template-document-invite.tsx:84
+msgid "Continue by signing the document."
+msgstr "Kontynuuj, podpisując dokument."
+
+#: packages/email/template-components/template-document-invite.tsx:85
+msgid "Continue by viewing the document."
+msgstr "Kontynuuj, wyświetlając dokument."
+
+#: packages/ui/primitives/document-flow/add-subject.tsx:254
+msgid "Copied"
+msgstr "Skopiowane"
+
+#: packages/ui/components/document/document-share-button.tsx:46
+#: packages/ui/primitives/document-flow/add-subject.tsx:241
+msgid "Copied to clipboard"
+msgstr "Skopiowano do schowka"
+
+#: packages/ui/primitives/document-flow/add-subject.tsx:249
+msgid "Copy"
+msgstr "Kopiuj"
+
+#: packages/ui/components/document/document-share-button.tsx:194
+msgid "Copy Link"
+msgstr "Skopiuj link"
+
+#: packages/email/template-components/template-document-self-signed.tsx:46
+msgid "Create a <0>free account0> to access your signed documents at any time."
+msgstr "Utwórz <0>darmowe konto0>, aby uzyskać dostęp do podpisanych dokumentów w dowolnym momencie."
+
+#: packages/email/template-components/template-document-self-signed.tsx:68
+msgid "Create account"
+msgstr "Utwórz konto"
+
+#: packages/ui/primitives/document-flow/add-signature.tsx:360
+msgid "Custom Text"
+msgstr "Tekst niestandardowy"
+
+#: packages/ui/primitives/document-flow/add-fields.tsx:934
+#: packages/ui/primitives/document-flow/types.ts:53
+#: packages/ui/primitives/template-flow/add-template-fields.tsx:697
+msgid "Date"
+msgstr "Data"
+
+#: packages/ui/primitives/document-flow/add-settings.tsx:313
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:408
+msgid "Date Format"
+msgstr "Format daty"
+
+#: packages/email/templates/team-invite.tsx:100
+msgid "Decline"
+msgstr "Odmów"
+
+#: packages/email/templates/reset-password.tsx:71
+msgid "Didn't request a password change? We are here to help you secure your account, just <0>contact us.0>"
+msgstr "Nie prosiłeś o zmianę hasła? Jesteśmy tutaj, aby pomóc Ci zabezpieczyć swoje konto, po prostu <0>skontaktuj się z nami.0>"
+
+#: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:578
+msgid "Direct link receiver"
+msgstr "Odbiorca linku bezpośredniego"
+
+#: packages/lib/jobs/definitions/emails/send-rejection-emails.ts:149
+msgid "Document \"{0}\" - Rejected by {1}"
+msgstr "Dokument \"{0}\" - Odrzucony przez {1}"
+
+#: packages/lib/jobs/definitions/emails/send-rejection-emails.ts:109
+msgid "Document \"{0}\" - Rejection Confirmed"
+msgstr "Dokument \"{0}\" - Odrzucenie potwierdzone"
+
+#: packages/ui/components/document/document-global-auth-access-select.tsx:62
+#: packages/ui/primitives/document-flow/add-settings.tsx:216
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:202
+msgid "Document access"
+msgstr "Dostęp do dokumentu"
+
+#: packages/lib/utils/document-audit-logs.ts:306
+msgid "Document access auth updated"
+msgstr "Zaktualizowano autoryzację dostępu do dokumentu"
+
+#: packages/lib/server-only/document/delete-document.ts:246
+#: packages/lib/server-only/document/super-delete-document.ts:98
+msgid "Document Cancelled"
+msgstr "Dokument anulowany"
+
+#: packages/lib/utils/document-audit-logs.ts:369
+#: packages/lib/utils/document-audit-logs.ts:370
+msgid "Document completed"
+msgstr "Dokument ukończony"
+
+#: packages/ui/components/document/document-email-checkboxes.tsx:168
+msgid "Document completed email"
+msgstr "E-mail ukończonego dokumentu"
+
+#: packages/lib/utils/document-audit-logs.ts:286
+msgid "Document created"
+msgstr "Dokument utworzony"
+
+#: packages/email/templates/document-created-from-direct-template.tsx:32
+#: packages/lib/server-only/template/create-document-from-direct-template.ts:567
+msgid "Document created from direct template"
+msgstr "Dokument utworzony z bezpośredniego szablonu"
+
+#: packages/lib/constants/template.ts:20
+msgid "Document Creation"
+msgstr "Tworzenie dokumentu"
+
+#: packages/lib/utils/document-audit-logs.ts:290
+msgid "Document deleted"
+msgstr "Dokument usunięty"
+
+#: packages/ui/components/document/document-email-checkboxes.tsx:207
+msgid "Document deleted email"
+msgstr "E-mail usuniętego dokumentu"
+
+#: packages/lib/server-only/document/send-delete-email.ts:82
+msgid "Document Deleted!"
+msgstr "Dokument usunięty!"
+
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:219
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:228
+msgid "Document Distribution Method"
+msgstr "Metoda dystrybucji dokumentu"
+
+#: packages/lib/utils/document-audit-logs.ts:326
+msgid "Document external ID updated"
+msgstr "Zaktualizowane ID zewnętrzne dokumentu"
+
+#: packages/lib/utils/document-audit-logs.ts:334
+msgid "Document moved to team"
+msgstr "Dokument przeniesiony do zespołu"
+
+#: packages/lib/utils/document-audit-logs.ts:318
+msgid "Document opened"
+msgstr "Dokument otwarty"
+
+#: packages/ui/components/document/document-email-checkboxes.tsx:128
+msgid "Document pending email"
+msgstr "E-mail oczekującego dokumentu"
+
+#: packages/email/template-components/template-document-rejected.tsx:21
+msgid "Document Rejected"
+msgstr "Dokument odrzucone"
+
+#~ msgid "Document Rejection Confirmed"
+#~ msgstr "Document Rejection Confirmed"
+
+#: packages/lib/utils/document-audit-logs.ts:330
+msgid "Document sent"
+msgstr "Dokument wysłany"
+
+#: packages/lib/utils/document-audit-logs.ts:310
+msgid "Document signing auth updated"
+msgstr "Zaktualizowano autoryzację podpisu dokumentu"
+
+#: packages/lib/utils/document-audit-logs.ts:322
+msgid "Document title updated"
+msgstr "Zaktualizowano tytuł dokumentu"
+
+#: packages/lib/utils/document-audit-logs.ts:314
+msgid "Document updated"
+msgstr "Zaktualizowano dokument"
+
+#: packages/lib/utils/document-audit-logs.ts:302
+msgid "Document visibility updated"
+msgstr "Zaktualizowano widoczność dokumentu"
+
+#: packages/email/template-components/template-document-completed.tsx:57
+#: packages/ui/components/document/document-download-button.tsx:68
+msgid "Download"
+msgstr "Pobierz"
+
+#: packages/lib/constants/document.ts:13
+msgid "Draft"
+msgstr "Robocza wersja"
+
+#: packages/ui/primitives/document-dropzone.tsx:162
+msgid "Drag & drop your PDF here."
+msgstr "Przeciągnij i upuść swój PDF tutaj."
+
+#: packages/ui/primitives/document-flow/add-fields.tsx:1065
+#: packages/ui/primitives/template-flow/add-template-fields.tsx:827
+msgid "Dropdown"
+msgstr "Lista rozwijana"
+
+#: packages/ui/primitives/document-flow/field-items-advanced-settings/dropdown-field.tsx:158
+msgid "Dropdown options"
+msgstr "Opcje rozwijane"
+
+#: packages/lib/constants/document.ts:28
+#: packages/ui/primitives/document-flow/add-fields.tsx:882
+#: packages/ui/primitives/document-flow/add-signature.tsx:272
+#: packages/ui/primitives/document-flow/add-signers.tsx:512
+#: packages/ui/primitives/document-flow/add-signers.tsx:519
+#: packages/ui/primitives/document-flow/types.ts:54
+#: packages/ui/primitives/template-flow/add-template-fields.tsx:645
+#: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:471
+#: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:478
+msgid "Email"
+msgstr "Email"
+
+#: packages/ui/primitives/document-flow/add-signature.types.ts:7
+msgid "Email is required"
+msgstr "Email jest wymagany"
+
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:307
+msgid "Email Options"
+msgstr "Opcje e-mail"
+
+#: packages/lib/utils/document-audit-logs.ts:363
+msgid "Email resent"
+msgstr "E-mail wysłany ponownie"
+
+#: packages/lib/utils/document-audit-logs.ts:363
+msgid "Email sent"
+msgstr "E-mail wysłany"
+
+#: packages/ui/primitives/document-flow/add-fields.tsx:1130
+msgid "Empty field"
+msgstr "Puste pole"
+
+#: packages/lib/constants/template.ts:8
+msgid "Enable Direct Link Signing"
+msgstr "Włącz podpisywanie linku bezpośredniego"
+
+#: packages/ui/primitives/document-flow/add-signers.tsx:401
+#: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:370
+msgid "Enable signing order"
+msgstr "Włącz kolejność podpisów"
+
+#: packages/ui/primitives/document-flow/add-fields.tsx:802
+msgid "Enable Typed Signatures"
+msgstr "Włącz podpisy typu pisanego"
+
+#: packages/ui/primitives/document-password-dialog.tsx:84
+msgid "Enter password"
+msgstr "Wprowadź hasło"
+
+#: packages/ui/primitives/document-flow/field-item-advanced-settings.tsx:257
+#: packages/ui/primitives/pdf-viewer.tsx:166
+msgid "Error"
+msgstr "Błąd"
+
+#: packages/ui/primitives/document-flow/add-settings.tsx:283
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:378
+msgid "External ID"
+msgstr "Zewnętrzny ID"
+
+#: packages/ui/primitives/document-flow/field-item-advanced-settings.tsx:258
+msgid "Failed to save settings."
+msgstr "Nie udało się zapisać ustawień."
+
+#: packages/ui/primitives/document-flow/field-items-advanced-settings/text-field.tsx:93
+msgid "Field character limit"
+msgstr "Limit znaków pola"
+
+#: packages/ui/primitives/document-flow/field-items-advanced-settings/date-field.tsx:62
+#: packages/ui/primitives/document-flow/field-items-advanced-settings/email-field.tsx:44
+#: packages/ui/primitives/document-flow/field-items-advanced-settings/initials-field.tsx:44
+#: packages/ui/primitives/document-flow/field-items-advanced-settings/name-field.tsx:44
+#: packages/ui/primitives/document-flow/field-items-advanced-settings/number-field.tsx:130
+#: packages/ui/primitives/document-flow/field-items-advanced-settings/text-field.tsx:107
+msgid "Field font size"
+msgstr "Rozmiar czcionki pola"
+
+#: packages/ui/primitives/document-flow/field-items-advanced-settings/number-field.tsx:110
+msgid "Field format"
+msgstr "Format pola"
+
+#: packages/ui/primitives/document-flow/field-items-advanced-settings/text-field.tsx:53
+msgid "Field label"
+msgstr "Etykieta pola"
+
+#: packages/ui/primitives/document-flow/field-items-advanced-settings/text-field.tsx:65
+msgid "Field placeholder"
+msgstr "Zastępczy tekst pola"
+
+#: packages/lib/utils/document-audit-logs.ts:294
+msgid "Field signed"
+msgstr "Pole podpisane"
+
+#: packages/lib/utils/document-audit-logs.ts:298
+msgid "Field unsigned"
+msgstr "Pole niepodpisane"
+
+#: packages/ui/primitives/document-flow/field-items-advanced-settings/date-field.tsx:56
+#: packages/ui/primitives/document-flow/field-items-advanced-settings/email-field.tsx:38
+#: packages/ui/primitives/document-flow/field-items-advanced-settings/initials-field.tsx:38
+#: packages/ui/primitives/document-flow/field-items-advanced-settings/name-field.tsx:38
+#: packages/ui/primitives/document-flow/field-items-advanced-settings/number-field.tsx:124
+#: packages/ui/primitives/document-flow/field-items-advanced-settings/text-field.tsx:101
+msgid "Font Size"
+msgstr "Rozmiar czcionki"
+
+#: packages/lib/server-only/auth/send-forgot-password.ts:61
+msgid "Forgot Password?"
+msgstr "Zapomniałeś hasła?"
+
+#: packages/email/template-components/template-forgot-password.tsx:21
+msgid "Forgot your password?"
+msgstr "Zapomniałeś swoje hasło?"
+
+#: packages/ui/primitives/document-flow/types.ts:50
+msgid "Free Signature"
+msgstr "Podpis wolny"
+
+#: packages/ui/primitives/document-flow/add-subject.tsx:89
+msgid "Generate Links"
+msgstr "Generuj linki"
+
+#: packages/ui/components/document/document-global-auth-action-select.tsx:64
+msgid "Global recipient action authentication"
+msgstr "Globalne uwierzytelnianie akcji odbiorcy"
+
+#: packages/ui/primitives/document-flow/document-flow-root.tsx:142
+msgid "Go Back"
+msgstr "Wróć"
+
+#: packages/ui/primitives/signature-pad/signature-pad.tsx:398
+msgid "Green"
+msgstr "Zielony"
+
+#~ msgid "Hello {recipientName},"
+#~ msgstr "Hello {recipientName},"
+
+#: packages/email/templates/reset-password.tsx:56
+msgid "Hi, {userName} <0>({userEmail})0>"
+msgstr "Cześć, {userName} <0>({userEmail})0>"
+
+#: packages/lib/constants/recipient-roles.ts:44
+msgid "I am a signer of this document"
+msgstr "Jestem sygnatariuszem tego dokumentu"
+
+#: packages/lib/constants/recipient-roles.ts:47
+msgid "I am a viewer of this document"
+msgstr "Jestem widzem tego dokumentu"
+
+#: packages/lib/constants/recipient-roles.ts:45
+msgid "I am an approver of this document"
+msgstr "Jestem zatwierdzającym tego dokumentu"
+
+#: packages/lib/constants/recipient-roles.ts:46
+msgid "I am required to receive a copy of this document"
+msgstr "Muszę otrzymać kopię tego dokumentu"
+
+#: packages/ui/components/recipient/recipient-action-auth-select.tsx:29
+#: packages/ui/components/recipient/recipient-action-auth-select.tsx:87
+msgid "Inherit authentication method"
+msgstr "Przechwyć metodę uwierzytelniania"
+
+#: packages/ui/primitives/document-flow/types.ts:51
+msgid "Initials"
+msgstr "Inicjały"
+
+#: packages/ui/primitives/document-flow/add-signers.types.ts:17
+msgid "Invalid email"
+msgstr "Nieprawidłowy email"
+
+#: packages/ui/primitives/document-flow/add-signature.types.ts:8
+msgid "Invalid email address"
+msgstr "Nieprawidłowy adres email"
+
+#: packages/email/templates/team-invite.tsx:72
+msgid "Join {teamName} on Documenso"
+msgstr "Dołącz do {teamName} na Documenso"
+
+#: packages/ui/primitives/document-flow/field-items-advanced-settings/number-field.tsx:67
+#: packages/ui/primitives/document-flow/field-items-advanced-settings/number-field.tsx:72
+#: packages/ui/primitives/document-flow/field-items-advanced-settings/text-field.tsx:48
+msgid "Label"
+msgstr "Etykieta"
+
+#: packages/ui/primitives/document-flow/add-settings.tsx:176
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:162
+msgid "Language"
+msgstr "Język"
+
+#: packages/email/templates/confirm-team-email.tsx:124
+#: packages/email/templates/team-transfer-request.tsx:87
+msgid "Link expires in 1 hour."
+msgstr "Link wygasa za 1 godzinę."
+
+#: packages/ui/primitives/lazy-pdf-viewer.tsx:15
+#: packages/ui/primitives/pdf-viewer.tsx:44
+msgid "Loading document..."
+msgstr "Ładowanie dokumentu..."
+
+#: packages/lib/constants/teams.ts:11
+msgid "Manager"
+msgstr "Menedżer"
+
+#: packages/ui/primitives/document-flow/field-items-advanced-settings/number-field.tsx:188
+msgid "Max"
+msgstr "Max"
+
+#: packages/lib/constants/teams.ts:12
+msgid "Member"
+msgstr "Członek"
+
+#: packages/ui/primitives/document-flow/add-subject.tsx:160
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:338
+msgid "Message <0>(Optional)0>"
+msgstr "Wiadomość <0>(Opcjonalnie)0>"
+
+#: packages/ui/primitives/document-flow/field-items-advanced-settings/number-field.tsx:176
+msgid "Min"
+msgstr "Min"
+
+#: packages/ui/primitives/document-flow/add-fields.tsx:908
+#: packages/ui/primitives/document-flow/add-signature.tsx:298
+#: packages/ui/primitives/document-flow/add-signers.tsx:550
+#: packages/ui/primitives/document-flow/add-signers.tsx:556
+#: packages/ui/primitives/document-flow/types.ts:55
+#: packages/ui/primitives/template-flow/add-template-fields.tsx:671
+#: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:506
+#: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:512
+msgid "Name"
+msgstr "Nazwa"
+
+#: packages/ui/components/recipient/recipient-role-select.tsx:52
+msgid "Needs to approve"
+msgstr "Wymaga zatwierdzenia"
+
+#: packages/ui/components/recipient/recipient-role-select.tsx:31
+msgid "Needs to sign"
+msgstr "Wymaga podpisania"
+
+#: packages/ui/components/recipient/recipient-role-select.tsx:73
+msgid "Needs to view"
+msgstr "Wymaga obejrzenia"
+
+#: packages/ui/primitives/document-flow/add-fields.tsx:693
+#: packages/ui/primitives/template-flow/add-template-fields.tsx:511
+msgid "No recipient matching this description was found."
+msgstr "Nie znaleziono odbiorcy pasującego do tego opisu."
+
+#: packages/ui/primitives/document-flow/add-subject.tsx:215
+msgid "No recipients"
+msgstr "Brak odbiorców"
+
+#: packages/ui/primitives/document-flow/add-fields.tsx:708
+#: packages/ui/primitives/template-flow/add-template-fields.tsx:526
+msgid "No recipients with this role"
+msgstr "Brak odbiorców z tą rolą"
+
+#: packages/ui/components/document/document-global-auth-access-select.tsx:30
+#: packages/ui/components/document/document-global-auth-access-select.tsx:43
+#: packages/ui/components/document/document-global-auth-action-select.tsx:31
+#: packages/ui/components/document/document-global-auth-action-select.tsx:46
+msgid "No restrictions"
+msgstr "Brak ograniczeń"
+
+#: packages/ui/primitives/data-table.tsx:148
+msgid "No results found"
+msgstr "Nie znaleziono wyników"
+
+#: packages/ui/primitives/document-flow/missing-signature-field-dialog.tsx:30
+msgid "No signature field found"
+msgstr "Nie znaleziono pola podpisu"
+
+#: packages/ui/primitives/combobox.tsx:60
+#: packages/ui/primitives/multi-select-combobox.tsx:153
+msgid "No value found."
+msgstr "Nie znaleziono wartości."
+
+#: packages/lib/constants/document.ts:32
+msgid "None"
+msgstr "Brak"
+
+#: packages/ui/primitives/document-flow/add-fields.tsx:986
+#: packages/ui/primitives/document-flow/types.ts:56
+#: packages/ui/primitives/template-flow/add-template-fields.tsx:749
+msgid "Number"
+msgstr "Numer"
+
+#: packages/ui/primitives/document-flow/field-items-advanced-settings/number-field.tsx:103
+msgid "Number format"
+msgstr "Format liczby"
+
+#: packages/lib/constants/template.ts:9
+msgid "Once enabled, you can select any active recipient to be a direct link signing recipient, or create a new one. This recipient type cannot be edited or deleted."
+msgstr "Po włączeniu możesz wybrać dowolnego aktywnego odbiorcę na sygnatariusza bezpośredniego lub utworzyć nowego. Tego typu odbiorca nie może być edytowany ani usunięty."
+
+#: packages/lib/constants/template.ts:17
+msgid "Once your template is set up, share the link anywhere you want. The person who opens the link will be able to enter their information in the direct link recipient field and complete any other fields assigned to them."
+msgstr "Po skonfigurowaniu szablonu udostępnij link wszędzie, gdzie chcesz. Osoba, która otworzy link, będzie mogła wprowadzić swoje dane w polu odbiorcy linku bezpośredniego i wypełnić wszelkie inne przypisane jej pola."
+
+#: packages/ui/primitives/data-table-pagination.tsx:77
+msgid "Page {0} of {1}"
+msgstr "Strona {0} z {1}"
+
+#: packages/ui/primitives/pdf-viewer.tsx:259
+msgid "Page {0} of {numPages}"
+msgstr "Strona {0} z {numPages}"
+
+#: packages/ui/primitives/document-password-dialog.tsx:62
+msgid "Password Required"
+msgstr "Wymagane hasło"
+
+#: packages/email/templates/forgot-password.tsx:19
+msgid "Password Reset Requested"
+msgstr "Żądanie resetowania hasła"
+
+#: packages/email/templates/reset-password.tsx:20
+msgid "Password Reset Successful"
+msgstr "Resetowanie hasła zakończone sukcesem"
+
+#: packages/email/template-components/template-reset-password.tsx:22
+msgid "Password updated!"
+msgstr "Hasło zaktualizowane!"
+
+#: packages/lib/constants/document.ts:16
+msgid "Pending"
+msgstr "Oczekujące"
+
+#: packages/email/templates/document-pending.tsx:19
+msgid "Pending Document"
+msgstr "Dokument oczekujący"
+
+#: packages/ui/primitives/document-flow/field-items-advanced-settings/checkbox-field.tsx:156
+msgid "Pick a number"
+msgstr "Wybierz numer"
+
+#: packages/ui/primitives/document-flow/field-items-advanced-settings/number-field.tsx:79
+#: packages/ui/primitives/document-flow/field-items-advanced-settings/number-field.tsx:84
+#: packages/ui/primitives/document-flow/field-items-advanced-settings/text-field.tsx:60
+msgid "Placeholder"
+msgstr "Zastępczy tekst"
+
+#: packages/email/template-components/template-document-invite.tsx:56
+msgid "Please {0} your document<0/>\"{documentName}\""
+msgstr "Proszę {0} Twój dokument<0/>\"{documentName}\""
+
+#: packages/email/templates/document-invite.tsx:50
+msgid "Please {action} your document {documentName}"
+msgstr "Proszę {action} Twój dokument {documentName}"
+
+#: packages/lib/jobs/definitions/emails/send-signing-email.ts:111
+msgid "Please {recipientActionVerb} this document"
+msgstr "Proszę {recipientActionVerb} ten dokument"
+
+#: packages/lib/jobs/definitions/emails/send-signing-email.ts:125
+msgid "Please {recipientActionVerb} this document created by your direct template"
+msgstr "Proszę {recipientActionVerb} ten dokument utworzony przez Twój bezpośredni szablon"
+
+#: packages/lib/jobs/definitions/emails/send-signing-email.ts:117
+msgid "Please {recipientActionVerb} your document"
+msgstr "Proszę {recipientActionVerb} Twój dokument"
+
+#: packages/lib/server-only/auth/send-confirmation-email.ts:67
+msgid "Please confirm your email"
+msgstr "Proszę potwierdzić swój email"
+
+#: packages/email/templates/confirm-email.tsx:17
+msgid "Please confirm your email address"
+msgstr "Proszę potwierdzić swój adres email"
+
+#: packages/ui/primitives/pdf-viewer.tsx:223
+#: packages/ui/primitives/pdf-viewer.tsx:238
+msgid "Please try again or contact our support."
+msgstr "Spróbuj ponownie lub skontaktuj się z naszym wsparciem."
+
+#: packages/ui/primitives/document-flow/types.ts:57
+#: packages/ui/primitives/template-flow/add-template-fields.tsx:775
+msgid "Radio"
+msgstr "Radio"
+
+#: packages/ui/primitives/document-flow/field-items-advanced-settings/radio-field.tsx:133
+msgid "Radio values"
+msgstr "Wartości radiowe"
+
+#: packages/ui/primitives/document-flow/field-items-advanced-settings/checkbox-field.tsx:186
+#: packages/ui/primitives/document-flow/field-items-advanced-settings/dropdown-field.tsx:147
+#: packages/ui/primitives/document-flow/field-items-advanced-settings/number-field.tsx:156
+#: packages/ui/primitives/document-flow/field-items-advanced-settings/radio-field.tsx:122
+#: packages/ui/primitives/document-flow/field-items-advanced-settings/text-field.tsx:133
+msgid "Read only"
+msgstr "Tylko do odczytu"
+
+#: packages/email/template-components/template-document-rejected.tsx:32
+msgid "Reason for rejection: {rejectionReason}"
+msgstr "Powód odrzucenia: {rejectionReason}"
+
+#: packages/ui/components/recipient/recipient-role-select.tsx:95
+msgid "Receives copy"
+msgstr "Otrzymuje kopię"
+
+#: packages/lib/utils/document-audit-logs.ts:338
+#: packages/lib/utils/document-audit-logs.ts:353
+msgid "Recipient"
+msgstr "Odbiorca"
+
+#: packages/ui/components/recipient/recipient-action-auth-select.tsx:39
+#: packages/ui/primitives/document-flow/add-settings.tsx:257
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:291
+msgid "Recipient action authentication"
+msgstr "Uwierzytelnianie akcji odbiorcy"
+
+#: packages/ui/components/document/document-email-checkboxes.tsx:89
+msgid "Recipient removed email"
+msgstr "E-mail usuniętego odbiorcy"
+
+#: packages/ui/components/document/document-email-checkboxes.tsx:50
+msgid "Recipient signing request email"
+msgstr "E-mail z prośbą o podpisanie przez odbiorcę"
+
+#: packages/ui/primitives/signature-pad/signature-pad.tsx:384
+msgid "Red"
+msgstr "Czerwony"
+
+#: packages/ui/primitives/document-flow/add-settings.tsx:371
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:461
+msgid "Redirect URL"
+msgstr "Adres URL przekierowania"
+
+#: packages/email/template-components/template-document-invite.tsx:96
+msgid "Reject Document"
+msgstr "Odrzuć dokument"
+
+#: packages/email/template-components/template-document-rejection-confirmed.tsx:22
+msgid "Rejection Confirmed"
+msgstr "Odmowa potwierdzona"
+
+#: packages/email/template-components/template-document-rejection-confirmed.tsx:34
+msgid "Rejection reason: {reason}"
+msgstr "Powód odrzucenia: {reason}"
+
+#: packages/lib/server-only/document/resend-document.tsx:192
+msgid "Reminder: {0}"
+msgstr "Przypomnienie: {0}"
+
+#: packages/lib/server-only/document/resend-document.tsx:132
+msgid "Reminder: {0} invited you to {recipientActionVerb} a document"
+msgstr "Przypomnienie: {0} zaprosił Cię do {recipientActionVerb} dokument"
+
+#: packages/lib/server-only/document/resend-document.tsx:121
+msgid "Reminder: Please {recipientActionVerb} this document"
+msgstr "Przypomnienie: Proszę {recipientActionVerb} ten dokument"
+
+#: packages/lib/server-only/document/resend-document.tsx:127
+msgid "Reminder: Please {recipientActionVerb} your document"
+msgstr "Przypomnienie: Proszę {recipientActionVerb} Twój dokument"
+
+#: packages/ui/primitives/document-flow/add-fields.tsx:1117
+msgid "Remove"
+msgstr "Usuń"
+
+#: packages/ui/primitives/document-flow/field-items-advanced-settings/checkbox-field.tsx:176
+#: packages/ui/primitives/document-flow/field-items-advanced-settings/dropdown-field.tsx:137
+#: packages/ui/primitives/document-flow/field-items-advanced-settings/number-field.tsx:146
+#: packages/ui/primitives/document-flow/field-items-advanced-settings/radio-field.tsx:112
+#: packages/ui/primitives/document-flow/field-items-advanced-settings/text-field.tsx:123
+msgid "Required field"
+msgstr "Wymagane pole"
+
+#: packages/ui/primitives/document-flow/add-subject.tsx:84
+msgid "Resend"
+msgstr "Wyślij ponownie"
+
+#: packages/email/template-components/template-forgot-password.tsx:33
+msgid "Reset Password"
+msgstr "Zresetuj hasło"
+
+#: packages/ui/components/document/document-share-button.tsx:147
+msgid "Rest assured, your document is strictly confidential and will never be shared. Only your signing experience will be highlighted. Share your personalized signing card to showcase your signature!"
+msgstr "Możesz być spokojny, Twój dokument jest ściśle poufny i nigdy nie zostanie udostępniony. Tylko Twoje doświadczenie podpisywania będzie wyróżnione. Podziel się swoją spersonalizowaną kartą podpisu, aby zaprezentować swój podpis!"
+
+#: packages/ui/primitives/data-table-pagination.tsx:55
+msgid "Rows per page"
+msgstr "Wiersze na stronę"
+
+#: packages/ui/primitives/document-flow/field-item-advanced-settings.tsx:355
+msgid "Save"
+msgstr "Zapisz"
+
+#: packages/ui/primitives/template-flow/add-template-fields.tsx:861
+msgid "Save Template"
+msgstr "Zapisz szablon"
+
+#: packages/ui/components/common/language-switcher-dialog.tsx:34
+msgid "Search languages..."
+msgstr "Szukaj języków..."
+
+#: packages/ui/primitives/document-flow/field-items-advanced-settings/dropdown-field.tsx:115
+#: packages/ui/primitives/document-flow/types.ts:59
+msgid "Select"
+msgstr "Wybierz"
+
+#: packages/ui/primitives/combobox.tsx:38
+msgid "Select an option"
+msgstr "Wybierz opcję"
+
+#: packages/ui/primitives/document-flow/field-items-advanced-settings/checkbox-field.tsx:139
+msgid "Select at least"
+msgstr "Wybierz co najmniej"
+
+#: packages/ui/primitives/document-flow/field-items-advanced-settings/dropdown-field.tsx:105
+msgid "Select default option"
+msgstr "Wybierz domyślną opcję"
+
+#: packages/ui/primitives/document-flow/add-subject.tsx:82
+#: packages/ui/primitives/document-flow/add-subject.tsx:85
+#: packages/ui/primitives/document-flow/send-document-action-dialog.tsx:34
+#: packages/ui/primitives/document-flow/send-document-action-dialog.tsx:64
+msgid "Send"
+msgstr "Wyślij"
+
+#: packages/ui/primitives/document-flow/send-document-action-dialog.tsx:41
+msgid "Send Document"
+msgstr "Wyślij dokument"
+
+#: packages/ui/components/document/document-email-checkboxes.tsx:158
+msgid "Send document completed email"
+msgstr "Wyślij e-mail ukończonego dokumentu"
+
+#: packages/ui/components/document/document-email-checkboxes.tsx:197
+msgid "Send document deleted email"
+msgstr "Wyślij e-mail usuniętego dokumentu"
+
+#: packages/ui/components/document/document-email-checkboxes.tsx:118
+msgid "Send document pending email"
+msgstr "Wyślij e-mail oczekującego dokumentu"
+
+#: packages/email/templates/confirm-team-email.tsx:101
+msgid "Send documents on behalf of the team using the email address"
+msgstr "Wyślij dokumenty w imieniu zespołu, używając adresu e-mail"
+
+#: packages/ui/components/document/document-email-checkboxes.tsx:79
+msgid "Send recipient removed email"
+msgstr "Wyślij e-mail usuniętego odbiorcy"
+
+#: packages/ui/components/document/document-email-checkboxes.tsx:40
+msgid "Send recipient signing request email"
+msgstr "Wyślij e-mail z prośbą o podpisanie przez odbiorcę"
+
+#: packages/ui/components/document/document-share-button.tsx:135
+msgid "Share Signature Card"
+msgstr "Udostępnij kartę podpisu"
+
+#: packages/lib/constants/template.ts:16
+msgid "Share the Link"
+msgstr "Udostępnij link"
+
+#: packages/ui/components/document/document-share-button.tsx:143
+msgid "Share your signing experience!"
+msgstr "Podziel się swoim doświadczeniem podpisywania!"
+
+#: packages/ui/primitives/document-flow/add-signers.tsx:709
+#: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:663
+msgid "Show advanced settings"
+msgstr "Pokaż ustawienia zaawansowane"
+
+#: packages/lib/constants/recipient-roles.ts:22
+msgid "Sign"
+msgstr "Podpisz"
+
+#: packages/email/template-components/template-document-invite.tsx:104
+msgid "Sign Document"
+msgstr "Podpisz dokument"
+
+#: packages/email/template-components/template-reset-password.tsx:34
+msgid "Sign In"
+msgstr "Zaloguj się"
+
+#: packages/ui/primitives/document-flow/add-fields.tsx:830
+#: packages/ui/primitives/document-flow/add-signature.tsx:323
+#: packages/ui/primitives/document-flow/field-icon.tsx:52
+#: packages/ui/primitives/document-flow/types.ts:49
+#: packages/ui/primitives/template-flow/add-template-fields.tsx:593
+msgid "Signature"
+msgstr "Podpis"
+
+#: packages/lib/constants/recipient-roles.ts:23
+msgid "Signed"
+msgstr "Podpisany"
+
+#: packages/lib/constants/recipient-roles.ts:25
+msgid "Signer"
+msgstr "Sygnatariusz"
+
+#: packages/lib/constants/recipient-roles.ts:26
+msgid "Signers"
+msgstr "Podpisujący"
+
+#: packages/ui/primitives/document-flow/add-signers.types.ts:36
+msgid "Signers must have unique emails"
+msgstr "Podpisujący muszą mieć unikalne emaile"
+
+#: packages/lib/constants/recipient-roles.ts:24
+msgid "Signing"
+msgstr "Podpisywanie"
+
+#: packages/lib/server-only/document/send-completed-email.ts:114
+#: packages/lib/server-only/document/send-completed-email.ts:194
+msgid "Signing Complete!"
+msgstr "Podpisywanie zakończone!"
+
+#: packages/lib/constants/recipient-roles.ts:66
+#~ msgid "SIGNING_REQUEST"
+#~ msgstr "SIGNING_REQUEST"
+
+#: packages/ui/primitives/document-flow/missing-signature-field-dialog.tsx:34
+msgid "Some signers have not been assigned a signature field. Please assign at least 1 signature field to each signer before proceeding."
+msgstr "Niektórzy sygnatariusze nie zostali przypisani do pola podpisu. Przypisz co najmniej 1 pole podpisu do każdego sygnatariusza przed kontynuowaniem."
+
+#: packages/ui/components/document/document-share-button.tsx:51
+msgid "Something went wrong"
+msgstr "Coś poszło nie tak"
+
+#: packages/ui/primitives/pdf-viewer.tsx:220
+#: packages/ui/primitives/pdf-viewer.tsx:235
+msgid "Something went wrong while loading the document."
+msgstr "Coś poszło nie tak podczas ładowania dokumentu."
+
+#: packages/ui/primitives/data-table.tsx:136
+msgid "Something went wrong."
+msgstr "Coś poszło nie tak."
+
+#: packages/ui/primitives/document-flow/document-flow-root.tsx:107
+msgid "Step <0>{step} of {maxStep}0>"
+msgstr "Krok <0>{step} z {maxStep}0>"
+
+#: packages/ui/primitives/document-flow/add-subject.tsx:143
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:318
+msgid "Subject <0>(Optional)0>"
+msgstr "Temat <0>(Opcjonalnie)0>"
+
+#: packages/ui/primitives/document-password-dialog.tsx:97
+msgid "Submit"
+msgstr "Prześlij"
+
+#: packages/lib/server-only/team/delete-team.ts:124
+msgid "Team \"{0}\" has been deleted on Documenso"
+msgstr "Zespół \"{0}\" został usunięty z Documenso"
+
+#: packages/lib/server-only/team/delete-team-email.ts:104
+msgid "Team email has been revoked for {0}"
+msgstr "Email zespołowy został anulowany dla {0}"
+
+#: packages/email/templates/team-email-removed.tsx:59
+msgid "Team email removed"
+msgstr "Email zespołowy usunięty"
+
+#: packages/email/templates/team-email-removed.tsx:29
+msgid "Team email removed for {teamName} on Documenso"
+msgstr "Email zespołowy usunięty dla {teamName} na Documenso"
+
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:145
+msgid "Template title"
+msgstr "Tytuł szablonu"
+
+#: packages/ui/primitives/document-flow/add-fields.tsx:960
+#: packages/ui/primitives/document-flow/types.ts:52
+#: packages/ui/primitives/template-flow/add-template-fields.tsx:723
+msgid "Text"
+msgstr "Tekst"
+
+#: packages/email/template-components/template-forgot-password.tsx:25
+msgid "That's okay, it happens! Click the button below to reset your password."
+msgstr "To w porządku, zdarza się! Kliknij przycisk poniżej, aby zresetować hasło."
+
+#: packages/ui/components/recipient/recipient-action-auth-select.tsx:44
+msgid "The authentication required for recipients to sign fields"
+msgstr "Uwierzytelnianie wymagane dla odbiorców do podpisania pól"
+
+#: packages/ui/components/document/document-global-auth-action-select.tsx:68
+msgid "The authentication required for recipients to sign the signature field."
+msgstr "Uwierzytelnianie wymagane dla odbiorców do podpisania pola podpisu."
+
+#: packages/ui/components/document/document-global-auth-access-select.tsx:67
+msgid "The authentication required for recipients to view the document."
+msgstr "Uwierzytelnianie wymagane dla odbiorców do wyświetlenia dokumentu."
+
+#~ msgid "The document owner has been notified of this rejection. No further action is required from you at this time."
+#~ msgstr "The document owner has been notified of this rejection. No further action is required from you at this time."
+
+#: packages/email/template-components/template-document-rejection-confirmed.tsx:39
+msgid "The document owner has been notified of this rejection. No further action is required from you at this time. The document owner may contact you with any questions regarding this rejection."
+msgstr "Właściciel dokumentu został poinformowany o tym odrzuceniu. W tej chwili nie są wymagane żadne dalsze działania z Twojej strony. Właściciel dokumentu może się z Tobą skontaktować z pytaniami dotyczącymi tego odrzucenia."
+
+#: packages/ui/components/document/document-send-email-message-helper.tsx:31
+msgid "The document's name"
+msgstr "Nazwa dokumentu"
+
+#: packages/email/templates/team-delete.tsx:37
+msgid "The following team has been deleted by its owner. You will no longer be able to access this team and its documents"
+msgstr "Następujący zespół został usunięty przez jego właściciela. Nie będziesz mógł już uzyskać dostępu do tego zespołu i jego dokumentów"
+
+#: packages/email/templates/team-delete.tsx:36
+msgid "The following team has been deleted by you"
+msgstr "Następujący zespół został usunięty przez Ciebie"
+
+#: packages/ui/primitives/document-password-dialog.tsx:52
+msgid "The password you have entered is incorrect. Please try again."
+msgstr "Wprowadzone hasło jest niepoprawne. Proszę spróbować ponownie."
+
+#: packages/email/template-components/template-document-super-delete.tsx:38
+msgid "The reason provided for deletion is the following:"
+msgstr "Podana przyczyna usunięcia jest następująca:"
+
+#: packages/ui/components/recipient/recipient-role-select.tsx:103
+msgid "The recipient is not required to take any action and receives a copy of the document after it is completed."
+msgstr "Odbiorca nie jest zobowiązany do podjęcia żadnych działań i otrzymuje kopię dokumentu po jego zakończeniu."
+
+#: packages/ui/components/recipient/recipient-role-select.tsx:60
+msgid "The recipient is required to approve the document for it to be completed."
+msgstr "Odbiorca musi zatwierdzić dokument, aby mógł być zakończony."
+
+#: packages/ui/components/recipient/recipient-role-select.tsx:39
+msgid "The recipient is required to sign the document for it to be completed."
+msgstr "Odbiorca musi podpisać dokument, aby mógł być zakończony."
+
+#: packages/ui/components/recipient/recipient-role-select.tsx:81
+msgid "The recipient is required to view the document for it to be completed."
+msgstr "Odbiorca musi wyświetlić dokument, aby mógł być zakończony."
+
+#: packages/ui/components/document/document-share-button.tsx:52
+msgid "The sharing link could not be created at this time. Please try again."
+msgstr "Nie udało się utworzyć linku udostępnienia w tym czasie. Proszę spróbować ponownie."
+
+#: packages/ui/components/document/document-share-button.tsx:47
+msgid "The sharing link has been copied to your clipboard."
+msgstr "Link do udostępniania został skopiowany do schowka."
+
+#: packages/ui/components/document/document-send-email-message-helper.tsx:25
+msgid "The signer's email"
+msgstr "Email sygnatariusza"
+
+#: packages/ui/components/document/document-send-email-message-helper.tsx:19
+msgid "The signer's name"
+msgstr "Imię sygnatariusza"
+
+#: packages/ui/primitives/document-flow/add-subject.tsx:243
+msgid "The signing link has been copied to your clipboard."
+msgstr "Link do podpisu został skopiowany do schowka."
+
+#: packages/email/templates/team-email-removed.tsx:63
+msgid "The team email <0>{teamEmail}0> has been removed from the following team"
+msgstr "Email zespołowy <0>{teamEmail}0> został usunięty z następującego zespołu"
+
+#: packages/ui/components/document/document-global-auth-action-select.tsx:72
+msgid "This can be overriden by setting the authentication requirements directly on each recipient in the next step."
+msgstr "To można nadpisać, ustawiając wymagania dotyczące uwierzytelniania bezpośrednio na każdym odbiorcy w następnym kroku."
+
+#: packages/email/template-components/template-document-super-delete.tsx:31
+msgid "This document can not be recovered, if you would like to dispute the reason for future documents please contact support."
+msgstr "Dokument ten nie może być odzyskany. Jeśli chcesz zakwestionować przyczynę przyszłych dokumentów, skontaktuj się z administracją."
+
+#: packages/ui/primitives/document-flow/add-fields.tsx:764
+msgid "This document has already been sent to this recipient. You can no longer edit this recipient."
+msgstr "Ten dokument został już wysłany do tego odbiorcy. Nie można już edytować tego odbiorcy."
+
+#: packages/ui/primitives/document-password-dialog.tsx:66
+msgid "This document is password protected. Please enter the password to view the document."
+msgstr "Ten dokument jest zabezpieczony hasłem. Proszę wprowadzić hasło, aby wyświetlić dokument."
+
+#: packages/email/template-components/template-footer.tsx:17
+msgid "This document was sent using <0>Documenso.0>"
+msgstr "Ten dokument został wysłany za pomocą <0>Documenso.0>"
+
+#~ msgid "This email confirms that you have rejected the document \"{documentName}\" sent by {documentOwnerName}."
+#~ msgstr "This email confirms that you have rejected the document \"{documentName}\" sent by {documentOwnerName}."
+
+#: packages/email/template-components/template-document-rejection-confirmed.tsx:26
+msgid "This email confirms that you have rejected the document <0>\"{documentName}\"0> sent by {documentOwnerName}."
+msgstr "Ten email potwierdza, że odrzuciłeś dokument <0>\"{documentName}\"0> wysłany przez {documentOwnerName}."
+
+#: packages/ui/components/document/document-email-checkboxes.tsx:94
+msgid "This email is sent to the recipient if they are removed from a pending document."
+msgstr "Ten e-mail jest wysyłany do odbiorcy, jeśli zostanie usunięty z oczekującego dokumentu."
+
+#: packages/ui/components/document/document-email-checkboxes.tsx:55
+msgid "This email is sent to the recipient requesting them to sign the document."
+msgstr "Ten e-mail jest wysyłany do odbiorcy, prosząc go o podpisanie dokumentu."
+
+#: packages/ui/components/document/document-email-checkboxes.tsx:133
+msgid "This email will be sent to the recipient who has just signed the document, if there are still other recipients who have not signed yet."
+msgstr "Ten e-mail zostanie wysłany do odbiorcy, który właśnie podpisał dokument, jeśli są jeszcze inni odbiorcy, którzy nie podpisali."
+
+#: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:581
+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."
+msgstr "To pole nie może być modyfikowane ani usuwane. Po udostępnieniu bezpośredniego linku do tego szablonu lub dodaniu go do swojego publicznego profilu, każdy, kto się w nim dostanie, może wpisać swoje imię i email oraz wypełnić przypisane mu pola."
+
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:233
+msgid "This is how the document will reach the recipients once the document is ready for signing."
+msgstr "W ten sposób dokument dotrze do odbiorców, gdy tylko dokument będzie gotowy do podpisania."
+
+#: packages/ui/primitives/document-flow/add-fields.tsx:1097
+msgid "This recipient can no longer be modified as they have signed a field, or completed the document."
+msgstr "Ten odbiorca nie może być już modyfikowany, ponieważ podpisał pole lub ukończył dokument."
+
+#: packages/ui/primitives/document-flow/add-signers.tsx:194
+msgid "This signer has already signed the document."
+msgstr "Ten sygnatariusz już podpisał dokument."
+
+#: packages/ui/components/document/document-email-checkboxes.tsx:212
+msgid "This will be sent to all recipients if a pending document has been deleted."
+msgstr "To zostanie wysłane do wszystkich odbiorców, jeśli oczekujący dokument został usunięty."
+
+#: packages/ui/components/document/document-email-checkboxes.tsx:173
+msgid "This will be sent to all recipients once the document has been fully completed."
+msgstr "To zostanie wysłane do wszystkich odbiorców, gdy dokument będzie całkowicie ukończony."
+
+#: packages/ui/components/recipient/recipient-action-auth-select.tsx:48
+msgid "This will override any global settings."
+msgstr "To zastąpi wszystkie globalne ustawienia."
+
+#: packages/ui/primitives/document-flow/add-settings.tsx:347
+#: packages/ui/primitives/template-flow/add-template-settings.tsx:438
+msgid "Time Zone"
+msgstr "Strefa czasowa"
+
+#: packages/ui/primitives/document-flow/add-settings.tsx:155
+msgid "Title"
+msgstr "Tytuł"
+
+#: packages/ui/primitives/document-flow/add-fields.tsx:1080
+#: packages/ui/primitives/template-flow/add-template-fields.tsx:841
+msgid "To proceed further, please set at least one value for the {0} field."
+msgstr "Aby kontynuować, ustaw przynajmniej jedną wartość dla pola {0}."
+
+#: packages/ui/primitives/document-flow/add-subject.tsx:86
+msgid "Update"
+msgstr "Zaktualizuj"
+
+#: packages/lib/constants/template.ts:13
+msgid "Update the role and add fields as required for the direct recipient. The individual who uses the direct link will sign the document as the direct recipient."
+msgstr "Zaktualizuj rolę i dodaj pola, jeśli to konieczne dla bezpośredniego odbiorcy. Osoba, która korzysta z bezpośredniego linku, podpisze dokument jako bezpośredni odbiorca."
+
+#: packages/ui/primitives/document-dropzone.tsx:168
+msgid "Upgrade"
+msgstr "Ulepsz"
+
+#: packages/ui/primitives/document-dropzone.tsx:70
+msgid "Upload Template Document"
+msgstr "Prześlij dokument szablonu"
+
+#: packages/ui/primitives/document-flow/field-items-advanced-settings/checkbox-field.tsx:132
+#: packages/ui/primitives/document-flow/field-items-advanced-settings/number-field.tsx:167
+msgid "Validation"
+msgstr "Walidacja"
+
+#: packages/ui/primitives/document-flow/field-items-advanced-settings/number-field.tsx:91
+#: packages/ui/primitives/document-flow/field-items-advanced-settings/number-field.tsx:96
+msgid "Value"
+msgstr "Wartość"
+
+#: packages/email/templates/confirm-team-email.tsx:71
+msgid "Verify your team email address"
+msgstr "Zweryfikuj swój adres e-mail zespołu"
+
+#: packages/lib/constants/recipient-roles.ts:29
+msgid "View"
+msgstr "Widok"
+
+#: packages/email/templates/confirm-team-email.tsx:95
+msgid "View all documents sent to and from this email address"
+msgstr "Wyświetl wszystkie dokumenty wysłane do i z tego adresu e-mail"
+
+#: packages/email/templates/document-created-from-direct-template.tsx:75
+msgid "View document"
+msgstr "Zobacz dokument"
+
+#: packages/email/template-components/template-document-invite.tsx:105
+#: packages/email/template-components/template-document-rejected.tsx:44
+#: packages/ui/primitives/document-flow/add-subject.tsx:90
+#: packages/ui/primitives/document-flow/add-subject.tsx:91
+msgid "View Document"
+msgstr "Wyświetl dokument"
+
+#: packages/email/template-components/template-document-self-signed.tsx:79
+msgid "View plans"
+msgstr "Zobacz plany"
+
+#: packages/lib/constants/recipient-roles.ts:67
+#~ msgid "VIEW_REQUEST"
+#~ msgstr "VIEW_REQUEST"
+
+#: packages/lib/constants/recipient-roles.ts:30
+msgid "Viewed"
+msgstr "Wyświetlono"
+
+#: packages/lib/constants/recipient-roles.ts:32
+msgid "Viewer"
+msgstr "Użytkownik widoku"
+
+#: packages/lib/constants/recipient-roles.ts:33
+msgid "Viewers"
+msgstr "Widokowcy"
+
+#: packages/lib/constants/recipient-roles.ts:31
+msgid "Viewing"
+msgstr "Wyświetlanie"
+
+#: packages/email/template-components/template-document-pending.tsx:31
+msgid "Waiting for others"
+msgstr "Czekam na innych"
+
+#: packages/lib/server-only/document/send-pending-email.ts:96
+msgid "Waiting for others to complete signing."
+msgstr "Czekam na innych, aby zakończyć podpisywanie."
+
+#: packages/ui/primitives/document-flow/add-subject.tsx:205
+msgid "We will generate signing links for with you, which you can send to the recipients through your method of choice."
+msgstr "Wygenerujemy linki do podpisu dla Ciebie, które możesz wysłać do odbiorców w wybrany przez siebie sposób."
+
+#: packages/ui/primitives/document-flow/add-subject.tsx:201
+msgid "We won't send anything to notify recipients."
+msgstr "Nie wyślemy nic, aby powiadomić odbiorców."
+
+#: packages/email/template-components/template-document-pending.tsx:41
+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 innych sygnatariuszy, aby podpisać ten dokument.<0/>Powiadomimy Cię, gdy będzie gotowy."
+
+#: packages/email/templates/reset-password.tsx:65
+msgid "We've changed your password as you asked. You can now sign in with your new password."
+msgstr "Zmieniłem hasło, jak prosiłeś. Teraz możesz zalogować się za pomocą nowego hasła."
+
+#: packages/email/template-components/template-confirmation-email.tsx:21
+msgid "Welcome to Documenso!"
+msgstr "Witamy w Documenso!"
+
+#: packages/lib/utils/document-audit-logs.ts:258
+msgid "You"
+msgstr "Ty"
+
+#: packages/ui/primitives/document-flow/send-document-action-dialog.tsx:44
+msgid "You are about to send this document to the recipients. Are you sure you want to continue?"
+msgstr "Zaraz wyślesz ten dokument do odbiorców. Czy na pewno chcesz kontynuować?"
+
+#: packages/email/template-components/template-confirmation-email.tsx:38
+msgid "You can also copy and paste this link into your browser: {confirmationLink} (link expires in 1 hour)"
+msgstr "Możesz także skopiować i wkleić ten link do przeglądarki: {confirmationLink} (link wygasa za 1 godzinę)"
+
+#: packages/email/templates/confirm-team-email.tsx:106
+msgid "You can revoke access at any time in your team settings on Documenso <0>here.0>"
+msgstr "Możesz w każdej chwili cofnąć dostęp w ustawieniach zespołu na Documenso <0>tutaj.0>"
+
+#: packages/ui/components/document/document-send-email-message-helper.tsx:11
+msgid "You can use the following variables in your message:"
+msgstr "Możesz użyć następujących zmiennych w swojej wiadomości:"
+
+#: packages/email/template-components/template-document-rejected.tsx:37
+msgid "You can view the document and its status by clicking the button below."
+msgstr "Możesz zobaczyć dokument i jego status, klikając przycisk poniżej."
+
+#: packages/ui/primitives/document-dropzone.tsx:43
+msgid "You cannot upload documents at this time."
+msgstr "Nie możesz przesyłać dokumentów w tej chwili."
+
+#: packages/email/template-components/template-document-cancel.tsx:35
+msgid "You don't need to sign it anymore."
+msgstr "Nie musisz go już podpisywać."
+
+#: packages/lib/server-only/team/create-team-member-invites.ts:186
+msgid "You have been invited to join {0} on Documenso"
+msgstr "Zostałeś zaproszony do dołączenia do {0} na Documenso"
+
+#: packages/email/templates/team-invite.tsx:76
+msgid "You have been invited to join the following team"
+msgstr "Zostałeś zaproszony do dołączenia do następującego zespołu"
+
+#: packages/lib/server-only/recipient/set-recipients-for-document.ts:329
+msgid "You have been removed from a document"
+msgstr "Zostałeś usunięty z dokumentu"
+
+#: packages/lib/server-only/team/request-team-ownership-transfer.ts:114
+msgid "You have been requested to take ownership of team {0} on Documenso"
+msgstr "Poproszono Cię o przejęcie własności zespołu {0} na Documenso"
+
+#: packages/lib/jobs/definitions/emails/send-signing-email.ts:115
+#: packages/lib/server-only/document/resend-document.tsx:125
+msgid "You have initiated the document {0} that requires you to {recipientActionVerb} it."
+msgstr "Rozpocząłeś dokument {0}, który wymaga, abyś go {recipientActionVerb}."
+
+#: packages/ui/primitives/document-dropzone.tsx:69
+msgid "You have reached your document limit."
+msgstr "Osiągnąłeś limit dokumentów."
+
+#: packages/email/templates/document-rejection-confirmed.tsx:27
+msgid "You have rejected the document '{documentName}'"
+msgstr "Odrzuciłeś dokument '{documentName}'"
+
+#~ msgid "You have rejected the document \"{documentName}\""
+#~ msgstr "You have rejected the document \"{documentName}\""
+
+#: packages/email/template-components/template-document-self-signed.tsx:42
+msgid "You have signed “{documentName}”"
+msgstr "Podpisałeś „{documentName}”"
+
+#: packages/email/template-components/template-document-super-delete.tsx:23
+msgid "Your document has been deleted by an admin!"
+msgstr "Twój dokument został usunięty przez administratora!"
+
+#: packages/email/template-components/template-reset-password.tsx:26
+msgid "Your password has been updated."
+msgstr "Twoje hasło zostało zaktualizowane."
+
+#: packages/email/templates/team-delete.tsx:28
+#: packages/email/templates/team-delete.tsx:32
+msgid "Your team has been deleted"
+msgstr "Twój zespół został usunięty"
+
diff --git a/packages/lib/translations/pl/marketing.po b/packages/lib/translations/pl/marketing.po
new file mode 100644
index 000000000..3562769bb
--- /dev/null
+++ b/packages/lib/translations/pl/marketing.po
@@ -0,0 +1,605 @@
+msgid ""
+msgstr ""
+"POT-Creation-Date: 2024-07-24 13:01+1000\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: @lingui/cli\n"
+"Language: pl\n"
+"Project-Id-Version: documenso-app\n"
+"Report-Msgid-Bugs-To: \n"
+"PO-Revision-Date: 2024-11-20 11:56\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"
+"X-Crowdin-Project: documenso-app\n"
+"X-Crowdin-Project-ID: 694691\n"
+"X-Crowdin-Language: pl\n"
+"X-Crowdin-File: marketing.po\n"
+"X-Crowdin-File-ID: 6\n"
+
+#: apps/marketing/src/app/(marketing)/blog/page.tsx:45
+msgid "{0}"
+msgstr "{0}"
+
+#: apps/marketing/src/components/(marketing)/pricing-table.tsx:100
+msgid "5 standard documents per month"
+msgstr "5 standard documents per month"
+
+#: apps/marketing/src/components/(marketing)/pricing-table.tsx:198
+msgid "5 Users Included"
+msgstr "5 użytkowników w cenie"
+
+#: apps/marketing/src/components/(marketing)/faster-smarter-beautiful-bento.tsx:34
+msgid "A 10x better signing experience."
+msgstr "10 razy lepsze doświadczenie podpisywania."
+
+#: apps/marketing/src/app/(marketing)/singleplayer/client.tsx:51
+msgid "Add document"
+msgstr "Dodaj dokument"
+
+#: apps/marketing/src/components/(marketing)/pricing-table.tsx:201
+msgid "Add More Users for {0}"
+msgstr "Dodaj więcej użytkowników za {0}"
+
+#: apps/marketing/src/app/(marketing)/open/page.tsx:165
+msgid "All our metrics, finances, and learnings are public. We believe in transparency and want to share our journey with you. You can read more about why here: <0>Announcing Open Metrics0>"
+msgstr "Wszystkie nasze metryki, finanse i nauki są publiczne. Wierzymy w przejrzystość i chcemy dzielić się naszą podróżą z Tobą. Możesz przeczytać więcej o tym, dlaczego tutaj: <0>Ogłaszamy otwarte metryki0>"
+
+#: apps/marketing/src/app/(marketing)/open/funding-raised.tsx:58
+#: apps/marketing/src/app/(marketing)/open/funding-raised.tsx:65
+msgid "Amount Raised"
+msgstr "Zebrana kwota"
+
+#: apps/marketing/src/components/(marketing)/pricing-table.tsx:145
+#: apps/marketing/src/components/(marketing)/pricing-table.tsx:189
+msgid "API Access"
+msgstr "Dostęp do API"
+
+#: apps/marketing/src/components/(marketing)/faster-smarter-beautiful-bento.tsx:67
+msgid "Beautiful."
+msgstr "Piękny."
+
+#: apps/marketing/src/components/(marketing)/faster-smarter-beautiful-bento.tsx:69
+msgid "Because signing should be celebrated. That’s why we care about the smallest detail in our product."
+msgstr "Ponieważ podpisywanie powinno być celebrowane. Dlatego dbamy o najmniejszy detal w naszym produkcie."
+
+#: apps/marketing/src/components/(marketing)/footer.tsx:35
+#: apps/marketing/src/components/(marketing)/header.tsx:57
+#: apps/marketing/src/components/(marketing)/mobile-navigation.tsx:36
+msgid "Blog"
+msgstr "Blog"
+
+#: apps/marketing/src/components/(marketing)/open-build-template-bento.tsx:64
+msgid "Build on top."
+msgstr "Buduj na szczycie."
+
+#: apps/marketing/src/app/(marketing)/pricing/page.tsx:163
+msgid "Can I use Documenso commercially?"
+msgstr "Czy mogę używać Documenso komercyjnie?"
+
+#: apps/marketing/src/components/(marketing)/footer.tsx:42
+msgid "Careers"
+msgstr "Kariera"
+
+#: apps/marketing/src/components/(marketing)/footer.tsx:36
+msgid "Changelog"
+msgstr "Dziennik zmian"
+
+#: apps/marketing/src/components/(marketing)/open-build-template-bento.tsx:85
+msgid "Choose a template from the community app store. Or submit your own template for others to use."
+msgstr "Wybierz szablon z sklepu aplikacji społeczności. Lub przekaż swój własny szablon, aby inni mogli z niego korzystać."
+
+#: apps/marketing/src/app/(marketing)/open/page.tsx:219
+msgid "Community"
+msgstr "Społeczność"
+
+#: apps/marketing/src/app/(marketing)/open/monthly-completed-documents-chart.tsx:55
+msgid "Completed Documents"
+msgstr "Zakończone dokumenty"
+
+#: apps/marketing/src/app/(marketing)/open/monthly-completed-documents-chart.tsx:33
+msgid "Completed Documents per Month"
+msgstr "Zakończone dokumenty na miesiąc"
+
+#: apps/marketing/src/components/(marketing)/share-connect-paid-widget-bento.tsx:65
+msgid "Connections"
+msgstr "Połączenia"
+
+#: apps/marketing/src/components/(marketing)/enterprise.tsx:35
+msgid "Contact Us"
+msgstr "Skontaktuj się z nami"
+
+#: apps/marketing/src/components/(marketing)/share-connect-paid-widget-bento.tsx:67
+msgid "Create connections and automations with Zapier and more to integrate with your favorite tools."
+msgstr "Twórz połączenia i automatyzacje z Zapier i innymi, aby zintegrować z ulubionymi narzędziami."
+
+#: apps/marketing/src/components/(marketing)/call-to-action.tsx:23
+msgid "Create your account and start using state-of-the-art document signing. Open and beautiful signing is within your grasp."
+msgstr "Utwórz konto i rozpocznij korzystanie z nowoczesnego podpisywania dokumentów. Otwarty i piękny podpis jest w Twoim zasięgu."
+
+#: apps/marketing/src/app/(marketing)/open/tooltip.tsx:35
+msgid "Customers with an Active Subscriptions."
+msgstr "Klienci z aktywnymi subskrypcjami."
+
+#: apps/marketing/src/components/(marketing)/open-build-template-bento.tsx:33
+msgid "Customise and expand."
+msgstr "Dostosuj i rozwijaj."
+
+#: apps/marketing/src/components/(marketing)/footer.tsx:38
+msgid "Design"
+msgstr "Projekt"
+
+#: apps/marketing/src/app/(marketing)/pricing/page.tsx:44
+msgid "Designed for every stage of your journey."
+msgstr "Zaprojektowane na każdy etap Twojej podróży."
+
+#: apps/marketing/src/components/(marketing)/carousel.tsx:40
+msgid "Direct Link"
+msgstr "Bezpośredni link"
+
+#: apps/marketing/src/app/(marketing)/pricing/page.tsx:181
+msgid "Documenso is a community effort to create an open and vibrant ecosystem around a tool, everybody is free to use and adapt. By being truly open we want to create trusted infrastructure for the future of the internet."
+msgstr "Documenso to społeczny wysiłek na rzecz stworzenia otwartego i żywotnego ekosystemu wokół narzędzia, z którego każdy może korzystać i dostosowywać. Bycie naprawdę otwartym oznacza tworzenie zaufanej infrastruktury dla przyszłości internetu."
+
+#: apps/marketing/src/app/(marketing)/open/typefully.tsx:28
+msgid "Documenso on X"
+msgstr "Documenso na X"
+
+#: apps/marketing/src/components/(marketing)/hero.tsx:104
+msgid "Document signing,<0/>finally open source."
+msgstr "Podpisywanie dokumentów,<0/>w końcu open source."
+
+#: apps/marketing/src/components/(marketing)/footer.tsx:33
+#: apps/marketing/src/components/(marketing)/header.tsx:50
+#: apps/marketing/src/components/(marketing)/mobile-navigation.tsx:28
+msgid "Documentation"
+msgstr "Dokumentacja"
+
+#: apps/marketing/src/components/(marketing)/share-connect-paid-widget-bento.tsx:110
+msgid "Easily embed Documenso into your product. Simply copy and paste our react widget into your application."
+msgstr "Łatwe osadzenie Documenso w Twoim produkcie. Po prostu skopiuj i wklej nasz widget react do swojej aplikacji."
+
+#: apps/marketing/src/components/(marketing)/share-connect-paid-widget-bento.tsx:46
+msgid "Easy Sharing."
+msgstr "Łatwe udostępnianie."
+
+#: apps/marketing/src/components/(marketing)/pricing-table.tsx:148
+#: apps/marketing/src/components/(marketing)/pricing-table.tsx:192
+msgid "Email and Discord Support"
+msgstr "Wsparcie E-mail i Discord"
+
+#: apps/marketing/src/app/(marketing)/open/team-members.tsx:43
+msgid "Engagement"
+msgstr "Zaangażowanie"
+
+#: apps/marketing/src/app/(marketing)/singleplayer/client.tsx:64
+msgid "Enter your details."
+msgstr "Wprowadź swoje dane."
+
+#: apps/marketing/src/components/(marketing)/enterprise.tsx:16
+msgid "Enterprise Compliance, License or Technical Needs?"
+msgstr "Zgodność z przepisami dotyczącymi przedsiębiorstw, licencje lub potrzeby techniczne?"
+
+#: apps/marketing/src/components/(marketing)/pricing-table.tsx:128
+msgid "Everything you need for a great signing experience."
+msgstr "Wszystko, czego potrzebujesz, aby mieć wspaniałe doświadczenie podpisywania."
+
+#: apps/marketing/src/components/(marketing)/faster-smarter-beautiful-bento.tsx:45
+msgid "Fast."
+msgstr "Szybkie."
+
+#: apps/marketing/src/components/(marketing)/faster-smarter-beautiful-bento.tsx:36
+msgid "Faster, smarter and more beautiful."
+msgstr "Szybszy, mądrzejszy i piękniejszy."
+
+#: apps/marketing/src/app/(marketing)/open/page.tsx:210
+msgid "Finances"
+msgstr "Finanse"
+
+#: apps/marketing/src/app/(marketing)/open/typefully.tsx:38
+msgid "Follow us on X"
+msgstr "Śledź nas na X"
+
+#: apps/marketing/src/components/(marketing)/pricing-table.tsx:172
+msgid "For companies looking to scale across multiple teams."
+msgstr "Dla firm, które chcą się rozwijać w wielu zespołach."
+
+#: apps/marketing/src/components/(marketing)/pricing-table.tsx:85
+msgid "For small teams and individuals with basic needs."
+msgstr "Dla małych zespołów i osób z podstawowymi potrzebami."
+
+#: apps/marketing/src/components/(marketing)/pricing-table.tsx:80
+msgid "Free"
+msgstr "Darmowy"
+
+#: apps/marketing/src/app/(marketing)/blog/page.tsx:26
+msgid "From the blog"
+msgstr "Z bloga"
+
+#: apps/marketing/src/app/(marketing)/open/data.ts:9
+#: apps/marketing/src/app/(marketing)/open/data.ts:17
+#: apps/marketing/src/app/(marketing)/open/data.ts:25
+#: apps/marketing/src/app/(marketing)/open/data.ts:33
+#: apps/marketing/src/app/(marketing)/open/data.ts:41
+#: apps/marketing/src/app/(marketing)/open/data.ts:49
+msgid "Full-Time"
+msgstr "Pełnoetatowy"
+
+#: apps/marketing/src/components/(marketing)/share-connect-paid-widget-bento.tsx:87
+msgid "Get paid (Soon)."
+msgstr "Zapłać (Wkrótce)."
+
+#: apps/marketing/src/components/(marketing)/call-to-action.tsx:31
+msgid "Get started"
+msgstr "Rozpocznij"
+
+#: apps/marketing/src/app/(marketing)/pricing/page.tsx:75
+msgid "Get Started"
+msgstr "Rozpocznij"
+
+#: apps/marketing/src/app/(marketing)/pricing/page.tsx:47
+msgid "Get started today."
+msgstr "Rozpocznij dzisiaj."
+
+#: apps/marketing/src/app/(marketing)/blog/page.tsx:30
+msgid "Get the latest news from Documenso, including product updates, team announcements and more!"
+msgstr "Otrzymaj najnowsze wiadomości od Documenso, w tym aktualizacje produktów, ogłoszenia zespołowe i inne!"
+
+#: apps/marketing/src/app/(marketing)/open/page.tsx:233
+msgid "GitHub: Total Merged PRs"
+msgstr "GitHub: Całkowita liczba scalonych PR-ów"
+
+#: apps/marketing/src/app/(marketing)/open/page.tsx:251
+msgid "GitHub: Total Open Issues"
+msgstr "GitHub: Całkowita liczba otwartych problemów"
+
+#: apps/marketing/src/app/(marketing)/open/page.tsx:225
+msgid "GitHub: Total Stars"
+msgstr "GitHub: Całkowita liczba gwiazdek"
+
+#: apps/marketing/src/app/(marketing)/open/salary-bands.tsx:23
+msgid "Global Salary Bands"
+msgstr "Globalne stawki płacy"
+
+#: apps/marketing/src/app/(marketing)/open/page.tsx:261
+msgid "Growth"
+msgstr "Wzrost"
+
+#: apps/marketing/src/app/(marketing)/pricing/page.tsx:134
+msgid "How can I contribute?"
+msgstr "Jak mogę się przyczynić?"
+
+#: apps/marketing/src/app/(marketing)/pricing/page.tsx:105
+msgid "How do you handle my data?"
+msgstr "Jak radzisz sobie z moimi danymi?"
+
+#: apps/marketing/src/components/(marketing)/pricing-table.tsx:118
+msgid "Individual"
+msgstr "Indywidualny"
+
+#: apps/marketing/src/components/(marketing)/share-connect-paid-widget-bento.tsx:89
+msgid "Integrated payments with Stripe so you don’t have to worry about getting paid."
+msgstr "Zintegrowane płatności z Stripe, więc nie musisz się martwić o to, aby otrzymać zapłatę."
+
+#: apps/marketing/src/components/(marketing)/share-connect-paid-widget-bento.tsx:35
+msgid "Integrates with all your favourite tools."
+msgstr "Integruje się ze wszystkimi Twoimi ulubionymi narzędziami."
+
+#: apps/marketing/src/app/(marketing)/open/page.tsx:289
+msgid "Is there more?"
+msgstr "Czy jest więcej?"
+
+#: apps/marketing/src/components/(marketing)/open-build-template-bento.tsx:44
+msgid "It’s up to you. Either clone our repository or rely on our easy to use hosting solution."
+msgstr "To zależy od Ciebie. Albo sklonuj nasze repozytorium, albo polegaj na naszym łatwym w użyciu rozwiązaniu hostingowym."
+
+#: apps/marketing/src/app/(marketing)/open/team-members.tsx:49
+msgid "Join Date"
+msgstr "Data przystąpienia"
+
+#: apps/marketing/src/components/(marketing)/call-to-action.tsx:19
+msgid "Join the Open Signing Movement"
+msgstr "Dołącz do ruchu otwartego podpisywania"
+
+#: apps/marketing/src/app/(marketing)/open/team-members.tsx:46
+msgid "Location"
+msgstr "Lokalizacja"
+
+#: apps/marketing/src/components/(marketing)/open-build-template-bento.tsx:66
+msgid "Make it your own through advanced customization and adjustability."
+msgstr "Spraw, aby było to Twoje dzięki zaawansowanej personalizacji i elastyczności."
+
+#: apps/marketing/src/app/(marketing)/open/page.tsx:199
+msgid "Merged PR's"
+msgstr "Scalone PR-y"
+
+#: apps/marketing/src/app/(marketing)/open/page.tsx:234
+msgid "Merged PRs"
+msgstr "Scalone PR"
+
+#: apps/marketing/src/components/(marketing)/pricing-table.tsx:40
+msgid "Monthly"
+msgstr "Miesięcznie"
+
+#: apps/marketing/src/app/(marketing)/open/team-members.tsx:34
+msgid "Name"
+msgstr "Nazwa"
+
+#: apps/marketing/src/app/(marketing)/open/monthly-new-users-chart.tsx:30
+#: apps/marketing/src/app/(marketing)/open/monthly-new-users-chart.tsx:43
+#: apps/marketing/src/app/(marketing)/open/monthly-new-users-chart.tsx:52
+msgid "New Users"
+msgstr "Nowi użytkownicy"
+
+#: apps/marketing/src/components/(marketing)/pricing-table.tsx:106
+msgid "No credit card required"
+msgstr "Nie jest wymagana karta kredytowa"
+
+#: apps/marketing/src/components/(marketing)/callout.tsx:29
+#: apps/marketing/src/components/(marketing)/hero.tsx:125
+msgid "No Credit Card required"
+msgstr "Nie jest wymagana karta kredytowa"
+
+#: apps/marketing/src/app/(marketing)/pricing/page.tsx:61
+msgid "None of these work for you? Try self-hosting!"
+msgstr "Żaden z tych wariantów nie działa dla Ciebie? Spróbuj samodzielnego hostingu!"
+
+#: apps/marketing/src/app/(marketing)/open/page.tsx:194
+#: apps/marketing/src/app/(marketing)/open/page.tsx:252
+msgid "Open Issues"
+msgstr "Otwarte problemy"
+
+#: apps/marketing/src/components/(marketing)/open-build-template-bento.tsx:42
+msgid "Open Source or Hosted."
+msgstr "Oprogramowanie otwarte lub hostowane."
+
+#: apps/marketing/src/app/(marketing)/open/page.tsx:161
+#: apps/marketing/src/components/(marketing)/footer.tsx:37
+#: apps/marketing/src/components/(marketing)/header.tsx:64
+#: apps/marketing/src/components/(marketing)/mobile-navigation.tsx:40
+msgid "Open Startup"
+msgstr "Otwarte startupy"
+
+#: apps/marketing/src/components/(marketing)/footer.tsx:41
+msgid "OSS Friends"
+msgstr "Przyjaciele OSS"
+
+#: apps/marketing/src/components/(marketing)/faster-smarter-beautiful-bento.tsx:91
+msgid "Our custom templates come with smart rules that can help you save time and energy."
+msgstr "Nasze niestandardowe szablony mają inteligentne zasady, które mogą pomóc Ci zaoszczędzić czas i energię."
+
+#: apps/marketing/src/components/(marketing)/enterprise.tsx:20
+msgid "Our Enterprise License is great for large organizations looking to switch to Documenso for all their signing needs. It's available for our cloud offering as well as self-hosted setups and offers a wide range of compliance and Adminstration Features."
+msgstr "Nasza licencja dla przedsiębiorstw jest doskonała dla dużych organizacji szukających zmiany na Documenso dla wszystkich swoich potrzeb związanych z podpisywaniem. Jest dostępna zarówno w naszej chmurze, jak i w ustawieniach do samodzielnego hostingu i oferuje szeroki zakres funkcji zgodności i administracyjnych."
+
+#: apps/marketing/src/app/(marketing)/pricing/page.tsx:65
+msgid "Our self-hosted option is great for small teams and individuals who need a simple solution. You can use our docker based setup to get started in minutes. Take control with full customizability and data ownership."
+msgstr "Nasza opcja hostingu własnego jest świetna dla małych zespołów i osób, które potrzebują prostego rozwiązania. Możesz użyć naszego zestawu opartego na dockerze, aby rozpocząć w ciągu kilku minut. Przejmij kontrolę z pełną możliwością dostosowania i własnością danych."
+
+#: apps/marketing/src/components/(marketing)/pricing-table.tsx:151
+msgid "Premium Profile Name"
+msgstr "Nazwa profilu premium"
+
+#: apps/marketing/src/app/(marketing)/pricing/page.tsx:40
+#: apps/marketing/src/components/(marketing)/footer.tsx:31
+#: apps/marketing/src/components/(marketing)/header.tsx:42
+#: apps/marketing/src/components/(marketing)/mobile-navigation.tsx:24
+msgid "Pricing"
+msgstr "Cennik"
+
+#: apps/marketing/src/components/(marketing)/footer.tsx:43
+#: apps/marketing/src/components/(marketing)/mobile-navigation.tsx:53
+msgid "Privacy"
+msgstr "Prywatność"
+
+#: apps/marketing/src/components/(marketing)/carousel.tsx:58
+msgid "Profile"
+msgstr "Profil"
+
+#: apps/marketing/src/components/(marketing)/share-connect-paid-widget-bento.tsx:108
+msgid "React Widget (Soon)."
+msgstr "Widget React (Wkrótce)."
+
+#: apps/marketing/src/components/(marketing)/share-connect-paid-widget-bento.tsx:48
+msgid "Receive your personal link to share with everyone you care about."
+msgstr "Otrzymaj link do osobistego udostępnienia wszystkim, na których Ci zależy."
+
+#: apps/marketing/src/app/(marketing)/open/team-members.tsx:37
+msgid "Role"
+msgstr "Rola"
+
+#: apps/marketing/src/app/(marketing)/open/salary-bands.tsx:37
+#: apps/marketing/src/app/(marketing)/open/team-members.tsx:40
+msgid "Salary"
+msgstr "Wynagrodzenie"
+
+#: apps/marketing/src/components/(marketing)/pricing-table.tsx:62
+msgid "Save $60 or $120"
+msgstr "Zaoszczędź 60 $ lub 120 $"
+
+#: apps/marketing/src/app/(marketing)/pricing/page.tsx:109
+msgid "Securely. Our data centers are located in Frankfurt (Germany), giving us the best local privacy laws. We are very aware of the sensitive nature of our data and follow best practices to ensure the security and integrity of the data entrusted to us."
+msgstr "Bezpiecznie. Nasze centra danych znajdują się we Frankfurcie (Niemcy), co daje nam najlepsze lokalne przepisy o prywatności. Jesteśmy bardzo świadomi wrażliwego charakteru naszych danych i przestrzegamy najlepszych praktyk, aby zapewnić bezpieczeństwo i integralność danych, które nam powierzono."
+
+#: apps/marketing/src/components/(marketing)/share-connect-paid-widget-bento.tsx:37
+msgid "Send, connect, receive and embed everywhere."
+msgstr "Wysyłaj, łącz, odbieraj i osadzaj wszędzie."
+
+#: apps/marketing/src/app/(marketing)/open/salary-bands.tsx:34
+msgid "Seniority"
+msgstr "Poziom"
+
+#: apps/marketing/src/components/(marketing)/footer.tsx:39
+msgid "Shop"
+msgstr "Sklep"
+
+#: apps/marketing/src/app/(marketing)/singleplayer/client.tsx:63
+msgid "Sign"
+msgstr "Podpisz"
+
+#: apps/marketing/src/components/(marketing)/header.tsx:72
+#: apps/marketing/src/components/(marketing)/mobile-navigation.tsx:61
+msgid "Sign in"
+msgstr "Zaloguj się"
+
+#: apps/marketing/src/components/(marketing)/header.tsx:77
+#: apps/marketing/src/components/(marketing)/mobile-navigation.tsx:57
+msgid "Sign up"
+msgstr "Zarejestruj się"
+
+#: apps/marketing/src/components/(marketing)/carousel.tsx:22
+msgid "Signing Process"
+msgstr "Proces podpisywania"
+
+#: apps/marketing/src/components/(marketing)/pricing-table.tsx:94
+#: apps/marketing/src/components/(marketing)/pricing-table.tsx:136
+#: apps/marketing/src/components/(marketing)/pricing-table.tsx:180
+msgid "Signup Now"
+msgstr "Zapisz się teraz"
+
+#: apps/marketing/src/components/(marketing)/faster-smarter-beautiful-bento.tsx:89
+msgid "Smart."
+msgstr "Inteligentny."
+
+#: apps/marketing/src/components/(marketing)/hero.tsx:132
+msgid "Star on GitHub"
+msgstr "Dodaj gwiazdkę na GitHubie"
+
+#: apps/marketing/src/app/(marketing)/open/page.tsx:226
+msgid "Stars"
+msgstr "Gwiazdy"
+
+#: apps/marketing/src/components/(marketing)/footer.tsx:40
+#: apps/marketing/src/components/(marketing)/mobile-navigation.tsx:44
+msgid "Status"
+msgstr "Status"
+
+#: apps/marketing/src/components/(marketing)/footer.tsx:34
+#: apps/marketing/src/components/(marketing)/mobile-navigation.tsx:48
+msgid "Support"
+msgstr "Wsparcie"
+
+#: apps/marketing/src/app/(marketing)/open/team-members.tsx:26
+msgid "Team"
+msgstr "Zespół"
+
+#: apps/marketing/src/components/(marketing)/pricing-table.tsx:195
+msgid "Team Inbox"
+msgstr "Skrzynka zespołowa"
+
+#: apps/marketing/src/components/(marketing)/carousel.tsx:28
+#: apps/marketing/src/components/(marketing)/pricing-table.tsx:162
+msgid "Teams"
+msgstr "Zespoły"
+
+#: apps/marketing/src/components/(marketing)/open-build-template-bento.tsx:83
+msgid "Template Store (Soon)."
+msgstr "Sklep z szablonami (Wkrótce)."
+
+#: apps/marketing/src/app/(marketing)/pricing/page.tsx:138
+msgid "That's awesome. You can take a look at the current <0>Issues0> and join our <1>Discord Community1> to keep up to date, on what the current priorities are. In any case, we are an open community and welcome all input, technical and non-technical ❤️"
+msgstr "To niesamowite. Możesz spojrzeć na aktualne <0>Problemy0> i dołączyć do naszej <1>społeczności Discord1>, aby być na bieżąco z aktualnymi priorytetami. W każdym razie jesteśmy otwartą społecznością i witamy wszelkie opinie, techniczne i nietechniczne ❤️"
+
+#: apps/marketing/src/app/(marketing)/open/page.tsx:293
+msgid "This page is evolving as we learn what makes a great signing company. We'll update it when we have more to share."
+msgstr "Ta strona ewoluuje, gdy uczymy się, co czyni firmę podpisującą doskonałą. Zaktualizujemy ją, gdy będziemy mieli więcej do podzielenia się."
+
+#: apps/marketing/src/app/(marketing)/open/salary-bands.tsx:31
+msgid "Title"
+msgstr "Tytuł"
+
+#: apps/marketing/src/app/(marketing)/open/total-signed-documents-chart.tsx:30
+#: apps/marketing/src/app/(marketing)/open/total-signed-documents-chart.tsx:55
+msgid "Total Completed Documents"
+msgstr "Całkowita liczba zakończonych dokumentów"
+
+#: apps/marketing/src/app/(marketing)/open/page.tsx:267
+#: apps/marketing/src/app/(marketing)/open/page.tsx:268
+msgid "Total Customers"
+msgstr "Całkowita liczba klientów"
+
+#: apps/marketing/src/app/(marketing)/open/funding-raised.tsx:29
+msgid "Total Funding Raised"
+msgstr "Całkowita kwota zebrana"
+
+#: apps/marketing/src/app/(marketing)/open/monthly-total-users-chart.tsx:30
+#: apps/marketing/src/app/(marketing)/open/monthly-total-users-chart.tsx:43
+#: apps/marketing/src/app/(marketing)/open/monthly-total-users-chart.tsx:52
+msgid "Total Users"
+msgstr "Całkowita liczba użytkowników"
+
+#: apps/marketing/src/components/(marketing)/open-build-template-bento.tsx:31
+msgid "Truly your own."
+msgstr "Naprawdę twoje."
+
+#: apps/marketing/src/components/(marketing)/callout.tsx:27
+#: apps/marketing/src/components/(marketing)/hero.tsx:123
+msgid "Try our Free Plan"
+msgstr "Wypróbuj nasz plan darmowy"
+
+#: apps/marketing/src/app/(marketing)/open/typefully.tsx:20
+msgid "Twitter Stats"
+msgstr "Statystyki Twittera"
+
+#: apps/marketing/src/components/(marketing)/pricing-table.tsx:142
+#: apps/marketing/src/components/(marketing)/pricing-table.tsx:186
+msgid "Unlimited Documents per Month"
+msgstr "Nieograniczone dokumenty miesięcznie"
+
+#: apps/marketing/src/components/(marketing)/pricing-table.tsx:103
+msgid "Up to 10 recipients per document"
+msgstr "Do 10 odbiorców na dokument"
+
+#: apps/marketing/src/app/(marketing)/singleplayer/client.tsx:52
+msgid "Upload a document and add fields."
+msgstr "Prześlij dokument i dodaj pola."
+
+#: apps/marketing/src/app/(marketing)/pricing/page.tsx:123
+msgid "Using our hosted version is the easiest way to get started, you can simply subscribe and start signing your documents. We take care of the infrastructure, so you can focus on your business. Additionally, when using our hosted version you benefit from our trusted signing certificates which helps you to build trust with your customers."
+msgstr "Korzystanie z naszej wersji hostowanej jest najłatwiejszym sposobem na rozpoczęcie, możesz po prostu subskrybować i zacząć podpisywanie swoich dokumentów. Zajmujemy się infrastrukturą, abyś mógł skupić się na swoim biznesie. Dodatkowo, korzystając z naszej wersji hostowanej, korzystasz z naszych zaufanych certyfikatów podpisujących, co pomaga budować zaufanie u Twoich klientów."
+
+#: apps/marketing/src/app/(marketing)/open/typefully.tsx:33
+msgid "View all stats"
+msgstr "Zobacz wszystkie statystyki"
+
+#: apps/marketing/src/app/(marketing)/pricing/page.tsx:195
+msgid "We are happy to assist you at <0>support@documenso.com0> or <1>in our Discord-Support-Channel1> please message either Lucas or Timur to get added to the channel if you are not already a member."
+msgstr "Cieszymy się, że możemy Ci pomóc pod adresem <0>support@documenso.com0> lub <1>w naszym kanale wsparcia na Discordzie1>, proszę napisz do Lucasa lub Timura, aby zostać dodanym do kanału, jeśli jeszcze nie jesteś członkiem."
+
+#: apps/marketing/src/app/(marketing)/pricing/page.tsx:89
+msgid "What is the difference between the plans?"
+msgstr "Jaka jest różnica między planami?"
+
+#: apps/marketing/src/components/(marketing)/faster-smarter-beautiful-bento.tsx:47
+msgid "When it comes to sending or receiving a contract, you can count on lightning-fast speeds."
+msgstr "Jeśli chodzi o wysyłanie lub odbieranie umowy, możesz liczyć na błyskawiczne prędkości."
+
+#: apps/marketing/src/app/(marketing)/pricing/page.tsx:191
+msgid "Where can I get support?"
+msgstr "Gdzie mogę uzyskać pomoc?"
+
+#: apps/marketing/src/app/(marketing)/pricing/page.tsx:177
+msgid "Why should I prefer Documenso over DocuSign or some other signing tool?"
+msgstr "Dlaczego powinienem preferować Documenso zamiast DocuSign lub innego narzędzia do podpisywania?"
+
+#: apps/marketing/src/app/(marketing)/pricing/page.tsx:119
+msgid "Why should I use your hosting service?"
+msgstr "Dlaczego powinienem korzystać z usługi hostingu?"
+
+#: apps/marketing/src/components/(marketing)/pricing-table.tsx:60
+msgid "Yearly"
+msgstr "Rocznie"
+
+#: apps/marketing/src/app/(marketing)/pricing/page.tsx:167
+msgid "Yes! Documenso is offered under the GNU AGPL V3 open source license. This means you can use it for free and even modify it to fit your needs, as long as you publish your changes under the same license."
+msgstr "Tak! Documenso jest oferowane na podstawie licencji GNU AGPL V3 open source. Oznacza to, że możesz z niego korzystać bezpłatnie, a nawet modyfikować je zgodnie ze swoimi potrzebami, o ile opublikujesz swoje zmiany na tej samej licencji."
+
+#: apps/marketing/src/app/(marketing)/pricing/page.tsx:93
+msgid "You can self-host Documenso for free or use our ready-to-use hosted version. The hosted version comes with additional support, painless scalability and more. Early adopters will get access to all features we build this year, for no additional cost! Forever! Yes, that includes multiple users per account later. If you want Documenso for your enterprise, we are happy to talk about your needs."
+msgstr "Możesz samodzielnie hostować Documenso za darmo lub skorzystać z naszej gotowej wersji hostowanej. Wersja hostowana zapewnia dodatkowe wsparcie, łatwą skalowalność i inne. Wczesni użytkownicy będą mieli dostęp do wszystkich funkcji, które budujemy w tym roku, bez dodatkowych kosztów! Na zawsze! Tak, to obejmuje wielu użytkowników na konto później. Jeśli chcesz Documenso dla swojej firmy, chętnie porozmawiamy o Twoich potrzebach."
+
+#: apps/marketing/src/components/(marketing)/carousel.tsx:272
+msgid "Your browser does not support the video tag."
+msgstr "Twoja przeglądarka nie obsługuje tagu wideo."
+
diff --git a/packages/lib/translations/pl/web.po b/packages/lib/translations/pl/web.po
new file mode 100644
index 000000000..48af3c12a
--- /dev/null
+++ b/packages/lib/translations/pl/web.po
@@ -0,0 +1,5143 @@
+msgid ""
+msgstr ""
+"POT-Creation-Date: 2024-07-24 13:01+1000\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: @lingui/cli\n"
+"Language: pl\n"
+"Project-Id-Version: documenso-app\n"
+"Report-Msgid-Bugs-To: \n"
+"PO-Revision-Date: 2024-11-20 11:56\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"
+"X-Crowdin-Project: documenso-app\n"
+"X-Crowdin-Project-ID: 694691\n"
+"X-Crowdin-Language: pl\n"
+"X-Crowdin-File: web.po\n"
+"X-Crowdin-File-ID: 8\n"
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:214
+msgid "\"{0}\" has invited you to sign \"example document\"."
+msgstr "\"{0}\" zaprosił Cię do podpisania \"przykładowego dokumentu\"."
+
+#: apps/web/src/app/(signing)/sign/[token]/date-field.tsx:69
+msgid "\"{0}\" will appear on the document as it has a timezone of \"{timezone}\"."
+msgstr "\"{0}\" pojawi się w dokumencie, ponieważ ma strefę czasową \"{timezone}\"."
+
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:60
+msgid "\"{documentTitle}\" has been successfully deleted"
+msgstr "\"{documentTitle}\" został pomyślnie usunięty"
+
+#: apps/web/src/components/(teams)/forms/update-team-form.tsx:234
+msgid "\"{email}\" on behalf of \"{teamName}\" has invited you to sign \"example document\"."
+msgstr "\"{email}\" w imieniu \"{teamName}\" zaprosił Cię do podpisania \"przykładowego dokumentu\"."
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:209
+#~ msgid ""
+#~ "\"{placeholderEmail}\" on behalf of \"{0}\" has invited you to sign \"example\n"
+#~ "document\"."
+#~ msgstr ""
+#~ "\"{placeholderEmail}\" on behalf of \"{0}\" has invited you to sign \"example\n"
+#~ "document\"."
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:209
+msgid "\"{placeholderEmail}\" on behalf of \"{0}\" has invited you to sign \"example document\"."
+msgstr "\"{placeholderEmail}\" w imieniu \"{0}\" zaprosił Cię do podpisania \"przykładowego dokumentu\"."
+
+#: apps/web/src/components/(teams)/forms/update-team-form.tsx:241
+msgid "\"{teamUrl}\" has invited you to sign \"example document\"."
+msgstr "\"{teamUrl}\" zaprosił Cię do podpisania \"przykładowego dokumentu\"."
+
+#: apps/web/src/app/(signing)/sign/[token]/signing-page-view.tsx:80
+msgid "({0}) has invited you to approve this document"
+msgstr "({0}) zaprosił Cię do zatwierdzenia tego dokumentu"
+
+#: apps/web/src/app/(signing)/sign/[token]/signing-page-view.tsx:77
+msgid "({0}) has invited you to sign this document"
+msgstr "({0}) zaprosił Cię do podpisania tego dokumentu"
+
+#: apps/web/src/app/(signing)/sign/[token]/signing-page-view.tsx:74
+msgid "({0}) has invited you to view this document"
+msgstr "({0}) zaprosił Cię do przeglądania tego dokumentu"
+
+#: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:313
+msgid "{0, plural, one {(1 character over)} other {(# characters over)}}"
+msgstr "{0, plural, one {(1 znak przekroczony)} other {(# znaków przekroczonych)}}"
+
+#: apps/web/src/components/forms/public-profile-form.tsx:237
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:395
+msgid "{0, plural, one {# character over the limit} other {# characters over the limit}}"
+msgstr "{0, plural, one {# znak przekroczony} other {# znaki przekroczone}}"
+
+#: apps/web/src/app/(recipient)/d/[token]/page.tsx:82
+msgid "{0, plural, one {# recipient} other {# recipients}}"
+msgstr "{0, plural, one {# odbiorca} other {# odbiorców}}"
+
+#: apps/web/src/components/(teams)/tables/team-billing-invoices-data-table.tsx:66
+msgid "{0, plural, one {# Seat} other {# Seats}}"
+msgstr "{0, plural, one {# miejsce} other {# miejsc}}"
+
+#: apps/web/src/app/(dashboard)/settings/teams/team-invitations.tsx:37
+#: apps/web/src/app/(dashboard)/settings/teams/team-invitations.tsx:66
+msgid "{0, plural, one {<0>You have <1>11> pending team invitation0>} other {<2>You have <3>#3> pending team invitations2>}}"
+msgstr "{0, plural, one {<0>Masz <1>11> oczekujące zaproszenie do zespołu0>} other {<2>Masz <3>#3> oczekujących zaproszeń do zespołu2>}}"
+
+#: apps/web/src/app/(signing)/sign/[token]/auto-sign.tsx:196
+msgid "{0, plural, one {1 matching field} other {# matching fields}}"
+msgstr "{0, plural, one {1 pasujące pole} other {# pasujących pól}}"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/edit/document-edit-page-view.tsx:129
+msgid "{0, plural, one {1 Recipient} other {# Recipients}}"
+msgstr "{0, plural, one {1 Odbiorca} other {# Odbiorców}}"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:235
+msgid "{0, plural, one {Waiting on 1 recipient} other {Waiting on # recipients}}"
+msgstr "{0, plural, one {Czekam na 1 odbiorcę} other {Czekam na # odbiorców}}"
+
+#: apps/web/src/components/(dashboard)/settings/webhooks/trigger-multiselect-combobox.tsx:64
+msgid "{0, plural, zero {Select values} other {# selected...}}"
+msgstr "{0, plural, zero {Wybierz wartości} other {# wybranych...}}"
+
+#: apps/web/src/app/(signing)/sign/[token]/auto-sign.tsx:193
+msgid "{0}"
+msgstr "{0}"
+
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:249
+msgid "{0} direct signing templates"
+msgstr "{0} bezpośrednich szablonów podpisu"
+
+#: apps/web/src/app/(recipient)/d/[token]/direct-template.tsx:66
+#~ msgid "{0} document"
+#~ msgstr "{0} document"
+
+#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:146
+msgid "{0} of {1} documents remaining this month."
+msgstr "{0} z {1} dokumentów pozostałych w tym miesiącu."
+
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:170
+msgid "{0} Recipient(s)"
+msgstr "{0} Odbiorca (ów)"
+
+#: apps/web/src/app/(recipient)/d/[token]/direct-template.tsx:67
+#~ msgid "{0} the document to complete the process."
+#~ msgstr "{0} the document to complete the process."
+
+#: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:294
+msgid "{charactersRemaining, plural, one {1 character remaining} other {{charactersRemaining} characters remaining}}"
+msgstr "{charactersRemaining, plural, one {1 znak pozostały} other {{charactersRemaining} znaki pozostałe}}"
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/billing/page.tsx:55
+msgid "{formattedTeamMemberQuanity} • Monthly • Renews: {formattedDate}"
+msgstr "{formattedTeamMemberQuanity} • Miesięcznie • Odnawia się: {formattedDate}"
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/billing/page.tsx:48
+msgid "{numberOfSeats, plural, one {# member} other {# members}}"
+msgstr "{numberOfSeats, plural, one {# członek} other {# członków}}"
+
+#: apps/web/src/app/(recipient)/d/[token]/direct-template.tsx:67
+msgid "{recipientActionVerb} document"
+msgstr "{recipientActionVerb} dokument"
+
+#: apps/web/src/app/(recipient)/d/[token]/direct-template.tsx:68
+msgid "{recipientActionVerb} the document to complete the process."
+msgstr "{recipientActionVerb} dokument, aby zakończyć proces."
+
+#: apps/web/src/components/forms/public-profile-form.tsx:231
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:389
+msgid "{remaningLength, plural, one {# character remaining} other {# characters remaining}}"
+msgstr "{remaningLength, plural, one {# znak pozostały} other {# znaki pozostałe}}"
+
+#: apps/web/src/app/(signing)/sign/[token]/no-longer-available.tsx:45
+msgid "<0>\"{0}\"0>is no longer available to sign"
+msgstr "<0>\"{0}\"0>nie jest już dostępny do podpisu"
+
+#: apps/web/src/app/(dashboard)/documents/data-table-sender-filter.tsx:57
+msgid "<0>Sender:0> All"
+msgstr "<0>Rządzący:0> Wszyscy"
+
+#: apps/web/src/components/(dashboard)/settings/token/contants.ts:5
+msgid "1 month"
+msgstr "1 miesiąc"
+
+#: apps/web/src/components/(dashboard)/settings/token/contants.ts:8
+msgid "12 months"
+msgstr "12 miesięcy"
+
+#: apps/web/src/components/(dashboard)/settings/token/contants.ts:6
+msgid "3 months"
+msgstr "3 miesiące"
+
+#: apps/web/src/components/partials/not-found.tsx:45
+msgid "404 Page not found"
+msgstr "404 Strona nie znaleziona"
+
+#: apps/web/src/app/(profile)/p/[url]/not-found.tsx:15
+msgid "404 Profile not found"
+msgstr "404 Profil nie znaleziony"
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/not-found.tsx:15
+msgid "404 Team not found"
+msgstr "404 Zespół nie znaleziony"
+
+#: apps/web/src/app/(recipient)/d/[token]/not-found.tsx:15
+msgid "404 Template not found"
+msgstr "404 Szablon nie znaleziony"
+
+#: apps/web/src/components/(dashboard)/settings/token/contants.ts:7
+msgid "6 months"
+msgstr "6 miesięcy"
+
+#: apps/web/src/components/(dashboard)/settings/token/contants.ts:4
+msgid "7 days"
+msgstr "7 dni"
+
+#: apps/web/src/components/forms/send-confirmation-email.tsx:55
+msgid "A confirmation email has been sent, and it should arrive in your inbox shortly."
+msgstr "E-mail potwierdzający został wysłany i powinien niedługo dotrzeć do Twojej skrzynki odbiorczej."
+
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:70
+msgid "A device capable of accessing, opening, and reading documents"
+msgstr "Urządzenie zdolne do uzyskiwania dostępu, otwierania i czytania dokumentów"
+
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:218
+msgid "A draft document will be created"
+msgstr "Zostanie utworzony szkic dokumentu"
+
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:73
+msgid "A means to print or download documents for your records"
+msgstr "Środek do drukowania lub pobierania dokumentów do swoich zapisów"
+
+#: apps/web/src/components/forms/token.tsx:127
+msgid "A new token was created successfully."
+msgstr "Nowy token został pomyślnie utworzony."
+
+#: apps/web/src/app/(unauthenticated)/check-email/page.tsx:24
+#: apps/web/src/components/forms/forgot-password.tsx:58
+msgid "A password reset email has been sent, if you have an account you should see it in your inbox shortly."
+msgstr "E-mail z linkiem do resetowania hasła został wysłany. Jeśli masz konto, powinieneś go niedługo zobaczyć w skrzynce odbiorczej."
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/team-transfer-status.tsx:94
+msgid "A request to transfer the ownership of this team has been sent to <0>{0} ({1})0>"
+msgstr "Wniosek o przeniesienie własności tego zespołu został wysłany do <0>{0} ({1})0>"
+
+#: apps/web/src/components/(dashboard)/settings/webhooks/create-webhook-dialog.tsx:228
+msgid "A secret that will be sent to your URL so you can verify that the request has been sent by Documenso"
+msgstr "Sekret, który zostanie wysłany na Twój adres URL, abyś mógł zweryfikować, że prośba została wysłana przez Documenso"
+
+#: apps/web/src/app/(dashboard)/settings/webhooks/[id]/page.tsx:196
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/[id]/page.tsx:198
+msgid "A secret that will be sent to your URL so you can verify that the request has been sent by Documenso."
+msgstr "Sekret, który zostanie wysłany na Twój adres URL, abyś mógł zweryfikować, że prośba została wysłana przez Documenso."
+
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:64
+msgid "A stable internet connection"
+msgstr "Stabilne połączenie internetowe"
+
+#: apps/web/src/components/forms/public-profile-form.tsx:198
+msgid "A unique URL to access your profile"
+msgstr "Unikalny URL do dostępu do Twojego profilu"
+
+#: apps/web/src/components/(teams)/dialogs/create-team-dialog.tsx:206
+#: apps/web/src/components/(teams)/forms/update-team-form.tsx:179
+msgid "A unique URL to identify your team"
+msgstr "Unikalny URL do identyfikacji Twojego zespołu"
+
+#: apps/web/src/components/(teams)/dialogs/add-team-email-dialog.tsx:137
+msgid "A verification email will be sent to the provided email."
+msgstr "E-mail weryfikacyjny zostanie wysłany na podany adres e-mail."
+
+#: apps/web/src/app/(dashboard)/settings/teams/accept-team-invitation-button.tsx:46
+msgid "Accept"
+msgstr "Akceptuj"
+
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:33
+msgid "Acceptance and Consent"
+msgstr "Akceptacja i Zgoda"
+
+#: apps/web/src/app/(dashboard)/settings/teams/accept-team-invitation-button.tsx:26
+msgid "Accepted team invitation"
+msgstr "Akceptowane zaproszenie do zespołu"
+
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:128
+msgid "Account Authentication"
+msgstr "Uwierzytelnianie konta"
+
+#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:51
+#: apps/web/src/app/(dashboard)/settings/profile/delete-account-dialog.tsx:48
+msgid "Account deleted"
+msgstr "Konto usunięte"
+
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:119
+msgid "Account Re-Authentication"
+msgstr "Ponowna Autoryzacja Konta"
+
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:139
+msgid "Acknowledgment"
+msgstr "Potwierdzenie"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:108
+#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-data-table.tsx:100
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:123
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:164
+#: apps/web/src/app/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx:118
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/data-table.tsx:46
+msgid "Action"
+msgstr "Akcja"
+
+#: apps/web/src/app/(dashboard)/documents/data-table.tsx:85
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:181
+#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:140
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:133
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:142
+#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:118
+#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:127
+msgid "Actions"
+msgstr "Akcje"
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:107
+#: apps/web/src/components/(teams)/tables/teams-member-page-data-table.tsx:76
+#: apps/web/src/components/(teams)/tables/user-settings-teams-page-data-table.tsx:71
+msgid "Active"
+msgstr "Aktywny"
+
+#: apps/web/src/app/(dashboard)/admin/stats/page.tsx:68
+msgid "Active Subscriptions"
+msgstr "Aktywne Subskrypcje"
+
+#: apps/web/src/components/(teams)/dialogs/add-team-email-dialog.tsx:189
+msgid "Add"
+msgstr "Dodaj"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:177
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:88
+msgid "Add all relevant fields for each recipient."
+msgstr "Dodaj wszystkie istotne pola dla każdego odbiorcy."
+
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:83
+msgid "Add all relevant placeholders for each recipient."
+msgstr "Dodaj wszystkie odpowiednie symbole zastępcze dla każdego odbiorcy."
+
+#: apps/web/src/app/(dashboard)/settings/security/page.tsx:62
+msgid "Add an authenticator to serve as a secondary authentication method for signing documents."
+msgstr "Dodaj autoryzator, aby służył jako dodatkowa metoda uwierzytelniania do podpisywania dokumentów."
+
+#: apps/web/src/app/(dashboard)/settings/security/page.tsx:57
+msgid "Add an authenticator to serve as a secondary authentication method when signing in, or when signing documents."
+msgstr "Dodaj autoryzator, aby służył jako dodatkowa metoda uwierzytelniania podczas logowania lub podpisywania dokumentów."
+
+#: apps/web/src/components/(teams)/dialogs/add-team-email-dialog.tsx:125
+msgid "Add email"
+msgstr "Dodaj e-mail"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:176
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:87
+msgid "Add Fields"
+msgstr "Dodaj pola"
+
+#: apps/web/src/components/(teams)/dialogs/invite-team-member-dialog.tsx:364
+msgid "Add more"
+msgstr "Dodaj więcej"
+
+#: apps/web/src/app/(dashboard)/settings/security/passkeys/create-passkey-dialog.tsx:146
+#: apps/web/src/app/(dashboard)/settings/security/passkeys/create-passkey-dialog.tsx:154
+msgid "Add passkey"
+msgstr "Dodaj hasło"
+
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:82
+msgid "Add Placeholders"
+msgstr "Dodaj znaczniki"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:171
+msgid "Add Signers"
+msgstr "Dodaj sygnatariuszy"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:180
+#~ msgid "Add Subject"
+#~ msgstr "Add Subject"
+
+#: apps/web/src/components/(teams)/dialogs/add-team-email-dialog.tsx:133
+msgid "Add team email"
+msgstr "Dodaj e-mail zespołowy"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:172
+msgid "Add the people who will sign the document."
+msgstr "Dodaj osoby, które podpiszą dokument."
+
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:220
+msgid "Add the recipients to create the document with"
+msgstr "Dodaj odbiorców, aby utworzyć dokument"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:181
+#~ msgid "Add the subject and message you wish to send to signers."
+#~ msgstr "Add the subject and message you wish to send to signers."
+
+#: apps/web/src/components/(teams)/dialogs/create-team-checkout-dialog.tsx:152
+msgid "Adding and removing seats will adjust your invoice accordingly."
+msgstr "Dodawanie i usuwanie miejsc dostosuje fakturę odpowiednio."
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/branding-preferences.tsx:303
+msgid "Additional brand information to display at the bottom of emails"
+msgstr "Dodatkowe informacje o marce do wyświetlenia na dole wiadomości e-mail"
+
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/page.tsx:59
+msgid "Admin Actions"
+msgstr "Akcje administratora"
+
+#: apps/web/src/components/(dashboard)/layout/menu-switcher.tsx:262
+msgid "Admin panel"
+msgstr "Panel administracyjny"
+
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:129
+msgid "After signing a document electronically, you will be provided the opportunity to view, download, and print the document for your records. It is highly recommended that you retain a copy of all electronically signed documents for your personal records. We will also retain a copy of the signed document for our records however we may not be able to provide you with a copy of the signed document after a certain period of time."
+msgstr "Po podpisaniu dokumentu elektronicznie, otrzymasz możliwość obejrzenia, pobrania i wydrukowania dokumentu dla swoich zapisów. Zaleca się, abyś zachował kopię wszystkich podpisanych elektronicznie dokumentów dla swoich osobistych zapisów. My również zachowamy kopię podpisanego dokumentu w naszych zapisach, jednak możemy nie być w stanie dostarczyć ci kopii podpisanego dokumentu po pewnym czasie."
+
+#: apps/web/src/components/formatter/document-status.tsx:46
+msgid "All"
+msgstr "Wszystko"
+
+#: apps/web/src/components/(dashboard)/common/command-menu.tsx:42
+msgid "All documents"
+msgstr "Wszystkie dokumenty"
+
+#: apps/web/src/app/(dashboard)/documents/empty-state.tsx:35
+msgid "All documents have been processed. Any new documents that are sent or received will show here."
+msgstr "Wszystkie dokumenty zostały przetworzone. Wszelkie nowe dokumenty, które są wysyłane lub odbierane, będą tutaj widoczne."
+
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:81
+msgid "All documents related to the electronic signing process will be provided to you electronically through our platform or via email. It is your responsibility to ensure that your email address is current and that you can receive and open our emails."
+msgstr "Wszystkie dokumenty związane z procesem podpisywania elektronicznego będą dostarczane do Ciebie elektronicznie za pośrednictwem naszej platformy lub za pośrednictwem e-maila. To Twoja odpowiedzialność, aby upewnić się, że twój adres e-mail jest aktualny i że możesz odbierać i otwierać nasze e-maile."
+
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:145
+msgid "All inserted signatures will be voided"
+msgstr "Wszystkie wstawione podpisy zostaną unieważnione"
+
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:148
+msgid "All recipients will be notified"
+msgstr "Wszyscy odbiorcy zostaną powiadomieni"
+
+#: apps/web/src/components/document/document-recipient-link-copy-dialog.tsx:62
+msgid "All signing links have been copied to your clipboard."
+msgstr "Wszystkie linki do podpisania zostały skopiowane do schowka."
+
+#: apps/web/src/components/(dashboard)/common/command-menu.tsx:57
+msgid "All templates"
+msgstr "Wszystkie szablony"
+
+#: apps/web/src/components/(dashboard)/period-selector/period-selector.tsx:55
+msgid "All Time"
+msgstr "Wszystko"
+
+#: apps/web/src/app/(dashboard)/settings/security/page.tsx:110
+msgid "Allows authenticating using biometrics, password managers, hardware keys, etc."
+msgstr "Pozwala na uwierzytelnianie za pomocą biometrii, menedżerów haseł, kluczy sprzętowych itp."
+
+#: apps/web/src/components/forms/v2/signup.tsx:423
+msgid "Already have an account? <0>Sign in instead0>"
+msgstr "Masz już konto? <0>Zaloguj się zamiast tego0>"
+
+#: apps/web/src/components/(teams)/tables/team-billing-invoices-data-table.tsx:86
+msgid "Amount"
+msgstr "Kwota"
+
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:48
+msgid "An electronic signature provided by you on our platform, achieved through clicking through to a document and entering your name, or any other electronic signing method we provide, is legally binding. It carries the same weight and enforceability as a manual signature written with ink on paper."
+msgstr "Podpis elektroniczny dostarczony przez Ciebie na naszej platformie, zrealizowany poprzez kliknięcie na dokument i wpisanie swojego imienia, lub dowolną inną metodą podpisu elektronicznego, którą udostępniamy, jest prawnie wiążący. Nosi tę samą wagę i wykonalność jak ręczny podpis wykonany tuszem na papierze."
+
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:67
+msgid "An email account"
+msgstr "Konto e-mail"
+
+#: apps/web/src/components/(teams)/dialogs/invite-team-member-dialog.tsx:262
+msgid "An email containing an invitation will be sent to each member."
+msgstr "E-mail zawierający zaproszenie zostanie wysłany do każdego członka."
+
+#: apps/web/src/components/(teams)/dialogs/transfer-team-dialog.tsx:109
+msgid "An email requesting the transfer of this team has been sent."
+msgstr "E-mail z prośbą o przeniesienie tego zespołu został wysłany."
+
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx:60
+#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:83
+#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:60
+#: apps/web/src/app/(dashboard)/settings/profile/delete-account-dialog.tsx:57
+#: apps/web/src/app/(signing)/sign/[token]/complete/claim-account.tsx:92
+#: apps/web/src/components/forms/avatar-image.tsx:116
+#: apps/web/src/components/forms/password.tsx:78
+#: apps/web/src/components/forms/profile.tsx:81
+#: apps/web/src/components/forms/reset-password.tsx:81
+#: apps/web/src/components/forms/signup.tsx:107
+#: apps/web/src/components/forms/token.tsx:137
+#: apps/web/src/components/forms/v2/signup.tsx:154
+msgid "An error occurred"
+msgstr "Wystąpił błąd"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:269
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:201
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:235
+msgid "An error occurred while adding signers."
+msgstr "Wystąpił błąd podczas dodawania sygnatariuszy."
+
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:304
+msgid "An error occurred while adding the fields."
+msgstr "Wystąpił błąd podczas dodawania pól."
+
+#: apps/web/src/app/(signing)/sign/[token]/auto-sign.tsx:154
+msgid "An error occurred while auto-signing the document, some fields may not be signed. Please review and manually sign any remaining fields."
+msgstr "Wystąpił błąd podczas automatycznego podpisywania dokumentu, niektóre pola mogą nie być podpisane. Proszę sprawdzić i ręcznie podpisać wszystkie pozostałe pola."
+
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:176
+msgid "An error occurred while creating document from template."
+msgstr "Wystąpił błąd podczas tworzenia dokumentu z szablonu."
+
+#: apps/web/src/components/(dashboard)/settings/webhooks/create-webhook-dialog.tsx:102
+msgid "An error occurred while creating the webhook. Please try again."
+msgstr "Wystąpił błąd podczas tworzenia webhooka. Proszę spróbować ponownie."
+
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:124
+msgid "An error occurred while disabling direct link signing."
+msgstr "Wystąpił błąd podczas dezaktywacji podpisywania za pomocą linku bezpośredniego."
+
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-button.tsx:64
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:92
+#: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:76
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:107
+msgid "An error occurred while downloading your document."
+msgstr "Wystąpił błąd podczas pobierania dokumentu."
+
+#: apps/web/src/app/(dashboard)/templates/duplicate-template-dialog.tsx:52
+msgid "An error occurred while duplicating template."
+msgstr "Wystąpił błąd podczas duplikowania szablonu."
+
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:123
+msgid "An error occurred while enabling direct link signing."
+msgstr "Wystąpił błąd podczas aktywacji podpisywania za pomocą linku bezpośredniego."
+
+#: apps/web/src/components/(teams)/dialogs/transfer-team-dialog.tsx:299
+msgid "An error occurred while loading team members. Please try again later."
+msgstr "Wystąpił błąd podczas ładowania członków zespołu. Proszę spróbować ponownie później."
+
+#: apps/web/src/app/(dashboard)/documents/move-document-dialog.tsx:58
+msgid "An error occurred while moving the document."
+msgstr "Wystąpił błąd podczas przenoszenia dokumentu."
+
+#: apps/web/src/app/(dashboard)/templates/move-template-dialog.tsx:57
+msgid "An error occurred while moving the template."
+msgstr "Wystąpił błąd podczas przenoszenia szablonu."
+
+#: apps/web/src/app/(signing)/sign/[token]/initials-field.tsx:116
+msgid "An error occurred while removing the field."
+msgstr "Wystąpił błąd podczas usuwania pola."
+
+#: apps/web/src/app/(signing)/sign/[token]/checkbox-field.tsx:152
+#: apps/web/src/app/(signing)/sign/[token]/date-field.tsx:126
+#: apps/web/src/app/(signing)/sign/[token]/dropdown-field.tsx:137
+#: apps/web/src/app/(signing)/sign/[token]/email-field.tsx:110
+#: apps/web/src/app/(signing)/sign/[token]/name-field.tsx:148
+#: apps/web/src/app/(signing)/sign/[token]/number-field.tsx:195
+#: apps/web/src/app/(signing)/sign/[token]/radio-field.tsx:129
+#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:173
+msgid "An error occurred while removing the signature."
+msgstr "Wystąpił błąd podczas usuwania podpisu."
+
+#: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:196
+msgid "An error occurred while removing the text."
+msgstr "Wystąpił błąd podczas usuwania tekstu."
+
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:350
+msgid "An error occurred while sending the document."
+msgstr "Wystąpił błąd podczas wysyłania dokumentu."
+
+#: apps/web/src/components/forms/send-confirmation-email.tsx:63
+msgid "An error occurred while sending your confirmation email"
+msgstr "Wystąpił błąd podczas wysyłania e-maila potwierdzającego"
+
+#: apps/web/src/app/(signing)/sign/[token]/checkbox-field.tsx:123
+#: apps/web/src/app/(signing)/sign/[token]/date-field.tsx:100
+#: apps/web/src/app/(signing)/sign/[token]/dropdown-field.tsx:106
+#: apps/web/src/app/(signing)/sign/[token]/email-field.tsx:84
+#: apps/web/src/app/(signing)/sign/[token]/initials-field.tsx:90
+#: apps/web/src/app/(signing)/sign/[token]/name-field.tsx:122
+#: apps/web/src/app/(signing)/sign/[token]/number-field.tsx:150
+#: apps/web/src/app/(signing)/sign/[token]/radio-field.tsx:102
+#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:147
+#: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:168
+msgid "An error occurred while signing the document."
+msgstr "Wystąpił błąd podczas podpisywania dokumentu."
+
+#: apps/web/src/app/(dashboard)/settings/billing/billing-plans.tsx:63
+msgid "An error occurred while trying to create a checkout session."
+msgstr "Wystąpił błąd podczas próby utworzenia sesji zamówienia."
+
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:235
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:170
+msgid "An error occurred while updating the document settings."
+msgstr "Wystąpił błąd podczas aktualizacji ustawień dokumentu."
+
+#: apps/web/src/components/forms/team-document-settings.tsx:78
+#~ msgid "An error occurred while updating the global team settings."
+#~ msgstr "An error occurred while updating the global team settings."
+
+#: apps/web/src/app/(signing)/sign/[token]/checkbox-field.tsx:213
+msgid "An error occurred while updating the signature."
+msgstr "Wystąpił błąd podczas aktualizacji podpisu."
+
+#: apps/web/src/app/(dashboard)/admin/users/[id]/page.tsx:79
+msgid "An error occurred while updating your profile."
+msgstr "Wystąpił błąd podczas aktualizacji profilu."
+
+#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:113
+msgid "An error occurred while uploading your document."
+msgstr "Wystąpił błąd podczas przesyłania dokumentu."
+
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx:66
+#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:89
+#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:66
+#: apps/web/src/app/(dashboard)/settings/profile/delete-account-dialog.tsx:63
+#: apps/web/src/app/(signing)/sign/[token]/complete/claim-account.tsx:98
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/team-transfer-status.tsx:54
+#: apps/web/src/components/(dashboard)/common/command-menu.tsx:301
+#: apps/web/src/components/(dashboard)/settings/token/delete-token-dialog.tsx:97
+#: apps/web/src/components/(dashboard)/settings/webhooks/delete-webhook-dialog.tsx:88
+#: apps/web/src/components/(teams)/dialogs/add-team-email-dialog.tsx:100
+#: apps/web/src/components/(teams)/dialogs/create-team-dialog.tsx:105
+#: apps/web/src/components/(teams)/dialogs/delete-team-dialog.tsx:84
+#: apps/web/src/components/(teams)/dialogs/delete-team-member-dialog.tsx:58
+#: apps/web/src/components/(teams)/dialogs/invite-team-member-dialog.tsx:158
+#: apps/web/src/components/(teams)/dialogs/leave-team-dialog.tsx:58
+#: apps/web/src/components/(teams)/dialogs/transfer-team-dialog.tsx:116
+#: apps/web/src/components/(teams)/dialogs/update-team-email-dialog.tsx:89
+#: apps/web/src/components/(teams)/dialogs/update-team-member-dialog.tsx:100
+#: apps/web/src/components/(teams)/forms/update-team-form.tsx:134
+#: apps/web/src/components/forms/avatar-image.tsx:94
+#: apps/web/src/components/forms/avatar-image.tsx:122
+#: apps/web/src/components/forms/password.tsx:84
+#: apps/web/src/components/forms/profile.tsx:87
+#: apps/web/src/components/forms/public-profile-claim-dialog.tsx:113
+#: apps/web/src/components/forms/public-profile-form.tsx:104
+#: apps/web/src/components/forms/reset-password.tsx:87
+#: apps/web/src/components/forms/signin.tsx:248
+#: apps/web/src/components/forms/signin.tsx:256
+#: apps/web/src/components/forms/signin.tsx:270
+#: apps/web/src/components/forms/signin.tsx:285
+#: apps/web/src/components/forms/signin.tsx:301
+#: apps/web/src/components/forms/signup.tsx:113
+#: apps/web/src/components/forms/signup.tsx:128
+#: apps/web/src/components/forms/signup.tsx:142
+#: apps/web/src/components/forms/token.tsx:143
+#: apps/web/src/components/forms/v2/signup.tsx:160
+#: apps/web/src/components/forms/v2/signup.tsx:183
+#: apps/web/src/components/forms/v2/signup.tsx:197
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:141
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:178
+msgid "An unknown error occurred"
+msgstr "Wystąpił nieznany błąd"
+
+#: apps/web/src/components/(teams)/dialogs/transfer-team-dialog.tsx:260
+msgid "Any payment methods attached to this team will remain attached to this team. Please contact us if you need to update this information."
+msgstr "Jakiekolwiek metody płatności przypisane do tego zespołu pozostaną przypisane do tego zespołu. Proszę skontaktować się z nami, jeśli potrzebujesz zaktualizować te informacje."
+
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:225
+msgid "Any Source"
+msgstr "Jakiekolwiek źródło"
+
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:205
+msgid "Any Status"
+msgstr "Jakikolwiek status"
+
+#: apps/web/src/app/(dashboard)/settings/tokens/page.tsx:22
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx:42
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx:56
+#: apps/web/src/components/(dashboard)/settings/layout/desktop-nav.tsx:90
+#: apps/web/src/components/(dashboard)/settings/layout/mobile-nav.tsx:93
+#: apps/web/src/components/(teams)/settings/layout/desktop-nav.tsx:96
+#: apps/web/src/components/(teams)/settings/layout/mobile-nav.tsx:105
+msgid "API Tokens"
+msgstr "Tokeny API"
+
+#: apps/web/src/app/(dashboard)/admin/stats/page.tsx:74
+msgid "App Version"
+msgstr "Wersja aplikacji"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-button.tsx:89
+#: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:120
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:146
+#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:125
+msgid "Approve"
+msgstr "Zatwierdź"
+
+#: apps/web/src/app/(signing)/sign/[token]/form.tsx:129
+msgid "Approve Document"
+msgstr "Zatwierdź dokument"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:94
+msgid "Approved"
+msgstr "Zatwierdzono"
+
+#: apps/web/src/components/(dashboard)/settings/token/delete-token-dialog.tsx:129
+msgid "Are you sure you want to delete this token?"
+msgstr "Czy na pewno chcesz usunąć ten token?"
+
+#: apps/web/src/app/(signing)/sign/[token]/reject-document-dialog.tsx:120
+msgid "Are you sure you want to reject this document? This action cannot be undone."
+msgstr "Czy na pewno chcesz odrzucić ten dokument? Ta akcja nie może być cofnięta."
+
+#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:188
+msgid "Are you sure you want to remove the <0>{passkeyName}0> passkey."
+msgstr "Czy na pewno chcesz usunąć klucz hasła <0>{passkeyName}0>?"
+
+#: apps/web/src/components/(teams)/dialogs/delete-team-dialog.tsx:126
+msgid "Are you sure you wish to delete this team?"
+msgstr "Czy na pewno chcesz usunąć ten zespół?"
+
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:98
+#: apps/web/src/app/(dashboard)/settings/teams/team-email-usage.tsx:94
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:455
+#: apps/web/src/components/(teams)/dialogs/delete-team-member-dialog.tsx:81
+#: apps/web/src/components/(teams)/dialogs/leave-team-dialog.tsx:81
+#: apps/web/src/components/(teams)/dialogs/remove-team-email-dialog.tsx:116
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:439
+msgid "Are you sure?"
+msgstr "Czy na pewno?"
+
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/admin-actions.tsx:66
+msgid "Attempts sealing the document again, useful for after a code change has occurred to resolve an erroneous document."
+msgstr "Ponowne prób sealing the document, przydatne po zmianie kodu w celu rozwiązania błędnego dokumentu."
+
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:130
+msgid "Audit Log"
+msgstr "Dziennik audytu"
+
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:198
+msgid "Authentication Level"
+msgstr "Poziom autoryzacji"
+
+#: apps/web/src/app/(recipient)/d/[token]/signing-auth-page.tsx:41
+#: apps/web/src/app/(signing)/sign/[token]/signing-auth-page.tsx:52
+msgid "Authentication required"
+msgstr "Wymagana autoryzacja"
+
+#: apps/web/src/components/forms/avatar-image.tsx:145
+msgid "Avatar"
+msgstr "Awatar"
+
+#: apps/web/src/components/forms/avatar-image.tsx:107
+msgid "Avatar Updated"
+msgstr "Awatar zaktualizowany"
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:127
+msgid "Awaiting email confirmation"
+msgstr "Czekam na potwierdzenie e-maila"
+
+#: apps/web/src/app/(recipient)/d/[token]/sign-direct-template.tsx:369
+#: apps/web/src/components/(dashboard)/settings/layout/activity-back.tsx:20
+#: apps/web/src/components/forms/v2/signup.tsx:509
+msgid "Back"
+msgstr "Powrót"
+
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:164
+msgid "Back to Documents"
+msgstr "Powrót do dokumentów"
+
+#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:146
+msgid "Background Color"
+msgstr "Kolor tła"
+
+#: apps/web/src/components/forms/2fa/disable-authenticator-app-dialog.tsx:167
+#: apps/web/src/components/forms/signin.tsx:485
+msgid "Backup Code"
+msgstr "Kod zapasowy"
+
+#: apps/web/src/components/forms/2fa/enable-authenticator-app-dialog.tsx:164
+msgid "Backup codes"
+msgstr "Kody zapasowe"
+
+#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:74
+msgid "Banner Updated"
+msgstr "Baner zaktualizowany"
+
+#: apps/web/src/components/forms/v2/signup.tsx:472
+msgid "Basic details"
+msgstr "Podstawowe szczegóły"
+
+#: apps/web/src/app/(dashboard)/settings/billing/page.tsx:74
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/billing/page.tsx:61
+#: apps/web/src/components/(dashboard)/settings/layout/desktop-nav.tsx:117
+#: apps/web/src/components/(dashboard)/settings/layout/mobile-nav.tsx:120
+#: apps/web/src/components/(teams)/settings/layout/desktop-nav.tsx:123
+#: apps/web/src/components/(teams)/settings/layout/mobile-nav.tsx:132
+msgid "Billing"
+msgstr "Fakturowanie"
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/page.tsx:42
+msgid "Branding Preferences"
+msgstr "Preferencje dotyczące marki"
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/branding-preferences.tsx:102
+msgid "Branding preferences updated"
+msgstr "Preferencje dotyczące marki zaktualizowane"
+
+#: apps/web/src/app/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx:99
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/data-table.tsx:48
+msgid "Browser"
+msgstr "Przeglądarka"
+
+#: apps/web/src/components/document/document-recipient-link-copy-dialog.tsx:145
+msgid "Bulk Copy"
+msgstr "Masowa kopia"
+
+#: apps/web/src/components/(teams)/dialogs/invite-team-member-dialog.tsx:279
+msgid "Bulk Import"
+msgstr "Import zbiorczy"
+
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:156
+msgid "By deleting this document, the following will occur:"
+msgstr "Usunięcie tego dokumentu spowoduje następujące:"
+
+#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-2fa.tsx:114
+msgid "By enabling 2FA, you will be required to enter a code from your authenticator app every time you sign in."
+msgstr "Włączając 2FA, będziesz musiał wprowadzić kod z aplikacji uwierzytelniającej za każdym razem, gdy się logujesz."
+
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:142
+msgid "By proceeding to use the electronic signature service provided by Documenso, you affirm that you have read and understood this disclosure. You agree to all terms and conditions related to the use of electronic signatures and electronic transactions as outlined herein."
+msgstr "Kontynuując korzystanie z usługi podpisu elektronicznego oferowanej przez Documenso, potwierdzasz, że przeczytałeś i zrozumiałeś to ujawnienie. Zgadzasz się na wszystkie warunki i zasady związane z korzystaniem z podpisów elektronicznych i transakcji elektronicznych, jak opisano w tym dokumencie."
+
+#: apps/web/src/components/general/signing-disclosure.tsx:14
+msgid "By proceeding with your electronic signature, you acknowledge and consent that it will be used to sign the given document and holds the same legal validity as a handwritten signature. By completing the electronic signing process, you affirm your understanding and acceptance of these conditions."
+msgstr "Kontynuując z Twoim podpisem elektronicznym, przyjmujesz i zgadzasz się, że będzie on użyty do podpisania danego dokumentu i ma tę samą ważność prawną jak odręczny podpis. Dokonując procesu podpisu elektronicznego, potwierdzasz swoje zrozumienie i akceptację tych warunków."
+
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:92
+msgid "By using the electronic signature feature, you are consenting to conduct transactions and receive disclosures electronically. You acknowledge that your electronic signature on documents is binding and that you accept the terms outlined in the documents you are signing."
+msgstr "Korzystając z funkcji podpisu elektronicznego, wyrażasz zgodę na przeprowadzanie transakcji i otrzymywanie ujawnień elektronicznie. Przyjmujesz do wiadomości, że Twój podpis elektroniczny na dokumentach jest wiążący i akceptujesz warunki przedstawione w dokumentach, które podpisujesz."
+
+#: apps/web/src/app/(dashboard)/documents/_action-items/resend-document.tsx:186
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:190
+#: apps/web/src/app/(dashboard)/documents/duplicate-document-dialog.tsx:108
+#: apps/web/src/app/(dashboard)/documents/move-document-dialog.tsx:120
+#: apps/web/src/app/(dashboard)/settings/security/passkeys/create-passkey-dialog.tsx:248
+#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:157
+#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:198
+#: apps/web/src/app/(dashboard)/settings/teams/team-email-usage.tsx:109
+#: apps/web/src/app/(dashboard)/templates/delete-template-dialog.tsx:81
+#: apps/web/src/app/(dashboard)/templates/duplicate-template-dialog.tsx:78
+#: apps/web/src/app/(dashboard)/templates/move-template-dialog.tsx:119
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:472
+#: apps/web/src/app/(signing)/sign/[token]/auto-sign.tsx:220
+#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-2fa.tsx:178
+#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-account.tsx:71
+#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-passkey.tsx:164
+#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-passkey.tsx:189
+#: apps/web/src/app/(signing)/sign/[token]/form.tsx:151
+#: apps/web/src/app/(signing)/sign/[token]/form.tsx:220
+#: apps/web/src/app/(signing)/sign/[token]/name-field.tsx:215
+#: apps/web/src/app/(signing)/sign/[token]/number-field.tsx:328
+#: apps/web/src/app/(signing)/sign/[token]/reject-document-dialog.tsx:153
+#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:113
+#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:248
+#: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:335
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/team-transfer-status.tsx:121
+#: apps/web/src/components/(dashboard)/settings/token/delete-token-dialog.tsx:176
+#: apps/web/src/components/(dashboard)/settings/webhooks/create-webhook-dialog.tsx:242
+#: apps/web/src/components/(dashboard)/settings/webhooks/delete-webhook-dialog.tsx:163
+#: apps/web/src/components/(teams)/dialogs/add-team-email-dialog.tsx:185
+#: apps/web/src/components/(teams)/dialogs/create-team-checkout-dialog.tsx:166
+#: apps/web/src/components/(teams)/dialogs/create-team-dialog.tsx:218
+#: apps/web/src/components/(teams)/dialogs/delete-team-dialog.tsx:163
+#: apps/web/src/components/(teams)/dialogs/delete-team-member-dialog.tsx:104
+#: apps/web/src/components/(teams)/dialogs/invite-team-member-dialog.tsx:369
+#: apps/web/src/components/(teams)/dialogs/leave-team-dialog.tsx:102
+#: apps/web/src/components/(teams)/dialogs/remove-team-email-dialog.tsx:150
+#: apps/web/src/components/(teams)/dialogs/transfer-team-dialog.tsx:278
+#: apps/web/src/components/(teams)/dialogs/update-team-email-dialog.tsx:162
+#: apps/web/src/components/(teams)/dialogs/update-team-member-dialog.tsx:187
+#: apps/web/src/components/forms/2fa/enable-authenticator-app-dialog.tsx:257
+#: apps/web/src/components/forms/2fa/view-recovery-codes-dialog.tsx:163
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:450
+msgid "Cancel"
+msgstr "Anuluj"
+
+#: apps/web/src/app/(dashboard)/settings/security/passkeys/create-passkey-dialog.tsx:226
+msgid "Cancelled by user"
+msgstr "Anulowano przez użytkownika"
+
+#: apps/web/src/app/(dashboard)/admin/stats/page.tsx:132
+msgid "Charts"
+msgstr "Wykresy"
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/documents/page.tsx:32
+#~ msgid "Check out the documentaton for the <0>global team settings0>."
+#~ msgstr "Check out the documentaton for the <0>global team settings0>."
+
+#: apps/web/src/components/(teams)/dialogs/create-team-checkout-dialog.tsx:179
+msgid "Checkout"
+msgstr "Kasa"
+
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:271
+msgid "Choose an existing recipient from below to continue"
+msgstr "Wybierz istniejącego odbiorcę, aby kontynuować"
+
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:267
+msgid "Choose Direct Link Recipient"
+msgstr "Wybierz odbiorcę bezpośredniego linku"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:182
+msgid "Choose how the document will reach recipients"
+msgstr "Wybierz, jak dokument dotrze do odbiorców"
+
+#: apps/web/src/components/forms/token.tsx:200
+msgid "Choose..."
+msgstr "Wybierz..."
+
+#: apps/web/src/app/(signing)/sign/[token]/complete/claim-account.tsx:160
+msgid "Claim account"
+msgstr "Zgłoś konto"
+
+#: apps/web/src/components/forms/v2/signup.tsx:481
+msgid "Claim username"
+msgstr "Zgłoś nazwę użytkownika"
+
+#: apps/web/src/app/(dashboard)/documents/upcoming-profile-claim-teaser.tsx:28
+msgid "Claim your profile later"
+msgstr "Zgłoś swój profil później"
+
+#: apps/web/src/components/forms/v2/signup.tsx:279
+msgid "Claim your username now"
+msgstr "Zgłoś swoją nazwę użytkownika teraz"
+
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:130
+msgid "Click here to get started"
+msgstr "Kliknij tutaj, aby rozpocząć"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recent-activity.tsx:78
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:118
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:68
+#: apps/web/src/components/document/document-history-sheet.tsx:133
+msgid "Click here to retry"
+msgstr "Kliknij tutaj, aby spróbować ponownie"
+
+#: apps/web/src/components/(teams)/dialogs/invite-team-member-dialog.tsx:392
+msgid "Click here to upload"
+msgstr "Kliknij tutaj, aby przesłać"
+
+#: apps/web/src/components/(dashboard)/avatar/avatar-with-recipient.tsx:52
+#: apps/web/src/components/(dashboard)/avatar/avatar-with-recipient.tsx:65
+msgid "Click to copy signing link for sending to recipient"
+msgstr "Kliknij, aby skopiować link podpisu do wysłania do odbiorcy"
+
+#: apps/web/src/app/(recipient)/d/[token]/sign-direct-template.tsx:175
+#: apps/web/src/app/(signing)/sign/[token]/form.tsx:115
+#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:440
+#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:319
+msgid "Click to insert field"
+msgstr "Kliknij, aby wstawić pole"
+
+#: apps/web/src/app/(dashboard)/templates/new-template-dialog.tsx:126
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:389
+#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-2fa.tsx:125
+#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-passkey.tsx:138
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/team-transfer-status.tsx:121
+#: apps/web/src/components/document/document-recipient-link-copy-dialog.tsx:140
+#: apps/web/src/components/forms/2fa/enable-authenticator-app-dialog.tsx:180
+#: apps/web/src/components/forms/2fa/view-recovery-codes-dialog.tsx:102
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:319
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:423
+msgid "Close"
+msgstr "Zamknij"
+
+#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:61
+#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:430
+#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:309
+#: apps/web/src/components/forms/v2/signup.tsx:534
+msgid "Complete"
+msgstr "Zakończono"
+
+#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:70
+msgid "Complete Approval"
+msgstr "Zakończ zatwierdzanie"
+
+#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:69
+msgid "Complete Signing"
+msgstr "Zakończ podpisywanie"
+
+#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:68
+msgid "Complete Viewing"
+msgstr "Zakończ przeglądanie"
+
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:208
+#: apps/web/src/components/(dashboard)/avatar/stack-avatars-with-tooltip.tsx:77
+#: apps/web/src/components/formatter/document-status.tsx:28
+msgid "Completed"
+msgstr "Zakończono"
+
+#: apps/web/src/components/(dashboard)/common/command-menu.tsx:48
+msgid "Completed documents"
+msgstr "Dokumenty zakończone"
+
+#: apps/web/src/app/(dashboard)/admin/stats/page.tsx:94
+msgid "Completed Documents"
+msgstr "Zakończone dokumenty"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:167
+msgid "Configure general settings for the document."
+msgstr "Skonfiguruj ogólne ustawienia dokumentu."
+
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:78
+msgid "Configure general settings for the template."
+msgstr "Skonfiguruj ogólne ustawienia szablonu."
+
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:337
+msgid "Configure template"
+msgstr "Skonfiguruj szablon"
+
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:481
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:460
+msgid "Confirm"
+msgstr "Potwierdź"
+
+#: apps/web/src/components/(teams)/dialogs/transfer-team-dialog.tsx:207
+msgid "Confirm by typing <0>{confirmTransferMessage}0>"
+msgstr "Potwierdź, wpisując <0>{confirmTransferMessage}0>"
+
+#: apps/web/src/components/(teams)/dialogs/delete-team-dialog.tsx:149
+msgid "Confirm by typing <0>{deleteMessage}0>"
+msgstr "Potwierdź, wpisując <0>{deleteMessage}0>"
+
+#: apps/web/src/components/(dashboard)/settings/token/delete-token-dialog.tsx:152
+#: apps/web/src/components/(dashboard)/settings/webhooks/delete-webhook-dialog.tsx:140
+msgid "Confirm by typing: <0>{deleteMessage}0>"
+msgstr "Potwierdź, wpisując: <0>{deleteMessage}0>"
+
+#: apps/web/src/app/(dashboard)/settings/profile/delete-account-dialog.tsx:157
+msgid "Confirm Deletion"
+msgstr "Potwierdź usunięcie"
+
+#: apps/web/src/app/(unauthenticated)/unverified-account/page.tsx:19
+msgid "Confirm email"
+msgstr "Potwierdź adres e-mail"
+
+#: apps/web/src/components/forms/send-confirmation-email.tsx:53
+msgid "Confirmation email sent"
+msgstr "E-mail potwierdzający został wysłany"
+
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:89
+msgid "Consent to Electronic Transactions"
+msgstr "Zgoda na transakcje elektroniczne"
+
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:151
+msgid "Contact Information"
+msgstr "Informacje kontaktowe"
+
+#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:189
+msgid "Content"
+msgstr "Treść"
+
+#: apps/web/src/app/(dashboard)/settings/security/passkeys/create-passkey-dialog.tsx:252
+#: apps/web/src/app/(unauthenticated)/team/invite/[token]/page.tsx:135
+#: apps/web/src/app/(unauthenticated)/team/verify/email/[token]/page.tsx:69
+#: apps/web/src/app/(unauthenticated)/team/verify/email/[token]/page.tsx:143
+#: apps/web/src/app/(unauthenticated)/team/verify/transfer/[token]/page.tsx:72
+#: apps/web/src/app/(unauthenticated)/team/verify/transfer/[token]/page.tsx:122
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:328
+msgid "Continue"
+msgstr "Kontynuuj"
+
+#: apps/web/src/app/(unauthenticated)/team/invite/[token]/page.tsx:141
+msgid "Continue to login"
+msgstr "Kontynuuj do logowania"
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:173
+msgid "Controls the default language of an uploaded document. This will be used as the language in email communications with the recipients."
+msgstr "Kontroluje domyślny język przesłanego dokumentu. Będzie używany jako język w komunikacji e-mailowej z odbiorcami."
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:141
+msgid "Controls the default visibility of an uploaded document."
+msgstr "Kontroluje domyślną widoczność przesłanego dokumentu."
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:220
+msgid "Controls the formatting of the message that will be sent when inviting a recipient to sign a document. If a custom message has been provided while configuring the document, it will be used instead."
+msgstr "Kontroluje formatowanie wiadomości, która zostanie wysłana podczas zapraszania odbiorcy do podpisania dokumentu. Jeśli w konfiguracji dokumentu podano niestandardową wiadomość, zostanie użyta zamiast tego."
+
+#: apps/web/src/components/document/document-recipient-link-copy-dialog.tsx:128
+msgid "Copied"
+msgstr "Skopiowano"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:162
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:77
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-badge.tsx:31
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:163
+#: apps/web/src/components/(dashboard)/avatar/avatar-with-recipient.tsx:40
+#: apps/web/src/components/document/document-recipient-link-copy-dialog.tsx:61
+#: apps/web/src/components/document/document-recipient-link-copy-dialog.tsx:117
+#: apps/web/src/components/forms/public-profile-form.tsx:117
+msgid "Copied to clipboard"
+msgstr "Skopiowano do schowka"
+
+#: apps/web/src/components/document/document-recipient-link-copy-dialog.tsx:123
+msgid "Copy"
+msgstr "Kopiuj"
+
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:169
+msgid "Copy sharable link"
+msgstr "Kopiuj udostępnianą link"
+
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:397
+msgid "Copy Shareable Link"
+msgstr "Kopiuj udostępniany link"
+
+#: apps/web/src/components/document/document-recipient-link-copy-dialog.tsx:83
+msgid "Copy Signing Links"
+msgstr "Kopiuj linki do podpisania"
+
+#: apps/web/src/components/forms/token.tsx:288
+msgid "Copy token"
+msgstr "Kopiuj token"
+
+#: apps/web/src/app/(profile)/profile-header.tsx:83
+#: apps/web/src/components/(dashboard)/settings/webhooks/create-webhook-dialog.tsx:245
+msgid "Create"
+msgstr "Utwórz"
+
+#: apps/web/src/components/forms/v2/signup.tsx:264
+msgid "Create a new account"
+msgstr "Utwórz nowe konto"
+
+#: apps/web/src/components/(teams)/dialogs/create-team-dialog.tsx:150
+msgid "Create a team to collaborate with your team members."
+msgstr "Utwórz zespół, aby współpracować z członkami zespołu."
+
+#: apps/web/src/app/(unauthenticated)/team/decline/[token]/page.tsx:106
+#: apps/web/src/app/(unauthenticated)/team/invite/[token]/page.tsx:111
+msgid "Create account"
+msgstr "Utwórz konto"
+
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:397
+msgid "Create and send"
+msgstr "Utwórz i wyślij"
+
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:395
+msgid "Create as draft"
+msgstr "Utwórz jako szkic"
+
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:355
+msgid "Create as pending"
+msgstr "Utwórz jako oczekujące"
+
+#: apps/web/src/app/(dashboard)/templates/[id]/template-direct-link-dialog-wrapper.tsx:37
+msgid "Create Direct Link"
+msgstr "Utwórz bezpośredni link"
+
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:202
+msgid "Create Direct Signing Link"
+msgstr "Utwórz bezpośredni link do podpisu"
+
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:214
+msgid "Create document from template"
+msgstr "Utwórz dokument z szablonu"
+
+#: apps/web/src/app/(profile)/profile-header.tsx:79
+msgid "Create now"
+msgstr "Utwórz teraz"
+
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:352
+msgid "Create one automatically"
+msgstr "Utwórz jeden automatycznie"
+
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:399
+msgid "Create signing links"
+msgstr "Utwórz linki do podpisania"
+
+#: apps/web/src/components/(dashboard)/layout/menu-switcher.tsx:181
+#: apps/web/src/components/(dashboard)/layout/menu-switcher.tsx:251
+#: apps/web/src/components/(teams)/dialogs/create-team-dialog.tsx:138
+#: apps/web/src/components/(teams)/dialogs/create-team-dialog.tsx:146
+msgid "Create team"
+msgstr "Utwórz zespół"
+
+#: apps/web/src/components/(teams)/dialogs/create-team-dialog.tsx:226
+msgid "Create Team"
+msgstr "Utwórz Zespół"
+
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:362
+msgid "Create the document as pending and ready to sign."
+msgstr "Utwórz dokument jako oczekujący i gotowy do podpisania."
+
+#: apps/web/src/components/forms/token.tsx:250
+#: apps/web/src/components/forms/token.tsx:259
+msgid "Create token"
+msgstr "Utwórz token"
+
+#: apps/web/src/components/(dashboard)/settings/webhooks/create-webhook-dialog.tsx:125
+msgid "Create webhook"
+msgstr "Utwórz webhook"
+
+#: apps/web/src/components/(dashboard)/settings/webhooks/create-webhook-dialog.tsx:117
+msgid "Create Webhook"
+msgstr "Utwórz Webhook"
+
+#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:215
+msgid "Create your account and start using state-of-the-art document signing."
+msgstr "Utwórz swoje konto i zacznij korzystać z nowoczesnego podpisywania dokumentów."
+
+#: apps/web/src/components/forms/v2/signup.tsx:268
+msgid "Create your account and start using state-of-the-art document signing. Open and beautiful signing is within your grasp."
+msgstr "Utwórz swoje konto i zacznij korzystać z nowoczesnego podpisywania dokumentów. Otwarty i piękny podpis jest w zasięgu ręki."
+
+#: apps/web/src/app/(dashboard)/admin/documents/document-results.tsx:62
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-information.tsx:35
+#: apps/web/src/app/(dashboard)/documents/data-table.tsx:54
+#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table.tsx:65
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:109
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-information.tsx:34
+#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:56
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:274
+msgid "Created"
+msgstr "Utworzono"
+
+#: apps/web/src/app/(dashboard)/admin/subscriptions/page.tsx:35
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:111
+msgid "Created At"
+msgstr "Utworzono w"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-page-view.tsx:79
+msgid "Created by"
+msgstr "Utworzone przez"
+
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/page.tsx:48
+#: apps/web/src/components/(teams)/tables/pending-user-teams-data-table.tsx:78
+msgid "Created on"
+msgstr "Utworzone w"
+
+#: apps/web/src/app/(dashboard)/settings/tokens/page.tsx:67
+#: apps/web/src/app/(dashboard)/settings/webhooks/page.tsx:88
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx:100
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/page.tsx:93
+msgid "Created on {0}"
+msgstr "Utworzono {0}"
+
+#: apps/web/src/components/forms/password.tsx:107
+msgid "Current Password"
+msgstr "Aktualne hasło"
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/billing/page.tsx:69
+msgid "Current plan: {0}"
+msgstr "Bieżący plan: {0}"
+
+#: apps/web/src/app/(dashboard)/settings/billing/billing-plans.tsx:28
+msgid "Daily"
+msgstr "Codziennie"
+
+#: apps/web/src/components/(dashboard)/common/command-menu.tsx:265
+msgid "Dark Mode"
+msgstr "Tryb ciemny"
+
+#: apps/web/src/app/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx:70
+#: apps/web/src/app/(signing)/sign/[token]/date-field.tsx:148
+msgid "Date"
+msgstr "Data"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-page-view.tsx:85
+msgid "Date created"
+msgstr "Data utworzenia"
+
+#: apps/web/src/app/(dashboard)/settings/teams/decline-team-invitation-button.tsx:47
+msgid "Decline"
+msgstr "Odrzuć"
+
+#: apps/web/src/app/(dashboard)/settings/teams/decline-team-invitation-button.tsx:26
+msgid "Declined team invitation"
+msgstr "Odrzucono zaproszenie do zespołu"
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:153
+msgid "Default Document Language"
+msgstr "Domyślny język dokumentu"
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:117
+#: apps/web/src/components/(teams)/forms/update-team-form.tsx:195
+msgid "Default Document Visibility"
+msgstr "Domyślna widoczność dokumentu"
+
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:90
+msgid "delete"
+msgstr "usuń"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:144
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:189
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:200
+#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:177
+#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:211
+#: apps/web/src/app/(dashboard)/settings/tokens/page.tsx:83
+#: apps/web/src/app/(dashboard)/settings/webhooks/page.tsx:100
+#: apps/web/src/app/(dashboard)/templates/data-table-action-dropdown.tsx:94
+#: apps/web/src/app/(dashboard)/templates/delete-template-dialog.tsx:90
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx:116
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/page.tsx:105
+#: apps/web/src/components/(dashboard)/settings/token/delete-token-dialog.tsx:121
+#: apps/web/src/components/(dashboard)/settings/webhooks/delete-webhook-dialog.tsx:109
+#: apps/web/src/components/(teams)/dialogs/delete-team-dialog.tsx:167
+#: apps/web/src/components/(teams)/dialogs/delete-team-member-dialog.tsx:113
+msgid "Delete"
+msgstr "Usuń"
+
+#: apps/web/src/components/(dashboard)/settings/token/delete-token-dialog.tsx:56
+#: apps/web/src/components/(dashboard)/settings/webhooks/delete-webhook-dialog.tsx:54
+msgid "delete {0}"
+msgstr "usuń {0}"
+
+#: apps/web/src/components/(teams)/dialogs/delete-team-dialog.tsx:50
+msgid "delete {teamName}"
+msgstr "usuń {teamName}"
+
+#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:137
+msgid "Delete account"
+msgstr "Usuń konto"
+
+#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:98
+#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:105
+#: apps/web/src/app/(dashboard)/settings/profile/delete-account-dialog.tsx:83
+#: apps/web/src/app/(dashboard)/settings/profile/delete-account-dialog.tsx:97
+#: apps/web/src/app/(dashboard)/settings/profile/delete-account-dialog.tsx:104
+msgid "Delete Account"
+msgstr "Usuń Konto"
+
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx:135
+msgid "Delete document"
+msgstr "Usuń dokument"
+
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx:85
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx:98
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx:105
+msgid "Delete Document"
+msgstr "Usuń Dokument"
+
+#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:184
+msgid "Delete passkey"
+msgstr "Usuń klucz dostępu"
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:197
+#: apps/web/src/components/(teams)/dialogs/delete-team-dialog.tsx:118
+msgid "Delete team"
+msgstr "Usuń zespół"
+
+#: apps/web/src/components/(teams)/dialogs/delete-team-member-dialog.tsx:73
+msgid "Delete team member"
+msgstr "Usuń członka zespołu"
+
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx:88
+msgid "Delete the document. This action is irreversible so proceed with caution."
+msgstr "Usuń dokument. Działanie to jest nieodwracalne, więc działaj ostrożnie."
+
+#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:87
+msgid "Delete the users account and all its contents. This action is irreversible and will cancel their subscription, so proceed with caution."
+msgstr "Usuń konto użytkownika i wszystkie jego treści. Działanie to jest nieodwracalne i anuluję subskrypcję, więc działaj ostrożnie."
+
+#: apps/web/src/components/(dashboard)/settings/webhooks/delete-webhook-dialog.tsx:117
+msgid "Delete Webhook"
+msgstr "Usuń Webhook"
+
+#: apps/web/src/app/(dashboard)/settings/profile/delete-account-dialog.tsx:86
+msgid "Delete your account and all its contents, including completed documents. This action is irreversible and will cancel your subscription, so proceed with caution."
+msgstr "Usuń swoje konto i wszystkie jego treści, w tym zakończone dokumenty. Działanie to jest nieodwracalne i anuluję twoją subskrypcję, więc działaj ostrożnie."
+
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/page.tsx:41
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:97
+msgid "Deleted"
+msgstr "Usunięto"
+
+#: apps/web/src/app/(dashboard)/settings/profile/delete-account-dialog.tsx:157
+msgid "Deleting account..."
+msgstr "Usuwanie konta..."
+
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:178
+msgid "Details"
+msgstr "Szczegóły"
+
+#: apps/web/src/app/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx:75
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:234
+msgid "Device"
+msgstr "Urządzenie"
+
+#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:91
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-badge.tsx:46
+msgid "direct link"
+msgstr "link bezpośredni"
+
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:40
+#: apps/web/src/app/(dashboard)/templates/data-table-action-dropdown.tsx:79
+msgid "Direct link"
+msgstr "Link bezpośredni"
+
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:160
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:231
+msgid "Direct Link"
+msgstr "Bezpośredni link"
+
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-badge.tsx:46
+msgid "direct link disabled"
+msgstr "link bezpośredni wyłączony"
+
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:363
+msgid "Direct Link Signing"
+msgstr "Podpisywanie bezpośrednim linkiem"
+
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:115
+msgid "Direct link signing has been disabled"
+msgstr "Podpisywanie bezpośrednim linkiem zostało wyłączone"
+
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:114
+msgid "Direct link signing has been enabled"
+msgstr "Podpisywanie za pomocą linku bezpośredniego zostało włączone"
+
+#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:95
+msgid "Direct link templates contain one dynamic recipient placeholder. Anyone with access to this link can sign the document, and it will then appear on your documents page."
+msgstr "Szablony linków bezpośrednich zawierają jedno dynamiczne miejsce odbiorcy. Każdy, kto ma dostęp do tego linku, może podpisać dokument, a następnie pojawi się on na stronie twoich dokumentów."
+
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:142
+msgid "Direct template link deleted"
+msgstr "Link szablonu bezpośredniego usunięty"
+
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:228
+msgid "Direct template link usage exceeded ({0}/{1})"
+msgstr "Przekroczono użycie linku szablonu bezpośredniego ({0}/{1})"
+
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:417
+msgid "Disable"
+msgstr "Wyłącz"
+
+#: apps/web/src/components/forms/2fa/disable-authenticator-app-dialog.tsx:116
+#: apps/web/src/components/forms/2fa/disable-authenticator-app-dialog.tsx:123
+#: apps/web/src/components/forms/2fa/disable-authenticator-app-dialog.tsx:192
+msgid "Disable 2FA"
+msgstr "Wyłącz 2FA"
+
+#: apps/web/src/app/(dashboard)/settings/profile/delete-account-dialog.tsx:116
+msgid "Disable Two Factor Authentication before deleting your account."
+msgstr "Wyłącz dwuskładnikowe uwierzytelnianie przed usunięciem konta."
+
+#: apps/web/src/app/(dashboard)/settings/webhooks/page.tsx:74
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/page.tsx:79
+msgid "Disabled"
+msgstr "Wyłączone"
+
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:380
+msgid "Disabling direct link signing will prevent anyone from accessing the link."
+msgstr "Wyłączenie podpisywania za pomocą linku bezpośredniego uniemożliwi dostęp do linku."
+
+#: apps/web/src/app/(dashboard)/settings/teams/team-email-usage.tsx:75
+msgid "Display your name and email in documents"
+msgstr "Wyświetl swoją nazwę i adres e-mail w dokumentach"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:181
+msgid "Distribute Document"
+msgstr "Rozprowadź dokument"
+
+#: apps/web/src/app/(dashboard)/templates/delete-template-dialog.tsx:63
+msgid "Do you want to delete this template?"
+msgstr "Czy chcesz usunąć ten szablon?"
+
+#: apps/web/src/app/(dashboard)/templates/duplicate-template-dialog.tsx:63
+msgid "Do you want to duplicate this template?"
+msgstr "Czy chcesz zduplikować ten szablon?"
+
+#: apps/web/src/app/(dashboard)/settings/profile/delete-account-dialog.tsx:122
+msgid "Documenso will delete <0>all of your documents0>, along with all of your completed documents, signatures, and all other resources belonging to your Account."
+msgstr "Documenso usunie <0>wszystkie twoje dokumenty0>, wraz ze wszystkimi zakończonymi dokumentami, podpisami i wszystkimi innymi zasobami należącymi do twojego konta."
+
+#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-page-view.tsx:119
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:38
+msgid "Document"
+msgstr "Dokument"
+
+#: apps/web/src/components/formatter/document-status.tsx:47
+msgid "Document All"
+msgstr "Dokument Wszystko"
+
+#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:134
+msgid "Document Approved"
+msgstr "Dokument zatwierdzony"
+
+#: apps/web/src/app/(signing)/sign/[token]/no-longer-available.tsx:40
+msgid "Document Cancelled"
+msgstr "Dokument anulowany"
+
+#: apps/web/src/components/formatter/document-status.tsx:29
+msgid "Document completed"
+msgstr "Dokument zakończony"
+
+#: apps/web/src/app/embed/completed.tsx:16
+msgid "Document Completed!"
+msgstr "Dokument Zakończony!"
+
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:156
+msgid "Document created"
+msgstr "Dokument stworzony"
+
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:129
+msgid "Document created by <0>{0}0>"
+msgstr "Dokument utworzony przez <0>{0}0>"
+
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:134
+msgid "Document created using a <0>direct link0>"
+msgstr "Dokument utworzony za pomocą <0>bezpośredniego linku0>"
+
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx:51
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:178
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:59
+msgid "Document deleted"
+msgstr "Dokument usunięty"
+
+#: apps/web/src/components/formatter/document-status.tsx:35
+msgid "Document draft"
+msgstr "Szkic dokumentu"
+
+#: apps/web/src/app/(dashboard)/documents/duplicate-document-dialog.tsx:58
+msgid "Document Duplicated"
+msgstr "Dokument zduplikowany"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:189
+#: apps/web/src/components/document/document-history-sheet.tsx:104
+msgid "Document history"
+msgstr "Historia dokumentu"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-page-view.tsx:71
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:81
+msgid "Document ID"
+msgstr "ID dokumentu"
+
+#: apps/web/src/components/formatter/document-status.tsx:41
+msgid "Document inbox"
+msgstr "Skrzynka odbiorcza dokumentu"
+
+#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:180
+msgid "Document Limit Exceeded!"
+msgstr "Przekroczono limit dokumentów!"
+
+#: apps/web/src/app/(dashboard)/admin/stats/page.tsx:82
+msgid "Document metrics"
+msgstr "Metryki dokumentów"
+
+#: apps/web/src/app/(dashboard)/documents/move-document-dialog.tsx:49
+msgid "Document moved"
+msgstr "Dokument przeniesiony"
+
+#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:158
+msgid "Document no longer available to sign"
+msgstr "Dokument nie jest już dostępny do podpisania"
+
+#: apps/web/src/components/formatter/document-status.tsx:23
+msgid "Document pending"
+msgstr "Dokument w toku"
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:91
+msgid "Document preferences updated"
+msgstr "Preferencje dokumentu zaktualizowane"
+
+#: apps/web/src/app/(dashboard)/documents/_action-items/resend-document.tsx:97
+msgid "Document re-sent"
+msgstr "Dokument ponownie wysłany"
+
+#: apps/web/src/app/(signing)/sign/[token]/rejected/page.tsx:83
+msgid "Document Rejected"
+msgstr "Dokument Odrzucone"
+
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/admin-actions.tsx:36
+msgid "Document resealed"
+msgstr "Dokument ponownie zaplombowany"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:327
+msgid "Document sent"
+msgstr "Dokument wysłany"
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/documents/page.tsx:26
+#~ msgid "Document Settings"
+#~ msgstr "Document Settings"
+
+#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:132
+msgid "Document Signed"
+msgstr "Dokument podpisany"
+
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:142
+msgid "Document signing process will be cancelled"
+msgstr "Proces podpisywania dokumentu zostanie anulowany"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-page-view.tsx:75
+msgid "Document status"
+msgstr "Status dokumentu"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-page-view.tsx:67
+msgid "Document title"
+msgstr "Tytuł dokumentu"
+
+#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:51
+msgid "Document upload disabled due to unpaid invoices"
+msgstr "Przesyłanie dokumentu wyłączone z powodu nieopłaconych faktur"
+
+#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:81
+msgid "Document uploaded"
+msgstr "Dokument przesłany"
+
+#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:133
+msgid "Document Viewed"
+msgstr "Dokument oglądany"
+
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:139
+msgid "Document will be permanently deleted"
+msgstr "Dokument zostanie trwale usunięty"
+
+#: apps/web/src/app/(dashboard)/admin/nav.tsx:65
+#: apps/web/src/app/(dashboard)/admin/users/data-table-users.tsx:92
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:144
+#: apps/web/src/app/(dashboard)/documents/[id]/edit/document-edit-page-view.tsx:109
+#: apps/web/src/app/(dashboard)/documents/[id]/loading.tsx:16
+#: apps/web/src/app/(dashboard)/documents/[id]/sent/page.tsx:15
+#: apps/web/src/app/(dashboard)/documents/documents-page-view.tsx:119
+#: apps/web/src/app/(profile)/p/[url]/page.tsx:166
+#: apps/web/src/app/not-found.tsx:21
+#: apps/web/src/components/(dashboard)/common/command-menu.tsx:205
+#: apps/web/src/components/(dashboard)/layout/desktop-nav.tsx:18
+#: apps/web/src/components/(dashboard)/layout/mobile-navigation.tsx:35
+#: apps/web/src/components/ui/user-profile-timur.tsx:60
+msgid "Documents"
+msgstr "Dokumenty"
+
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view.tsx:195
+msgid "Documents created from template"
+msgstr "Dokumenty utworzone z szablonu"
+
+#: apps/web/src/app/(dashboard)/admin/stats/page.tsx:113
+msgid "Documents Received"
+msgstr "Dokumenty odebrane"
+
+#: apps/web/src/app/(dashboard)/admin/stats/page.tsx:118
+msgid "Documents Viewed"
+msgstr "Dokumenty oglądane"
+
+#: apps/web/src/app/(unauthenticated)/reset-password/[token]/page.tsx:40
+#: apps/web/src/app/(unauthenticated)/signin/page.tsx:45
+msgid "Don't have an account? <0>Sign up0>"
+msgstr "Nie masz konta? <0>Zarejestruj się0>"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-button.tsx:111
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:123
+#: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:141
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:162
+#: apps/web/src/components/(teams)/tables/team-billing-invoices-data-table.tsx:110
+#: apps/web/src/components/forms/2fa/enable-authenticator-app-dialog.tsx:185
+#: apps/web/src/components/forms/2fa/view-recovery-codes-dialog.tsx:107
+msgid "Download"
+msgstr "Pobierz"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/logs/download-audit-log-button.tsx:81
+msgid "Download Audit Logs"
+msgstr "Pobierz dzienniki audytowe"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/logs/download-certificate-button.tsx:86
+msgid "Download Certificate"
+msgstr "Pobierz certyfikat"
+
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:214
+#: apps/web/src/components/formatter/document-status.tsx:34
+msgid "Draft"
+msgstr "Szkic"
+
+#: apps/web/src/components/(dashboard)/common/command-menu.tsx:46
+msgid "Draft documents"
+msgstr "Dokumenty szkiców"
+
+#: apps/web/src/app/(dashboard)/admin/stats/page.tsx:86
+msgid "Drafted Documents"
+msgstr "Szkicowane dokumenty"
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/layout-billing-banner.tsx:121
+msgid "Due to an unpaid invoice, your team has been restricted. Please settle the payment to restore full access to your team."
+msgstr "Z powodu nieopłaconej faktury Twój zespół został ograniczony. Proszę uregulować płatność, aby przywrócić pełny dostęp do zespołu."
+
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:136
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:167
+#: apps/web/src/app/(dashboard)/documents/duplicate-document-dialog.tsx:85
+#: apps/web/src/app/(dashboard)/documents/duplicate-document-dialog.tsx:118
+#: apps/web/src/app/(dashboard)/templates/data-table-action-dropdown.tsx:74
+#: apps/web/src/app/(dashboard)/templates/duplicate-template-dialog.tsx:91
+msgid "Duplicate"
+msgstr "Duplikat"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-button.tsx:104
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:115
+#: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:102
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:156
+#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:111
+#: apps/web/src/app/(dashboard)/settings/webhooks/page.tsx:95
+#: apps/web/src/app/(dashboard)/templates/data-table-action-dropdown.tsx:65
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/team-email-dropdown.tsx:77
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/page.tsx:100
+msgid "Edit"
+msgstr "Edytuj"
+
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view.tsx:115
+msgid "Edit Template"
+msgstr "Edytuj szablon"
+
+#: apps/web/src/app/(dashboard)/settings/webhooks/[id]/page.tsx:94
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/[id]/page.tsx:100
+msgid "Edit webhook"
+msgstr "Edytuj webhook"
+
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:78
+msgid "Electronic Delivery of Documents"
+msgstr "Elektroniczna dostawa dokumentów"
+
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:17
+msgid "Electronic Signature Disclosure"
+msgstr "Ujawnienie podpisu elektronicznego"
+
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/recipient-item.tsx:166
+#: apps/web/src/app/(dashboard)/admin/users/[id]/page.tsx:114
+#: apps/web/src/app/(dashboard)/admin/users/data-table-users.tsx:71
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:265
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:272
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:122
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:129
+#: apps/web/src/app/(recipient)/d/[token]/configure-direct-template.tsx:118
+#: apps/web/src/app/(signing)/sign/[token]/email-field.tsx:126
+#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:377
+#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:257
+#: apps/web/src/components/(teams)/dialogs/add-team-email-dialog.tsx:169
+#: apps/web/src/components/(teams)/dialogs/update-team-email-dialog.tsx:153
+#: apps/web/src/components/forms/forgot-password.tsx:81
+#: apps/web/src/components/forms/profile.tsx:122
+#: apps/web/src/components/forms/signin.tsx:338
+#: apps/web/src/components/forms/signup.tsx:180
+msgid "Email"
+msgstr "E-mail"
+
+#: apps/web/src/app/(signing)/sign/[token]/complete/claim-account.tsx:134
+#: apps/web/src/components/(teams)/dialogs/invite-team-member-dialog.tsx:300
+#: apps/web/src/components/forms/send-confirmation-email.tsx:82
+msgid "Email address"
+msgstr "Adres e-mail"
+
+#: apps/web/src/components/forms/v2/signup.tsx:328
+msgid "Email Address"
+msgstr "Adres e-mail"
+
+#: apps/web/src/app/(recipient)/d/[token]/configure-direct-template.tsx:80
+msgid "Email cannot already exist in the template"
+msgstr "E-mail nie może już istnieć w szablonie"
+
+#: apps/web/src/app/(unauthenticated)/verify-email/[token]/client.tsx:36
+msgid "Email Confirmed!"
+msgstr "E-mail potwierdzony!"
+
+#: apps/web/src/app/(unauthenticated)/check-email/page.tsx:20
+msgid "Email sent!"
+msgstr "E-mail wysłany!"
+
+#: apps/web/src/components/(teams)/dialogs/remove-team-email-dialog.tsx:77
+msgid "Email verification has been removed"
+msgstr "Weryfikacja e-mailu została usunięta"
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/team-email-dropdown.tsx:33
+msgid "Email verification has been resent"
+msgstr "Weryfikacja e-mailu została ponownie wysłana"
+
+#: apps/web/src/components/forms/2fa/enable-authenticator-app-dialog.tsx:153
+#: apps/web/src/components/forms/2fa/enable-authenticator-app-dialog.tsx:262
+msgid "Enable 2FA"
+msgstr "Włącz 2FA"
+
+#: apps/web/src/components/forms/2fa/enable-authenticator-app-dialog.tsx:194
+msgid "Enable Authenticator App"
+msgstr "Włącz aplikację uwierzytelniającą"
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/branding-preferences.tsx:170
+msgid "Enable custom branding for all documents in this team."
+msgstr "Włącz niestandardowe brandowanie dla wszystkich dokumentów w tym zespole."
+
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:251
+msgid "Enable direct link signing"
+msgstr "Włącz podpisywanie za pomocą bezpośredniego linku"
+
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:374
+msgid "Enable Direct Link Signing"
+msgstr "Włącz podpisywanie za pomocą bezpośredniego linku"
+
+#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:123
+#: apps/web/src/app/(dashboard)/settings/webhooks/[id]/page.tsx:138
+#: apps/web/src/app/(dashboard)/settings/webhooks/page.tsx:74
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/[id]/page.tsx:142
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/page.tsx:79
+#: apps/web/src/components/(dashboard)/settings/webhooks/create-webhook-dialog.tsx:166
+msgid "Enabled"
+msgstr "Włączone"
+
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:87
+msgid "Enclosed Document"
+msgstr "Załączony dokument"
+
+#: apps/web/src/app/(dashboard)/admin/subscriptions/page.tsx:38
+msgid "Ends On"
+msgstr "Kończy się"
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/branding-preferences.tsx:295
+msgid "Enter your brand details"
+msgstr "Wprowadź szczegóły swojej marki"
+
+#: apps/web/src/app/(signing)/sign/[token]/complete/claim-account.tsx:137
+msgid "Enter your email"
+msgstr "Wprowadź swój adres e-mail"
+
+#: apps/web/src/app/(recipient)/d/[token]/configure-direct-template.tsx:135
+msgid "Enter your email address to receive the completed document."
+msgstr "Wprowadź swój adres e-mail, aby otrzymać ukończony dokument."
+
+#: apps/web/src/app/(signing)/sign/[token]/complete/claim-account.tsx:122
+msgid "Enter your name"
+msgstr "Wprowadź swoje imię"
+
+#: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:280
+msgid "Enter your text here"
+msgstr "Wprowadź swój tekst tutaj"
+
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/admin-actions.tsx:41
+#: apps/web/src/app/(dashboard)/admin/users/[id]/page.tsx:78
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:234
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:268
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:303
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:349
+#: apps/web/src/app/(dashboard)/documents/move-document-dialog.tsx:57
+#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:106
+#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:112
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:169
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:200
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:234
+#: apps/web/src/app/(dashboard)/templates/duplicate-template-dialog.tsx:51
+#: apps/web/src/app/(dashboard)/templates/move-template-dialog.tsx:56
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:175
+#: apps/web/src/app/(signing)/sign/[token]/auto-sign.tsx:152
+#: apps/web/src/app/(signing)/sign/[token]/checkbox-field.tsx:122
+#: apps/web/src/app/(signing)/sign/[token]/checkbox-field.tsx:151
+#: apps/web/src/app/(signing)/sign/[token]/checkbox-field.tsx:212
+#: apps/web/src/app/(signing)/sign/[token]/date-field.tsx:99
+#: apps/web/src/app/(signing)/sign/[token]/date-field.tsx:125
+#: apps/web/src/app/(signing)/sign/[token]/dropdown-field.tsx:105
+#: apps/web/src/app/(signing)/sign/[token]/dropdown-field.tsx:136
+#: apps/web/src/app/(signing)/sign/[token]/email-field.tsx:83
+#: apps/web/src/app/(signing)/sign/[token]/email-field.tsx:109
+#: apps/web/src/app/(signing)/sign/[token]/initials-field.tsx:89
+#: apps/web/src/app/(signing)/sign/[token]/initials-field.tsx:115
+#: apps/web/src/app/(signing)/sign/[token]/name-field.tsx:121
+#: apps/web/src/app/(signing)/sign/[token]/name-field.tsx:147
+#: apps/web/src/app/(signing)/sign/[token]/number-field.tsx:149
+#: apps/web/src/app/(signing)/sign/[token]/number-field.tsx:194
+#: apps/web/src/app/(signing)/sign/[token]/radio-field.tsx:101
+#: apps/web/src/app/(signing)/sign/[token]/radio-field.tsx:128
+#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:146
+#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:172
+#: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:167
+#: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:195
+#: apps/web/src/components/(dashboard)/layout/verify-email-banner.tsx:54
+#: apps/web/src/components/(dashboard)/settings/webhooks/create-webhook-dialog.tsx:101
+msgid "Error"
+msgstr "Błąd"
+
+#: apps/web/src/components/forms/team-document-settings.tsx:77
+#~ msgid "Error updating global team settings"
+#~ msgstr "Error updating global team settings"
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:128
+msgid "Everyone can access and view the document"
+msgstr "Każdy może uzyskać dostęp do dokumentu i go wyświetlić"
+
+#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:142
+msgid "Everyone has signed"
+msgstr "Wszyscy podpisali"
+
+#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:166
+msgid "Everyone has signed! You will receive an Email copy of the signed document."
+msgstr "Wszyscy podpisali! Otrzymasz wiadomość e-mail z podpisanym dokumentem."
+
+#: apps/web/src/app/(dashboard)/settings/security/passkeys/create-passkey-dialog.tsx:232
+msgid "Exceeded timeout"
+msgstr "Przekroczono limit czasu"
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:120
+msgid "Expired"
+msgstr "Wygasło"
+
+#: apps/web/src/app/(dashboard)/settings/tokens/page.tsx:71
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx:104
+msgid "Expires on {0}"
+msgstr "Wygasa {0}"
+
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/admin-actions.tsx:42
+msgid "Failed to reseal document"
+msgstr "Nie udało się ponownie zaplombować dokumentu"
+
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/recipient-item.tsx:125
+msgid "Failed to update recipient"
+msgstr "Nie udało się zaktualizować odbiorcy"
+
+#: apps/web/src/app/(dashboard)/settings/webhooks/[id]/page.tsx:82
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/[id]/page.tsx:88
+msgid "Failed to update webhook"
+msgstr "Nie udało się zaktualizować webhooku"
+
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/recipient-item.tsx:190
+msgid "Fields"
+msgstr "Pola"
+
+#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:125
+msgid "File cannot be larger than {APP_DOCUMENT_UPLOAD_SIZE_LIMIT}MB"
+msgstr "Plik nie może mieć większej wielkości niż {APP_DOCUMENT_UPLOAD_SIZE_LIMIT}MB"
+
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:154
+msgid "For any questions regarding this disclosure, electronic signatures, or any related process, please contact us at: <0>{SUPPORT_EMAIL}0>"
+msgstr "W przypadku jakichkolwiek pytań dotyczących tego ujawnienia, podpisów elektronicznych lub jakiegokolwiek powiązanego procesu, prosimy o kontakt z nami pod adresem: <0>{SUPPORT_EMAIL}0>"
+
+#: apps/web/src/app/(unauthenticated)/forgot-password/page.tsx:21
+#: apps/web/src/components/forms/signin.tsx:370
+msgid "Forgot your password?"
+msgstr "Zapomniałeś hasła?"
+
+#: apps/web/src/app/(recipient)/d/[token]/sign-direct-template.tsx:326
+#: apps/web/src/app/(signing)/sign/[token]/form.tsx:178
+#: apps/web/src/app/(signing)/sign/[token]/name-field.tsx:193
+#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:362
+#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:242
+#: apps/web/src/components/forms/profile.tsx:110
+#: apps/web/src/components/forms/v2/signup.tsx:312
+msgid "Full Name"
+msgstr "Pełne imię"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:166
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:77
+#: apps/web/src/app/(recipient)/d/[token]/direct-template.tsx:62
+#: apps/web/src/components/(teams)/settings/layout/desktop-nav.tsx:44
+#: apps/web/src/components/(teams)/settings/layout/mobile-nav.tsx:52
+msgid "General"
+msgstr "Ogólne"
+
+#: apps/web/src/components/(teams)/settings/layout/desktop-nav.tsx:57
+#: apps/web/src/components/(teams)/settings/layout/mobile-nav.tsx:65
+#~ msgid "Global Settings"
+#~ msgstr "Global Settings"
+
+#: apps/web/src/components/forms/team-document-settings.tsx:69
+#~ msgid "Global Team Settings Updated"
+#~ msgstr "Global Team Settings Updated"
+
+#: apps/web/src/app/(profile)/p/[url]/not-found.tsx:30
+#: apps/web/src/app/(recipient)/d/[token]/not-found.tsx:33
+#: apps/web/src/app/(teams)/t/[teamUrl]/error.tsx:51
+#: apps/web/src/app/(teams)/t/[teamUrl]/not-found.tsx:32
+#: apps/web/src/components/partials/not-found.tsx:67
+msgid "Go Back"
+msgstr "Wróć"
+
+#: apps/web/src/app/(unauthenticated)/verify-email/[token]/client.tsx:48
+#: apps/web/src/app/(unauthenticated)/verify-email/[token]/page.tsx:73
+#: apps/web/src/app/(unauthenticated)/verify-email/[token]/page.tsx:101
+#: apps/web/src/app/(unauthenticated)/verify-email/page.tsx:38
+msgid "Go back home"
+msgstr "Wróć do domu"
+
+#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:226
+#: apps/web/src/app/(signing)/sign/[token]/no-longer-available.tsx:57
+msgid "Go Back Home"
+msgstr "Wróć do domu"
+
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/admin-actions.tsx:76
+msgid "Go to owner"
+msgstr "Przejdź do właściciela"
+
+#: apps/web/src/app/(profile)/p/[url]/page.tsx:147
+msgid "Go to your <0>public profile settings0> to add documents."
+msgstr "Przejdź do swojego <0>ustawienia profilu publicznego0>, aby dodać dokumenty."
+
+#: apps/web/src/app/(dashboard)/settings/profile/page.tsx:29
+msgid "Here you can edit your personal details."
+msgstr "Tutaj możesz edytować swoje dane osobowe."
+
+#: apps/web/src/app/(dashboard)/settings/security/page.tsx:35
+msgid "Here you can manage your password and security settings."
+msgstr "Tutaj możesz zarządzać swoim hasłem i ustawieniami zabezpieczeń."
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/page.tsx:43
+msgid "Here you can set preferences and defaults for branding."
+msgstr "Tutaj możesz ustawić preferencje i domyślne ustawienia dla brandowania."
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/page.tsx:34
+msgid "Here you can set preferences and defaults for your team."
+msgstr "Tutaj możesz ustawić preferencje i domyślne ustawienia dla swojego zespołu."
+
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:206
+msgid "Here's how it works:"
+msgstr "Oto jak to działa:"
+
+#: apps/web/src/components/ui/user-profile-timur.tsx:49
+msgid "Hey I’m Timur"
+msgstr "Cześć, jestem Timur"
+
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:189
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:200
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:155
+msgid "Hide"
+msgstr "Ukryj"
+
+#: apps/web/src/components/document/document-history-sheet.tsx:111
+msgid "Hide additional information"
+msgstr "Ukryj dodatkowe informacje"
+
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:43
+msgid "I am the owner of this document"
+msgstr "Jestem właścicielem tego dokumentu"
+
+#: apps/web/src/components/(dashboard)/settings/token/delete-token-dialog.tsx:186
+#: apps/web/src/components/(dashboard)/settings/webhooks/delete-webhook-dialog.tsx:173
+msgid "I'm sure! Delete it"
+msgstr "Jestem pewny! Usuń to"
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/team-transfer-status.tsx:103
+msgid "If they accept this request, the team will be transferred to their account."
+msgstr "Jeśli zaakceptują tę prośbę, zespół zostanie przeniesiony na ich konto."
+
+#: apps/web/src/app/(dashboard)/settings/security/passkeys/create-passkey-dialog.tsx:196
+msgid "If you do not want to use the authenticator prompted, you can close it, which will then display the next available authenticator."
+msgstr "Jeśli nie chcesz korzystać z proponowanego uwierzytelnienia, możesz je zamknąć, a następnie wyświetlić następne dostępne uwierzytelnienie."
+
+#: apps/web/src/app/(unauthenticated)/unverified-account/page.tsx:30
+msgid "If you don't find the confirmation link in your inbox, you can request a new one below."
+msgstr "Jeśli nie znajdziesz linku potwierdzającego w swojej skrzynce odbiorczej, możesz poprosić o nowy poniżej."
+
+#: apps/web/src/components/forms/2fa/enable-authenticator-app-dialog.tsx:213
+msgid "If your authenticator app does not support QR codes, you can use the following code instead:"
+msgstr "Jeśli Twoja aplikacja uwierzytelniająca nie obsługuje kodów QR, możesz użyć poniższego kodu:"
+
+#: apps/web/src/components/formatter/document-status.tsx:40
+msgid "Inbox"
+msgstr "Skrzynka odbiorcza"
+
+#: apps/web/src/components/(dashboard)/common/command-menu.tsx:52
+msgid "Inbox documents"
+msgstr "Dokumenty w skrzynce odbiorczej"
+
+#: apps/web/src/components/forms/team-document-settings.tsx:132
+#~ msgid "Include Sender Details"
+#~ msgstr "Include Sender Details"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-information.tsx:53
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-information.tsx:50
+msgid "Information"
+msgstr "Informacje"
+
+#: apps/web/src/app/(signing)/sign/[token]/initials-field.tsx:132
+msgid "Initials"
+msgstr "Inicjały"
+
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/recipient-item.tsx:78
+msgid "Inserted"
+msgstr "Wstawione"
+
+#: apps/web/src/app/(dashboard)/admin/stats/page.tsx:60
+msgid "Instance Stats"
+msgstr "Statystyki instancji"
+
+#: apps/web/src/components/forms/2fa/view-recovery-codes-dialog.tsx:151
+msgid "Invalid code. Please try again."
+msgstr "Nieprawidłowy kod. Proszę spróbuj ponownie."
+
+#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:100
+msgid "Invalid file"
+msgstr "Nieprawidłowy plik"
+
+#: apps/web/src/app/(unauthenticated)/team/verify/email/[token]/page.tsx:33
+#: apps/web/src/app/(unauthenticated)/team/verify/transfer/[token]/page.tsx:36
+msgid "Invalid link"
+msgstr "Nieprawidłowy link"
+
+#: apps/web/src/app/(unauthenticated)/team/decline/[token]/page.tsx:39
+#: apps/web/src/app/(unauthenticated)/team/invite/[token]/page.tsx:39
+msgid "Invalid token"
+msgstr "Nieprawidłowy token"
+
+#: apps/web/src/app/(unauthenticated)/team/invite/[token]/page.tsx:123
+msgid "Invitation accepted!"
+msgstr "Zaproszenie zaakceptowane!"
+
+#: apps/web/src/app/(unauthenticated)/team/decline/[token]/page.tsx:118
+msgid "Invitation declined"
+msgstr "Zaproszenie odrzucone"
+
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:80
+msgid "Invitation has been deleted"
+msgstr "Zaproszenie zostało usunięte"
+
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:63
+msgid "Invitation has been resent"
+msgstr "Zaproszenie zostało ponownie wysłane"
+
+#: apps/web/src/components/(teams)/dialogs/invite-team-member-dialog.tsx:374
+msgid "Invite"
+msgstr "Zaproszenie"
+
+#: apps/web/src/components/(teams)/dialogs/invite-team-member-dialog.tsx:250
+msgid "Invite member"
+msgstr "Zaproś członka"
+
+#: apps/web/src/components/(teams)/dialogs/invite-team-member-dialog.tsx:275
+msgid "Invite Members"
+msgstr "Zaproś członków"
+
+#: apps/web/src/components/(teams)/dialogs/invite-team-member-dialog.tsx:258
+msgid "Invite team members"
+msgstr "Zaproś członków zespołu"
+
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:128
+msgid "Invited At"
+msgstr "Zaproś o"
+
+#: apps/web/src/components/(teams)/tables/team-billing-invoices-data-table.tsx:55
+msgid "Invoice"
+msgstr "Faktura"
+
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/data-table.tsx:47
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:227
+msgid "IP Address"
+msgstr "Adres IP"
+
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:118
+msgid "It is crucial to keep your contact information, especially your email address, up to date with us. Please notify us immediately of any changes to ensure that you continue to receive all necessary communications."
+msgstr "Konieczne jest, aby mieć aktualne informacje kontaktowe, szczególnie swój adres e-mail. Proszę niezwłocznie powiadomić nas o wszelkich zmianach, aby zapewnić ciągłość wszystkich niezbędnych komunikacji."
+
+#: apps/web/src/app/(profile)/p/[url]/page.tsx:134
+msgid "It looks like {0} hasn't added any documents to their profile yet."
+msgstr "Wygląda na to, że {0} jeszcze nie dodał żadnych dokumentów do swojego profilu."
+
+#: apps/web/src/app/(unauthenticated)/verify-email/[token]/page.tsx:93
+msgid "It seems that the provided token has expired. We've just sent you another token, please check your email and try again."
+msgstr "Wydaje się, że podany token wygasł. Właśnie wysłaliśmy Ci nowy token, proszę sprawdź swoją pocztę i spróbuj ponownie."
+
+#: apps/web/src/app/(unauthenticated)/verify-email/page.tsx:30
+msgid "It seems that there is no token provided, if you are trying to verify your email please follow the link in your email."
+msgstr "Wydaje się, że nie podano tokena, jeśli próbujesz zweryfikować swój e-mail, proszę postępuj zgodnie z linkiem w swoim e-mailu."
+
+#: apps/web/src/app/(unauthenticated)/verify-email/[token]/page.tsx:40
+msgid "It seems that there is no token provided. Please check your email and try again."
+msgstr "Wydaje się, że nie podano tokena. Proszę sprawdź swoją pocztę i spróbuj ponownie."
+
+#: apps/web/src/app/(signing)/sign/[token]/waiting/page.tsx:74
+msgid "It's currently not your turn to sign. You will receive an email with instructions once it's your turn to sign the document."
+msgstr "Obecnie nie jest Twój czas na podpisanie dokumentu. Otrzymasz e-mail z instrukcjami, gdy przyjdzie Twój czas na podpisanie dokumentu."
+
+#: apps/web/src/components/(dashboard)/layout/menu-switcher.tsx:286
+msgid "Language"
+msgstr "Język"
+
+#: apps/web/src/components/(dashboard)/period-selector/period-selector.tsx:61
+msgid "Last 14 days"
+msgstr "Ostatnie 14 dni"
+
+#: apps/web/src/components/(dashboard)/period-selector/period-selector.tsx:64
+msgid "Last 30 days"
+msgstr "Ostatnie 30 dni"
+
+#: apps/web/src/components/(dashboard)/period-selector/period-selector.tsx:58
+msgid "Last 7 days"
+msgstr "Ostatnie 7 dni"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-information.tsx:41
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-information.tsx:38
+msgid "Last modified"
+msgstr "Ostatnia modyfikacja"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-page-view.tsx:91
+msgid "Last updated"
+msgstr "Ostatnia aktualizacja"
+
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:121
+msgid "Last Updated"
+msgstr "Ostatnia aktualizacja"
+
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/page.tsx:52
+msgid "Last updated at"
+msgstr "Ostatnia aktualizacja o"
+
+#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table.tsx:71
+msgid "Last used"
+msgstr "Ostatnie użycie"
+
+#: apps/web/src/components/(teams)/dialogs/leave-team-dialog.tsx:111
+#: apps/web/src/components/(teams)/tables/current-user-teams-data-table.tsx:117
+msgid "Leave"
+msgstr "Wyjdź"
+
+#: apps/web/src/components/(teams)/dialogs/leave-team-dialog.tsx:73
+msgid "Leave team"
+msgstr "Opuszczaj zespół"
+
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:45
+msgid "Legality of Electronic Signatures"
+msgstr "Legalność podpisów elektronicznych"
+
+#: apps/web/src/components/(dashboard)/common/command-menu.tsx:264
+msgid "Light Mode"
+msgstr "Jasny tryb"
+
+#: apps/web/src/app/(profile)/profile-header.tsx:71
+msgid "Like to have your own public profile with agreements?"
+msgstr "Czy chcesz mieć własny publiczny profil z umowami?"
+
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:216
+msgid "Link template"
+msgstr "Szablon linku"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:338
+msgid "Links Generated"
+msgstr "Wygenerowane linki"
+
+#: apps/web/src/app/(dashboard)/settings/webhooks/page.tsx:79
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/page.tsx:84
+msgid "Listening to {0}"
+msgstr "Słuchając {0}"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recent-activity.tsx:100
+msgid "Load older activity"
+msgstr "Załaduj starszą aktywność"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/loading.tsx:33
+msgid "Loading document..."
+msgstr "Ładowanie dokumentu..."
+
+#: apps/web/src/app/(dashboard)/documents/[id]/loading.tsx:20
+#: apps/web/src/app/(dashboard)/documents/[id]/sent/page.tsx:19
+#: apps/web/src/app/(dashboard)/documents/duplicate-document-dialog.tsx:91
+msgid "Loading Document..."
+msgstr "Ładowanie Dokumentu..."
+
+#: apps/web/src/app/(dashboard)/documents/move-document-dialog.tsx:92
+#: apps/web/src/app/(dashboard)/templates/move-template-dialog.tsx:91
+msgid "Loading teams..."
+msgstr "Ładowanie zespołów..."
+
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recent-activity.tsx:100
+msgid "Loading..."
+msgstr "Ładowanie..."
+
+#: apps/web/src/app/(recipient)/d/[token]/signing-auth-page.tsx:54
+#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-account.tsx:75
+#: apps/web/src/app/(signing)/sign/[token]/signing-auth-page.tsx:67
+msgid "Login"
+msgstr "Zaloguj się"
+
+#: apps/web/src/components/(teams)/tables/current-user-teams-data-table.tsx:101
+msgid "Manage"
+msgstr "Zarządzaj"
+
+#: apps/web/src/app/(dashboard)/admin/users/[id]/page.tsx:88
+msgid "Manage {0}'s profile"
+msgstr "Zarządzaj profilem {0}"
+
+#: apps/web/src/app/(dashboard)/settings/teams/page.tsx:26
+msgid "Manage all teams you are currently associated with."
+msgstr "Zarządzaj wszystkimi zespołami, z którymi jesteś obecnie związany."
+
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view.tsx:159
+msgid "Manage and view template"
+msgstr "Zarządzaj i przeglądaj szablon"
+
+#: apps/web/src/app/(dashboard)/settings/billing/page.tsx:136
+msgid "Manage billing"
+msgstr "Zarządzaj fakturowaniem"
+
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:341
+msgid "Manage details for this public template"
+msgstr "Zarządzaj szczegółami tego publicznego szablonu"
+
+#: apps/web/src/app/(dashboard)/templates/[id]/template-direct-link-dialog-wrapper.tsx:35
+msgid "Manage Direct Link"
+msgstr "Zarządzaj Bezpośrednim Linkiem"
+
+#: apps/web/src/app/(dashboard)/admin/documents/page.tsx:13
+msgid "Manage documents"
+msgstr "Zarządzaj dokumentami"
+
+#: apps/web/src/app/(dashboard)/settings/security/page.tsx:118
+msgid "Manage passkeys"
+msgstr "Zarządzaj kluczami dostępu"
+
+#: apps/web/src/components/(teams)/team-billing-portal-button.tsx:41
+msgid "Manage subscription"
+msgstr "Zarządzaj subskrypcją"
+
+#: apps/web/src/app/(dashboard)/settings/billing/billing-portal-button.tsx:67
+msgid "Manage Subscription"
+msgstr "Zarządzaj Subskrypcją"
+
+#: apps/web/src/app/(dashboard)/admin/subscriptions/page.tsx:24
+msgid "Manage subscriptions"
+msgstr "Zarządzaj subskrypcjami"
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/billing/page.tsx:81
+msgid "Manage team subscription."
+msgstr "Zarządzaj subskrypcją zespołu."
+
+#: apps/web/src/components/(dashboard)/layout/menu-switcher.tsx:168
+msgid "Manage teams"
+msgstr "Zarządzaj zespołami"
+
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:367
+msgid "Manage the direct link signing for this template"
+msgstr "Zarządzaj podpisywaniem bezpośredniego linku dla tego szablonu"
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/members/page.tsx:32
+msgid "Manage the members or invite new members."
+msgstr "Zarządzaj członkami lub zaproś nowych członków."
+
+#: apps/web/src/app/(dashboard)/admin/users/page.tsx:35
+msgid "Manage users"
+msgstr "Zarządzaj użytkownikami"
+
+#: apps/web/src/app/(dashboard)/settings/security/passkeys/page.tsx:33
+msgid "Manage your passkeys."
+msgstr "Zarządzaj swoimi kluczami dostępu."
+
+#: apps/web/src/app/(dashboard)/admin/site-settings/page.tsx:27
+msgid "Manage your site settings here"
+msgstr "Zarządzaj ustawieniami swojej witryny tutaj"
+
+#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:123
+msgid "Mark as Viewed"
+msgstr "Oznacz jako wyświetlone"
+
+#: apps/web/src/app/(dashboard)/admin/stats/page.tsx:137
+msgid "MAU (created document)"
+msgstr "MAU (utworzony dokument)"
+
+#: apps/web/src/app/(dashboard)/admin/stats/page.tsx:143
+msgid "MAU (had document completed)"
+msgstr "MAU (ukończony dokument)"
+
+#: apps/web/src/components/(teams)/tables/current-user-teams-data-table.tsx:90
+#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:113
+msgid "Member Since"
+msgstr "Członek od"
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/members/page.tsx:31
+#: apps/web/src/components/(teams)/settings/layout/desktop-nav.tsx:86
+#: apps/web/src/components/(teams)/settings/layout/mobile-nav.tsx:95
+msgid "Members"
+msgstr "Członkowie"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:55
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recipients.tsx:35
+msgid "Modify recipients"
+msgstr "Modyfikuj odbiorców"
+
+#: apps/web/src/app/(dashboard)/settings/billing/billing-plans.tsx:30
+msgid "Monthly"
+msgstr "Miesięczny"
+
+#: apps/web/src/app/(dashboard)/admin/stats/page.tsx:138
+msgid "Monthly Active Users: Users that created at least one Document"
+msgstr "Miesięczni aktywni użytkownicy: Użytkownicy, którzy utworzyli przynajmniej jeden dokument"
+
+#: apps/web/src/app/(dashboard)/admin/stats/page.tsx:145
+msgid "Monthly Active Users: Users that had at least one of their documents completed"
+msgstr "Miesięczni aktywni użytkownicy: Użytkownicy, którzy mieli przynajmniej jeden z ukończonych dokumentów"
+
+#: apps/web/src/app/(dashboard)/documents/move-document-dialog.tsx:123
+#: apps/web/src/app/(dashboard)/templates/move-template-dialog.tsx:122
+msgid "Move"
+msgstr "Przenieś"
+
+#: apps/web/src/app/(dashboard)/documents/move-document-dialog.tsx:78
+msgid "Move Document to Team"
+msgstr "Przenieś dokument do zespołu"
+
+#: apps/web/src/app/(dashboard)/templates/move-template-dialog.tsx:77
+msgid "Move Template to Team"
+msgstr "Przenieś szablon do zespołu"
+
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:174
+#: apps/web/src/app/(dashboard)/templates/data-table-action-dropdown.tsx:85
+msgid "Move to Team"
+msgstr "Przenieś do zespołu"
+
+#: apps/web/src/app/(dashboard)/documents/move-document-dialog.tsx:123
+#: apps/web/src/app/(dashboard)/templates/move-template-dialog.tsx:122
+msgid "Moving..."
+msgstr "Przenoszenie..."
+
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:44
+msgid "My templates"
+msgstr "Moje szablony"
+
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/recipient-item.tsx:148
+#: apps/web/src/app/(dashboard)/admin/users/[id]/page.tsx:99
+#: apps/web/src/app/(dashboard)/admin/users/data-table-users.tsx:66
+#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:144
+#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table.tsx:61
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:287
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:294
+#: apps/web/src/app/(signing)/sign/[token]/complete/claim-account.tsx:119
+#: apps/web/src/app/(signing)/sign/[token]/name-field.tsx:170
+#: apps/web/src/components/(teams)/dialogs/add-team-email-dialog.tsx:153
+#: apps/web/src/components/(teams)/dialogs/update-team-email-dialog.tsx:141
+#: apps/web/src/components/forms/signup.tsx:164
+msgid "Name"
+msgstr "Nazwa"
+
+#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:211
+msgid "Need to sign documents?"
+msgstr "Potrzebujesz podpisać dokumenty?"
+
+#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table.tsx:76
+msgid "Never"
+msgstr "Nigdy"
+
+#: apps/web/src/components/forms/token.tsx:224
+msgid "Never expire"
+msgstr "Nie wygasa nigdy"
+
+#: apps/web/src/components/(teams)/dialogs/transfer-team-dialog.tsx:176
+msgid "New team owner"
+msgstr "Nowy właściciel zespołu"
+
+#: apps/web/src/app/(dashboard)/templates/new-template-dialog.tsx:96
+#: apps/web/src/app/(dashboard)/templates/new-template-dialog.tsx:103
+msgid "New Template"
+msgstr "Nowy szablon"
+
+#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:421
+#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:300
+#: apps/web/src/components/forms/v2/signup.tsx:521
+msgid "Next"
+msgstr "Dalej"
+
+#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:61
+msgid "Next field"
+msgstr "Następne pole"
+
+#: apps/web/src/app/(dashboard)/documents/empty-state.tsx:24
+msgid "No active drafts"
+msgstr "Brak aktywnych szkiców"
+
+#: apps/web/src/app/(signing)/sign/[token]/rejected/page.tsx:99
+msgid "No further action is required from you at this time."
+msgstr "Nie są wymagane żadne dalsze działania z Twojej strony w tym momencie."
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/billing/page.tsx:42
+msgid "No payment required"
+msgstr "Brak wymaganej płatności"
+
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:125
+msgid "No public profile templates found"
+msgstr "Nie znaleziono szablonów publicznego profilu"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recent-activity.tsx:108
+msgid "No recent activity"
+msgstr "Brak ostatnich aktywności"
+
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:103
+msgid "No recent documents"
+msgstr "Brak ostatnich dokumentów"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:70
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recipients.tsx:49
+#: apps/web/src/components/document/document-recipient-link-copy-dialog.tsx:96
+msgid "No recipients"
+msgstr "Brak odbiorców"
+
+#: apps/web/src/components/(dashboard)/common/command-menu.tsx:200
+msgid "No results found."
+msgstr "Brak wyników."
+
+#: apps/web/src/app/(unauthenticated)/verify-email/[token]/page.tsx:37
+msgid "No token provided"
+msgstr "Nie podano tokena"
+
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:284
+msgid "No valid direct templates found"
+msgstr "Nie znaleziono ważnych szablonów bezpośrednich"
+
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:293
+msgid "No valid recipients found"
+msgstr "Nie znaleziono ważnych odbiorców"
+
+#: apps/web/src/app/(dashboard)/admin/users/[id]/multiselect-role-combobox.tsx:64
+#: apps/web/src/components/(dashboard)/settings/webhooks/trigger-multiselect-combobox.tsx:77
+msgid "No value found."
+msgstr "Nie znaleziono wartości."
+
+#: apps/web/src/app/(unauthenticated)/forgot-password/page.tsx:25
+msgid "No worries, it happens! Enter your email and we'll email you a special link to reset your password."
+msgstr "Nie martw się, to się zdarza! Wprowadź swój e-mail, a my wyślemy Ci specjalny link do zresetowania hasła."
+
+#: apps/web/src/components/forms/signin.tsx:160
+msgid "Not supported"
+msgstr "Nieobsługiwane"
+
+#: apps/web/src/app/(dashboard)/documents/empty-state.tsx:19
+#: apps/web/src/app/(dashboard)/documents/empty-state.tsx:34
+msgid "Nothing to do"
+msgstr "Nic do zrobienia"
+
+#: apps/web/src/app/(signing)/sign/[token]/number-field.tsx:271
+msgid "Number"
+msgstr "Numer"
+
+#: apps/web/src/components/(dashboard)/settings/webhooks/create-webhook-dialog.tsx:128
+msgid "On this page, you can create a new webhook."
+msgstr "Na tej stronie możesz utworzyć nowy webhook."
+
+#: apps/web/src/app/(dashboard)/settings/tokens/page.tsx:26
+msgid "On this page, you can create new API tokens and manage the existing ones. <0/>Also see our <1>Documentation1>."
+msgstr "Na tej stronie możesz utworzyć nowe tokeny API i zarządzać istniejącymi. <0/>Zobacz także naszą <1>Dokumentację1>."
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx:60
+msgid "On this page, you can create new API tokens and manage the existing ones. <0/>You can view our swagger docs <1>here1>"
+msgstr "Na tej stronie możesz utworzyć nowe tokeny API i zarządzać istniejącymi. <0/>Możesz zobaczyć nasze dokumenty swagger <1>tutaj1>"
+
+#: apps/web/src/app/(dashboard)/settings/webhooks/page.tsx:29
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/page.tsx:34
+msgid "On this page, you can create new Webhooks and manage the existing ones."
+msgstr "Na tej stronie możesz utworzyć nowe webhooki i zarządzać istniejącymi."
+
+#: apps/web/src/app/(dashboard)/settings/webhooks/[id]/page.tsx:95
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/[id]/page.tsx:101
+msgid "On this page, you can edit the webhook and its settings."
+msgstr "Na tej stronie możesz edytować webhook i jego ustawienia."
+
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:134
+msgid "Once confirmed, the following will occur:"
+msgstr "Po potwierdzeniu, nastąpi:"
+
+#: apps/web/src/components/forms/2fa/enable-authenticator-app-dialog.tsx:224
+msgid "Once you have scanned the QR code or entered the code manually, enter the code provided by your authenticator app below."
+msgstr "Ups! Coś poszło nie tak."
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:134
+msgid "Only admins can access and view the document"
+msgstr "Tylko administratorzy mogą uzyskać dostęp do dokumentu i go wyświetlić"
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:131
+msgid "Only managers and above can access and view the document"
+msgstr "Tylko menedżerowie i wyżej mogą uzyskać dostęp do dokumentu i go wyświetlić"
+
+#: apps/web/src/app/(profile)/p/[url]/not-found.tsx:19
+#: apps/web/src/app/(recipient)/d/[token]/not-found.tsx:19
+#: apps/web/src/app/(teams)/t/[teamUrl]/error.tsx:37
+#: apps/web/src/app/(teams)/t/[teamUrl]/not-found.tsx:19
+#: apps/web/src/components/partials/not-found.tsx:49
+msgid "Oops! Something went wrong."
+msgstr "Ups! Coś poszło nie tak."
+
+#: apps/web/src/components/(dashboard)/avatar/stack-avatars-with-tooltip.tsx:140
+msgid "Opened"
+msgstr "Otwarto"
+
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:337
+#: apps/web/src/components/forms/signup.tsx:243
+#: apps/web/src/components/forms/signup.tsx:267
+#: apps/web/src/components/forms/v2/signup.tsx:383
+msgid "Or"
+msgstr "Lub"
+
+#: apps/web/src/components/forms/signin.tsx:390
+msgid "Or continue with"
+msgstr "Lub kontynuuj z"
+
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:341
+msgid "Otherwise, the document will be created as a draft."
+msgstr "W przeciwnym razie dokument zostanie utworzony jako wersja robocza."
+
+#: apps/web/src/app/(dashboard)/admin/documents/document-results.tsx:86
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:103
+#: apps/web/src/components/(dashboard)/layout/menu-switcher.tsx:81
+#: apps/web/src/components/(teams)/tables/current-user-teams-data-table.tsx:86
+#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:109
+msgid "Owner"
+msgstr "Właściciel"
+
+#: apps/web/src/components/(teams)/tables/team-billing-invoices-data-table.tsx:79
+msgid "Paid"
+msgstr "Opłacono"
+
+#: apps/web/src/components/forms/signin.tsx:435
+msgid "Passkey"
+msgstr "Klucz dostępu"
+
+#: apps/web/src/app/(dashboard)/settings/security/passkeys/create-passkey-dialog.tsx:229
+msgid "Passkey already exists for the provided authenticator"
+msgstr "Klucz dostępu już istnieje dla podanego uwierzytelniającego"
+
+#: apps/web/src/app/(dashboard)/settings/security/passkeys/create-passkey-dialog.tsx:219
+msgid "Passkey creation cancelled due to one of the following reasons:"
+msgstr "Tworzenie klucza dostępu anulowane z jednego z następujących powodów:"
+
+#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:88
+msgid "Passkey has been removed"
+msgstr "Klucz dostępu został usunięty"
+
+#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:68
+msgid "Passkey has been updated"
+msgstr "Klucz dostępu został zaktualizowany"
+
+#: apps/web/src/app/(dashboard)/settings/security/passkeys/create-passkey-dialog.tsx:177
+msgid "Passkey name"
+msgstr "Nazwa klucza dostępu"
+
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:121
+msgid "Passkey Re-Authentication"
+msgstr "Ponowna Autoryzacja Klucza Dostępu"
+
+#: apps/web/src/app/(dashboard)/settings/security/page.tsx:106
+#: apps/web/src/app/(dashboard)/settings/security/passkeys/page.tsx:32
+msgid "Passkeys"
+msgstr "Klucze dostępu"
+
+#: apps/web/src/app/(dashboard)/settings/security/passkeys/create-passkey-dialog.tsx:158
+msgid "Passkeys allow you to sign in and authenticate using biometrics, password managers, etc."
+msgstr "Klucze dostępu pozwalają na logowanie i uwierzytelnianie przy użyciu danych biometrycznych, menedżerów haseł itp."
+
+#: apps/web/src/components/forms/signin.tsx:161
+msgid "Passkeys are not supported on this browser"
+msgstr "Klucze dostępu nie są obsługiwane w tej przeglądarce"
+
+#: apps/web/src/components/(dashboard)/common/command-menu.tsx:70
+#: apps/web/src/components/forms/password.tsx:123
+#: apps/web/src/components/forms/reset-password.tsx:110
+#: apps/web/src/components/forms/signin.tsx:356
+#: apps/web/src/components/forms/signup.tsx:196
+#: apps/web/src/components/forms/v2/signup.tsx:344
+msgid "Password"
+msgstr "Hasło"
+
+#: apps/web/src/components/forms/password.tsx:71
+#: apps/web/src/components/forms/reset-password.tsx:72
+msgid "Password updated"
+msgstr "Hasło zaktualizowane"
+
+#: apps/web/src/components/(teams)/tables/pending-user-teams-data-table-actions.tsx:46
+msgid "Pay"
+msgstr "Zapłać"
+
+#: apps/web/src/components/(teams)/dialogs/create-team-checkout-dialog.tsx:89
+msgid "Payment is required to finalise the creation of your team."
+msgstr "Płatność jest wymagana do zakończenia tworzenia zespołu."
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/layout-billing-banner.tsx:82
+#: apps/web/src/app/(teams)/t/[teamUrl]/layout-billing-banner.tsx:107
+msgid "Payment overdue"
+msgstr "Płatność zaległa"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:131
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:211
+#: apps/web/src/components/(teams)/tables/teams-member-page-data-table.tsx:82
+#: apps/web/src/components/(teams)/tables/user-settings-teams-page-data-table.tsx:77
+#: apps/web/src/components/document/document-read-only-fields.tsx:89
+#: apps/web/src/components/formatter/document-status.tsx:22
+msgid "Pending"
+msgstr "Oczekujące"
+
+#: apps/web/src/components/(dashboard)/common/command-menu.tsx:51
+msgid "Pending documents"
+msgstr "Oczekujące Dokumenty"
+
+#: apps/web/src/app/(dashboard)/admin/stats/page.tsx:89
+msgid "Pending Documents"
+msgstr "Oczekujące dokumenty"
+
+#: apps/web/src/app/(dashboard)/settings/teams/team-invitations.tsx:62
+msgid "Pending invitations"
+msgstr "Oczekujące zaproszenia"
+
+#: apps/web/src/components/(teams)/tables/pending-user-teams-data-table-actions.tsx:28
+msgid "Pending team deleted."
+msgstr "Oczekujący zespół usunięty."
+
+#: apps/web/src/components/(dashboard)/layout/menu-switcher.tsx:134
+msgid "Personal"
+msgstr "Osobiste"
+
+#: apps/web/src/components/(dashboard)/layout/menu-switcher.tsx:77
+msgid "Personal Account"
+msgstr "Konto osobiste"
+
+#: apps/web/src/app/(signing)/sign/[token]/complete/claim-account.tsx:152
+msgid "Pick a password"
+msgstr "Wybierz hasło"
+
+#: apps/web/src/components/ui/user-profile-timur.tsx:53
+msgid "Pick any of the following agreements below and start signing to get started"
+msgstr "Wybierz dowolną z poniższych umów i zacznij podpisywanie, aby rozpocząć"
+
+#: apps/web/src/components/(teams)/dialogs/invite-team-member-dialog.tsx:212
+msgid "Please check the CSV file and make sure it is according to our format"
+msgstr "Proszę sprawdzić plik CSV i upewnić się, że jest zgodny z naszym formatem"
+
+#: apps/web/src/app/(signing)/sign/[token]/waiting/page.tsx:81
+msgid "Please check your email for updates."
+msgstr "Proszę sprawdzić swój email w celu aktualizacji."
+
+#: apps/web/src/app/(unauthenticated)/reset-password/[token]/page.tsx:34
+msgid "Please choose your new password"
+msgstr "Proszę wybrać nowe hasło"
+
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:174
+msgid "Please contact support if you would like to revert this action."
+msgstr "Proszę skontaktować się z pomocą techniczną, jeśli chcesz cofnąć tę akcję."
+
+#: apps/web/src/components/forms/token.tsx:175
+msgid "Please enter a meaningful name for your token. This will help you identify it later."
+msgstr "Proszę podać wartościową nazwę dla swojego tokena. Pomoże to później w jego identyfikacji."
+
+#: apps/web/src/app/(signing)/sign/[token]/form.tsx:135
+msgid "Please mark as viewed to complete"
+msgstr "Proszę zaznaczyć jako obejrzane, aby zakończyć"
+
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:459
+msgid "Please note that proceeding will remove direct linking recipient and turn it into a placeholder."
+msgstr "Proszę zauważyć, że kontynuowanie usunie bezpośrednio łączącego odbiorcę i zamieni go w symbol zastępczy."
+
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:128
+msgid "Please note that this action is <0>irreversible0>."
+msgstr "Proszę zauważyć, że ta czynność jest <0>nieodwracalna0>."
+
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:119
+msgid "Please note that this action is <0>irreversible0>. Once confirmed, this document will be permanently deleted."
+msgstr "Proszę pamiętać, że ta czynność jest <0>nieodwracalna0>. Po potwierdzeniu, ten dokument zostanie trwale usunięty."
+
+#: apps/web/src/app/(dashboard)/templates/delete-template-dialog.tsx:67
+msgid "Please note that this action is irreversible. Once confirmed, your template will be permanently deleted."
+msgstr "Proszę pamiętać, że ta czynność jest nieodwracalna. Po potwierdzeniu, Twój szablon zostanie trwale usunięty."
+
+#: apps/web/src/components/(dashboard)/settings/token/delete-token-dialog.tsx:133
+msgid "Please note that this action is irreversible. Once confirmed, your token will be permanently deleted."
+msgstr "Proszę zauważyć, że ta czynność jest nieodwracalna. Po potwierdzeniu, twój token zostanie trwale usunięty."
+
+#: apps/web/src/components/(dashboard)/settings/webhooks/delete-webhook-dialog.tsx:121
+msgid "Please note that this action is irreversible. Once confirmed, your webhook will be permanently deleted."
+msgstr "Proszę pamiętać, że ta czynność jest nieodwracalna. Po potwierdzeniu, Twój webhook zostanie trwale usunięty."
+
+#: apps/web/src/components/(teams)/dialogs/delete-team-dialog.tsx:130
+msgid "Please note that you will lose access to all documents associated with this team & all the members will be removed and notified"
+msgstr "Proszę pamiętać, że stracisz dostęp do wszystkich dokumentów powiązanych z tym zespołem i wszyscy członkowie zostaną usunięci oraz powiadomieni"
+
+#: apps/web/src/app/(signing)/sign/[token]/reject-document-dialog.tsx:37
+msgid "Please provide a reason"
+msgstr "Proszę podać powód"
+
+#: apps/web/src/components/forms/2fa/disable-authenticator-app-dialog.tsx:127
+msgid "Please provide a token from the authenticator, or a backup code. If you do not have a backup code available, please contact support."
+msgstr "Proszę podać token z aplikacji uwierzytelniającej lub kod zapasowy. Jeśli nie masz dostępnego kodu zapasowego, skontaktuj się z pomocą techniczną."
+
+#: apps/web/src/components/forms/2fa/view-recovery-codes-dialog.tsx:120
+msgid "Please provide a token from your authenticator, or a backup code."
+msgstr "Proszę podać token z Twojego uwierzytelniacza lub kod zapasowy."
+
+#: apps/web/src/app/(signing)/sign/[token]/form.tsx:169
+msgid "Please review the document before signing."
+msgstr "Proszę przejrzeć dokument przed podpisaniem."
+
+#: apps/web/src/components/forms/send-confirmation-email.tsx:64
+msgid "Please try again and make sure you enter the correct email address."
+msgstr "Spróbuj ponownie i upewnij się, że wprowadzasz poprawny adres email."
+
+#: apps/web/src/components/forms/signin.tsx:203
+msgid "Please try again later or login using your normal details"
+msgstr "Spróbuj ponownie później lub zaloguj się, używając swoich normalnych danych"
+
+#: apps/web/src/app/(dashboard)/templates/new-template-dialog.tsx:80
+msgid "Please try again later."
+msgstr "Proszę spróbować ponownie później."
+
+#: apps/web/src/app/(dashboard)/settings/profile/delete-account-dialog.tsx:134
+msgid "Please type <0>{0}0> to confirm."
+msgstr "Proszę wpisać <0>{0}0> aby potwierdzić."
+
+#: apps/web/src/components/(dashboard)/common/command-menu.tsx:214
+#: apps/web/src/components/(teams)/settings/layout/desktop-nav.tsx:58
+#: apps/web/src/components/(teams)/settings/layout/mobile-nav.tsx:67
+msgid "Preferences"
+msgstr "Preferencje"
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:204
+msgid "Preview"
+msgstr "Podgląd"
+
+#: apps/web/src/app/(recipient)/d/[token]/direct-template.tsx:63
+msgid "Preview and configure template."
+msgstr "Podgląd i konfiguracja szablonu."
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:130
+#~ msgid "Preview: {0}"
+#~ msgstr "Preview: {0}"
+
+#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:105
+#: apps/web/src/components/formatter/template-type.tsx:22
+msgid "Private"
+msgstr "Prywatne"
+
+#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:115
+msgid "Private templates can only be modified and viewed by you."
+msgstr "Prywatne szablony mogą być modyfikowane i przeglądane tylko przez Ciebie."
+
+#: apps/web/src/app/(dashboard)/settings/profile/page.tsx:28
+#: apps/web/src/components/(dashboard)/common/command-menu.tsx:69
+#: apps/web/src/components/(dashboard)/settings/layout/desktop-nav.tsx:36
+#: apps/web/src/components/(dashboard)/settings/layout/mobile-nav.tsx:39
+msgid "Profile"
+msgstr "Profil"
+
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:184
+msgid "Profile is currently <0>hidden0>."
+msgstr "Profil jest obecnie <0>ukryty0>."
+
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:172
+msgid "Profile is currently <0>visible0>."
+msgstr "Profil jest obecnie <0>widoczny0>."
+
+#: apps/web/src/app/(dashboard)/admin/users/[id]/page.tsx:72
+#: apps/web/src/components/forms/profile.tsx:72
+msgid "Profile updated"
+msgstr "Profil zaktualizowano"
+
+#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:78
+#: apps/web/src/components/formatter/template-type.tsx:27
+msgid "Public"
+msgstr "Publiczny"
+
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:42
+#: apps/web/src/components/(dashboard)/settings/layout/desktop-nav.tsx:50
+#: apps/web/src/components/(dashboard)/settings/layout/mobile-nav.tsx:53
+#: apps/web/src/components/(teams)/settings/layout/desktop-nav.tsx:72
+#: apps/web/src/components/(teams)/settings/layout/mobile-nav.tsx:81
+msgid "Public Profile"
+msgstr "Profil publiczny"
+
+#: apps/web/src/components/forms/public-profile-form.tsx:146
+msgid "Public profile URL"
+msgstr "URL publicznego profilu"
+
+#: apps/web/src/components/forms/v2/signup.tsx:450
+msgid "Public profile username"
+msgstr "Nazwa użytkownika profilu publicznego"
+
+#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:82
+msgid "Public templates are connected to your public profile. Any modifications to public templates will also appear in your public profile."
+msgstr "Szablony publiczne są powiązane z Twoim publicznym profilem. Wszelkie modyfikacje szablonów publicznych również pojawią się w Twoim publicznym profilu."
+
+#: apps/web/src/app/(signing)/sign/[token]/signing-field-container.tsx:144
+msgid "Read only field"
+msgstr "Pole tylko do odczytu"
+
+#: apps/web/src/components/general/signing-disclosure.tsx:21
+msgid "Read the full <0>signature disclosure0>."
+msgstr "Przeczytaj pełne <0>ujawnienie podpisu0>."
+
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:106
+msgid "Ready"
+msgstr "Gotowy"
+
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:281
+msgid "Reason"
+msgstr "Powód"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:146
+msgid "Reason for rejection:"
+msgstr "Powód odrzucenia:"
+
+#: apps/web/src/app/(signing)/sign/[token]/reject-document-dialog.tsx:38
+msgid "Reason must be less than 500 characters"
+msgstr "Powód musi mieć mniej niż 500 znaków"
+
+#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-dialog.tsx:62
+msgid "Reauthentication is required to sign this field"
+msgstr "Wymagana jest ponowna autoryzacja, aby podpisać to pole"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recent-activity.tsx:57
+#: apps/web/src/app/(dashboard)/settings/security/page.tsx:130
+msgid "Recent activity"
+msgstr "Ostatnia aktywność"
+
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:47
+msgid "Recent documents"
+msgstr "Ostatnie dokumenty"
+
+#: apps/web/src/app/(dashboard)/documents/data-table.tsx:69
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:120
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:280
+msgid "Recipient"
+msgstr "Odbiorca"
+
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/recipient-item.tsx:118
+msgid "Recipient updated"
+msgstr "Odbiorca zaktualizowany"
+
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/page.tsx:66
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:49
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recipients.tsx:30
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:139
+msgid "Recipients"
+msgstr "Odbiorcy"
+
+#: apps/web/src/app/(dashboard)/admin/stats/page.tsx:102
+msgid "Recipients metrics"
+msgstr "Metryki odbiorców"
+
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:164
+msgid "Recipients will still retain their copy of the document"
+msgstr "Odbiorcy nadal zachowają swoją kopię dokumentu"
+
+#: apps/web/src/components/forms/2fa/recovery-code-list.tsx:26
+msgid "Recovery code copied"
+msgstr "Kod odzyskiwania skopiowany"
+
+#: apps/web/src/app/(dashboard)/settings/security/page.tsx:84
+msgid "Recovery codes"
+msgstr "Kody odzyskiwania"
+
+#: apps/web/src/app/(signing)/sign/[token]/complete/claim-account.tsx:78
+#: apps/web/src/components/forms/signup.tsx:93
+#: apps/web/src/components/forms/v2/signup.tsx:127
+msgid "Registration Successful"
+msgstr "Rejestracja zakończona sukcesem"
+
+#: apps/web/src/app/(signing)/sign/[token]/reject-document-dialog.tsx:109
+#: apps/web/src/app/(signing)/sign/[token]/reject-document-dialog.tsx:116
+#: apps/web/src/app/(signing)/sign/[token]/reject-document-dialog.tsx:162
+msgid "Reject Document"
+msgstr "Odrzuć dokument"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:141
+#: apps/web/src/components/(dashboard)/avatar/stack-avatars-with-tooltip.tsx:101
+msgid "Rejected"
+msgstr "Odrzucony"
+
+#: apps/web/src/app/(unauthenticated)/forgot-password/page.tsx:34
+msgid "Remembered your password? <0>Sign In0>"
+msgstr "Zapamiętałeś hasło? <0>Zaloguj się0>"
+
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:193
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:431
+#: apps/web/src/app/(signing)/sign/[token]/signing-field-container.tsx:156
+#: apps/web/src/app/(signing)/sign/[token]/signing-field-container.tsx:180
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/branding-preferences.tsx:250
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/team-email-dropdown.tsx:89
+#: apps/web/src/components/(teams)/dialogs/remove-team-email-dialog.tsx:159
+#: apps/web/src/components/(teams)/tables/pending-user-teams-data-table-actions.tsx:54
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:166
+#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:167
+#: apps/web/src/components/forms/avatar-image.tsx:169
+msgid "Remove"
+msgstr "Usuń"
+
+#: apps/web/src/components/(teams)/dialogs/remove-team-email-dialog.tsx:108
+msgid "Remove team email"
+msgstr "Usuń e-mail zespołu"
+
+#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:164
+msgid "Remove team member"
+msgstr "Usuń członka zespołu"
+
+#: apps/web/src/components/forms/password.tsx:139
+#: apps/web/src/components/forms/reset-password.tsx:126
+msgid "Repeat Password"
+msgstr "Powtórz hasło"
+
+#: apps/web/src/components/(teams)/dialogs/transfer-team-dialog.tsx:282
+msgid "Request transfer"
+msgstr "Zleć przeniesienie"
+
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/admin-actions.tsx:61
+msgid "Reseal document"
+msgstr "Zapieczętuj ponownie dokument"
+
+#: apps/web/src/app/(dashboard)/documents/_action-items/resend-document.tsx:118
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:154
+msgid "Resend"
+msgstr "Wyślij ponownie"
+
+#: apps/web/src/components/(dashboard)/layout/verify-email-banner.tsx:128
+msgid "Resend Confirmation Email"
+msgstr "Wyślij ponownie e-mail potwierdzający"
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/team-email-dropdown.tsx:67
+msgid "Resend verification"
+msgstr "Wyślij ponownie weryfikację"
+
+#: apps/web/src/components/(teams)/forms/update-team-form.tsx:266
+#: apps/web/src/components/forms/public-profile-form.tsx:267
+msgid "Reset"
+msgstr "Resetuj"
+
+#: apps/web/src/components/forms/forgot-password.tsx:56
+msgid "Reset email sent"
+msgstr "Wysłano e-mail z resetowaniem"
+
+#: apps/web/src/app/(unauthenticated)/reset-password/[token]/page.tsx:30
+#: apps/web/src/components/forms/forgot-password.tsx:93
+#: apps/web/src/components/forms/reset-password.tsx:138
+msgid "Reset Password"
+msgstr "Zresetuj hasło"
+
+#: apps/web/src/components/forms/reset-password.tsx:138
+msgid "Resetting Password..."
+msgstr "Resetowanie hasła..."
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/layout-billing-banner.tsx:99
+msgid "Resolve"
+msgstr "Rozwiąż"
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/layout-billing-banner.tsx:132
+msgid "Resolve payment"
+msgstr "Rozwiąż płatność"
+
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:126
+msgid "Retention of Documents"
+msgstr "Przechowywanie dokumentów"
+
+#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-passkey.tsx:168
+msgid "Retry"
+msgstr "Spróbuj ponownie"
+
+#: apps/web/src/app/(unauthenticated)/team/decline/[token]/page.tsx:48
+#: apps/web/src/app/(unauthenticated)/team/invite/[token]/page.tsx:50
+#: apps/web/src/app/(unauthenticated)/team/verify/email/[token]/page.tsx:45
+#: apps/web/src/app/(unauthenticated)/team/verify/transfer/[token]/page.tsx:48
+msgid "Return"
+msgstr "Zwróć"
+
+#: apps/web/src/app/(unauthenticated)/team/decline/[token]/page.tsx:130
+msgid "Return to Dashboard"
+msgstr "Powrót do pulpitu"
+
+#: apps/web/src/app/(unauthenticated)/team/decline/[token]/page.tsx:136
+msgid "Return to Home"
+msgstr "Powrót do strony głównej"
+
+#: apps/web/src/app/(unauthenticated)/check-email/page.tsx:32
+#: apps/web/src/app/(unauthenticated)/reset-password/page.tsx:32
+msgid "Return to sign in"
+msgstr "Powrót do logowania"
+
+#: apps/web/src/app/(dashboard)/settings/teams/team-email-usage.tsx:118
+msgid "Revoke"
+msgstr "Cofnij"
+
+#: apps/web/src/app/(dashboard)/settings/teams/team-email-usage.tsx:87
+msgid "Revoke access"
+msgstr "Cofnij dostęp"
+
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:283
+#: apps/web/src/components/(teams)/dialogs/invite-team-member-dialog.tsx:318
+#: apps/web/src/components/(teams)/dialogs/update-team-member-dialog.tsx:163
+#: apps/web/src/components/(teams)/tables/current-user-teams-data-table.tsx:82
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:123
+#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:105
+msgid "Role"
+msgstr "Rola"
+
+#: apps/web/src/app/(dashboard)/admin/users/[id]/page.tsx:131
+#: apps/web/src/app/(dashboard)/admin/users/data-table-users.tsx:76
+msgid "Roles"
+msgstr "Role"
+
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:446
+#: apps/web/src/app/(signing)/sign/[token]/number-field.tsx:337
+#: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:344
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/branding-preferences.tsx:312
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:232
+msgid "Save"
+msgstr "Zapisz"
+
+#: apps/web/src/app/(dashboard)/documents/data-table-sender-filter.tsx:63
+#: apps/web/src/components/(dashboard)/layout/desktop-nav.tsx:81
+#: apps/web/src/components/(teams)/tables/teams-member-page-data-table.tsx:69
+#: apps/web/src/components/(teams)/tables/user-settings-teams-page-data-table.tsx:64
+msgid "Search"
+msgstr "Szukaj"
+
+#: apps/web/src/app/(dashboard)/admin/documents/document-results.tsx:140
+msgid "Search by document title"
+msgstr "Szukaj według tytułu dokumentu"
+
+#: apps/web/src/app/(dashboard)/admin/users/data-table-users.tsx:144
+msgid "Search by name or email"
+msgstr "Szukaj według nazwy lub adresu e-mail"
+
+#: apps/web/src/components/(dashboard)/document-search/document-search.tsx:42
+msgid "Search documents..."
+msgstr "Wyszukaj dokumenty..."
+
+#: apps/web/src/app/(dashboard)/settings/webhooks/[id]/page.tsx:189
+#: apps/web/src/components/(dashboard)/settings/webhooks/create-webhook-dialog.tsx:217
+msgid "Secret"
+msgstr "Sekret"
+
+#: apps/web/src/app/(dashboard)/settings/security/page.tsx:34
+#: apps/web/src/components/(dashboard)/settings/layout/desktop-nav.tsx:77
+#: apps/web/src/components/(dashboard)/settings/layout/mobile-nav.tsx:80
+msgid "Security"
+msgstr "Bezpieczeństwo"
+
+#: apps/web/src/app/(dashboard)/settings/security/activity/page.tsx:25
+msgid "Security activity"
+msgstr "Aktywność bezpieczeństwa"
+
+#: apps/web/src/app/(signing)/sign/[token]/dropdown-field.tsx:194
+msgid "Select"
+msgstr "Wybierz"
+
+#: apps/web/src/app/(dashboard)/documents/move-document-dialog.tsx:87
+#: apps/web/src/app/(dashboard)/templates/move-template-dialog.tsx:86
+msgid "Select a team"
+msgstr "Wybierz drużynę"
+
+#: apps/web/src/app/(dashboard)/documents/move-document-dialog.tsx:81
+msgid "Select a team to move this document to. This action cannot be undone."
+msgstr "Wybierz drużynę, do której chcesz przenieść ten dokument. Ta akcja nie może być cofnięta."
+
+#: apps/web/src/app/(dashboard)/templates/move-template-dialog.tsx:80
+msgid "Select a team to move this template to. This action cannot be undone."
+msgstr "Wybierz drużynę, do której chcesz przenieść ten szablon. Ta akcja nie może być cofnięta."
+
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:261
+msgid "Select a template you'd like to display on your public profile"
+msgstr "Wybierz szablon, który chcesz wyświetlić na swoim publicznym profilu"
+
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:257
+msgid "Select a template you'd like to display on your team's public profile"
+msgstr "Wybierz szablon, który chcesz wyświetlić na publicznym profilu swojego zespołu"
+
+#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-passkey.tsx:222
+msgid "Select passkey"
+msgstr "Wybierz klucz uwierzytelniający"
+
+#: apps/web/src/components/forms/send-confirmation-email.tsx:94
+msgid "Send confirmation email"
+msgstr "Wyślij e-mail potwierdzający"
+
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:326
+msgid "Send document"
+msgstr "Wyślij dokument"
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:188
+#: apps/web/src/components/(teams)/forms/update-team-form.tsx:220
+msgid "Send on Behalf of Team"
+msgstr "Wyślij w imieniu zespołu"
+
+#: apps/web/src/app/(dashboard)/documents/_action-items/resend-document.tsx:191
+msgid "Send reminder"
+msgstr "Wyślij przypomnienie"
+
+#: apps/web/src/app/(dashboard)/documents/data-table.tsx:65
+msgid "Sender"
+msgstr "Nadawca"
+
+#: apps/web/src/components/forms/forgot-password.tsx:93
+msgid "Sending Reset Email..."
+msgstr "Wysyłanie e-maila resetującego..."
+
+#: apps/web/src/components/(dashboard)/layout/verify-email-banner.tsx:128
+msgid "Sending..."
+msgstr "Wysyłanie..."
+
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:101
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:248
+msgid "Sent"
+msgstr "Wysłano"
+
+#: apps/web/src/app/(signing)/sign/[token]/complete/claim-account.tsx:149
+msgid "Set a password"
+msgstr "Ustaw hasło"
+
+#: apps/web/src/app/(dashboard)/settings/layout.tsx:20
+#: apps/web/src/components/(dashboard)/common/command-menu.tsx:65
+#: apps/web/src/components/(dashboard)/common/command-menu.tsx:211
+#: apps/web/src/components/(dashboard)/layout/mobile-navigation.tsx:47
+msgid "Settings"
+msgstr "Ustawienia"
+
+#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-passkey.tsx:196
+msgid "Setup"
+msgstr "Konfiguracja"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:148
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:193
+msgid "Share"
+msgstr "Udostępnij"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:179
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:219
+msgid "Share Signing Card"
+msgstr "Udostępnij kartę podpisu"
+
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:163
+msgid "Show"
+msgstr "Pokaż"
+
+#: apps/web/src/components/document/document-history-sheet.tsx:113
+msgid "Show additional information"
+msgstr "Pokaż dodatkowe informacje"
+
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:45
+msgid "Show templates in your public profile for your audience to sign and get started quickly"
+msgstr "Pokaż szablony w swoim profilu publicznym dla swojej publiczności, aby szybko podpisać i rozpocząć"
+
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:52
+msgid "Show templates in your team public profile for your audience to sign and get started quickly"
+msgstr "Pokaż szablony w profilu publicznym zespołu dla swojej publiczności, aby szybko podpisać i rozpocząć"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-button.tsx:83
+#: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:114
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:139
+#: apps/web/src/app/(profile)/p/[url]/page.tsx:192
+#: apps/web/src/app/(signing)/sign/[token]/auto-sign.tsx:229
+#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-2fa.tsx:182
+#: apps/web/src/app/(signing)/sign/[token]/name-field.tsx:224
+#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:124
+#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:256
+#: apps/web/src/components/ui/user-profile-skeleton.tsx:75
+#: apps/web/src/components/ui/user-profile-timur.tsx:81
+msgid "Sign"
+msgstr "Podpisz"
+
+#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:217
+msgid "Sign as {0} <0>({1})0>"
+msgstr "Podpisz jako {0} <0>({1})0>"
+
+#: apps/web/src/app/(signing)/sign/[token]/name-field.tsx:183
+msgid "Sign as<0>{0} <1>({1})1>0>"
+msgstr "Podpisz jako<0>{0} <1>({1})1>0>"
+
+#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:330
+#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:210
+msgid "Sign document"
+msgstr "Podpisz dokument"
+
+#: apps/web/src/app/(signing)/sign/[token]/form.tsx:128
+msgid "Sign Document"
+msgstr "Podpisz dokument"
+
+#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-dialog.tsx:59
+msgid "Sign field"
+msgstr "Pole podpisu"
+
+#: apps/web/src/components/forms/signup.tsx:212
+#: apps/web/src/components/forms/v2/signup.tsx:362
+msgid "Sign Here"
+msgstr "Podpisz tutaj"
+
+#: apps/web/src/app/not-found.tsx:29
+#: apps/web/src/components/forms/signin.tsx:383
+#: apps/web/src/components/forms/signin.tsx:510
+msgid "Sign In"
+msgstr "Zaloguj się"
+
+#: apps/web/src/app/(unauthenticated)/signin/page.tsx:29
+msgid "Sign in to your account"
+msgstr "Zaloguj się na swoje konto"
+
+#: apps/web/src/components/(dashboard)/layout/menu-switcher.tsx:297
+#: apps/web/src/components/(dashboard)/layout/mobile-navigation.tsx:84
+msgid "Sign Out"
+msgstr "Wyloguj się"
+
+#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:351
+#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:231
+msgid "Sign the document to complete the process."
+msgstr "Podpisz dokument, aby zakończyć proces."
+
+#: apps/web/src/app/(signing)/sign/[token]/signing-auth-page.tsx:67
+msgid "Sign up"
+msgstr "Zarejestruj się"
+
+#: apps/web/src/components/forms/signup.tsx:235
+msgid "Sign Up"
+msgstr "Zarejestruj się"
+
+#: apps/web/src/components/forms/signup.tsx:257
+#: apps/web/src/components/forms/v2/signup.tsx:401
+msgid "Sign Up with Google"
+msgstr "Zarejestruj się za pomocą Google"
+
+#: apps/web/src/components/forms/signup.tsx:281
+#: apps/web/src/components/forms/v2/signup.tsx:417
+msgid "Sign Up with OIDC"
+msgstr "Zarejestruj się za pomocą OIDC"
+
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/recipient-item.tsx:88
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:177
+#: apps/web/src/app/(recipient)/d/[token]/sign-direct-template.tsx:338
+#: apps/web/src/app/(signing)/sign/[token]/form.tsx:192
+#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:195
+#: apps/web/src/app/(signing)/sign/[token]/signature-field.tsx:225
+#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:392
+#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:271
+#: apps/web/src/components/forms/profile.tsx:132
+msgid "Signature"
+msgstr "Podpis"
+
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:220
+msgid "Signature ID"
+msgstr "ID sygnatury"
+
+#: apps/web/src/app/(dashboard)/admin/stats/page.tsx:123
+msgid "Signatures Collected"
+msgstr "Zebrane podpisy"
+
+#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:200
+msgid "Signatures will appear once the document has been completed"
+msgstr "Podpisy pojawią się po ukończeniu dokumentu"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:114
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:270
+#: apps/web/src/components/document/document-read-only-fields.tsx:84
+msgid "Signed"
+msgstr "Podpisany"
+
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:176
+msgid "Signer Events"
+msgstr "Wydarzenia sygnatariusza"
+
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:168
+msgid "Signing Certificate"
+msgstr "Certyfikat podpisania"
+
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:303
+msgid "Signing certificate provided by"
+msgstr "Certyfikat podpisania dostarczony przez"
+
+#: apps/web/src/components/forms/signin.tsx:383
+#: apps/web/src/components/forms/signin.tsx:510
+msgid "Signing in..."
+msgstr "Logowanie..."
+
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:160
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:203
+msgid "Signing Links"
+msgstr "Linki do podpisania"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:339
+msgid "Signing links have been generated for this document."
+msgstr "Linki do podpisania zostały wygenerowane dla tego dokumentu."
+
+#: apps/web/src/components/forms/signup.tsx:235
+msgid "Signing up..."
+msgstr "Rejestracja..."
+
+#: apps/web/src/app/(profile)/p/[url]/page.tsx:109
+msgid "Since {0}"
+msgstr "Od {0}"
+
+#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:102
+msgid "Site Banner"
+msgstr "Baner strony"
+
+#: apps/web/src/app/(dashboard)/admin/nav.tsx:93
+#: apps/web/src/app/(dashboard)/admin/site-settings/page.tsx:26
+msgid "Site Settings"
+msgstr "Ustawienia strony"
+
+#: apps/web/src/app/(dashboard)/documents/_action-items/resend-document.tsx:105
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-button.tsx:63
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-dropdown.tsx:91
+#: apps/web/src/app/(dashboard)/documents/[id]/logs/download-audit-log-button.tsx:65
+#: apps/web/src/app/(dashboard)/documents/[id]/logs/download-certificate-button.tsx:68
+#: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:75
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:106
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:80
+#: apps/web/src/app/(dashboard)/documents/duplicate-document-dialog.tsx:72
+#: apps/web/src/app/(dashboard)/settings/billing/billing-plans.tsx:62
+#: apps/web/src/app/(dashboard)/settings/billing/billing-portal-button.tsx:51
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:124
+#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:73
+#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:93
+#: apps/web/src/app/(dashboard)/settings/teams/accept-team-invitation-button.tsx:32
+#: apps/web/src/app/(dashboard)/settings/teams/decline-team-invitation-button.tsx:32
+#: apps/web/src/app/(dashboard)/settings/teams/team-email-usage.tsx:44
+#: apps/web/src/app/(dashboard)/templates/delete-template-dialog.tsx:50
+#: apps/web/src/app/(dashboard)/templates/new-template-dialog.tsx:79
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:104
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:127
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:151
+#: apps/web/src/app/(recipient)/d/[token]/direct-template.tsx:118
+#: apps/web/src/app/(recipient)/d/[token]/signing-auth-page.tsx:27
+#: apps/web/src/app/(signing)/sign/[token]/signing-auth-page.tsx:38
+#: apps/web/src/app/(teams)/t/[teamUrl]/layout-billing-banner.tsx:53
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/branding-preferences.tsx:107
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/team-email-dropdown.tsx:39
+#: apps/web/src/app/(unauthenticated)/verify-email/[token]/page.tsx:61
+#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:243
+#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:125
+#: apps/web/src/components/(teams)/dialogs/create-team-checkout-dialog.tsx:50
+#: apps/web/src/components/(teams)/dialogs/create-team-checkout-dialog.tsx:99
+#: apps/web/src/components/(teams)/dialogs/invite-team-member-dialog.tsx:210
+#: apps/web/src/components/(teams)/dialogs/remove-team-email-dialog.tsx:64
+#: apps/web/src/components/(teams)/dialogs/remove-team-email-dialog.tsx:83
+#: apps/web/src/components/(teams)/tables/pending-user-teams-data-table-actions.tsx:33
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:68
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:85
+#: apps/web/src/components/(teams)/team-billing-portal-button.tsx:29
+msgid "Something went wrong"
+msgstr "Coś poszło nie tak"
+
+#: apps/web/src/app/(unauthenticated)/team/verify/transfer/[token]/page.tsx:98
+msgid "Something went wrong while attempting to transfer the ownership of team <0>{0}0> to your. Please try again later or contact support."
+msgstr "Coś poszło nie tak podczas próby przeniesienia własności zespołu <0>{0}0> do Ciebie. Proszę spróbować ponownie później lub skontaktować się z pomocą techniczną."
+
+#: apps/web/src/app/(unauthenticated)/team/verify/email/[token]/page.tsx:120
+msgid "Something went wrong while attempting to verify your email address for <0>{0}0>. Please try again later."
+msgstr "Coś poszło nie tak podczas próby weryfikacji adresu e-mail dla <0>{0}0>. Proszę spróbować ponownie później."
+
+#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-passkey.tsx:158
+msgid "Something went wrong while loading your passkeys."
+msgstr "Coś poszło nie tak podczas ładowania Twoich kluczy uwierzytelniających."
+
+#: apps/web/src/components/(dashboard)/layout/verify-email-banner.tsx:55
+msgid "Something went wrong while sending the confirmation email."
+msgstr "Coś poszło nie tak podczas wysyłania e-maila potwierdzającego."
+
+#: apps/web/src/components/(teams)/dialogs/delete-team-dialog.tsx:96
+msgid "Something went wrong while updating the team billing subscription, please contact support."
+msgstr "Coś poszło nie tak podczas aktualizacji subskrypcji płatniczej zespołu, prosimy o kontakt z pomocą techniczną."
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:96
+msgid "Something went wrong!"
+msgstr "Coś poszło nie tak!"
+
+#: apps/web/src/app/(dashboard)/settings/security/passkeys/create-passkey-dialog.tsx:240
+#: apps/web/src/components/forms/2fa/view-recovery-codes-dialog.tsx:154
+msgid "Something went wrong. Please try again or contact support."
+msgstr "Coś poszło nie tak. Proszę spróbować ponownie lub skontaktować się z pomocą techniczną."
+
+#: apps/web/src/app/(dashboard)/documents/[id]/logs/download-audit-log-button.tsx:67
+msgid "Sorry, we were unable to download the audit logs. Please try again later."
+msgstr "Przepraszamy, nie mogliśmy pobrać dzienników audytowych. Proszę spróbować ponownie później."
+
+#: apps/web/src/app/(dashboard)/documents/[id]/logs/download-certificate-button.tsx:70
+msgid "Sorry, we were unable to download the certificate. Please try again later."
+msgstr "Przepraszamy, nie mogliśmy pobrać certyfikatu. Proszę spróbować ponownie później."
+
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:138
+msgid "Source"
+msgstr "Źródło"
+
+#: apps/web/src/app/(dashboard)/admin/nav.tsx:37
+msgid "Stats"
+msgstr "Statystyki"
+
+#: apps/web/src/app/(dashboard)/admin/documents/document-results.tsx:81
+#: apps/web/src/app/(dashboard)/admin/subscriptions/page.tsx:32
+#: apps/web/src/app/(dashboard)/documents/data-table.tsx:79
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:130
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:93
+#: apps/web/src/components/(teams)/tables/team-billing-invoices-data-table.tsx:73
+msgid "Status"
+msgstr "Status"
+
+#: apps/web/src/app/(dashboard)/settings/billing/billing-plans.tsx:129
+msgid "Subscribe"
+msgstr "Subskrybuj"
+
+#: apps/web/src/app/(dashboard)/admin/users/data-table-users.tsx:81
+msgid "Subscription"
+msgstr "Subskrypcja"
+
+#: apps/web/src/app/(dashboard)/admin/nav.tsx:79
+msgid "Subscriptions"
+msgstr "Subskrypcje"
+
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/admin-actions.tsx:35
+#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:67
+#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:87
+#: apps/web/src/app/(dashboard)/settings/teams/accept-team-invitation-button.tsx:25
+#: apps/web/src/app/(dashboard)/settings/teams/decline-team-invitation-button.tsx:25
+#: apps/web/src/app/(dashboard)/settings/teams/team-email-usage.tsx:37
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:118
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:141
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/team-email-dropdown.tsx:32
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/team-transfer-status.tsx:44
+#: apps/web/src/components/(dashboard)/layout/verify-email-banner.tsx:44
+#: apps/web/src/components/(teams)/dialogs/add-team-email-dialog.tsx:79
+#: apps/web/src/components/(teams)/dialogs/create-team-dialog.tsx:88
+#: apps/web/src/components/(teams)/dialogs/delete-team-dialog.tsx:72
+#: apps/web/src/components/(teams)/dialogs/delete-team-member-dialog.tsx:49
+#: apps/web/src/components/(teams)/dialogs/invite-team-member-dialog.tsx:150
+#: apps/web/src/components/(teams)/dialogs/leave-team-dialog.tsx:49
+#: apps/web/src/components/(teams)/dialogs/remove-team-email-dialog.tsx:57
+#: apps/web/src/components/(teams)/dialogs/remove-team-email-dialog.tsx:76
+#: apps/web/src/components/(teams)/dialogs/transfer-team-dialog.tsx:108
+#: apps/web/src/components/(teams)/dialogs/update-team-email-dialog.tsx:79
+#: apps/web/src/components/(teams)/dialogs/update-team-member-dialog.tsx:92
+#: apps/web/src/components/(teams)/forms/update-team-form.tsx:106
+#: apps/web/src/components/(teams)/tables/pending-user-teams-data-table-actions.tsx:27
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:62
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:79
+#: apps/web/src/components/forms/public-profile-form.tsx:80
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:133
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:170
+msgid "Success"
+msgstr "Sukces"
+
+#: apps/web/src/app/(dashboard)/settings/security/passkeys/create-passkey-dialog.tsx:87
+msgid "Successfully created passkey"
+msgstr "Pomyślnie utworzono klucz uwierzytelniający"
+
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:57
+msgid "System Requirements"
+msgstr "Wymagania systemowe"
+
+#: apps/web/src/components/(dashboard)/common/command-menu.tsx:266
+msgid "System Theme"
+msgstr "Motyw systemowy"
+
+#: apps/web/src/components/(teams)/tables/current-user-teams-data-table.tsx:65
+#: apps/web/src/components/(teams)/tables/pending-user-teams-data-table.tsx:64
+msgid "Team"
+msgstr "Zespół"
+
+#: apps/web/src/components/(teams)/dialogs/create-team-checkout-dialog.tsx:85
+msgid "Team checkout"
+msgstr "Zakupy zespołowe"
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:67
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:146
+msgid "Team email"
+msgstr "E-mail zespołu"
+
+#: apps/web/src/app/(dashboard)/settings/teams/team-email-usage.tsx:58
+msgid "Team Email"
+msgstr "E-mail zespołu"
+
+#: apps/web/src/app/(unauthenticated)/team/verify/email/[token]/page.tsx:57
+msgid "Team email already verified!"
+msgstr "E-mail zespołu został już zweryfikowany!"
+
+#: apps/web/src/components/(teams)/dialogs/remove-team-email-dialog.tsx:58
+msgid "Team email has been removed"
+msgstr "E-mail zespołu został usunięty"
+
+#: apps/web/src/app/(unauthenticated)/team/verify/email/[token]/page.tsx:116
+msgid "Team email verification"
+msgstr "Weryfikacja e-maila zespołu"
+
+#: apps/web/src/app/(unauthenticated)/team/verify/email/[token]/page.tsx:132
+msgid "Team email verified!"
+msgstr "E-mail zespołu zweryfikowany!"
+
+#: apps/web/src/components/(teams)/dialogs/update-team-email-dialog.tsx:80
+msgid "Team email was updated."
+msgstr "E-mail zespołu został zaktualizowany."
+
+#: apps/web/src/app/(unauthenticated)/team/decline/[token]/page.tsx:91
+#: apps/web/src/app/(unauthenticated)/team/invite/[token]/page.tsx:96
+msgid "Team invitation"
+msgstr "Zaproszenie do zespołu"
+
+#: apps/web/src/components/(teams)/dialogs/invite-team-member-dialog.tsx:151
+msgid "Team invitations have been sent."
+msgstr "Zaproszenia do zespołu zostały wysłane."
+
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:109
+#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:86
+msgid "Team Member"
+msgstr "Członek zespołu"
+
+#: apps/web/src/components/(teams)/dialogs/create-team-dialog.tsx:166
+#: apps/web/src/components/(teams)/forms/update-team-form.tsx:153
+msgid "Team Name"
+msgstr "Nazwa zespołu"
+
+#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:105
+msgid "Team Only"
+msgstr "Tylko dla zespołu"
+
+#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:110
+msgid "Team only templates are not linked anywhere and are visible only to your team."
+msgstr "Szablony tylko dla zespołu nie są nigdzie linkowane i są widoczne tylko dla Twojego zespołu."
+
+#: apps/web/src/app/(unauthenticated)/team/verify/transfer/[token]/page.tsx:94
+msgid "Team ownership transfer"
+msgstr "Przeniesienie własności zespołu"
+
+#: apps/web/src/app/(unauthenticated)/team/verify/transfer/[token]/page.tsx:60
+msgid "Team ownership transfer already completed!"
+msgstr "Transfer własności zespołu został już zakończony!"
+
+#: apps/web/src/app/(unauthenticated)/team/verify/transfer/[token]/page.tsx:110
+msgid "Team ownership transferred!"
+msgstr "Własność zespołu przeniesiona!"
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/page.tsx:33
+msgid "Team Preferences"
+msgstr "Preferencje zespołu"
+
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:49
+msgid "Team Public Profile"
+msgstr "Publiczny profil zespołu"
+
+#: apps/web/src/components/(dashboard)/layout/menu-switcher.tsx:277
+msgid "Team settings"
+msgstr "Ustawienia zespołu"
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/layout.tsx:50
+msgid "Team Settings"
+msgstr "Ustawienia zespołu"
+
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:51
+msgid "Team templates"
+msgstr "Szablony zespołu"
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/team-transfer-status.tsx:79
+msgid "Team transfer in progress"
+msgstr "Przeniesienie zespołu w toku"
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/team-transfer-status.tsx:77
+msgid "Team transfer request expired"
+msgstr "Żądanie przeniesienia zespołu wygasło"
+
+#: apps/web/src/components/(teams)/dialogs/create-team-dialog.tsx:196
+#: apps/web/src/components/(teams)/forms/update-team-form.tsx:169
+msgid "Team URL"
+msgstr "Adres URL zespołu"
+
+#: apps/web/src/app/(dashboard)/settings/teams/page.tsx:25
+#: apps/web/src/components/(dashboard)/layout/menu-switcher.tsx:162
+#: apps/web/src/components/(dashboard)/layout/mobile-navigation.tsx:43
+#: apps/web/src/components/(dashboard)/settings/layout/desktop-nav.tsx:64
+#: apps/web/src/components/(dashboard)/settings/layout/mobile-nav.tsx:67
+msgid "Teams"
+msgstr "Zespoły"
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/layout-billing-banner.tsx:83
+msgid "Teams restricted"
+msgstr "Zespoły ograniczone"
+
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/template-edit-page-view.tsx:63
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:39
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:148
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:228
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view.tsx:146
+#: apps/web/src/components/(teams)/dialogs/invite-team-member-dialog.tsx:408
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:271
+msgid "Template"
+msgstr "Szablon"
+
+#: apps/web/src/app/(dashboard)/templates/delete-template-dialog.tsx:41
+msgid "Template deleted"
+msgstr "Szablon usunięty"
+
+#: apps/web/src/app/(dashboard)/templates/new-template-dialog.tsx:67
+msgid "Template document uploaded"
+msgstr "Dokument szablonu przesłany"
+
+#: apps/web/src/app/(dashboard)/templates/duplicate-template-dialog.tsx:42
+msgid "Template duplicated"
+msgstr "Szablon skopiowany"
+
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:134
+msgid "Template has been removed from your public profile."
+msgstr "Szablon został usunięty z Twojego profilu publicznego."
+
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:171
+msgid "Template has been updated."
+msgstr "Szablon został zaktualizowany."
+
+#: apps/web/src/app/(dashboard)/templates/move-template-dialog.tsx:48
+msgid "Template moved"
+msgstr "Szablon przeniesiony"
+
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:223
+msgid "Template saved"
+msgstr "Szablon zapisany"
+
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view.tsx:87
+#: apps/web/src/app/(dashboard)/templates/templates-page-view.tsx:55
+#: apps/web/src/components/(dashboard)/common/command-menu.tsx:208
+#: apps/web/src/components/(dashboard)/layout/desktop-nav.tsx:22
+#: apps/web/src/components/(dashboard)/layout/mobile-navigation.tsx:39
+msgid "Templates"
+msgstr "Szablony"
+
+#: apps/web/src/app/(dashboard)/templates/new-template-dialog.tsx:106
+msgid "Templates allow you to quickly generate documents with pre-filled recipients and fields."
+msgstr "Szablony pozwalają na szybkie generowanie dokumentów z wypełnionymi odbiorcami i polami."
+
+#: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:257
+#: apps/web/src/app/(signing)/sign/[token]/text-field.tsx:274
+msgid "Text"
+msgstr "Tekst"
+
+#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:166
+msgid "Text Color"
+msgstr "Kolor tekstu"
+
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:24
+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."
+msgstr "Dziękujemy za korzystanie z Documenso do wykonywania podpisu elektronicznego dokumentu. Celem tego ujawnienia jest poinformowanie Cię o procesie, legalności oraz Twoich prawach dotyczących korzystania z podpisów elektronicznych na naszej platformie. Decydując się na korzystanie z podpisu elektronicznego, zgadzasz się na warunki opisane poniżej."
+
+#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:52
+msgid "The account has been deleted successfully."
+msgstr "Konto zostało pomyślnie usunięte."
+
+#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:197
+msgid "The content to show in the banner, HTML is allowed"
+msgstr "Treść do wyświetlenia w banerze, dozwolone HTML"
+
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:78
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-badge.tsx:32
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:164
+msgid "The direct link has been copied to your clipboard"
+msgstr "Bezpośredni link został skopiowany do schowka"
+
+#: apps/web/src/app/(dashboard)/documents/move-document-dialog.tsx:50
+msgid "The document has been successfully moved to the selected team."
+msgstr "Dokument został pomyślnie przeniesiony do wybranego zespołu."
+
+#: apps/web/src/app/embed/completed.tsx:29
+msgid "The document is now completed, please follow any instructions provided within the parent application."
+msgstr "Dokument jest teraz zakończony, proszę postępować zgodnie z wszelkimi instrukcjami podanymi w aplikacji nadrzędnej."
+
+#: apps/web/src/app/(signing)/sign/[token]/rejected/page.tsx:92
+msgid "The document owner has been notified of your decision. They may contact you with further instructions if necessary."
+msgstr "Właściciel dokumentu został poinformowany o Twojej decyzji. Mogą się z Tobą skontaktować w celu podania dalszych instrukcji, jeśli to konieczne."
+
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:182
+msgid "The document was created but could not be sent to recipients."
+msgstr "Dokument został utworzony, ale nie mógł zostać wysłany do odbiorców."
+
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:161
+msgid "The document will be hidden from your account"
+msgstr "Dokument zostanie ukryty w Twoim koncie"
+
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:334
+msgid "The document will be immediately sent to recipients if this is checked."
+msgstr "Dokument zostanie natychmiast wysłany do odbiorców, jeśli to zostanie zaznaczone."
+
+#: apps/web/src/app/(dashboard)/settings/webhooks/[id]/page.tsx:175
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/[id]/page.tsx:179
+#: apps/web/src/components/(dashboard)/settings/webhooks/create-webhook-dialog.tsx:203
+msgid "The events that will trigger a webhook to be sent to your URL."
+msgstr "Wydarzenia, które wyzwolą webhook do wysłania do Twojego URL."
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/documents/page.tsx:27
+#~ msgid "The global settings for the documents in your team account."
+#~ msgstr "The global settings for the documents in your team account."
+
+#: apps/web/src/app/(unauthenticated)/team/verify/transfer/[token]/page.tsx:114
+msgid "The ownership of team <0>{0}0> has been successfully transferred to you."
+msgstr "Własność zespołu <0>{0}0> została pomyślnie przeniesiona na Ciebie."
+
+#: apps/web/src/components/partials/not-found.tsx:53
+msgid "The page you are looking for was moved, removed, renamed or might never have existed."
+msgstr "Strona, której szukasz, została przeniesiona, usunięta, zmieniona lub mogła nigdy nie istnieć."
+
+#: apps/web/src/components/forms/public-profile-form.tsx:118
+msgid "The profile link has been copied to your clipboard"
+msgstr "Link do profilu został skopiowany do schowka"
+
+#: apps/web/src/app/(profile)/p/[url]/not-found.tsx:23
+msgid "The profile you are looking for could not be found."
+msgstr "Profil, którego szukasz, nie mógł zostać znaleziony."
+
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:380
+msgid "The public description that will be displayed with this template"
+msgstr "Publiczny opis, który zostanie wyświetlony z tym szablonem"
+
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:358
+msgid "The public name for your template"
+msgstr "Publiczna nazwa Twojego szablonu"
+
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/recipient-item.tsx:119
+msgid "The recipient has been updated successfully"
+msgstr "Odbiorca został pomyślnie zaktualizowany"
+
+#: apps/web/src/components/(teams)/dialogs/transfer-team-dialog.tsx:267
+msgid "The selected team member will receive an email which they must accept before the team is transferred"
+msgstr "Wybrany członek zespołu otrzyma e-mail, który musi zaakceptować przed przeniesieniem zespołu"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:163
+#: apps/web/src/components/(dashboard)/avatar/avatar-with-recipient.tsx:41
+#: apps/web/src/components/document/document-recipient-link-copy-dialog.tsx:118
+msgid "The signing link has been copied to your clipboard."
+msgstr "Link do podpisu został skopiowany do schowka."
+
+#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:105
+msgid "The site banner is a message that is shown at the top of the site. It can be used to display important information to your users."
+msgstr "Baner strony to wiadomość, która jest wyświetlana u góry strony. Może być używany do wyświetlania ważnych informacji użytkownikom."
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/team-transfer-status.tsx:45
+msgid "The team transfer invitation has been successfully deleted."
+msgstr "Zaproszenie do przeniesienia zespołu zostało pomyślnie usunięte."
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/team-transfer-status.tsx:86
+msgid "The team transfer request to <0>{0}0> has expired."
+msgstr "Prośba o przeniesienie zespołu do <0>{0}0> wygasła."
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/not-found.tsx:23
+msgid "The team you are looking for may have been removed, renamed or may have never existed."
+msgstr "Zespół, którego szukasz, mógł zostać usunięty, zmieniony lub mogł nie istnieć."
+
+#: apps/web/src/app/(dashboard)/templates/move-template-dialog.tsx:49
+msgid "The template has been successfully moved to the selected team."
+msgstr "Szablon został pomyślnie przeniesiony do wybranego zespołu."
+
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:443
+msgid "The template will be removed from your profile"
+msgstr "Szablon zostanie usunięty z Twojego profilu"
+
+#: apps/web/src/app/(recipient)/d/[token]/not-found.tsx:23
+msgid "The template you are looking for may have been disabled, deleted or may have never existed."
+msgstr "Szablon, którego szukasz, mógł zostać wyłączony, usunięty lub mógł nigdy nie istnieć."
+
+#: apps/web/src/components/forms/token.tsx:106
+msgid "The token was copied to your clipboard."
+msgstr "Token został skopiowany do schowka."
+
+#: apps/web/src/components/(dashboard)/settings/token/delete-token-dialog.tsx:88
+msgid "The token was deleted successfully."
+msgstr "Token został pomyślnie usunięty."
+
+#: apps/web/src/app/(unauthenticated)/reset-password/page.tsx:24
+msgid "The token you have used to reset your password is either expired or it never existed. If you have still forgotten your password, please request a new reset link."
+msgstr "Token, którego użyłeś do zresetowania hasła, jest albo wygasły, albo nigdy nie istniał. Jeśli nadal zapomniałeś hasła, poproś o nowy link resetujący."
+
+#: apps/web/src/app/(dashboard)/settings/webhooks/[id]/page.tsx:124
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/[id]/page.tsx:128
+#: apps/web/src/components/(dashboard)/settings/webhooks/create-webhook-dialog.tsx:152
+msgid "The URL for Documenso to send webhook events to."
+msgstr "URL dla Documenso do wysyłania zdarzeń webhook."
+
+#: apps/web/src/components/(dashboard)/settings/webhooks/delete-webhook-dialog.tsx:79
+msgid "The webhook has been successfully deleted."
+msgstr "Webhook został pomyślnie usunięty."
+
+#: apps/web/src/app/(dashboard)/settings/webhooks/[id]/page.tsx:75
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/[id]/page.tsx:81
+msgid "The webhook has been updated successfully."
+msgstr "Webhook został pomyślnie zaktualizowany."
+
+#: apps/web/src/components/(dashboard)/settings/webhooks/create-webhook-dialog.tsx:93
+msgid "The webhook was successfully created."
+msgstr "Webhook został pomyślnie utworzony."
+
+#: apps/web/src/app/(dashboard)/documents/empty-state.tsx:25
+msgid "There are no active drafts at the current moment. You can upload a document to start drafting."
+msgstr "Nie ma aktywnych szkiców w tej chwili. Możesz przesłać dokument, aby rozpocząć szkicowanie."
+
+#: apps/web/src/app/(dashboard)/documents/empty-state.tsx:20
+msgid "There are no completed documents yet. Documents that you have created or received will appear here once completed."
+msgstr "Nie ma jeszcze ukończonych dokumentów. Dokumenty, które stworzyłeś lub otrzymałeś, pojawią się tutaj, gdy będą ukończone."
+
+#: apps/web/src/app/(dashboard)/settings/teams/team-email-usage.tsx:70
+msgid "They have permission on your behalf to:"
+msgstr "Mają pozwolenie w Twoim imieniu na:"
+
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx:110
+#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:110
+#: apps/web/src/app/(dashboard)/settings/profile/delete-account-dialog.tsx:109
+msgid "This action is not reversible. Please be certain."
+msgstr "Ta akcja nie jest odwracalna. Proszę być pewnym."
+
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:81
+msgid "This document could not be deleted at this time. Please try again."
+msgstr "Nie można usunąć tego dokumentu w tej chwili. Proszę spróbować ponownie."
+
+#: apps/web/src/app/(dashboard)/documents/duplicate-document-dialog.tsx:73
+msgid "This document could not be duplicated at this time. Please try again."
+msgstr "Nie można skopiować tego dokumentu w tej chwili. Proszę spróbować ponownie."
+
+#: apps/web/src/app/(dashboard)/documents/_action-items/resend-document.tsx:106
+msgid "This document could not be re-sent at this time. Please try again."
+msgstr "Nie można ponownie wysłać tego dokumentu w tej chwili. Proszę spróbować ponownie."
+
+#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:180
+msgid "This document has been cancelled by the owner and is no longer available for others to sign."
+msgstr "Ten dokument został anulowany przez właściciela i nie jest już dostępny do podpisania przez innych."
+
+#: apps/web/src/app/(signing)/sign/[token]/no-longer-available.tsx:52
+msgid "This document has been cancelled by the owner."
+msgstr "Ten dokument został anulowany przez właściciela."
+
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:224
+msgid "This document has been signed by all recipients"
+msgstr "Ten dokument został podpisany przez wszystkich odbiorców"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view.tsx:227
+msgid "This document is currently a draft and has not been sent"
+msgstr "Ten dokument jest obecnie szkicowany i nie został wysłany"
+
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:152
+msgid "This document was created by you or a team member using the template above."
+msgstr "Ten dokument został stworzony przez Ciebie lub członka zespołu przy użyciu powyższego szablonu."
+
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:164
+msgid "This document was created using a direct link."
+msgstr "Ten dokument został stworzony przy użyciu bezpośredniego linku."
+
+#: apps/web/src/components/(teams)/dialogs/add-team-email-dialog.tsx:93
+msgid "This email is already being used by another team."
+msgstr "Ten e-mail jest już używany przez inny zespół."
+
+#: apps/web/src/app/(unauthenticated)/team/verify/transfer/[token]/page.tsx:40
+msgid "This link is invalid or has expired. Please contact your team to resend a transfer request."
+msgstr "Ten link jest nieprawidłowy lub wygasł. Proszę skontaktować się ze swoim zespołem, aby ponownie wysłać prośbę o transfer."
+
+#: apps/web/src/app/(unauthenticated)/team/verify/email/[token]/page.tsx:37
+msgid "This link is invalid or has expired. Please contact your team to resend a verification."
+msgstr "Ten link jest nieprawidłowy lub wygasł. Proszę skontaktować się ze swoim zespołem, aby ponownie wysłać weryfikację."
+
+#: apps/web/src/app/(dashboard)/settings/security/passkeys/create-passkey-dialog.tsx:208
+msgid "This passkey has already been registered."
+msgstr "Ten klucz dostępu został już zarejestrowany."
+
+#: apps/web/src/components/forms/signin.tsx:200
+msgid "This passkey is not configured for this application. Please login and add one in the user settings."
+msgstr "Ten klucz dostępu nie jest skonfigurowany dla tej aplikacji. Proszę zalogować się i dodać jeden w ustawieniach użytkownika."
+
+#: apps/web/src/components/(teams)/dialogs/create-team-checkout-dialog.tsx:148
+msgid "This price includes minimum 5 seats."
+msgstr "Ta cena obejmuje co najmniej 5 miejsc."
+
+#: apps/web/src/components/forms/signin.tsx:202
+msgid "This session has expired. Please try again."
+msgstr "Ta sesja wygasła. Proszę spróbować ponownie."
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:201
+msgid "This team, and any associated data excluding billing invoices will be permanently deleted."
+msgstr "Ten zespół oraz wszelkie powiązane dane, z wyjątkiem faktur, zostaną trwale usunięte."
+
+#: apps/web/src/app/(dashboard)/templates/delete-template-dialog.tsx:51
+msgid "This template could not be deleted at this time. Please try again."
+msgstr "Ten szablon nie mógł zostać usunięty w tej chwili. Proszę spróbować ponownie."
+
+#: apps/web/src/app/(unauthenticated)/team/decline/[token]/page.tsx:43
+msgid "This token is invalid or has expired. No action is needed."
+msgstr "Ten token jest nieprawidłowy lub wygasł. Nie wymaga żadnej akcji."
+
+#: apps/web/src/app/(unauthenticated)/team/invite/[token]/page.tsx:43
+msgid "This token is invalid or has expired. Please contact your team for a new invitation."
+msgstr "Ten token jest nieprawidłowy lub wygasł. Proszę skontaktować się ze swoim zespołem o nowe zaproszenie."
+
+#: apps/web/src/components/(teams)/dialogs/create-team-dialog.tsx:98
+#: apps/web/src/components/(teams)/forms/update-team-form.tsx:127
+msgid "This URL is already in use."
+msgstr "Ten URL jest już używany."
+
+#: apps/web/src/components/forms/v2/signup.tsx:145
+msgid "This username has already been taken"
+msgstr "Ta nazwa użytkownika została już zajęta"
+
+#: apps/web/src/components/forms/public-profile-claim-dialog.tsx:98
+msgid "This username is already taken"
+msgstr "Ta nazwa użytkownika jest już zajęta"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-data-table.tsx:73
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/data-table.tsx:44
+msgid "Time"
+msgstr "Czas"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-page-view.tsx:97
+msgid "Time zone"
+msgstr "Strefa czasowa"
+
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:131
+msgid "Time Zone"
+msgstr "Strefa czasowa"
+
+#: apps/web/src/app/(dashboard)/admin/documents/document-results.tsx:67
+#: apps/web/src/app/(dashboard)/documents/data-table.tsx:60
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:115
+#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:61
+msgid "Title"
+msgstr "Tytuł"
+
+#: apps/web/src/app/(unauthenticated)/team/invite/[token]/page.tsx:106
+msgid "To accept this invitation you must create an account."
+msgstr "Aby zaakceptować to zaproszenie, musisz założyć konto."
+
+#: apps/web/src/components/(teams)/dialogs/update-team-email-dialog.tsx:125
+msgid "To change the email you must remove and add a new email address."
+msgstr "Aby zmienić e-mail, musisz usunąć i dodać nowy adres e-mail."
+
+#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:117
+msgid "To confirm, please enter the accounts email address <0/>({0})."
+msgstr "Aby potwierdzić, proszę wpisać adres e-mail konta <0/>({0})."
+
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/super-delete-document-dialog.tsx:117
+msgid "To confirm, please enter the reason"
+msgstr "Aby potwierdzić, proszę wpisać powód"
+
+#: apps/web/src/app/(unauthenticated)/team/decline/[token]/page.tsx:101
+msgid "To decline this invitation you must create an account."
+msgstr "Aby odrzucić to zaproszenie, musisz założyć konto."
+
+#: apps/web/src/components/forms/2fa/enable-authenticator-app-dialog.tsx:197
+msgid "To enable two-factor authentication, scan the following QR code using your authenticator app."
+msgstr "Aby włączyć uwierzytelnianie dwuetapowe, zeskanuj poniższy kod QR za pomocą swojej aplikacji uwierzytelniającej."
+
+#: apps/web/src/app/(unauthenticated)/unverified-account/page.tsx:23
+msgid "To gain access to your account, please confirm your email address by clicking on the confirmation link from your inbox."
+msgstr "Aby uzyskać dostęp do swojego konta, proszę potwierdzić swój adres e-mail, klikając na link potwierdzający w swojej skrzynce odbiorczej."
+
+#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-account.tsx:54
+msgid "To mark this document as viewed, you need to be logged in as <0>{0}0>"
+msgstr "Aby oznaczyć ten dokument jako wyświetlony, musisz być zalogowany jako <0>{0}0>"
+
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:60
+msgid "To use our electronic signature service, you must have access to:"
+msgstr "Aby skorzystać z naszej usługi podpisu elektronicznego, musisz mieć dostęp do:"
+
+#: apps/web/src/app/embed/authenticate.tsx:21
+msgid "To view this document you need to be signed into your account, please sign in to continue."
+msgstr "Aby zobaczyć ten dokument, musisz być zalogowany na swoje konto, proszę zaloguj się, aby kontynuować."
+
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:178
+msgid "Toggle the switch to hide your profile from the public."
+msgstr "Przełącz przełącznik, aby ukryć swój profil przed publicznością."
+
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:190
+msgid "Toggle the switch to show your profile to the public."
+msgstr "Przełącz przełącznik, aby pokazać swój profil publicznie."
+
+#: apps/web/src/components/forms/2fa/enable-authenticator-app-dialog.tsx:236
+msgid "Token"
+msgstr "Token"
+
+#: apps/web/src/components/forms/token.tsx:105
+msgid "Token copied to clipboard"
+msgstr "Token skopiowany do schowka"
+
+#: apps/web/src/components/forms/token.tsx:126
+msgid "Token created"
+msgstr "Token utworzony"
+
+#: apps/web/src/components/(dashboard)/settings/token/delete-token-dialog.tsx:87
+msgid "Token deleted"
+msgstr "Token usunięty"
+
+#: apps/web/src/app/(dashboard)/settings/tokens/page.tsx:75
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx:108
+msgid "Token doesn't have an expiration date"
+msgstr "Token nie ma daty wygaśnięcia"
+
+#: apps/web/src/components/forms/token.tsx:193
+msgid "Token expiration date"
+msgstr "Data wygaśnięcia tokenu"
+
+#: apps/web/src/components/forms/token.tsx:165
+msgid "Token name"
+msgstr "Nazwa tokenu"
+
+#: apps/web/src/app/(dashboard)/admin/stats/page.tsx:65
+msgid "Total Documents"
+msgstr "Łączna liczba dokumentów"
+
+#: apps/web/src/app/(dashboard)/admin/stats/page.tsx:108
+msgid "Total Recipients"
+msgstr "Łączna liczba odbiorców"
+
+#: apps/web/src/app/(dashboard)/admin/stats/page.tsx:150
+msgid "Total Signers that Signed Up"
+msgstr "Łączna liczba podpisujących, którzy się zarejestrowali"
+
+#: apps/web/src/app/(dashboard)/admin/stats/page.tsx:64
+msgid "Total Users"
+msgstr "Łączna liczba użytkowników"
+
+#: apps/web/src/components/(teams)/dialogs/transfer-team-dialog.tsx:76
+msgid "transfer {teamName}"
+msgstr "przenieś {teamName}"
+
+#: apps/web/src/components/(teams)/dialogs/transfer-team-dialog.tsx:160
+msgid "Transfer ownership of this team to a selected team member."
+msgstr "Przenieś własność tego zespołu na wybranego członka zespołu."
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:175
+#: apps/web/src/components/(teams)/dialogs/transfer-team-dialog.tsx:147
+#: apps/web/src/components/(teams)/dialogs/transfer-team-dialog.tsx:156
+msgid "Transfer team"
+msgstr "Przenieś zespół"
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:179
+msgid "Transfer the ownership of the team to another team member."
+msgstr "Przenieś własność zespołu na innego członka zespołu."
+
+#: apps/web/src/app/(dashboard)/settings/webhooks/[id]/page.tsx:163
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/[id]/page.tsx:167
+#: apps/web/src/components/(dashboard)/settings/webhooks/create-webhook-dialog.tsx:191
+msgid "Triggers"
+msgstr "Wyzwalacze"
+
+#: apps/web/src/app/(dashboard)/settings/security/page.tsx:52
+msgid "Two factor authentication"
+msgstr "Uwierzytelnianie dwuetapowe"
+
+#: apps/web/src/app/(dashboard)/settings/security/page.tsx:88
+msgid "Two factor authentication recovery codes are used to access your account in the event that you lose access to your authenticator app."
+msgstr "Kody odzyskiwania uwierzytelniania dwuetapowego są używane do uzyskania dostępu do Twojego konta w przypadku, gdy stracisz dostęp do aplikacji uwierzytelniającej."
+
+#: apps/web/src/components/forms/signin.tsx:448
+msgid "Two-Factor Authentication"
+msgstr "Uwierzytelnianie dwuetapowe"
+
+#: apps/web/src/components/forms/2fa/disable-authenticator-app-dialog.tsx:90
+msgid "Two-factor authentication disabled"
+msgstr "Uwierzytelnianie dwuetapowe wyłączone"
+
+#: apps/web/src/components/forms/2fa/enable-authenticator-app-dialog.tsx:94
+msgid "Two-factor authentication enabled"
+msgstr "Uwierzytelnianie dwuetapowe włączone"
+
+#: apps/web/src/components/forms/2fa/disable-authenticator-app-dialog.tsx:92
+msgid "Two-factor authentication has been disabled for your account. You will no longer be required to enter a code from your authenticator app when signing in."
+msgstr "Uwierzytelnianie dwuetapowe zostało wyłączone dla Twojego konta. Nie będziesz już musiał wprowadzać kodu z aplikacji uwierzytelniającej podczas logowania."
+
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:120
+msgid "Two-Factor Re-Authentication"
+msgstr "Ponowna autoryzacja za pomocą dwuetapowej weryfikacji"
+
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/recipient-item.tsx:73
+#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:67
+msgid "Type"
+msgstr "Typ"
+
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:184
+msgid "Type 'delete' to confirm"
+msgstr "Wpisz 'delete', aby potwierdzić"
+
+#: apps/web/src/components/(dashboard)/common/command-menu.tsx:186
+msgid "Type a command or search..."
+msgstr "Wpisz polecenie lub wyszukaj..."
+
+#: apps/web/src/app/(unauthenticated)/verify-email/page.tsx:26
+msgid "Uh oh! Looks like you're missing a token"
+msgstr "Ups! Wygląda na to, że brakuje Ci tokenu"
+
+#: apps/web/src/components/(dashboard)/common/command-menu.tsx:303
+msgid "Unable to change the language at this time. Please try again later."
+msgstr "Nie można zmienić języka w tej chwili. Spróbuj ponownie później."
+
+#: apps/web/src/components/forms/2fa/recovery-code-list.tsx:31
+msgid "Unable to copy recovery code"
+msgstr "Nie można skopiować kodu odzyskiwania"
+
+#: apps/web/src/components/forms/token.tsx:110
+msgid "Unable to copy token"
+msgstr "Nie można skopiować tokenu"
+
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:105
+msgid "Unable to create direct template access. Please try again later."
+msgstr "Nie można utworzyć bezpośredniego dostępu do szablonu. Proszę spróbować ponownie później."
+
+#: apps/web/src/app/(dashboard)/settings/teams/decline-team-invitation-button.tsx:33
+msgid "Unable to decline this team invitation at this time."
+msgstr "Nie można w tej chwili odrzucić zaproszenia do zespołu."
+
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:86
+msgid "Unable to delete invitation. Please try again."
+msgstr "Nie można usunąć zaproszenia. Proszę spróbować ponownie."
+
+#: apps/web/src/components/(teams)/dialogs/delete-team-dialog.tsx:94
+msgid "Unable to delete team"
+msgstr "Nie można usunąć zespołu"
+
+#: apps/web/src/components/forms/2fa/disable-authenticator-app-dialog.tsx:103
+msgid "Unable to disable two-factor authentication"
+msgstr "Nie można wyłączyć uwierzytelniania dwuetapowego"
+
+#: apps/web/src/app/(dashboard)/settings/teams/accept-team-invitation-button.tsx:33
+msgid "Unable to join this team at this time."
+msgstr "Nie można dołączyć do tego zespołu w tej chwili."
+
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recent-activity.tsx:72
+#: apps/web/src/components/document/document-history-sheet.tsx:127
+msgid "Unable to load document history"
+msgstr "Nie można załadować historii dokumentu"
+
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:62
+msgid "Unable to load documents"
+msgstr "Nie można załadować dokumentów"
+
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:111
+msgid "Unable to load your public profile templates at this time"
+msgstr "Nie można załadować szablonów publicznego profilu w tej chwili"
+
+#: apps/web/src/components/(teams)/dialogs/remove-team-email-dialog.tsx:84
+msgid "Unable to remove email verification at this time. Please try again."
+msgstr "Nie można usunąć weryfikacji e-maila w tej chwili. Proszę spróbować ponownie."
+
+#: apps/web/src/components/(teams)/dialogs/remove-team-email-dialog.tsx:65
+msgid "Unable to remove team email at this time. Please try again."
+msgstr "Nie można usunąć e-maila zespołu w tej chwili. Proszę spróbować ponownie."
+
+#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:69
+msgid "Unable to resend invitation. Please try again."
+msgstr "Nie można ponownie wysłać zaproszenia. Proszę spróbować ponownie."
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/team-email-dropdown.tsx:40
+msgid "Unable to resend verification at this time. Please try again."
+msgstr "Nie można ponownie wysłać weryfikacji w tej chwili. Proszę spróbować ponownie."
+
+#: apps/web/src/app/(unauthenticated)/reset-password/page.tsx:20
+msgid "Unable to reset password"
+msgstr "Nie można zresetować hasła"
+
+#: apps/web/src/components/forms/2fa/enable-authenticator-app-dialog.tsx:68
+#: apps/web/src/components/forms/2fa/enable-authenticator-app-dialog.tsx:101
+msgid "Unable to setup two-factor authentication"
+msgstr "Nie można skonfigurować uwierzytelniania dwuetapowego"
+
+#: apps/web/src/components/forms/signin.tsx:247
+#: apps/web/src/components/forms/signin.tsx:255
+msgid "Unable to sign in"
+msgstr "Nie można się zalogować"
+
+#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-2fa.tsx:166
+#: apps/web/src/app/(teams)/t/[teamUrl]/error.tsx:27
+msgid "Unauthorized"
+msgstr "Nieautoryzowany"
+
+#: apps/web/src/components/(dashboard)/avatar/stack-avatars-with-tooltip.tsx:155
+msgid "Uncompleted"
+msgstr "Niezakończony"
+
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:229
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:254
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:265
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:276
+msgid "Unknown"
+msgstr "Nieznany"
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/error.tsx:23
+msgid "Unknown error"
+msgstr "Nieznany błąd"
+
+#: apps/web/src/components/(teams)/tables/team-billing-invoices-data-table.tsx:79
+msgid "Unpaid"
+msgstr "Nieopłacone"
+
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-templates-data-table.tsx:181
+#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:162
+#: apps/web/src/components/(teams)/dialogs/update-team-email-dialog.tsx:166
+#: apps/web/src/components/(teams)/dialogs/update-team-member-dialog.tsx:191
+#: apps/web/src/components/forms/public-profile-form.tsx:279
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:428
+msgid "Update"
+msgstr "Aktualizuj"
+
+#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:211
+msgid "Update Banner"
+msgstr "Zaktualizuj baner"
+
+#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:118
+msgid "Update passkey"
+msgstr "Zaktualizuj klucz dostępu"
+
+#: apps/web/src/components/forms/password.tsx:152
+msgid "Update password"
+msgstr "Zaktualizuj hasło"
+
+#: apps/web/src/components/forms/profile.tsx:150
+msgid "Update profile"
+msgstr "Zaktualizuj profil"
+
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/recipient-item.tsx:180
+msgid "Update Recipient"
+msgstr "Zaktualizuj odbiorcę"
+
+#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:146
+msgid "Update role"
+msgstr "Zaktualizuj rolę"
+
+#: apps/web/src/components/(teams)/forms/update-team-form.tsx:278
+msgid "Update team"
+msgstr "Zaktualizuj zespół"
+
+#: apps/web/src/components/(teams)/dialogs/update-team-email-dialog.tsx:113
+#: apps/web/src/components/(teams)/dialogs/update-team-email-dialog.tsx:121
+msgid "Update team email"
+msgstr "Zaktualizuj e-mail zespołu"
+
+#: apps/web/src/components/(teams)/dialogs/update-team-member-dialog.tsx:136
+#: apps/web/src/components/(teams)/dialogs/update-team-member-dialog.tsx:144
+msgid "Update team member"
+msgstr "Zaktualizuj członka zespołu"
+
+#: apps/web/src/app/(dashboard)/admin/users/[id]/page.tsx:147
+msgid "Update user"
+msgstr "Zaktualizuj użytkownika"
+
+#: apps/web/src/app/(dashboard)/settings/webhooks/[id]/page.tsx:208
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/[id]/page.tsx:210
+msgid "Update webhook"
+msgstr "Zaktualizuj webhook"
+
+#: apps/web/src/components/forms/password.tsx:152
+msgid "Updating password..."
+msgstr "Aktualizacja hasła..."
+
+#: apps/web/src/components/forms/profile.tsx:150
+msgid "Updating profile..."
+msgstr "Aktualizacja profilu..."
+
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:115
+msgid "Updating Your Information"
+msgstr "Aktualizacja Twoich informacji"
+
+#: apps/web/src/components/forms/avatar-image.tsx:182
+msgid "Upload Avatar"
+msgstr "Prześlij avatar"
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/branding-preferences.tsx:256
+msgid "Upload your brand logo (max 5MB, JPG, PNG, or WebP)"
+msgstr "Prześlij logo swojej marki (maks. 5MB, JPG, PNG lub WebP)"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-information.tsx:31
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-information.tsx:30
+msgid "Uploaded by"
+msgstr "Przesłane przez"
+
+#: apps/web/src/components/forms/avatar-image.tsx:91
+msgid "Uploaded file is too large"
+msgstr "Przesłany plik jest zbyt duży"
+
+#: apps/web/src/components/forms/avatar-image.tsx:92
+msgid "Uploaded file is too small"
+msgstr "Przesłany plik jest zbyt mały"
+
+#: apps/web/src/components/forms/avatar-image.tsx:93
+msgid "Uploaded file not an allowed file type"
+msgstr "Przesłany plik nie jest dozwolonym typem pliku"
+
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view.tsx:170
+msgid "Use"
+msgstr "Użyj"
+
+#: apps/web/src/components/forms/2fa/disable-authenticator-app-dialog.tsx:187
+#: apps/web/src/components/forms/signin.tsx:505
+msgid "Use Authenticator"
+msgstr "Użyj Authenticatora"
+
+#: apps/web/src/components/forms/2fa/disable-authenticator-app-dialog.tsx:185
+#: apps/web/src/components/forms/signin.tsx:503
+msgid "Use Backup Code"
+msgstr "Użyj kodu zapasowego"
+
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:207
+msgid "Use Template"
+msgstr "Użyj szablonu"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-data-table.tsx:78
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/data-table.tsx:45
+msgid "User"
+msgstr "Użytkownik"
+
+#: apps/web/src/app/(dashboard)/admin/subscriptions/page.tsx:41
+msgid "User ID"
+msgstr "ID użytkownika"
+
+#: apps/web/src/components/forms/v2/signup.tsx:234
+msgid "User profiles are here!"
+msgstr "Profile użytkowników są tutaj!"
+
+#: apps/web/src/components/(dashboard)/layout/menu-switcher.tsx:269
+msgid "User settings"
+msgstr "Ustawienia użytkownika"
+
+#: apps/web/src/app/(dashboard)/admin/nav.tsx:51
+msgid "Users"
+msgstr "Użytkownicy"
+
+#: apps/web/src/app/(dashboard)/admin/documents/[id]/recipient-item.tsx:83
+msgid "Value"
+msgstr "Wartość"
+
+#: apps/web/src/components/(dashboard)/layout/verify-email-banner.tsx:100
+msgid "Verification Email Sent"
+msgstr "Wysłano wiadomość e-mail z weryfikacją"
+
+#: apps/web/src/components/(dashboard)/layout/verify-email-banner.tsx:45
+msgid "Verification email sent successfully."
+msgstr "Wiadomość e-mail z weryfikacją została wysłana pomyślnie."
+
+#: apps/web/src/components/(dashboard)/layout/verify-email-banner.tsx:102
+msgid "Verify Now"
+msgstr "Zweryfikuj teraz"
+
+#: apps/web/src/components/(dashboard)/layout/verify-email-banner.tsx:112
+msgid "Verify your email address"
+msgstr "Zweryfikuj swój adres e-mail"
+
+#: apps/web/src/components/(dashboard)/layout/verify-email-banner.tsx:88
+msgid "Verify your email address to unlock all features."
+msgstr "Zweryfikuj swój adres e-mail, aby odblokować wszystkie funkcje."
+
+#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:56
+msgid "Verify your email to upload documents."
+msgstr "Zweryfikuj swój e-mail, aby przesłać dokumenty."
+
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/page.tsx:75
+msgid "Version History"
+msgstr "Historia wersji"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-button.tsx:95
+#: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:126
+#: apps/web/src/app/(dashboard)/documents/data-table-action-button.tsx:135
+#: apps/web/src/app/(dashboard)/documents/data-table-action-dropdown.tsx:132
+#: apps/web/src/components/(teams)/tables/team-billing-invoices-data-table.tsx:100
+#: apps/web/src/components/forms/2fa/view-recovery-codes-dialog.tsx:168
+msgid "View"
+msgstr "Widok"
+
+#: apps/web/src/app/(dashboard)/settings/security/page.tsx:140
+msgid "View activity"
+msgstr "Wyświetl aktywność"
+
+#: apps/web/src/app/(dashboard)/settings/teams/team-email-usage.tsx:78
+msgid "View all documents sent to your account"
+msgstr "Wyświetl wszystkie dokumenty wysłane na twoje konto"
+
+#: apps/web/src/app/(dashboard)/settings/security/page.tsx:134
+msgid "View all recent security activity related to your account."
+msgstr "Wyświetl wszystkie ostatnie aktywności związane z bezpieczeństwem twojego konta."
+
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:157
+msgid "View all related documents"
+msgstr "Zobacz wszystkie powiązane dokumenty"
+
+#: apps/web/src/app/(dashboard)/settings/security/activity/page.tsx:26
+msgid "View all security activity related to your account."
+msgstr "Wyświetl wszystkie aktywności związane z bezpieczeństwem twojego konta."
+
+#: apps/web/src/components/forms/2fa/view-recovery-codes-dialog.tsx:78
+msgid "View Codes"
+msgstr "Wyświetl kody"
+
+#: apps/web/src/app/(signing)/sign/[token]/form.tsx:127
+msgid "View Document"
+msgstr "Zobacz dokument"
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:156
+msgid "View documents associated with this email"
+msgstr "Wyświetl dokumenty powiązane z tym e-mailem"
+
+#: apps/web/src/app/(dashboard)/settings/teams/team-invitations.tsx:55
+msgid "View invites"
+msgstr "Wyświetl zaproszenia"
+
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:95
+msgid "View more"
+msgstr "Zobacz więcej"
+
+#: apps/web/src/app/(signing)/sign/[token]/complete/document-preview-button.tsx:34
+msgid "View Original Document"
+msgstr "Wyświetl oryginalny dokument"
+
+#: apps/web/src/components/forms/2fa/view-recovery-codes-dialog.tsx:87
+#: apps/web/src/components/forms/2fa/view-recovery-codes-dialog.tsx:116
+msgid "View Recovery Codes"
+msgstr "Wyświetl kody odzyskiwania"
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/error.tsx:56
+msgid "View teams"
+msgstr "Wyświetl zespoły"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recipients.tsx:120
+#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:259
+msgid "Viewed"
+msgstr "Wyświetlono"
+
+#: apps/web/src/components/(dashboard)/avatar/stack-avatars-with-tooltip.tsx:125
+msgid "Waiting"
+msgstr "Czekam"
+
+#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:150
+msgid "Waiting for others to sign"
+msgstr "Czekam na podpisy innych"
+
+#: apps/web/src/app/(signing)/sign/[token]/waiting/page.tsx:70
+msgid "Waiting for Your Turn"
+msgstr "Czekając na Twój Ruch"
+
+#: apps/web/src/app/(signing)/sign/[token]/no-longer-available.tsx:61
+msgid "Want to send slick signing links like this one? <0>Check out Documenso.0>"
+msgstr "Chcesz wysłać eleganckie linki do podpisywania, takie jak ten? <0>Sprawdź Documenso.0>"
+
+#: apps/web/src/app/(profile)/profile-header.tsx:68
+msgid "Want your own public profile?"
+msgstr "Chcesz swój własny profil publiczny?"
+
+#: apps/web/src/app/(dashboard)/settings/billing/billing-portal-button.tsx:41
+#: apps/web/src/app/(teams)/t/[teamUrl]/layout-billing-banner.tsx:55
+#: apps/web/src/components/(teams)/team-billing-portal-button.tsx:31
+msgid "We are unable to proceed to the billing portal at this time. Please try again, or contact support."
+msgstr "Nie możemy przejść do portalu rozliczeń w tej chwili. Proszę spróbuj ponownie lub skontaktuj się z pomocą techniczną."
+
+#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:95
+msgid "We are unable to remove this passkey at the moment. Please try again later."
+msgstr "Nie możemy usunąć tego klucza zabezpieczeń w tej chwili. Proszę spróbuj ponownie później."
+
+#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:75
+msgid "We are unable to update this passkey at the moment. Please try again later."
+msgstr "Nie możemy zaktualizować tego klucza zabezpieczeń w tej chwili. Proszę spróbuj ponownie później."
+
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:153
+msgid "We encountered an error while removing the direct template link. Please try again later."
+msgstr "Nap encountered an error while removing the direct template link. Please try again later."
+
+#: apps/web/src/app/(dashboard)/settings/webhooks/[id]/page.tsx:84
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/[id]/page.tsx:90
+msgid "We encountered an error while updating the webhook. Please try again later."
+msgstr "Natknęliśmy się na błąd podczas aktualizacji webhooka. Proszę spróbuj ponownie później."
+
+#: apps/web/src/components/forms/token.tsx:145
+msgid "We encountered an unknown error while attempting create the new token. Please try again later."
+msgstr "Natknęliśmy się na nieznany błąd podczas próby utworzenia nowego tokena. Proszę spróbuj ponownie później."
+
+#: apps/web/src/components/(teams)/dialogs/add-team-email-dialog.tsx:102
+msgid "We encountered an unknown error while attempting to add this email. Please try again later."
+msgstr "Natknęliśmy się na nieznany błąd podczas próby dodania tego e-maila. Proszę spróbuj ponownie później."
+
+#: apps/web/src/components/(teams)/dialogs/create-team-dialog.tsx:107
+msgid "We encountered an unknown error while attempting to create a team. Please try again later."
+msgstr "Natknęliśmy się na nieznany błąd podczas próby utworzenia zespołu. Proszę spróbuj ponownie później."
+
+#: apps/web/src/components/(dashboard)/settings/webhooks/delete-webhook-dialog.tsx:90
+msgid "We encountered an unknown error while attempting to delete it. Please try again later."
+msgstr "Natknęliśmy się na nieznany błąd podczas próby usunięcia tego. Proszę spróbuj ponownie później."
+
+#: apps/web/src/components/(teams)/tables/pending-user-teams-data-table-actions.tsx:35
+msgid "We encountered an unknown error while attempting to delete the pending team. Please try again later."
+msgstr "Natknęliśmy się na nieznany błąd podczas próby usunięcia oczekującego zespołu. Proszę spróbuj ponownie później."
+
+#: apps/web/src/components/(teams)/dialogs/delete-team-dialog.tsx:86
+msgid "We encountered an unknown error while attempting to delete this team. Please try again later."
+msgstr "Natknęliśmy się na nieznany błąd podczas próby usunięcia tego zespołu. Proszę spróbuj ponownie później."
+
+#: apps/web/src/components/(dashboard)/settings/token/delete-token-dialog.tsx:99
+msgid "We encountered an unknown error while attempting to delete this token. Please try again later."
+msgstr "Natknęliśmy się na nieznany błąd podczas próby usunięcia tego tokena. Proszę spróbuj ponownie później."
+
+#: apps/web/src/app/(dashboard)/admin/users/[id]/delete-user-dialog.tsx:71
+#: apps/web/src/app/(dashboard)/settings/profile/delete-account-dialog.tsx:68
+msgid "We encountered an unknown error while attempting to delete your account. Please try again later."
+msgstr "Natknęliśmy się na nieznany błąd podczas próby usunięcia twojego konta. Proszę spróbuj ponownie później."
+
+#: apps/web/src/components/(teams)/dialogs/invite-team-member-dialog.tsx:160
+msgid "We encountered an unknown error while attempting to invite team members. Please try again later."
+msgstr "Natknęliśmy się na nieznany błąd podczas próby zaproszenia członków zespołu. Proszę spróbuj ponownie później."
+
+#: apps/web/src/components/(teams)/dialogs/leave-team-dialog.tsx:60
+msgid "We encountered an unknown error while attempting to leave this team. Please try again later."
+msgstr "Natknęliśmy się na nieznany błąd podczas próby opuszczenia tego zespołu. Proszę spróbuj ponownie później."
+
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:143
+msgid "We encountered an unknown error while attempting to remove this template from your profile. Please try again later."
+msgstr "Natknęliśmy się na nieznany błąd podczas próby usunięcia tego szablonu z twojego profilu. Proszę spróbuj ponownie później."
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/team-transfer-status.tsx:56
+msgid "We encountered an unknown error while attempting to remove this transfer. Please try again or contact support."
+msgstr "Natknęliśmy się na nieznany błąd podczas próby usunięcia tego transferu. Proszę spróbuj ponownie lub skontaktuj się z pomocą techniczną."
+
+#: apps/web/src/components/(teams)/dialogs/delete-team-member-dialog.tsx:60
+msgid "We encountered an unknown error while attempting to remove this user. Please try again later."
+msgstr "Natknęliśmy się na nieznany błąd podczas próby usunięcia tego użytkownika. Proszę spróbuj ponownie później."
+
+#: apps/web/src/components/(teams)/dialogs/transfer-team-dialog.tsx:118
+msgid "We encountered an unknown error while attempting to request a transfer of this team. Please try again later."
+msgstr "Natknęliśmy się na nieznany błąd podczas próby zażądania transferu tego zespołu. Proszę spróbuj ponownie później."
+
+#: apps/web/src/components/forms/reset-password.tsx:89
+msgid "We encountered an unknown error while attempting to reset your password. Please try again later."
+msgstr "Natknęliśmy się na nieznany błąd podczas próby zresetowania hasła. Proszę spróbuj ponownie później."
+
+#: apps/web/src/app/(dashboard)/settings/teams/team-email-usage.tsx:46
+msgid "We encountered an unknown error while attempting to revoke access. Please try again or contact support."
+msgstr "Natknęliśmy się na nieznany błąd podczas próby odwołania dostępu. Proszę spróbuj ponownie lub skontaktuj się z pomocą techniczną."
+
+#: apps/web/src/components/forms/public-profile-claim-dialog.tsx:115
+msgid "We encountered an unknown error while attempting to save your details. Please try again later."
+msgstr "Natknęliśmy się na nieznany błąd podczas próby zapisania twoich danych. Proszę spróbuj ponownie później."
+
+#: apps/web/src/components/forms/profile.tsx:89
+#: apps/web/src/components/forms/signin.tsx:272
+#: apps/web/src/components/forms/signin.tsx:287
+#: apps/web/src/components/forms/signin.tsx:303
+msgid "We encountered an unknown error while attempting to sign you In. Please try again later."
+msgstr "Natknęliśmy się na nieznany błąd podczas próby zalogowania się. Proszę spróbuj ponownie później."
+
+#: apps/web/src/app/(signing)/sign/[token]/complete/claim-account.tsx:100
+#: apps/web/src/components/forms/signup.tsx:115
+#: apps/web/src/components/forms/v2/signup.tsx:162
+msgid "We encountered an unknown error while attempting to sign you up. Please try again later."
+msgstr "Natknęliśmy się na nieznany błąd podczas próby rejestracji. Proszę spróbuj ponownie później."
+
+#: apps/web/src/components/forms/signup.tsx:130
+#: apps/web/src/components/forms/signup.tsx:144
+#: apps/web/src/components/forms/v2/signup.tsx:185
+#: apps/web/src/components/forms/v2/signup.tsx:199
+msgid "We encountered an unknown error while attempting to sign you Up. Please try again later."
+msgstr "Natknęliśmy się na nieznany błąd podczas próby rejestracji. Proszę spróbuj ponownie później."
+
+#: apps/web/src/components/forms/avatar-image.tsx:124
+msgid "We encountered an unknown error while attempting to update the avatar. Please try again later."
+msgstr "Natknęliśmy się na nieznany błąd podczas próby zaktualizowania awatara. Proszę spróbuj ponownie później."
+
+#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:92
+msgid "We encountered an unknown error while attempting to update the banner. Please try again later."
+msgstr "Natknęliśmy się na nieznany błąd podczas próby zaktualizowania banera. Proszę spróbuj ponownie później."
+
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:180
+msgid "We encountered an unknown error while attempting to update the template. Please try again later."
+msgstr "Natknęliśmy się na nieznany błąd podczas próby zaktualizowania szablonu. Proszę spróbuj ponownie później."
+
+#: apps/web/src/components/(teams)/dialogs/update-team-member-dialog.tsx:102
+msgid "We encountered an unknown error while attempting to update this team member. Please try again later."
+msgstr "Natknęliśmy się na nieznany błąd podczas próby zaktualizowania tego członka zespołu. Proszę spróbuj ponownie później."
+
+#: apps/web/src/components/forms/password.tsx:86
+msgid "We encountered an unknown error while attempting to update your password. Please try again later."
+msgstr "Natknęliśmy się na nieznany błąd podczas próby zaktualizowania twojego hasła. Proszę spróbuj ponownie później."
+
+#: apps/web/src/components/forms/public-profile-form.tsx:106
+msgid "We encountered an unknown error while attempting to update your public profile. Please try again later."
+msgstr "Natknęliśmy się na nieznany błąd podczas próby zaktualizowania twojego profilu publicznego. Proszę spróbuj ponownie później."
+
+#: apps/web/src/components/(teams)/forms/update-team-form.tsx:136
+msgid "We encountered an unknown error while attempting to update your team. Please try again later."
+msgstr "Natknęliśmy się na nieznany błąd podczas próby zaktualizowania twojego zespołu. Proszę spróbuj ponownie później."
+
+#: apps/web/src/components/(teams)/dialogs/update-team-email-dialog.tsx:91
+msgid "We encountered an unknown error while attempting update the team email. Please try again later."
+msgstr "Natknęliśmy się na nieznany błąd podczas próby zaktualizowania e-maila zespołu. Proszę spróbuj ponownie później."
+
+#: apps/web/src/components/(teams)/dialogs/add-team-email-dialog.tsx:80
+msgid "We have sent a confirmation email for verification."
+msgstr "Wysłaliśmy wiadomość e-mail z potwierdzeniem dla weryfikacji."
+
+#: apps/web/src/components/forms/token.tsx:111
+msgid "We were unable to copy the token to your clipboard. Please try again."
+msgstr "Nie udało nam się skopiować tokena do schowka. Spróbuj ponownie."
+
+#: apps/web/src/components/forms/2fa/recovery-code-list.tsx:33
+msgid "We were unable to copy your recovery code to your clipboard. Please try again."
+msgstr "Nie udało nam się skopiować twojego kodu odzyskiwania do schowka. Spróbuj ponownie."
+
+#: apps/web/src/components/(teams)/dialogs/create-team-checkout-dialog.tsx:52
+msgid "We were unable to create a checkout session. Please try again, or contact support"
+msgstr "Nie udało się utworzyć sesji zakupu. Proszę spróbuj ponownie lub skontaktuj się z pomocą techniczną"
+
+#: apps/web/src/components/forms/2fa/disable-authenticator-app-dialog.tsx:105
+msgid "We were unable to disable two-factor authentication for your account. Please ensure that you have entered your password and backup code correctly and try again."
+msgstr "Nie udało nam się wyłączyć uwierzytelniania dwuskładnikowego dla twojego konta. Upewnij się, że wpisałeś poprawnie swoje hasło i kod zapasowy, a następnie spróbuj ponownie."
+
+#: apps/web/src/app/(recipient)/d/[token]/signing-auth-page.tsx:28
+#: apps/web/src/app/(signing)/sign/[token]/signing-auth-page.tsx:39
+msgid "We were unable to log you out at this time."
+msgstr "Nie udało nam się wylogować w tej chwili."
+
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:125
+msgid "We were unable to set your public profile to public. Please try again."
+msgstr "Nie udało nam się ustawić twojego profilu publicznego na publiczny. Proszę spróbuj ponownie."
+
+#: apps/web/src/components/forms/2fa/enable-authenticator-app-dialog.tsx:70
+#: apps/web/src/components/forms/2fa/enable-authenticator-app-dialog.tsx:103
+msgid "We were unable to setup two-factor authentication for your account. Please ensure that you have entered your code correctly and try again."
+msgstr "Nie udało nam się skonfigurować uwierzytelniania dwuskładnikowego dla twojego konta. Upewnij się, że wpisałeś poprawnie swój kod, a następnie spróbuj ponownie."
+
+#: apps/web/src/app/(recipient)/d/[token]/direct-template.tsx:120
+#: apps/web/src/app/embed/direct/[[...url]]/client.tsx:245
+#: apps/web/src/app/embed/sign/[[...url]]/client.tsx:127
+msgid "We were unable to submit this document at this time. Please try again later."
+msgstr "Nie udało nam się złożyć tego dokumentu w tej chwili. Proszę spróbuj ponownie później."
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/branding-preferences.tsx:109
+msgid "We were unable to update your branding preferences at this time, please try again later"
+msgstr "Nie udało nam się zaktualizować ustawień dotyczących marki w tym czasie, spróbuj ponownie później"
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:98
+msgid "We were unable to update your document preferences at this time, please try again later"
+msgstr "Nie udało nam się zaktualizować preferencji dokumentu w tym czasie, spróbuj ponownie później"
+
+#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-2fa.tsx:169
+msgid "We were unable to verify your details. Please try again or contact support"
+msgstr "Nie udało się zweryfikować twoich danych. Proszę spróbuj ponownie lub skontaktuj się z pomocą techniczną"
+
+#: apps/web/src/app/(unauthenticated)/verify-email/[token]/page.tsx:65
+msgid "We were unable to verify your email. If your email is not verified already, please try again."
+msgstr "Nie udało się zweryfikować twojego e-maila. Jeśli twój e-mail nie jest jeszcze zweryfikowany, spróbuj ponownie."
+
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:370
+msgid "We will generate signing links for you, which you can send to the recipients through your method of choice."
+msgstr "Wygenerujemy dla Ciebie linki do podpisania, które możesz wysłać do odbiorców za pomocą wybranej metody."
+
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:366
+msgid "We won't send anything to notify recipients."
+msgstr "Nie wyślemy niczego, aby powiadomić odbiorców."
+
+#: apps/web/src/app/(dashboard)/documents/empty-state.tsx:29
+#: apps/web/src/app/(dashboard)/templates/empty-state.tsx:11
+msgid "We're all empty"
+msgstr "Jesteśmy całkowicie puste"
+
+#: apps/web/src/components/(dashboard)/layout/verify-email-banner.tsx:116
+msgid "We've sent a confirmation email to <0>{email}0>. Please check your inbox and click the link in the email to verify your account."
+msgstr "Wysłaliśmy wiadomość e-mail z potwierdzeniem na <0>{email}0>. Proszę sprawdź swoją skrzynkę odbiorczą i kliknij link w e-maile, aby zweryfikować swoje konto."
+
+#: apps/web/src/components/(dashboard)/settings/webhooks/create-webhook-dialog.tsx:92
+msgid "Webhook created"
+msgstr "Webhook utworzony"
+
+#: apps/web/src/components/(dashboard)/settings/webhooks/delete-webhook-dialog.tsx:78
+msgid "Webhook deleted"
+msgstr "Webhook usunięty"
+
+#: apps/web/src/app/(dashboard)/settings/webhooks/[id]/page.tsx:74
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/[id]/page.tsx:80
+msgid "Webhook updated"
+msgstr "Webhook zaktualizowany"
+
+#: apps/web/src/app/(dashboard)/settings/webhooks/[id]/page.tsx:117
+#: apps/web/src/components/(dashboard)/settings/webhooks/create-webhook-dialog.tsx:145
+msgid "Webhook URL"
+msgstr "URL webhooka"
+
+#: apps/web/src/app/(dashboard)/settings/webhooks/page.tsx:28
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/page.tsx:33
+#: apps/web/src/components/(dashboard)/settings/layout/desktop-nav.tsx:103
+#: apps/web/src/components/(dashboard)/settings/layout/mobile-nav.tsx:106
+#: apps/web/src/components/(teams)/settings/layout/desktop-nav.tsx:109
+#: apps/web/src/components/(teams)/settings/layout/mobile-nav.tsx:118
+msgid "Webhooks"
+msgstr "Webhooki"
+
+#: apps/web/src/app/(dashboard)/settings/billing/billing-plans.tsx:29
+msgid "Weekly"
+msgstr "Co tydzień"
+
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:21
+msgid "Welcome"
+msgstr "Witaj"
+
+#: apps/web/src/app/(unauthenticated)/signin/page.tsx:33
+msgid "Welcome back, we are lucky to have you."
+msgstr "Witamy z powrotem, mamy szczęście, że mamy cię."
+
+#: apps/web/src/app/(signing)/sign/[token]/waiting/page.tsx:88
+msgid "Were you trying to edit this document instead?"
+msgstr "Czy próbowałeś raczej edytować ten dokument?"
+
+#: apps/web/src/app/(dashboard)/settings/security/passkeys/create-passkey-dialog.tsx:189
+msgid "When you click continue, you will be prompted to add the first available authenticator on your system."
+msgstr "Kiedy klikniesz kontynuuj, zostaniesz poproszony o dodanie pierwszego dostępnego autoryzatora w swoim systemie."
+
+#: apps/web/src/app/(signing)/sign/[token]/auto-sign.tsx:183
+msgid "When you sign a document, we can automatically fill in and sign the following fields using information that has already been provided. You can also manually sign or remove any automatically signed fields afterwards if you desire."
+msgstr "Podczas podpisywania dokumentu możemy automatycznie wypełnić i podpisać następujące pola, używając informacji, które zostały już podane. Możesz również ręcznie podpisać lub usunąć każde automatycznie podpisane pole później, jeśli chcesz."
+
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:36
+msgid "When you use our platform to affix your electronic signature to documents, you are consenting to do so under the Electronic Signatures in Global and National Commerce Act (E-Sign Act) and other applicable laws. This action indicates your agreement to use electronic means to sign documents and receive notifications."
+msgstr "Kiedy korzystasz z naszej platformy, aby przyczepić swój podpis elektroniczny do dokumentów, wyrażasz zgodę na dokonanie tego zgodnie z Ustawą o podpisach elektronicznych w handlu globalnym i krajowym (Ustawa E-Sign) oraz innymi obowiązującymi przepisami. Ta czynność wskazuje na twoją zgodę na korzystanie z elektronicznych środków do podpisywania dokumentów i otrzymywania powiadomień."
+
+#: apps/web/src/app/(profile)/p/[url]/page.tsx:139
+msgid "While waiting for them to do so you can create your own Documenso account and get started with document signing right away."
+msgstr "Czekając na ich działania możesz utworzyć własne konto Documenso i od razu rozpocząć podpisywanie dokumentów."
+
+#: apps/web/src/app/(dashboard)/documents/_action-items/resend-document.tsx:126
+msgid "Who do you want to remind?"
+msgstr "Kogo chcesz przypomnieć?"
+
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:101
+msgid "Withdrawing Consent"
+msgstr "Wycofanie zgody"
+
+#: apps/web/src/components/forms/public-profile-form.tsx:223
+msgid "Write about the team"
+msgstr "Napisz o zespole"
+
+#: apps/web/src/components/forms/public-profile-form.tsx:223
+msgid "Write about yourself"
+msgstr "Napisz o sobie"
+
+#: apps/web/src/app/(dashboard)/settings/billing/billing-plans.tsx:31
+msgid "Yearly"
+msgstr "Rocznie"
+
+#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-information.tsx:32
+#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-information.tsx:31
+msgid "You"
+msgstr "Ty"
+
+#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:93
+msgid "You are about to complete approving \"{truncatedTitle}\".<0/> Are you sure?"
+msgstr "Zaraz kończysz zatwierdzanie \"{truncatedTitle}\".<0/> Czy jesteś pewny?"
+
+#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:85
+msgid "You are about to complete signing \"{truncatedTitle}\".<0/> Are you sure?"
+msgstr "Zaraz kończysz podpisywanie \"{truncatedTitle}\".<0/> Czy jesteś pewny?"
+
+#: apps/web/src/app/(signing)/sign/[token]/sign-dialog.tsx:77
+msgid "You are about to complete viewing \"{truncatedTitle}\".<0/> Are you sure?"
+msgstr "Zaraz kończysz przeglądanie \"{truncatedTitle}\".<0/> Czy jesteś pewny?"
+
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:103
+msgid "You are about to delete <0>\"{documentTitle}\"0>"
+msgstr "Zaraz usuniesz <0>\"{documentTitle}\"0>"
+
+#: apps/web/src/components/(teams)/dialogs/remove-team-email-dialog.tsx:120
+msgid "You are about to delete the following team email from <0>{teamName}0>."
+msgstr "Zaraz usuniesz następujący e-mail zespołowy z <0>{teamName}0>."
+
+#: apps/web/src/app/(dashboard)/documents/delete-document-dialog.tsx:107
+msgid "You are about to hide <0>\"{documentTitle}\"0>"
+msgstr "Zaraz ukryjesz <0>\"{documentTitle}\"0>"
+
+#: apps/web/src/components/(teams)/dialogs/leave-team-dialog.tsx:85
+msgid "You are about to leave the following team."
+msgstr "Zaraz opuścisz następujący zespół."
+
+#: apps/web/src/components/(teams)/dialogs/delete-team-member-dialog.tsx:85
+msgid "You are about to remove the following user from <0>{teamName}0>."
+msgstr "Zaraz usuniesz następującego użytkownika z <0>{teamName}0>."
+
+#: apps/web/src/app/(dashboard)/settings/teams/team-email-usage.tsx:98
+msgid "You are about to revoke access for team <0>{0}0> ({1}) to use your email."
+msgstr "Zaraz cofniesz dostęp dla zespołu <0>{0}0> ({1}) do korzystania z twojego e-maila."
+
+#: apps/web/src/app/(dashboard)/settings/billing/page.tsx:80
+msgid "You are currently on the <0>Free Plan0>."
+msgstr "Obecnie jesteś na <0>Planie darmowym0>."
+
+#: apps/web/src/components/(teams)/dialogs/update-team-member-dialog.tsx:148
+msgid "You are currently updating <0>{teamMemberName}.0>"
+msgstr "Obecnie aktualizujesz <0>{teamMemberName}.0>"
+
+#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table-actions.tsx:122
+msgid "You are currently updating the <0>{passkeyName}0> passkey."
+msgstr "Obecnie aktualizujesz klucz zabezpieczeń <0>{passkeyName}0>."
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/error.tsx:28
+msgid "You are not authorized to view this page."
+msgstr "Nie masz uprawnień, aby wyświetlić tę stronę."
+
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:43
+msgid "You can choose to enable or disable your profile for public view."
+msgstr "Możesz wybrać, aby włączyć lub wyłączyć swój profil do publicznego widoku."
+
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:50
+msgid "You can choose to enable or disable your team profile for public view."
+msgstr "Możesz wybrać, aby włączyć lub wyłączyć profil swojego zespołu do publicznego widoku."
+
+#: apps/web/src/app/(dashboard)/documents/upcoming-profile-claim-teaser.tsx:30
+msgid "You can claim your profile later on by going to your profile settings!"
+msgstr "Możesz zgłosić swój profil później, przechodząc do ustawień swojego profilu!"
+
+#: apps/web/src/components/document/document-recipient-link-copy-dialog.tsx:87
+msgid "You can copy and share these links to recipients so they can action the document."
+msgstr "Możesz skopiować i udostępnić te linki odbiorcom, aby mogli wykonać dokument."
+
+#: apps/web/src/components/forms/public-profile-form.tsx:154
+msgid "You can update the profile URL by updating the team URL in the general settings page."
+msgstr "Możesz zaktualizować adres URL profilu, aktualizując adres URL zespołu na stronie ogólnych ustawień."
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/page.tsx:71
+msgid "You can view documents associated with this email and use this identity when sending documents."
+msgstr "Możesz wyświetlać dokumenty powiązane z tym e-mailem i używać tej tożsamości podczas wysyłania dokumentów."
+
+#: apps/web/src/app/(dashboard)/settings/security/passkeys/create-passkey-dialog.tsx:213
+msgid "You cannot have more than {MAXIMUM_PASSKEYS} passkeys."
+msgstr "Nie możesz mieć więcej niż {MAXIMUM_PASSKEYS} kluczy zabezpieczeń."
+
+#: apps/web/src/components/(teams)/dialogs/update-team-member-dialog.tsx:120
+msgid "You cannot modify a team member who has a higher role than you."
+msgstr "Nie możesz modyfikować członka zespołu, który ma wyższą rolę niż ty."
+
+#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:101
+msgid "You cannot upload encrypted PDFs"
+msgstr "Nie możesz przesyłać zaszyfrowanych plików PDF"
+
+#: apps/web/src/app/(dashboard)/settings/billing/billing-portal-button.tsx:46
+msgid "You do not currently have a customer record, this should not happen. Please contact support for assistance."
+msgstr "Obecnie nie masz rekordu klienta, nie powinno tak się dziać. Proszę skontaktuj się z pomocą techniczną."
+
+#: apps/web/src/app/(unauthenticated)/team/invite/[token]/page.tsx:127
+msgid "You have accepted an invitation from <0>{0}0> to join their team."
+msgstr "Zaakceptowałeś zaproszenie od <0>{0}0>, aby dołączyć do ich zespołu."
+
+#: apps/web/src/app/(unauthenticated)/team/verify/transfer/[token]/page.tsx:64
+msgid "You have already completed the ownership transfer for <0>{0}0>."
+msgstr "Już zakończyłeś transfer własności dla <0>{0}0>."
+
+#: apps/web/src/app/(unauthenticated)/team/verify/email/[token]/page.tsx:61
+msgid "You have already verified your email address for <0>{0}0>."
+msgstr "Już zweryfikowałeś swój adres e-mail dla <0>{0}0>."
+
+#: apps/web/src/app/(unauthenticated)/team/decline/[token]/page.tsx:95
+#: apps/web/src/app/(unauthenticated)/team/invite/[token]/page.tsx:100
+msgid "You have been invited by <0>{0}0> to join their team."
+msgstr "Zostałeś zaproszony przez <0>{0}0>, aby dołączyć do ich zespołu."
+
+#: apps/web/src/app/(unauthenticated)/team/decline/[token]/page.tsx:122
+msgid "You have declined the invitation from <0>{0}0> to join their team."
+msgstr "Odrzuciłeś zaproszenie od <0>{0}0>, aby dołączyć do ich zespołu."
+
+#: apps/web/src/app/(dashboard)/settings/webhooks/page.tsx:44
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/webhooks/page.tsx:49
+msgid "You have no webhooks yet. Your webhooks will be shown here once you create them."
+msgstr "Nie masz jeszcze żadnych webhooków. Twoje webhooki będą tutaj widoczne, gdy je utworzysz."
+
+#: apps/web/src/app/(dashboard)/templates/empty-state.tsx:15
+msgid "You have not yet created any templates. To create a template please upload one."
+msgstr "Nie stworzyłeś jeszcze żadnych szablonów. Aby stworzyć szablon, proszę przesłać jeden."
+
+#: apps/web/src/app/(dashboard)/documents/empty-state.tsx:30
+msgid "You have not yet created or received any documents. To create a document please upload one."
+msgstr "Nie stworzyłeś jeszcze żadnych dokumentów ani ich nie otrzymałeś. Aby stworzyć dokument, proszę przesłać jeden."
+
+#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:234
+msgid "You have reached the maximum limit of {0} direct templates. <0>Upgrade your account to continue!0>"
+msgstr "Osiągnąłeś maksymalny limit {0} bezpośrednich szablonów. <0>Ulepsz swoje konto, aby kontynuować!0>"
+
+#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:52
+msgid "You have reached your document limit."
+msgstr "Osiągnąłeś limit dokumentów."
+
+#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:183
+msgid "You have reached your document limit. <0>Upgrade your account to continue!0>"
+msgstr "Osiągnąłeś limit dokumentów. <0>Ulepsz swoje konto, aby kontynuować!0>"
+
+#: apps/web/src/app/(signing)/sign/[token]/rejected/page.tsx:88
+msgid "You have rejected this document"
+msgstr "Odrzuciłeś ten dokument"
+
+#: apps/web/src/components/(teams)/dialogs/leave-team-dialog.tsx:50
+msgid "You have successfully left this team."
+msgstr "Sukces! Opuszczono ten zespół."
+
+#: apps/web/src/app/(signing)/sign/[token]/complete/claim-account.tsx:80
+#: apps/web/src/components/forms/signup.tsx:95
+#: apps/web/src/components/forms/v2/signup.tsx:129
+msgid "You have successfully registered. Please verify your account by clicking on the link you received in the email."
+msgstr "Rejestracja zakończona sukcesem. Zweryfikuj swoje konto, klikając w link, który otrzymałeś w e-mailu."
+
+#: apps/web/src/components/(teams)/dialogs/delete-team-member-dialog.tsx:50
+msgid "You have successfully removed this user from the team."
+msgstr "Sukces! Usunięto tego użytkownika z zespołu."
+
+#: apps/web/src/app/(dashboard)/settings/teams/team-email-usage.tsx:38
+msgid "You have successfully revoked access."
+msgstr "Sukces! Odebrano dostęp."
+
+#: apps/web/src/app/(unauthenticated)/articles/signature-disclosure/page.tsx:104
+msgid "You have the right to withdraw your consent to use electronic signatures at any time before completing the signing process. To withdraw your consent, please contact the sender of the document. In failing to contact the sender you may reach out to <0>{SUPPORT_EMAIL}0> for assistance. Be aware that withdrawing consent may delay or halt the completion of the related transaction or service."
+msgstr "Masz prawo do wycofania zgody na korzystanie z podpisów elektronicznych w dowolnym czasie przed zakończeniem procesu podpisywania. Aby wycofać zgodę, prosimy o kontakt z nadawcą dokumentu. Jeśli nie uda Ci się skontaktować z nadawcą, możesz skontaktować się z <0>{SUPPORT_EMAIL}0> w celu uzyskania pomocy. Należy pamiętać, że wycofanie zgody może opóźnić lub zatrzymać zakończenie związanej z tym transakcji lub usługi."
+
+#: apps/web/src/components/(teams)/dialogs/update-team-member-dialog.tsx:93
+msgid "You have updated {teamMemberName}."
+msgstr "Zaktualizowałeś {teamMemberName}."
+
+#: apps/web/src/app/(unauthenticated)/team/verify/email/[token]/page.tsx:136
+msgid "You have verified your email address for <0>{0}0>."
+msgstr "Zweryfikowałeś swój adres e-mail dla <0>{0}0>."
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/billing/page.tsx:82
+msgid "You must be an admin of this team to manage billing."
+msgstr "Musisz być administratorem tego zespołu, aby zarządzać płatnościami."
+
+#: apps/web/src/components/(dashboard)/settings/token/delete-token-dialog.tsx:60
+#: apps/web/src/components/(dashboard)/settings/webhooks/delete-webhook-dialog.tsx:58
+#: apps/web/src/components/(teams)/dialogs/delete-team-dialog.tsx:54
+msgid "You must enter '{deleteMessage}' to proceed"
+msgstr "Musisz wpisać '{deleteMessage}', aby kontynuować"
+
+#: apps/web/src/components/(teams)/dialogs/transfer-team-dialog.tsx:301
+msgid "You must have at least one other team member to transfer ownership."
+msgstr "Musisz mieć przynajmniej jednego innego członka zespołu, aby przenieść własność."
+
+#: apps/web/src/app/(dashboard)/settings/public-profile/public-profile-page-view.tsx:109
+msgid "You must set a profile URL before enabling your public profile."
+msgstr "Musisz ustawić URL profilu przed włączeniem swojego publicznego profilu."
+
+#: apps/web/src/app/(signing)/sign/[token]/signing-auth-page.tsx:56
+msgid "You need to be logged in as <0>{email}0> to view this page."
+msgstr "Musisz być zalogowany jako <0>{email}0>, aby zobaczyć tę stronę."
+
+#: apps/web/src/app/(recipient)/d/[token]/signing-auth-page.tsx:45
+msgid "You need to be logged in to view this page."
+msgstr "Musisz być zalogowany, aby zobaczyć tę stronę."
+
+#: apps/web/src/app/(signing)/sign/[token]/document-action-auth-2fa.tsx:105
+msgid "You need to setup 2FA to mark this document as viewed."
+msgstr "Musisz skonfigurować 2FA, aby oznaczyć ten dokument jako przeczytany."
+
+#: apps/web/src/components/forms/v2/signup.tsx:283
+msgid "You will get notified & be able to set up your documenso public profile when we launch the feature."
+msgstr "Otrzymasz powiadomienie i będziesz mógł skonfigurować swój publiczny profil documenso, gdy uruchomimy tę funkcję."
+
+#: apps/web/src/components/forms/2fa/enable-authenticator-app-dialog.tsx:96
+msgid "You will now be required to enter a code from your authenticator app when signing in."
+msgstr "Będziesz teraz zobowiązany do wpisania kodu z aplikacji uwierzytelniającej podczas logowania."
+
+#: apps/web/src/app/(signing)/sign/[token]/complete/page.tsx:173
+msgid "You will receive an Email copy of the signed document once everyone has signed."
+msgstr "Otrzymasz kopię e-maila podpisanego dokumentu, gdy wszyscy podpiszą."
+
+#: apps/web/src/app/(dashboard)/settings/profile/delete-account-dialog.tsx:49
+msgid "Your account has been deleted successfully."
+msgstr "Twoje konto zostało pomyślnie usunięte."
+
+#: apps/web/src/components/forms/avatar-image.tsx:108
+msgid "Your avatar has been updated successfully."
+msgstr "Twój awatar został pomyślnie zaktualizowany."
+
+#: apps/web/src/app/(dashboard)/admin/site-settings/banner-form.tsx:75
+msgid "Your banner has been updated successfully."
+msgstr "Twój banner został pomyślnie zaktualizowany."
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/branding-preferences.tsx:280
+msgid "Your brand website URL"
+msgstr "Adres URL witryny Twojej marki"
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/branding-preferences.tsx:103
+msgid "Your branding preferences have been updated"
+msgstr "Preferencje dotyczące marki zostały zaktualizowane"
+
+#: apps/web/src/app/(dashboard)/settings/billing/page.tsx:125
+msgid "Your current plan is past due. Please update your payment information."
+msgstr "Twój obecny plan jest przeterminowany. Zaktualizuj swoje informacje płatnicze."
+
+#: apps/web/src/components/templates/manage-public-template-dialog.tsx:251
+msgid "Your direct signing templates"
+msgstr "Twoje bezpośrednie szablony podpisu"
+
+#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:124
+msgid "Your document failed to upload."
+msgstr "Twój dokument nie udało się załadować."
+
+#: apps/web/src/app/(dashboard)/templates/use-template-dialog.tsx:157
+msgid "Your document has been created from the template successfully."
+msgstr "Twój dokument został pomyślnie utworzony na podstawie szablonu."
+
+#: apps/web/src/app/(dashboard)/documents/_action-items/resend-document.tsx:98
+msgid "Your document has been re-sent successfully."
+msgstr "Twój dokument został pomyślnie ponownie wysłany."
+
+#: apps/web/src/app/(dashboard)/documents/[id]/edit-document.tsx:328
+msgid "Your document has been sent successfully."
+msgstr "Twój dokument został pomyślnie wysłany."
+
+#: apps/web/src/app/(dashboard)/documents/duplicate-document-dialog.tsx:59
+msgid "Your document has been successfully duplicated."
+msgstr "Twój dokument został pomyślnie zduplikowany."
+
+#: apps/web/src/app/(dashboard)/documents/upload-document.tsx:82
+msgid "Your document has been uploaded successfully."
+msgstr "Twój dokument został pomyślnie załadowany."
+
+#: apps/web/src/app/(dashboard)/templates/new-template-dialog.tsx:69
+msgid "Your document has been uploaded successfully. You will be redirected to the template page."
+msgstr "Twój dokument został pomyślnie załadowany. Zostaniesz przekierowany na stronę szablonu."
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/preferences/document-preferences.tsx:92
+msgid "Your document preferences have been updated"
+msgstr "Preferencje dokumentu zostały zaktualizowane"
+
+#: apps/web/src/components/(dashboard)/common/command-menu.tsx:223
+msgid "Your documents"
+msgstr "Twoje dokumenty"
+
+#: apps/web/src/app/(unauthenticated)/verify-email/[token]/client.tsx:40
+msgid "Your email has been successfully confirmed! You can now use all features of Documenso."
+msgstr "Twój adres e-mail został pomyślnie potwierdzony! Możesz teraz korzystać ze wszystkich funkcji Documenso."
+
+#: apps/web/src/app/(dashboard)/settings/teams/team-email-usage.tsx:62
+msgid "Your email is currently being used by team <0>{0}0> ({1})."
+msgstr "Twój adres e-mail jest aktualnie używany przez zespół <0>{0}0> ({1})."
+
+#: apps/web/src/app/(dashboard)/settings/tokens/page.tsx:47
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx:80
+msgid "Your existing tokens"
+msgstr "Twoje istniejące tokeny"
+
+#: apps/web/src/components/forms/team-document-settings.tsx:70
+#~ msgid "Your global team document settings has been updated successfully."
+#~ msgstr "Your global team document settings has been updated successfully."
+
+#: apps/web/src/components/forms/password.tsx:72
+#: apps/web/src/components/forms/reset-password.tsx:73
+msgid "Your password has been updated successfully."
+msgstr "Twoje hasło zostało pomyślnie zaktualizowane."
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/layout-billing-banner.tsx:113
+msgid "Your payment for teams is overdue. Please settle the payment to avoid any service disruptions."
+msgstr "Twoja płatność za zespoły jest przeterminowana. Proszę uregulować płatność, aby uniknąć zakłóceń w świadczeniu usług."
+
+#: apps/web/src/components/forms/profile.tsx:73
+msgid "Your profile has been updated successfully."
+msgstr "Twój profil został pomyślnie zaktualizowany."
+
+#: apps/web/src/app/(dashboard)/admin/users/[id]/page.tsx:73
+msgid "Your profile has been updated."
+msgstr "Twój profil został zaktualizowany."
+
+#: apps/web/src/components/forms/public-profile-form.tsx:81
+msgid "Your public profile has been updated."
+msgstr "Twój publiczny profil został zaktualizowany."
+
+#: apps/web/src/components/forms/2fa/recovery-code-list.tsx:27
+msgid "Your recovery code has been copied to your clipboard."
+msgstr "Twój kod odzyskiwania został skopiowany do schowka."
+
+#: apps/web/src/components/forms/2fa/enable-authenticator-app-dialog.tsx:167
+#: apps/web/src/components/forms/2fa/view-recovery-codes-dialog.tsx:91
+msgid "Your recovery codes are listed below. Please store them in a safe place."
+msgstr "Twoje kody odzyskiwania są wymienione poniżej. Proszę przechowywać je w bezpiecznym miejscu."
+
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/billing/page.tsx:62
+msgid "Your subscription is currently active."
+msgstr "Twoja subskrypcja jest aktualnie aktywna."
+
+#: apps/web/src/components/(teams)/dialogs/create-team-dialog.tsx:89
+msgid "Your team has been created."
+msgstr "Twój zespół został utworzony."
+
+#: apps/web/src/components/(teams)/dialogs/delete-team-dialog.tsx:73
+msgid "Your team has been successfully deleted."
+msgstr "Twój zespół został pomyślnie usunięty."
+
+#: apps/web/src/components/(teams)/forms/update-team-form.tsx:107
+msgid "Your team has been successfully updated."
+msgstr "Twój zespół został pomyślnie zaktualizowany."
+
+#: apps/web/src/app/(dashboard)/templates/duplicate-template-dialog.tsx:43
+msgid "Your template has been duplicated successfully."
+msgstr "Twój szablon został pomyślnie zduplikowany."
+
+#: apps/web/src/app/(dashboard)/templates/delete-template-dialog.tsx:42
+msgid "Your template has been successfully deleted."
+msgstr "Twój szablon został pomyślnie usunięty."
+
+#: apps/web/src/app/(dashboard)/templates/duplicate-template-dialog.tsx:67
+msgid "Your template will be duplicated."
+msgstr "Twój szablon zostanie zduplikowany."
+
+#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:224
+msgid "Your templates has been saved successfully."
+msgstr "Twoje szablony zostały pomyślnie zapisane."
+
+#: apps/web/src/app/(unauthenticated)/verify-email/[token]/page.tsx:89
+msgid "Your token has expired!"
+msgstr "Twój token wygasł!"
+
+#: apps/web/src/components/forms/token.tsx:277
+msgid "Your token was created successfully! Make sure to copy it because you won't be able to see it again!"
+msgstr "Twój token został pomyślnie utworzony! Upewnij się, że go skopiujesz, ponieważ nie będziesz mógł go zobaczyć ponownie!"
+
+#: apps/web/src/app/(dashboard)/settings/tokens/page.tsx:53
+#: apps/web/src/app/(teams)/t/[teamUrl]/settings/tokens/page.tsx:86
+msgid "Your tokens will be shown here once you create them."
+msgstr "Twoje tokeny będą tutaj wyświetlane po ich utworzeniu."
+
diff --git a/packages/lib/types/document-audit-logs.ts b/packages/lib/types/document-audit-logs.ts
index 336d8bb3d..5c5e8b057 100644
--- a/packages/lib/types/document-audit-logs.ts
+++ b/packages/lib/types/document-audit-logs.ts
@@ -34,6 +34,7 @@ export const ZDocumentAuditLogTypeSchema = z.enum([
'DOCUMENT_GLOBAL_AUTH_ACTION_UPDATED', // When the global action authentication is updated.
'DOCUMENT_META_UPDATED', // When the document meta data is updated.
'DOCUMENT_OPENED', // When the document is opened by a recipient.
+ 'DOCUMENT_RECIPIENT_REJECTED', // When a recipient rejects the document.
'DOCUMENT_RECIPIENT_COMPLETED', // When a recipient completes all their required tasks for the document.
'DOCUMENT_SENT', // When the document transitions from DRAFT to PENDING.
'DOCUMENT_TITLE_UPDATED', // When the document title is updated.
@@ -374,6 +375,16 @@ export const ZDocumentAuditLogEventDocumentRecipientCompleteSchema = z.object({
}),
});
+/**
+ * Event: Document recipient completed the document (the recipient has fully actioned and completed their required steps for the document).
+ */
+export const ZDocumentAuditLogEventDocumentRecipientRejectedSchema = z.object({
+ type: z.literal(DOCUMENT_AUDIT_LOG_TYPE.DOCUMENT_RECIPIENT_REJECTED),
+ data: ZBaseRecipientDataSchema.extend({
+ reason: z.string(),
+ }),
+});
+
/**
* Event: Document sent.
*/
@@ -499,6 +510,7 @@ export const ZDocumentAuditLogSchema = ZDocumentAuditLogBaseSchema.and(
ZDocumentAuditLogEventDocumentMetaUpdatedSchema,
ZDocumentAuditLogEventDocumentOpenedSchema,
ZDocumentAuditLogEventDocumentRecipientCompleteSchema,
+ ZDocumentAuditLogEventDocumentRecipientRejectedSchema,
ZDocumentAuditLogEventDocumentSentSchema,
ZDocumentAuditLogEventDocumentTitleUpdatedSchema,
ZDocumentAuditLogEventDocumentExternalIdUpdatedSchema,
diff --git a/packages/lib/types/document-email.ts b/packages/lib/types/document-email.ts
new file mode 100644
index 000000000..f7ff20f7a
--- /dev/null
+++ b/packages/lib/types/document-email.ts
@@ -0,0 +1,52 @@
+import { z } from 'zod';
+
+import type { DocumentMeta } from '@documenso/prisma/client';
+import { DocumentDistributionMethod } from '@documenso/prisma/client';
+
+export enum DocumentEmailEvents {
+ RecipientSigningRequest = 'recipientSigningRequest',
+ RecipientRemoved = 'recipientRemoved',
+ DocumentPending = 'documentPending',
+ DocumentCompleted = 'documentCompleted',
+ DocumentDeleted = 'documentDeleted',
+}
+
+export const ZDocumentEmailSettingsSchema = z
+ .object({
+ recipientSigningRequest: z.boolean().default(true),
+ recipientRemoved: z.boolean().default(true),
+ documentPending: z.boolean().default(true),
+ documentCompleted: z.boolean().default(true),
+ documentDeleted: z.boolean().default(true),
+ })
+ .strip()
+ .catch(() => ({
+ recipientSigningRequest: true,
+ recipientRemoved: true,
+ documentPending: true,
+ documentCompleted: true,
+ documentDeleted: true,
+ }));
+
+export type TDocumentEmailSettings = z.infer;
+
+export const extractDerivedDocumentEmailSettings = (
+ documentMeta?: DocumentMeta | null,
+): TDocumentEmailSettings => {
+ const emailSettings = ZDocumentEmailSettingsSchema.parse(documentMeta?.emailSettings ?? {});
+
+ if (
+ !documentMeta?.distributionMethod ||
+ documentMeta?.distributionMethod === DocumentDistributionMethod.EMAIL
+ ) {
+ return emailSettings;
+ }
+
+ return {
+ recipientSigningRequest: false,
+ recipientRemoved: false,
+ documentPending: false,
+ documentCompleted: false,
+ documentDeleted: false,
+ };
+};
diff --git a/packages/lib/utils/document-audit-logs.ts b/packages/lib/utils/document-audit-logs.ts
index 1bd1ba872..b3687a8aa 100644
--- a/packages/lib/utils/document-audit-logs.ts
+++ b/packages/lib/utils/document-audit-logs.ts
@@ -1,14 +1,10 @@
+import type { I18n } from '@lingui/core';
+import { msg } from '@lingui/macro';
import { match } from 'ts-pattern';
-import type {
- DocumentAuditLog,
- DocumentMeta,
- Field,
- Recipient,
- RecipientRole,
-} from '@documenso/prisma/client';
+import type { DocumentAuditLog, DocumentMeta, Field, Recipient } from '@documenso/prisma/client';
+import { RecipientRole } from '@documenso/prisma/client';
-import { RECIPIENT_ROLES_DESCRIPTION_ENG } from '../constants/recipient-roles';
import type {
TDocumentAuditLog,
TDocumentAuditLogDocumentMetaDiffSchema,
@@ -254,133 +250,133 @@ export const diffDocumentMetaChanges = (
*
* Provide a userId to prefix the action with the user, example 'X did Y'.
*/
-export const formatDocumentAuditLogActionString = (
+export const formatDocumentAuditLogAction = (
+ _: I18n['_'],
auditLog: TDocumentAuditLog,
userId?: number,
) => {
- const { prefix, description } = formatDocumentAuditLogAction(auditLog, userId);
-
- return prefix ? `${prefix} ${description}` : description;
-};
-
-/**
- * Formats the audit log into a description of the action.
- *
- * Provide a userId to prefix the action with the user, example 'X did Y'.
- */
-// Todo: Translations.
-export const formatDocumentAuditLogAction = (auditLog: TDocumentAuditLog, userId?: number) => {
- let prefix = userId === auditLog.userId ? 'You' : auditLog.name || auditLog.email || '';
+ const prefix = userId === auditLog.userId ? _(msg`You`) : auditLog.name || auditLog.email || '';
const description = match(auditLog)
.with({ type: DOCUMENT_AUDIT_LOG_TYPE.FIELD_CREATED }, () => ({
- anonymous: 'A field was added',
- identified: 'added a field',
+ anonymous: msg`A field was added`,
+ identified: msg`${prefix} added a field`,
}))
.with({ type: DOCUMENT_AUDIT_LOG_TYPE.FIELD_DELETED }, () => ({
- anonymous: 'A field was removed',
- identified: 'removed a field',
+ anonymous: msg`A field was removed`,
+ identified: msg`${prefix} removed a field`,
}))
.with({ type: DOCUMENT_AUDIT_LOG_TYPE.FIELD_UPDATED }, () => ({
- anonymous: 'A field was updated',
- identified: 'updated a field',
+ anonymous: msg`A field was updated`,
+ identified: msg`${prefix} updated a field`,
}))
.with({ type: DOCUMENT_AUDIT_LOG_TYPE.RECIPIENT_CREATED }, () => ({
- anonymous: 'A recipient was added',
- identified: 'added a recipient',
+ anonymous: msg`A recipient was added`,
+ identified: msg`${prefix} added a recipient`,
}))
.with({ type: DOCUMENT_AUDIT_LOG_TYPE.RECIPIENT_DELETED }, () => ({
- anonymous: 'A recipient was removed',
- identified: 'removed a recipient',
+ anonymous: msg`A recipient was removed`,
+ identified: msg`${prefix} removed a recipient`,
}))
.with({ type: DOCUMENT_AUDIT_LOG_TYPE.RECIPIENT_UPDATED }, () => ({
- anonymous: 'A recipient was updated',
- identified: 'updated a recipient',
+ anonymous: msg`A recipient was updated`,
+ identified: msg`${prefix} updated a recipient`,
}))
.with({ type: DOCUMENT_AUDIT_LOG_TYPE.DOCUMENT_CREATED }, () => ({
- anonymous: 'Document created',
- identified: 'created the document',
+ anonymous: msg`Document created`,
+ identified: msg`${prefix} created the document`,
}))
.with({ type: DOCUMENT_AUDIT_LOG_TYPE.DOCUMENT_DELETED }, () => ({
- anonymous: 'Document deleted',
- identified: 'deleted the document',
+ anonymous: msg`Document deleted`,
+ identified: msg`${prefix} deleted the document`,
}))
.with({ type: DOCUMENT_AUDIT_LOG_TYPE.DOCUMENT_RESTORED }, () => ({
anonymous: 'Document restored',
identified: 'restored the document',
}))
.with({ type: DOCUMENT_AUDIT_LOG_TYPE.DOCUMENT_FIELD_INSERTED }, () => ({
- anonymous: 'Field signed',
- identified: 'signed a field',
+ anonymous: msg`Field signed`,
+ identified: msg`${prefix} signed a field`,
}))
.with({ type: DOCUMENT_AUDIT_LOG_TYPE.DOCUMENT_FIELD_UNINSERTED }, () => ({
- anonymous: 'Field unsigned',
- identified: 'unsigned a field',
+ anonymous: msg`Field unsigned`,
+ identified: msg`${prefix} unsigned a field`,
}))
.with({ type: DOCUMENT_AUDIT_LOG_TYPE.DOCUMENT_VISIBILITY_UPDATED }, () => ({
- anonymous: 'Document visibility updated',
- identified: 'updated the document visibility',
+ anonymous: msg`Document visibility updated`,
+ identified: msg`${prefix} updated the document visibility`,
}))
.with({ type: DOCUMENT_AUDIT_LOG_TYPE.DOCUMENT_GLOBAL_AUTH_ACCESS_UPDATED }, () => ({
- anonymous: 'Document access auth updated',
- identified: 'updated the document access auth requirements',
+ anonymous: msg`Document access auth updated`,
+ identified: msg`${prefix} updated the document access auth requirements`,
}))
.with({ type: DOCUMENT_AUDIT_LOG_TYPE.DOCUMENT_GLOBAL_AUTH_ACTION_UPDATED }, () => ({
- anonymous: 'Document signing auth updated',
- identified: 'updated the document signing auth requirements',
+ anonymous: msg`Document signing auth updated`,
+ identified: msg`${prefix} updated the document signing auth requirements`,
}))
.with({ type: DOCUMENT_AUDIT_LOG_TYPE.DOCUMENT_META_UPDATED }, () => ({
- anonymous: 'Document updated',
- identified: 'updated the document',
+ anonymous: msg`Document updated`,
+ identified: msg`${prefix} updated the document`,
}))
.with({ type: DOCUMENT_AUDIT_LOG_TYPE.DOCUMENT_OPENED }, () => ({
- anonymous: 'Document opened',
- identified: 'opened the document',
+ anonymous: msg`Document opened`,
+ identified: msg`${prefix} opened the document`,
}))
.with({ type: DOCUMENT_AUDIT_LOG_TYPE.DOCUMENT_TITLE_UPDATED }, () => ({
- anonymous: 'Document title updated',
- identified: 'updated the document title',
+ anonymous: msg`Document title updated`,
+ identified: msg`${prefix} updated the document title`,
}))
.with({ type: DOCUMENT_AUDIT_LOG_TYPE.DOCUMENT_EXTERNAL_ID_UPDATED }, () => ({
- anonymous: 'Document external ID updated',
- identified: 'updated the document external ID',
+ anonymous: msg`Document external ID updated`,
+ identified: msg`${prefix} updated the document external ID`,
}))
.with({ type: DOCUMENT_AUDIT_LOG_TYPE.DOCUMENT_SENT }, () => ({
- anonymous: 'Document sent',
- identified: 'sent the document',
+ anonymous: msg`Document sent`,
+ identified: msg`${prefix} sent the document`,
}))
.with({ type: DOCUMENT_AUDIT_LOG_TYPE.DOCUMENT_MOVED_TO_TEAM }, () => ({
- anonymous: 'Document moved to team',
- identified: 'moved the document to team',
+ anonymous: msg`Document moved to team`,
+ identified: msg`${prefix} moved the document to team`,
}))
.with({ type: DOCUMENT_AUDIT_LOG_TYPE.DOCUMENT_RECIPIENT_COMPLETED }, ({ data }) => {
- // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
- const action = RECIPIENT_ROLES_DESCRIPTION_ENG[data.recipientRole as RecipientRole]?.actioned;
+ const userName = prefix || _(msg`Recipient`);
- const value = action ? `${action.toLowerCase()} the document` : 'completed their task';
+ const result = match(data.recipientRole)
+ .with(RecipientRole.SIGNER, () => msg`${userName} signed the document`)
+ .with(RecipientRole.VIEWER, () => msg`${userName} viewed the document`)
+ .with(RecipientRole.APPROVER, () => msg`${userName} approved the document`)
+ .with(RecipientRole.CC, () => msg`${userName} CC'd the document`)
+ .otherwise(() => msg`${userName} completed their task`);
return {
- anonymous: `Recipient ${value}`,
- identified: value,
+ anonymous: result,
+ identified: result,
+ };
+ })
+ .with({ type: DOCUMENT_AUDIT_LOG_TYPE.DOCUMENT_RECIPIENT_REJECTED }, ({ data }) => {
+ const userName = prefix || _(msg`Recipient`);
+
+ const result = msg`${userName} rejected the document`;
+
+ return {
+ anonymous: result,
+ identified: result,
};
})
.with({ type: DOCUMENT_AUDIT_LOG_TYPE.EMAIL_SENT }, ({ data }) => ({
- anonymous: `Email ${data.isResending ? 'resent' : 'sent'}`,
- identified: `${data.isResending ? 'resent' : 'sent'} an email to ${data.recipientEmail}`,
+ anonymous: data.isResending ? msg`Email resent` : msg`Email sent`,
+ identified: data.isResending
+ ? msg`${prefix} resent an email to ${data.recipientEmail}`
+ : msg`${prefix} sent an email to ${data.recipientEmail}`,
+ }))
+ .with({ type: DOCUMENT_AUDIT_LOG_TYPE.DOCUMENT_COMPLETED }, () => ({
+ anonymous: msg`Document completed`,
+ identified: msg`Document completed`,
}))
- .with({ type: DOCUMENT_AUDIT_LOG_TYPE.DOCUMENT_COMPLETED }, () => {
- // Clear the prefix since this should be considered an 'anonymous' event.
- prefix = '';
-
- return {
- anonymous: 'Document completed',
- identified: 'Document completed',
- };
- })
.exhaustive();
return {
prefix,
- description: prefix ? description.identified : description.anonymous,
+ description: _(prefix ? description.identified : description.anonymous),
};
};
diff --git a/packages/lib/utils/i18n.ts b/packages/lib/utils/i18n.ts
index 7c4f494a4..d568f1df0 100644
--- a/packages/lib/utils/i18n.ts
+++ b/packages/lib/utils/i18n.ts
@@ -1,6 +1,6 @@
import type { ReadonlyRequestCookies } from 'next/dist/server/web/spec-extension/adapters/request-cookies';
-import type { I18n } from '@lingui/core';
+import type { I18n, MessageDescriptor } from '@lingui/core';
import { IS_APP_WEB, IS_APP_WEB_I18N_ENABLED } from '../constants/app';
import type { I18nLocaleData, SupportedLanguageCodes } from '../constants/i18n';
@@ -10,7 +10,17 @@ export async function dynamicActivate(i18nInstance: I18n, locale: string) {
const extension = process.env.NODE_ENV === 'development' ? 'po' : 'js';
const context = IS_APP_WEB ? 'web' : 'marketing';
- const { messages } = await import(`../translations/${locale}/${context}.${extension}`);
+ let { messages } = await import(`../translations/${locale}/${context}.${extension}`);
+
+ // Dirty way to load common messages for development since it's not compiled.
+ if (process.env.NODE_ENV === 'development') {
+ const commonMessages = await import(`../translations/${locale}/common.${extension}`);
+
+ messages = {
+ ...messages,
+ ...commonMessages.messages,
+ };
+ }
i18nInstance.loadAndActivate({ locale, messages });
}
@@ -106,3 +116,7 @@ export const extractLocaleData = ({
locales,
};
};
+
+export const parseMessageDescriptor = (_: I18n['_'], value: string | MessageDescriptor) => {
+ return typeof value === 'string' ? value : _(value);
+};
diff --git a/packages/lib/utils/is-valid-redirect-url.ts b/packages/lib/utils/is-valid-redirect-url.ts
index e89818ac2..de827f69c 100644
--- a/packages/lib/utils/is-valid-redirect-url.ts
+++ b/packages/lib/utils/is-valid-redirect-url.ts
@@ -4,7 +4,6 @@ export const isValidRedirectUrl = (value: string) => {
try {
const url = new URL(value);
- console.log({ protocol: url.protocol });
if (!ALLOWED_PROTOCOLS.includes(url.protocol.slice(0, -1).toLowerCase())) {
return false;
}
diff --git a/packages/lib/utils/recipients.ts b/packages/lib/utils/recipients.ts
index 22afa451d..eab5f963c 100644
--- a/packages/lib/utils/recipients.ts
+++ b/packages/lib/utils/recipients.ts
@@ -1,5 +1,9 @@
import { type Field, type Recipient, RecipientRole, SigningStatus } from '@documenso/prisma/client';
+import { NEXT_PUBLIC_WEBAPP_URL } from '../constants/app';
+
+export const formatSigningLink = (token: string) => `${NEXT_PUBLIC_WEBAPP_URL()}/sign/${token}`;
+
/**
* Whether a recipient can be modified by the document owner.
*/
diff --git a/packages/lib/utils/remember.ts b/packages/lib/utils/remember.ts
new file mode 100644
index 000000000..1ee146dd1
--- /dev/null
+++ b/packages/lib/utils/remember.ts
@@ -0,0 +1,18 @@
+declare global {
+ // eslint-disable-next-line no-var, @typescript-eslint/no-explicit-any
+ var __documenso_util_remember: Map;
+}
+
+export function remember(name: string, getValue: () => T): T {
+ const thusly = globalThis;
+
+ if (!thusly.__documenso_util_remember) {
+ thusly.__documenso_util_remember = new Map();
+ }
+
+ if (!thusly.__documenso_util_remember.has(name)) {
+ thusly.__documenso_util_remember.set(name, getValue());
+ }
+
+ return thusly.__documenso_util_remember.get(name);
+}
diff --git a/packages/lib/utils/render-email-with-i18n.tsx b/packages/lib/utils/render-email-with-i18n.tsx
new file mode 100644
index 000000000..1100e988d
--- /dev/null
+++ b/packages/lib/utils/render-email-with-i18n.tsx
@@ -0,0 +1,34 @@
+import { I18nProvider } from '@lingui/react';
+
+import type { RenderOptions } from '@documenso/email/render';
+import { render } from '@documenso/email/render';
+
+import { getI18nInstance } from '../client-only/providers/i18n.server';
+import {
+ APP_I18N_OPTIONS,
+ type SupportedLanguageCodes,
+ isValidLanguageCode,
+} from '../constants/i18n';
+
+export const renderEmailWithI18N = async (
+ component: React.ReactElement,
+ options?: RenderOptions & {
+ // eslint-disable-next-line @typescript-eslint/ban-types
+ lang?: SupportedLanguageCodes | (string & {});
+ },
+) => {
+ try {
+ const { lang: providedLang, ...otherOptions } = options ?? {};
+
+ const lang = isValidLanguageCode(providedLang) ? providedLang : APP_I18N_OPTIONS.sourceLang;
+
+ const i18n = await getI18nInstance(lang);
+
+ i18n.activate(lang);
+
+ return render({component} , otherOptions);
+ } catch (err) {
+ console.error(err);
+ throw new Error('Failed to render email');
+ }
+};
diff --git a/packages/lib/utils/team-global-settings-to-branding.ts b/packages/lib/utils/team-global-settings-to-branding.ts
new file mode 100644
index 000000000..48795f518
--- /dev/null
+++ b/packages/lib/utils/team-global-settings-to-branding.ts
@@ -0,0 +1,13 @@
+import type { TeamGlobalSettings } from '@documenso/prisma/client';
+
+import { NEXT_PUBLIC_WEBAPP_URL } from '../constants/app';
+
+export const teamGlobalSettingsToBranding = (teamGlobalSettings: TeamGlobalSettings) => {
+ return {
+ ...teamGlobalSettings,
+ brandingLogo:
+ teamGlobalSettings.brandingEnabled && teamGlobalSettings.brandingLogo
+ ? `${NEXT_PUBLIC_WEBAPP_URL()}/api/branding/logo/team/${teamGlobalSettings.teamId}`
+ : '',
+ };
+};
diff --git a/packages/prisma/migrations/20240920084713_add_typed_signature_option/migration.sql b/packages/prisma/migrations/20240920084713_add_typed_signature_option/migration.sql
new file mode 100644
index 000000000..5029cede0
--- /dev/null
+++ b/packages/prisma/migrations/20240920084713_add_typed_signature_option/migration.sql
@@ -0,0 +1,2 @@
+-- AlterTable
+ALTER TABLE "DocumentMeta" ADD COLUMN "enabledTypedSignature" BOOLEAN NOT NULL DEFAULT false;
diff --git a/packages/prisma/migrations/20241017035042_rename_typed_signature_option/migration.sql b/packages/prisma/migrations/20241017035042_rename_typed_signature_option/migration.sql
new file mode 100644
index 000000000..f1ac19bbc
--- /dev/null
+++ b/packages/prisma/migrations/20241017035042_rename_typed_signature_option/migration.sql
@@ -0,0 +1,9 @@
+/*
+ Warnings:
+
+ - You are about to drop the column `enabledTypedSignature` on the `DocumentMeta` table. All the data in the column will be lost.
+
+*/
+-- AlterTable
+ALTER TABLE "DocumentMeta" DROP COLUMN "enabledTypedSignature",
+ADD COLUMN "typedSignatureEnabled" BOOLEAN NOT NULL DEFAULT false;
diff --git a/packages/prisma/migrations/20241021133616_add_global_team_settings/migration.sql b/packages/prisma/migrations/20241021133616_add_global_team_settings/migration.sql
new file mode 100644
index 000000000..9dec89afd
--- /dev/null
+++ b/packages/prisma/migrations/20241021133616_add_global_team_settings/migration.sql
@@ -0,0 +1,12 @@
+-- CreateTable
+CREATE TABLE "TeamGlobalSettings" (
+ "teamId" INTEGER NOT NULL,
+ "documentVisibility" "DocumentVisibility" NOT NULL DEFAULT 'EVERYONE',
+ "includeSenderDetails" BOOLEAN NOT NULL DEFAULT true
+);
+
+-- CreateIndex
+CREATE UNIQUE INDEX "TeamGlobalSettings_teamId_key" ON "TeamGlobalSettings"("teamId");
+
+-- AddForeignKey
+ALTER TABLE "TeamGlobalSettings" ADD CONSTRAINT "TeamGlobalSettings_teamId_fkey" FOREIGN KEY ("teamId") REFERENCES "Team"("id") ON DELETE CASCADE ON UPDATE CASCADE;
diff --git a/packages/prisma/migrations/20241101103425_add_language_column_for_documents_and_templates/migration.sql b/packages/prisma/migrations/20241101103425_add_language_column_for_documents_and_templates/migration.sql
new file mode 100644
index 000000000..5a4dde1d8
--- /dev/null
+++ b/packages/prisma/migrations/20241101103425_add_language_column_for_documents_and_templates/migration.sql
@@ -0,0 +1,5 @@
+-- AlterTable
+ALTER TABLE "DocumentMeta" ADD COLUMN "language" TEXT NOT NULL DEFAULT 'en';
+
+-- AlterTable
+ALTER TABLE "TemplateMeta" ADD COLUMN "language" TEXT NOT NULL DEFAULT 'en';
diff --git a/packages/prisma/migrations/20241107034521_add_branding_to_team_settings/migration.sql b/packages/prisma/migrations/20241107034521_add_branding_to_team_settings/migration.sql
new file mode 100644
index 000000000..87618badd
--- /dev/null
+++ b/packages/prisma/migrations/20241107034521_add_branding_to_team_settings/migration.sql
@@ -0,0 +1,6 @@
+-- AlterTable
+ALTER TABLE "TeamGlobalSettings" ADD COLUMN "brandingCompanyDetails" TEXT NOT NULL DEFAULT '',
+ADD COLUMN "brandingEnabled" BOOLEAN NOT NULL DEFAULT false,
+ADD COLUMN "brandingHidePoweredBy" BOOLEAN NOT NULL DEFAULT false,
+ADD COLUMN "brandingLogo" TEXT NOT NULL DEFAULT '',
+ADD COLUMN "brandingUrl" TEXT NOT NULL DEFAULT '';
diff --git a/packages/prisma/migrations/20241107095908_add_document_email_setting/migration.sql b/packages/prisma/migrations/20241107095908_add_document_email_setting/migration.sql
new file mode 100644
index 000000000..e5a40adf0
--- /dev/null
+++ b/packages/prisma/migrations/20241107095908_add_document_email_setting/migration.sql
@@ -0,0 +1,10 @@
+-- CreateEnum
+CREATE TYPE "DocumentDistributionMethod" AS ENUM ('EMAIL', 'NONE');
+
+-- AlterTable
+ALTER TABLE "DocumentMeta" ADD COLUMN "distributionMethod" "DocumentDistributionMethod" NOT NULL DEFAULT 'EMAIL',
+ADD COLUMN "emailSettings" JSONB;
+
+-- AlterTable
+ALTER TABLE "TemplateMeta" ADD COLUMN "distributionMethod" "DocumentDistributionMethod" NOT NULL DEFAULT 'EMAIL',
+ADD COLUMN "emailSettings" JSONB;
diff --git a/packages/prisma/migrations/20241107223943_add_document_language_preference/migration.sql b/packages/prisma/migrations/20241107223943_add_document_language_preference/migration.sql
new file mode 100644
index 000000000..e99ae9a27
--- /dev/null
+++ b/packages/prisma/migrations/20241107223943_add_document_language_preference/migration.sql
@@ -0,0 +1,2 @@
+-- AlterTable
+ALTER TABLE "TeamGlobalSettings" ADD COLUMN "documentLanguage" TEXT NOT NULL DEFAULT 'en';
diff --git a/packages/prisma/migrations/20241112223435_add_rejection_status_and_reason_to_recipient_schema/migration.sql b/packages/prisma/migrations/20241112223435_add_rejection_status_and_reason_to_recipient_schema/migration.sql
new file mode 100644
index 000000000..1e883f964
--- /dev/null
+++ b/packages/prisma/migrations/20241112223435_add_rejection_status_and_reason_to_recipient_schema/migration.sql
@@ -0,0 +1,5 @@
+-- AlterEnum
+ALTER TYPE "SigningStatus" ADD VALUE 'REJECTED';
+
+-- AlterTable
+ALTER TABLE "Recipient" ADD COLUMN "rejectionReason" TEXT;
diff --git a/packages/prisma/schema.prisma b/packages/prisma/schema.prisma
index a2030dfc0..1fee5eae9 100644
--- a/packages/prisma/schema.prisma
+++ b/packages/prisma/schema.prisma
@@ -358,17 +358,26 @@ model DocumentData {
Template Template?
}
+enum DocumentDistributionMethod {
+ EMAIL
+ NONE
+}
+
model DocumentMeta {
- id String @id @default(cuid())
- subject String?
- message String?
- timezone String? @default("Etc/UTC") @db.Text
- password String?
- dateFormat String? @default("yyyy-MM-dd hh:mm a") @db.Text
- documentId Int @unique
- document Document @relation(fields: [documentId], references: [id], onDelete: Cascade)
- redirectUrl String?
- signingOrder DocumentSigningOrder @default(PARALLEL)
+ id String @id @default(cuid())
+ subject String?
+ message String?
+ timezone String? @default("Etc/UTC") @db.Text
+ password String?
+ dateFormat String? @default("yyyy-MM-dd hh:mm a") @db.Text
+ documentId Int @unique
+ document Document @relation(fields: [documentId], references: [id], onDelete: Cascade)
+ redirectUrl String?
+ signingOrder DocumentSigningOrder @default(PARALLEL)
+ typedSignatureEnabled Boolean @default(false)
+ language String @default("en")
+ distributionMethod DocumentDistributionMethod @default(EMAIL)
+ emailSettings Json?
}
enum ReadStatus {
@@ -384,6 +393,7 @@ enum SendStatus {
enum SigningStatus {
NOT_SIGNED
SIGNED
+ REJECTED
}
enum RecipientRole {
@@ -405,6 +415,7 @@ model Recipient {
signedAt DateTime?
authOptions Json?
signingOrder Int?
+ rejectionReason String?
role RecipientRole @default(SIGNER)
readStatus ReadStatus @default(NOT_OPENED)
signingStatus SigningStatus @default(NOT_SIGNED)
@@ -499,6 +510,21 @@ enum TeamMemberInviteStatus {
DECLINED
}
+model TeamGlobalSettings {
+ teamId Int @unique
+ documentVisibility DocumentVisibility @default(EVERYONE)
+ documentLanguage String @default("en")
+ includeSenderDetails Boolean @default(true)
+
+ brandingEnabled Boolean @default(false)
+ brandingLogo String @default("")
+ brandingUrl String @default("")
+ brandingCompanyDetails String @default("")
+ brandingHidePoweredBy Boolean @default(false)
+
+ team Team @relation(fields: [teamId], references: [id], onDelete: Cascade)
+}
+
model Team {
id Int @id @default(autoincrement())
name String
@@ -513,6 +539,7 @@ model Team {
teamEmail TeamEmail?
emailVerification TeamEmailVerification?
transferVerification TeamTransferVerification?
+ teamGlobalSettings TeamGlobalSettings?
avatarImage AvatarImage? @relation(fields: [avatarImageId], references: [id], onDelete: SetNull)
profile TeamProfile?
@@ -601,16 +628,19 @@ enum TemplateType {
}
model TemplateMeta {
- id String @id @default(cuid())
- subject String?
- message String?
- timezone String? @default("Etc/UTC") @db.Text
- password String?
- dateFormat String? @default("yyyy-MM-dd hh:mm a") @db.Text
- signingOrder DocumentSigningOrder? @default(PARALLEL)
- templateId Int @unique
- template Template @relation(fields: [templateId], references: [id], onDelete: Cascade)
- redirectUrl String?
+ id String @id @default(cuid())
+ subject String?
+ message String?
+ timezone String? @default("Etc/UTC") @db.Text
+ password String?
+ dateFormat String? @default("yyyy-MM-dd hh:mm a") @db.Text
+ signingOrder DocumentSigningOrder? @default(PARALLEL)
+ templateId Int @unique
+ template Template @relation(fields: [templateId], references: [id], onDelete: Cascade)
+ redirectUrl String?
+ language String @default("en")
+ distributionMethod DocumentDistributionMethod @default(EMAIL)
+ emailSettings Json?
}
model Template {
diff --git a/packages/prisma/seed/teams.ts b/packages/prisma/seed/teams.ts
index 28e1eb390..bbcbb51ad 100644
--- a/packages/prisma/seed/teams.ts
+++ b/packages/prisma/seed/teams.ts
@@ -42,7 +42,7 @@ export const seedTeam = async ({
createMany: {
data: [teamOwner, ...teamMembers].map((user) => ({
userId: user.id,
- role: TeamMemberRole.ADMIN,
+ role: user === teamOwner ? TeamMemberRole.ADMIN : TeamMemberRole.MEMBER,
})),
},
},
diff --git a/packages/tailwind-config/index.cjs b/packages/tailwind-config/index.cjs
index c2c510e84..067034a8b 100644
--- a/packages/tailwind-config/index.cjs
+++ b/packages/tailwind-config/index.cjs
@@ -139,5 +139,9 @@ module.exports = {
},
},
},
- plugins: [require('tailwindcss-animate'), require('@tailwindcss/typography')],
+ plugins: [
+ require('tailwindcss-animate'),
+ require('@tailwindcss/typography'),
+ require('@tailwindcss/container-queries'),
+ ],
};
diff --git a/packages/tailwind-config/package.json b/packages/tailwind-config/package.json
index d6827955f..e062b0df5 100644
--- a/packages/tailwind-config/package.json
+++ b/packages/tailwind-config/package.json
@@ -7,15 +7,15 @@
"clean": "rimraf node_modules"
},
"dependencies": {
+ "@tailwindcss/container-queries": "^0.1.1",
+ "@tailwindcss/typography": "^0.5.9",
"autoprefixer": "^10.4.13",
"postcss": "^8.4.32",
"tailwindcss": "3.3.2",
"tailwindcss-animate": "^1.0.5"
},
- "devDependencies": {
- "@tailwindcss/typography": "^0.5.9"
- },
+ "devDependencies": {},
"publishConfig": {
"access": "public"
}
-}
+}
\ No newline at end of file
diff --git a/packages/trpc/server/document-router/router.ts b/packages/trpc/server/document-router/router.ts
index 7ab71d52d..aa839ea6a 100644
--- a/packages/trpc/server/document-router/router.ts
+++ b/packages/trpc/server/document-router/router.ts
@@ -11,6 +11,7 @@ import { createDocument } from '@documenso/lib/server-only/document/create-docum
import { deleteDocument } from '@documenso/lib/server-only/document/delete-document';
import { duplicateDocumentById } from '@documenso/lib/server-only/document/duplicate-document-by-id';
import { findDocumentAuditLogs } from '@documenso/lib/server-only/document/find-document-audit-logs';
+import { findDocuments } from '@documenso/lib/server-only/document/find-documents';
import { getDocumentById } from '@documenso/lib/server-only/document/get-document-by-id';
import { getDocumentAndSenderByToken } from '@documenso/lib/server-only/document/get-document-by-token';
import { getDocumentWithDetailsById } from '@documenso/lib/server-only/document/get-document-with-details-by-id';
@@ -32,6 +33,7 @@ import {
ZDownloadAuditLogsMutationSchema,
ZDownloadCertificateMutationSchema,
ZFindDocumentAuditLogsQuerySchema,
+ ZFindDocumentsQuerySchema,
ZGetDocumentByIdQuerySchema,
ZGetDocumentByTokenQuerySchema,
ZGetDocumentWithDetailsByIdQuerySchema,
@@ -44,6 +46,7 @@ import {
ZSetSettingsForDocumentMutationSchema,
ZSetSigningOrderForDocumentMutationSchema,
ZSetTitleForDocumentMutationSchema,
+ ZUpdateTypedSignatureSettingsMutationSchema,
} from './schema';
export const documentRouter = router({
@@ -191,6 +194,37 @@ export const documentRouter = router({
}
}),
+ findDocuments: authenticatedProcedure
+ .input(ZFindDocumentsQuerySchema)
+ .query(async ({ input, ctx }) => {
+ const { user } = ctx;
+
+ const { search, teamId, templateId, page, perPage, orderBy, source, status } = input;
+
+ try {
+ const documents = await findDocuments({
+ userId: user.id,
+ teamId,
+ templateId,
+ search,
+ source,
+ status,
+ page,
+ perPage,
+ orderBy,
+ });
+
+ return documents;
+ } catch (err) {
+ console.error(err);
+
+ throw new TRPCError({
+ code: 'BAD_REQUEST',
+ message: 'We are unable to search for documents. Please try again later.',
+ });
+ }
+ }),
+
restoreDocument: authenticatedProcedure
.input(ZRestoreDocumentMutationSchema)
.mutation(async ({ input, ctx }) => {
@@ -259,6 +293,7 @@ export const documentRouter = router({
dateFormat: meta.dateFormat,
timezone: meta.timezone,
redirectUrl: meta.redirectUrl,
+ language: meta.language,
userId: ctx.user.id,
requestMetadata,
});
@@ -360,13 +395,61 @@ export const documentRouter = router({
}
}),
+ updateTypedSignatureSettings: authenticatedProcedure
+ .input(ZUpdateTypedSignatureSettingsMutationSchema)
+ .mutation(async ({ input, ctx }) => {
+ try {
+ const { documentId, teamId, typedSignatureEnabled } = input;
+
+ const document = await getDocumentById({
+ id: documentId,
+ teamId,
+ userId: ctx.user.id,
+ }).catch(() => null);
+
+ if (!document) {
+ throw new TRPCError({
+ code: 'NOT_FOUND',
+ message: 'Document not found',
+ });
+ }
+
+ return await upsertDocumentMeta({
+ documentId,
+ typedSignatureEnabled,
+ userId: ctx.user.id,
+ requestMetadata: extractNextApiRequestMetadata(ctx.req),
+ });
+ } catch (err) {
+ console.error(err);
+
+ if (err instanceof TRPCError) {
+ throw err;
+ }
+
+ throw new TRPCError({
+ code: 'BAD_REQUEST',
+ message:
+ 'We were unable to update the settings for this document. Please try again later.',
+ });
+ }
+ }),
+
sendDocument: authenticatedProcedure
.input(ZSendDocumentMutationSchema)
.mutation(async ({ input, ctx }) => {
try {
const { documentId, teamId, meta } = input;
- if (meta.message || meta.subject || meta.timezone || meta.dateFormat || meta.redirectUrl) {
+ if (
+ meta.message ||
+ meta.subject ||
+ meta.timezone ||
+ meta.dateFormat ||
+ meta.redirectUrl ||
+ meta.distributionMethod ||
+ meta.emailSettings
+ ) {
await upsertDocumentMeta({
documentId,
subject: meta.subject,
@@ -374,7 +457,9 @@ export const documentRouter = router({
dateFormat: meta.dateFormat,
timezone: meta.timezone,
redirectUrl: meta.redirectUrl,
+ distributionMethod: meta.distributionMethod,
userId: ctx.user.id,
+ emailSettings: meta.emailSettings,
requestMetadata: extractNextApiRequestMetadata(ctx.req),
});
}
diff --git a/packages/trpc/server/document-router/schema.ts b/packages/trpc/server/document-router/schema.ts
index 37ccf5881..bc1a9221c 100644
--- a/packages/trpc/server/document-router/schema.ts
+++ b/packages/trpc/server/document-router/schema.ts
@@ -1,12 +1,39 @@
import { z } from 'zod';
+import { SUPPORTED_LANGUAGE_CODES } from '@documenso/lib/constants/i18n';
import {
ZDocumentAccessAuthTypesSchema,
ZDocumentActionAuthTypesSchema,
} from '@documenso/lib/types/document-auth';
+import { ZDocumentEmailSettingsSchema } from '@documenso/lib/types/document-email';
import { ZBaseTableSearchParamsSchema } from '@documenso/lib/types/search-params';
import { isValidRedirectUrl } from '@documenso/lib/utils/is-valid-redirect-url';
-import { DocumentSigningOrder, FieldType, RecipientRole } from '@documenso/prisma/client';
+import {
+ DocumentDistributionMethod,
+ DocumentSigningOrder,
+ DocumentSource,
+ DocumentStatus,
+ DocumentVisibility,
+ FieldType,
+ RecipientRole,
+} from '@documenso/prisma/client';
+
+export const ZFindDocumentsQuerySchema = ZBaseTableSearchParamsSchema.extend({
+ teamId: z.number().min(1).optional(),
+ templateId: z.number().min(1).optional(),
+ search: z
+ .string()
+ .optional()
+ .catch(() => undefined),
+ source: z.nativeEnum(DocumentSource).optional(),
+ status: z.nativeEnum(DocumentStatus).optional(),
+ orderBy: z
+ .object({
+ column: z.enum(['createdAt']),
+ direction: z.enum(['asc', 'desc']),
+ })
+ .optional(),
+}).omit({ query: true });
export const ZFindDocumentAuditLogsQuerySchema = ZBaseTableSearchParamsSchema.extend({
documentId: z.number().min(1),
@@ -56,7 +83,7 @@ export const ZSetSettingsForDocumentMutationSchema = z.object({
data: z.object({
title: z.string().min(1).optional(),
externalId: z.string().nullish(),
- visibility: z.string().optional(),
+ visibility: z.nativeEnum(DocumentVisibility).optional(),
globalAccessAuth: ZDocumentAccessAuthTypesSchema.nullable().optional(),
globalActionAuth: ZDocumentActionAuthTypesSchema.nullable().optional(),
}),
@@ -70,6 +97,7 @@ export const ZSetSettingsForDocumentMutationSchema = z.object({
message:
'Please enter a valid URL, make sure you include http:// or https:// part of the url.',
}),
+ language: z.enum(SUPPORTED_LANGUAGE_CODES).optional(),
}),
});
@@ -130,6 +158,7 @@ export const ZSendDocumentMutationSchema = z.object({
message: z.string(),
timezone: z.string().optional(),
dateFormat: z.string().optional(),
+ distributionMethod: z.nativeEnum(DocumentDistributionMethod).optional(),
redirectUrl: z
.string()
.optional()
@@ -137,6 +166,7 @@ export const ZSendDocumentMutationSchema = z.object({
message:
'Please enter a valid URL, make sure you include http:// or https:// part of the url.',
}),
+ emailSettings: ZDocumentEmailSettingsSchema.optional(),
}),
});
@@ -158,6 +188,16 @@ export type TSetSigningOrderForDocumentMutationSchema = z.infer<
typeof ZSetSigningOrderForDocumentMutationSchema
>;
+export const ZUpdateTypedSignatureSettingsMutationSchema = z.object({
+ documentId: z.number(),
+ teamId: z.number().optional(),
+ typedSignatureEnabled: z.boolean(),
+});
+
+export type TUpdateTypedSignatureSettingsMutationSchema = z.infer<
+ typeof ZUpdateTypedSignatureSettingsMutationSchema
+>;
+
export const ZResendDocumentMutationSchema = z.object({
documentId: z.number(),
recipients: z.array(z.number()).min(1),
diff --git a/packages/trpc/server/recipient-router/router.ts b/packages/trpc/server/recipient-router/router.ts
index 0fc8c347d..f106ff553 100644
--- a/packages/trpc/server/recipient-router/router.ts
+++ b/packages/trpc/server/recipient-router/router.ts
@@ -1,6 +1,7 @@
import { TRPCError } from '@trpc/server';
import { completeDocumentWithToken } from '@documenso/lib/server-only/document/complete-document-with-token';
+import { rejectDocumentWithToken } from '@documenso/lib/server-only/document/reject-document-with-token';
import { setRecipientsForDocument } from '@documenso/lib/server-only/recipient/set-recipients-for-document';
import { setRecipientsForTemplate } from '@documenso/lib/server-only/recipient/set-recipients-for-template';
import { extractNextApiRequestMetadata } from '@documenso/lib/universal/extract-request-metadata';
@@ -10,6 +11,7 @@ import {
ZAddSignersMutationSchema,
ZAddTemplateSignersMutationSchema,
ZCompleteDocumentWithTokenMutationSchema,
+ ZRejectDocumentWithTokenMutationSchema,
} from './schema';
export const recipientRouter = router({
@@ -94,4 +96,26 @@ export const recipientRouter = router({
});
}
}),
+
+ rejectDocumentWithToken: procedure
+ .input(ZRejectDocumentWithTokenMutationSchema)
+ .mutation(async ({ input, ctx }) => {
+ try {
+ const { token, documentId, reason } = input;
+
+ return await rejectDocumentWithToken({
+ token,
+ documentId,
+ reason,
+ requestMetadata: extractNextApiRequestMetadata(ctx.req),
+ });
+ } catch (err) {
+ console.error(err);
+
+ throw new TRPCError({
+ code: 'BAD_REQUEST',
+ message: 'We were unable to handle this request. Please try again later.',
+ });
+ }
+ }),
});
diff --git a/packages/trpc/server/recipient-router/schema.ts b/packages/trpc/server/recipient-router/schema.ts
index c8f299d31..60e47a439 100644
--- a/packages/trpc/server/recipient-router/schema.ts
+++ b/packages/trpc/server/recipient-router/schema.ts
@@ -69,3 +69,14 @@ export const ZCompleteDocumentWithTokenMutationSchema = z.object({
export type TCompleteDocumentWithTokenMutationSchema = z.infer<
typeof ZCompleteDocumentWithTokenMutationSchema
>;
+
+export const ZRejectDocumentWithTokenMutationSchema = z.object({
+ token: z.string(),
+ documentId: z.number(),
+ reason: z.string(),
+ authOptions: ZRecipientActionAuthSchema.optional(),
+});
+
+export type TRejectDocumentWithTokenMutationSchema = z.infer<
+ typeof ZRejectDocumentWithTokenMutationSchema
+>;
diff --git a/packages/trpc/server/singleplayer-router/router.ts b/packages/trpc/server/singleplayer-router/router.ts
index 6e8533c32..5cf62cb53 100644
--- a/packages/trpc/server/singleplayer-router/router.ts
+++ b/packages/trpc/server/singleplayer-router/router.ts
@@ -3,7 +3,6 @@ import { createElement } from 'react';
import { PDFDocument } from 'pdf-lib';
import { mailer } from '@documenso/email/mailer';
-import { renderAsync } from '@documenso/email/render';
import { DocumentSelfSignedEmailTemplate } from '@documenso/email/templates/document-self-signed';
import { NEXT_PUBLIC_WEBAPP_URL } from '@documenso/lib/constants/app';
import { FROM_ADDRESS, FROM_NAME, SERVICE_USER_EMAIL } from '@documenso/lib/constants/email';
@@ -11,6 +10,7 @@ import { insertFieldInPDF } from '@documenso/lib/server-only/pdf/insert-field-in
import { alphaid } from '@documenso/lib/universal/id';
import { getFile } from '@documenso/lib/universal/upload/get-file';
import { putPdfFile } from '@documenso/lib/universal/upload/put-file';
+import { renderEmailWithI18N } from '@documenso/lib/utils/render-email-with-i18n';
import { prisma } from '@documenso/prisma';
import {
DocumentSource,
@@ -158,8 +158,8 @@ export const singleplayerRouter = router({
});
const [html, text] = await Promise.all([
- renderAsync(template),
- renderAsync(template, { plainText: true }),
+ renderEmailWithI18N(template),
+ renderEmailWithI18N(template, { plainText: true }),
]);
// Send email to signer.
diff --git a/packages/trpc/server/team-router/router.ts b/packages/trpc/server/team-router/router.ts
index 2b27fa489..0325612b0 100644
--- a/packages/trpc/server/team-router/router.ts
+++ b/packages/trpc/server/team-router/router.ts
@@ -31,6 +31,8 @@ import { requestTeamOwnershipTransfer } from '@documenso/lib/server-only/team/re
import { resendTeamEmailVerification } from '@documenso/lib/server-only/team/resend-team-email-verification';
import { resendTeamMemberInvitation } from '@documenso/lib/server-only/team/resend-team-member-invitation';
import { updateTeam } from '@documenso/lib/server-only/team/update-team';
+import { updateTeamBrandingSettings } from '@documenso/lib/server-only/team/update-team-branding-settings';
+import { updateTeamDocumentSettings } from '@documenso/lib/server-only/team/update-team-document-settings';
import { updateTeamEmail } from '@documenso/lib/server-only/team/update-team-email';
import { updateTeamMember } from '@documenso/lib/server-only/team/update-team-member';
import { updateTeamPublicProfile } from '@documenso/lib/server-only/team/update-team-public-profile';
@@ -62,6 +64,8 @@ import {
ZRequestTeamOwnerhsipTransferMutationSchema,
ZResendTeamEmailVerificationMutationSchema,
ZResendTeamMemberInvitationMutationSchema,
+ ZUpdateTeamBrandingSettingsMutationSchema,
+ ZUpdateTeamDocumentSettingsMutationSchema,
ZUpdateTeamEmailMutationSchema,
ZUpdateTeamMemberMutationSchema,
ZUpdateTeamMutationSchema,
@@ -556,6 +560,42 @@ export const teamRouter = router({
} catch (err) {
console.error(err);
+ throw AppError.parseErrorToTRPCError(err);
+ }
+ }),
+
+ updateTeamBrandingSettings: authenticatedProcedure
+ .input(ZUpdateTeamBrandingSettingsMutationSchema)
+ .mutation(async ({ ctx, input }) => {
+ const { teamId, settings } = input;
+
+ try {
+ return await updateTeamBrandingSettings({
+ userId: ctx.user.id,
+ teamId,
+ settings,
+ });
+ } catch (err) {
+ console.error(err);
+
+ throw AppError.parseErrorToTRPCError(err);
+ }
+ }),
+
+ updateTeamDocumentSettings: authenticatedProcedure
+ .input(ZUpdateTeamDocumentSettingsMutationSchema)
+ .mutation(async ({ ctx, input }) => {
+ const { teamId, settings } = input;
+
+ try {
+ return await updateTeamDocumentSettings({
+ userId: ctx.user.id,
+ teamId,
+ settings,
+ });
+ } catch (err) {
+ console.error(err);
+
throw AppError.parseErrorToTRPCError(err);
}
}),
diff --git a/packages/trpc/server/team-router/schema.ts b/packages/trpc/server/team-router/schema.ts
index a27805cdd..f73bce6e7 100644
--- a/packages/trpc/server/team-router/schema.ts
+++ b/packages/trpc/server/team-router/schema.ts
@@ -1,7 +1,8 @@
import { z } from 'zod';
+import { SUPPORTED_LANGUAGE_CODES } from '@documenso/lib/constants/i18n';
import { PROTECTED_TEAM_URLS } from '@documenso/lib/constants/teams';
-import { TeamMemberRole } from '@documenso/prisma/client';
+import { DocumentVisibility, TeamMemberRole } from '@documenso/prisma/client';
import { ZUpdatePublicProfileMutationSchema } from '../profile-router/schema';
@@ -150,6 +151,8 @@ export const ZUpdateTeamMutationSchema = z.object({
data: z.object({
name: ZTeamNameSchema,
url: ZTeamUrlSchema,
+ documentVisibility: z.nativeEnum(DocumentVisibility).optional(),
+ includeSenderDetails: z.boolean().optional(),
}),
});
@@ -190,6 +193,28 @@ export const ZResendTeamMemberInvitationMutationSchema = z.object({
invitationId: z.number(),
});
+export const ZUpdateTeamBrandingSettingsMutationSchema = z.object({
+ teamId: z.number(),
+ settings: z.object({
+ brandingEnabled: z.boolean().optional().default(false),
+ brandingLogo: z.string().optional().default(''),
+ brandingUrl: z.string().optional().default(''),
+ brandingCompanyDetails: z.string().optional().default(''),
+ }),
+});
+
+export const ZUpdateTeamDocumentSettingsMutationSchema = z.object({
+ teamId: z.number(),
+ settings: z.object({
+ documentVisibility: z
+ .nativeEnum(DocumentVisibility)
+ .optional()
+ .default(DocumentVisibility.EVERYONE),
+ documentLanguage: z.enum(SUPPORTED_LANGUAGE_CODES).optional().default('en'),
+ includeSenderDetails: z.boolean().optional().default(false),
+ }),
+});
+
export type TCreateTeamMutationSchema = z.infer;
export type TCreateTeamEmailVerificationMutationSchema = z.infer<
typeof ZCreateTeamEmailVerificationMutationSchema
@@ -225,3 +250,9 @@ export type TResendTeamEmailVerificationMutationSchema = z.infer<
export type TResendTeamMemberInvitationMutationSchema = z.infer<
typeof ZResendTeamMemberInvitationMutationSchema
>;
+export type TUpdateTeamBrandingSettingsMutationSchema = z.infer<
+ typeof ZUpdateTeamBrandingSettingsMutationSchema
+>;
+export type TUpdateTeamDocumentSettingsMutationSchema = z.infer<
+ typeof ZUpdateTeamDocumentSettingsMutationSchema
+>;
diff --git a/packages/trpc/server/template-router/router.ts b/packages/trpc/server/template-router/router.ts
index a1a17d688..4cf333ec0 100644
--- a/packages/trpc/server/template-router/router.ts
+++ b/packages/trpc/server/template-router/router.ts
@@ -1,6 +1,7 @@
import { TRPCError } from '@trpc/server';
import { getServerLimits } from '@documenso/ee/server-only/limits/server';
+import { isValidLanguageCode } from '@documenso/lib/constants/i18n';
import { AppError, AppErrorCode } from '@documenso/lib/errors/app-error';
import { sendDocument } from '@documenso/lib/server-only/document/send-document';
import { createDocumentFromDirectTemplate } from '@documenso/lib/server-only/template/create-document-from-direct-template';
@@ -119,7 +120,7 @@ export const templateRouter = router({
requestMetadata,
});
- if (input.sendDocument) {
+ if (input.distributeDocument) {
document = await sendDocument({
documentId: document.id,
userId: ctx.user.id,
@@ -214,7 +215,10 @@ export const templateRouter = router({
teamId,
templateId,
data,
- meta,
+ meta: {
+ ...meta,
+ language: isValidLanguageCode(meta?.language) ? meta?.language : undefined,
+ },
requestMetadata,
});
} catch (err) {
diff --git a/packages/trpc/server/template-router/schema.ts b/packages/trpc/server/template-router/schema.ts
index d7807ad3d..eef77c3b9 100644
--- a/packages/trpc/server/template-router/schema.ts
+++ b/packages/trpc/server/template-router/schema.ts
@@ -1,12 +1,18 @@
import { z } from 'zod';
+import { SUPPORTED_LANGUAGE_CODES } from '@documenso/lib/constants/i18n';
import {
ZDocumentAccessAuthTypesSchema,
ZDocumentActionAuthTypesSchema,
} from '@documenso/lib/types/document-auth';
+import { ZDocumentEmailSettingsSchema } from '@documenso/lib/types/document-email';
import { ZBaseTableSearchParamsSchema } from '@documenso/lib/types/search-params';
import { isValidRedirectUrl } from '@documenso/lib/utils/is-valid-redirect-url';
-import { DocumentSigningOrder, TemplateType } from '@documenso/prisma/client';
+import {
+ DocumentDistributionMethod,
+ DocumentSigningOrder,
+ TemplateType,
+} from '@documenso/prisma/client';
import { ZSignFieldWithTokenMutationSchema } from '../field-router/schema';
@@ -40,7 +46,7 @@ export const ZCreateDocumentFromTemplateMutationSchema = z.object({
const emails = recipients.map((signer) => signer.email);
return new Set(emails).size === emails.length;
}, 'Recipients must have unique emails'),
- sendDocument: z.boolean().optional(),
+ distributeDocument: z.boolean().optional(),
});
export const ZDuplicateTemplateMutationSchema = z.object({
@@ -87,6 +93,10 @@ export const ZUpdateTemplateSettingsMutationSchema = z.object({
.max(MAX_TEMPLATE_PUBLIC_DESCRIPTION_LENGTH)
.optional(),
type: z.nativeEnum(TemplateType).optional(),
+ language: z
+ .union([z.string(), z.enum(SUPPORTED_LANGUAGE_CODES)])
+ .optional()
+ .default('en'),
}),
meta: z
.object({
@@ -94,6 +104,8 @@ export const ZUpdateTemplateSettingsMutationSchema = z.object({
message: z.string(),
timezone: z.string(),
dateFormat: z.string(),
+ distributionMethod: z.nativeEnum(DocumentDistributionMethod),
+ emailSettings: ZDocumentEmailSettingsSchema,
redirectUrl: z
.string()
.optional()
@@ -101,6 +113,7 @@ export const ZUpdateTemplateSettingsMutationSchema = z.object({
message:
'Please enter a valid URL, make sure you include http:// or https:// part of the url.',
}),
+ language: z.enum(SUPPORTED_LANGUAGE_CODES).optional(),
})
.optional(),
});
diff --git a/packages/ui/components/common/copy-text-button.tsx b/packages/ui/components/common/copy-text-button.tsx
new file mode 100644
index 000000000..608318690
--- /dev/null
+++ b/packages/ui/components/common/copy-text-button.tsx
@@ -0,0 +1,82 @@
+'use client';
+
+import { useState } from 'react';
+
+import { motion } from 'framer-motion';
+import { AnimatePresence } from 'framer-motion';
+import { CheckSquareIcon, CopyIcon } from 'lucide-react';
+
+import { useCopyToClipboard } from '@documenso/lib/client-only/hooks/use-copy-to-clipboard';
+import { Button } from '@documenso/ui/primitives/button';
+
+import { cn } from '../../lib/utils';
+
+export type CopyTextButtonProps = {
+ value: string;
+ badgeContentUncopied?: React.ReactNode;
+ badgeContentCopied?: React.ReactNode;
+ onCopySuccess?: () => void;
+};
+
+export const CopyTextButton = ({
+ value,
+ onCopySuccess,
+ badgeContentUncopied,
+ badgeContentCopied,
+}: CopyTextButtonProps) => {
+ const [, copy] = useCopyToClipboard();
+
+ const [copiedTimeout, setCopiedTimeout] = useState(null);
+
+ const onCopy = async () => {
+ await copy(value).then(() => onCopySuccess?.());
+
+ if (copiedTimeout) {
+ clearTimeout(copiedTimeout);
+ }
+
+ setCopiedTimeout(
+ setTimeout(() => {
+ setCopiedTimeout(null);
+ }, 2000),
+ );
+ };
+
+ return (
+ onCopy()}
+ >
+
+
+ {copiedTimeout ? badgeContentCopied : badgeContentUncopied}
+
+
+
+ {copiedTimeout ? (
+
+ ) : (
+
+ )}
+
+
+
+
+
+ );
+};
diff --git a/packages/ui/components/document/document-email-checkboxes.tsx b/packages/ui/components/document/document-email-checkboxes.tsx
new file mode 100644
index 000000000..7242393c4
--- /dev/null
+++ b/packages/ui/components/document/document-email-checkboxes.tsx
@@ -0,0 +1,222 @@
+import { Trans } from '@lingui/macro';
+import { InfoIcon } from 'lucide-react';
+
+import { DocumentEmailEvents } from '@documenso/lib/types/document-email';
+import { Tooltip, TooltipContent, TooltipTrigger } from '@documenso/ui/primitives/tooltip';
+
+import { cn } from '../../lib/utils';
+import { Checkbox } from '../../primitives/checkbox';
+
+type Value = Record;
+
+type DocumentEmailCheckboxesProps = {
+ value: Value;
+ onChange: (value: Value) => void;
+ className?: string;
+};
+
+export const DocumentEmailCheckboxes = ({
+ value,
+ onChange,
+ className,
+}: DocumentEmailCheckboxesProps) => {
+ return (
+
+
+
+ onChange({ ...value, [DocumentEmailEvents.RecipientSigningRequest]: Boolean(checked) })
+ }
+ />
+
+
+ Send recipient signing request email
+
+
+
+
+
+
+
+
+
+ Recipient signing request email
+
+
+
+
+
+ This email is sent to the recipient requesting them to sign the document.
+
+
+
+
+
+
+
+
+
+ onChange({ ...value, [DocumentEmailEvents.RecipientRemoved]: Boolean(checked) })
+ }
+ />
+
+
+ Send recipient removed email
+
+
+
+
+
+
+
+
+
+ Recipient removed email
+
+
+
+
+
+ This email is sent to the recipient if they are removed from a pending document.
+
+
+
+
+
+
+
+
+
+ onChange({ ...value, [DocumentEmailEvents.DocumentPending]: Boolean(checked) })
+ }
+ />
+
+
+ Send document pending email
+
+
+
+
+
+
+
+
+
+ Document pending email
+
+
+
+
+
+ This email will be sent to the recipient who has just signed the document, if
+ there are still other recipients who have not signed yet.
+
+
+
+
+
+
+
+
+
+ onChange({ ...value, [DocumentEmailEvents.DocumentCompleted]: Boolean(checked) })
+ }
+ />
+
+
+ Send document completed email
+
+
+
+
+
+
+
+
+
+ Document completed email
+
+
+
+
+
+ This will be sent to all recipients once the document has been fully completed.
+
+
+
+
+
+
+
+
+
+ onChange({ ...value, [DocumentEmailEvents.DocumentDeleted]: Boolean(checked) })
+ }
+ />
+
+
+ Send document deleted email
+
+
+
+
+
+
+
+
+
+ Document deleted email
+
+
+
+
+
+ This will be sent to all recipients if a pending document has been deleted.
+
+
+
+
+
+
+
+ );
+};
diff --git a/packages/ui/components/document/document-share-button.tsx b/packages/ui/components/document/document-share-button.tsx
index bcf888838..bfaeb6afd 100644
--- a/packages/ui/components/document/document-share-button.tsx
+++ b/packages/ui/components/document/document-share-button.tsx
@@ -139,12 +139,16 @@ export const DocumentShareButton = ({
- Share your signing experience!
+
+ Share your signing experience!
+
- Rest assured, your document is strictly confidential and will never be shared. Only your
- signing experience will be highlighted. Share your personalized signing card to showcase
- your signature!
+
+ Rest assured, your document is strictly confidential and will never be shared. Only
+ your signing experience will be highlighted. Share your personalized signing card to
+ showcase your signature!
+
@@ -187,7 +191,7 @@ export const DocumentShareButton = ({
- Copy Link
+ Copy Link
diff --git a/packages/ui/components/document/document-visibility-select.tsx b/packages/ui/components/document/document-visibility-select.tsx
index dd3f78408..ff362a406 100644
--- a/packages/ui/components/document/document-visibility-select.tsx
+++ b/packages/ui/components/document/document-visibility-select.tsx
@@ -16,14 +16,17 @@ import { Tooltip, TooltipContent, TooltipTrigger } from '@documenso/ui/primitive
export type DocumentVisibilitySelectType = SelectProps & {
currentMemberRole?: string;
+ isTeamSettings?: boolean;
+ disabled?: boolean;
};
export const DocumentVisibilitySelect = forwardRef
(
- ({ currentMemberRole, ...props }, ref) => {
- const canUpdateVisibility = currentMemberRole === 'ADMIN' || currentMemberRole === 'MANAGER';
+ ({ currentMemberRole, isTeamSettings = false, disabled, ...props }, ref) => {
+ const canUpdateVisibility =
+ currentMemberRole === 'ADMIN' || currentMemberRole === 'MANAGER' || isTeamSettings;
return (
-
+
@@ -32,18 +35,15 @@ export const DocumentVisibilitySelect = forwardRef
{DOCUMENT_VISIBILITY.EVERYONE.value}
-
- {(currentMemberRole === 'ADMIN' || currentMemberRole === 'MANAGER') && (
-
- {DOCUMENT_VISIBILITY.MANAGER_AND_ABOVE.value}
-
- )}
-
- {currentMemberRole === 'ADMIN' && (
-
- {DOCUMENT_VISIBILITY.ADMIN.value}
-
- )}
+
+ {DOCUMENT_VISIBILITY.MANAGER_AND_ABOVE.value}
+
+
+ {DOCUMENT_VISIBILITY.ADMIN.value}
+
);
diff --git a/packages/ui/primitives/auto-sized-text.tsx b/packages/ui/primitives/auto-sized-text.tsx
new file mode 100644
index 000000000..a2b9e8cef
--- /dev/null
+++ b/packages/ui/primitives/auto-sized-text.tsx
@@ -0,0 +1,157 @@
+'use client';
+
+import { useLayoutEffect, useRef } from 'react';
+
+import { cn } from '../lib/utils';
+
+export type Dimensions = {
+ height: number;
+ width: number;
+};
+
+export type AutoSizedTextProps = {
+ children: React.ReactNode;
+ className?: string;
+ maxHeight?: number;
+ useRem?: boolean;
+};
+
+const ITERATION_LIMIT = 20;
+const MAXIMUM_DIFFERENCE = 1; // px
+
+function getElementDimensions(element: HTMLElement): Dimensions {
+ const bbox = element.getBoundingClientRect();
+
+ return {
+ width: bbox.width,
+ height: bbox.height,
+ };
+}
+
+function getBaseFontSize(): number {
+ try {
+ const fontSize = getComputedStyle(document.documentElement).fontSize;
+ const parsed = parseFloat(fontSize);
+
+ // Check if we got a valid number
+ if (!Number.isFinite(parsed)) {
+ return 16;
+ }
+
+ return parsed;
+ } catch (error) {
+ // Fallback to browser default if anything goes wrong
+ return 16;
+ }
+}
+
+function pxToRem(px: number): number {
+ return px / getBaseFontSize();
+}
+
+export function AutoSizedText({
+ children,
+ className,
+ maxHeight,
+ useRem = false,
+}: AutoSizedTextProps) {
+ const childRef = useRef(null);
+
+ const fontSize = useRef(0);
+ const fontSizeLowerBound = useRef(0);
+ const fontSizeUpperBound = useRef(0);
+
+ const adjustFontSize = (childDimensions: Dimensions, parentDimensions: Dimensions) => {
+ const childElement = childRef.current;
+
+ if (!childElement) {
+ return;
+ }
+
+ let newFontSize: number;
+
+ const targetHeight =
+ maxHeight && maxHeight < parentDimensions.height ? maxHeight : parentDimensions.height;
+
+ const isElementTooBig =
+ childDimensions.width > parentDimensions.width || childDimensions.height > targetHeight;
+
+ if (isElementTooBig) {
+ // Scale down if element is bigger than target
+ newFontSize = (fontSizeLowerBound.current + fontSize.current) / 2;
+ fontSizeUpperBound.current = fontSize.current;
+ } else if (
+ childDimensions.width < parentDimensions.width ||
+ childDimensions.height < parentDimensions.height
+ ) {
+ // Scale up if element is smaller than target
+ newFontSize = (fontSizeUpperBound.current + fontSize.current) / 2;
+ fontSizeLowerBound.current = fontSize.current;
+ }
+
+ fontSize.current = newFontSize;
+
+ // Convert to rem if useRem is true
+ const displayFontSize = useRem ? `${pxToRem(newFontSize)}rem` : `${newFontSize}px`;
+ childElement.style.fontSize = displayFontSize;
+ };
+
+ useLayoutEffect(() => {
+ const childElement = childRef.current;
+ const parentElement = childRef.current?.parentElement;
+
+ if (!childElement || !parentElement) {
+ return;
+ }
+
+ const observer = new ResizeObserver((entries) => {
+ const entry = entries[0];
+
+ if (!entry) {
+ return;
+ }
+
+ const parentDimensions = entry.contentRect;
+
+ // Reset iteration parameters
+ fontSizeLowerBound.current = 0;
+ fontSizeUpperBound.current = parentDimensions.height;
+
+ let iterationCount = 0;
+
+ while (iterationCount <= ITERATION_LIMIT) {
+ const childDimensions = getElementDimensions(childElement);
+
+ const targetHeight =
+ maxHeight && maxHeight < parentDimensions.height ? maxHeight : parentDimensions.height;
+
+ const widthDifference = parentDimensions.width - childDimensions.width;
+ const heightDifference = targetHeight - childDimensions.height;
+
+ const childFitsIntoParent = heightDifference >= 0 && widthDifference >= 0;
+ const isWithinTolerance =
+ Math.abs(widthDifference) <= MAXIMUM_DIFFERENCE ||
+ Math.abs(heightDifference) <= MAXIMUM_DIFFERENCE;
+
+ if (childFitsIntoParent && isWithinTolerance) {
+ break;
+ }
+
+ adjustFontSize(childDimensions, parentDimensions);
+ iterationCount += 1;
+ }
+ });
+
+ observer.observe(parentElement);
+
+ return () => {
+ observer.disconnect();
+ };
+ }, [maxHeight, useRem]);
+
+ return (
+
+ {children}
+
+ );
+}
diff --git a/packages/ui/primitives/dialog.tsx b/packages/ui/primitives/dialog.tsx
index 0b607aaf8..ce15515e1 100644
--- a/packages/ui/primitives/dialog.tsx
+++ b/packages/ui/primitives/dialog.tsx
@@ -113,7 +113,7 @@ const DialogTitle = React.forwardRef<
>(({ className, ...props }, ref) => (
));
diff --git a/packages/ui/primitives/document-flow/add-fields.tsx b/packages/ui/primitives/document-flow/add-fields.tsx
index f4a5423a2..afa80b14a 100644
--- a/packages/ui/primitives/document-flow/add-fields.tsx
+++ b/packages/ui/primitives/document-flow/add-fields.tsx
@@ -5,6 +5,7 @@ import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
import { Caveat } from 'next/font/google';
import { Trans, msg } from '@lingui/macro';
+import { useLingui } from '@lingui/react';
import { Prisma } from '@prisma/client';
import {
CalendarDays,
@@ -27,13 +28,14 @@ import { prop, sortBy } from 'remeda';
import { getBoundingClientRect } from '@documenso/lib/client-only/get-bounding-client-rect';
import { useDocumentElement } from '@documenso/lib/client-only/hooks/use-document-element';
import { PDF_VIEWER_PAGE_SELECTOR } from '@documenso/lib/constants/pdf-viewer';
-import { RECIPIENT_ROLES_DESCRIPTION_ENG } from '@documenso/lib/constants/recipient-roles';
+import { RECIPIENT_ROLES_DESCRIPTION } from '@documenso/lib/constants/recipient-roles';
import {
type TFieldMetaSchema as FieldMeta,
ZFieldMetaSchema,
} from '@documenso/lib/types/field-meta';
import { nanoid } from '@documenso/lib/universal/id';
import { validateFieldsUninserted } from '@documenso/lib/utils/fields';
+import { parseMessageDescriptor } from '@documenso/lib/utils/i18n';
import {
canRecipientBeModified,
canRecipientFieldsBeModified,
@@ -47,7 +49,9 @@ import { cn } from '../../lib/utils';
import { Alert, AlertDescription } from '../alert';
import { Button } from '../button';
import { Card, CardContent } from '../card';
+import { Checkbox } from '../checkbox';
import { Command, CommandEmpty, CommandGroup, CommandInput, CommandItem } from '../command';
+import { Form, FormControl, FormField, FormItem, FormLabel } from '../form/form';
import { Popover, PopoverContent, PopoverTrigger } from '../popover';
import { useStep } from '../stepper';
import { Tooltip, TooltipContent, TooltipTrigger } from '../tooltip';
@@ -72,8 +76,11 @@ const fontCaveat = Caveat({
variable: '--font-caveat',
});
-const MIN_HEIGHT_PX = 20;
-const MIN_WIDTH_PX = 80;
+const MIN_HEIGHT_PX = 12;
+const MIN_WIDTH_PX = 36;
+
+const DEFAULT_HEIGHT_PX = MIN_HEIGHT_PX * 2.5;
+const DEFAULT_WIDTH_PX = MIN_WIDTH_PX * 2.5;
export type FieldFormType = {
nativeId?: number;
@@ -96,6 +103,7 @@ export type AddFieldsFormProps = {
onSubmit: (_data: TAddFieldsFormSchema) => void;
canGoBack?: boolean;
isDocumentPdfLoaded: boolean;
+ typedSignatureEnabled?: boolean;
teamId?: number;
};
@@ -107,9 +115,11 @@ export const AddFieldsFormPartial = ({
onSubmit,
canGoBack = false,
isDocumentPdfLoaded,
+ typedSignatureEnabled,
teamId,
}: AddFieldsFormProps) => {
const { toast } = useToast();
+ const { _ } = useLingui();
const [isMissingSignatureDialogVisible, setIsMissingSignatureDialogVisible] = useState(false);
@@ -120,13 +130,7 @@ export const AddFieldsFormPartial = ({
const [showAdvancedSettings, setShowAdvancedSettings] = useState(false);
const [currentField, setCurrentField] = useState();
- const {
- control,
- handleSubmit,
- formState: { isSubmitting },
- setValue,
- getValues,
- } = useForm({
+ const form = useForm({
defaultValues: {
fields: fields.map((field) => ({
nativeId: field.id,
@@ -141,6 +145,7 @@ export const AddFieldsFormPartial = ({
recipients.find((recipient) => recipient.id === field.recipientId)?.email ?? '',
fieldMeta: field.fieldMeta ? ZFieldMetaSchema.parse(field.fieldMeta) : undefined,
})),
+ typedSignatureEnabled: typedSignatureEnabled ?? false,
},
});
@@ -148,10 +153,10 @@ export const AddFieldsFormPartial = ({
useHotkeys(['ctrl+v', 'meta+v'], (evt) => onFieldPaste(evt));
useHotkeys(['ctrl+d', 'meta+d'], (evt) => onFieldCopy(evt, { duplicate: true }));
- const onFormSubmit = handleSubmit(onSubmit);
+ const onFormSubmit = form.handleSubmit(onSubmit);
const handleSavedFieldSettings = (fieldState: FieldMeta) => {
- const initialValues = getValues();
+ const initialValues = form.getValues();
const updatedFields = initialValues.fields.map((field) => {
if (field.formId === currentField?.formId) {
@@ -166,7 +171,7 @@ export const AddFieldsFormPartial = ({
return field;
});
- setValue('fields', updatedFields);
+ form.setValue('fields', updatedFields);
};
const {
@@ -175,7 +180,7 @@ export const AddFieldsFormPartial = ({
update,
fields: localFields,
} = useFieldArray({
- control,
+ control: form.control,
name: 'fields',
});
@@ -478,8 +483,8 @@ export const AddFieldsFormPartial = ({
}
fieldBounds.current = {
- height: Math.max(MIN_HEIGHT_PX),
- width: Math.max(MIN_WIDTH_PX),
+ height: Math.max(DEFAULT_HEIGHT_PX),
+ width: Math.max(DEFAULT_WIDTH_PX),
};
});
@@ -530,6 +535,12 @@ export const AddFieldsFormPartial = ({
);
}, [recipientsByRole]);
+ const isTypedSignatureEnabled = form.watch('typedSignatureEnabled');
+
+ const handleTypedSignatureChange = (value: boolean) => {
+ form.setValue('typedSignatureEnabled', value, { shouldDirty: true });
+ };
+
const handleAdvancedSettings = () => {
setShowAdvancedSettings((prev) => !prev);
};
@@ -563,7 +574,10 @@ export const AddFieldsFormPartial = ({
{showAdvancedSettings && currentField ? (
+
{selectedField && (
- {FRIENDLY_FIELD_TYPE[selectedField]}
+
+ {parseMessageDescriptor(_, FRIENDLY_FIELD_TYPE[selectedField])}
+
)}
@@ -618,8 +635,10 @@ export const AddFieldsFormPartial = ({
selectedSigner?.email !== field.signerEmail ||
!canRecipientBeModified(selectedSigner, fields)
}
- minHeight={fieldBounds.current.height}
- minWidth={fieldBounds.current.width}
+ minHeight={MIN_HEIGHT_PX}
+ minWidth={MIN_WIDTH_PX}
+ defaultHeight={DEFAULT_HEIGHT_PX}
+ defaultWidth={DEFAULT_WIDTH_PX}
passive={isFieldWithinBounds && !!selectedField}
onFocus={() => setLastActiveField(field)}
onBlur={() => setLastActiveField(null)}
@@ -678,8 +697,7 @@ export const AddFieldsFormPartial = ({
{recipientsByRoleToDisplay.map(([role, roleRecipients], roleIndex) => (
- {/* Todo: Translations - Add plural translations. */}
- {`${RECIPIENT_ROLES_DESCRIPTION_ENG[role].roleName}s`}
+ {_(RECIPIENT_ROLES_DESCRIPTION[role].roleNamePlural)}
{roleRecipients.length === 0 && (
@@ -760,269 +778,298 @@ export const AddFieldsFormPartial = ({
)}
-
-
- setSelectedField(FieldType.SIGNATURE)}
- onMouseDown={() => setSelectedField(FieldType.SIGNATURE)}
- data-selected={selectedField === FieldType.SIGNATURE ? true : undefined}
- >
-
-
-
- Signature
-
-
-
-
+
+ (
+
+
+ field.onChange(checked)}
+ disabled={form.formState.isSubmitting}
+ />
+
- setSelectedField(FieldType.INITIALS)}
- onMouseDown={() => setSelectedField(FieldType.INITIALS)}
- data-selected={selectedField === FieldType.INITIALS ? true : undefined}
- >
-
-
-
-
- Initials
-
-
-
-
+
+ Enable Typed Signatures
+
+
+ )}
+ />
- setSelectedField(FieldType.EMAIL)}
- onMouseDown={() => setSelectedField(FieldType.EMAIL)}
- data-selected={selectedField === FieldType.EMAIL ? true : undefined}
- >
-
+
+ setSelectedField(FieldType.SIGNATURE)}
+ onMouseDown={() => setSelectedField(FieldType.SIGNATURE)}
+ data-selected={selectedField === FieldType.SIGNATURE ? true : undefined}
>
-
-
-
- Email
-
-
-
-
+
+
+
+ Signature
+
+
+
+
- setSelectedField(FieldType.NAME)}
- onMouseDown={() => setSelectedField(FieldType.NAME)}
- data-selected={selectedField === FieldType.NAME ? true : undefined}
- >
- setSelectedField(FieldType.INITIALS)}
+ onMouseDown={() => setSelectedField(FieldType.INITIALS)}
+ data-selected={selectedField === FieldType.INITIALS ? true : undefined}
>
-
-
-
- Name
-
-
-
-
+
+
+
+
+ Initials
+
+
+
+
- setSelectedField(FieldType.DATE)}
- onMouseDown={() => setSelectedField(FieldType.DATE)}
- data-selected={selectedField === FieldType.DATE ? true : undefined}
- >
- setSelectedField(FieldType.EMAIL)}
+ onMouseDown={() => setSelectedField(FieldType.EMAIL)}
+ data-selected={selectedField === FieldType.EMAIL ? true : undefined}
>
-
-
-
- Date
-
-
-
-
+
+
+
+
+ Email
+
+
+
+
- setSelectedField(FieldType.TEXT)}
- onMouseDown={() => setSelectedField(FieldType.TEXT)}
- data-selected={selectedField === FieldType.TEXT ? true : undefined}
- >
- setSelectedField(FieldType.NAME)}
+ onMouseDown={() => setSelectedField(FieldType.NAME)}
+ data-selected={selectedField === FieldType.NAME ? true : undefined}
>
-
-
-
- Text
-
-
-
-
+
+
+
+
+ Name
+
+
+
+
- setSelectedField(FieldType.NUMBER)}
- onMouseDown={() => setSelectedField(FieldType.NUMBER)}
- data-selected={selectedField === FieldType.NUMBER ? true : undefined}
- >
- setSelectedField(FieldType.DATE)}
+ onMouseDown={() => setSelectedField(FieldType.DATE)}
+ data-selected={selectedField === FieldType.DATE ? true : undefined}
>
-
-
-
- Number
-
-
-
-
+
+
+
+
+ Date
+
+
+
+
- setSelectedField(FieldType.RADIO)}
- onMouseDown={() => setSelectedField(FieldType.RADIO)}
- data-selected={selectedField === FieldType.RADIO ? true : undefined}
- >
- setSelectedField(FieldType.TEXT)}
+ onMouseDown={() => setSelectedField(FieldType.TEXT)}
+ data-selected={selectedField === FieldType.TEXT ? true : undefined}
>
-
-
-
- Radio
-
-
-
-
+
+
+
+
+ Text
+
+
+
+
- setSelectedField(FieldType.CHECKBOX)}
- onMouseDown={() => setSelectedField(FieldType.CHECKBOX)}
- data-selected={selectedField === FieldType.CHECKBOX ? true : undefined}
- >
- setSelectedField(FieldType.NUMBER)}
+ onMouseDown={() => setSelectedField(FieldType.NUMBER)}
+ data-selected={selectedField === FieldType.NUMBER ? true : undefined}
>
-
-
-
- Checkbox
-
-
-
-
+
+
+
+
+ Number
+
+
+
+
- setSelectedField(FieldType.DROPDOWN)}
- onMouseDown={() => setSelectedField(FieldType.DROPDOWN)}
- data-selected={selectedField === FieldType.DROPDOWN ? true : undefined}
- >
- setSelectedField(FieldType.RADIO)}
+ onMouseDown={() => setSelectedField(FieldType.RADIO)}
+ data-selected={selectedField === FieldType.RADIO ? true : undefined}
>
-
-
-
- Dropdown
-
-
-
-
-
-
+
+
+
+
+ Radio
+
+
+
+
+
+ setSelectedField(FieldType.CHECKBOX)}
+ onMouseDown={() => setSelectedField(FieldType.CHECKBOX)}
+ data-selected={selectedField === FieldType.CHECKBOX ? true : undefined}
+ >
+
+
+
+
+ {/* Not translated on purpose. */}
+ Checkbox
+
+
+
+
+
+ setSelectedField(FieldType.DROPDOWN)}
+ onMouseDown={() => setSelectedField(FieldType.DROPDOWN)}
+ data-selected={selectedField === FieldType.DROPDOWN ? true : undefined}
+ >
+
+
+
+
+ Dropdown
+
+
+
+
+
+
+
@@ -1059,8 +1106,9 @@ export const AddFieldsFormPartial = ({
{
previousStep();
remove();
diff --git a/packages/ui/primitives/document-flow/add-fields.types.ts b/packages/ui/primitives/document-flow/add-fields.types.ts
index 7309250a8..4d9c89e73 100644
--- a/packages/ui/primitives/document-flow/add-fields.types.ts
+++ b/packages/ui/primitives/document-flow/add-fields.types.ts
@@ -18,6 +18,7 @@ export const ZAddFieldsFormSchema = z.object({
fieldMeta: ZFieldMetaSchema,
}),
),
+ typedSignatureEnabled: z.boolean(),
});
export type TAddFieldsFormSchema = z.infer;
diff --git a/packages/ui/primitives/document-flow/add-settings.tsx b/packages/ui/primitives/document-flow/add-settings.tsx
index 06cf5e9ea..9b73336f5 100644
--- a/packages/ui/primitives/document-flow/add-settings.tsx
+++ b/packages/ui/primitives/document-flow/add-settings.tsx
@@ -8,6 +8,7 @@ import { InfoIcon } from 'lucide-react';
import { useForm } from 'react-hook-form';
import { DATE_FORMATS, DEFAULT_DOCUMENT_DATE_FORMAT } from '@documenso/lib/constants/date-formats';
+import { SUPPORTED_LANGUAGES } from '@documenso/lib/constants/i18n';
import { DEFAULT_DOCUMENT_TIME_ZONE, TIME_ZONES } from '@documenso/lib/constants/time-zones';
import { extractDocumentAuthMethods } from '@documenso/lib/utils/document-auth';
import type { TeamMemberRole } from '@documenso/prisma/client';
@@ -98,6 +99,7 @@ export const AddSettingsFormPartial = ({
DATE_FORMATS.find((format) => format.value === document.documentMeta?.dateFormat)
?.value ?? DEFAULT_DOCUMENT_DATE_FORMAT,
redirectUrl: document.documentMeta?.redirectUrl ?? '',
+ language: document.documentMeta?.language ?? 'en',
},
},
});
@@ -165,6 +167,46 @@ export const AddSettingsFormPartial = ({
)}
/>
+ (
+
+
+ Language
+
+
+
+
+
+
+ Controls the language for the document, including the language to be used
+ for email notifications, and the final certificate that is generated and
+ attached to the document.
+
+
+
+
+
+
+
+
+
+
+
+ {Object.entries(SUPPORTED_LANGUAGES).map(([code, language]) => (
+
+ {language.full}
+
+ ))}
+
+
+
+
+
+ )}
+ />
+
(
-
+
(
(
(
@@ -586,7 +604,13 @@ export const AddSignersFormPartial = ({
(
-
+
;
diff --git a/packages/ui/primitives/document-flow/add-subject.tsx b/packages/ui/primitives/document-flow/add-subject.tsx
index a2b145641..f98d21a28 100644
--- a/packages/ui/primitives/document-flow/add-subject.tsx
+++ b/packages/ui/primitives/document-flow/add-subject.tsx
@@ -2,18 +2,32 @@
import { zodResolver } from '@hookform/resolvers/zod';
import { Trans, msg } from '@lingui/macro';
+import { useLingui } from '@lingui/react';
+import { AnimatePresence, motion } from 'framer-motion';
import { useForm } from 'react-hook-form';
+import { RECIPIENT_ROLES_DESCRIPTION } from '@documenso/lib/constants/recipient-roles';
+import { ZDocumentEmailSettingsSchema } from '@documenso/lib/types/document-email';
+import { formatSigningLink } from '@documenso/lib/utils/recipients';
import type { Field, Recipient } from '@documenso/prisma/client';
-import { DocumentStatus } from '@documenso/prisma/client';
+import {
+ DocumentDistributionMethod,
+ DocumentStatus,
+ RecipientRole,
+} from '@documenso/prisma/client';
import type { DocumentWithData } from '@documenso/prisma/types/document-with-data';
import { DocumentSendEmailMessageHelper } from '@documenso/ui/components/document/document-send-email-message-helper';
+import { Tabs, TabsList, TabsTrigger } from '@documenso/ui/primitives/tabs';
+import { CopyTextButton } from '../../components/common/copy-text-button';
+import { DocumentEmailCheckboxes } from '../../components/document/document-email-checkboxes';
+import { AvatarWithText } from '../avatar';
import { FormErrorMessage } from '../form/form-error-message';
import { Input } from '../input';
import { Label } from '../label';
import { useStep } from '../stepper';
import { Textarea } from '../textarea';
+import { toast } from '../use-toast';
import { type TAddSubjectFormSchema, ZAddSubjectFormSchema } from './add-subject.types';
import {
DocumentFlowFormContainerActions,
@@ -42,20 +56,45 @@ export const AddSubjectFormPartial = ({
onSubmit,
isDocumentPdfLoaded,
}: AddSubjectFormProps) => {
+ const { _ } = useLingui();
+
const {
register,
handleSubmit,
+ setValue,
+ watch,
formState: { errors, isSubmitting },
} = useForm({
defaultValues: {
meta: {
subject: document.documentMeta?.subject ?? '',
message: document.documentMeta?.message ?? '',
+ distributionMethod:
+ document.documentMeta?.distributionMethod || DocumentDistributionMethod.EMAIL,
+ emailSettings: ZDocumentEmailSettingsSchema.parse(document?.documentMeta?.emailSettings),
},
},
resolver: zodResolver(ZAddSubjectFormSchema),
});
+ const GoNextLabel = {
+ [DocumentDistributionMethod.EMAIL]: {
+ [DocumentStatus.DRAFT]: msg`Send`,
+ [DocumentStatus.PENDING]: recipients.some((recipient) => recipient.sendStatus === 'SENT')
+ ? msg`Resend`
+ : msg`Send`,
+ [DocumentStatus.COMPLETED]: msg`Update`,
+ },
+ [DocumentDistributionMethod.NONE]: {
+ [DocumentStatus.DRAFT]: msg`Generate Links`,
+ [DocumentStatus.PENDING]: msg`View Document`,
+ [DocumentStatus.COMPLETED]: msg`View Document`,
+ },
+ };
+
+ const distributionMethod = watch('meta.distributionMethod');
+ const emailSettings = watch('meta.emailSettings');
+
const onFormSubmit = handleSubmit(onSubmit);
const { currentStep, totalSteps, previousStep } = useStep();
@@ -72,46 +111,158 @@ export const AddSubjectFormPartial = ({
))}
-
-
-
-
- Subject (Optional)
-
-
+
+ // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
+ setValue('meta.distributionMethod', value as DocumentDistributionMethod)
+ }
+ value={distributionMethod}
+ className="mb-2"
+ >
+
+
+ Email
+
+
+ None
+
+
+
-
+
+ {distributionMethod === DocumentDistributionMethod.EMAIL && (
+
+
+
+
+ Subject (Optional)
+
+
-
-
+
-
-
-
- Message (Optional)
-
-
+
+
-
+
+
+
+ Message (Optional)
+
+
-
-
+
-
-
+
+
+
+
+
+ setValue('meta.emailSettings', value)}
+ />
+
+ )}
+
+ {distributionMethod === DocumentDistributionMethod.NONE && (
+
+ {document.status === DocumentStatus.DRAFT ? (
+
+
+ We won't send anything to notify recipients.
+
+
+
+
+ We will generate signing links for with you, which you can send to the
+ recipients through your method of choice.
+
+
+
+ ) : (
+
+ {recipients.length === 0 && (
+
+ No recipients
+
+ )}
+
+ {recipients.map((recipient) => (
+
+ {recipient.email}
+ }
+ secondaryText={
+
+ {_(RECIPIENT_ROLES_DESCRIPTION[recipient.role].roleName)}
+
+ }
+ />
+
+ {recipient.role !== RecipientRole.CC && (
+ {
+ toast({
+ title: _(msg`Copied to clipboard`),
+ description: _(
+ msg`The signing link has been copied to your clipboard.`,
+ ),
+ });
+ }}
+ badgeContentUncopied={
+
+ Copy
+
+ }
+ badgeContentCopied={
+
+ Copied
+
+ }
+ />
+ )}
+
+ ))}
+
+ )}
+
+ )}
+
@@ -121,7 +272,7 @@ export const AddSubjectFormPartial = ({
void onFormSubmit()}
/>
diff --git a/packages/ui/primitives/document-flow/add-subject.types.ts b/packages/ui/primitives/document-flow/add-subject.types.ts
index 020e3c04b..178486c24 100644
--- a/packages/ui/primitives/document-flow/add-subject.types.ts
+++ b/packages/ui/primitives/document-flow/add-subject.types.ts
@@ -1,9 +1,18 @@
import { z } from 'zod';
+import { ZDocumentEmailSettingsSchema } from '@documenso/lib/types/document-email';
+
+import { DocumentDistributionMethod } from '.prisma/client';
+
export const ZAddSubjectFormSchema = z.object({
meta: z.object({
subject: z.string(),
message: z.string(),
+ distributionMethod: z
+ .nativeEnum(DocumentDistributionMethod)
+ .optional()
+ .default(DocumentDistributionMethod.EMAIL),
+ emailSettings: ZDocumentEmailSettingsSchema,
}),
});
diff --git a/packages/ui/primitives/document-flow/field-icon.tsx b/packages/ui/primitives/document-flow/field-icon.tsx
index b6e33b03a..43595c702 100644
--- a/packages/ui/primitives/document-flow/field-icon.tsx
+++ b/packages/ui/primitives/document-flow/field-icon.tsx
@@ -45,7 +45,7 @@ export const FieldIcon = ({
return (
@@ -71,8 +71,9 @@ export const FieldIcon = ({
}
return (
-
-
{label}
+
+ {' '}
+ {label}
);
}
diff --git a/packages/ui/primitives/document-flow/field-item.tsx b/packages/ui/primitives/document-flow/field-item.tsx
index 7caa80ea2..d77e55047 100644
--- a/packages/ui/primitives/document-flow/field-item.tsx
+++ b/packages/ui/primitives/document-flow/field-item.tsx
@@ -35,6 +35,8 @@ export type FieldItemProps = {
disabled?: boolean;
minHeight?: number;
minWidth?: number;
+ defaultHeight?: number;
+ defaultWidth?: number;
onResize?: (_node: HTMLElement) => void;
onMove?: (_node: HTMLElement) => void;
onRemove?: () => void;
@@ -53,6 +55,8 @@ export const FieldItem = ({
disabled,
minHeight,
minWidth,
+ defaultHeight,
+ defaultWidth,
onResize,
onMove,
onRemove,
@@ -68,8 +72,8 @@ export const FieldItem = ({
const [coords, setCoords] = useState({
pageX: 0,
pageY: 0,
- pageHeight: 0,
- pageWidth: 0,
+ pageHeight: defaultHeight || 0,
+ pageWidth: defaultWidth || 0,
});
const [settingsActive, setSettingsActive] = useState(false);
const $el = useRef(null);
diff --git a/packages/ui/primitives/document-flow/show-field-item.tsx b/packages/ui/primitives/document-flow/show-field-item.tsx
index 5cc2885d6..8007aff0b 100644
--- a/packages/ui/primitives/document-flow/show-field-item.tsx
+++ b/packages/ui/primitives/document-flow/show-field-item.tsx
@@ -2,10 +2,12 @@
import { Caveat } from 'next/font/google';
+import { useLingui } from '@lingui/react';
import type { Prisma } from '@prisma/client';
import { createPortal } from 'react-dom';
import { useFieldPageCoords } from '@documenso/lib/client-only/hooks/use-field-page-coords';
+import { parseMessageDescriptor } from '@documenso/lib/utils/i18n';
import { FieldType } from '@documenso/prisma/client';
import { cn } from '../../lib/utils';
@@ -25,6 +27,8 @@ export type ShowFieldItemProps = {
};
export const ShowFieldItem = ({ field, recipients }: ShowFieldItemProps) => {
+ const { _ } = useLingui();
+
const coords = useFieldPageCoords(field);
const signerEmail =
@@ -40,18 +44,18 @@ export const ShowFieldItem = ({ field, recipients }: ShowFieldItemProps) => {
width: `${coords.width}px`,
}}
>
-
+
- {FRIENDLY_FIELD_TYPE[field.type]}
+ {parseMessageDescriptor(_, FRIENDLY_FIELD_TYPE[field.type])}
-
+ {/*
{signerEmail}
-
+ */}
,
diff --git a/packages/ui/primitives/document-flow/types.ts b/packages/ui/primitives/document-flow/types.ts
index c98d71434..613fe0403 100644
--- a/packages/ui/primitives/document-flow/types.ts
+++ b/packages/ui/primitives/document-flow/types.ts
@@ -1,4 +1,5 @@
import type { MessageDescriptor } from '@lingui/core';
+import { msg } from '@lingui/macro';
import { z } from 'zod';
import { ZFieldMetaSchema } from '@documenso/lib/types/field-meta';
@@ -44,18 +45,18 @@ export const ZDocumentFlowFormSchema = z.object({
export type TDocumentFlowFormSchema = z.infer
;
-export const FRIENDLY_FIELD_TYPE: Record = {
- [FieldType.SIGNATURE]: 'Signature',
- [FieldType.FREE_SIGNATURE]: 'Free Signature',
- [FieldType.INITIALS]: 'Initials',
- [FieldType.TEXT]: 'Text',
- [FieldType.DATE]: 'Date',
- [FieldType.EMAIL]: 'Email',
- [FieldType.NAME]: 'Name',
- [FieldType.NUMBER]: 'Number',
- [FieldType.RADIO]: 'Radio',
- [FieldType.CHECKBOX]: 'Checkbox',
- [FieldType.DROPDOWN]: 'Select',
+export const FRIENDLY_FIELD_TYPE: Record = {
+ [FieldType.SIGNATURE]: msg`Signature`,
+ [FieldType.FREE_SIGNATURE]: msg`Free Signature`,
+ [FieldType.INITIALS]: msg`Initials`,
+ [FieldType.TEXT]: msg`Text`,
+ [FieldType.DATE]: msg`Date`,
+ [FieldType.EMAIL]: msg`Email`,
+ [FieldType.NAME]: msg`Name`,
+ [FieldType.NUMBER]: msg`Number`,
+ [FieldType.RADIO]: msg`Radio`,
+ [FieldType.CHECKBOX]: msg`Checkbox`,
+ [FieldType.DROPDOWN]: msg`Select`,
};
export interface DocumentFlowStep {
diff --git a/packages/ui/primitives/form/form-error-message.tsx b/packages/ui/primitives/form/form-error-message.tsx
index e429799da..7de28b585 100644
--- a/packages/ui/primitives/form/form-error-message.tsx
+++ b/packages/ui/primitives/form/form-error-message.tsx
@@ -1,3 +1,4 @@
+import { useLingui } from '@lingui/react';
import { AnimatePresence, motion } from 'framer-motion';
import { cn } from '../../lib/utils';
@@ -12,6 +13,15 @@ const isErrorWithMessage = (error: unknown): error is { message?: string } => {
};
export const FormErrorMessage = ({ error, className }: FormErrorMessageProps) => {
+ const { i18n } = useLingui();
+
+ let errorMessage = isErrorWithMessage(error) ? error.message : '';
+
+ // Checks to see if there's a translation for the string, since we're passing IDs for Zod errors.
+ if (typeof errorMessage === 'string' && i18n.t(errorMessage)) {
+ errorMessage = i18n.t(errorMessage);
+ }
+
return (
{isErrorWithMessage(error) && (
@@ -30,7 +40,7 @@ export const FormErrorMessage = ({ error, className }: FormErrorMessageProps) =>
}}
className={cn('text-xs text-red-500', className)}
>
- {error.message}
+ {errorMessage}
)}
diff --git a/packages/ui/primitives/form/form.tsx b/packages/ui/primitives/form/form.tsx
index f500accae..6614fccbe 100644
--- a/packages/ui/primitives/form/form.tsx
+++ b/packages/ui/primitives/form/form.tsx
@@ -1,5 +1,6 @@
import * as React from 'react';
+import { useLingui } from '@lingui/react';
import type * as LabelPrimitive from '@radix-ui/react-label';
import { Slot } from '@radix-ui/react-slot';
import { AnimatePresence, motion } from 'framer-motion';
@@ -136,13 +137,21 @@ const FormMessage = React.forwardRef<
HTMLParagraphElement,
React.HTMLAttributes
>(({ className, children, ...props }, ref) => {
+ const { i18n } = useLingui();
+
const { error, formMessageId } = useFormField();
- const body = error ? String(error?.message) : children;
+
+ let body = error ? String(error?.message) : children;
if (!body) {
return null;
}
+ // Checks to see if there's a translation for the string, since we're passing IDs for Zod errors.
+ if (typeof body === 'string' && i18n.t(body)) {
+ body = i18n.t(body);
+ }
+
return (
import('./pdf-viewer'), {
@@ -10,7 +11,9 @@ export const LazyPDFViewer = dynamic(async () => import('./pdf-viewer'), {
-
Loading document...
+
+ Loading document...
+
),
});
diff --git a/packages/ui/primitives/pdf-viewer.tsx b/packages/ui/primitives/pdf-viewer.tsx
index a1bce432d..95a380eb5 100644
--- a/packages/ui/primitives/pdf-viewer.tsx
+++ b/packages/ui/primitives/pdf-viewer.tsx
@@ -2,6 +2,8 @@
import React, { useEffect, useMemo, useRef, useState } from 'react';
+import { Trans, msg } from '@lingui/macro';
+import { useLingui } from '@lingui/react';
import { Loader } from 'lucide-react';
import { type PDFDocumentProxy, PasswordResponses } from 'pdfjs-dist';
import { Document as PDFDocument, Page as PDFPage, pdfjs } from 'react-pdf';
@@ -38,7 +40,9 @@ const PDFLoader = () => (
<>
- Loading document...
+
+ Loading document...
+
>
);
@@ -61,6 +65,7 @@ export const PDFViewer = ({
onPageClick,
...props
}: PDFViewerProps) => {
+ const { _ } = useLingui();
const { toast } = useToast();
const $el = useRef(null);
@@ -158,8 +163,8 @@ export const PDFViewer = ({
console.error(err);
toast({
- title: 'Error',
- description: 'An error occurred while loading the document.',
+ title: _(msg`Error`),
+ description: _(msg`An error occurred while loading the document.`),
variant: 'destructive',
});
}
@@ -211,8 +216,12 @@ export const PDFViewer = ({
{pdfError ? (
-
Something went wrong while loading the document.
-
Please try again or contact our support.
+
+ Something went wrong while loading the document.
+
+
+ Please try again or contact our support.
+
) : (
@@ -222,8 +231,12 @@ export const PDFViewer = ({
error={
-
Something went wrong while loading the document.
-
Please try again or contact our support.
+
+ Something went wrong while loading the document.
+
+
+ Please try again or contact our support.
+
}
@@ -243,7 +256,9 @@ export const PDFViewer = ({
/>
- Page {i + 1} of {numPages}
+
+ Page {i + 1} of {numPages}
+
))}
diff --git a/packages/ui/primitives/signature-pad/signature-pad.tsx b/packages/ui/primitives/signature-pad/signature-pad.tsx
index 6859d21ec..82e6b52b3 100644
--- a/packages/ui/primitives/signature-pad/signature-pad.tsx
+++ b/packages/ui/primitives/signature-pad/signature-pad.tsx
@@ -3,12 +3,15 @@
import type { HTMLAttributes, MouseEvent, PointerEvent, TouchEvent } from 'react';
import { useEffect, useMemo, useRef, useState } from 'react';
+import { Caveat } from 'next/font/google';
+
import { Trans } from '@lingui/macro';
import { Undo2 } from 'lucide-react';
import type { StrokeOptions } from 'perfect-freehand';
import { getStroke } from 'perfect-freehand';
import { unsafe_useEffectOnce } from '@documenso/lib/client-only/hooks/use-effect-once';
+import { Input } from '@documenso/ui/primitives/input';
import {
Select,
SelectContent,
@@ -21,12 +24,20 @@ import { cn } from '../../lib/utils';
import { getSvgPathFromStroke } from './helper';
import { Point } from './point';
+const fontCaveat = Caveat({
+ weight: ['500'],
+ subsets: ['latin'],
+ display: 'swap',
+ variable: '--font-caveat',
+});
+
const DPI = 2;
export type SignaturePadProps = Omit, 'onChange'> & {
onChange?: (_signatureDataUrl: string | null) => void;
containerClassName?: string;
disabled?: boolean;
+ allowTypedSignature?: boolean;
};
export const SignaturePad = ({
@@ -35,6 +46,7 @@ export const SignaturePad = ({
defaultValue,
onChange,
disabled = false,
+ allowTypedSignature,
...props
}: SignaturePadProps) => {
const $el = useRef(null);
@@ -44,6 +56,7 @@ export const SignaturePad = ({
const [lines, setLines] = useState([]);
const [currentLine, setCurrentLine] = useState([]);
const [selectedColor, setSelectedColor] = useState('black');
+ const [typedSignature, setTypedSignature] = useState('');
const perfectFreehandOptions = useMemo(() => {
const size = $el.current ? Math.min($el.current.height, $el.current.width) * 0.03 : 10;
@@ -181,34 +194,107 @@ export const SignaturePad = ({
onChange?.(null);
+ setTypedSignature('');
setLines([]);
setCurrentLine([]);
};
+ const renderTypedSignature = () => {
+ if ($el.current && typedSignature) {
+ const ctx = $el.current.getContext('2d');
+
+ if (ctx) {
+ const canvasWidth = $el.current.width;
+ const canvasHeight = $el.current.height;
+
+ ctx.clearRect(0, 0, canvasWidth, canvasHeight);
+ ctx.textAlign = 'center';
+ ctx.textBaseline = 'middle';
+ ctx.fillStyle = selectedColor;
+
+ // Calculate the desired width (25ch)
+ const desiredWidth = canvasWidth * 0.85; // 85% of canvas width
+
+ // Start with a base font size
+ let fontSize = 18;
+ ctx.font = `${fontSize}px ${fontCaveat.style.fontFamily}`;
+
+ // Measure 10 characters and calculate scale factor
+ const characterWidth = ctx.measureText('m'.repeat(10)).width;
+ const scaleFactor = desiredWidth / characterWidth;
+
+ // Apply scale factor to font size
+ fontSize = fontSize * scaleFactor;
+
+ // Adjust font size if it exceeds canvas width
+ ctx.font = `${fontSize}px ${fontCaveat.style.fontFamily}`;
+
+ const textWidth = ctx.measureText(typedSignature).width;
+
+ if (textWidth > desiredWidth) {
+ fontSize = fontSize * (desiredWidth / textWidth);
+ }
+
+ // Set final font and render text
+ ctx.font = `${fontSize}px ${fontCaveat.style.fontFamily}`;
+ ctx.fillText(typedSignature, canvasWidth / 2, canvasHeight / 2);
+ }
+ }
+ };
+
+ const handleTypedSignatureChange = (event: React.ChangeEvent) => {
+ const newValue = event.target.value;
+ setTypedSignature(newValue);
+
+ if (newValue.trim() !== '') {
+ onChange?.($el.current?.toDataURL() || null);
+ } else {
+ onChange?.(null);
+ }
+ };
+
+ useEffect(() => {
+ if (typedSignature.trim() !== '') {
+ renderTypedSignature();
+ onChange?.($el.current?.toDataURL() || null);
+ } else {
+ onClearClick();
+ }
+ }, [typedSignature, selectedColor]);
+
const onUndoClick = () => {
- if (lines.length === 0) {
+ if (lines.length === 0 && typedSignature.length === 0) {
return;
}
- const newLines = lines.slice(0, -1);
- setLines(newLines);
+ if (typedSignature.length > 0) {
+ const newTypedSignature = typedSignature.slice(0, -1);
+ setTypedSignature(newTypedSignature);
+ // You might want to call onChange here as well
+ // onChange?.(newTypedSignature);
+ } else {
+ const newLines = lines.slice(0, -1);
+ setLines(newLines);
- // Clear the canvas
- if ($el.current) {
- const ctx = $el.current.getContext('2d');
- const { width, height } = $el.current;
- ctx?.clearRect(0, 0, width, height);
+ // Clear and redraw the canvas
+ if ($el.current) {
+ const ctx = $el.current.getContext('2d');
+ const { width, height } = $el.current;
+ ctx?.clearRect(0, 0, width, height);
- if (typeof defaultValue === 'string' && $imageData.current) {
- ctx?.putImageData($imageData.current, 0, 0);
+ if (typeof defaultValue === 'string' && $imageData.current) {
+ ctx?.putImageData($imageData.current, 0, 0);
+ }
+
+ newLines.forEach((line) => {
+ const pathData = new Path2D(
+ getSvgPathFromStroke(getStroke(line, perfectFreehandOptions)),
+ );
+ ctx?.fill(pathData);
+ });
+
+ onChange?.($el.current.toDataURL());
}
-
- newLines.forEach((line) => {
- const pathData = new Path2D(getSvgPathFromStroke(getStroke(line, perfectFreehandOptions)));
- ctx?.fill(pathData);
- });
-
- onChange?.($el.current.toDataURL());
}
};
@@ -263,6 +349,21 @@ export const SignaturePad = ({
{...props}
/>
+ {allowTypedSignature && (
+ 0 || typedSignature.length > 0,
+ })}
+ >
+
+
+ )}
+
setSelectedColor(value)}>
@@ -311,13 +412,13 @@ export const SignaturePad = ({
- {lines.length > 0 && (
+ {(lines.length > 0 || typedSignature.length > 0) && (
onUndoClick()}
+ onClick={onUndoClick}
>
Undo
diff --git a/packages/ui/primitives/template-flow/add-template-fields.tsx b/packages/ui/primitives/template-flow/add-template-fields.tsx
index 4070c0932..6da8e27d3 100644
--- a/packages/ui/primitives/template-flow/add-template-fields.tsx
+++ b/packages/ui/primitives/template-flow/add-template-fields.tsx
@@ -5,6 +5,7 @@ import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
import { Caveat } from 'next/font/google';
import { Trans, msg } from '@lingui/macro';
+import { useLingui } from '@lingui/react';
import {
CalendarDays,
CheckSquare,
@@ -22,12 +23,13 @@ import { useFieldArray, useForm } from 'react-hook-form';
import { getBoundingClientRect } from '@documenso/lib/client-only/get-bounding-client-rect';
import { useDocumentElement } from '@documenso/lib/client-only/hooks/use-document-element';
import { PDF_VIEWER_PAGE_SELECTOR } from '@documenso/lib/constants/pdf-viewer';
-import { RECIPIENT_ROLES_DESCRIPTION_ENG } from '@documenso/lib/constants/recipient-roles';
+import { RECIPIENT_ROLES_DESCRIPTION } from '@documenso/lib/constants/recipient-roles';
import {
type TFieldMetaSchema as FieldMeta,
ZFieldMetaSchema,
} from '@documenso/lib/types/field-meta';
import { nanoid } from '@documenso/lib/universal/id';
+import { parseMessageDescriptor } from '@documenso/lib/utils/i18n';
import type { Field, Recipient } from '@documenso/prisma/client';
import { FieldType, RecipientRole } from '@documenso/prisma/client';
import { cn } from '@documenso/ui/lib/utils';
@@ -65,8 +67,11 @@ const fontCaveat = Caveat({
variable: '--font-caveat',
});
-const MIN_HEIGHT_PX = 20;
-const MIN_WIDTH_PX = 80;
+const MIN_HEIGHT_PX = 12;
+const MIN_WIDTH_PX = 36;
+
+const DEFAULT_HEIGHT_PX = MIN_HEIGHT_PX * 2.5;
+const DEFAULT_WIDTH_PX = MIN_WIDTH_PX * 2.5;
export type AddTemplateFieldsFormProps = {
documentFlow: DocumentFlowStep;
@@ -85,6 +90,8 @@ export const AddTemplateFieldsFormPartial = ({
onSubmit,
teamId,
}: AddTemplateFieldsFormProps) => {
+ const { _ } = useLingui();
+
const { isWithinPageBounds, getFieldPosition, getPage } = useDocumentElement();
const { currentStep, totalSteps, previousStep } = useStep();
const [showAdvancedSettings, setShowAdvancedSettings] = useState(false);
@@ -350,8 +357,8 @@ export const AddTemplateFieldsFormPartial = ({
}
fieldBounds.current = {
- height: Math.max(MIN_HEIGHT_PX),
- width: Math.max(MIN_WIDTH_PX),
+ height: Math.max(DEFAULT_HEIGHT_PX),
+ width: Math.max(DEFAULT_WIDTH_PX),
};
});
@@ -400,7 +407,10 @@ export const AddTemplateFieldsFormPartial = ({
{showAdvancedSettings && currentField ? (
- {FRIENDLY_FIELD_TYPE[selectedField]}
+
+ {parseMessageDescriptor(_, FRIENDLY_FIELD_TYPE[selectedField])}
+
)}
@@ -445,8 +457,10 @@ export const AddTemplateFieldsFormPartial = ({
recipientIndex={recipientIndex === -1 ? 0 : recipientIndex}
field={field}
disabled={selectedSigner?.email !== field.signerEmail}
- minHeight={fieldBounds.current.height}
- minWidth={fieldBounds.current.width}
+ minHeight={MIN_HEIGHT_PX}
+ minWidth={MIN_WIDTH_PX}
+ defaultHeight={DEFAULT_HEIGHT_PX}
+ defaultWidth={DEFAULT_WIDTH_PX}
passive={isFieldWithinBounds && !!selectedField}
onResize={(options) => onFieldResize(options, index)}
onMove={(options) => onFieldMove(options, index)}
@@ -501,8 +515,7 @@ export const AddTemplateFieldsFormPartial = ({
{recipientsByRoleToDisplay.map(([role, roleRecipients], roleIndex) => (
- {/* Todo: Translations - Add plural translations. */}
- {`${RECIPIENT_ROLES_DESCRIPTION_ENG[role].roleName}s`}
+ {_(RECIPIENT_ROLES_DESCRIPTION[role].roleNamePlural)}
{roleRecipients.length === 0 && (
@@ -785,7 +798,7 @@ export const AddTemplateFieldsFormPartial = ({
)}
>
- Checkbox
+ Checkbox
diff --git a/packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx b/packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx
index b9b8dd4a8..50335dac1 100644
--- a/packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx
+++ b/packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx
@@ -1,6 +1,6 @@
'use client';
-import React, { useCallback, useEffect, useId, useMemo, useRef, useState } from 'react';
+import { useCallback, useEffect, useId, useMemo, useRef, useState } from 'react';
import type { DropResult, SensorAPI } from '@hello-pangea/dnd';
import { DragDropContext, Draggable, Droppable } from '@hello-pangea/dnd';
@@ -94,7 +94,7 @@ export const AddTemplatePlaceholderRecipientsFormPartial = ({
];
}
- return recipients.map((recipient, index) => ({
+ let mappedRecipients = recipients.map((recipient, index) => ({
nativeId: recipient.id,
formId: String(recipient.id),
name: recipient.name,
@@ -103,6 +103,14 @@ export const AddTemplatePlaceholderRecipientsFormPartial = ({
actionAuth: ZRecipientAuthOptionsSchema.parse(recipient.authOptions)?.actionAuth ?? undefined,
signingOrder: recipient.signingOrder ?? index + 1,
}));
+
+ if (signingOrder === DocumentSigningOrder.SEQUENTIAL) {
+ mappedRecipients = mappedRecipients.sort(
+ (a, b) => (a.signingOrder ?? 0) - (b.signingOrder ?? 0),
+ );
+ }
+
+ return mappedRecipients;
};
const form = useForm
({
diff --git a/packages/ui/primitives/template-flow/add-template-settings.tsx b/packages/ui/primitives/template-flow/add-template-settings.tsx
index 73302ae55..867614b73 100644
--- a/packages/ui/primitives/template-flow/add-template-settings.tsx
+++ b/packages/ui/primitives/template-flow/add-template-settings.tsx
@@ -9,9 +9,12 @@ import { InfoIcon } from 'lucide-react';
import { useForm } from 'react-hook-form';
import { DATE_FORMATS, DEFAULT_DOCUMENT_DATE_FORMAT } from '@documenso/lib/constants/date-formats';
+import { DOCUMENT_DISTRIBUTION_METHODS } from '@documenso/lib/constants/document';
+import { SUPPORTED_LANGUAGES } from '@documenso/lib/constants/i18n';
import { DEFAULT_DOCUMENT_TIME_ZONE, TIME_ZONES } from '@documenso/lib/constants/time-zones';
+import { ZDocumentEmailSettingsSchema } from '@documenso/lib/types/document-email';
import { extractDocumentAuthMethods } from '@documenso/lib/utils/document-auth';
-import { type Field, type Recipient } from '@documenso/prisma/client';
+import { DocumentDistributionMethod, type Field, type Recipient } from '@documenso/prisma/client';
import type { TemplateWithData } from '@documenso/prisma/types/template';
import {
DocumentGlobalAuthAccessSelect,
@@ -37,6 +40,7 @@ import {
FormMessage,
} from '@documenso/ui/primitives/form/form';
+import { DocumentEmailCheckboxes } from '../../components/document/document-email-checkboxes';
import { Combobox } from '../combobox';
import {
DocumentFlowFormContainerActions,
@@ -92,17 +96,24 @@ export const AddTemplateSettingsFormPartial = ({
message: template.templateMeta?.message ?? '',
timezone: template.templateMeta?.timezone ?? DEFAULT_DOCUMENT_TIME_ZONE,
dateFormat: template.templateMeta?.dateFormat ?? DEFAULT_DOCUMENT_DATE_FORMAT,
+ distributionMethod:
+ template.templateMeta?.distributionMethod || DocumentDistributionMethod.EMAIL,
redirectUrl: template.templateMeta?.redirectUrl ?? '',
+ language: template.templateMeta?.language ?? 'en',
+ emailSettings: ZDocumentEmailSettingsSchema.parse(template?.templateMeta?.emailSettings),
},
},
});
const { stepIndex, currentStep, totalSteps, previousStep } = useStep();
+ const distributionMethod = form.watch('meta.distributionMethod');
+ const emailSettings = form.watch('meta.emailSettings');
+
// We almost always want to set the timezone to the user's local timezone to avoid confusion
// when the document is signed.
useEffect(() => {
- if (!form.formState.touchedFields.meta?.timezone) {
+ if (!form.formState.touchedFields.meta?.timezone && !template.templateMeta?.timezone) {
form.setValue('meta.timezone', Intl.DateTimeFormat().resolvedOptions().timeZone);
}
}, [form, form.setValue, form.formState.touchedFields.meta?.timezone]);
@@ -142,6 +153,46 @@ export const AddTemplateSettingsFormPartial = ({
)}
/>
+ (
+
+
+ Language
+
+
+
+
+
+
+ Controls the language for the document, including the language to be used
+ for email notifications, and the final certificate that is generated and
+ attached to the document.
+
+
+
+
+
+
+
+
+
+
+
+ {Object.entries(SUPPORTED_LANGUAGES).map(([code, language]) => (
+
+ {language.full}
+
+ ))}
+
+
+
+
+
+ )}
+ />
+
+ (
+
+
+ Document Distribution Method
+
+
+
+
+
+
+
+
+ Document Distribution Method
+
+
+
+
+
+ This is how the document will reach the recipients once the document is
+ ready for signing.
+
+
+
+
+
+
+ Email - The recipient will be emailed the document to
+ sign, approve, etc.
+
+
+
+
+ Links - We will generate links which you can send to
+ the recipients manually.
+
+
+
+
+
+ Note - If you use Links in combination with direct
+ templates, you will need to manually send the links to the remaining
+ recipients.
+
+
+
+
+
+
+
+
+
+
+
+
+ {Object.values(DOCUMENT_DISTRIBUTION_METHODS).map(
+ ({ value, description }) => (
+
+ {_(description)}
+
+ ),
+ )}
+
+
+
+
+ )}
+ />
+
{isEnterprise && (
)}
-
-
-
- Email Options
-
+ {distributionMethod === DocumentDistributionMethod.EMAIL && (
+
+
+
+ Email Options
+
-
-
+
+
+
+ )}
diff --git a/packages/ui/primitives/template-flow/add-template-settings.types.tsx b/packages/ui/primitives/template-flow/add-template-settings.types.tsx
index 4f0d3f61a..b200afd8e 100644
--- a/packages/ui/primitives/template-flow/add-template-settings.types.tsx
+++ b/packages/ui/primitives/template-flow/add-template-settings.types.tsx
@@ -1,14 +1,17 @@
import { z } from 'zod';
import { DEFAULT_DOCUMENT_DATE_FORMAT } from '@documenso/lib/constants/date-formats';
+import { SUPPORTED_LANGUAGE_CODES } from '@documenso/lib/constants/i18n';
import { DEFAULT_DOCUMENT_TIME_ZONE } from '@documenso/lib/constants/time-zones';
import {
ZDocumentAccessAuthTypesSchema,
ZDocumentActionAuthTypesSchema,
} from '@documenso/lib/types/document-auth';
+import { ZDocumentEmailSettingsSchema } from '@documenso/lib/types/document-email';
import { isValidRedirectUrl } from '@documenso/lib/utils/is-valid-redirect-url';
import { ZMapNegativeOneToUndefinedSchema } from '../document-flow/add-settings.types';
+import { DocumentDistributionMethod } from '.prisma/client';
export const ZAddTemplateSettingsFormSchema = z.object({
title: z.string().trim().min(1, { message: "Title can't be empty" }),
@@ -24,6 +27,10 @@ export const ZAddTemplateSettingsFormSchema = z.object({
message: z.string(),
timezone: z.string().optional().default(DEFAULT_DOCUMENT_TIME_ZONE),
dateFormat: z.string().optional().default(DEFAULT_DOCUMENT_DATE_FORMAT),
+ distributionMethod: z
+ .nativeEnum(DocumentDistributionMethod)
+ .optional()
+ .default(DocumentDistributionMethod.EMAIL),
redirectUrl: z
.string()
.optional()
@@ -31,6 +38,11 @@ export const ZAddTemplateSettingsFormSchema = z.object({
message:
'Please enter a valid URL, make sure you include http:// or https:// part of the url.',
}),
+ language: z
+ .union([z.string(), z.enum(SUPPORTED_LANGUAGE_CODES)])
+ .optional()
+ .default('en'),
+ emailSettings: ZDocumentEmailSettingsSchema,
}),
});
diff --git a/turbo.json b/turbo.json
index 0004b30d1..3a04158c9 100644
--- a/turbo.json
+++ b/turbo.json
@@ -34,9 +34,6 @@
"dependsOn": ["^build"],
"cache": false
},
- "translate:extract": {
- "cache": false
- },
"translate:compile": {
"cache": false
}
@@ -108,6 +105,7 @@
"NEXT_PRIVATE_SMTP_UNSAFE_IGNORE_TLS",
"NEXT_PRIVATE_SMTP_FROM_NAME",
"NEXT_PRIVATE_SMTP_FROM_ADDRESS",
+ "NEXT_PRIVATE_SMTP_SERVICE",
"NEXT_PRIVATE_STRIPE_API_KEY",
"NEXT_PRIVATE_STRIPE_WEBHOOK_SECRET",
"NEXT_PRIVATE_GITHUB_TOKEN",