Compare commits
14 Commits
v1.9.0-rc.
...
fix/refact
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
22665543c0 | ||
|
|
df33fbf91b | ||
|
|
ee6efc4cca | ||
|
|
6da15ab12b | ||
|
|
7ef2a8769b | ||
|
|
487f52e194 | ||
|
|
39b1c5bbec | ||
|
|
32857bbfeb | ||
|
|
41218e2585 | ||
|
|
a1a2d0801b | ||
|
|
c588c09b26 | ||
|
|
74382e21e7 | ||
|
|
8a7ec7e982 | ||
|
|
2948a33bf9 |
2
.github/workflows/e2e-tests.yml
vendored
2
.github/workflows/e2e-tests.yml
vendored
@@ -8,7 +8,7 @@ jobs:
|
||||
e2e_tests:
|
||||
name: 'E2E Tests'
|
||||
timeout-minutes: 60
|
||||
runs-on: ubuntu-latest
|
||||
runs-on: ubuntu-22.04
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ import '../styles.css';
|
||||
export default function App({ Component, pageProps }) {
|
||||
return (
|
||||
<PlausibleProvider>
|
||||
<Component {...pageProps} />;
|
||||
<Component {...pageProps} />
|
||||
</PlausibleProvider>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -10,16 +10,13 @@ import { msg } from '@lingui/macro';
|
||||
import { useAnalytics } from '@documenso/lib/client-only/hooks/use-analytics';
|
||||
import { NEXT_PUBLIC_WEBAPP_URL } from '@documenso/lib/constants/app';
|
||||
import { base64 } from '@documenso/lib/universal/base64';
|
||||
import { putPdfFile } from '@documenso/lib/universal/upload/put-file';
|
||||
import type { Field, Recipient } from '@documenso/prisma/client';
|
||||
import { DocumentDataType, Prisma } from '@documenso/prisma/client';
|
||||
import { trpc } from '@documenso/trpc/react';
|
||||
import { Card, CardContent } from '@documenso/ui/primitives/card';
|
||||
import { DocumentDropzone } from '@documenso/ui/primitives/document-dropzone';
|
||||
import { AddFieldsFormPartial } from '@documenso/ui/primitives/document-flow/add-fields';
|
||||
import type { TAddFieldsFormSchema } from '@documenso/ui/primitives/document-flow/add-fields.types';
|
||||
import { AddSignatureFormPartial } from '@documenso/ui/primitives/document-flow/add-signature';
|
||||
import type { TAddSignatureFormSchema } from '@documenso/ui/primitives/document-flow/add-signature.types';
|
||||
import { DocumentFlowFormContainer } from '@documenso/ui/primitives/document-flow/document-flow-root';
|
||||
import type { DocumentFlowStep } from '@documenso/ui/primitives/document-flow/types';
|
||||
import { LazyPDFViewer } from '@documenso/ui/primitives/lazy-pdf-viewer';
|
||||
@@ -43,9 +40,6 @@ export const SinglePlayerClient = () => {
|
||||
const [step, setStep] = useState<SinglePlayerModeStep>('fields');
|
||||
const [fields, setFields] = useState<Field[]>([]);
|
||||
|
||||
const { mutateAsync: createSinglePlayerDocument } =
|
||||
trpc.singleplayer.createSinglePlayerDocument.useMutation();
|
||||
|
||||
const documentFlow: Record<SinglePlayerModeStep, DocumentFlowStep> = {
|
||||
fields: {
|
||||
title: msg`Add document`,
|
||||
@@ -112,38 +106,35 @@ export const SinglePlayerClient = () => {
|
||||
/**
|
||||
* Upload, create, sign and send the document.
|
||||
*/
|
||||
const onSignSubmit = async (data: TAddSignatureFormSchema) => {
|
||||
const onSignSubmit = (data: unknown) => {
|
||||
if (!uploadedFile) {
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
const putFileData = await putPdfFile(uploadedFile.file);
|
||||
|
||||
const documentToken = await createSinglePlayerDocument({
|
||||
documentData: {
|
||||
type: putFileData.type,
|
||||
data: putFileData.data,
|
||||
},
|
||||
documentName: uploadedFile.file.name,
|
||||
signer: data,
|
||||
fields: fields.map((field) => ({
|
||||
page: field.page,
|
||||
type: field.type,
|
||||
positionX: field.positionX.toNumber(),
|
||||
positionY: field.positionY.toNumber(),
|
||||
width: field.width.toNumber(),
|
||||
height: field.height.toNumber(),
|
||||
fieldMeta: field.fieldMeta,
|
||||
})),
|
||||
fieldMeta: { type: undefined },
|
||||
});
|
||||
|
||||
analytics.capture('Marketing: SPM - Document signed', {
|
||||
signer: data.email,
|
||||
});
|
||||
|
||||
router.push(`/singleplayer/${documentToken}/success`);
|
||||
// const putFileData = await putPdfFile(uploadedFile.file);
|
||||
// const documentToken = await createSinglePlayerDocument({
|
||||
// documentData: {
|
||||
// type: putFileData.type,
|
||||
// data: putFileData.data,
|
||||
// },
|
||||
// documentName: uploadedFile.file.name,
|
||||
// signer: data,
|
||||
// fields: fields.map((field) => ({
|
||||
// page: field.page,
|
||||
// type: field.type,
|
||||
// positionX: field.positionX.toNumber(),
|
||||
// positionY: field.positionY.toNumber(),
|
||||
// width: field.width.toNumber(),
|
||||
// height: field.height.toNumber(),
|
||||
// fieldMeta: field.fieldMeta,
|
||||
// })),
|
||||
// fieldMeta: { type: undefined },
|
||||
// });
|
||||
// analytics.capture('Marketing: SPM - Document signed', {
|
||||
// signer: data.email,
|
||||
// });
|
||||
// router.push(`/singleplayer/${documentToken}/success`);
|
||||
} catch {
|
||||
toast({
|
||||
title: 'Something went wrong',
|
||||
|
||||
@@ -2,7 +2,7 @@ import cors from '@/lib/cors';
|
||||
import { getUserMonthlyGrowth } from '@/lib/growth/get-user-monthly-growth';
|
||||
|
||||
export async function GET(request: Request) {
|
||||
const totalUsers = await getUserMonthlyGrowth("cumulative");
|
||||
const totalUsers = await getUserMonthlyGrowth('cumulative');
|
||||
|
||||
return cors(
|
||||
request,
|
||||
|
||||
@@ -30,10 +30,10 @@ function isOriginAllowed(origin: string, allowed: StaticOrigin): boolean {
|
||||
return Array.isArray(allowed)
|
||||
? allowed.some((o) => isOriginAllowed(origin, o))
|
||||
: typeof allowed === 'string'
|
||||
? origin === allowed
|
||||
: allowed instanceof RegExp
|
||||
? allowed.test(origin)
|
||||
: !!allowed;
|
||||
? origin === allowed
|
||||
: allowed instanceof RegExp
|
||||
? allowed.test(origin)
|
||||
: !!allowed;
|
||||
}
|
||||
|
||||
function getOriginHeaders(reqOrigin: string | undefined, origin: StaticOrigin) {
|
||||
|
||||
@@ -30,8 +30,8 @@ export type DeleteUserDialogProps = {
|
||||
};
|
||||
|
||||
export const DeleteUserDialog = ({ className, user }: DeleteUserDialogProps) => {
|
||||
const { toast } = useToast();
|
||||
const { _ } = useLingui();
|
||||
const { toast } = useToast();
|
||||
|
||||
const router = useRouter();
|
||||
|
||||
@@ -44,7 +44,6 @@ export const DeleteUserDialog = ({ className, user }: DeleteUserDialogProps) =>
|
||||
try {
|
||||
await deleteUser({
|
||||
id: user.id,
|
||||
email,
|
||||
});
|
||||
|
||||
toast({
|
||||
@@ -78,7 +77,7 @@ export const DeleteUserDialog = ({ className, user }: DeleteUserDialogProps) =>
|
||||
return (
|
||||
<div className={className}>
|
||||
<Alert
|
||||
className="flex flex-col items-center justify-between gap-4 p-6 md:flex-row "
|
||||
className="flex flex-col items-center justify-between gap-4 p-6 md:flex-row"
|
||||
variant="neutral"
|
||||
>
|
||||
<div>
|
||||
|
||||
@@ -0,0 +1,141 @@
|
||||
'use client';
|
||||
|
||||
import { useState } from 'react';
|
||||
|
||||
import { Trans, msg } from '@lingui/macro';
|
||||
import { useLingui } from '@lingui/react';
|
||||
import { match } from 'ts-pattern';
|
||||
|
||||
import { AppError, AppErrorCode } from '@documenso/lib/errors/app-error';
|
||||
import type { User } from '@documenso/prisma/client';
|
||||
import { trpc } from '@documenso/trpc/react';
|
||||
import { Alert, AlertDescription, AlertTitle } from '@documenso/ui/primitives/alert';
|
||||
import { Button } from '@documenso/ui/primitives/button';
|
||||
import {
|
||||
Dialog,
|
||||
DialogContent,
|
||||
DialogDescription,
|
||||
DialogFooter,
|
||||
DialogHeader,
|
||||
DialogTitle,
|
||||
DialogTrigger,
|
||||
} from '@documenso/ui/primitives/dialog';
|
||||
import { Input } from '@documenso/ui/primitives/input';
|
||||
import { useToast } from '@documenso/ui/primitives/use-toast';
|
||||
|
||||
export type DisableUserDialogProps = {
|
||||
className?: string;
|
||||
userToDisable: User;
|
||||
};
|
||||
|
||||
export const DisableUserDialog = ({ className, userToDisable }: DisableUserDialogProps) => {
|
||||
const { _ } = useLingui();
|
||||
const { toast } = useToast();
|
||||
|
||||
const [email, setEmail] = useState('');
|
||||
|
||||
const { mutateAsync: disableUser, isLoading: isDisablingUser } =
|
||||
trpc.admin.disableUser.useMutation();
|
||||
|
||||
const onDisableAccount = async () => {
|
||||
try {
|
||||
await disableUser({
|
||||
id: userToDisable.id,
|
||||
});
|
||||
|
||||
toast({
|
||||
title: _(msg`Account disabled`),
|
||||
description: _(msg`The account has been disabled successfully.`),
|
||||
duration: 5000,
|
||||
});
|
||||
} catch (err) {
|
||||
const error = AppError.parseError(err);
|
||||
|
||||
const errorMessage = match(error.code)
|
||||
.with(AppErrorCode.NOT_FOUND, () => msg`User not found.`)
|
||||
.with(AppErrorCode.UNAUTHORIZED, () => msg`You are not authorized to disable this user.`)
|
||||
.otherwise(() => msg`An error occurred while disabling the user.`);
|
||||
|
||||
toast({
|
||||
title: _(msg`Error`),
|
||||
description: _(errorMessage),
|
||||
variant: 'destructive',
|
||||
duration: 7500,
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
return (
|
||||
<div className={className}>
|
||||
<Alert
|
||||
className="flex flex-col items-center justify-between gap-4 p-6 md:flex-row"
|
||||
variant="neutral"
|
||||
>
|
||||
<div>
|
||||
<AlertTitle>Disable Account</AlertTitle>
|
||||
<AlertDescription className="mr-2">
|
||||
<Trans>
|
||||
Disabling the user results in the user not being able to use the account. It also
|
||||
disables all the related contents such as subscription, webhooks, teams, and API keys.
|
||||
</Trans>
|
||||
</AlertDescription>
|
||||
</div>
|
||||
|
||||
<div className="flex-shrink-0">
|
||||
<Dialog>
|
||||
<DialogTrigger asChild>
|
||||
<Button variant="destructive">
|
||||
<Trans>Disable Account</Trans>
|
||||
</Button>
|
||||
</DialogTrigger>
|
||||
|
||||
<DialogContent>
|
||||
<DialogHeader className="space-y-4">
|
||||
<DialogTitle>
|
||||
<Trans>Disable Account</Trans>
|
||||
</DialogTitle>
|
||||
|
||||
<Alert variant="destructive">
|
||||
<AlertDescription className="selection:bg-red-100">
|
||||
<Trans>
|
||||
This action is reversible, but please be careful as the account may be
|
||||
affected permanently (e.g. their settings and contents not being restored
|
||||
properly).
|
||||
</Trans>
|
||||
</AlertDescription>
|
||||
</Alert>
|
||||
</DialogHeader>
|
||||
|
||||
<div>
|
||||
<DialogDescription>
|
||||
<Trans>
|
||||
To confirm, please enter the accounts email address <br />({userToDisable.email}
|
||||
).
|
||||
</Trans>
|
||||
</DialogDescription>
|
||||
|
||||
<Input
|
||||
className="mt-2"
|
||||
type="email"
|
||||
value={email}
|
||||
onChange={(e) => setEmail(e.target.value)}
|
||||
/>
|
||||
</div>
|
||||
|
||||
<DialogFooter>
|
||||
<Button
|
||||
onClick={onDisableAccount}
|
||||
loading={isDisablingUser}
|
||||
variant="destructive"
|
||||
disabled={email !== userToDisable.email}
|
||||
>
|
||||
<Trans>Disable account</Trans>
|
||||
</Button>
|
||||
</DialogFooter>
|
||||
</DialogContent>
|
||||
</Dialog>
|
||||
</div>
|
||||
</Alert>
|
||||
</div>
|
||||
);
|
||||
};
|
||||
@@ -0,0 +1,130 @@
|
||||
'use client';
|
||||
|
||||
import { useState } from 'react';
|
||||
|
||||
import { Trans, msg } from '@lingui/macro';
|
||||
import { useLingui } from '@lingui/react';
|
||||
import { match } from 'ts-pattern';
|
||||
|
||||
import { AppError, AppErrorCode } from '@documenso/lib/errors/app-error';
|
||||
import type { User } from '@documenso/prisma/client';
|
||||
import { trpc } from '@documenso/trpc/react';
|
||||
import { Alert, AlertDescription, AlertTitle } from '@documenso/ui/primitives/alert';
|
||||
import { Button } from '@documenso/ui/primitives/button';
|
||||
import {
|
||||
Dialog,
|
||||
DialogContent,
|
||||
DialogDescription,
|
||||
DialogFooter,
|
||||
DialogHeader,
|
||||
DialogTitle,
|
||||
DialogTrigger,
|
||||
} from '@documenso/ui/primitives/dialog';
|
||||
import { Input } from '@documenso/ui/primitives/input';
|
||||
import { useToast } from '@documenso/ui/primitives/use-toast';
|
||||
|
||||
export type EnableUserDialogProps = {
|
||||
className?: string;
|
||||
userToEnable: User;
|
||||
};
|
||||
|
||||
export const EnableUserDialog = ({ className, userToEnable }: EnableUserDialogProps) => {
|
||||
const { toast } = useToast();
|
||||
const { _ } = useLingui();
|
||||
|
||||
const [email, setEmail] = useState('');
|
||||
|
||||
const { mutateAsync: enableUser, isLoading: isEnablingUser } =
|
||||
trpc.admin.enableUser.useMutation();
|
||||
|
||||
const onEnableAccount = async () => {
|
||||
try {
|
||||
await enableUser({
|
||||
id: userToEnable.id,
|
||||
});
|
||||
|
||||
toast({
|
||||
title: _(msg`Account enabled`),
|
||||
description: _(msg`The account has been enabled successfully.`),
|
||||
duration: 5000,
|
||||
});
|
||||
} catch (err) {
|
||||
const error = AppError.parseError(err);
|
||||
|
||||
const errorMessage = match(error.code)
|
||||
.with(AppErrorCode.NOT_FOUND, () => msg`User not found.`)
|
||||
.with(AppErrorCode.UNAUTHORIZED, () => msg`You are not authorized to enable this user.`)
|
||||
.otherwise(() => msg`An error occurred while enabling the user.`);
|
||||
|
||||
toast({
|
||||
title: _(msg`Error`),
|
||||
description: _(errorMessage),
|
||||
variant: 'destructive',
|
||||
duration: 7500,
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
return (
|
||||
<div className={className}>
|
||||
<Alert
|
||||
className="flex flex-col items-center justify-between gap-4 p-6 md:flex-row"
|
||||
variant="neutral"
|
||||
>
|
||||
<div>
|
||||
<AlertTitle>Enable Account</AlertTitle>
|
||||
<AlertDescription className="mr-2">
|
||||
<Trans>
|
||||
Enabling the account results in the user being able to use the account again, and all
|
||||
the related features such as webhooks, teams, and API keys for example.
|
||||
</Trans>
|
||||
</AlertDescription>
|
||||
</div>
|
||||
|
||||
<div className="flex-shrink-0">
|
||||
<Dialog>
|
||||
<DialogTrigger asChild>
|
||||
<Button>
|
||||
<Trans>Enable Account</Trans>
|
||||
</Button>
|
||||
</DialogTrigger>
|
||||
|
||||
<DialogContent>
|
||||
<DialogHeader className="space-y-4">
|
||||
<DialogTitle>
|
||||
<Trans>Enable Account</Trans>
|
||||
</DialogTitle>
|
||||
</DialogHeader>
|
||||
|
||||
<div>
|
||||
<DialogDescription>
|
||||
<Trans>
|
||||
To confirm, please enter the accounts email address <br />({userToEnable.email}
|
||||
).
|
||||
</Trans>
|
||||
</DialogDescription>
|
||||
|
||||
<Input
|
||||
className="mt-2"
|
||||
type="email"
|
||||
value={email}
|
||||
onChange={(e) => setEmail(e.target.value)}
|
||||
/>
|
||||
</div>
|
||||
|
||||
<DialogFooter>
|
||||
<Button
|
||||
onClick={onEnableAccount}
|
||||
loading={isEnablingUser}
|
||||
disabled={email !== userToEnable.email}
|
||||
>
|
||||
<Trans>Enable account</Trans>
|
||||
</Button>
|
||||
</DialogFooter>
|
||||
</DialogContent>
|
||||
</Dialog>
|
||||
</div>
|
||||
</Alert>
|
||||
</div>
|
||||
);
|
||||
};
|
||||
@@ -23,6 +23,8 @@ import { Input } from '@documenso/ui/primitives/input';
|
||||
import { useToast } from '@documenso/ui/primitives/use-toast';
|
||||
|
||||
import { DeleteUserDialog } from './delete-user-dialog';
|
||||
import { DisableUserDialog } from './disable-user-dialog';
|
||||
import { EnableUserDialog } from './enable-user-dialog';
|
||||
import { MultiSelectRoleCombobox } from './multiselect-role-combobox';
|
||||
|
||||
const ZUserFormSchema = ZAdminUpdateProfileMutationSchema.omit({ id: true });
|
||||
@@ -35,7 +37,7 @@ export default function UserPage({ params }: { params: { id: number } }) {
|
||||
|
||||
const router = useRouter();
|
||||
|
||||
const { data: user } = trpc.profile.getUser.useQuery(
|
||||
const { data: user } = trpc.admin.getUser.useQuery(
|
||||
{
|
||||
id: Number(params.id),
|
||||
},
|
||||
@@ -153,7 +155,11 @@ export default function UserPage({ params }: { params: { id: number } }) {
|
||||
|
||||
<hr className="my-4" />
|
||||
|
||||
{user && <DeleteUserDialog user={user} />}
|
||||
<div className="flex flex-col items-center gap-4">
|
||||
{user && <DeleteUserDialog user={user} />}
|
||||
{user && user.disabled && <EnableUserDialog userToEnable={user} />}
|
||||
{user && !user.disabled && <DisableUserDialog userToDisable={user} />}
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -132,7 +132,7 @@ export const EditDocumentForm = ({
|
||||
},
|
||||
});
|
||||
|
||||
const { mutateAsync: addSigners } = trpc.recipient.addSigners.useMutation({
|
||||
const { mutateAsync: addSigners } = trpc.recipient.setDocumentRecipients.useMutation({
|
||||
...DO_NOT_INVALIDATE_QUERY_ON_MUTATION,
|
||||
onSuccess: ({ recipients: newRecipients }) => {
|
||||
utils.document.getDocumentWithDetailsById.setData(
|
||||
|
||||
@@ -178,7 +178,7 @@ export const DropdownField = ({
|
||||
)}
|
||||
|
||||
{!field.inserted && (
|
||||
<p className="group-hover:text-primary text-muted-foreground flex flex-col items-center justify-center duration-200 ">
|
||||
<p className="group-hover:text-primary text-muted-foreground flex flex-col items-center justify-center duration-200">
|
||||
<Select value={localChoice} onValueChange={handleSelectItem}>
|
||||
<SelectTrigger
|
||||
className={cn(
|
||||
|
||||
@@ -11,6 +11,7 @@ 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 { isFieldUnsignedAndRequired } from '@documenso/lib/utils/advanced-fields-helpers';
|
||||
import { sortFieldsByPosition, validateFieldsInserted } from '@documenso/lib/utils/fields';
|
||||
import { type Field, FieldType, type Recipient, RecipientRole } from '@documenso/prisma/client';
|
||||
import { trpc } from '@documenso/trpc/react';
|
||||
@@ -57,26 +58,31 @@ export const SigningForm = ({
|
||||
// Keep the loading state going if successful since the redirect may take some time.
|
||||
const isSubmitting = formState.isSubmitting || formState.isSubmitSuccessful;
|
||||
|
||||
const fieldsRequiringValidation = useMemo(
|
||||
() => fields.filter(isFieldUnsignedAndRequired),
|
||||
[fields],
|
||||
);
|
||||
|
||||
const hasSignatureField = fields.some((field) => field.type === FieldType.SIGNATURE);
|
||||
|
||||
const uninsertedFields = useMemo(() => {
|
||||
return sortFieldsByPosition(fields.filter((field) => !field.inserted));
|
||||
return sortFieldsByPosition(fieldsRequiringValidation.filter((field) => !field.inserted));
|
||||
}, [fields]);
|
||||
|
||||
const fieldsValidated = () => {
|
||||
setValidateUninsertedFields(true);
|
||||
validateFieldsInserted(fields);
|
||||
validateFieldsInserted(fieldsRequiringValidation);
|
||||
};
|
||||
|
||||
const onFormSubmit = async () => {
|
||||
setValidateUninsertedFields(true);
|
||||
|
||||
const isFieldsValid = validateFieldsInserted(fieldsRequiringValidation);
|
||||
|
||||
if (hasSignatureField && !signatureValid) {
|
||||
return;
|
||||
}
|
||||
|
||||
const isFieldsValid = validateFieldsInserted(fields);
|
||||
|
||||
if (!isFieldsValid) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -205,7 +205,7 @@ export const NameField = ({ field, recipient, onSignField, onUnsignField }: Name
|
||||
<div className="flex w-full flex-1 flex-nowrap gap-4">
|
||||
<Button
|
||||
type="button"
|
||||
className="dark:bg-muted dark:hover:bg-muted/80 flex-1 bg-black/5 hover:bg-black/10"
|
||||
className="dark:bg-muted dark:hover:bg-muted/80 flex-1 bg-black/5 hover:bg-black/10"
|
||||
variant="secondary"
|
||||
onClick={() => {
|
||||
setShowFullNameModal(false);
|
||||
|
||||
@@ -318,7 +318,7 @@ export const NumberField = ({ field, recipient, onSignField, onUnsignField }: Nu
|
||||
<div className="flex w-full flex-1 flex-nowrap gap-4">
|
||||
<Button
|
||||
type="button"
|
||||
className="dark:bg-muted dark:hover:bg-muted/80 flex-1 bg-black/5 hover:bg-black/10"
|
||||
className="dark:bg-muted dark:hover:bg-muted/80 flex-1 bg-black/5 hover:bg-black/10"
|
||||
variant="secondary"
|
||||
onClick={() => {
|
||||
setShowRadioModal(false);
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
import { useState } from 'react';
|
||||
import { useMemo, useState } from 'react';
|
||||
|
||||
import { Trans } from '@lingui/macro';
|
||||
|
||||
import { fieldsContainUnsignedRequiredField } from '@documenso/lib/utils/advanced-fields-helpers';
|
||||
import type { Field } from '@documenso/prisma/client';
|
||||
import { RecipientRole } from '@documenso/prisma/client';
|
||||
import { Button } from '@documenso/ui/primitives/button';
|
||||
@@ -36,7 +37,7 @@ export const SignDialog = ({
|
||||
}: SignDialogProps) => {
|
||||
const [showDialog, setShowDialog] = useState(false);
|
||||
|
||||
const isComplete = fields.every((field) => field.inserted);
|
||||
const isComplete = useMemo(() => !fieldsContainUnsignedRequiredField(fields), [fields]);
|
||||
|
||||
const handleOpenChange = (open: boolean) => {
|
||||
if (isSubmitting || !isComplete) {
|
||||
|
||||
@@ -214,15 +214,15 @@ export const TextField = ({ field, recipient, onSignField, onUnsignField }: Text
|
||||
parsedField?.label && parsedField.label.length < 20
|
||||
? parsedField.label
|
||||
: parsedField?.label
|
||||
? parsedField?.label.substring(0, 20) + '...'
|
||||
: undefined;
|
||||
? parsedField?.label.substring(0, 20) + '...'
|
||||
: undefined;
|
||||
|
||||
const textDisplay =
|
||||
parsedField?.text && parsedField.text.length < 20
|
||||
? parsedField.text
|
||||
: parsedField?.text
|
||||
? parsedField?.text.substring(0, 20) + '...'
|
||||
: undefined;
|
||||
? parsedField?.text.substring(0, 20) + '...'
|
||||
: undefined;
|
||||
|
||||
const fieldDisplayName = labelDisplay ? labelDisplay : textDisplay;
|
||||
const charactersRemaining = (parsedFieldMeta?.characterLimit ?? 0) - (localText.length ?? 0);
|
||||
@@ -325,7 +325,7 @@ export const TextField = ({ field, recipient, onSignField, onUnsignField }: Text
|
||||
<div className="mt-4 flex w-full flex-1 flex-nowrap gap-4">
|
||||
<Button
|
||||
type="button"
|
||||
className="dark:bg-muted dark:hover:bg-muted/80 flex-1 bg-black/5 hover:bg-black/10"
|
||||
className="dark:bg-muted dark:hover:bg-muted/80 flex-1 bg-black/5 hover:bg-black/10"
|
||||
variant="secondary"
|
||||
onClick={() => {
|
||||
setShowCustomTextModal(false);
|
||||
|
||||
@@ -2,6 +2,7 @@ import { Plural, Trans, msg } from '@lingui/macro';
|
||||
import { useLingui } from '@lingui/react';
|
||||
import { DateTime } from 'luxon';
|
||||
import type Stripe from 'stripe';
|
||||
import { match } from 'ts-pattern';
|
||||
|
||||
import { setupI18nSSR } from '@documenso/lib/client-only/providers/i18n.server';
|
||||
import { getRequiredServerComponentSession } from '@documenso/lib/next-auth/get-server-component-session';
|
||||
@@ -44,15 +45,24 @@ export default async function TeamsSettingBillingPage({ params }: TeamsSettingsB
|
||||
|
||||
const numberOfSeats = subscription.items.data[0].quantity ?? 0;
|
||||
|
||||
const formattedTeamMemberQuanity = (
|
||||
<Plural value={numberOfSeats} one="# member" other="# members" />
|
||||
);
|
||||
|
||||
const formattedDate = DateTime.fromSeconds(subscription.current_period_end).toFormat(
|
||||
'LLL dd, yyyy',
|
||||
);
|
||||
|
||||
return _(msg`${formattedTeamMemberQuanity} • Monthly • Renews: ${formattedDate}`);
|
||||
const subscriptionInterval = match(subscription?.items.data[0].plan.interval)
|
||||
.with('year', () => _(msg`Yearly`))
|
||||
.with('month', () => _(msg`Monthly`))
|
||||
.otherwise(() => _(msg`Unknown`));
|
||||
|
||||
return (
|
||||
<span>
|
||||
<Plural value={numberOfSeats} one="# member" other="# members" />
|
||||
{' • '}
|
||||
<span>{subscriptionInterval}</span>
|
||||
{' • '}
|
||||
<Trans>Renews: {formattedDate}</Trans>
|
||||
</span>
|
||||
);
|
||||
};
|
||||
|
||||
return (
|
||||
@@ -66,10 +76,6 @@ export default async function TeamsSettingBillingPage({ params }: TeamsSettingsB
|
||||
<CardContent className="flex flex-row items-center justify-between p-4">
|
||||
<div className="flex flex-col text-sm">
|
||||
<p className="text-foreground font-semibold">
|
||||
<Trans>Current plan: {teamSubscription ? 'Team' : 'Early Adopter Team'}</Trans>
|
||||
</p>
|
||||
|
||||
<p className="text-muted-foreground mt-0.5">
|
||||
{formatTeamSubscriptionDetails(teamSubscription)}
|
||||
</p>
|
||||
</div>
|
||||
|
||||
@@ -47,10 +47,7 @@ export const StackAvatar = ({ first, zIndex, fallbackText = '', type }: StackAva
|
||||
|
||||
return (
|
||||
<Avatar
|
||||
className={`
|
||||
${zIndexClass}
|
||||
${firstClass}
|
||||
dark:border-border h-10 w-10 border-2 border-solid border-white`}
|
||||
className={` ${zIndexClass} ${firstClass} dark:border-border h-10 w-10 border-2 border-solid border-white`}
|
||||
>
|
||||
<AvatarFallback className={classes}>{fallbackText}</AvatarFallback>
|
||||
</Avatar>
|
||||
|
||||
@@ -14,7 +14,7 @@ import type { z } from 'zod';
|
||||
|
||||
import { AppError, AppErrorCode } from '@documenso/lib/errors/app-error';
|
||||
import { trpc } from '@documenso/trpc/react';
|
||||
import { ZCreateTeamEmailVerificationMutationSchema } from '@documenso/trpc/server/team-router/schema';
|
||||
import { ZCreateTeamEmailVerificationRequestSchema } from '@documenso/trpc/server/team-router/create-team-email-verification-route';
|
||||
import { Button } from '@documenso/ui/primitives/button';
|
||||
import {
|
||||
Dialog,
|
||||
@@ -41,7 +41,7 @@ export type AddTeamEmailDialogProps = {
|
||||
trigger?: React.ReactNode;
|
||||
} & Omit<DialogPrimitive.DialogProps, 'children'>;
|
||||
|
||||
const ZCreateTeamEmailFormSchema = ZCreateTeamEmailVerificationMutationSchema.pick({
|
||||
const ZCreateTeamEmailFormSchema = ZCreateTeamEmailVerificationRequestSchema.pick({
|
||||
name: true,
|
||||
email: true,
|
||||
});
|
||||
|
||||
@@ -15,7 +15,7 @@ import { useUpdateSearchParams } from '@documenso/lib/client-only/hooks/use-upda
|
||||
import { WEBAPP_BASE_URL } from '@documenso/lib/constants/app';
|
||||
import { AppError, AppErrorCode } from '@documenso/lib/errors/app-error';
|
||||
import { trpc } from '@documenso/trpc/react';
|
||||
import { ZCreateTeamMutationSchema } from '@documenso/trpc/server/team-router/schema';
|
||||
import { ZCreateTeamRequestSchema } from '@documenso/trpc/server/team-router/create-team-route';
|
||||
import { Button } from '@documenso/ui/primitives/button';
|
||||
import {
|
||||
Dialog,
|
||||
@@ -41,7 +41,7 @@ export type CreateTeamDialogProps = {
|
||||
trigger?: React.ReactNode;
|
||||
} & Omit<DialogPrimitive.DialogProps, 'children'>;
|
||||
|
||||
const ZCreateTeamFormSchema = ZCreateTeamMutationSchema.pick({
|
||||
const ZCreateTeamFormSchema = ZCreateTeamRequestSchema.pick({
|
||||
teamName: true,
|
||||
teamUrl: true,
|
||||
});
|
||||
|
||||
@@ -15,7 +15,7 @@ import { downloadFile } from '@documenso/lib/client-only/download-file';
|
||||
import { TEAM_MEMBER_ROLE_HIERARCHY, TEAM_MEMBER_ROLE_MAP } from '@documenso/lib/constants/teams';
|
||||
import { TeamMemberRole } from '@documenso/prisma/client';
|
||||
import { trpc } from '@documenso/trpc/react';
|
||||
import { ZCreateTeamMemberInvitesMutationSchema } from '@documenso/trpc/server/team-router/schema';
|
||||
import { ZCreateTeamMemberInvitesRequestSchema } from '@documenso/trpc/server/team-router/create-team-member-invites-route';
|
||||
import { cn } from '@documenso/ui/lib/utils';
|
||||
import { Button } from '@documenso/ui/primitives/button';
|
||||
import { Card, CardContent } from '@documenso/ui/primitives/card';
|
||||
@@ -55,7 +55,7 @@ export type InviteTeamMembersDialogProps = {
|
||||
|
||||
const ZInviteTeamMembersFormSchema = z
|
||||
.object({
|
||||
invitations: ZCreateTeamMemberInvitesMutationSchema.shape.invitations,
|
||||
invitations: ZCreateTeamMemberInvitesRequestSchema.shape.invitations,
|
||||
})
|
||||
// Display exactly which rows are duplicates.
|
||||
.superRefine((items, ctx) => {
|
||||
|
||||
@@ -12,7 +12,7 @@ import type { z } from 'zod';
|
||||
import { WEBAPP_BASE_URL } from '@documenso/lib/constants/app';
|
||||
import { AppError, AppErrorCode } from '@documenso/lib/errors/app-error';
|
||||
import { trpc } from '@documenso/trpc/react';
|
||||
import { ZUpdateTeamMutationSchema } from '@documenso/trpc/server/team-router/schema';
|
||||
import { ZUpdateTeamRequestSchema } from '@documenso/trpc/server/team-router/update-team-route';
|
||||
import { Button } from '@documenso/ui/primitives/button';
|
||||
import {
|
||||
Form,
|
||||
@@ -31,7 +31,7 @@ export type UpdateTeamDialogProps = {
|
||||
teamUrl: string;
|
||||
};
|
||||
|
||||
const ZUpdateTeamFormSchema = ZUpdateTeamMutationSchema.shape.data.pick({
|
||||
const ZUpdateTeamFormSchema = ZUpdateTeamRequestSchema.shape.data.pick({
|
||||
name: true,
|
||||
url: true,
|
||||
});
|
||||
|
||||
@@ -17,8 +17,8 @@ import { formatUserProfilePath } from '@documenso/lib/utils/public-profiles';
|
||||
import type { TeamProfile, UserProfile } from '@documenso/prisma/client';
|
||||
import {
|
||||
MAX_PROFILE_BIO_LENGTH,
|
||||
ZUpdatePublicProfileMutationSchema,
|
||||
} from '@documenso/trpc/server/profile-router/schema';
|
||||
ZUpdatePublicProfileRequestSchema,
|
||||
} from '@documenso/trpc/server/profile-router/update-public-profile-route';
|
||||
import { cn } from '@documenso/ui/lib/utils';
|
||||
import { Button } from '@documenso/ui/primitives/button';
|
||||
import {
|
||||
@@ -33,7 +33,7 @@ import { Input } from '@documenso/ui/primitives/input';
|
||||
import { Textarea } from '@documenso/ui/primitives/textarea';
|
||||
import { useToast } from '@documenso/ui/primitives/use-toast';
|
||||
|
||||
export const ZPublicProfileFormSchema = ZUpdatePublicProfileMutationSchema.pick({
|
||||
export const ZPublicProfileFormSchema = ZUpdatePublicProfileRequestSchema.pick({
|
||||
bio: true,
|
||||
enabled: true,
|
||||
url: true,
|
||||
|
||||
@@ -70,6 +70,7 @@ export const ZSignUpFormV2Schema = z
|
||||
},
|
||||
{
|
||||
message: msg`Password should not be common or based on personal information`.id,
|
||||
path: ['password'],
|
||||
},
|
||||
);
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@ import { getFieldsForDocument } from '@documenso/lib/server-only/field/get-field
|
||||
import { updateField } from '@documenso/lib/server-only/field/update-field';
|
||||
import { insertFormValuesInPdf } from '@documenso/lib/server-only/pdf/insert-form-values-in-pdf';
|
||||
import { deleteRecipient } from '@documenso/lib/server-only/recipient/delete-recipient';
|
||||
import { getRecipientById } from '@documenso/lib/server-only/recipient/get-recipient-by-id';
|
||||
import { getRecipientByIdV1Api } from '@documenso/lib/server-only/recipient/get-recipient-by-id-v1-api';
|
||||
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';
|
||||
@@ -999,7 +999,7 @@ export const ApiContractV1Implementation = createNextRoute(ApiContractV1, {
|
||||
throw new Error('Invalid page number');
|
||||
}
|
||||
|
||||
const recipient = await getRecipientById({
|
||||
const recipient = await getRecipientByIdV1Api({
|
||||
id: Number(recipientId),
|
||||
documentId: Number(documentId),
|
||||
}).catch(() => null);
|
||||
@@ -1144,7 +1144,7 @@ export const ApiContractV1Implementation = createNextRoute(ApiContractV1, {
|
||||
};
|
||||
}
|
||||
|
||||
const recipient = await getRecipientById({
|
||||
const recipient = await getRecipientByIdV1Api({
|
||||
id: Number(recipientId),
|
||||
documentId: Number(documentId),
|
||||
}).catch(() => null);
|
||||
@@ -1248,7 +1248,7 @@ export const ApiContractV1Implementation = createNextRoute(ApiContractV1, {
|
||||
};
|
||||
}
|
||||
|
||||
const recipient = await getRecipientById({
|
||||
const recipient = await getRecipientByIdV1Api({
|
||||
id: Number(field.recipientId),
|
||||
documentId: Number(documentId),
|
||||
}).catch(() => null);
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import type { NextApiRequest } from 'next';
|
||||
|
||||
import { AppError, AppErrorCode } from '@documenso/lib/errors/app-error';
|
||||
import { getApiTokenByToken } from '@documenso/lib/server-only/public-api/get-api-token-by-token';
|
||||
import type { Team, User } from '@documenso/prisma/client';
|
||||
|
||||
@@ -22,18 +23,33 @@ export const authenticatedMiddleware = <
|
||||
const [token] = (authorization || '').split('Bearer ').filter((s) => s.length > 0);
|
||||
|
||||
if (!token) {
|
||||
throw new Error('Token was not provided for authenticated middleware');
|
||||
throw new AppError(AppErrorCode.UNAUTHORIZED, {
|
||||
message: 'API token was not provided',
|
||||
});
|
||||
}
|
||||
|
||||
const apiToken = await getApiTokenByToken({ token });
|
||||
|
||||
if (apiToken.user.disabled) {
|
||||
throw new AppError(AppErrorCode.UNAUTHORIZED, {
|
||||
message: 'User is disabled',
|
||||
});
|
||||
}
|
||||
|
||||
return await handler(args, apiToken.user, apiToken.team);
|
||||
} catch (_err) {
|
||||
console.log({ _err });
|
||||
} catch (err) {
|
||||
console.log({ err: err });
|
||||
|
||||
let message = 'Unauthorized';
|
||||
|
||||
if (err instanceof AppError) {
|
||||
message = err.message;
|
||||
}
|
||||
|
||||
return {
|
||||
status: 401,
|
||||
body: {
|
||||
message: 'Unauthorized',
|
||||
message,
|
||||
},
|
||||
} as const;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,56 @@
|
||||
import { Trans } from '@lingui/macro';
|
||||
|
||||
import { Column, Img, Section, Text } from '../components';
|
||||
import { TemplateDocumentImage } from './template-document-image';
|
||||
|
||||
export interface TemplateDocumentRecipientSignedProps {
|
||||
documentName: string;
|
||||
recipientName: string;
|
||||
recipientEmail: string;
|
||||
assetBaseUrl: string;
|
||||
}
|
||||
|
||||
export const TemplateDocumentRecipientSigned = ({
|
||||
documentName,
|
||||
recipientName,
|
||||
recipientEmail,
|
||||
assetBaseUrl,
|
||||
}: TemplateDocumentRecipientSignedProps) => {
|
||||
const getAssetUrl = (path: string) => {
|
||||
return new URL(path, assetBaseUrl).toString();
|
||||
};
|
||||
|
||||
const recipientReference = recipientName || recipientEmail;
|
||||
|
||||
return (
|
||||
<>
|
||||
<TemplateDocumentImage className="mt-6" assetBaseUrl={assetBaseUrl} />
|
||||
|
||||
<Section>
|
||||
<Section className="mb-4">
|
||||
<Column align="center">
|
||||
<Text className="text-base font-semibold text-[#7AC455]">
|
||||
<Img
|
||||
src={getAssetUrl('/static/completed.png')}
|
||||
className="-mt-0.5 mr-2 inline h-7 w-7 align-middle"
|
||||
/>
|
||||
<Trans>Completed</Trans>
|
||||
</Text>
|
||||
</Column>
|
||||
</Section>
|
||||
|
||||
<Text className="text-primary mb-0 text-center text-lg font-semibold">
|
||||
<Trans>
|
||||
{recipientReference} has signed "{documentName}"
|
||||
</Trans>
|
||||
</Text>
|
||||
|
||||
<Text className="mx-auto mb-6 mt-1 max-w-[80%] text-center text-base text-slate-400">
|
||||
<Trans>{recipientReference} has completed signing the document.</Trans>
|
||||
</Text>
|
||||
</Section>
|
||||
</>
|
||||
);
|
||||
};
|
||||
|
||||
export default TemplateDocumentRecipientSigned;
|
||||
70
packages/email/templates/document-recipient-signed.tsx
Normal file
70
packages/email/templates/document-recipient-signed.tsx
Normal file
@@ -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 { TemplateDocumentRecipientSigned } from '../template-components/template-document-recipient-signed';
|
||||
import { TemplateFooter } from '../template-components/template-footer';
|
||||
|
||||
export interface DocumentRecipientSignedEmailTemplateProps {
|
||||
documentName?: string;
|
||||
recipientName?: string;
|
||||
recipientEmail?: string;
|
||||
assetBaseUrl?: string;
|
||||
}
|
||||
|
||||
export const DocumentRecipientSignedEmailTemplate = ({
|
||||
documentName = 'Open Source Pledge.pdf',
|
||||
recipientName = 'John Doe',
|
||||
recipientEmail = 'lucas@documenso.com',
|
||||
assetBaseUrl = 'http://localhost:3002',
|
||||
}: DocumentRecipientSignedEmailTemplateProps) => {
|
||||
const { _ } = useLingui();
|
||||
const branding = useBranding();
|
||||
|
||||
const recipientReference = recipientName || recipientEmail;
|
||||
|
||||
const previewText = msg`${recipientReference} has signed ${documentName}`;
|
||||
|
||||
const getAssetUrl = (path: string) => {
|
||||
return new URL(path, assetBaseUrl).toString();
|
||||
};
|
||||
|
||||
return (
|
||||
<Html>
|
||||
<Head />
|
||||
<Preview>{_(previewText)}</Preview>
|
||||
|
||||
<Body className="mx-auto my-auto font-sans">
|
||||
<Section className="bg-white">
|
||||
<Container className="mx-auto mb-2 mt-8 max-w-xl rounded-lg border border-solid border-slate-200 p-2 backdrop-blur-sm">
|
||||
<Section className="p-2">
|
||||
{branding.brandingEnabled && branding.brandingLogo ? (
|
||||
<Img src={branding.brandingLogo} alt="Branding Logo" className="mb-4 h-6" />
|
||||
) : (
|
||||
<Img
|
||||
src={getAssetUrl('/static/logo.png')}
|
||||
alt="Documenso Logo"
|
||||
className="mb-4 h-6"
|
||||
/>
|
||||
)}
|
||||
|
||||
<TemplateDocumentRecipientSigned
|
||||
documentName={documentName}
|
||||
recipientName={recipientName}
|
||||
recipientEmail={recipientEmail}
|
||||
assetBaseUrl={assetBaseUrl}
|
||||
/>
|
||||
</Section>
|
||||
</Container>
|
||||
|
||||
<Container className="mx-auto max-w-xl">
|
||||
<TemplateFooter />
|
||||
</Container>
|
||||
</Section>
|
||||
</Body>
|
||||
</Html>
|
||||
);
|
||||
};
|
||||
|
||||
export default DocumentRecipientSignedEmailTemplate;
|
||||
@@ -12,7 +12,7 @@ export function useCopyShareLink({ onSuccess, onError }: UseCopyShareLinkOptions
|
||||
const [, copyToClipboard] = useCopyToClipboard();
|
||||
|
||||
const { mutateAsync: createOrGetShareLink, isLoading: isCreatingShareLink } =
|
||||
trpc.shareLink.createOrGetShareLink.useMutation();
|
||||
trpc.document.createOrGetShareLink.useMutation();
|
||||
|
||||
/**
|
||||
* Copy a newly created, or pre-existing share link to the user's clipboard.
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import { JobClient } from './client/client';
|
||||
import { SEND_CONFIRMATION_EMAIL_JOB_DEFINITION } from './definitions/emails/send-confirmation-email';
|
||||
import { SEND_RECIPIENT_SIGNED_EMAIL_JOB_DEFINITION } from './definitions/emails/send-recipient-signed-email';
|
||||
import { SEND_SIGNING_REJECTION_EMAILS_JOB_DEFINITION } from './definitions/emails/send-rejection-emails';
|
||||
import { SEND_SIGNING_EMAIL_JOB_DEFINITION } from './definitions/emails/send-signing-email';
|
||||
import { SEND_TEAM_DELETED_EMAIL_JOB_DEFINITION } from './definitions/emails/send-team-deleted-email';
|
||||
@@ -19,6 +20,7 @@ export const jobsClient = new JobClient([
|
||||
SEND_TEAM_DELETED_EMAIL_JOB_DEFINITION,
|
||||
SEAL_DOCUMENT_JOB_DEFINITION,
|
||||
SEND_SIGNING_REJECTION_EMAILS_JOB_DEFINITION,
|
||||
SEND_RECIPIENT_SIGNED_EMAIL_JOB_DEFINITION,
|
||||
] as const);
|
||||
|
||||
export const jobs = jobsClient;
|
||||
|
||||
@@ -0,0 +1,130 @@
|
||||
import { createElement } from 'react';
|
||||
|
||||
import { msg } from '@lingui/macro';
|
||||
import { z } from 'zod';
|
||||
|
||||
import { mailer } from '@documenso/email/mailer';
|
||||
import { DocumentRecipientSignedEmailTemplate } from '@documenso/email/templates/document-recipient-signed';
|
||||
import { prisma } from '@documenso/prisma';
|
||||
|
||||
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 { type JobDefinition } from '../../client/_internal/job';
|
||||
|
||||
const SEND_RECIPIENT_SIGNED_EMAIL_JOB_DEFINITION_ID = 'send.recipient.signed.email';
|
||||
|
||||
const SEND_RECIPIENT_SIGNED_EMAIL_JOB_DEFINITION_SCHEMA = z.object({
|
||||
documentId: z.number(),
|
||||
recipientId: z.number(),
|
||||
});
|
||||
|
||||
export const SEND_RECIPIENT_SIGNED_EMAIL_JOB_DEFINITION = {
|
||||
id: SEND_RECIPIENT_SIGNED_EMAIL_JOB_DEFINITION_ID,
|
||||
name: 'Send Recipient Signed Email',
|
||||
version: '1.0.0',
|
||||
trigger: {
|
||||
name: SEND_RECIPIENT_SIGNED_EMAIL_JOB_DEFINITION_ID,
|
||||
schema: SEND_RECIPIENT_SIGNED_EMAIL_JOB_DEFINITION_SCHEMA,
|
||||
},
|
||||
handler: async ({ payload, io }) => {
|
||||
const { documentId, recipientId } = payload;
|
||||
|
||||
const document = await prisma.document.findFirst({
|
||||
where: {
|
||||
id: documentId,
|
||||
Recipient: {
|
||||
some: {
|
||||
id: recipientId,
|
||||
},
|
||||
},
|
||||
},
|
||||
include: {
|
||||
Recipient: {
|
||||
where: {
|
||||
id: recipientId,
|
||||
},
|
||||
},
|
||||
User: true,
|
||||
documentMeta: true,
|
||||
team: {
|
||||
include: {
|
||||
teamGlobalSettings: true,
|
||||
},
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
if (!document) {
|
||||
throw new Error('Document not found');
|
||||
}
|
||||
|
||||
if (document.Recipient.length === 0) {
|
||||
throw new Error('Document has no recipients');
|
||||
}
|
||||
|
||||
const isRecipientSignedEmailEnabled = extractDerivedDocumentEmailSettings(
|
||||
document.documentMeta,
|
||||
).recipientSigned;
|
||||
|
||||
if (!isRecipientSignedEmailEnabled) {
|
||||
return;
|
||||
}
|
||||
|
||||
const [recipient] = document.Recipient;
|
||||
const { email: recipientEmail, name: recipientName } = recipient;
|
||||
const { User: owner } = document;
|
||||
|
||||
const recipientReference = recipientName || recipientEmail;
|
||||
|
||||
// Don't send notification if the owner is the one who signed
|
||||
if (owner.email === recipientEmail) {
|
||||
return;
|
||||
}
|
||||
|
||||
const assetBaseUrl = NEXT_PUBLIC_WEBAPP_URL() || 'http://localhost:3000';
|
||||
const i18n = await getI18nInstance(document.documentMeta?.language);
|
||||
|
||||
const template = createElement(DocumentRecipientSignedEmailTemplate, {
|
||||
documentName: document.title,
|
||||
recipientName,
|
||||
recipientEmail,
|
||||
assetBaseUrl,
|
||||
});
|
||||
|
||||
await io.runTask('send-recipient-signed-email', async () => {
|
||||
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: {
|
||||
name: owner.name ?? '',
|
||||
address: owner.email,
|
||||
},
|
||||
from: {
|
||||
name: FROM_NAME,
|
||||
address: FROM_ADDRESS,
|
||||
},
|
||||
subject: i18n._(msg`${recipientReference} has signed "${document.title}"`),
|
||||
html,
|
||||
text,
|
||||
});
|
||||
});
|
||||
},
|
||||
} as const satisfies JobDefinition<
|
||||
typeof SEND_RECIPIENT_SIGNED_EMAIL_JOB_DEFINITION_ID,
|
||||
z.infer<typeof SEND_RECIPIENT_SIGNED_EMAIL_JOB_DEFINITION_SCHEMA>
|
||||
>;
|
||||
@@ -23,6 +23,7 @@ import { DOCUMENT_AUDIT_LOG_TYPE } from '../../../types/document-audit-logs';
|
||||
import { ZWebhookDocumentSchema } from '../../../types/webhook-payload';
|
||||
import { getFile } from '../../../universal/upload/get-file';
|
||||
import { putPdfFile } from '../../../universal/upload/put-file';
|
||||
import { fieldsContainUnsignedRequiredField } from '../../../utils/advanced-fields-helpers';
|
||||
import { createDocumentAuditLogData } from '../../../utils/document-audit-logs';
|
||||
import type { JobRunIO } from '../../client/_internal/job';
|
||||
import type { TSealDocumentJobDefinition } from './seal-document';
|
||||
@@ -105,8 +106,8 @@ export const run = async ({
|
||||
},
|
||||
});
|
||||
|
||||
if (fields.some((field) => !field.inserted)) {
|
||||
throw new Error(`Document ${document.id} has unsigned fields`);
|
||||
if (fieldsContainUnsignedRequiredField(fields)) {
|
||||
throw new Error(`Document ${document.id} has unsigned required fields`);
|
||||
}
|
||||
|
||||
if (isResealing) {
|
||||
@@ -147,7 +148,9 @@ export const run = async ({
|
||||
}
|
||||
|
||||
for (const field of fields) {
|
||||
await insertFieldInPDF(pdfDoc, field);
|
||||
if (field.inserted) {
|
||||
await insertFieldInPDF(pdfDoc, field);
|
||||
}
|
||||
}
|
||||
|
||||
// Re-flatten the form to handle our checkbox and radio fields that
|
||||
|
||||
@@ -21,6 +21,10 @@ export const getServerComponentSession = cache(async () => {
|
||||
},
|
||||
});
|
||||
|
||||
if (user.disabled) {
|
||||
return { user: null, session: null };
|
||||
}
|
||||
|
||||
return { user, session };
|
||||
});
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import { DOCUMENT_AUDIT_LOG_TYPE } from '@documenso/lib/types/document-audit-logs';
|
||||
import type { RequestMetadata } from '@documenso/lib/universal/extract-request-metadata';
|
||||
import { fieldsContainUnsignedRequiredField } from '@documenso/lib/utils/advanced-fields-helpers';
|
||||
import { createDocumentAuditLogData } from '@documenso/lib/utils/document-audit-logs';
|
||||
import { prisma } from '@documenso/prisma';
|
||||
import {
|
||||
@@ -8,8 +9,8 @@ import {
|
||||
RecipientRole,
|
||||
SendStatus,
|
||||
SigningStatus,
|
||||
WebhookTriggerEvents,
|
||||
} from '@documenso/prisma/client';
|
||||
import { WebhookTriggerEvents } from '@documenso/prisma/client';
|
||||
|
||||
import { jobs } from '../../jobs/client';
|
||||
import type { TRecipientActionAuth } from '../../types/document-auth';
|
||||
@@ -85,7 +86,7 @@ export const completeDocumentWithToken = async ({
|
||||
},
|
||||
});
|
||||
|
||||
if (fields.some((field) => !field.inserted)) {
|
||||
if (fieldsContainUnsignedRequiredField(fields)) {
|
||||
throw new Error(`Recipient ${recipient.id} has unsigned fields`);
|
||||
}
|
||||
|
||||
@@ -139,6 +140,14 @@ export const completeDocumentWithToken = async ({
|
||||
});
|
||||
});
|
||||
|
||||
await jobs.triggerJob({
|
||||
name: 'send.recipient.signed.email',
|
||||
payload: {
|
||||
documentId: document.id,
|
||||
recipientId: recipient.id,
|
||||
},
|
||||
});
|
||||
|
||||
const pendingRecipients = await prisma.recipient.findMany({
|
||||
select: {
|
||||
id: true,
|
||||
|
||||
@@ -18,6 +18,7 @@ import { ZWebhookDocumentSchema } from '../../types/webhook-payload';
|
||||
import type { RequestMetadata } from '../../universal/extract-request-metadata';
|
||||
import { getFile } from '../../universal/upload/get-file';
|
||||
import { putPdfFile } from '../../universal/upload/put-file';
|
||||
import { fieldsContainUnsignedRequiredField } from '../../utils/advanced-fields-helpers';
|
||||
import { getCertificatePdf } from '../htmltopdf/get-certificate-pdf';
|
||||
import { flattenAnnotations } from '../pdf/flatten-annotations';
|
||||
import { flattenForm } from '../pdf/flatten-form';
|
||||
@@ -92,8 +93,8 @@ export const sealDocument = async ({
|
||||
},
|
||||
});
|
||||
|
||||
if (fields.some((field) => !field.inserted)) {
|
||||
throw new Error(`Document ${document.id} has unsigned fields`);
|
||||
if (fieldsContainUnsignedRequiredField(fields)) {
|
||||
throw new Error(`Document ${document.id} has unsigned required fields`);
|
||||
}
|
||||
|
||||
if (isResealing) {
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
import { prisma } from '@documenso/prisma';
|
||||
|
||||
export type GetRecipientByIdOptions = {
|
||||
id: number;
|
||||
documentId: number;
|
||||
};
|
||||
|
||||
export const getRecipientByIdV1Api = async ({ documentId, id }: GetRecipientByIdOptions) => {
|
||||
const recipient = await prisma.recipient.findFirst({
|
||||
where: {
|
||||
documentId,
|
||||
id,
|
||||
},
|
||||
});
|
||||
|
||||
if (!recipient) {
|
||||
throw new Error('Recipient not found');
|
||||
}
|
||||
|
||||
return recipient;
|
||||
};
|
||||
@@ -1,20 +1,54 @@
|
||||
import { prisma } from '@documenso/prisma';
|
||||
|
||||
import { AppError, AppErrorCode } from '../../errors/app-error';
|
||||
|
||||
export type GetRecipientByIdOptions = {
|
||||
id: number;
|
||||
documentId: number;
|
||||
recipientId: number;
|
||||
userId: number;
|
||||
teamId?: number;
|
||||
};
|
||||
|
||||
export const getRecipientById = async ({ documentId, id }: GetRecipientByIdOptions) => {
|
||||
/**
|
||||
* Get a recipient by ID. This will also return the recipient signing token so
|
||||
* be careful when using this.
|
||||
*/
|
||||
export const getRecipientById = async ({
|
||||
recipientId,
|
||||
userId,
|
||||
teamId,
|
||||
}: GetRecipientByIdOptions) => {
|
||||
const recipient = await prisma.recipient.findFirst({
|
||||
where: {
|
||||
documentId,
|
||||
id,
|
||||
id: recipientId,
|
||||
Document: {
|
||||
OR: [
|
||||
teamId === undefined
|
||||
? {
|
||||
userId,
|
||||
teamId: null,
|
||||
}
|
||||
: {
|
||||
teamId,
|
||||
team: {
|
||||
members: {
|
||||
some: {
|
||||
userId,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
include: {
|
||||
Field: true,
|
||||
},
|
||||
});
|
||||
|
||||
if (!recipient) {
|
||||
throw new Error('Recipient not found');
|
||||
throw new AppError(AppErrorCode.NOT_FOUND, {
|
||||
message: 'Recipient not found',
|
||||
});
|
||||
}
|
||||
|
||||
return recipient;
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
import { createElement } from 'react';
|
||||
|
||||
import { msg } from '@lingui/macro';
|
||||
import { z } from 'zod';
|
||||
|
||||
import { isUserEnterprise } from '@documenso/ee/server-only/util/is-document-enterprise';
|
||||
import { mailer } from '@documenso/email/mailer';
|
||||
@@ -22,7 +21,6 @@ import { prisma } from '@documenso/prisma';
|
||||
import type { Recipient } from '@documenso/prisma/client';
|
||||
import { RecipientRole } from '@documenso/prisma/client';
|
||||
import { SendStatus, SigningStatus } from '@documenso/prisma/client';
|
||||
import { RecipientSchema } from '@documenso/prisma/generated/zod';
|
||||
|
||||
import { getI18nInstance } from '../../client-only/providers/i18n.server';
|
||||
import { NEXT_PUBLIC_WEBAPP_URL } from '../../constants/app';
|
||||
@@ -41,21 +39,13 @@ export interface SetRecipientsForDocumentOptions {
|
||||
requestMetadata?: RequestMetadata;
|
||||
}
|
||||
|
||||
export const ZSetRecipientsForDocumentResponseSchema = z.object({
|
||||
recipients: RecipientSchema.array(),
|
||||
});
|
||||
|
||||
export type TSetRecipientsForDocumentResponse = z.infer<
|
||||
typeof ZSetRecipientsForDocumentResponseSchema
|
||||
>;
|
||||
|
||||
export const setRecipientsForDocument = async ({
|
||||
userId,
|
||||
teamId,
|
||||
documentId,
|
||||
recipients,
|
||||
requestMetadata,
|
||||
}: SetRecipientsForDocumentOptions): Promise<TSetRecipientsForDocumentResponse> => {
|
||||
}: SetRecipientsForDocumentOptions) => {
|
||||
const document = await prisma.document.findFirst({
|
||||
where: {
|
||||
id: documentId,
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
import { z } from 'zod';
|
||||
|
||||
import { isUserEnterprise } from '@documenso/ee/server-only/util/is-document-enterprise';
|
||||
import {
|
||||
DIRECT_TEMPLATE_RECIPIENT_EMAIL,
|
||||
@@ -8,7 +6,6 @@ import {
|
||||
import { prisma } from '@documenso/prisma';
|
||||
import type { Recipient } from '@documenso/prisma/client';
|
||||
import { RecipientRole } from '@documenso/prisma/client';
|
||||
import { RecipientSchema } from '@documenso/prisma/generated/zod';
|
||||
|
||||
import { AppError, AppErrorCode } from '../../errors/app-error';
|
||||
import {
|
||||
@@ -32,20 +29,12 @@ export type SetRecipientsForTemplateOptions = {
|
||||
}[];
|
||||
};
|
||||
|
||||
export const ZSetRecipientsForTemplateResponseSchema = z.object({
|
||||
recipients: RecipientSchema.array(),
|
||||
});
|
||||
|
||||
export type TSetRecipientsForTemplateResponse = z.infer<
|
||||
typeof ZSetRecipientsForTemplateResponseSchema
|
||||
>;
|
||||
|
||||
export const setRecipientsForTemplate = async ({
|
||||
userId,
|
||||
teamId,
|
||||
templateId,
|
||||
recipients,
|
||||
}: SetRecipientsForTemplateOptions): Promise<TSetRecipientsForTemplateResponse> => {
|
||||
}: SetRecipientsForTemplateOptions) => {
|
||||
const template = await prisma.template.findFirst({
|
||||
where: {
|
||||
id: templateId,
|
||||
|
||||
@@ -3,7 +3,6 @@ import { createElement } from 'react';
|
||||
import { msg } from '@lingui/macro';
|
||||
import { DateTime } from 'luxon';
|
||||
import { match } from 'ts-pattern';
|
||||
import { z } from 'zod';
|
||||
|
||||
import { mailer } from '@documenso/email/mailer';
|
||||
import { DocumentCreatedFromDirectTemplateEmailTemplate } from '@documenso/email/templates/document-created-from-direct-template';
|
||||
@@ -68,16 +67,6 @@ type CreatedDirectRecipientField = {
|
||||
derivedRecipientActionAuth: TRecipientActionAuthTypes | null;
|
||||
};
|
||||
|
||||
export const ZCreateDocumentFromDirectTemplateResponseSchema = z.object({
|
||||
token: z.string(),
|
||||
documentId: z.number(),
|
||||
recipientId: z.number(),
|
||||
});
|
||||
|
||||
export type TCreateDocumentFromDirectTemplateResponse = z.infer<
|
||||
typeof ZCreateDocumentFromDirectTemplateResponseSchema
|
||||
>;
|
||||
|
||||
export const createDocumentFromDirectTemplate = async ({
|
||||
directRecipientName: initialDirectRecipientName,
|
||||
directRecipientEmail,
|
||||
@@ -87,7 +76,7 @@ export const createDocumentFromDirectTemplate = async ({
|
||||
templateUpdatedAt,
|
||||
requestMetadata,
|
||||
user,
|
||||
}: CreateDocumentFromDirectTemplateOptions): Promise<TCreateDocumentFromDirectTemplateResponse> => {
|
||||
}: CreateDocumentFromDirectTemplateOptions) => {
|
||||
const template = await prisma.template.findFirst({
|
||||
where: {
|
||||
directLink: {
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
'use server';
|
||||
|
||||
import { nanoid } from 'nanoid';
|
||||
import type { z } from 'zod';
|
||||
|
||||
import {
|
||||
DIRECT_TEMPLATE_RECIPIENT_EMAIL,
|
||||
@@ -9,7 +8,6 @@ import {
|
||||
} from '@documenso/lib/constants/direct-templates';
|
||||
import { prisma } from '@documenso/prisma';
|
||||
import type { Recipient } from '@documenso/prisma/client';
|
||||
import { TemplateDirectLinkSchema } from '@documenso/prisma/generated/zod';
|
||||
|
||||
import { AppError, AppErrorCode } from '../../errors/app-error';
|
||||
|
||||
@@ -19,17 +17,11 @@ export type CreateTemplateDirectLinkOptions = {
|
||||
directRecipientId?: number;
|
||||
};
|
||||
|
||||
export const ZCreateTemplateDirectLinkResponseSchema = TemplateDirectLinkSchema;
|
||||
|
||||
export type TCreateTemplateDirectLinkResponse = z.infer<
|
||||
typeof ZCreateTemplateDirectLinkResponseSchema
|
||||
>;
|
||||
|
||||
export const createTemplateDirectLink = async ({
|
||||
templateId,
|
||||
userId,
|
||||
directRecipientId,
|
||||
}: CreateTemplateDirectLinkOptions): Promise<TCreateTemplateDirectLinkResponse> => {
|
||||
}: CreateTemplateDirectLinkOptions) => {
|
||||
const template = await prisma.template.findFirst({
|
||||
where: {
|
||||
id: templateId,
|
||||
|
||||
@@ -1,7 +1,4 @@
|
||||
import type { z } from 'zod';
|
||||
|
||||
import { prisma } from '@documenso/prisma';
|
||||
import { TemplateSchema } from '@documenso/prisma/generated/zod';
|
||||
import type { TCreateTemplateMutationSchema } from '@documenso/trpc/server/template-router/schema';
|
||||
|
||||
export type CreateTemplateOptions = TCreateTemplateMutationSchema & {
|
||||
@@ -9,10 +6,6 @@ export type CreateTemplateOptions = TCreateTemplateMutationSchema & {
|
||||
teamId?: number;
|
||||
};
|
||||
|
||||
export const ZCreateTemplateResponseSchema = TemplateSchema;
|
||||
|
||||
export type TCreateTemplateResponse = z.infer<typeof ZCreateTemplateResponseSchema>;
|
||||
|
||||
export const createTemplate = async ({
|
||||
title,
|
||||
userId,
|
||||
|
||||
@@ -1,25 +1,19 @@
|
||||
import { omit } from 'remeda';
|
||||
import type { z } from 'zod';
|
||||
|
||||
import { nanoid } from '@documenso/lib/universal/id';
|
||||
import { prisma } from '@documenso/prisma';
|
||||
import type { Prisma } from '@documenso/prisma/client';
|
||||
import { TemplateSchema } from '@documenso/prisma/generated/zod';
|
||||
import type { TDuplicateTemplateMutationSchema } from '@documenso/trpc/server/template-router/schema';
|
||||
|
||||
export type DuplicateTemplateOptions = TDuplicateTemplateMutationSchema & {
|
||||
userId: number;
|
||||
};
|
||||
|
||||
export const ZDuplicateTemplateResponseSchema = TemplateSchema;
|
||||
|
||||
export type TDuplicateTemplateResponse = z.infer<typeof ZDuplicateTemplateResponseSchema>;
|
||||
|
||||
export const duplicateTemplate = async ({
|
||||
templateId,
|
||||
userId,
|
||||
teamId,
|
||||
}: DuplicateTemplateOptions): Promise<TDuplicateTemplateResponse> => {
|
||||
}: DuplicateTemplateOptions) => {
|
||||
let templateWhereFilter: Prisma.TemplateWhereUniqueInput = {
|
||||
id: templateId,
|
||||
userId,
|
||||
|
||||
@@ -1,18 +1,7 @@
|
||||
import type { z } from 'zod';
|
||||
|
||||
import { prisma } from '@documenso/prisma';
|
||||
import type { Prisma, Template } from '@documenso/prisma/client';
|
||||
import {
|
||||
DocumentDataSchema,
|
||||
FieldSchema,
|
||||
RecipientSchema,
|
||||
TeamSchema,
|
||||
TemplateDirectLinkSchema,
|
||||
TemplateMetaSchema,
|
||||
TemplateSchema,
|
||||
} from '@documenso/prisma/generated/zod';
|
||||
|
||||
import { type FindResultResponse, ZFindResultResponse } from '../../types/search-params';
|
||||
import { type FindResultResponse } from '../../types/search-params';
|
||||
|
||||
export type FindTemplatesOptions = {
|
||||
userId: number;
|
||||
@@ -22,36 +11,13 @@ export type FindTemplatesOptions = {
|
||||
perPage?: number;
|
||||
};
|
||||
|
||||
export const ZFindTemplatesResponseSchema = ZFindResultResponse.extend({
|
||||
data: TemplateSchema.extend({
|
||||
templateDocumentData: DocumentDataSchema,
|
||||
team: TeamSchema.pick({
|
||||
id: true,
|
||||
url: true,
|
||||
}).nullable(),
|
||||
Field: FieldSchema.array(),
|
||||
Recipient: RecipientSchema.array(),
|
||||
templateMeta: TemplateMetaSchema.pick({
|
||||
signingOrder: true,
|
||||
distributionMethod: true,
|
||||
}).nullable(),
|
||||
directLink: TemplateDirectLinkSchema.pick({
|
||||
token: true,
|
||||
enabled: true,
|
||||
}).nullable(),
|
||||
}).array(), // Todo: openapi.
|
||||
});
|
||||
|
||||
export type TFindTemplatesResponse = z.infer<typeof ZFindTemplatesResponseSchema>;
|
||||
export type FindTemplateRow = TFindTemplatesResponse['data'][number];
|
||||
|
||||
export const findTemplates = async ({
|
||||
userId,
|
||||
teamId,
|
||||
type,
|
||||
page = 1,
|
||||
perPage = 10,
|
||||
}: FindTemplatesOptions): Promise<TFindTemplatesResponse> => {
|
||||
}: FindTemplatesOptions) => {
|
||||
let whereFilter: Prisma.TemplateWhereInput = {
|
||||
userId,
|
||||
teamId: null,
|
||||
|
||||
@@ -1,16 +1,5 @@
|
||||
import type { z } from 'zod';
|
||||
|
||||
import { prisma } from '@documenso/prisma';
|
||||
import type { Prisma } from '@documenso/prisma/client';
|
||||
import {
|
||||
DocumentDataSchema,
|
||||
FieldSchema,
|
||||
RecipientSchema,
|
||||
TemplateDirectLinkSchema,
|
||||
TemplateMetaSchema,
|
||||
TemplateSchema,
|
||||
UserSchema,
|
||||
} from '@documenso/prisma/generated/zod';
|
||||
|
||||
import { AppError, AppErrorCode } from '../../errors/app-error';
|
||||
|
||||
@@ -20,26 +9,7 @@ export type GetTemplateByIdOptions = {
|
||||
teamId?: number;
|
||||
};
|
||||
|
||||
export const ZGetTemplateByIdResponseSchema = TemplateSchema.extend({
|
||||
directLink: TemplateDirectLinkSchema.nullable(),
|
||||
templateDocumentData: DocumentDataSchema,
|
||||
templateMeta: TemplateMetaSchema.nullable(),
|
||||
Recipient: RecipientSchema.array(),
|
||||
Field: FieldSchema.array(),
|
||||
User: UserSchema.pick({
|
||||
id: true,
|
||||
name: true,
|
||||
email: true,
|
||||
}),
|
||||
});
|
||||
|
||||
export type TGetTemplateByIdResponse = z.infer<typeof ZGetTemplateByIdResponseSchema>;
|
||||
|
||||
export const getTemplateById = async ({
|
||||
id,
|
||||
userId,
|
||||
teamId,
|
||||
}: GetTemplateByIdOptions): Promise<TGetTemplateByIdResponse> => {
|
||||
export const getTemplateById = async ({ id, userId, teamId }: GetTemplateByIdOptions) => {
|
||||
const whereFilter: Prisma.TemplateWhereInput = {
|
||||
id,
|
||||
OR:
|
||||
|
||||
@@ -1,7 +1,4 @@
|
||||
import type { z } from 'zod';
|
||||
|
||||
import { prisma } from '@documenso/prisma';
|
||||
import { TemplateSchema } from '@documenso/prisma/generated/zod';
|
||||
|
||||
import { AppError, AppErrorCode } from '../../errors/app-error';
|
||||
|
||||
@@ -11,15 +8,11 @@ export type MoveTemplateToTeamOptions = {
|
||||
userId: number;
|
||||
};
|
||||
|
||||
export const ZMoveTemplateToTeamResponseSchema = TemplateSchema;
|
||||
|
||||
export type TMoveTemplateToTeamResponse = z.infer<typeof ZMoveTemplateToTeamResponseSchema>;
|
||||
|
||||
export const moveTemplateToTeam = async ({
|
||||
templateId,
|
||||
teamId,
|
||||
userId,
|
||||
}: MoveTemplateToTeamOptions): Promise<TMoveTemplateToTeamResponse> => {
|
||||
}: MoveTemplateToTeamOptions) => {
|
||||
return await prisma.$transaction(async (tx) => {
|
||||
const template = await tx.template.findFirst({
|
||||
where: {
|
||||
|
||||
@@ -1,9 +1,6 @@
|
||||
'use server';
|
||||
|
||||
import type { z } from 'zod';
|
||||
|
||||
import { prisma } from '@documenso/prisma';
|
||||
import { TemplateDirectLinkSchema } from '@documenso/prisma/generated/zod';
|
||||
|
||||
import { AppError, AppErrorCode } from '../../errors/app-error';
|
||||
|
||||
@@ -13,17 +10,11 @@ export type ToggleTemplateDirectLinkOptions = {
|
||||
enabled: boolean;
|
||||
};
|
||||
|
||||
export const ZToggleTemplateDirectLinkResponseSchema = TemplateDirectLinkSchema;
|
||||
|
||||
export type TToggleTemplateDirectLinkResponse = z.infer<
|
||||
typeof ZToggleTemplateDirectLinkResponseSchema
|
||||
>;
|
||||
|
||||
export const toggleTemplateDirectLink = async ({
|
||||
templateId,
|
||||
userId,
|
||||
enabled,
|
||||
}: ToggleTemplateDirectLinkOptions): Promise<TToggleTemplateDirectLinkResponse> => {
|
||||
}: ToggleTemplateDirectLinkOptions) => {
|
||||
const template = await prisma.template.findFirst({
|
||||
where: {
|
||||
id: templateId,
|
||||
|
||||
@@ -1,12 +1,9 @@
|
||||
'use server';
|
||||
|
||||
import type { z } from 'zod';
|
||||
|
||||
import { isUserEnterprise } from '@documenso/ee/server-only/util/is-document-enterprise';
|
||||
import type { RequestMetadata } from '@documenso/lib/universal/extract-request-metadata';
|
||||
import { prisma } from '@documenso/prisma';
|
||||
import type { Template, TemplateMeta } from '@documenso/prisma/client';
|
||||
import { TemplateSchema } from '@documenso/prisma/generated/zod';
|
||||
|
||||
import { AppError, AppErrorCode } from '../../errors/app-error';
|
||||
import type { TDocumentAccessAuthTypes, TDocumentActionAuthTypes } from '../../types/document-auth';
|
||||
@@ -29,17 +26,13 @@ export type UpdateTemplateSettingsOptions = {
|
||||
requestMetadata?: RequestMetadata;
|
||||
};
|
||||
|
||||
export const ZUpdateTemplateSettingsResponseSchema = TemplateSchema;
|
||||
|
||||
export type TUpdateTemplateSettingsResponse = z.infer<typeof ZUpdateTemplateSettingsResponseSchema>;
|
||||
|
||||
export const updateTemplateSettings = async ({
|
||||
userId,
|
||||
teamId,
|
||||
templateId,
|
||||
meta,
|
||||
data,
|
||||
}: UpdateTemplateSettingsOptions): Promise<TUpdateTemplateSettingsResponse> => {
|
||||
}: UpdateTemplateSettingsOptions) => {
|
||||
if (Object.values(data).length === 0 && Object.keys(meta ?? {}).length === 0) {
|
||||
throw new AppError(AppErrorCode.INVALID_BODY, {
|
||||
message: 'Missing data to update',
|
||||
|
||||
69
packages/lib/server-only/user/disable-user.ts
Normal file
69
packages/lib/server-only/user/disable-user.ts
Normal file
@@ -0,0 +1,69 @@
|
||||
import { AppError } from '@documenso/lib/errors/app-error';
|
||||
import { prisma } from '@documenso/prisma';
|
||||
|
||||
export type DisableUserOptions = {
|
||||
id: number;
|
||||
};
|
||||
|
||||
export const disableUser = async ({ id }: DisableUserOptions) => {
|
||||
const user = await prisma.user.findFirst({
|
||||
where: {
|
||||
id,
|
||||
},
|
||||
include: {
|
||||
ApiToken: true,
|
||||
Webhooks: true,
|
||||
passkeys: true,
|
||||
VerificationToken: true,
|
||||
PasswordResetToken: true,
|
||||
},
|
||||
});
|
||||
|
||||
if (!user) {
|
||||
throw new AppError('There was an error disabling the user');
|
||||
}
|
||||
|
||||
try {
|
||||
await prisma.$transaction(async (tx) => {
|
||||
await tx.user.update({
|
||||
where: { id },
|
||||
data: { disabled: true },
|
||||
});
|
||||
|
||||
await tx.apiToken.updateMany({
|
||||
where: { userId: id },
|
||||
data: {
|
||||
expires: new Date(),
|
||||
},
|
||||
});
|
||||
|
||||
await tx.webhook.updateMany({
|
||||
where: { userId: id },
|
||||
data: {
|
||||
enabled: false,
|
||||
},
|
||||
});
|
||||
|
||||
await tx.verificationToken.updateMany({
|
||||
where: { userId: id },
|
||||
data: {
|
||||
expires: new Date(),
|
||||
},
|
||||
});
|
||||
|
||||
await tx.passwordResetToken.updateMany({
|
||||
where: { userId: id },
|
||||
data: {
|
||||
expiry: new Date(),
|
||||
},
|
||||
});
|
||||
|
||||
await tx.passkey.deleteMany({
|
||||
where: { userId: id },
|
||||
});
|
||||
});
|
||||
} catch (error) {
|
||||
console.error('Error disabling user', error);
|
||||
throw error;
|
||||
}
|
||||
};
|
||||
27
packages/lib/server-only/user/enable-user.ts
Normal file
27
packages/lib/server-only/user/enable-user.ts
Normal file
@@ -0,0 +1,27 @@
|
||||
import { AppError } from '@documenso/lib/errors/app-error';
|
||||
import { prisma } from '@documenso/prisma';
|
||||
|
||||
export type EnableUserOptions = {
|
||||
id: number;
|
||||
};
|
||||
|
||||
export const enableUser = async ({ id }: EnableUserOptions) => {
|
||||
const user = await prisma.user.findFirst({
|
||||
where: {
|
||||
id,
|
||||
},
|
||||
});
|
||||
|
||||
if (!user) {
|
||||
throw new AppError('There was an error enabling the user');
|
||||
}
|
||||
|
||||
await prisma.user.update({
|
||||
where: {
|
||||
id,
|
||||
},
|
||||
data: {
|
||||
disabled: false,
|
||||
},
|
||||
});
|
||||
};
|
||||
@@ -30,11 +30,11 @@ msgstr "„{documentName}“ wurde unterschrieben"
|
||||
msgid "“{documentName}” was signed by all signers"
|
||||
msgstr "„{documentName}“ wurde von allen Unterzeichnern signiert"
|
||||
|
||||
#: packages/lib/jobs/definitions/emails/send-signing-email.ts:137
|
||||
#: packages/lib/jobs/definitions/emails/send-signing-email.handler.ts:125
|
||||
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
|
||||
#: packages/lib/jobs/definitions/emails/send-signing-email.handler.ts:118
|
||||
msgid "{0} invited you to {recipientActionVerb} a document"
|
||||
msgstr "{0} hat dich eingeladen, ein Dokument {recipientActionVerb}"
|
||||
|
||||
@@ -50,7 +50,7 @@ msgstr "{0} hat das Team {teamName} bei Documenso verlassen"
|
||||
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/jobs/definitions/emails/send-signing-email.handler.ts:124
|
||||
#: packages/lib/server-only/document/resend-document.tsx:137
|
||||
msgid "{0} on behalf of \"{1}\" has invited you to {recipientActionVerb} the document \"{2}\"."
|
||||
msgstr ""
|
||||
@@ -195,6 +195,22 @@ msgstr "{recipientName} {action} ein Dokument, indem Sie einen Ihrer direkten Li
|
||||
msgid "{recipientName} has rejected the document '{documentName}'"
|
||||
msgstr "{recipientName} hat das Dokument '{documentName}' abgelehnt"
|
||||
|
||||
#: packages/email/template-components/template-document-recipient-signed.tsx:49
|
||||
msgid "{recipientReference} has completed signing the document."
|
||||
msgstr ""
|
||||
|
||||
#: packages/lib/jobs/definitions/emails/send-recipient-signed-email.ts:121
|
||||
msgid "{recipientReference} has signed \"{0}\""
|
||||
msgstr ""
|
||||
|
||||
#: packages/email/template-components/template-document-recipient-signed.tsx:43
|
||||
msgid "{recipientReference} has signed \"{documentName}\""
|
||||
msgstr ""
|
||||
|
||||
#: packages/email/templates/document-recipient-signed.tsx:27
|
||||
msgid "{recipientReference} has signed {documentName}"
|
||||
msgstr ""
|
||||
|
||||
#: packages/email/template-components/template-document-rejected.tsx:25
|
||||
msgid "{signerName} has rejected the document \"{documentName}\"."
|
||||
msgstr "{signerName} hat das Dokument \"{documentName}\" abgelehnt."
|
||||
@@ -289,7 +305,7 @@ msgstr "<0>Konto erforderlich</0> - Der Empfänger muss angemeldet sein, um das
|
||||
msgid "<0>Require passkey</0> - The recipient must have an account and passkey configured via their settings"
|
||||
msgstr "<0>Passkey erforderlich</0> - 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
|
||||
#: packages/lib/jobs/definitions/emails/send-signing-email.handler.ts:110
|
||||
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}."
|
||||
|
||||
@@ -305,7 +321,7 @@ msgstr "Ein Feld wurde entfernt"
|
||||
msgid "A field was updated"
|
||||
msgstr "Ein Feld wurde aktualisiert"
|
||||
|
||||
#: packages/lib/jobs/definitions/emails/send-team-member-joined-email.ts:107
|
||||
#: packages/lib/jobs/definitions/emails/send-team-member-joined-email.handler.ts:98
|
||||
msgid "A new member has joined your team"
|
||||
msgstr "Ein neues Mitglied ist deinem Team beigetreten"
|
||||
|
||||
@@ -329,7 +345,7 @@ msgstr "Eine Anfrage zur Verwendung Ihrer E-Mail wurde von {0} auf Documenso ini
|
||||
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
|
||||
#: packages/lib/jobs/definitions/emails/send-team-member-left-email.handler.ts:87
|
||||
msgid "A team member has left {0}"
|
||||
msgstr "Ein Teammitglied hat {0} verlassen"
|
||||
|
||||
@@ -364,12 +380,12 @@ msgstr "Übertragungsanfrage des Teams auf Documenso annehmen"
|
||||
msgid "Add a document"
|
||||
msgstr "Dokument hinzufügen"
|
||||
|
||||
#: packages/ui/primitives/document-flow/add-settings.tsx:378
|
||||
#: packages/ui/primitives/document-flow/add-settings.tsx:390
|
||||
#: 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:290
|
||||
#: packages/ui/primitives/document-flow/add-settings.tsx:302
|
||||
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."
|
||||
|
||||
@@ -414,13 +430,13 @@ msgstr "Text zum Feld hinzufügen"
|
||||
msgid "Admin"
|
||||
msgstr "Admin"
|
||||
|
||||
#: packages/ui/primitives/document-flow/add-settings.tsx:272
|
||||
#: packages/ui/primitives/document-flow/add-settings.tsx:284
|
||||
#: packages/ui/primitives/template-flow/add-template-settings.tsx:367
|
||||
msgid "Advanced Options"
|
||||
msgstr "Erweiterte Optionen"
|
||||
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:576
|
||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:414
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:577
|
||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:415
|
||||
msgid "Advanced settings"
|
||||
msgstr "Erweiterte Einstellungen"
|
||||
|
||||
@@ -472,11 +488,11 @@ msgstr "Genehmigung"
|
||||
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:524
|
||||
#: packages/ui/primitives/signature-pad/signature-pad.tsx:531
|
||||
msgid "Black"
|
||||
msgstr "Schwarz"
|
||||
|
||||
#: packages/ui/primitives/signature-pad/signature-pad.tsx:538
|
||||
#: packages/ui/primitives/signature-pad/signature-pad.tsx:545
|
||||
msgid "Blue"
|
||||
msgstr "Blau"
|
||||
|
||||
@@ -492,7 +508,7 @@ msgstr "Durch die Annahme dieser Anfrage gewähren Sie <0>{teamName}</0> Zugriff
|
||||
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/field-item-advanced-settings.tsx:357
|
||||
#: packages/ui/primitives/document-flow/send-document-action-dialog.tsx:58
|
||||
msgid "Cancel"
|
||||
msgstr "Abbrechen"
|
||||
@@ -534,7 +550,7 @@ msgstr "Checkbox-Werte"
|
||||
msgid "Clear filters"
|
||||
msgstr "Filter löschen"
|
||||
|
||||
#: packages/ui/primitives/signature-pad/signature-pad.tsx:558
|
||||
#: packages/ui/primitives/signature-pad/signature-pad.tsx:565
|
||||
msgid "Clear Signature"
|
||||
msgstr "Unterschrift löschen"
|
||||
|
||||
@@ -547,6 +563,7 @@ msgid "Close"
|
||||
msgstr "Schließen"
|
||||
|
||||
#: packages/email/template-components/template-document-completed.tsx:35
|
||||
#: packages/email/template-components/template-document-recipient-signed.tsx:37
|
||||
#: packages/email/template-components/template-document-self-signed.tsx:36
|
||||
#: packages/lib/constants/document.ts:10
|
||||
msgid "Completed"
|
||||
@@ -561,8 +578,8 @@ msgstr "Abgeschlossenes Dokument"
|
||||
msgid "Configure Direct Recipient"
|
||||
msgstr "Direkten Empfänger konfigurieren"
|
||||
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:577
|
||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:415
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:578
|
||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:416
|
||||
msgid "Configure the {0} field"
|
||||
msgstr "Konfigurieren Sie das Feld {0}"
|
||||
|
||||
@@ -619,13 +636,13 @@ msgstr "Konto erstellen"
|
||||
msgid "Custom Text"
|
||||
msgstr "Benutzerdefinierter Text"
|
||||
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:934
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:938
|
||||
#: packages/ui/primitives/document-flow/types.ts:53
|
||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:729
|
||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:733
|
||||
msgid "Date"
|
||||
msgstr "Datum"
|
||||
|
||||
#: packages/ui/primitives/document-flow/add-settings.tsx:313
|
||||
#: packages/ui/primitives/document-flow/add-settings.tsx:325
|
||||
#: packages/ui/primitives/template-flow/add-template-settings.tsx:408
|
||||
msgid "Date Format"
|
||||
msgstr "Datumsformat"
|
||||
@@ -642,16 +659,16 @@ msgstr "Hast du keinen Passwortwechsel angefordert? Wir helfen dir, dein Konto a
|
||||
msgid "Direct link receiver"
|
||||
msgstr "Empfänger des direkten Links"
|
||||
|
||||
#: packages/lib/jobs/definitions/emails/send-rejection-emails.ts:149
|
||||
#: packages/lib/jobs/definitions/emails/send-rejection-emails.handler.ts:140
|
||||
msgid "Document \"{0}\" - Rejected by {1}"
|
||||
msgstr "Dokument \"{0}\" - Abgelehnt von {1}"
|
||||
|
||||
#: packages/lib/jobs/definitions/emails/send-rejection-emails.ts:109
|
||||
#: packages/lib/jobs/definitions/emails/send-rejection-emails.handler.ts:100
|
||||
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:216
|
||||
#: packages/ui/primitives/document-flow/add-settings.tsx:227
|
||||
#: packages/ui/primitives/template-flow/add-template-settings.tsx:202
|
||||
msgid "Document access"
|
||||
msgstr "Dokumentenzugriff"
|
||||
@@ -670,7 +687,8 @@ msgstr "Dokument storniert"
|
||||
msgid "Document completed"
|
||||
msgstr "Dokument abgeschlossen"
|
||||
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:168
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:208
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:286
|
||||
msgid "Document completed email"
|
||||
msgstr "E-Mail zum Abschluss des Dokuments"
|
||||
|
||||
@@ -679,7 +697,7 @@ 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:574
|
||||
#: packages/lib/server-only/template/create-document-from-direct-template.ts:585
|
||||
msgid "Document created from direct template"
|
||||
msgstr "Dokument erstellt aus direkter Vorlage"
|
||||
|
||||
@@ -691,7 +709,7 @@ msgstr "Dokumenterstellung"
|
||||
msgid "Document deleted"
|
||||
msgstr "Dokument gelöscht"
|
||||
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:207
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:247
|
||||
msgid "Document deleted email"
|
||||
msgstr "E-Mail zum Löschen des Dokuments"
|
||||
|
||||
@@ -716,7 +734,7 @@ msgstr "Dokument ins Team verschoben"
|
||||
msgid "Document opened"
|
||||
msgstr "Dokument geöffnet"
|
||||
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:128
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:168
|
||||
msgid "Document pending email"
|
||||
msgstr "E-Mail über ausstehende Dokumente"
|
||||
|
||||
@@ -757,8 +775,8 @@ msgstr "Entwurf"
|
||||
msgid "Drag & drop your PDF here."
|
||||
msgstr "Ziehen Sie Ihr PDF hierher."
|
||||
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:1065
|
||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:860
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:1069
|
||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:864
|
||||
msgid "Dropdown"
|
||||
msgstr "Dropdown"
|
||||
|
||||
@@ -767,12 +785,12 @@ msgid "Dropdown options"
|
||||
msgstr "Dropdown-Optionen"
|
||||
|
||||
#: packages/lib/constants/document.ts:28
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:882
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:886
|
||||
#: packages/ui/primitives/document-flow/add-signature.tsx:273
|
||||
#: 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:677
|
||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:681
|
||||
#: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:471
|
||||
#: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:478
|
||||
msgid "Email"
|
||||
@@ -794,7 +812,7 @@ msgstr "E-Mail erneut gesendet"
|
||||
msgid "Email sent"
|
||||
msgstr "E-Mail gesendet"
|
||||
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:1130
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:1134
|
||||
msgid "Empty field"
|
||||
msgstr "Leeres Feld"
|
||||
|
||||
@@ -807,8 +825,8 @@ msgstr "Direktlink-Signierung aktivieren"
|
||||
msgid "Enable signing order"
|
||||
msgstr "Aktiviere die Signaturreihenfolge"
|
||||
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:802
|
||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:597
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:806
|
||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:601
|
||||
msgid "Enable Typed Signatures"
|
||||
msgstr "Aktivieren Sie getippte Unterschriften"
|
||||
|
||||
@@ -816,17 +834,17 @@ msgstr "Aktivieren Sie getippte Unterschriften"
|
||||
msgid "Enter password"
|
||||
msgstr "Passwort eingeben"
|
||||
|
||||
#: packages/ui/primitives/document-flow/field-item-advanced-settings.tsx:257
|
||||
#: packages/ui/primitives/document-flow/field-item-advanced-settings.tsx:258
|
||||
#: packages/ui/primitives/pdf-viewer.tsx:166
|
||||
msgid "Error"
|
||||
msgstr "Fehler"
|
||||
|
||||
#: packages/ui/primitives/document-flow/add-settings.tsx:283
|
||||
#: packages/ui/primitives/document-flow/add-settings.tsx:295
|
||||
#: packages/ui/primitives/template-flow/add-template-settings.tsx:378
|
||||
msgid "External ID"
|
||||
msgstr "Externe ID"
|
||||
|
||||
#: packages/ui/primitives/document-flow/field-item-advanced-settings.tsx:258
|
||||
#: packages/ui/primitives/document-flow/field-item-advanced-settings.tsx:259
|
||||
msgid "Failed to save settings."
|
||||
msgstr "Einstellungen konnten nicht gespeichert werden."
|
||||
|
||||
@@ -896,7 +914,7 @@ msgstr "Globale Empfängerauthentifizierung"
|
||||
msgid "Go Back"
|
||||
msgstr "Zurück"
|
||||
|
||||
#: packages/ui/primitives/signature-pad/signature-pad.tsx:545
|
||||
#: packages/ui/primitives/signature-pad/signature-pad.tsx:552
|
||||
msgid "Green"
|
||||
msgstr "Grün"
|
||||
|
||||
@@ -947,7 +965,7 @@ msgstr "Tritt {teamName} auf Documenso bei"
|
||||
msgid "Label"
|
||||
msgstr "Beschriftung"
|
||||
|
||||
#: packages/ui/primitives/document-flow/add-settings.tsx:176
|
||||
#: packages/ui/primitives/document-flow/add-settings.tsx:187
|
||||
#: packages/ui/primitives/template-flow/add-template-settings.tsx:162
|
||||
msgid "Language"
|
||||
msgstr "Sprache"
|
||||
@@ -983,12 +1001,12 @@ msgstr "Nachricht <0>(Optional)</0>"
|
||||
msgid "Min"
|
||||
msgstr "Min"
|
||||
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:908
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:912
|
||||
#: packages/ui/primitives/document-flow/add-signature.tsx:299
|
||||
#: 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:703
|
||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:707
|
||||
#: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:506
|
||||
#: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:512
|
||||
msgid "Name"
|
||||
@@ -1006,8 +1024,8 @@ msgstr "Muss unterzeichnen"
|
||||
msgid "Needs to view"
|
||||
msgstr "Muss sehen"
|
||||
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:693
|
||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:516
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:697
|
||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:520
|
||||
msgid "No recipient matching this description was found."
|
||||
msgstr "Kein passender Empfänger mit dieser Beschreibung gefunden."
|
||||
|
||||
@@ -1015,8 +1033,8 @@ msgstr "Kein passender Empfänger mit dieser Beschreibung gefunden."
|
||||
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:531
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:712
|
||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:535
|
||||
msgid "No recipients with this role"
|
||||
msgstr "Keine Empfänger mit dieser Rolle"
|
||||
|
||||
@@ -1044,9 +1062,9 @@ msgstr "Kein Wert gefunden."
|
||||
msgid "None"
|
||||
msgstr "Keine"
|
||||
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:986
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:990
|
||||
#: packages/ui/primitives/document-flow/types.ts:56
|
||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:781
|
||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:785
|
||||
msgid "Number"
|
||||
msgstr "Nummer"
|
||||
|
||||
@@ -1112,15 +1130,15 @@ msgstr "Bitte {0} dein Dokument<0/>\"{documentName}\""
|
||||
msgid "Please {action} your document {documentName}"
|
||||
msgstr "Bitte {action} dein Dokument {documentName}"
|
||||
|
||||
#: packages/lib/jobs/definitions/emails/send-signing-email.ts:111
|
||||
#: packages/lib/jobs/definitions/emails/send-signing-email.handler.ts:99
|
||||
msgid "Please {recipientActionVerb} this document"
|
||||
msgstr "Bitte {recipientActionVerb} dieses Dokument"
|
||||
|
||||
#: packages/lib/jobs/definitions/emails/send-signing-email.ts:125
|
||||
#: packages/lib/jobs/definitions/emails/send-signing-email.handler.ts:113
|
||||
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
|
||||
#: packages/lib/jobs/definitions/emails/send-signing-email.handler.ts:105
|
||||
msgid "Please {recipientActionVerb} your document"
|
||||
msgstr "Bitte {recipientActionVerb} dein Dokument"
|
||||
|
||||
@@ -1167,24 +1185,28 @@ msgid "Recipient"
|
||||
msgstr "Empfänger"
|
||||
|
||||
#: packages/ui/components/recipient/recipient-action-auth-select.tsx:39
|
||||
#: packages/ui/primitives/document-flow/add-settings.tsx:257
|
||||
#: packages/ui/primitives/document-flow/add-settings.tsx:269
|
||||
#: packages/ui/primitives/template-flow/add-template-settings.tsx:291
|
||||
msgid "Recipient action authentication"
|
||||
msgstr "Empfängeraktion Authentifizierung"
|
||||
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:89
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:129
|
||||
msgid "Recipient removed email"
|
||||
msgstr "E-Mail des entfernten Empfängers"
|
||||
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:50
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:51
|
||||
msgid "Recipient signed email"
|
||||
msgstr ""
|
||||
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:90
|
||||
msgid "Recipient signing request email"
|
||||
msgstr "E-Mail zur Unterzeichnungsanfrage des Empfängers"
|
||||
|
||||
#: packages/ui/primitives/signature-pad/signature-pad.tsx:531
|
||||
#: packages/ui/primitives/signature-pad/signature-pad.tsx:538
|
||||
msgid "Red"
|
||||
msgstr "Rot"
|
||||
|
||||
#: packages/ui/primitives/document-flow/add-settings.tsx:371
|
||||
#: packages/ui/primitives/document-flow/add-settings.tsx:383
|
||||
#: packages/ui/primitives/template-flow/add-template-settings.tsx:461
|
||||
msgid "Redirect URL"
|
||||
msgstr "Weiterleitungs-URL"
|
||||
@@ -1217,7 +1239,7 @@ msgstr "Erinnerung: Bitte {recipientActionVerb} dieses Dokument"
|
||||
msgid "Reminder: Please {recipientActionVerb} your document"
|
||||
msgstr "Erinnerung: Bitte {recipientActionVerb} dein Dokument"
|
||||
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:1117
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:1121
|
||||
msgid "Remove"
|
||||
msgstr "Entfernen"
|
||||
|
||||
@@ -1245,11 +1267,11 @@ msgstr "Seien Sie versichert, Ihr Dokument ist streng vertraulich und wird niema
|
||||
msgid "Rows per page"
|
||||
msgstr "Zeilen pro Seite"
|
||||
|
||||
#: packages/ui/primitives/document-flow/field-item-advanced-settings.tsx:355
|
||||
#: packages/ui/primitives/document-flow/field-item-advanced-settings.tsx:356
|
||||
msgid "Save"
|
||||
msgstr "Speichern"
|
||||
|
||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:893
|
||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:897
|
||||
msgid "Save Template"
|
||||
msgstr "Vorlage speichern"
|
||||
|
||||
@@ -1285,15 +1307,19 @@ msgstr "Senden"
|
||||
msgid "Send Document"
|
||||
msgstr "Dokument senden"
|
||||
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:158
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:198
|
||||
msgid "Send document completed email"
|
||||
msgstr "E-Mail über den Abschluss des Dokuments senden"
|
||||
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:197
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:276
|
||||
msgid "Send document completed email to the owner"
|
||||
msgstr ""
|
||||
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:237
|
||||
msgid "Send document deleted email"
|
||||
msgstr "E-Mail über das Löschen des Dokuments senden"
|
||||
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:118
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:158
|
||||
msgid "Send document pending email"
|
||||
msgstr "E-Mail über ausstehende Dokumente senden"
|
||||
|
||||
@@ -1301,11 +1327,15 @@ msgstr "E-Mail über ausstehende Dokumente senden"
|
||||
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
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:119
|
||||
msgid "Send recipient removed email"
|
||||
msgstr "E-Mail über entfernten Empfänger senden"
|
||||
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:40
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:41
|
||||
msgid "Send recipient signed email"
|
||||
msgstr ""
|
||||
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:80
|
||||
msgid "Send recipient signing request email"
|
||||
msgstr "E-Mail über Unterzeichnungsanfrage des Empfängers senden"
|
||||
|
||||
@@ -1338,11 +1368,11 @@ msgstr "Dokument signieren"
|
||||
msgid "Sign In"
|
||||
msgstr "Anmelden"
|
||||
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:830
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:834
|
||||
#: packages/ui/primitives/document-flow/add-signature.tsx:324
|
||||
#: 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:625
|
||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:629
|
||||
msgid "Signature"
|
||||
msgstr "Unterschrift"
|
||||
|
||||
@@ -1366,8 +1396,8 @@ msgstr "Unterzeichner müssen eindeutige E-Mails haben"
|
||||
msgid "Signing"
|
||||
msgstr "Unterzeichnung"
|
||||
|
||||
#: packages/lib/server-only/document/send-completed-email.ts:114
|
||||
#: packages/lib/server-only/document/send-completed-email.ts:194
|
||||
#: packages/lib/server-only/document/send-completed-email.ts:119
|
||||
#: packages/lib/server-only/document/send-completed-email.ts:199
|
||||
msgid "Signing Complete!"
|
||||
msgstr "Unterzeichnung abgeschlossen!"
|
||||
|
||||
@@ -1421,9 +1451,9 @@ msgstr "Team-E-Mail für {teamName} auf Documenso entfernt"
|
||||
msgid "Template title"
|
||||
msgstr "Vorlagentitel"
|
||||
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:960
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:964
|
||||
#: packages/ui/primitives/document-flow/types.ts:52
|
||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:755
|
||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:759
|
||||
msgid "Text"
|
||||
msgstr "Text"
|
||||
|
||||
@@ -1515,7 +1545,7 @@ msgstr "Dies kann überschrieben werden, indem die Authentifizierungsanforderung
|
||||
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
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:768
|
||||
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."
|
||||
|
||||
@@ -1531,15 +1561,19 @@ msgstr "Dieses Dokument wurde mit <0>Documenso.</0> gesendet"
|
||||
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
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:56
|
||||
msgid "This email is sent to the document owner when a recipient has signed the document."
|
||||
msgstr ""
|
||||
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:134
|
||||
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
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:95
|
||||
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
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:173
|
||||
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."
|
||||
|
||||
@@ -1551,7 +1585,7 @@ msgstr "Dieses Feld kann nicht geändert oder gelöscht werden. Wenn Sie den dir
|
||||
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
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:1101
|
||||
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."
|
||||
|
||||
@@ -1559,29 +1593,33 @@ msgstr "Dieser Empfänger kann nicht mehr bearbeitet werden, da er ein Feld unte
|
||||
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
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:252
|
||||
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
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:213
|
||||
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/document/document-email-checkboxes.tsx:291
|
||||
msgid "This will be sent to the document owner once the document has been fully completed."
|
||||
msgstr ""
|
||||
|
||||
#: 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:347
|
||||
#: packages/ui/primitives/document-flow/add-settings.tsx:359
|
||||
#: packages/ui/primitives/template-flow/add-template-settings.tsx:438
|
||||
msgid "Time Zone"
|
||||
msgstr "Zeitzone"
|
||||
|
||||
#: packages/ui/primitives/document-flow/add-settings.tsx:155
|
||||
#: packages/ui/primitives/document-flow/add-settings.tsx:166
|
||||
msgid "Title"
|
||||
msgstr "Titel"
|
||||
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:1080
|
||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:873
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:1084
|
||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:877
|
||||
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."
|
||||
|
||||
@@ -1597,7 +1635,7 @@ msgstr "Aktualisieren Sie die Rolle und fügen Sie Felder nach Bedarf für den d
|
||||
msgid "Upgrade"
|
||||
msgstr "Upgrade"
|
||||
|
||||
#: packages/ui/primitives/signature-pad/signature-pad.tsx:509
|
||||
#: packages/ui/primitives/signature-pad/signature-pad.tsx:516
|
||||
msgid "Upload Signature"
|
||||
msgstr ""
|
||||
|
||||
@@ -1726,7 +1764,7 @@ msgstr "Du wurdest eingeladen, {0} auf Documenso beizutreten"
|
||||
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:327
|
||||
#: packages/lib/server-only/recipient/set-recipients-for-document.ts:337
|
||||
msgid "You have been removed from a document"
|
||||
msgstr "Du wurdest von einem Dokument entfernt"
|
||||
|
||||
@@ -1734,7 +1772,7 @@ msgstr "Du wurdest von einem Dokument entfernt"
|
||||
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/jobs/definitions/emails/send-signing-email.handler.ts:103
|
||||
#: 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}."
|
||||
|
||||
@@ -92,11 +92,7 @@ msgstr "{0} Empfänger(in)"
|
||||
msgid "{charactersRemaining, plural, one {1 character remaining} other {{charactersRemaining} characters remaining}}"
|
||||
msgstr "{charactersRemaining, plural, one {1 Zeichen verbleibend} other {{charactersRemaining} Zeichen verbleibend}}"
|
||||
|
||||
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/billing/page.tsx:55
|
||||
msgid "{formattedTeamMemberQuanity} • Monthly • Renews: {formattedDate}"
|
||||
msgstr "{formattedTeamMemberQuanity} • Monatlich • Erneuert: {formattedDate}"
|
||||
|
||||
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/billing/page.tsx:48
|
||||
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/billing/page.tsx:59
|
||||
msgid "{numberOfSeats, plural, one {# member} other {# members}}"
|
||||
msgstr "{numberOfSeats, plural, one {# Mitglied} other {# Mitglieder}}"
|
||||
|
||||
@@ -254,21 +250,21 @@ 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/[id]/logs/document-logs-data-table.tsx:98
|
||||
#: 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/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx:116
|
||||
#: 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)/documents/data-table.tsx:79
|
||||
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:177
|
||||
#: 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
|
||||
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:131
|
||||
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:140
|
||||
#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:116
|
||||
#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:125
|
||||
msgid "Actions"
|
||||
msgstr "Aktionen"
|
||||
|
||||
@@ -491,7 +487,7 @@ msgstr "Ein Fehler ist aufgetreten, während die Teammitglieder geladen wurden.
|
||||
msgid "An error occurred while moving the document."
|
||||
msgstr "Ein Fehler ist aufgetreten, während das Dokument verschoben wurde."
|
||||
|
||||
#: apps/web/src/app/(dashboard)/templates/move-template-dialog.tsx:57
|
||||
#: apps/web/src/app/(dashboard)/templates/move-template-dialog.tsx:65
|
||||
msgid "An error occurred while moving the template."
|
||||
msgstr "Ein Fehler ist aufgetreten, während die Vorlage verschoben wurde."
|
||||
|
||||
@@ -499,7 +495,7 @@ msgstr "Ein Fehler ist aufgetreten, während die Vorlage verschoben wurde."
|
||||
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]/checkbox-field.tsx:154
|
||||
#: 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
|
||||
@@ -522,7 +518,7 @@ msgstr "Ein Fehler ist aufgetreten, während das Dokument gesendet wurde."
|
||||
msgid "An error occurred while sending your confirmation email"
|
||||
msgstr "Beim Senden Ihrer Bestätigungs-E-Mail ist ein Fehler aufgetreten"
|
||||
|
||||
#: apps/web/src/app/(signing)/sign/[token]/checkbox-field.tsx:123
|
||||
#: apps/web/src/app/(signing)/sign/[token]/checkbox-field.tsx:125
|
||||
#: 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
|
||||
@@ -544,7 +540,7 @@ msgstr "Ein Fehler ist aufgetreten, während versucht wurde, eine Checkout-Sitzu
|
||||
msgid "An error occurred while updating the document settings."
|
||||
msgstr "Ein Fehler ist aufgetreten, während die Dokumenteinstellungen aktualisiert wurden."
|
||||
|
||||
#: apps/web/src/app/(signing)/sign/[token]/checkbox-field.tsx:213
|
||||
#: apps/web/src/app/(signing)/sign/[token]/checkbox-field.tsx:215
|
||||
msgid "An error occurred while updating the signature."
|
||||
msgstr "Ein Fehler ist aufgetreten, während die Unterschrift aktualisiert wurde."
|
||||
|
||||
@@ -578,11 +574,11 @@ msgstr "Ein Fehler ist aufgetreten, während dein Dokument hochgeladen wurde."
|
||||
#: 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/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/signin.tsx:249
|
||||
#: apps/web/src/components/forms/signin.tsx:257
|
||||
#: apps/web/src/components/forms/signin.tsx:271
|
||||
#: apps/web/src/components/forms/signin.tsx:286
|
||||
#: apps/web/src/components/forms/signin.tsx:302
|
||||
#: apps/web/src/components/forms/signup.tsx:124
|
||||
#: apps/web/src/components/forms/signup.tsx:138
|
||||
#: apps/web/src/components/forms/token.tsx:143
|
||||
@@ -597,11 +593,11 @@ 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
|
||||
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:221
|
||||
msgid "Any Source"
|
||||
msgstr "Jede Quelle"
|
||||
|
||||
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:205
|
||||
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:201
|
||||
msgid "Any Status"
|
||||
msgstr "Jeder Status"
|
||||
|
||||
@@ -704,7 +700,7 @@ msgid "Background Color"
|
||||
msgstr "Hintergrundfarbe"
|
||||
|
||||
#: apps/web/src/components/forms/2fa/disable-authenticator-app-dialog.tsx:167
|
||||
#: apps/web/src/components/forms/signin.tsx:485
|
||||
#: apps/web/src/components/forms/signin.tsx:486
|
||||
msgid "Backup Code"
|
||||
msgstr "Backup-Code"
|
||||
|
||||
@@ -721,7 +717,7 @@ msgid "Basic details"
|
||||
msgstr "Basisdetails"
|
||||
|
||||
#: 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/app/(teams)/t/[teamUrl]/settings/billing/page.tsx:71
|
||||
#: 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
|
||||
@@ -737,7 +733,7 @@ msgstr "Markenpräferenzen"
|
||||
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/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx:97
|
||||
#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/data-table.tsx:48
|
||||
msgid "Browser"
|
||||
msgstr "Browser"
|
||||
@@ -780,7 +776,7 @@ msgstr "Durch die Verwendung der elektronischen Unterschriftsfunktion stimmen Si
|
||||
#: 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/move-template-dialog.tsx:131
|
||||
#: 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
|
||||
@@ -864,9 +860,9 @@ msgstr "Benutzername jetzt beanspruchen"
|
||||
msgid "Click here to get started"
|
||||
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)/documents/[id]/document-page-view-recent-activity.tsx:76
|
||||
#: 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/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:66
|
||||
#: apps/web/src/components/document/document-history-sheet.tsx:133
|
||||
msgid "Click here to retry"
|
||||
msgstr "Klicken Sie hier, um es erneut zu versuchen"
|
||||
@@ -919,7 +915,7 @@ msgstr "Unterzeichnung abschließen"
|
||||
msgid "Complete Viewing"
|
||||
msgstr "Betrachten abschließen"
|
||||
|
||||
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:208
|
||||
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:204
|
||||
#: apps/web/src/components/(dashboard)/avatar/stack-avatars-with-tooltip.tsx:77
|
||||
#: apps/web/src/components/formatter/document-status.tsx:28
|
||||
msgid "Completed"
|
||||
@@ -1149,9 +1145,9 @@ msgstr "Erstellen Sie Ihr Konto und beginnen Sie mit dem modernen Dokumentensign
|
||||
#: apps/web/src/app/(dashboard)/admin/documents/document-results.tsx:62
|
||||
#: apps/web/src/app/(dashboard)/admin/leaderboard/data-table-leaderboard.tsx:96
|
||||
#: 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)/documents/data-table.tsx:48
|
||||
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table.tsx:63
|
||||
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:105
|
||||
#: 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
|
||||
@@ -1168,7 +1164,7 @@ msgid "Created by"
|
||||
msgstr "Erstellt von"
|
||||
|
||||
#: apps/web/src/app/(dashboard)/admin/documents/[id]/page.tsx:48
|
||||
#: apps/web/src/components/(teams)/tables/pending-user-teams-data-table.tsx:78
|
||||
#: apps/web/src/components/(teams)/tables/pending-user-teams-data-table.tsx:76
|
||||
msgid "Created on"
|
||||
msgstr "Erstellt am"
|
||||
|
||||
@@ -1187,10 +1183,6 @@ msgstr "Aktuelles Passwort"
|
||||
msgid "Current password is incorrect."
|
||||
msgstr ""
|
||||
|
||||
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/billing/page.tsx:69
|
||||
msgid "Current plan: {0}"
|
||||
msgstr "Aktueller Plan: {0}"
|
||||
|
||||
#: apps/web/src/app/(dashboard)/settings/billing/billing-plans.tsx:28
|
||||
msgid "Daily"
|
||||
msgstr "Täglich"
|
||||
@@ -1199,7 +1191,7 @@ msgstr "Täglich"
|
||||
msgid "Dark Mode"
|
||||
msgstr "Dunkelmodus"
|
||||
|
||||
#: apps/web/src/app/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx:70
|
||||
#: apps/web/src/app/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx:68
|
||||
#: apps/web/src/app/(signing)/sign/[token]/date-field.tsx:148
|
||||
msgid "Date"
|
||||
msgstr "Datum"
|
||||
@@ -1319,7 +1311,7 @@ msgstr "Konto wird gelöscht..."
|
||||
msgid "Details"
|
||||
msgstr "Einzelheiten"
|
||||
|
||||
#: apps/web/src/app/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx:75
|
||||
#: apps/web/src/app/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx:73
|
||||
#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:242
|
||||
msgid "Device"
|
||||
msgstr "Gerät"
|
||||
@@ -1334,8 +1326,8 @@ msgstr "Direkter Link"
|
||||
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
|
||||
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:156
|
||||
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:227
|
||||
msgid "Direct Link"
|
||||
msgstr "Direkter Link"
|
||||
|
||||
@@ -1439,11 +1431,11 @@ msgstr "Dokument abgeschlossen!"
|
||||
msgid "Document created"
|
||||
msgstr "Dokument erstellt"
|
||||
|
||||
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:129
|
||||
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:127
|
||||
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
|
||||
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:132
|
||||
msgid "Document created using a <0>direct link</0>"
|
||||
msgstr "Dokument erstellt mit einem <0>direkten Link</0>"
|
||||
|
||||
@@ -1598,7 +1590,7 @@ msgstr "Auditprotokolle herunterladen"
|
||||
msgid "Download Certificate"
|
||||
msgstr "Zertifikat herunterladen"
|
||||
|
||||
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:214
|
||||
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:210
|
||||
#: apps/web/src/components/formatter/document-status.tsx:34
|
||||
msgid "Draft"
|
||||
msgstr "Entwurf"
|
||||
@@ -1668,7 +1660,7 @@ msgstr "Offenlegung der elektronischen Unterschrift"
|
||||
#: 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/signin.tsx:339
|
||||
#: apps/web/src/components/forms/signup.tsx:176
|
||||
msgid "Email"
|
||||
msgstr "E-Mail"
|
||||
@@ -1778,12 +1770,12 @@ msgstr "Geben Sie hier Ihren Text ein"
|
||||
#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:217
|
||||
#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:256
|
||||
#: 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/move-template-dialog.tsx:68
|
||||
#: 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]/checkbox-field.tsx:124
|
||||
#: apps/web/src/app/(signing)/sign/[token]/checkbox-field.tsx:153
|
||||
#: apps/web/src/app/(signing)/sign/[token]/checkbox-field.tsx:214
|
||||
#: 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
|
||||
@@ -1859,7 +1851,7 @@ msgid "For any questions regarding this disclosure, electronic signatures, or an
|
||||
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
|
||||
#: apps/web/src/components/forms/signin.tsx:371
|
||||
msgid "Forgot your password?"
|
||||
msgstr "Haben Sie Ihr Passwort vergessen?"
|
||||
|
||||
@@ -2039,11 +2031,11 @@ msgstr "Einladung akzeptiert!"
|
||||
msgid "Invitation declined"
|
||||
msgstr "Einladung abgelehnt"
|
||||
|
||||
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:80
|
||||
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:78
|
||||
msgid "Invitation has been deleted"
|
||||
msgstr "Einladung wurde gelöscht"
|
||||
|
||||
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:63
|
||||
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:61
|
||||
msgid "Invitation has been resent"
|
||||
msgstr "Einladung wurde erneut gesendet"
|
||||
|
||||
@@ -2063,7 +2055,7 @@ msgstr "Mitglieder einladen"
|
||||
msgid "Invite team members"
|
||||
msgstr "Teammitglieder einladen"
|
||||
|
||||
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:128
|
||||
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:126
|
||||
msgid "Invited At"
|
||||
msgstr "Eingeladen am"
|
||||
|
||||
@@ -2133,7 +2125,7 @@ msgstr "Zuletzt aktualisiert"
|
||||
msgid "Last updated at"
|
||||
msgstr "Zuletzt aktualisiert am"
|
||||
|
||||
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table.tsx:71
|
||||
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table.tsx:69
|
||||
msgid "Last used"
|
||||
msgstr "Zuletzt verwendet"
|
||||
|
||||
@@ -2142,7 +2134,7 @@ msgid "Leaderboard"
|
||||
msgstr ""
|
||||
|
||||
#: apps/web/src/components/(teams)/dialogs/leave-team-dialog.tsx:111
|
||||
#: apps/web/src/components/(teams)/tables/current-user-teams-data-table.tsx:117
|
||||
#: apps/web/src/components/(teams)/tables/current-user-teams-data-table.tsx:115
|
||||
msgid "Leave"
|
||||
msgstr "Verlassen"
|
||||
|
||||
@@ -2175,7 +2167,7 @@ msgstr "Links generiert"
|
||||
msgid "Listening to {0}"
|
||||
msgstr "Anhören von {0}"
|
||||
|
||||
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recent-activity.tsx:100
|
||||
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recent-activity.tsx:98
|
||||
msgid "Load older activity"
|
||||
msgstr "Ältere Aktivitäten laden"
|
||||
|
||||
@@ -2190,11 +2182,11 @@ msgid "Loading Document..."
|
||||
msgstr "Dokument wird geladen..."
|
||||
|
||||
#: apps/web/src/app/(dashboard)/documents/move-document-dialog.tsx:92
|
||||
#: apps/web/src/app/(dashboard)/templates/move-template-dialog.tsx:91
|
||||
#: apps/web/src/app/(dashboard)/templates/move-template-dialog.tsx:103
|
||||
msgid "Loading teams..."
|
||||
msgstr "Teams werden geladen..."
|
||||
|
||||
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recent-activity.tsx:100
|
||||
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recent-activity.tsx:98
|
||||
msgid "Loading..."
|
||||
msgstr "Wird geladen..."
|
||||
|
||||
@@ -2204,7 +2196,7 @@ msgstr "Wird geladen..."
|
||||
msgid "Login"
|
||||
msgstr "Anmelden"
|
||||
|
||||
#: apps/web/src/components/(teams)/tables/current-user-teams-data-table.tsx:101
|
||||
#: apps/web/src/components/(teams)/tables/current-user-teams-data-table.tsx:99
|
||||
msgid "Manage"
|
||||
msgstr "Verwalten"
|
||||
|
||||
@@ -2252,7 +2244,7 @@ msgstr "Abonnement verwalten"
|
||||
msgid "Manage subscriptions"
|
||||
msgstr "Abonnements verwalten"
|
||||
|
||||
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/billing/page.tsx:81
|
||||
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/billing/page.tsx:87
|
||||
msgid "Manage team subscription."
|
||||
msgstr "Teamabonnement verwalten."
|
||||
|
||||
@@ -2292,8 +2284,8 @@ msgstr "MAU (erstellt Dokument)"
|
||||
msgid "MAU (had document completed)"
|
||||
msgstr "MAU (hat Dokument abgeschlossen)"
|
||||
|
||||
#: 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
|
||||
#: apps/web/src/components/(teams)/tables/current-user-teams-data-table.tsx:88
|
||||
#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:111
|
||||
msgid "Member Since"
|
||||
msgstr "Mitglied seit"
|
||||
|
||||
@@ -2309,6 +2301,7 @@ msgid "Modify recipients"
|
||||
msgstr "Empfänger ändern"
|
||||
|
||||
#: apps/web/src/app/(dashboard)/settings/billing/billing-plans.tsx:30
|
||||
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/billing/page.tsx:54
|
||||
msgid "Monthly"
|
||||
msgstr "Monatlich"
|
||||
|
||||
@@ -2321,7 +2314,7 @@ msgid "Monthly Active Users: Users that had at least one of their documents comp
|
||||
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
|
||||
#: apps/web/src/app/(dashboard)/templates/move-template-dialog.tsx:134
|
||||
msgid "Move"
|
||||
msgstr "Verschieben"
|
||||
|
||||
@@ -2329,7 +2322,7 @@ msgstr "Verschieben"
|
||||
msgid "Move Document to Team"
|
||||
msgstr "Dokument in Team verschieben"
|
||||
|
||||
#: apps/web/src/app/(dashboard)/templates/move-template-dialog.tsx:77
|
||||
#: apps/web/src/app/(dashboard)/templates/move-template-dialog.tsx:89
|
||||
msgid "Move Template to Team"
|
||||
msgstr "Vorlage in Team verschieben"
|
||||
|
||||
@@ -2339,7 +2332,7 @@ 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
|
||||
#: apps/web/src/app/(dashboard)/templates/move-template-dialog.tsx:134
|
||||
msgid "Moving..."
|
||||
msgstr "Verschieben..."
|
||||
|
||||
@@ -2352,7 +2345,7 @@ msgstr "Meine Vorlagen"
|
||||
#: 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)/settings/security/passkeys/user-passkeys-data-table.tsx:59
|
||||
#: 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:118
|
||||
@@ -2367,7 +2360,7 @@ msgstr "Name"
|
||||
msgid "Need to sign documents?"
|
||||
msgstr "Müssen Dokumente signieren?"
|
||||
|
||||
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table.tsx:76
|
||||
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table.tsx:74
|
||||
msgid "Never"
|
||||
msgstr "Niemals"
|
||||
|
||||
@@ -2402,7 +2395,7 @@ msgstr "Keine aktiven Entwürfe"
|
||||
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/(teams)/t/[teamUrl]/settings/billing/page.tsx:42
|
||||
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/billing/page.tsx:43
|
||||
msgid "No payment required"
|
||||
msgstr "Keine Zahlung erforderlich"
|
||||
|
||||
@@ -2410,11 +2403,11 @@ msgstr "Keine Zahlung erforderlich"
|
||||
msgid "No public profile templates found"
|
||||
msgstr "Keine Vorlagen für das öffentliche Profil gefunden"
|
||||
|
||||
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recent-activity.tsx:108
|
||||
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recent-activity.tsx:106
|
||||
msgid "No recent activity"
|
||||
msgstr "Keine aktuellen Aktivitäten"
|
||||
|
||||
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:103
|
||||
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:101
|
||||
msgid "No recent documents"
|
||||
msgstr "Keine aktuellen Dokumente"
|
||||
|
||||
@@ -2449,7 +2442,7 @@ msgstr "Kein Wert gefunden."
|
||||
msgid "No worries, it happens! Enter your email and we'll email you a special link to reset your password."
|
||||
msgstr "Keine Sorge, das passiert! Geben Sie Ihre E-Mail ein, und wir senden Ihnen einen speziellen Link zum Zurücksetzen Ihres Passworts."
|
||||
|
||||
#: apps/web/src/components/forms/signin.tsx:160
|
||||
#: apps/web/src/components/forms/signin.tsx:161
|
||||
msgid "Not supported"
|
||||
msgstr "Nicht unterstützt"
|
||||
|
||||
@@ -2535,7 +2528,7 @@ msgstr "Geöffnet"
|
||||
msgid "Or"
|
||||
msgstr "Oder"
|
||||
|
||||
#: apps/web/src/components/forms/signin.tsx:390
|
||||
#: apps/web/src/components/forms/signin.tsx:391
|
||||
msgid "Or continue with"
|
||||
msgstr "Oder fahren Sie fort mit"
|
||||
|
||||
@@ -2546,8 +2539,8 @@ 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
|
||||
#: apps/web/src/components/(teams)/tables/current-user-teams-data-table.tsx:84
|
||||
#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:107
|
||||
msgid "Owner"
|
||||
msgstr "Besitzer"
|
||||
|
||||
@@ -2555,7 +2548,7 @@ msgstr "Besitzer"
|
||||
msgid "Paid"
|
||||
msgstr "Bezahlt"
|
||||
|
||||
#: apps/web/src/components/forms/signin.tsx:435
|
||||
#: apps/web/src/components/forms/signin.tsx:436
|
||||
msgid "Passkey"
|
||||
msgstr "Passkey"
|
||||
|
||||
@@ -2592,14 +2585,14 @@ msgstr "Passkeys"
|
||||
msgid "Passkeys allow you to sign in and authenticate using biometrics, password managers, etc."
|
||||
msgstr "Passkeys ermöglichen das Anmelden und die Authentifizierung mit biometrischen Daten, Passwortmanagern usw."
|
||||
|
||||
#: apps/web/src/components/forms/signin.tsx:161
|
||||
#: apps/web/src/components/forms/signin.tsx:162
|
||||
msgid "Passkeys are not supported on this browser"
|
||||
msgstr "Passkeys werden von diesem Browser nicht unterstützt"
|
||||
|
||||
#: apps/web/src/components/(dashboard)/common/command-menu.tsx:70
|
||||
#: apps/web/src/components/forms/password.tsx:128
|
||||
#: apps/web/src/components/forms/reset-password.tsx:115
|
||||
#: apps/web/src/components/forms/signin.tsx:356
|
||||
#: apps/web/src/components/forms/signin.tsx:357
|
||||
#: apps/web/src/components/forms/signup.tsx:192
|
||||
#: apps/web/src/components/forms/v2/signup.tsx:347
|
||||
msgid "Password"
|
||||
@@ -2629,7 +2622,7 @@ msgid "Payment overdue"
|
||||
msgstr "Zahlung überfällig"
|
||||
|
||||
#: 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/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:207
|
||||
#: 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
|
||||
@@ -2746,7 +2739,7 @@ msgstr "Bitte überprüfen Sie das Dokument vor der Unterzeichnung."
|
||||
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."
|
||||
|
||||
#: apps/web/src/components/forms/signin.tsx:203
|
||||
#: apps/web/src/components/forms/signin.tsx:204
|
||||
msgid "Please try again later or login using your normal details"
|
||||
msgstr "Bitte versuchen Sie es später erneut oder melden Sie sich mit Ihren normalen Daten an"
|
||||
|
||||
@@ -2858,17 +2851,17 @@ msgstr "Der Grund muss weniger als 500 Zeichen lang sein"
|
||||
msgid "Reauthentication is required to sign this field"
|
||||
msgstr "Eine erneute Authentifizierung ist erforderlich, um dieses Feld zu unterschreiben"
|
||||
|
||||
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recent-activity.tsx:57
|
||||
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recent-activity.tsx:55
|
||||
#: apps/web/src/app/(dashboard)/settings/security/page.tsx:130
|
||||
msgid "Recent activity"
|
||||
msgstr "Aktuelle Aktivitäten"
|
||||
|
||||
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:47
|
||||
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:45
|
||||
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)/documents/data-table.tsx:63
|
||||
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:116
|
||||
#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:280
|
||||
msgid "Recipient"
|
||||
msgstr "Empfänger"
|
||||
@@ -2929,8 +2922,8 @@ msgstr "Haben Sie Ihr Passwort vergessen? <0>Einloggen</0>"
|
||||
#: 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/(teams)/tables/team-member-invites-data-table.tsx:164
|
||||
#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:165
|
||||
#: apps/web/src/components/forms/avatar-image.tsx:166
|
||||
msgid "Remove"
|
||||
msgstr "Entfernen"
|
||||
@@ -2939,10 +2932,14 @@ msgstr "Entfernen"
|
||||
msgid "Remove team email"
|
||||
msgstr "Team-E-Mail entfernen"
|
||||
|
||||
#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:164
|
||||
#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:162
|
||||
msgid "Remove team member"
|
||||
msgstr "Teammitglied entfernen"
|
||||
|
||||
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/billing/page.tsx:63
|
||||
msgid "Renews: {formattedDate}"
|
||||
msgstr ""
|
||||
|
||||
#: apps/web/src/components/forms/password.tsx:144
|
||||
#: apps/web/src/components/forms/reset-password.tsx:131
|
||||
msgid "Repeat Password"
|
||||
@@ -2957,7 +2954,7 @@ msgid "Reseal document"
|
||||
msgstr "Dokument wieder versiegeln"
|
||||
|
||||
#: 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
|
||||
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:152
|
||||
msgid "Resend"
|
||||
msgstr "Erneut senden"
|
||||
|
||||
@@ -3035,9 +3032,9 @@ msgstr "Zugriff widerrufen"
|
||||
#: 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
|
||||
#: apps/web/src/components/(teams)/tables/current-user-teams-data-table.tsx:80
|
||||
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:121
|
||||
#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:103
|
||||
msgid "Role"
|
||||
msgstr "Rolle"
|
||||
|
||||
@@ -3094,7 +3091,7 @@ msgid "Select"
|
||||
msgstr "Auswählen"
|
||||
|
||||
#: apps/web/src/app/(dashboard)/documents/move-document-dialog.tsx:87
|
||||
#: apps/web/src/app/(dashboard)/templates/move-template-dialog.tsx:86
|
||||
#: apps/web/src/app/(dashboard)/templates/move-template-dialog.tsx:98
|
||||
msgid "Select a team"
|
||||
msgstr "Wählen Sie ein Team aus"
|
||||
|
||||
@@ -3102,7 +3099,7 @@ msgstr "Wählen Sie ein Team aus"
|
||||
msgid "Select a team to move this document to. This action cannot be undone."
|
||||
msgstr "Wählen Sie ein Team aus, um dieses Dokument dorthin zu verschieben. Diese Aktion kann nicht rückgängig gemacht werden."
|
||||
|
||||
#: apps/web/src/app/(dashboard)/templates/move-template-dialog.tsx:80
|
||||
#: apps/web/src/app/(dashboard)/templates/move-template-dialog.tsx:92
|
||||
msgid "Select a team to move this template to. This action cannot be undone."
|
||||
msgstr "Wählen Sie ein Team aus, um diese Vorlage dorthin zu verschieben. Diese Aktion kann nicht rückgängig gemacht werden."
|
||||
|
||||
@@ -3134,7 +3131,7 @@ msgstr "Im Namen des Teams senden"
|
||||
msgid "Send reminder"
|
||||
msgstr "Erinnerung senden"
|
||||
|
||||
#: apps/web/src/app/(dashboard)/documents/data-table.tsx:65
|
||||
#: apps/web/src/app/(dashboard)/documents/data-table.tsx:59
|
||||
msgid "Sender"
|
||||
msgstr "Absender"
|
||||
|
||||
@@ -3233,8 +3230,8 @@ msgid "Sign Here"
|
||||
msgstr "Hier unterzeichnen"
|
||||
|
||||
#: apps/web/src/app/not-found.tsx:29
|
||||
#: apps/web/src/components/forms/signin.tsx:383
|
||||
#: apps/web/src/components/forms/signin.tsx:510
|
||||
#: apps/web/src/components/forms/signin.tsx:384
|
||||
#: apps/web/src/components/forms/signin.tsx:511
|
||||
msgid "Sign In"
|
||||
msgstr "Einloggen"
|
||||
|
||||
@@ -3319,8 +3316,8 @@ msgstr "Unterzeichnungszertifikat"
|
||||
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
|
||||
#: apps/web/src/components/forms/signin.tsx:384
|
||||
#: apps/web/src/components/forms/signin.tsx:511
|
||||
msgid "Signing in..."
|
||||
msgstr "Anmeldung..."
|
||||
|
||||
@@ -3396,8 +3393,8 @@ msgstr "Website Einstellungen"
|
||||
#: 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)/tables/team-member-invites-data-table.tsx:66
|
||||
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:83
|
||||
#: apps/web/src/components/(teams)/team-billing-portal-button.tsx:29
|
||||
msgid "Something went wrong"
|
||||
msgstr "Etwas ist schiefgelaufen"
|
||||
@@ -3439,7 +3436,7 @@ msgstr "Entschuldigung, wir konnten die Prüfprotokolle nicht herunterladen. Bit
|
||||
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
|
||||
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:134
|
||||
msgid "Source"
|
||||
msgstr "Quelle"
|
||||
|
||||
@@ -3449,8 +3446,8 @@ 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/(dashboard)/documents/data-table.tsx:73
|
||||
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:126
|
||||
#: 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"
|
||||
@@ -3492,8 +3489,8 @@ msgstr "Abonnements"
|
||||
#: apps/web/src/components/(teams)/dialogs/update-team-member-dialog.tsx:92
|
||||
#: apps/web/src/components/(teams)/forms/update-team-form.tsx:67
|
||||
#: 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/(teams)/tables/team-member-invites-data-table.tsx:60
|
||||
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:77
|
||||
#: 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
|
||||
@@ -3512,8 +3509,8 @@ msgstr "Systemanforderungen"
|
||||
msgid "System Theme"
|
||||
msgstr "Systemthema"
|
||||
|
||||
#: 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
|
||||
#: apps/web/src/components/(teams)/tables/current-user-teams-data-table.tsx:63
|
||||
#: apps/web/src/components/(teams)/tables/pending-user-teams-data-table.tsx:62
|
||||
msgid "Team"
|
||||
msgstr "Team"
|
||||
|
||||
@@ -3559,8 +3556,8 @@ msgstr "Teameinladung"
|
||||
msgid "Team invitations have been sent."
|
||||
msgstr "Teameinladungen wurden gesendet."
|
||||
|
||||
#: 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
|
||||
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:107
|
||||
#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:84
|
||||
msgid "Team Member"
|
||||
msgstr "Teammitglied"
|
||||
|
||||
@@ -3634,10 +3631,10 @@ msgstr "Teams"
|
||||
msgid "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]/edit/template-edit-page-view.tsx:64
|
||||
#: 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-documents-table.tsx:144
|
||||
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:224
|
||||
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view.tsx:148
|
||||
#: apps/web/src/components/(teams)/dialogs/invite-team-member-dialog.tsx:408
|
||||
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:271
|
||||
@@ -3664,10 +3661,14 @@ msgstr "Vorlage ist von Deinem öffentlichen Profil entfernt worden."
|
||||
msgid "Template has been updated."
|
||||
msgstr "Vorlage wurde aktualisiert."
|
||||
|
||||
#: apps/web/src/app/(dashboard)/templates/move-template-dialog.tsx:48
|
||||
#: apps/web/src/app/(dashboard)/templates/move-template-dialog.tsx:50
|
||||
msgid "Template moved"
|
||||
msgstr "Vorlage verschoben"
|
||||
|
||||
#: apps/web/src/app/(dashboard)/templates/move-template-dialog.tsx:62
|
||||
msgid "Template not found or already associated with a team."
|
||||
msgstr ""
|
||||
|
||||
#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:246
|
||||
msgid "Template saved"
|
||||
msgstr "Vorlage gespeichert"
|
||||
@@ -3795,7 +3796,7 @@ msgstr "Die Teamübertragungsanfrage an <0>{0}</0> ist abgelaufen."
|
||||
msgid "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
|
||||
#: apps/web/src/app/(dashboard)/templates/move-template-dialog.tsx:51
|
||||
msgid "The template has been successfully moved to the selected team."
|
||||
msgstr "Die Vorlage wurde erfolgreich in das ausgewählte Team verschoben."
|
||||
|
||||
@@ -3884,11 +3885,11 @@ msgstr "Dieses Dokument wurde von allen Empfängern unterschrieben"
|
||||
msgid "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
|
||||
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:148
|
||||
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
|
||||
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:160
|
||||
msgid "This document was created using a direct link."
|
||||
msgstr "Dieses Dokument wurde mit einem direkten Link erstellt."
|
||||
|
||||
@@ -3908,7 +3909,7 @@ msgstr "Dieser Link ist ungültig oder abgelaufen. Bitte kontaktieren Sie Ihr Te
|
||||
msgid "This passkey has already been registered."
|
||||
msgstr "Dieser Zugangsschlüssel wurde bereits registriert."
|
||||
|
||||
#: apps/web/src/components/forms/signin.tsx:200
|
||||
#: apps/web/src/components/forms/signin.tsx:201
|
||||
msgid "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."
|
||||
|
||||
@@ -3916,7 +3917,7 @@ msgstr "Dieser Passkey ist für diese Anwendung nicht konfiguriert. Bitte melden
|
||||
msgid "This price includes minimum 5 seats."
|
||||
msgstr "Dieser Preis beinhaltet mindestens 5 Plätze."
|
||||
|
||||
#: apps/web/src/components/forms/signin.tsx:202
|
||||
#: apps/web/src/components/forms/signin.tsx:203
|
||||
msgid "This session has expired. Please try again."
|
||||
msgstr "Diese Sitzung ist abgelaufen. Bitte versuchen Sie es erneut."
|
||||
|
||||
@@ -3949,7 +3950,7 @@ msgstr "Dieser Benutzername ist bereits vergeben"
|
||||
msgid "This username is already taken"
|
||||
msgstr "Dieser Benutzername ist bereits vergeben"
|
||||
|
||||
#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-data-table.tsx:73
|
||||
#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-data-table.tsx:71
|
||||
#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/data-table.tsx:44
|
||||
msgid "Time"
|
||||
msgstr "Zeit"
|
||||
@@ -3963,8 +3964,8 @@ 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)/documents/data-table.tsx:54
|
||||
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:111
|
||||
#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:61
|
||||
msgid "Title"
|
||||
msgstr "Titel"
|
||||
@@ -4098,7 +4099,7 @@ msgstr "Zwei-Faktor-Authentifizierung"
|
||||
msgid "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
|
||||
#: apps/web/src/components/forms/signin.tsx:449
|
||||
msgid "Two-Factor Authentication"
|
||||
msgstr "Zwei-Faktor-Authentifizierung"
|
||||
|
||||
@@ -4155,7 +4156,7 @@ msgstr "Direkter Zugriff auf die Vorlage kann nicht erstellt werden. Bitte versu
|
||||
msgid "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
|
||||
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:84
|
||||
msgid "Unable to delete invitation. Please try again."
|
||||
msgstr "Einladung kann nicht gelöscht werden. Bitte versuchen Sie es erneut."
|
||||
|
||||
@@ -4171,12 +4172,12 @@ msgstr "Zwei-Faktor-Authentifizierung kann nicht deaktiviert werden"
|
||||
msgid "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/app/(dashboard)/documents/[id]/document-page-view-recent-activity.tsx:70
|
||||
#: apps/web/src/components/document/document-history-sheet.tsx:127
|
||||
msgid "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
|
||||
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:60
|
||||
msgid "Unable to load documents"
|
||||
msgstr "Dokumente können nicht geladen werden"
|
||||
|
||||
@@ -4192,7 +4193,7 @@ msgstr "Derzeit ist es nicht möglich, die E-Mail-Verifizierung zu entfernen. Bi
|
||||
msgid "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
|
||||
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:67
|
||||
msgid "Unable to resend invitation. Please try again."
|
||||
msgstr "Einladung kann nicht erneut gesendet werden. Bitte versuchen Sie es erneut."
|
||||
|
||||
@@ -4209,8 +4210,8 @@ msgstr "Passwort kann nicht zurückgesetzt werden"
|
||||
msgid "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
|
||||
#: apps/web/src/components/forms/signin.tsx:248
|
||||
#: apps/web/src/components/forms/signin.tsx:256
|
||||
msgid "Unable to sign in"
|
||||
msgstr "Anmeldung nicht möglich"
|
||||
|
||||
@@ -4227,6 +4228,7 @@ msgstr "Unvollendet"
|
||||
#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:262
|
||||
#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:273
|
||||
#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:284
|
||||
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/billing/page.tsx:55
|
||||
msgid "Unknown"
|
||||
msgstr "Unbekannt"
|
||||
|
||||
@@ -4267,7 +4269,7 @@ msgstr "Profil aktualisieren"
|
||||
msgid "Update Recipient"
|
||||
msgstr "Empfänger aktualisieren"
|
||||
|
||||
#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:146
|
||||
#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:144
|
||||
msgid "Update role"
|
||||
msgstr "Rolle aktualisieren"
|
||||
|
||||
@@ -4336,12 +4338,12 @@ msgid "Use"
|
||||
msgstr "Verwenden"
|
||||
|
||||
#: apps/web/src/components/forms/2fa/disable-authenticator-app-dialog.tsx:187
|
||||
#: apps/web/src/components/forms/signin.tsx:505
|
||||
#: apps/web/src/components/forms/signin.tsx:506
|
||||
msgid "Use Authenticator"
|
||||
msgstr "Authenticator verwenden"
|
||||
|
||||
#: apps/web/src/components/forms/2fa/disable-authenticator-app-dialog.tsx:185
|
||||
#: apps/web/src/components/forms/signin.tsx:503
|
||||
#: apps/web/src/components/forms/signin.tsx:504
|
||||
msgid "Use Backup Code"
|
||||
msgstr "Backup-Code verwenden"
|
||||
|
||||
@@ -4349,7 +4351,7 @@ msgstr "Backup-Code verwenden"
|
||||
msgid "Use Template"
|
||||
msgstr "Vorlage verwenden"
|
||||
|
||||
#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-data-table.tsx:78
|
||||
#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-data-table.tsx:76
|
||||
#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/data-table.tsx:45
|
||||
msgid "User"
|
||||
msgstr "Benutzer"
|
||||
@@ -4435,7 +4437,7 @@ 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
|
||||
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:155
|
||||
msgid "View all related documents"
|
||||
msgstr "Alle verwandten Dokumente anzeigen"
|
||||
|
||||
@@ -4459,7 +4461,7 @@ 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
|
||||
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:93
|
||||
msgid "View more"
|
||||
msgstr "Mehr anzeigen"
|
||||
|
||||
@@ -4594,9 +4596,9 @@ msgid "We encountered an unknown error while attempting to save your details. Pl
|
||||
msgstr "Wir sind auf einen unbekannten Fehler gestoßen, während wir versucht haben, Ihre Daten zu speichern. Bitte versuchen Sie es später erneut."
|
||||
|
||||
#: 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
|
||||
#: apps/web/src/components/forms/signin.tsx:273
|
||||
#: apps/web/src/components/forms/signin.tsx:288
|
||||
#: apps/web/src/components/forms/signin.tsx:304
|
||||
msgid "We encountered an unknown error while attempting to sign you In. Please try again later."
|
||||
msgstr "Wir sind auf einen unbekannten Fehler gestoßen, während wir versucht haben, Sie anzumelden. Bitte versuchen Sie es später erneut."
|
||||
|
||||
@@ -4797,6 +4799,7 @@ msgid "Write about yourself"
|
||||
msgstr "Schreiben Sie über sich selbst"
|
||||
|
||||
#: apps/web/src/app/(dashboard)/settings/billing/billing-plans.tsx:31
|
||||
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/billing/page.tsx:53
|
||||
msgid "Yearly"
|
||||
msgstr "Jährlich"
|
||||
|
||||
@@ -4841,6 +4844,10 @@ msgstr "Sie aktualisieren derzeit <0>{teamMemberName}.</0>"
|
||||
msgid "You are currently updating the <0>{passkeyName}</0> passkey."
|
||||
msgstr "Sie aktualisieren derzeit den <0>{passkeyName}</0> Passkey."
|
||||
|
||||
#: apps/web/src/app/(dashboard)/templates/move-template-dialog.tsx:64
|
||||
msgid "You are not a member of this team."
|
||||
msgstr ""
|
||||
|
||||
#: apps/web/src/app/(teams)/t/[teamUrl]/error.tsx:28
|
||||
msgid "You are not authorized to view this page."
|
||||
msgstr "Sie sind nicht berechtigt, diese Seite anzuzeigen."
|
||||
@@ -4965,7 +4972,7 @@ msgstr "Sie haben {teamMemberName} aktualisiert."
|
||||
msgid "You have verified your email address for <0>{0}</0>."
|
||||
msgstr "Sie haben Ihre E-Mail-Adresse für <0>{0}</0> bestätigt."
|
||||
|
||||
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/billing/page.tsx:82
|
||||
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/billing/page.tsx:88
|
||||
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."
|
||||
|
||||
@@ -5119,7 +5126,7 @@ msgstr "Ihr Wiederherstellungscode wurde in die Zwischenablage kopiert."
|
||||
msgid "Your recovery codes are listed below. Please store them in a safe place."
|
||||
msgstr "Ihre Wiederherstellungscodes sind unten aufgeführt. Bitte bewahren Sie sie an einem sicheren Ort auf."
|
||||
|
||||
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/billing/page.tsx:62
|
||||
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/billing/page.tsx:72
|
||||
msgid "Your subscription is currently active."
|
||||
msgstr "Ihr Abonnement ist derzeit aktiv."
|
||||
|
||||
|
||||
@@ -25,11 +25,11 @@ msgstr "“{documentName}” has been signed"
|
||||
msgid "“{documentName}” was signed by all signers"
|
||||
msgstr "“{documentName}” was signed by all signers"
|
||||
|
||||
#: packages/lib/jobs/definitions/emails/send-signing-email.ts:137
|
||||
#: packages/lib/jobs/definitions/emails/send-signing-email.handler.ts:125
|
||||
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
|
||||
#: packages/lib/jobs/definitions/emails/send-signing-email.handler.ts:118
|
||||
msgid "{0} invited you to {recipientActionVerb} a document"
|
||||
msgstr "{0} invited you to {recipientActionVerb} a document"
|
||||
|
||||
@@ -45,7 +45,7 @@ msgstr "{0} left the team {teamName} on Documenso"
|
||||
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/jobs/definitions/emails/send-signing-email.handler.ts:124
|
||||
#: 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}\"."
|
||||
@@ -190,6 +190,22 @@ msgstr "{recipientName} {action} a document by using one of your direct links"
|
||||
msgid "{recipientName} has rejected the document '{documentName}'"
|
||||
msgstr "{recipientName} has rejected the document '{documentName}'"
|
||||
|
||||
#: packages/email/template-components/template-document-recipient-signed.tsx:49
|
||||
msgid "{recipientReference} has completed signing the document."
|
||||
msgstr "{recipientReference} has completed signing the document."
|
||||
|
||||
#: packages/lib/jobs/definitions/emails/send-recipient-signed-email.ts:121
|
||||
msgid "{recipientReference} has signed \"{0}\""
|
||||
msgstr "{recipientReference} has signed \"{0}\""
|
||||
|
||||
#: packages/email/template-components/template-document-recipient-signed.tsx:43
|
||||
msgid "{recipientReference} has signed \"{documentName}\""
|
||||
msgstr "{recipientReference} has signed \"{documentName}\""
|
||||
|
||||
#: packages/email/templates/document-recipient-signed.tsx:27
|
||||
msgid "{recipientReference} has signed {documentName}"
|
||||
msgstr "{recipientReference} has signed {documentName}"
|
||||
|
||||
#: packages/email/template-components/template-document-rejected.tsx:25
|
||||
msgid "{signerName} has rejected the document \"{documentName}\"."
|
||||
msgstr "{signerName} has rejected the document \"{documentName}\"."
|
||||
@@ -284,7 +300,7 @@ msgstr "<0>Require account</0> - The recipient must be signed in to view the doc
|
||||
msgid "<0>Require passkey</0> - The recipient must have an account and passkey configured via their settings"
|
||||
msgstr "<0>Require passkey</0> - The recipient must have an account and passkey configured via their settings"
|
||||
|
||||
#: packages/lib/jobs/definitions/emails/send-signing-email.ts:122
|
||||
#: packages/lib/jobs/definitions/emails/send-signing-email.handler.ts:110
|
||||
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."
|
||||
|
||||
@@ -300,7 +316,7 @@ msgstr "A field was removed"
|
||||
msgid "A field was updated"
|
||||
msgstr "A field was updated"
|
||||
|
||||
#: packages/lib/jobs/definitions/emails/send-team-member-joined-email.ts:107
|
||||
#: packages/lib/jobs/definitions/emails/send-team-member-joined-email.handler.ts:98
|
||||
msgid "A new member has joined your team"
|
||||
msgstr "A new member has joined your team"
|
||||
|
||||
@@ -324,7 +340,7 @@ msgstr "A request to use your email has been initiated by {0} on Documenso"
|
||||
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
|
||||
#: packages/lib/jobs/definitions/emails/send-team-member-left-email.handler.ts:87
|
||||
msgid "A team member has left {0}"
|
||||
msgstr "A team member has left {0}"
|
||||
|
||||
@@ -359,12 +375,12 @@ msgstr "Accept team transfer request on Documenso"
|
||||
msgid "Add a document"
|
||||
msgstr "Add a document"
|
||||
|
||||
#: packages/ui/primitives/document-flow/add-settings.tsx:378
|
||||
#: packages/ui/primitives/document-flow/add-settings.tsx:390
|
||||
#: 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:290
|
||||
#: packages/ui/primitives/document-flow/add-settings.tsx:302
|
||||
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."
|
||||
|
||||
@@ -409,13 +425,13 @@ msgstr "Add text to the field"
|
||||
msgid "Admin"
|
||||
msgstr "Admin"
|
||||
|
||||
#: packages/ui/primitives/document-flow/add-settings.tsx:272
|
||||
#: packages/ui/primitives/document-flow/add-settings.tsx:284
|
||||
#: packages/ui/primitives/template-flow/add-template-settings.tsx:367
|
||||
msgid "Advanced Options"
|
||||
msgstr "Advanced Options"
|
||||
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:576
|
||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:414
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:577
|
||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:415
|
||||
msgid "Advanced settings"
|
||||
msgstr "Advanced settings"
|
||||
|
||||
@@ -467,11 +483,11 @@ msgstr "Approving"
|
||||
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:524
|
||||
#: packages/ui/primitives/signature-pad/signature-pad.tsx:531
|
||||
msgid "Black"
|
||||
msgstr "Black"
|
||||
|
||||
#: packages/ui/primitives/signature-pad/signature-pad.tsx:538
|
||||
#: packages/ui/primitives/signature-pad/signature-pad.tsx:545
|
||||
msgid "Blue"
|
||||
msgstr "Blue"
|
||||
|
||||
@@ -487,7 +503,7 @@ msgstr "By accepting this request, you will be granting <0>{teamName}</0> access
|
||||
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/field-item-advanced-settings.tsx:357
|
||||
#: packages/ui/primitives/document-flow/send-document-action-dialog.tsx:58
|
||||
msgid "Cancel"
|
||||
msgstr "Cancel"
|
||||
@@ -529,7 +545,7 @@ msgstr "Checkbox values"
|
||||
msgid "Clear filters"
|
||||
msgstr "Clear filters"
|
||||
|
||||
#: packages/ui/primitives/signature-pad/signature-pad.tsx:558
|
||||
#: packages/ui/primitives/signature-pad/signature-pad.tsx:565
|
||||
msgid "Clear Signature"
|
||||
msgstr "Clear Signature"
|
||||
|
||||
@@ -542,6 +558,7 @@ msgid "Close"
|
||||
msgstr "Close"
|
||||
|
||||
#: packages/email/template-components/template-document-completed.tsx:35
|
||||
#: packages/email/template-components/template-document-recipient-signed.tsx:37
|
||||
#: packages/email/template-components/template-document-self-signed.tsx:36
|
||||
#: packages/lib/constants/document.ts:10
|
||||
msgid "Completed"
|
||||
@@ -556,8 +573,8 @@ msgstr "Completed Document"
|
||||
msgid "Configure Direct Recipient"
|
||||
msgstr "Configure Direct Recipient"
|
||||
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:577
|
||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:415
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:578
|
||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:416
|
||||
msgid "Configure the {0} field"
|
||||
msgstr "Configure the {0} field"
|
||||
|
||||
@@ -614,13 +631,13 @@ msgstr "Create account"
|
||||
msgid "Custom Text"
|
||||
msgstr "Custom Text"
|
||||
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:934
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:938
|
||||
#: packages/ui/primitives/document-flow/types.ts:53
|
||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:729
|
||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:733
|
||||
msgid "Date"
|
||||
msgstr "Date"
|
||||
|
||||
#: packages/ui/primitives/document-flow/add-settings.tsx:313
|
||||
#: packages/ui/primitives/document-flow/add-settings.tsx:325
|
||||
#: packages/ui/primitives/template-flow/add-template-settings.tsx:408
|
||||
msgid "Date Format"
|
||||
msgstr "Date Format"
|
||||
@@ -637,16 +654,16 @@ msgstr "Didn't request a password change? We are here to help you secure your ac
|
||||
msgid "Direct link receiver"
|
||||
msgstr "Direct link receiver"
|
||||
|
||||
#: packages/lib/jobs/definitions/emails/send-rejection-emails.ts:149
|
||||
#: packages/lib/jobs/definitions/emails/send-rejection-emails.handler.ts:140
|
||||
msgid "Document \"{0}\" - Rejected by {1}"
|
||||
msgstr "Document \"{0}\" - Rejected by {1}"
|
||||
|
||||
#: packages/lib/jobs/definitions/emails/send-rejection-emails.ts:109
|
||||
#: packages/lib/jobs/definitions/emails/send-rejection-emails.handler.ts:100
|
||||
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:216
|
||||
#: packages/ui/primitives/document-flow/add-settings.tsx:227
|
||||
#: packages/ui/primitives/template-flow/add-template-settings.tsx:202
|
||||
msgid "Document access"
|
||||
msgstr "Document access"
|
||||
@@ -665,7 +682,8 @@ msgstr "Document Cancelled"
|
||||
msgid "Document completed"
|
||||
msgstr "Document completed"
|
||||
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:168
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:208
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:286
|
||||
msgid "Document completed email"
|
||||
msgstr "Document completed email"
|
||||
|
||||
@@ -674,7 +692,7 @@ 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:574
|
||||
#: packages/lib/server-only/template/create-document-from-direct-template.ts:585
|
||||
msgid "Document created from direct template"
|
||||
msgstr "Document created from direct template"
|
||||
|
||||
@@ -686,7 +704,7 @@ msgstr "Document Creation"
|
||||
msgid "Document deleted"
|
||||
msgstr "Document deleted"
|
||||
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:207
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:247
|
||||
msgid "Document deleted email"
|
||||
msgstr "Document deleted email"
|
||||
|
||||
@@ -711,7 +729,7 @@ msgstr "Document moved to team"
|
||||
msgid "Document opened"
|
||||
msgstr "Document opened"
|
||||
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:128
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:168
|
||||
msgid "Document pending email"
|
||||
msgstr "Document pending email"
|
||||
|
||||
@@ -752,8 +770,8 @@ msgstr "Draft"
|
||||
msgid "Drag & drop your PDF here."
|
||||
msgstr "Drag & drop your PDF here."
|
||||
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:1065
|
||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:860
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:1069
|
||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:864
|
||||
msgid "Dropdown"
|
||||
msgstr "Dropdown"
|
||||
|
||||
@@ -762,12 +780,12 @@ msgid "Dropdown options"
|
||||
msgstr "Dropdown options"
|
||||
|
||||
#: packages/lib/constants/document.ts:28
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:882
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:886
|
||||
#: packages/ui/primitives/document-flow/add-signature.tsx:273
|
||||
#: 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:677
|
||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:681
|
||||
#: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:471
|
||||
#: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:478
|
||||
msgid "Email"
|
||||
@@ -789,7 +807,7 @@ msgstr "Email resent"
|
||||
msgid "Email sent"
|
||||
msgstr "Email sent"
|
||||
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:1130
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:1134
|
||||
msgid "Empty field"
|
||||
msgstr "Empty field"
|
||||
|
||||
@@ -802,8 +820,8 @@ msgstr "Enable Direct Link Signing"
|
||||
msgid "Enable signing order"
|
||||
msgstr "Enable signing order"
|
||||
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:802
|
||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:597
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:806
|
||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:601
|
||||
msgid "Enable Typed Signatures"
|
||||
msgstr "Enable Typed Signatures"
|
||||
|
||||
@@ -811,17 +829,17 @@ msgstr "Enable Typed Signatures"
|
||||
msgid "Enter password"
|
||||
msgstr "Enter password"
|
||||
|
||||
#: packages/ui/primitives/document-flow/field-item-advanced-settings.tsx:257
|
||||
#: packages/ui/primitives/document-flow/field-item-advanced-settings.tsx:258
|
||||
#: packages/ui/primitives/pdf-viewer.tsx:166
|
||||
msgid "Error"
|
||||
msgstr "Error"
|
||||
|
||||
#: packages/ui/primitives/document-flow/add-settings.tsx:283
|
||||
#: packages/ui/primitives/document-flow/add-settings.tsx:295
|
||||
#: packages/ui/primitives/template-flow/add-template-settings.tsx:378
|
||||
msgid "External ID"
|
||||
msgstr "External ID"
|
||||
|
||||
#: packages/ui/primitives/document-flow/field-item-advanced-settings.tsx:258
|
||||
#: packages/ui/primitives/document-flow/field-item-advanced-settings.tsx:259
|
||||
msgid "Failed to save settings."
|
||||
msgstr "Failed to save settings."
|
||||
|
||||
@@ -891,7 +909,7 @@ msgstr "Global recipient action authentication"
|
||||
msgid "Go Back"
|
||||
msgstr "Go Back"
|
||||
|
||||
#: packages/ui/primitives/signature-pad/signature-pad.tsx:545
|
||||
#: packages/ui/primitives/signature-pad/signature-pad.tsx:552
|
||||
msgid "Green"
|
||||
msgstr "Green"
|
||||
|
||||
@@ -942,7 +960,7 @@ msgstr "Join {teamName} on Documenso"
|
||||
msgid "Label"
|
||||
msgstr "Label"
|
||||
|
||||
#: packages/ui/primitives/document-flow/add-settings.tsx:176
|
||||
#: packages/ui/primitives/document-flow/add-settings.tsx:187
|
||||
#: packages/ui/primitives/template-flow/add-template-settings.tsx:162
|
||||
msgid "Language"
|
||||
msgstr "Language"
|
||||
@@ -978,12 +996,12 @@ msgstr "Message <0>(Optional)</0>"
|
||||
msgid "Min"
|
||||
msgstr "Min"
|
||||
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:908
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:912
|
||||
#: packages/ui/primitives/document-flow/add-signature.tsx:299
|
||||
#: 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:703
|
||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:707
|
||||
#: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:506
|
||||
#: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:512
|
||||
msgid "Name"
|
||||
@@ -1001,8 +1019,8 @@ msgstr "Needs to sign"
|
||||
msgid "Needs to view"
|
||||
msgstr "Needs to view"
|
||||
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:693
|
||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:516
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:697
|
||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:520
|
||||
msgid "No recipient matching this description was found."
|
||||
msgstr "No recipient matching this description was found."
|
||||
|
||||
@@ -1010,8 +1028,8 @@ msgstr "No recipient matching this description was found."
|
||||
msgid "No recipients"
|
||||
msgstr "No recipients"
|
||||
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:708
|
||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:531
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:712
|
||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:535
|
||||
msgid "No recipients with this role"
|
||||
msgstr "No recipients with this role"
|
||||
|
||||
@@ -1039,9 +1057,9 @@ msgstr "No value found."
|
||||
msgid "None"
|
||||
msgstr "None"
|
||||
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:986
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:990
|
||||
#: packages/ui/primitives/document-flow/types.ts:56
|
||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:781
|
||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:785
|
||||
msgid "Number"
|
||||
msgstr "Number"
|
||||
|
||||
@@ -1107,15 +1125,15 @@ msgstr "Please {0} your document<0/>\"{documentName}\""
|
||||
msgid "Please {action} your document {documentName}"
|
||||
msgstr "Please {action} your document {documentName}"
|
||||
|
||||
#: packages/lib/jobs/definitions/emails/send-signing-email.ts:111
|
||||
#: packages/lib/jobs/definitions/emails/send-signing-email.handler.ts:99
|
||||
msgid "Please {recipientActionVerb} this document"
|
||||
msgstr "Please {recipientActionVerb} this document"
|
||||
|
||||
#: packages/lib/jobs/definitions/emails/send-signing-email.ts:125
|
||||
#: packages/lib/jobs/definitions/emails/send-signing-email.handler.ts:113
|
||||
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
|
||||
#: packages/lib/jobs/definitions/emails/send-signing-email.handler.ts:105
|
||||
msgid "Please {recipientActionVerb} your document"
|
||||
msgstr "Please {recipientActionVerb} your document"
|
||||
|
||||
@@ -1162,24 +1180,28 @@ msgid "Recipient"
|
||||
msgstr "Recipient"
|
||||
|
||||
#: packages/ui/components/recipient/recipient-action-auth-select.tsx:39
|
||||
#: packages/ui/primitives/document-flow/add-settings.tsx:257
|
||||
#: packages/ui/primitives/document-flow/add-settings.tsx:269
|
||||
#: packages/ui/primitives/template-flow/add-template-settings.tsx:291
|
||||
msgid "Recipient action authentication"
|
||||
msgstr "Recipient action authentication"
|
||||
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:89
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:129
|
||||
msgid "Recipient removed email"
|
||||
msgstr "Recipient removed email"
|
||||
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:50
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:51
|
||||
msgid "Recipient signed email"
|
||||
msgstr "Recipient signed email"
|
||||
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:90
|
||||
msgid "Recipient signing request email"
|
||||
msgstr "Recipient signing request email"
|
||||
|
||||
#: packages/ui/primitives/signature-pad/signature-pad.tsx:531
|
||||
#: packages/ui/primitives/signature-pad/signature-pad.tsx:538
|
||||
msgid "Red"
|
||||
msgstr "Red"
|
||||
|
||||
#: packages/ui/primitives/document-flow/add-settings.tsx:371
|
||||
#: packages/ui/primitives/document-flow/add-settings.tsx:383
|
||||
#: packages/ui/primitives/template-flow/add-template-settings.tsx:461
|
||||
msgid "Redirect URL"
|
||||
msgstr "Redirect URL"
|
||||
@@ -1212,7 +1234,7 @@ msgstr "Reminder: Please {recipientActionVerb} this document"
|
||||
msgid "Reminder: Please {recipientActionVerb} your document"
|
||||
msgstr "Reminder: Please {recipientActionVerb} your document"
|
||||
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:1117
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:1121
|
||||
msgid "Remove"
|
||||
msgstr "Remove"
|
||||
|
||||
@@ -1240,11 +1262,11 @@ msgstr "Rest assured, your document is strictly confidential and will never be s
|
||||
msgid "Rows per page"
|
||||
msgstr "Rows per page"
|
||||
|
||||
#: packages/ui/primitives/document-flow/field-item-advanced-settings.tsx:355
|
||||
#: packages/ui/primitives/document-flow/field-item-advanced-settings.tsx:356
|
||||
msgid "Save"
|
||||
msgstr "Save"
|
||||
|
||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:893
|
||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:897
|
||||
msgid "Save Template"
|
||||
msgstr "Save Template"
|
||||
|
||||
@@ -1280,15 +1302,19 @@ msgstr "Send"
|
||||
msgid "Send Document"
|
||||
msgstr "Send Document"
|
||||
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:158
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:198
|
||||
msgid "Send document completed email"
|
||||
msgstr "Send document completed email"
|
||||
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:197
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:276
|
||||
msgid "Send document completed email to the owner"
|
||||
msgstr "Send document completed email to the owner"
|
||||
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:237
|
||||
msgid "Send document deleted email"
|
||||
msgstr "Send document deleted email"
|
||||
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:118
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:158
|
||||
msgid "Send document pending email"
|
||||
msgstr "Send document pending email"
|
||||
|
||||
@@ -1296,11 +1322,15 @@ msgstr "Send document pending email"
|
||||
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
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:119
|
||||
msgid "Send recipient removed email"
|
||||
msgstr "Send recipient removed email"
|
||||
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:40
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:41
|
||||
msgid "Send recipient signed email"
|
||||
msgstr "Send recipient signed email"
|
||||
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:80
|
||||
msgid "Send recipient signing request email"
|
||||
msgstr "Send recipient signing request email"
|
||||
|
||||
@@ -1333,11 +1363,11 @@ msgstr "Sign Document"
|
||||
msgid "Sign In"
|
||||
msgstr "Sign In"
|
||||
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:830
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:834
|
||||
#: packages/ui/primitives/document-flow/add-signature.tsx:324
|
||||
#: 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:625
|
||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:629
|
||||
msgid "Signature"
|
||||
msgstr "Signature"
|
||||
|
||||
@@ -1361,8 +1391,8 @@ msgstr "Signers must have unique emails"
|
||||
msgid "Signing"
|
||||
msgstr "Signing"
|
||||
|
||||
#: packages/lib/server-only/document/send-completed-email.ts:114
|
||||
#: packages/lib/server-only/document/send-completed-email.ts:194
|
||||
#: packages/lib/server-only/document/send-completed-email.ts:119
|
||||
#: packages/lib/server-only/document/send-completed-email.ts:199
|
||||
msgid "Signing Complete!"
|
||||
msgstr "Signing Complete!"
|
||||
|
||||
@@ -1416,9 +1446,9 @@ msgstr "Team email removed for {teamName} on Documenso"
|
||||
msgid "Template title"
|
||||
msgstr "Template title"
|
||||
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:960
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:964
|
||||
#: packages/ui/primitives/document-flow/types.ts:52
|
||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:755
|
||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:759
|
||||
msgid "Text"
|
||||
msgstr "Text"
|
||||
|
||||
@@ -1510,7 +1540,7 @@ msgstr "This can be overriden by setting the authentication requirements directl
|
||||
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
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:768
|
||||
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."
|
||||
|
||||
@@ -1526,15 +1556,19 @@ msgstr "This document was sent using <0>Documenso.</0>"
|
||||
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
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:56
|
||||
msgid "This email is sent to the document owner when a recipient has signed the document."
|
||||
msgstr "This email is sent to the document owner when a recipient has signed the document."
|
||||
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:134
|
||||
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
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:95
|
||||
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
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:173
|
||||
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."
|
||||
|
||||
@@ -1546,7 +1580,7 @@ msgstr "This field cannot be modified or deleted. When you share this template's
|
||||
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
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:1101
|
||||
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."
|
||||
|
||||
@@ -1554,29 +1588,33 @@ msgstr "This recipient can no longer be modified as they have signed a field, or
|
||||
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
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:252
|
||||
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
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:213
|
||||
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/document/document-email-checkboxes.tsx:291
|
||||
msgid "This will be sent to the document owner once the document has been fully completed."
|
||||
msgstr "This will be sent to the document owner 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:347
|
||||
#: packages/ui/primitives/document-flow/add-settings.tsx:359
|
||||
#: packages/ui/primitives/template-flow/add-template-settings.tsx:438
|
||||
msgid "Time Zone"
|
||||
msgstr "Time Zone"
|
||||
|
||||
#: packages/ui/primitives/document-flow/add-settings.tsx:155
|
||||
#: packages/ui/primitives/document-flow/add-settings.tsx:166
|
||||
msgid "Title"
|
||||
msgstr "Title"
|
||||
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:1080
|
||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:873
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:1084
|
||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:877
|
||||
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."
|
||||
|
||||
@@ -1592,7 +1630,7 @@ msgstr "Update the role and add fields as required for the direct recipient. The
|
||||
msgid "Upgrade"
|
||||
msgstr "Upgrade"
|
||||
|
||||
#: packages/ui/primitives/signature-pad/signature-pad.tsx:509
|
||||
#: packages/ui/primitives/signature-pad/signature-pad.tsx:516
|
||||
msgid "Upload Signature"
|
||||
msgstr "Upload Signature"
|
||||
|
||||
@@ -1721,7 +1759,7 @@ msgstr "You have been invited to join {0} on Documenso"
|
||||
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:327
|
||||
#: packages/lib/server-only/recipient/set-recipients-for-document.ts:337
|
||||
msgid "You have been removed from a document"
|
||||
msgstr "You have been removed from a document"
|
||||
|
||||
@@ -1729,7 +1767,7 @@ msgstr "You have been removed from a document"
|
||||
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/jobs/definitions/emails/send-signing-email.handler.ts:103
|
||||
#: 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."
|
||||
|
||||
@@ -87,11 +87,7 @@ msgstr "{0} Recipient(s)"
|
||||
msgid "{charactersRemaining, plural, one {1 character remaining} other {{charactersRemaining} characters remaining}}"
|
||||
msgstr "{charactersRemaining, plural, one {1 character remaining} other {{charactersRemaining} characters remaining}}"
|
||||
|
||||
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/billing/page.tsx:55
|
||||
msgid "{formattedTeamMemberQuanity} • Monthly • Renews: {formattedDate}"
|
||||
msgstr "{formattedTeamMemberQuanity} • Monthly • Renews: {formattedDate}"
|
||||
|
||||
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/billing/page.tsx:48
|
||||
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/billing/page.tsx:59
|
||||
msgid "{numberOfSeats, plural, one {# member} other {# members}}"
|
||||
msgstr "{numberOfSeats, plural, one {# member} other {# members}}"
|
||||
|
||||
@@ -249,21 +245,21 @@ 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/[id]/logs/document-logs-data-table.tsx:98
|
||||
#: 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/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx:116
|
||||
#: 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)/documents/data-table.tsx:79
|
||||
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:177
|
||||
#: 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
|
||||
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:131
|
||||
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:140
|
||||
#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:116
|
||||
#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:125
|
||||
msgid "Actions"
|
||||
msgstr "Actions"
|
||||
|
||||
@@ -486,7 +482,7 @@ msgstr "An error occurred while loading team members. Please try again later."
|
||||
msgid "An error occurred while moving the document."
|
||||
msgstr "An error occurred while moving the document."
|
||||
|
||||
#: apps/web/src/app/(dashboard)/templates/move-template-dialog.tsx:57
|
||||
#: apps/web/src/app/(dashboard)/templates/move-template-dialog.tsx:65
|
||||
msgid "An error occurred while moving the template."
|
||||
msgstr "An error occurred while moving the template."
|
||||
|
||||
@@ -494,7 +490,7 @@ msgstr "An error occurred while moving the template."
|
||||
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]/checkbox-field.tsx:154
|
||||
#: 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
|
||||
@@ -517,7 +513,7 @@ msgstr "An error occurred while sending the document."
|
||||
msgid "An error occurred while sending your confirmation email"
|
||||
msgstr "An error occurred while sending your confirmation email"
|
||||
|
||||
#: apps/web/src/app/(signing)/sign/[token]/checkbox-field.tsx:123
|
||||
#: apps/web/src/app/(signing)/sign/[token]/checkbox-field.tsx:125
|
||||
#: 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
|
||||
@@ -539,7 +535,7 @@ msgstr "An error occurred while trying to create a checkout session."
|
||||
msgid "An error occurred while updating the document settings."
|
||||
msgstr "An error occurred while updating the document settings."
|
||||
|
||||
#: apps/web/src/app/(signing)/sign/[token]/checkbox-field.tsx:213
|
||||
#: apps/web/src/app/(signing)/sign/[token]/checkbox-field.tsx:215
|
||||
msgid "An error occurred while updating the signature."
|
||||
msgstr "An error occurred while updating the signature."
|
||||
|
||||
@@ -573,11 +569,11 @@ msgstr "An error occurred while uploading your document."
|
||||
#: 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/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/signin.tsx:249
|
||||
#: apps/web/src/components/forms/signin.tsx:257
|
||||
#: apps/web/src/components/forms/signin.tsx:271
|
||||
#: apps/web/src/components/forms/signin.tsx:286
|
||||
#: apps/web/src/components/forms/signin.tsx:302
|
||||
#: apps/web/src/components/forms/signup.tsx:124
|
||||
#: apps/web/src/components/forms/signup.tsx:138
|
||||
#: apps/web/src/components/forms/token.tsx:143
|
||||
@@ -592,11 +588,11 @@ 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
|
||||
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:221
|
||||
msgid "Any Source"
|
||||
msgstr "Any Source"
|
||||
|
||||
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:205
|
||||
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:201
|
||||
msgid "Any Status"
|
||||
msgstr "Any Status"
|
||||
|
||||
@@ -699,7 +695,7 @@ msgid "Background Color"
|
||||
msgstr "Background Color"
|
||||
|
||||
#: apps/web/src/components/forms/2fa/disable-authenticator-app-dialog.tsx:167
|
||||
#: apps/web/src/components/forms/signin.tsx:485
|
||||
#: apps/web/src/components/forms/signin.tsx:486
|
||||
msgid "Backup Code"
|
||||
msgstr "Backup Code"
|
||||
|
||||
@@ -716,7 +712,7 @@ msgid "Basic details"
|
||||
msgstr "Basic details"
|
||||
|
||||
#: 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/app/(teams)/t/[teamUrl]/settings/billing/page.tsx:71
|
||||
#: 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
|
||||
@@ -732,7 +728,7 @@ msgstr "Branding Preferences"
|
||||
msgid "Branding preferences updated"
|
||||
msgstr "Branding preferences updated"
|
||||
|
||||
#: apps/web/src/app/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx:99
|
||||
#: apps/web/src/app/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx:97
|
||||
#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/data-table.tsx:48
|
||||
msgid "Browser"
|
||||
msgstr "Browser"
|
||||
@@ -775,7 +771,7 @@ msgstr "By using the electronic signature feature, you are consenting to conduct
|
||||
#: 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/move-template-dialog.tsx:131
|
||||
#: 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
|
||||
@@ -859,9 +855,9 @@ msgstr "Claim your username now"
|
||||
msgid "Click here to get started"
|
||||
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)/documents/[id]/document-page-view-recent-activity.tsx:76
|
||||
#: 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/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:66
|
||||
#: apps/web/src/components/document/document-history-sheet.tsx:133
|
||||
msgid "Click here to retry"
|
||||
msgstr "Click here to retry"
|
||||
@@ -914,7 +910,7 @@ msgstr "Complete Signing"
|
||||
msgid "Complete Viewing"
|
||||
msgstr "Complete Viewing"
|
||||
|
||||
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:208
|
||||
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:204
|
||||
#: apps/web/src/components/(dashboard)/avatar/stack-avatars-with-tooltip.tsx:77
|
||||
#: apps/web/src/components/formatter/document-status.tsx:28
|
||||
msgid "Completed"
|
||||
@@ -1144,9 +1140,9 @@ msgstr "Create your account and start using state-of-the-art document signing. O
|
||||
#: apps/web/src/app/(dashboard)/admin/documents/document-results.tsx:62
|
||||
#: apps/web/src/app/(dashboard)/admin/leaderboard/data-table-leaderboard.tsx:96
|
||||
#: 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)/documents/data-table.tsx:48
|
||||
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table.tsx:63
|
||||
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:105
|
||||
#: 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
|
||||
@@ -1163,7 +1159,7 @@ msgid "Created by"
|
||||
msgstr "Created by"
|
||||
|
||||
#: apps/web/src/app/(dashboard)/admin/documents/[id]/page.tsx:48
|
||||
#: apps/web/src/components/(teams)/tables/pending-user-teams-data-table.tsx:78
|
||||
#: apps/web/src/components/(teams)/tables/pending-user-teams-data-table.tsx:76
|
||||
msgid "Created on"
|
||||
msgstr "Created on"
|
||||
|
||||
@@ -1182,10 +1178,6 @@ msgstr "Current Password"
|
||||
msgid "Current password is incorrect."
|
||||
msgstr "Current password is incorrect."
|
||||
|
||||
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/billing/page.tsx:69
|
||||
msgid "Current plan: {0}"
|
||||
msgstr "Current plan: {0}"
|
||||
|
||||
#: apps/web/src/app/(dashboard)/settings/billing/billing-plans.tsx:28
|
||||
msgid "Daily"
|
||||
msgstr "Daily"
|
||||
@@ -1194,7 +1186,7 @@ msgstr "Daily"
|
||||
msgid "Dark Mode"
|
||||
msgstr "Dark Mode"
|
||||
|
||||
#: apps/web/src/app/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx:70
|
||||
#: apps/web/src/app/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx:68
|
||||
#: apps/web/src/app/(signing)/sign/[token]/date-field.tsx:148
|
||||
msgid "Date"
|
||||
msgstr "Date"
|
||||
@@ -1314,7 +1306,7 @@ msgstr "Deleting account..."
|
||||
msgid "Details"
|
||||
msgstr "Details"
|
||||
|
||||
#: apps/web/src/app/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx:75
|
||||
#: apps/web/src/app/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx:73
|
||||
#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:242
|
||||
msgid "Device"
|
||||
msgstr "Device"
|
||||
@@ -1329,8 +1321,8 @@ msgstr "direct link"
|
||||
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
|
||||
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:156
|
||||
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:227
|
||||
msgid "Direct Link"
|
||||
msgstr "Direct Link"
|
||||
|
||||
@@ -1434,11 +1426,11 @@ msgstr "Document Completed!"
|
||||
msgid "Document created"
|
||||
msgstr "Document created"
|
||||
|
||||
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:129
|
||||
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:127
|
||||
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
|
||||
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:132
|
||||
msgid "Document created using a <0>direct link</0>"
|
||||
msgstr "Document created using a <0>direct link</0>"
|
||||
|
||||
@@ -1593,7 +1585,7 @@ msgstr "Download Audit Logs"
|
||||
msgid "Download Certificate"
|
||||
msgstr "Download Certificate"
|
||||
|
||||
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:214
|
||||
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:210
|
||||
#: apps/web/src/components/formatter/document-status.tsx:34
|
||||
msgid "Draft"
|
||||
msgstr "Draft"
|
||||
@@ -1663,7 +1655,7 @@ msgstr "Electronic Signature Disclosure"
|
||||
#: 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/signin.tsx:339
|
||||
#: apps/web/src/components/forms/signup.tsx:176
|
||||
msgid "Email"
|
||||
msgstr "Email"
|
||||
@@ -1773,12 +1765,12 @@ msgstr "Enter your text here"
|
||||
#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:217
|
||||
#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:256
|
||||
#: 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/move-template-dialog.tsx:68
|
||||
#: 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]/checkbox-field.tsx:124
|
||||
#: apps/web/src/app/(signing)/sign/[token]/checkbox-field.tsx:153
|
||||
#: apps/web/src/app/(signing)/sign/[token]/checkbox-field.tsx:214
|
||||
#: 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
|
||||
@@ -1854,7 +1846,7 @@ msgid "For any questions regarding this disclosure, electronic signatures, or an
|
||||
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
|
||||
#: apps/web/src/components/forms/signin.tsx:371
|
||||
msgid "Forgot your password?"
|
||||
msgstr "Forgot your password?"
|
||||
|
||||
@@ -2034,11 +2026,11 @@ msgstr "Invitation accepted!"
|
||||
msgid "Invitation declined"
|
||||
msgstr "Invitation declined"
|
||||
|
||||
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:80
|
||||
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:78
|
||||
msgid "Invitation has been deleted"
|
||||
msgstr "Invitation has been deleted"
|
||||
|
||||
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:63
|
||||
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:61
|
||||
msgid "Invitation has been resent"
|
||||
msgstr "Invitation has been resent"
|
||||
|
||||
@@ -2058,7 +2050,7 @@ msgstr "Invite Members"
|
||||
msgid "Invite team members"
|
||||
msgstr "Invite team members"
|
||||
|
||||
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:128
|
||||
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:126
|
||||
msgid "Invited At"
|
||||
msgstr "Invited At"
|
||||
|
||||
@@ -2128,7 +2120,7 @@ msgstr "Last Updated"
|
||||
msgid "Last updated at"
|
||||
msgstr "Last updated at"
|
||||
|
||||
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table.tsx:71
|
||||
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table.tsx:69
|
||||
msgid "Last used"
|
||||
msgstr "Last used"
|
||||
|
||||
@@ -2137,7 +2129,7 @@ msgid "Leaderboard"
|
||||
msgstr "Leaderboard"
|
||||
|
||||
#: apps/web/src/components/(teams)/dialogs/leave-team-dialog.tsx:111
|
||||
#: apps/web/src/components/(teams)/tables/current-user-teams-data-table.tsx:117
|
||||
#: apps/web/src/components/(teams)/tables/current-user-teams-data-table.tsx:115
|
||||
msgid "Leave"
|
||||
msgstr "Leave"
|
||||
|
||||
@@ -2170,7 +2162,7 @@ msgstr "Links Generated"
|
||||
msgid "Listening to {0}"
|
||||
msgstr "Listening to {0}"
|
||||
|
||||
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recent-activity.tsx:100
|
||||
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recent-activity.tsx:98
|
||||
msgid "Load older activity"
|
||||
msgstr "Load older activity"
|
||||
|
||||
@@ -2185,11 +2177,11 @@ msgid "Loading Document..."
|
||||
msgstr "Loading Document..."
|
||||
|
||||
#: apps/web/src/app/(dashboard)/documents/move-document-dialog.tsx:92
|
||||
#: apps/web/src/app/(dashboard)/templates/move-template-dialog.tsx:91
|
||||
#: apps/web/src/app/(dashboard)/templates/move-template-dialog.tsx:103
|
||||
msgid "Loading teams..."
|
||||
msgstr "Loading teams..."
|
||||
|
||||
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recent-activity.tsx:100
|
||||
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recent-activity.tsx:98
|
||||
msgid "Loading..."
|
||||
msgstr "Loading..."
|
||||
|
||||
@@ -2199,7 +2191,7 @@ msgstr "Loading..."
|
||||
msgid "Login"
|
||||
msgstr "Login"
|
||||
|
||||
#: apps/web/src/components/(teams)/tables/current-user-teams-data-table.tsx:101
|
||||
#: apps/web/src/components/(teams)/tables/current-user-teams-data-table.tsx:99
|
||||
msgid "Manage"
|
||||
msgstr "Manage"
|
||||
|
||||
@@ -2247,7 +2239,7 @@ msgstr "Manage Subscription"
|
||||
msgid "Manage subscriptions"
|
||||
msgstr "Manage subscriptions"
|
||||
|
||||
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/billing/page.tsx:81
|
||||
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/billing/page.tsx:87
|
||||
msgid "Manage team subscription."
|
||||
msgstr "Manage team subscription."
|
||||
|
||||
@@ -2287,8 +2279,8 @@ msgstr "MAU (created document)"
|
||||
msgid "MAU (had document completed)"
|
||||
msgstr "MAU (had document completed)"
|
||||
|
||||
#: 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
|
||||
#: apps/web/src/components/(teams)/tables/current-user-teams-data-table.tsx:88
|
||||
#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:111
|
||||
msgid "Member Since"
|
||||
msgstr "Member Since"
|
||||
|
||||
@@ -2304,6 +2296,7 @@ msgid "Modify recipients"
|
||||
msgstr "Modify recipients"
|
||||
|
||||
#: apps/web/src/app/(dashboard)/settings/billing/billing-plans.tsx:30
|
||||
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/billing/page.tsx:54
|
||||
msgid "Monthly"
|
||||
msgstr "Monthly"
|
||||
|
||||
@@ -2316,7 +2309,7 @@ msgid "Monthly Active Users: Users that had at least one of their documents comp
|
||||
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
|
||||
#: apps/web/src/app/(dashboard)/templates/move-template-dialog.tsx:134
|
||||
msgid "Move"
|
||||
msgstr "Move"
|
||||
|
||||
@@ -2324,7 +2317,7 @@ msgstr "Move"
|
||||
msgid "Move Document to Team"
|
||||
msgstr "Move Document to Team"
|
||||
|
||||
#: apps/web/src/app/(dashboard)/templates/move-template-dialog.tsx:77
|
||||
#: apps/web/src/app/(dashboard)/templates/move-template-dialog.tsx:89
|
||||
msgid "Move Template to Team"
|
||||
msgstr "Move Template to Team"
|
||||
|
||||
@@ -2334,7 +2327,7 @@ 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
|
||||
#: apps/web/src/app/(dashboard)/templates/move-template-dialog.tsx:134
|
||||
msgid "Moving..."
|
||||
msgstr "Moving..."
|
||||
|
||||
@@ -2347,7 +2340,7 @@ msgstr "My templates"
|
||||
#: 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)/settings/security/passkeys/user-passkeys-data-table.tsx:59
|
||||
#: 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:118
|
||||
@@ -2362,7 +2355,7 @@ msgstr "Name"
|
||||
msgid "Need to sign documents?"
|
||||
msgstr "Need to sign documents?"
|
||||
|
||||
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table.tsx:76
|
||||
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table.tsx:74
|
||||
msgid "Never"
|
||||
msgstr "Never"
|
||||
|
||||
@@ -2397,7 +2390,7 @@ msgstr "No active drafts"
|
||||
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
|
||||
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/billing/page.tsx:43
|
||||
msgid "No payment required"
|
||||
msgstr "No payment required"
|
||||
|
||||
@@ -2405,11 +2398,11 @@ msgstr "No payment required"
|
||||
msgid "No public profile templates found"
|
||||
msgstr "No public profile templates found"
|
||||
|
||||
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recent-activity.tsx:108
|
||||
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recent-activity.tsx:106
|
||||
msgid "No recent activity"
|
||||
msgstr "No recent activity"
|
||||
|
||||
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:103
|
||||
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:101
|
||||
msgid "No recent documents"
|
||||
msgstr "No recent documents"
|
||||
|
||||
@@ -2444,7 +2437,7 @@ msgstr "No value found."
|
||||
msgid "No worries, it happens! Enter your email and we'll email you a special link to reset your password."
|
||||
msgstr "No worries, it happens! Enter your email and we'll email you a special link to reset your password."
|
||||
|
||||
#: apps/web/src/components/forms/signin.tsx:160
|
||||
#: apps/web/src/components/forms/signin.tsx:161
|
||||
msgid "Not supported"
|
||||
msgstr "Not supported"
|
||||
|
||||
@@ -2530,7 +2523,7 @@ msgstr "Opened"
|
||||
msgid "Or"
|
||||
msgstr "Or"
|
||||
|
||||
#: apps/web/src/components/forms/signin.tsx:390
|
||||
#: apps/web/src/components/forms/signin.tsx:391
|
||||
msgid "Or continue with"
|
||||
msgstr "Or continue with"
|
||||
|
||||
@@ -2541,8 +2534,8 @@ 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
|
||||
#: apps/web/src/components/(teams)/tables/current-user-teams-data-table.tsx:84
|
||||
#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:107
|
||||
msgid "Owner"
|
||||
msgstr "Owner"
|
||||
|
||||
@@ -2550,7 +2543,7 @@ msgstr "Owner"
|
||||
msgid "Paid"
|
||||
msgstr "Paid"
|
||||
|
||||
#: apps/web/src/components/forms/signin.tsx:435
|
||||
#: apps/web/src/components/forms/signin.tsx:436
|
||||
msgid "Passkey"
|
||||
msgstr "Passkey"
|
||||
|
||||
@@ -2587,14 +2580,14 @@ msgstr "Passkeys"
|
||||
msgid "Passkeys allow you to sign in and authenticate using biometrics, password managers, etc."
|
||||
msgstr "Passkeys allow you to sign in and authenticate using biometrics, password managers, etc."
|
||||
|
||||
#: apps/web/src/components/forms/signin.tsx:161
|
||||
#: apps/web/src/components/forms/signin.tsx:162
|
||||
msgid "Passkeys are not supported on this browser"
|
||||
msgstr "Passkeys are not supported on this browser"
|
||||
|
||||
#: apps/web/src/components/(dashboard)/common/command-menu.tsx:70
|
||||
#: apps/web/src/components/forms/password.tsx:128
|
||||
#: apps/web/src/components/forms/reset-password.tsx:115
|
||||
#: apps/web/src/components/forms/signin.tsx:356
|
||||
#: apps/web/src/components/forms/signin.tsx:357
|
||||
#: apps/web/src/components/forms/signup.tsx:192
|
||||
#: apps/web/src/components/forms/v2/signup.tsx:347
|
||||
msgid "Password"
|
||||
@@ -2624,7 +2617,7 @@ msgid "Payment overdue"
|
||||
msgstr "Payment overdue"
|
||||
|
||||
#: 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/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:207
|
||||
#: 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
|
||||
@@ -2741,7 +2734,7 @@ msgstr "Please review the document before signing."
|
||||
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."
|
||||
|
||||
#: apps/web/src/components/forms/signin.tsx:203
|
||||
#: apps/web/src/components/forms/signin.tsx:204
|
||||
msgid "Please try again later or login using your normal details"
|
||||
msgstr "Please try again later or login using your normal details"
|
||||
|
||||
@@ -2853,17 +2846,17 @@ msgstr "Reason must be less than 500 characters"
|
||||
msgid "Reauthentication is required to sign this field"
|
||||
msgstr "Reauthentication is required to sign this field"
|
||||
|
||||
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recent-activity.tsx:57
|
||||
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recent-activity.tsx:55
|
||||
#: apps/web/src/app/(dashboard)/settings/security/page.tsx:130
|
||||
msgid "Recent activity"
|
||||
msgstr "Recent activity"
|
||||
|
||||
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:47
|
||||
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:45
|
||||
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)/documents/data-table.tsx:63
|
||||
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:116
|
||||
#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:280
|
||||
msgid "Recipient"
|
||||
msgstr "Recipient"
|
||||
@@ -2924,8 +2917,8 @@ msgstr "Remembered your password? <0>Sign In</0>"
|
||||
#: 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/(teams)/tables/team-member-invites-data-table.tsx:164
|
||||
#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:165
|
||||
#: apps/web/src/components/forms/avatar-image.tsx:166
|
||||
msgid "Remove"
|
||||
msgstr "Remove"
|
||||
@@ -2934,10 +2927,14 @@ msgstr "Remove"
|
||||
msgid "Remove team email"
|
||||
msgstr "Remove team email"
|
||||
|
||||
#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:164
|
||||
#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:162
|
||||
msgid "Remove team member"
|
||||
msgstr "Remove team member"
|
||||
|
||||
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/billing/page.tsx:63
|
||||
msgid "Renews: {formattedDate}"
|
||||
msgstr "Renews: {formattedDate}"
|
||||
|
||||
#: apps/web/src/components/forms/password.tsx:144
|
||||
#: apps/web/src/components/forms/reset-password.tsx:131
|
||||
msgid "Repeat Password"
|
||||
@@ -2952,7 +2949,7 @@ msgid "Reseal document"
|
||||
msgstr "Reseal document"
|
||||
|
||||
#: 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
|
||||
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:152
|
||||
msgid "Resend"
|
||||
msgstr "Resend"
|
||||
|
||||
@@ -3030,9 +3027,9 @@ msgstr "Revoke access"
|
||||
#: 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
|
||||
#: apps/web/src/components/(teams)/tables/current-user-teams-data-table.tsx:80
|
||||
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:121
|
||||
#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:103
|
||||
msgid "Role"
|
||||
msgstr "Role"
|
||||
|
||||
@@ -3089,7 +3086,7 @@ msgid "Select"
|
||||
msgstr "Select"
|
||||
|
||||
#: apps/web/src/app/(dashboard)/documents/move-document-dialog.tsx:87
|
||||
#: apps/web/src/app/(dashboard)/templates/move-template-dialog.tsx:86
|
||||
#: apps/web/src/app/(dashboard)/templates/move-template-dialog.tsx:98
|
||||
msgid "Select a team"
|
||||
msgstr "Select a team"
|
||||
|
||||
@@ -3097,7 +3094,7 @@ msgstr "Select a team"
|
||||
msgid "Select a team to move this document to. This action cannot be undone."
|
||||
msgstr "Select a team to move this document to. This action cannot be undone."
|
||||
|
||||
#: apps/web/src/app/(dashboard)/templates/move-template-dialog.tsx:80
|
||||
#: apps/web/src/app/(dashboard)/templates/move-template-dialog.tsx:92
|
||||
msgid "Select a team to move this template to. This action cannot be undone."
|
||||
msgstr "Select a team to move this template to. This action cannot be undone."
|
||||
|
||||
@@ -3129,7 +3126,7 @@ msgstr "Send on Behalf of Team"
|
||||
msgid "Send reminder"
|
||||
msgstr "Send reminder"
|
||||
|
||||
#: apps/web/src/app/(dashboard)/documents/data-table.tsx:65
|
||||
#: apps/web/src/app/(dashboard)/documents/data-table.tsx:59
|
||||
msgid "Sender"
|
||||
msgstr "Sender"
|
||||
|
||||
@@ -3228,8 +3225,8 @@ msgid "Sign Here"
|
||||
msgstr "Sign Here"
|
||||
|
||||
#: apps/web/src/app/not-found.tsx:29
|
||||
#: apps/web/src/components/forms/signin.tsx:383
|
||||
#: apps/web/src/components/forms/signin.tsx:510
|
||||
#: apps/web/src/components/forms/signin.tsx:384
|
||||
#: apps/web/src/components/forms/signin.tsx:511
|
||||
msgid "Sign In"
|
||||
msgstr "Sign In"
|
||||
|
||||
@@ -3314,8 +3311,8 @@ msgstr "Signing Certificate"
|
||||
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
|
||||
#: apps/web/src/components/forms/signin.tsx:384
|
||||
#: apps/web/src/components/forms/signin.tsx:511
|
||||
msgid "Signing in..."
|
||||
msgstr "Signing in..."
|
||||
|
||||
@@ -3391,8 +3388,8 @@ msgstr "Site Settings"
|
||||
#: 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)/tables/team-member-invites-data-table.tsx:66
|
||||
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:83
|
||||
#: apps/web/src/components/(teams)/team-billing-portal-button.tsx:29
|
||||
msgid "Something went wrong"
|
||||
msgstr "Something went wrong"
|
||||
@@ -3434,7 +3431,7 @@ msgstr "Sorry, we were unable to download the audit logs. Please try again later
|
||||
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
|
||||
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:134
|
||||
msgid "Source"
|
||||
msgstr "Source"
|
||||
|
||||
@@ -3444,8 +3441,8 @@ 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/(dashboard)/documents/data-table.tsx:73
|
||||
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:126
|
||||
#: 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"
|
||||
@@ -3487,8 +3484,8 @@ msgstr "Subscriptions"
|
||||
#: apps/web/src/components/(teams)/dialogs/update-team-member-dialog.tsx:92
|
||||
#: apps/web/src/components/(teams)/forms/update-team-form.tsx:67
|
||||
#: 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/(teams)/tables/team-member-invites-data-table.tsx:60
|
||||
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:77
|
||||
#: 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
|
||||
@@ -3507,8 +3504,8 @@ msgstr "System Requirements"
|
||||
msgid "System Theme"
|
||||
msgstr "System Theme"
|
||||
|
||||
#: 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
|
||||
#: apps/web/src/components/(teams)/tables/current-user-teams-data-table.tsx:63
|
||||
#: apps/web/src/components/(teams)/tables/pending-user-teams-data-table.tsx:62
|
||||
msgid "Team"
|
||||
msgstr "Team"
|
||||
|
||||
@@ -3554,8 +3551,8 @@ msgstr "Team invitation"
|
||||
msgid "Team invitations have been sent."
|
||||
msgstr "Team invitations have been sent."
|
||||
|
||||
#: 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
|
||||
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:107
|
||||
#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:84
|
||||
msgid "Team Member"
|
||||
msgstr "Team Member"
|
||||
|
||||
@@ -3629,10 +3626,10 @@ 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]/edit/template-edit-page-view.tsx:64
|
||||
#: 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-documents-table.tsx:144
|
||||
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:224
|
||||
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view.tsx:148
|
||||
#: apps/web/src/components/(teams)/dialogs/invite-team-member-dialog.tsx:408
|
||||
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:271
|
||||
@@ -3659,10 +3656,14 @@ msgstr "Template has been removed from your public profile."
|
||||
msgid "Template has been updated."
|
||||
msgstr "Template has been updated."
|
||||
|
||||
#: apps/web/src/app/(dashboard)/templates/move-template-dialog.tsx:48
|
||||
#: apps/web/src/app/(dashboard)/templates/move-template-dialog.tsx:50
|
||||
msgid "Template moved"
|
||||
msgstr "Template moved"
|
||||
|
||||
#: apps/web/src/app/(dashboard)/templates/move-template-dialog.tsx:62
|
||||
msgid "Template not found or already associated with a team."
|
||||
msgstr "Template not found or already associated with a team."
|
||||
|
||||
#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:246
|
||||
msgid "Template saved"
|
||||
msgstr "Template saved"
|
||||
@@ -3790,7 +3791,7 @@ msgstr "The team transfer request to <0>{0}</0> has expired."
|
||||
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."
|
||||
|
||||
#: apps/web/src/app/(dashboard)/templates/move-template-dialog.tsx:49
|
||||
#: apps/web/src/app/(dashboard)/templates/move-template-dialog.tsx:51
|
||||
msgid "The template has been successfully moved to the selected team."
|
||||
msgstr "The template has been successfully moved to the selected team."
|
||||
|
||||
@@ -3879,11 +3880,11 @@ msgstr "This document has been signed by all recipients"
|
||||
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
|
||||
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:148
|
||||
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
|
||||
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:160
|
||||
msgid "This document was created using a direct link."
|
||||
msgstr "This document was created using a direct link."
|
||||
|
||||
@@ -3903,7 +3904,7 @@ msgstr "This link is invalid or has expired. Please contact your team to resend
|
||||
msgid "This passkey has already been registered."
|
||||
msgstr "This passkey has already been registered."
|
||||
|
||||
#: apps/web/src/components/forms/signin.tsx:200
|
||||
#: apps/web/src/components/forms/signin.tsx:201
|
||||
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."
|
||||
|
||||
@@ -3911,7 +3912,7 @@ msgstr "This passkey is not configured for this application. Please login and ad
|
||||
msgid "This price includes minimum 5 seats."
|
||||
msgstr "This price includes minimum 5 seats."
|
||||
|
||||
#: apps/web/src/components/forms/signin.tsx:202
|
||||
#: apps/web/src/components/forms/signin.tsx:203
|
||||
msgid "This session has expired. Please try again."
|
||||
msgstr "This session has expired. Please try again."
|
||||
|
||||
@@ -3944,7 +3945,7 @@ 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:73
|
||||
#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-data-table.tsx:71
|
||||
#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/data-table.tsx:44
|
||||
msgid "Time"
|
||||
msgstr "Time"
|
||||
@@ -3958,8 +3959,8 @@ 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)/documents/data-table.tsx:54
|
||||
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:111
|
||||
#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:61
|
||||
msgid "Title"
|
||||
msgstr "Title"
|
||||
@@ -4093,7 +4094,7 @@ msgstr "Two factor authentication"
|
||||
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."
|
||||
|
||||
#: apps/web/src/components/forms/signin.tsx:448
|
||||
#: apps/web/src/components/forms/signin.tsx:449
|
||||
msgid "Two-Factor Authentication"
|
||||
msgstr "Two-Factor Authentication"
|
||||
|
||||
@@ -4150,7 +4151,7 @@ msgstr "Unable to create direct template access. Please try again later."
|
||||
msgid "Unable to decline this team invitation at this time."
|
||||
msgstr "Unable to decline this team invitation at this time."
|
||||
|
||||
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:86
|
||||
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:84
|
||||
msgid "Unable to delete invitation. Please try again."
|
||||
msgstr "Unable to delete invitation. Please try again."
|
||||
|
||||
@@ -4166,12 +4167,12 @@ msgstr "Unable to disable two-factor authentication"
|
||||
msgid "Unable to join this team at this time."
|
||||
msgstr "Unable to join this team at this time."
|
||||
|
||||
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recent-activity.tsx:72
|
||||
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recent-activity.tsx:70
|
||||
#: apps/web/src/components/document/document-history-sheet.tsx:127
|
||||
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
|
||||
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:60
|
||||
msgid "Unable to load documents"
|
||||
msgstr "Unable to load documents"
|
||||
|
||||
@@ -4187,7 +4188,7 @@ msgstr "Unable to remove email verification at this time. Please try again."
|
||||
msgid "Unable to remove team email at this time. Please try again."
|
||||
msgstr "Unable to remove team email at this time. Please try again."
|
||||
|
||||
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:69
|
||||
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:67
|
||||
msgid "Unable to resend invitation. Please try again."
|
||||
msgstr "Unable to resend invitation. Please try again."
|
||||
|
||||
@@ -4204,8 +4205,8 @@ msgstr "Unable to reset password"
|
||||
msgid "Unable to setup two-factor authentication"
|
||||
msgstr "Unable to setup two-factor authentication"
|
||||
|
||||
#: apps/web/src/components/forms/signin.tsx:247
|
||||
#: apps/web/src/components/forms/signin.tsx:255
|
||||
#: apps/web/src/components/forms/signin.tsx:248
|
||||
#: apps/web/src/components/forms/signin.tsx:256
|
||||
msgid "Unable to sign in"
|
||||
msgstr "Unable to sign in"
|
||||
|
||||
@@ -4222,6 +4223,7 @@ msgstr "Uncompleted"
|
||||
#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:262
|
||||
#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:273
|
||||
#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:284
|
||||
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/billing/page.tsx:55
|
||||
msgid "Unknown"
|
||||
msgstr "Unknown"
|
||||
|
||||
@@ -4262,7 +4264,7 @@ msgstr "Update profile"
|
||||
msgid "Update Recipient"
|
||||
msgstr "Update Recipient"
|
||||
|
||||
#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:146
|
||||
#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:144
|
||||
msgid "Update role"
|
||||
msgstr "Update role"
|
||||
|
||||
@@ -4331,12 +4333,12 @@ msgid "Use"
|
||||
msgstr "Use"
|
||||
|
||||
#: apps/web/src/components/forms/2fa/disable-authenticator-app-dialog.tsx:187
|
||||
#: apps/web/src/components/forms/signin.tsx:505
|
||||
#: apps/web/src/components/forms/signin.tsx:506
|
||||
msgid "Use Authenticator"
|
||||
msgstr "Use Authenticator"
|
||||
|
||||
#: apps/web/src/components/forms/2fa/disable-authenticator-app-dialog.tsx:185
|
||||
#: apps/web/src/components/forms/signin.tsx:503
|
||||
#: apps/web/src/components/forms/signin.tsx:504
|
||||
msgid "Use Backup Code"
|
||||
msgstr "Use Backup Code"
|
||||
|
||||
@@ -4344,7 +4346,7 @@ msgstr "Use Backup Code"
|
||||
msgid "Use Template"
|
||||
msgstr "Use Template"
|
||||
|
||||
#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-data-table.tsx:78
|
||||
#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-data-table.tsx:76
|
||||
#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/data-table.tsx:45
|
||||
msgid "User"
|
||||
msgstr "User"
|
||||
@@ -4430,7 +4432,7 @@ 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
|
||||
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:155
|
||||
msgid "View all related documents"
|
||||
msgstr "View all related documents"
|
||||
|
||||
@@ -4454,7 +4456,7 @@ 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
|
||||
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:93
|
||||
msgid "View more"
|
||||
msgstr "View more"
|
||||
|
||||
@@ -4589,9 +4591,9 @@ msgid "We encountered an unknown error while attempting to save your details. Pl
|
||||
msgstr "We encountered an unknown error while attempting to save your details. Please try again later."
|
||||
|
||||
#: 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
|
||||
#: apps/web/src/components/forms/signin.tsx:273
|
||||
#: apps/web/src/components/forms/signin.tsx:288
|
||||
#: apps/web/src/components/forms/signin.tsx:304
|
||||
msgid "We encountered an unknown error while attempting to sign you In. Please try again later."
|
||||
msgstr "We encountered an unknown error while attempting to sign you In. Please try again later."
|
||||
|
||||
@@ -4792,6 +4794,7 @@ msgid "Write about yourself"
|
||||
msgstr "Write about yourself"
|
||||
|
||||
#: apps/web/src/app/(dashboard)/settings/billing/billing-plans.tsx:31
|
||||
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/billing/page.tsx:53
|
||||
msgid "Yearly"
|
||||
msgstr "Yearly"
|
||||
|
||||
@@ -4836,6 +4839,10 @@ msgstr "You are currently updating <0>{teamMemberName}.</0>"
|
||||
msgid "You are currently updating the <0>{passkeyName}</0> passkey."
|
||||
msgstr "You are currently updating the <0>{passkeyName}</0> passkey."
|
||||
|
||||
#: apps/web/src/app/(dashboard)/templates/move-template-dialog.tsx:64
|
||||
msgid "You are not a member of this team."
|
||||
msgstr "You are not a member of this team."
|
||||
|
||||
#: apps/web/src/app/(teams)/t/[teamUrl]/error.tsx:28
|
||||
msgid "You are not authorized to view this page."
|
||||
msgstr "You are not authorized to view this page."
|
||||
@@ -4960,7 +4967,7 @@ msgstr "You have updated {teamMemberName}."
|
||||
msgid "You have verified your email address for <0>{0}</0>."
|
||||
msgstr "You have verified your email address for <0>{0}</0>."
|
||||
|
||||
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/billing/page.tsx:82
|
||||
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/billing/page.tsx:88
|
||||
msgid "You must be an admin of this team to manage billing."
|
||||
msgstr "You must be an admin of this team to manage billing."
|
||||
|
||||
@@ -5114,7 +5121,7 @@ msgstr "Your recovery code has been copied to your clipboard."
|
||||
msgid "Your recovery codes are listed below. Please store them in a safe place."
|
||||
msgstr "Your recovery codes are listed below. Please store them in a safe place."
|
||||
|
||||
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/billing/page.tsx:62
|
||||
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/billing/page.tsx:72
|
||||
msgid "Your subscription is currently active."
|
||||
msgstr "Your subscription is currently active."
|
||||
|
||||
|
||||
@@ -30,11 +30,11 @@ msgstr "“{documentName}” ha sido firmado"
|
||||
msgid "“{documentName}” was signed by all signers"
|
||||
msgstr "\"{documentName}\" fue firmado por todos los firmantes"
|
||||
|
||||
#: packages/lib/jobs/definitions/emails/send-signing-email.ts:137
|
||||
#: packages/lib/jobs/definitions/emails/send-signing-email.handler.ts:125
|
||||
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
|
||||
#: packages/lib/jobs/definitions/emails/send-signing-email.handler.ts:118
|
||||
msgid "{0} invited you to {recipientActionVerb} a document"
|
||||
msgstr "{0} te invitó a {recipientActionVerb} un documento"
|
||||
|
||||
@@ -50,7 +50,7 @@ msgstr "{0} dejó el equipo {teamName} en Documenso"
|
||||
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/jobs/definitions/emails/send-signing-email.handler.ts:124
|
||||
#: packages/lib/server-only/document/resend-document.tsx:137
|
||||
msgid "{0} on behalf of \"{1}\" has invited you to {recipientActionVerb} the document \"{2}\"."
|
||||
msgstr ""
|
||||
@@ -195,6 +195,22 @@ msgstr "{recipientName} {action} un documento utilizando uno de tus enlaces dire
|
||||
msgid "{recipientName} has rejected the document '{documentName}'"
|
||||
msgstr "{recipientName} ha rechazado el documento '{documentName}'"
|
||||
|
||||
#: packages/email/template-components/template-document-recipient-signed.tsx:49
|
||||
msgid "{recipientReference} has completed signing the document."
|
||||
msgstr ""
|
||||
|
||||
#: packages/lib/jobs/definitions/emails/send-recipient-signed-email.ts:121
|
||||
msgid "{recipientReference} has signed \"{0}\""
|
||||
msgstr ""
|
||||
|
||||
#: packages/email/template-components/template-document-recipient-signed.tsx:43
|
||||
msgid "{recipientReference} has signed \"{documentName}\""
|
||||
msgstr ""
|
||||
|
||||
#: packages/email/templates/document-recipient-signed.tsx:27
|
||||
msgid "{recipientReference} has signed {documentName}"
|
||||
msgstr ""
|
||||
|
||||
#: packages/email/template-components/template-document-rejected.tsx:25
|
||||
msgid "{signerName} has rejected the document \"{documentName}\"."
|
||||
msgstr "{signerName} ha rechazado el documento \"{documentName}\"."
|
||||
@@ -289,7 +305,7 @@ msgstr "<0>Requerir cuenta</0> - El destinatario debe haber iniciado sesión par
|
||||
msgid "<0>Require passkey</0> - The recipient must have an account and passkey configured via their settings"
|
||||
msgstr "<0>Requerir clave de acceso</0> - 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
|
||||
#: packages/lib/jobs/definitions/emails/send-signing-email.handler.ts:110
|
||||
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}."
|
||||
|
||||
@@ -305,7 +321,7 @@ msgstr "Se eliminó un campo"
|
||||
msgid "A field was updated"
|
||||
msgstr "Se actualizó un campo"
|
||||
|
||||
#: packages/lib/jobs/definitions/emails/send-team-member-joined-email.ts:107
|
||||
#: packages/lib/jobs/definitions/emails/send-team-member-joined-email.handler.ts:98
|
||||
msgid "A new member has joined your team"
|
||||
msgstr "Un nuevo miembro se ha unido a tu equipo"
|
||||
|
||||
@@ -329,7 +345,7 @@ msgstr "Se ha iniciado una solicitud para usar tu correo electrónico por {0} en
|
||||
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
|
||||
#: packages/lib/jobs/definitions/emails/send-team-member-left-email.handler.ts:87
|
||||
msgid "A team member has left {0}"
|
||||
msgstr "Un miembro del equipo ha dejado {0}"
|
||||
|
||||
@@ -364,12 +380,12 @@ msgstr "Aceptar solicitud de transferencia de equipo en Documenso"
|
||||
msgid "Add a document"
|
||||
msgstr "Agregar un documento"
|
||||
|
||||
#: packages/ui/primitives/document-flow/add-settings.tsx:378
|
||||
#: packages/ui/primitives/document-flow/add-settings.tsx:390
|
||||
#: 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
|
||||
#: packages/ui/primitives/document-flow/add-settings.tsx:302
|
||||
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."
|
||||
|
||||
@@ -414,13 +430,13 @@ msgstr "Agregar texto al campo"
|
||||
msgid "Admin"
|
||||
msgstr "Admin"
|
||||
|
||||
#: packages/ui/primitives/document-flow/add-settings.tsx:272
|
||||
#: packages/ui/primitives/document-flow/add-settings.tsx:284
|
||||
#: 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:414
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:577
|
||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:415
|
||||
msgid "Advanced settings"
|
||||
msgstr "Configuraciones avanzadas"
|
||||
|
||||
@@ -472,11 +488,11 @@ msgstr "Aprobando"
|
||||
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:524
|
||||
#: packages/ui/primitives/signature-pad/signature-pad.tsx:531
|
||||
msgid "Black"
|
||||
msgstr "Negro"
|
||||
|
||||
#: packages/ui/primitives/signature-pad/signature-pad.tsx:538
|
||||
#: packages/ui/primitives/signature-pad/signature-pad.tsx:545
|
||||
msgid "Blue"
|
||||
msgstr "Azul"
|
||||
|
||||
@@ -492,7 +508,7 @@ msgstr "Al aceptar esta solicitud, estarás concediendo a <0>{teamName}</0> acce
|
||||
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/field-item-advanced-settings.tsx:357
|
||||
#: packages/ui/primitives/document-flow/send-document-action-dialog.tsx:58
|
||||
msgid "Cancel"
|
||||
msgstr "Cancelar"
|
||||
@@ -534,7 +550,7 @@ msgstr "Valores de Checkbox"
|
||||
msgid "Clear filters"
|
||||
msgstr "Limpiar filtros"
|
||||
|
||||
#: packages/ui/primitives/signature-pad/signature-pad.tsx:558
|
||||
#: packages/ui/primitives/signature-pad/signature-pad.tsx:565
|
||||
msgid "Clear Signature"
|
||||
msgstr "Limpiar firma"
|
||||
|
||||
@@ -547,6 +563,7 @@ msgid "Close"
|
||||
msgstr "Cerrar"
|
||||
|
||||
#: packages/email/template-components/template-document-completed.tsx:35
|
||||
#: packages/email/template-components/template-document-recipient-signed.tsx:37
|
||||
#: packages/email/template-components/template-document-self-signed.tsx:36
|
||||
#: packages/lib/constants/document.ts:10
|
||||
msgid "Completed"
|
||||
@@ -561,8 +578,8 @@ msgstr "Documento completado"
|
||||
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:415
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:578
|
||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:416
|
||||
msgid "Configure the {0} field"
|
||||
msgstr "Configurar el campo {0}"
|
||||
|
||||
@@ -619,13 +636,13 @@ msgstr "Crear cuenta"
|
||||
msgid "Custom Text"
|
||||
msgstr "Texto personalizado"
|
||||
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:934
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:938
|
||||
#: packages/ui/primitives/document-flow/types.ts:53
|
||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:729
|
||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:733
|
||||
msgid "Date"
|
||||
msgstr "Fecha"
|
||||
|
||||
#: packages/ui/primitives/document-flow/add-settings.tsx:313
|
||||
#: packages/ui/primitives/document-flow/add-settings.tsx:325
|
||||
#: packages/ui/primitives/template-flow/add-template-settings.tsx:408
|
||||
msgid "Date Format"
|
||||
msgstr "Formato de fecha"
|
||||
@@ -642,16 +659,16 @@ msgstr "¿No solicitaste un cambio de contraseña? Estamos aquí para ayudarte a
|
||||
msgid "Direct link receiver"
|
||||
msgstr "Receptor de enlace directo"
|
||||
|
||||
#: packages/lib/jobs/definitions/emails/send-rejection-emails.ts:149
|
||||
#: packages/lib/jobs/definitions/emails/send-rejection-emails.handler.ts:140
|
||||
msgid "Document \"{0}\" - Rejected by {1}"
|
||||
msgstr "Documento \"{0}\" - Rechazado por {1}"
|
||||
|
||||
#: packages/lib/jobs/definitions/emails/send-rejection-emails.ts:109
|
||||
#: packages/lib/jobs/definitions/emails/send-rejection-emails.handler.ts:100
|
||||
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/document-flow/add-settings.tsx:227
|
||||
#: packages/ui/primitives/template-flow/add-template-settings.tsx:202
|
||||
msgid "Document access"
|
||||
msgstr "Acceso al documento"
|
||||
@@ -670,7 +687,8 @@ msgstr "Documento cancelado"
|
||||
msgid "Document completed"
|
||||
msgstr "Documento completado"
|
||||
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:168
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:208
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:286
|
||||
msgid "Document completed email"
|
||||
msgstr "Correo electrónico de documento completado"
|
||||
|
||||
@@ -679,7 +697,7 @@ 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:574
|
||||
#: packages/lib/server-only/template/create-document-from-direct-template.ts:585
|
||||
msgid "Document created from direct template"
|
||||
msgstr "Documento creado a partir de plantilla directa"
|
||||
|
||||
@@ -691,7 +709,7 @@ msgstr "Creación de documento"
|
||||
msgid "Document deleted"
|
||||
msgstr "Documento eliminado"
|
||||
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:207
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:247
|
||||
msgid "Document deleted email"
|
||||
msgstr "Correo electrónico de documento eliminado"
|
||||
|
||||
@@ -716,7 +734,7 @@ msgstr "Documento movido al equipo"
|
||||
msgid "Document opened"
|
||||
msgstr "Documento abierto"
|
||||
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:128
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:168
|
||||
msgid "Document pending email"
|
||||
msgstr "Correo electrónico de documento pendiente"
|
||||
|
||||
@@ -757,8 +775,8 @@ msgstr "Borrador"
|
||||
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:860
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:1069
|
||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:864
|
||||
msgid "Dropdown"
|
||||
msgstr "Menú desplegable"
|
||||
|
||||
@@ -767,12 +785,12 @@ 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-fields.tsx:886
|
||||
#: packages/ui/primitives/document-flow/add-signature.tsx:273
|
||||
#: 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:677
|
||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:681
|
||||
#: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:471
|
||||
#: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:478
|
||||
msgid "Email"
|
||||
@@ -794,7 +812,7 @@ msgstr "Correo electrónico reeenviado"
|
||||
msgid "Email sent"
|
||||
msgstr "Correo electrónico enviado"
|
||||
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:1130
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:1134
|
||||
msgid "Empty field"
|
||||
msgstr "Campo vacío"
|
||||
|
||||
@@ -807,8 +825,8 @@ msgstr "Habilitar firma de enlace directo"
|
||||
msgid "Enable signing order"
|
||||
msgstr "Habilitar orden de firma"
|
||||
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:802
|
||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:597
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:806
|
||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:601
|
||||
msgid "Enable Typed Signatures"
|
||||
msgstr "Habilitar firmas escritas"
|
||||
|
||||
@@ -816,17 +834,17 @@ msgstr "Habilitar firmas escritas"
|
||||
msgid "Enter password"
|
||||
msgstr "Ingrese la contraseña"
|
||||
|
||||
#: packages/ui/primitives/document-flow/field-item-advanced-settings.tsx:257
|
||||
#: packages/ui/primitives/document-flow/field-item-advanced-settings.tsx:258
|
||||
#: packages/ui/primitives/pdf-viewer.tsx:166
|
||||
msgid "Error"
|
||||
msgstr "Error"
|
||||
|
||||
#: packages/ui/primitives/document-flow/add-settings.tsx:283
|
||||
#: packages/ui/primitives/document-flow/add-settings.tsx:295
|
||||
#: 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
|
||||
#: packages/ui/primitives/document-flow/field-item-advanced-settings.tsx:259
|
||||
msgid "Failed to save settings."
|
||||
msgstr "Fallo al guardar configuraciones."
|
||||
|
||||
@@ -896,7 +914,7 @@ msgstr "Autenticación de acción de destinatario global"
|
||||
msgid "Go Back"
|
||||
msgstr "Regresar"
|
||||
|
||||
#: packages/ui/primitives/signature-pad/signature-pad.tsx:545
|
||||
#: packages/ui/primitives/signature-pad/signature-pad.tsx:552
|
||||
msgid "Green"
|
||||
msgstr "Verde"
|
||||
|
||||
@@ -947,7 +965,7 @@ msgstr "Únete a {teamName} en Documenso"
|
||||
msgid "Label"
|
||||
msgstr "Etiqueta"
|
||||
|
||||
#: packages/ui/primitives/document-flow/add-settings.tsx:176
|
||||
#: packages/ui/primitives/document-flow/add-settings.tsx:187
|
||||
#: packages/ui/primitives/template-flow/add-template-settings.tsx:162
|
||||
msgid "Language"
|
||||
msgstr "Idioma"
|
||||
@@ -983,12 +1001,12 @@ msgstr "Mensaje <0>(Opcional)</0>"
|
||||
msgid "Min"
|
||||
msgstr "Mín"
|
||||
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:908
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:912
|
||||
#: packages/ui/primitives/document-flow/add-signature.tsx:299
|
||||
#: 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:703
|
||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:707
|
||||
#: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:506
|
||||
#: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:512
|
||||
msgid "Name"
|
||||
@@ -1006,8 +1024,8 @@ msgstr "Necesita firmar"
|
||||
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:516
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:697
|
||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:520
|
||||
msgid "No recipient matching this description was found."
|
||||
msgstr "No se encontró ningún destinatario que coincidiera con esta descripción."
|
||||
|
||||
@@ -1015,8 +1033,8 @@ msgstr "No se encontró ningún destinatario que coincidiera con esta descripci
|
||||
msgid "No recipients"
|
||||
msgstr "Sin destinatarios"
|
||||
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:708
|
||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:531
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:712
|
||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:535
|
||||
msgid "No recipients with this role"
|
||||
msgstr "No hay destinatarios con este rol"
|
||||
|
||||
@@ -1044,9 +1062,9 @@ msgstr "No se encontró valor."
|
||||
msgid "None"
|
||||
msgstr "Ninguno"
|
||||
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:986
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:990
|
||||
#: packages/ui/primitives/document-flow/types.ts:56
|
||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:781
|
||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:785
|
||||
msgid "Number"
|
||||
msgstr "Número"
|
||||
|
||||
@@ -1112,15 +1130,15 @@ msgstr "Por favor {0} tu documento<0/>\"{documentName}\""
|
||||
msgid "Please {action} your document {documentName}"
|
||||
msgstr "Por favor {action} tu documento {documentName}"
|
||||
|
||||
#: packages/lib/jobs/definitions/emails/send-signing-email.ts:111
|
||||
#: packages/lib/jobs/definitions/emails/send-signing-email.handler.ts:99
|
||||
msgid "Please {recipientActionVerb} this document"
|
||||
msgstr "Por favor {recipientActionVerb} este documento"
|
||||
|
||||
#: packages/lib/jobs/definitions/emails/send-signing-email.ts:125
|
||||
#: packages/lib/jobs/definitions/emails/send-signing-email.handler.ts:113
|
||||
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
|
||||
#: packages/lib/jobs/definitions/emails/send-signing-email.handler.ts:105
|
||||
msgid "Please {recipientActionVerb} your document"
|
||||
msgstr "Por favor {recipientActionVerb} tu documento"
|
||||
|
||||
@@ -1167,24 +1185,28 @@ 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/document-flow/add-settings.tsx:269
|
||||
#: 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
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:129
|
||||
msgid "Recipient removed email"
|
||||
msgstr "Correo electrónico de destinatario eliminado"
|
||||
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:50
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:51
|
||||
msgid "Recipient signed email"
|
||||
msgstr ""
|
||||
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:90
|
||||
msgid "Recipient signing request email"
|
||||
msgstr "Correo electrónico de solicitud de firma de destinatario"
|
||||
|
||||
#: packages/ui/primitives/signature-pad/signature-pad.tsx:531
|
||||
#: packages/ui/primitives/signature-pad/signature-pad.tsx:538
|
||||
msgid "Red"
|
||||
msgstr "Rojo"
|
||||
|
||||
#: packages/ui/primitives/document-flow/add-settings.tsx:371
|
||||
#: packages/ui/primitives/document-flow/add-settings.tsx:383
|
||||
#: packages/ui/primitives/template-flow/add-template-settings.tsx:461
|
||||
msgid "Redirect URL"
|
||||
msgstr "URL de redirección"
|
||||
@@ -1217,7 +1239,7 @@ msgstr "Recordatorio: Por favor {recipientActionVerb} este documento"
|
||||
msgid "Reminder: Please {recipientActionVerb} your document"
|
||||
msgstr "Recordatorio: Por favor {recipientActionVerb} tu documento"
|
||||
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:1117
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:1121
|
||||
msgid "Remove"
|
||||
msgstr "Eliminar"
|
||||
|
||||
@@ -1245,11 +1267,11 @@ msgstr "Ten la seguridad de que tu documento es estrictamente confidencial y nun
|
||||
msgid "Rows per page"
|
||||
msgstr "Filas por página"
|
||||
|
||||
#: packages/ui/primitives/document-flow/field-item-advanced-settings.tsx:355
|
||||
#: packages/ui/primitives/document-flow/field-item-advanced-settings.tsx:356
|
||||
msgid "Save"
|
||||
msgstr "Guardar"
|
||||
|
||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:893
|
||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:897
|
||||
msgid "Save Template"
|
||||
msgstr "Guardar plantilla"
|
||||
|
||||
@@ -1285,15 +1307,19 @@ msgstr "Enviar"
|
||||
msgid "Send Document"
|
||||
msgstr "Enviar documento"
|
||||
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:158
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:198
|
||||
msgid "Send document completed email"
|
||||
msgstr "Enviar correo electrónico de documento completado"
|
||||
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:197
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:276
|
||||
msgid "Send document completed email to the owner"
|
||||
msgstr ""
|
||||
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:237
|
||||
msgid "Send document deleted email"
|
||||
msgstr "Enviar correo electrónico de documento eliminado"
|
||||
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:118
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:158
|
||||
msgid "Send document pending email"
|
||||
msgstr "Enviar correo electrónico de documento pendiente"
|
||||
|
||||
@@ -1301,11 +1327,15 @@ msgstr "Enviar correo electrónico de documento pendiente"
|
||||
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
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:119
|
||||
msgid "Send recipient removed email"
|
||||
msgstr "Enviar correo electrónico de destinatario eliminado"
|
||||
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:40
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:41
|
||||
msgid "Send recipient signed email"
|
||||
msgstr ""
|
||||
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:80
|
||||
msgid "Send recipient signing request email"
|
||||
msgstr "Enviar correo electrónico de solicitud de firma de destinatario"
|
||||
|
||||
@@ -1338,11 +1368,11 @@ msgstr "Firmar Documento"
|
||||
msgid "Sign In"
|
||||
msgstr "Iniciar sesión"
|
||||
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:830
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:834
|
||||
#: packages/ui/primitives/document-flow/add-signature.tsx:324
|
||||
#: 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:625
|
||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:629
|
||||
msgid "Signature"
|
||||
msgstr "Firma"
|
||||
|
||||
@@ -1366,8 +1396,8 @@ msgstr "Los firmantes deben tener correos electrónicos únicos"
|
||||
msgid "Signing"
|
||||
msgstr "Firmando"
|
||||
|
||||
#: packages/lib/server-only/document/send-completed-email.ts:114
|
||||
#: packages/lib/server-only/document/send-completed-email.ts:194
|
||||
#: packages/lib/server-only/document/send-completed-email.ts:119
|
||||
#: packages/lib/server-only/document/send-completed-email.ts:199
|
||||
msgid "Signing Complete!"
|
||||
msgstr "¡Firma completa!"
|
||||
|
||||
@@ -1421,9 +1451,9 @@ msgstr "Correo electrónico del equipo eliminado para {teamName} en Documenso"
|
||||
msgid "Template title"
|
||||
msgstr "Título de plantilla"
|
||||
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:960
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:964
|
||||
#: packages/ui/primitives/document-flow/types.ts:52
|
||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:755
|
||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:759
|
||||
msgid "Text"
|
||||
msgstr "Texto"
|
||||
|
||||
@@ -1515,7 +1545,7 @@ msgstr "Esto se puede anular configurando los requisitos de autenticación direc
|
||||
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
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:768
|
||||
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."
|
||||
|
||||
@@ -1531,15 +1561,19 @@ msgstr "Este documento fue enviado usando <0>Documenso.</0>"
|
||||
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
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:56
|
||||
msgid "This email is sent to the document owner when a recipient has signed the document."
|
||||
msgstr ""
|
||||
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:134
|
||||
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
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:95
|
||||
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
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:173
|
||||
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."
|
||||
|
||||
@@ -1551,7 +1585,7 @@ msgstr "Este campo no se puede modificar ni eliminar. Cuando comparta el enlace
|
||||
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
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:1101
|
||||
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."
|
||||
|
||||
@@ -1559,29 +1593,33 @@ msgstr "Este destinatario ya no puede ser modificado ya que ha firmado un campo
|
||||
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
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:252
|
||||
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
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:213
|
||||
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/document/document-email-checkboxes.tsx:291
|
||||
msgid "This will be sent to the document owner once the document has been fully completed."
|
||||
msgstr ""
|
||||
|
||||
#: 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/document-flow/add-settings.tsx:359
|
||||
#: 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
|
||||
#: packages/ui/primitives/document-flow/add-settings.tsx:166
|
||||
msgid "Title"
|
||||
msgstr "Título"
|
||||
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:1080
|
||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:873
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:1084
|
||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:877
|
||||
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}."
|
||||
|
||||
@@ -1597,7 +1635,7 @@ msgstr "Actualizar el rol y agregar campos según sea necesario para el destinat
|
||||
msgid "Upgrade"
|
||||
msgstr "Actualizar"
|
||||
|
||||
#: packages/ui/primitives/signature-pad/signature-pad.tsx:509
|
||||
#: packages/ui/primitives/signature-pad/signature-pad.tsx:516
|
||||
msgid "Upload Signature"
|
||||
msgstr ""
|
||||
|
||||
@@ -1726,7 +1764,7 @@ msgstr "Te han invitado a unirte a {0} en Documenso"
|
||||
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:327
|
||||
#: packages/lib/server-only/recipient/set-recipients-for-document.ts:337
|
||||
msgid "You have been removed from a document"
|
||||
msgstr "Te han eliminado de un documento"
|
||||
|
||||
@@ -1734,7 +1772,7 @@ msgstr "Te han eliminado de un documento"
|
||||
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/jobs/definitions/emails/send-signing-email.handler.ts:103
|
||||
#: 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}."
|
||||
|
||||
@@ -92,11 +92,7 @@ msgstr "{0} Destinatario(s)"
|
||||
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
|
||||
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/billing/page.tsx:59
|
||||
msgid "{numberOfSeats, plural, one {# member} other {# members}}"
|
||||
msgstr "{numberOfSeats, plural, one {# miembro} other {# miembros}}"
|
||||
|
||||
@@ -254,21 +250,21 @@ 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/[id]/logs/document-logs-data-table.tsx:98
|
||||
#: 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/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx:116
|
||||
#: 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)/documents/data-table.tsx:79
|
||||
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:177
|
||||
#: 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
|
||||
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:131
|
||||
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:140
|
||||
#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:116
|
||||
#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:125
|
||||
msgid "Actions"
|
||||
msgstr "Acciones"
|
||||
|
||||
@@ -491,7 +487,7 @@ msgstr "Ocurrió un error al cargar los miembros del equipo. Por favor intenta d
|
||||
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
|
||||
#: apps/web/src/app/(dashboard)/templates/move-template-dialog.tsx:65
|
||||
msgid "An error occurred while moving the template."
|
||||
msgstr "Ocurrió un error al mover la plantilla."
|
||||
|
||||
@@ -499,7 +495,7 @@ msgstr "Ocurrió un error al mover la plantilla."
|
||||
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]/checkbox-field.tsx:154
|
||||
#: 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
|
||||
@@ -522,7 +518,7 @@ msgstr "Ocurrió un error al enviar el documento."
|
||||
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]/checkbox-field.tsx:125
|
||||
#: 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
|
||||
@@ -544,7 +540,7 @@ msgstr "Ocurrió un error al intentar crear una sesión de pago."
|
||||
msgid "An error occurred while updating the document settings."
|
||||
msgstr "Ocurrió un error al actualizar la configuración del documento."
|
||||
|
||||
#: apps/web/src/app/(signing)/sign/[token]/checkbox-field.tsx:213
|
||||
#: apps/web/src/app/(signing)/sign/[token]/checkbox-field.tsx:215
|
||||
msgid "An error occurred while updating the signature."
|
||||
msgstr "Ocurrió un error al actualizar la firma."
|
||||
|
||||
@@ -578,11 +574,11 @@ msgstr "Ocurrió un error al subir tu documento."
|
||||
#: 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/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/signin.tsx:249
|
||||
#: apps/web/src/components/forms/signin.tsx:257
|
||||
#: apps/web/src/components/forms/signin.tsx:271
|
||||
#: apps/web/src/components/forms/signin.tsx:286
|
||||
#: apps/web/src/components/forms/signin.tsx:302
|
||||
#: apps/web/src/components/forms/signup.tsx:124
|
||||
#: apps/web/src/components/forms/signup.tsx:138
|
||||
#: apps/web/src/components/forms/token.tsx:143
|
||||
@@ -597,11 +593,11 @@ msgstr "Ocurrió un error desconocido"
|
||||
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
|
||||
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:221
|
||||
msgid "Any Source"
|
||||
msgstr "Cualquier fuente"
|
||||
|
||||
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:205
|
||||
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:201
|
||||
msgid "Any Status"
|
||||
msgstr "Cualquier estado"
|
||||
|
||||
@@ -704,7 +700,7 @@ 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
|
||||
#: apps/web/src/components/forms/signin.tsx:486
|
||||
msgid "Backup Code"
|
||||
msgstr "Código de respaldo"
|
||||
|
||||
@@ -721,7 +717,7 @@ 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/app/(teams)/t/[teamUrl]/settings/billing/page.tsx:71
|
||||
#: 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
|
||||
@@ -737,7 +733,7 @@ msgstr "Preferencias de marca"
|
||||
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/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx:97
|
||||
#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/data-table.tsx:48
|
||||
msgid "Browser"
|
||||
msgstr "Navegador"
|
||||
@@ -780,7 +776,7 @@ msgstr "Al utilizar la función de firma electrónica, usted está consintiendo
|
||||
#: 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/move-template-dialog.tsx:131
|
||||
#: 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
|
||||
@@ -864,9 +860,9 @@ msgstr "Reclame su nombre de usuario ahora"
|
||||
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)/documents/[id]/document-page-view-recent-activity.tsx:76
|
||||
#: 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/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:66
|
||||
#: apps/web/src/components/document/document-history-sheet.tsx:133
|
||||
msgid "Click here to retry"
|
||||
msgstr "Haga clic aquí para reintentar"
|
||||
@@ -919,7 +915,7 @@ msgstr "Completar Firmado"
|
||||
msgid "Complete Viewing"
|
||||
msgstr "Completar Visualización"
|
||||
|
||||
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:208
|
||||
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:204
|
||||
#: apps/web/src/components/(dashboard)/avatar/stack-avatars-with-tooltip.tsx:77
|
||||
#: apps/web/src/components/formatter/document-status.tsx:28
|
||||
msgid "Completed"
|
||||
@@ -1149,9 +1145,9 @@ msgstr "Crea tu cuenta y comienza a utilizar la firma de documentos de última g
|
||||
#: apps/web/src/app/(dashboard)/admin/documents/document-results.tsx:62
|
||||
#: apps/web/src/app/(dashboard)/admin/leaderboard/data-table-leaderboard.tsx:96
|
||||
#: 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)/documents/data-table.tsx:48
|
||||
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table.tsx:63
|
||||
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:105
|
||||
#: 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
|
||||
@@ -1168,7 +1164,7 @@ 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
|
||||
#: apps/web/src/components/(teams)/tables/pending-user-teams-data-table.tsx:76
|
||||
msgid "Created on"
|
||||
msgstr "Creado el"
|
||||
|
||||
@@ -1187,10 +1183,6 @@ msgstr "Contraseña actual"
|
||||
msgid "Current password is incorrect."
|
||||
msgstr ""
|
||||
|
||||
#: 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"
|
||||
@@ -1199,7 +1191,7 @@ msgstr "Diario"
|
||||
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/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx:68
|
||||
#: apps/web/src/app/(signing)/sign/[token]/date-field.tsx:148
|
||||
msgid "Date"
|
||||
msgstr "Fecha"
|
||||
@@ -1319,7 +1311,7 @@ msgstr "Eliminando cuenta..."
|
||||
msgid "Details"
|
||||
msgstr "Detalles"
|
||||
|
||||
#: apps/web/src/app/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx:75
|
||||
#: apps/web/src/app/(dashboard)/settings/security/activity/user-security-activity-data-table.tsx:73
|
||||
#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:242
|
||||
msgid "Device"
|
||||
msgstr "Dispositivo"
|
||||
@@ -1334,8 +1326,8 @@ msgstr "enlace directo"
|
||||
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
|
||||
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:156
|
||||
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:227
|
||||
msgid "Direct Link"
|
||||
msgstr "Enlace directo"
|
||||
|
||||
@@ -1439,11 +1431,11 @@ msgstr "¡Documento completado!"
|
||||
msgid "Document created"
|
||||
msgstr "Documento creado"
|
||||
|
||||
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:129
|
||||
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:127
|
||||
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
|
||||
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:132
|
||||
msgid "Document created using a <0>direct link</0>"
|
||||
msgstr "Documento creado usando un <0>enlace directo</0>"
|
||||
|
||||
@@ -1598,7 +1590,7 @@ msgstr "Descargar registros de auditoría"
|
||||
msgid "Download Certificate"
|
||||
msgstr "Descargar certificado"
|
||||
|
||||
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:214
|
||||
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:210
|
||||
#: apps/web/src/components/formatter/document-status.tsx:34
|
||||
msgid "Draft"
|
||||
msgstr "Borrador"
|
||||
@@ -1668,7 +1660,7 @@ msgstr "Divulgación de Firma Electrónica"
|
||||
#: 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/signin.tsx:339
|
||||
#: apps/web/src/components/forms/signup.tsx:176
|
||||
msgid "Email"
|
||||
msgstr "Correo electrónico"
|
||||
@@ -1778,12 +1770,12 @@ msgstr "Ingresa tu texto aquí"
|
||||
#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:217
|
||||
#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:256
|
||||
#: 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/move-template-dialog.tsx:68
|
||||
#: 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]/checkbox-field.tsx:124
|
||||
#: apps/web/src/app/(signing)/sign/[token]/checkbox-field.tsx:153
|
||||
#: apps/web/src/app/(signing)/sign/[token]/checkbox-field.tsx:214
|
||||
#: 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
|
||||
@@ -1859,7 +1851,7 @@ msgid "For any questions regarding this disclosure, electronic signatures, or an
|
||||
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
|
||||
#: apps/web/src/components/forms/signin.tsx:371
|
||||
msgid "Forgot your password?"
|
||||
msgstr "¿Olvidaste tu contraseña?"
|
||||
|
||||
@@ -2039,11 +2031,11 @@ msgstr "¡Invitación aceptada!"
|
||||
msgid "Invitation declined"
|
||||
msgstr "Invitación rechazada"
|
||||
|
||||
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:80
|
||||
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:78
|
||||
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
|
||||
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:61
|
||||
msgid "Invitation has been resent"
|
||||
msgstr "La invitación ha sido reenviada"
|
||||
|
||||
@@ -2063,7 +2055,7 @@ msgstr "Invitar a miembros"
|
||||
msgid "Invite team members"
|
||||
msgstr "Invitar a miembros del equipo"
|
||||
|
||||
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:128
|
||||
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:126
|
||||
msgid "Invited At"
|
||||
msgstr "Invitado el"
|
||||
|
||||
@@ -2133,7 +2125,7 @@ msgstr "Última Actualización"
|
||||
msgid "Last updated at"
|
||||
msgstr "Última actualización el"
|
||||
|
||||
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table.tsx:71
|
||||
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table.tsx:69
|
||||
msgid "Last used"
|
||||
msgstr "Último uso"
|
||||
|
||||
@@ -2142,7 +2134,7 @@ msgid "Leaderboard"
|
||||
msgstr ""
|
||||
|
||||
#: apps/web/src/components/(teams)/dialogs/leave-team-dialog.tsx:111
|
||||
#: apps/web/src/components/(teams)/tables/current-user-teams-data-table.tsx:117
|
||||
#: apps/web/src/components/(teams)/tables/current-user-teams-data-table.tsx:115
|
||||
msgid "Leave"
|
||||
msgstr "Salir"
|
||||
|
||||
@@ -2175,7 +2167,7 @@ msgstr "Enlaces generados"
|
||||
msgid "Listening to {0}"
|
||||
msgstr "Escuchando a {0}"
|
||||
|
||||
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recent-activity.tsx:100
|
||||
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recent-activity.tsx:98
|
||||
msgid "Load older activity"
|
||||
msgstr "Cargar actividad anterior"
|
||||
|
||||
@@ -2190,11 +2182,11 @@ 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
|
||||
#: apps/web/src/app/(dashboard)/templates/move-template-dialog.tsx:103
|
||||
msgid "Loading teams..."
|
||||
msgstr "Cargando equipos..."
|
||||
|
||||
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recent-activity.tsx:100
|
||||
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recent-activity.tsx:98
|
||||
msgid "Loading..."
|
||||
msgstr "Cargando..."
|
||||
|
||||
@@ -2204,7 +2196,7 @@ msgstr "Cargando..."
|
||||
msgid "Login"
|
||||
msgstr "Iniciar sesión"
|
||||
|
||||
#: apps/web/src/components/(teams)/tables/current-user-teams-data-table.tsx:101
|
||||
#: apps/web/src/components/(teams)/tables/current-user-teams-data-table.tsx:99
|
||||
msgid "Manage"
|
||||
msgstr "Gestionar"
|
||||
|
||||
@@ -2252,7 +2244,7 @@ msgstr "Gestionar Suscripción"
|
||||
msgid "Manage subscriptions"
|
||||
msgstr "Gestionar suscripciones"
|
||||
|
||||
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/billing/page.tsx:81
|
||||
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/billing/page.tsx:87
|
||||
msgid "Manage team subscription."
|
||||
msgstr "Gestionar suscripción de equipo."
|
||||
|
||||
@@ -2292,8 +2284,8 @@ msgstr "MAU (documento creado)"
|
||||
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
|
||||
#: apps/web/src/components/(teams)/tables/current-user-teams-data-table.tsx:88
|
||||
#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:111
|
||||
msgid "Member Since"
|
||||
msgstr "Miembro desde"
|
||||
|
||||
@@ -2309,6 +2301,7 @@ msgid "Modify recipients"
|
||||
msgstr "Modificar destinatarios"
|
||||
|
||||
#: apps/web/src/app/(dashboard)/settings/billing/billing-plans.tsx:30
|
||||
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/billing/page.tsx:54
|
||||
msgid "Monthly"
|
||||
msgstr "Mensual"
|
||||
|
||||
@@ -2321,7 +2314,7 @@ msgid "Monthly Active Users: Users that had at least one of their documents comp
|
||||
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
|
||||
#: apps/web/src/app/(dashboard)/templates/move-template-dialog.tsx:134
|
||||
msgid "Move"
|
||||
msgstr "Mover"
|
||||
|
||||
@@ -2329,7 +2322,7 @@ msgstr "Mover"
|
||||
msgid "Move Document to Team"
|
||||
msgstr "Mover documento al equipo"
|
||||
|
||||
#: apps/web/src/app/(dashboard)/templates/move-template-dialog.tsx:77
|
||||
#: apps/web/src/app/(dashboard)/templates/move-template-dialog.tsx:89
|
||||
msgid "Move Template to Team"
|
||||
msgstr "Mover plantilla al equipo"
|
||||
|
||||
@@ -2339,7 +2332,7 @@ 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
|
||||
#: apps/web/src/app/(dashboard)/templates/move-template-dialog.tsx:134
|
||||
msgid "Moving..."
|
||||
msgstr "Moviendo..."
|
||||
|
||||
@@ -2352,7 +2345,7 @@ msgstr "Mis plantillas"
|
||||
#: 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)/settings/security/passkeys/user-passkeys-data-table.tsx:59
|
||||
#: 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:118
|
||||
@@ -2367,7 +2360,7 @@ msgstr "Nombre"
|
||||
msgid "Need to sign documents?"
|
||||
msgstr "¿Necesitas firmar documentos?"
|
||||
|
||||
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table.tsx:76
|
||||
#: apps/web/src/app/(dashboard)/settings/security/passkeys/user-passkeys-data-table.tsx:74
|
||||
msgid "Never"
|
||||
msgstr "Nunca"
|
||||
|
||||
@@ -2402,7 +2395,7 @@ msgstr "No hay borradores activos"
|
||||
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
|
||||
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/billing/page.tsx:43
|
||||
msgid "No payment required"
|
||||
msgstr "No se requiere pago"
|
||||
|
||||
@@ -2410,11 +2403,11 @@ msgstr "No se requiere pago"
|
||||
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
|
||||
#: apps/web/src/app/(dashboard)/documents/[id]/document-page-view-recent-activity.tsx:106
|
||||
msgid "No recent activity"
|
||||
msgstr "No hay actividad reciente"
|
||||
|
||||
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:103
|
||||
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:101
|
||||
msgid "No recent documents"
|
||||
msgstr "No hay documentos recientes"
|
||||
|
||||
@@ -2449,7 +2442,7 @@ msgstr "No se encontró valor."
|
||||
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
|
||||
#: apps/web/src/components/forms/signin.tsx:161
|
||||
msgid "Not supported"
|
||||
msgstr "No soportado"
|
||||
|
||||
@@ -2535,7 +2528,7 @@ msgstr "Abierto"
|
||||
msgid "Or"
|
||||
msgstr "O"
|
||||
|
||||
#: apps/web/src/components/forms/signin.tsx:390
|
||||
#: apps/web/src/components/forms/signin.tsx:391
|
||||
msgid "Or continue with"
|
||||
msgstr "O continúa con"
|
||||
|
||||
@@ -2546,8 +2539,8 @@ 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
|
||||
#: apps/web/src/components/(teams)/tables/current-user-teams-data-table.tsx:84
|
||||
#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:107
|
||||
msgid "Owner"
|
||||
msgstr "Propietario"
|
||||
|
||||
@@ -2555,7 +2548,7 @@ msgstr "Propietario"
|
||||
msgid "Paid"
|
||||
msgstr "Pagado"
|
||||
|
||||
#: apps/web/src/components/forms/signin.tsx:435
|
||||
#: apps/web/src/components/forms/signin.tsx:436
|
||||
msgid "Passkey"
|
||||
msgstr "Clave de acceso"
|
||||
|
||||
@@ -2592,14 +2585,14 @@ msgstr "Claves de acceso"
|
||||
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
|
||||
#: apps/web/src/components/forms/signin.tsx:162
|
||||
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:128
|
||||
#: apps/web/src/components/forms/reset-password.tsx:115
|
||||
#: apps/web/src/components/forms/signin.tsx:356
|
||||
#: apps/web/src/components/forms/signin.tsx:357
|
||||
#: apps/web/src/components/forms/signup.tsx:192
|
||||
#: apps/web/src/components/forms/v2/signup.tsx:347
|
||||
msgid "Password"
|
||||
@@ -2629,7 +2622,7 @@ 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/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:207
|
||||
#: 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
|
||||
@@ -2746,7 +2739,7 @@ msgstr "Por favor, revise el documento antes de firmar."
|
||||
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
|
||||
#: apps/web/src/components/forms/signin.tsx:204
|
||||
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"
|
||||
|
||||
@@ -2858,17 +2851,17 @@ msgstr "Reason must be less than 500 characters"
|
||||
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)/documents/[id]/document-page-view-recent-activity.tsx:55
|
||||
#: 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
|
||||
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:45
|
||||
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)/documents/data-table.tsx:63
|
||||
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:116
|
||||
#: apps/web/src/app/(dashboard)/templates/template-direct-link-dialog.tsx:280
|
||||
msgid "Recipient"
|
||||
msgstr "Destinatario"
|
||||
@@ -2929,8 +2922,8 @@ msgstr "¿Recordaste tu contraseña? <0>Iniciar sesión</0>"
|
||||
#: 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/(teams)/tables/team-member-invites-data-table.tsx:164
|
||||
#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:165
|
||||
#: apps/web/src/components/forms/avatar-image.tsx:166
|
||||
msgid "Remove"
|
||||
msgstr "Eliminar"
|
||||
@@ -2939,10 +2932,14 @@ msgstr "Eliminar"
|
||||
msgid "Remove team email"
|
||||
msgstr "Eliminar correo electrónico del equipo"
|
||||
|
||||
#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:164
|
||||
#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:162
|
||||
msgid "Remove team member"
|
||||
msgstr "Eliminar miembro del equipo"
|
||||
|
||||
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/billing/page.tsx:63
|
||||
msgid "Renews: {formattedDate}"
|
||||
msgstr ""
|
||||
|
||||
#: apps/web/src/components/forms/password.tsx:144
|
||||
#: apps/web/src/components/forms/reset-password.tsx:131
|
||||
msgid "Repeat Password"
|
||||
@@ -2957,7 +2954,7 @@ 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
|
||||
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:152
|
||||
msgid "Resend"
|
||||
msgstr "Reenviar"
|
||||
|
||||
@@ -3035,9 +3032,9 @@ 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
|
||||
#: apps/web/src/components/(teams)/tables/current-user-teams-data-table.tsx:80
|
||||
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:121
|
||||
#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:103
|
||||
msgid "Role"
|
||||
msgstr "Rol"
|
||||
|
||||
@@ -3094,7 +3091,7 @@ 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
|
||||
#: apps/web/src/app/(dashboard)/templates/move-template-dialog.tsx:98
|
||||
msgid "Select a team"
|
||||
msgstr "Seleccionar un equipo"
|
||||
|
||||
@@ -3102,7 +3099,7 @@ msgstr "Seleccionar un equipo"
|
||||
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
|
||||
#: apps/web/src/app/(dashboard)/templates/move-template-dialog.tsx:92
|
||||
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."
|
||||
|
||||
@@ -3134,7 +3131,7 @@ msgstr "Enviar en nombre del equipo"
|
||||
msgid "Send reminder"
|
||||
msgstr "Enviar recordatorio"
|
||||
|
||||
#: apps/web/src/app/(dashboard)/documents/data-table.tsx:65
|
||||
#: apps/web/src/app/(dashboard)/documents/data-table.tsx:59
|
||||
msgid "Sender"
|
||||
msgstr "Remitente"
|
||||
|
||||
@@ -3233,8 +3230,8 @@ 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
|
||||
#: apps/web/src/components/forms/signin.tsx:384
|
||||
#: apps/web/src/components/forms/signin.tsx:511
|
||||
msgid "Sign In"
|
||||
msgstr "Iniciar sesión"
|
||||
|
||||
@@ -3319,8 +3316,8 @@ msgstr "Certificado de Firma"
|
||||
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
|
||||
#: apps/web/src/components/forms/signin.tsx:384
|
||||
#: apps/web/src/components/forms/signin.tsx:511
|
||||
msgid "Signing in..."
|
||||
msgstr "Iniciando sesión..."
|
||||
|
||||
@@ -3396,8 +3393,8 @@ msgstr "Configuraciones del sitio"
|
||||
#: 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)/tables/team-member-invites-data-table.tsx:66
|
||||
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:83
|
||||
#: apps/web/src/components/(teams)/team-billing-portal-button.tsx:29
|
||||
msgid "Something went wrong"
|
||||
msgstr "Algo salió mal"
|
||||
@@ -3439,7 +3436,7 @@ msgstr "Lo sentimos, no pudimos descargar los registros de auditoría. Por favor
|
||||
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
|
||||
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:134
|
||||
msgid "Source"
|
||||
msgstr "Fuente"
|
||||
|
||||
@@ -3449,8 +3446,8 @@ 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/(dashboard)/documents/data-table.tsx:73
|
||||
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:126
|
||||
#: 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"
|
||||
@@ -3492,8 +3489,8 @@ msgstr "Suscripciones"
|
||||
#: apps/web/src/components/(teams)/dialogs/update-team-member-dialog.tsx:92
|
||||
#: apps/web/src/components/(teams)/forms/update-team-form.tsx:67
|
||||
#: 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/(teams)/tables/team-member-invites-data-table.tsx:60
|
||||
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:77
|
||||
#: 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
|
||||
@@ -3512,8 +3509,8 @@ msgstr "Requisitos del Sistema"
|
||||
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
|
||||
#: apps/web/src/components/(teams)/tables/current-user-teams-data-table.tsx:63
|
||||
#: apps/web/src/components/(teams)/tables/pending-user-teams-data-table.tsx:62
|
||||
msgid "Team"
|
||||
msgstr "Equipo"
|
||||
|
||||
@@ -3559,8 +3556,8 @@ msgstr "Invitación del equipo"
|
||||
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
|
||||
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:107
|
||||
#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:84
|
||||
msgid "Team Member"
|
||||
msgstr "Miembro del equipo"
|
||||
|
||||
@@ -3634,10 +3631,10 @@ msgstr "Equipos"
|
||||
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]/edit/template-edit-page-view.tsx:64
|
||||
#: 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-documents-table.tsx:144
|
||||
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:224
|
||||
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view.tsx:148
|
||||
#: apps/web/src/components/(teams)/dialogs/invite-team-member-dialog.tsx:408
|
||||
#: apps/web/src/components/templates/manage-public-template-dialog.tsx:271
|
||||
@@ -3664,10 +3661,14 @@ msgstr "La plantilla ha sido eliminada de tu perfil público."
|
||||
msgid "Template has been updated."
|
||||
msgstr "La plantilla ha sido actualizada."
|
||||
|
||||
#: apps/web/src/app/(dashboard)/templates/move-template-dialog.tsx:48
|
||||
#: apps/web/src/app/(dashboard)/templates/move-template-dialog.tsx:50
|
||||
msgid "Template moved"
|
||||
msgstr "Plantilla movida"
|
||||
|
||||
#: apps/web/src/app/(dashboard)/templates/move-template-dialog.tsx:62
|
||||
msgid "Template not found or already associated with a team."
|
||||
msgstr ""
|
||||
|
||||
#: apps/web/src/app/(dashboard)/templates/[id]/edit/edit-template.tsx:246
|
||||
msgid "Template saved"
|
||||
msgstr "Plantilla guardada"
|
||||
@@ -3795,7 +3796,7 @@ msgstr "La solicitud de transferencia de equipo a <0>{0}</0> ha expirado."
|
||||
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
|
||||
#: apps/web/src/app/(dashboard)/templates/move-template-dialog.tsx:51
|
||||
msgid "The template has been successfully moved to the selected team."
|
||||
msgstr "La plantilla ha sido movida con éxito al equipo seleccionado."
|
||||
|
||||
@@ -3884,11 +3885,11 @@ msgstr "Este documento ha sido firmado por todos los destinatarios"
|
||||
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
|
||||
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:148
|
||||
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
|
||||
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:160
|
||||
msgid "This document was created using a direct link."
|
||||
msgstr "Este documento fue creado usando un enlace directo."
|
||||
|
||||
@@ -3908,7 +3909,7 @@ msgstr "Este enlace es inválido o ha expirado. Por favor, contacta a tu equipo
|
||||
msgid "This passkey has already been registered."
|
||||
msgstr "Esta clave de acceso ya ha sido registrada."
|
||||
|
||||
#: apps/web/src/components/forms/signin.tsx:200
|
||||
#: apps/web/src/components/forms/signin.tsx:201
|
||||
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."
|
||||
|
||||
@@ -3916,7 +3917,7 @@ msgstr "Esta clave de acceso no está configurada para esta aplicación. Por fav
|
||||
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
|
||||
#: apps/web/src/components/forms/signin.tsx:203
|
||||
msgid "This session has expired. Please try again."
|
||||
msgstr "Esta sesión ha expirado. Por favor, inténtalo de nuevo."
|
||||
|
||||
@@ -3949,7 +3950,7 @@ msgstr "Este nombre de usuario ya ha sido tomado"
|
||||
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/(dashboard)/documents/[id]/logs/document-logs-data-table.tsx:71
|
||||
#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/data-table.tsx:44
|
||||
msgid "Time"
|
||||
msgstr "Hora"
|
||||
@@ -3963,8 +3964,8 @@ 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)/documents/data-table.tsx:54
|
||||
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-documents-table.tsx:111
|
||||
#: apps/web/src/app/(dashboard)/templates/data-table-templates.tsx:61
|
||||
msgid "Title"
|
||||
msgstr "Título"
|
||||
@@ -4098,7 +4099,7 @@ msgstr "Autenticación de dos factores"
|
||||
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
|
||||
#: apps/web/src/components/forms/signin.tsx:449
|
||||
msgid "Two-Factor Authentication"
|
||||
msgstr "Autenticación de dos factores"
|
||||
|
||||
@@ -4155,7 +4156,7 @@ msgstr "No se pudo crear acceso directo a la plantilla. Por favor, inténtalo de
|
||||
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
|
||||
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:84
|
||||
msgid "Unable to delete invitation. Please try again."
|
||||
msgstr "No se pudo eliminar la invitación. Por favor, inténtalo de nuevo."
|
||||
|
||||
@@ -4171,12 +4172,12 @@ msgstr "No se pudo desactivar la autenticación de dos factores"
|
||||
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/app/(dashboard)/documents/[id]/document-page-view-recent-activity.tsx:70
|
||||
#: 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
|
||||
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:60
|
||||
msgid "Unable to load documents"
|
||||
msgstr "No se pueden cargar documentos"
|
||||
|
||||
@@ -4192,7 +4193,7 @@ msgstr "No se pudo eliminar la verificación de correo electrónico en este mome
|
||||
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
|
||||
#: apps/web/src/components/(teams)/tables/team-member-invites-data-table.tsx:67
|
||||
msgid "Unable to resend invitation. Please try again."
|
||||
msgstr "No se pudo reenviar la invitación. Por favor, inténtalo de nuevo."
|
||||
|
||||
@@ -4209,8 +4210,8 @@ msgstr "No se pudo restablecer la contraseña"
|
||||
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
|
||||
#: apps/web/src/components/forms/signin.tsx:248
|
||||
#: apps/web/src/components/forms/signin.tsx:256
|
||||
msgid "Unable to sign in"
|
||||
msgstr "No se pudo iniciar sesión"
|
||||
|
||||
@@ -4227,6 +4228,7 @@ msgstr "Incompleto"
|
||||
#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:262
|
||||
#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:273
|
||||
#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/certificate/page.tsx:284
|
||||
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/billing/page.tsx:55
|
||||
msgid "Unknown"
|
||||
msgstr "Desconocido"
|
||||
|
||||
@@ -4267,7 +4269,7 @@ msgstr "Actualizar perfil"
|
||||
msgid "Update Recipient"
|
||||
msgstr "Actualizar destinatario"
|
||||
|
||||
#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:146
|
||||
#: apps/web/src/components/(teams)/tables/team-members-data-table.tsx:144
|
||||
msgid "Update role"
|
||||
msgstr "Actualizar rol"
|
||||
|
||||
@@ -4336,12 +4338,12 @@ msgid "Use"
|
||||
msgstr "Usar"
|
||||
|
||||
#: apps/web/src/components/forms/2fa/disable-authenticator-app-dialog.tsx:187
|
||||
#: apps/web/src/components/forms/signin.tsx:505
|
||||
#: apps/web/src/components/forms/signin.tsx:506
|
||||
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
|
||||
#: apps/web/src/components/forms/signin.tsx:504
|
||||
msgid "Use Backup Code"
|
||||
msgstr "Usar Código de Respaldo"
|
||||
|
||||
@@ -4349,7 +4351,7 @@ msgstr "Usar Código de Respaldo"
|
||||
msgid "Use Template"
|
||||
msgstr "Usar Plantilla"
|
||||
|
||||
#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-data-table.tsx:78
|
||||
#: apps/web/src/app/(dashboard)/documents/[id]/logs/document-logs-data-table.tsx:76
|
||||
#: apps/web/src/app/(internal)/%5F%5Fhtmltopdf/audit-log/data-table.tsx:45
|
||||
msgid "User"
|
||||
msgstr "Usuario"
|
||||
@@ -4435,7 +4437,7 @@ msgstr "Ver todos los documentos enviados a tu cuenta"
|
||||
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
|
||||
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:155
|
||||
msgid "View all related documents"
|
||||
msgstr "Ver todos los documentos relacionados"
|
||||
|
||||
@@ -4459,7 +4461,7 @@ msgstr "Ver documentos asociados con este correo electrónico"
|
||||
msgid "View invites"
|
||||
msgstr "Ver invitaciones"
|
||||
|
||||
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:95
|
||||
#: apps/web/src/app/(dashboard)/templates/[id]/template-page-view-recent-activity.tsx:93
|
||||
msgid "View more"
|
||||
msgstr "Ver más"
|
||||
|
||||
@@ -4594,9 +4596,9 @@ msgid "We encountered an unknown error while attempting to save your details. Pl
|
||||
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
|
||||
#: apps/web/src/components/forms/signin.tsx:273
|
||||
#: apps/web/src/components/forms/signin.tsx:288
|
||||
#: apps/web/src/components/forms/signin.tsx:304
|
||||
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."
|
||||
|
||||
@@ -4797,6 +4799,7 @@ msgid "Write about yourself"
|
||||
msgstr "Escribe sobre ti mismo"
|
||||
|
||||
#: apps/web/src/app/(dashboard)/settings/billing/billing-plans.tsx:31
|
||||
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/billing/page.tsx:53
|
||||
msgid "Yearly"
|
||||
msgstr "Anual"
|
||||
|
||||
@@ -4841,6 +4844,10 @@ msgstr "Actualmente estás actualizando <0>{teamMemberName}.</0>"
|
||||
msgid "You are currently updating the <0>{passkeyName}</0> passkey."
|
||||
msgstr "Actualmente estás actualizando la clave <0>{passkeyName}</0>."
|
||||
|
||||
#: apps/web/src/app/(dashboard)/templates/move-template-dialog.tsx:64
|
||||
msgid "You are not a member of this team."
|
||||
msgstr ""
|
||||
|
||||
#: 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."
|
||||
@@ -4965,7 +4972,7 @@ msgstr "Has actualizado a {teamMemberName}."
|
||||
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
|
||||
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/billing/page.tsx:88
|
||||
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."
|
||||
|
||||
@@ -5119,7 +5126,7 @@ msgstr "Tu código de recuperación ha sido copiado en tu portapapeles."
|
||||
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
|
||||
#: apps/web/src/app/(teams)/t/[teamUrl]/settings/billing/page.tsx:72
|
||||
msgid "Your subscription is currently active."
|
||||
msgstr "Tu suscripción está actualmente activa."
|
||||
|
||||
|
||||
@@ -20,7 +20,7 @@ msgstr ""
|
||||
|
||||
#: 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."
|
||||
msgstr "\"{documentName}\" a été supprimé par un administrateur."
|
||||
|
||||
#: packages/email/template-components/template-document-pending.tsx:37
|
||||
msgid "“{documentName}” has been signed"
|
||||
@@ -30,11 +30,11 @@ msgstr "« {documentName} » a été signé"
|
||||
msgid "“{documentName}” was signed by all signers"
|
||||
msgstr "“{documentName}” a été signé par tous les signataires"
|
||||
|
||||
#: packages/lib/jobs/definitions/emails/send-signing-email.ts:137
|
||||
#: packages/lib/jobs/definitions/emails/send-signing-email.handler.ts:125
|
||||
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
|
||||
#: packages/lib/jobs/definitions/emails/send-signing-email.handler.ts:118
|
||||
msgid "{0} invited you to {recipientActionVerb} a document"
|
||||
msgstr "{0} vous a invité à {recipientActionVerb} un document"
|
||||
|
||||
@@ -50,10 +50,10 @@ msgstr "{0} a quitté l'équipe {teamName} sur Documenso"
|
||||
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/jobs/definitions/emails/send-signing-email.handler.ts:124
|
||||
#: packages/lib/server-only/document/resend-document.tsx:137
|
||||
msgid "{0} on behalf of \"{1}\" has invited you to {recipientActionVerb} the document \"{2}\"."
|
||||
msgstr ""
|
||||
msgstr "{0} représentant \"{1}\" vous a invité à {recipientActionVerb} le document \"{2}\"."
|
||||
|
||||
#: packages/email/templates/document-invite.tsx:95
|
||||
msgid "{inviterName} <0>({inviterEmail})</0>"
|
||||
@@ -89,11 +89,11 @@ 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 ""
|
||||
msgstr "{inviterName} représentant \"{teamName}\" vous a invité à {0}"
|
||||
|
||||
#: packages/email/templates/document-invite.tsx:45
|
||||
msgid "{inviterName} on behalf of \"{teamName}\" has invited you to {action} {documentName}"
|
||||
msgstr ""
|
||||
msgstr "{inviterName} représentant \"{teamName}\" vous a invité à {action} {documentName}"
|
||||
|
||||
#: packages/email/templates/team-join.tsx:67
|
||||
msgid "{memberEmail} joined the following team"
|
||||
@@ -195,6 +195,22 @@ msgstr "{recipientName} {action} un document en utilisant l'un de vos liens dire
|
||||
msgid "{recipientName} has rejected the document '{documentName}'"
|
||||
msgstr "{recipientName} a rejeté le document '{documentName}'"
|
||||
|
||||
#: packages/email/template-components/template-document-recipient-signed.tsx:49
|
||||
msgid "{recipientReference} has completed signing the document."
|
||||
msgstr ""
|
||||
|
||||
#: packages/lib/jobs/definitions/emails/send-recipient-signed-email.ts:121
|
||||
msgid "{recipientReference} has signed \"{0}\""
|
||||
msgstr ""
|
||||
|
||||
#: packages/email/template-components/template-document-recipient-signed.tsx:43
|
||||
msgid "{recipientReference} has signed \"{documentName}\""
|
||||
msgstr ""
|
||||
|
||||
#: packages/email/templates/document-recipient-signed.tsx:27
|
||||
msgid "{recipientReference} has signed {documentName}"
|
||||
msgstr ""
|
||||
|
||||
#: packages/email/template-components/template-document-rejected.tsx:25
|
||||
msgid "{signerName} has rejected the document \"{documentName}\"."
|
||||
msgstr "{signerName} a rejeté le document \"{documentName}\"."
|
||||
@@ -289,7 +305,7 @@ msgstr "<0>Exiger un compte</0> - Le destinataire doit être connecté pour voir
|
||||
msgid "<0>Require passkey</0> - The recipient must have an account and passkey configured via their settings"
|
||||
msgstr "<0>Exiger une clé d'accès</0> - 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
|
||||
#: packages/lib/jobs/definitions/emails/send-signing-email.handler.ts:110
|
||||
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."
|
||||
|
||||
@@ -305,7 +321,7 @@ msgstr "Un champ a été supprimé"
|
||||
msgid "A field was updated"
|
||||
msgstr "Un champ a été mis à jour"
|
||||
|
||||
#: packages/lib/jobs/definitions/emails/send-team-member-joined-email.ts:107
|
||||
#: packages/lib/jobs/definitions/emails/send-team-member-joined-email.handler.ts:98
|
||||
msgid "A new member has joined your team"
|
||||
msgstr "Un nouveau membre a rejoint votre équipe"
|
||||
|
||||
@@ -329,7 +345,7 @@ msgstr "Une demande d'utilisation de votre e-mail a été initiée par {0} sur D
|
||||
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
|
||||
#: packages/lib/jobs/definitions/emails/send-team-member-left-email.handler.ts:87
|
||||
msgid "A team member has left {0}"
|
||||
msgstr "Un membre de l'équipe a quitté {0}"
|
||||
|
||||
@@ -364,12 +380,12 @@ msgstr "Accepter la demande de transfert d'équipe sur Documenso"
|
||||
msgid "Add a document"
|
||||
msgstr "Ajouter un document"
|
||||
|
||||
#: packages/ui/primitives/document-flow/add-settings.tsx:378
|
||||
#: packages/ui/primitives/document-flow/add-settings.tsx:390
|
||||
#: 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:290
|
||||
#: packages/ui/primitives/document-flow/add-settings.tsx:302
|
||||
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."
|
||||
|
||||
@@ -414,13 +430,13 @@ msgstr "Ajouter du texte au champ"
|
||||
msgid "Admin"
|
||||
msgstr "Administrateur"
|
||||
|
||||
#: packages/ui/primitives/document-flow/add-settings.tsx:272
|
||||
#: packages/ui/primitives/document-flow/add-settings.tsx:284
|
||||
#: 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:576
|
||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:414
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:577
|
||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:415
|
||||
msgid "Advanced settings"
|
||||
msgstr "Paramètres avancés"
|
||||
|
||||
@@ -472,11 +488,11 @@ msgstr "En attente d'approbation"
|
||||
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:524
|
||||
#: packages/ui/primitives/signature-pad/signature-pad.tsx:531
|
||||
msgid "Black"
|
||||
msgstr "Noir"
|
||||
|
||||
#: packages/ui/primitives/signature-pad/signature-pad.tsx:538
|
||||
#: packages/ui/primitives/signature-pad/signature-pad.tsx:545
|
||||
msgid "Blue"
|
||||
msgstr "Bleu"
|
||||
|
||||
@@ -492,7 +508,7 @@ msgstr "En acceptant cette demande, vous accorderez à <0>{teamName}</0> l'accè
|
||||
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/field-item-advanced-settings.tsx:357
|
||||
#: packages/ui/primitives/document-flow/send-document-action-dialog.tsx:58
|
||||
msgid "Cancel"
|
||||
msgstr "Annuler"
|
||||
@@ -534,7 +550,7 @@ msgstr "Valeurs de case à cocher"
|
||||
msgid "Clear filters"
|
||||
msgstr "Effacer les filtres"
|
||||
|
||||
#: packages/ui/primitives/signature-pad/signature-pad.tsx:558
|
||||
#: packages/ui/primitives/signature-pad/signature-pad.tsx:565
|
||||
msgid "Clear Signature"
|
||||
msgstr "Effacer la signature"
|
||||
|
||||
@@ -547,6 +563,7 @@ msgid "Close"
|
||||
msgstr "Fermer"
|
||||
|
||||
#: packages/email/template-components/template-document-completed.tsx:35
|
||||
#: packages/email/template-components/template-document-recipient-signed.tsx:37
|
||||
#: packages/email/template-components/template-document-self-signed.tsx:36
|
||||
#: packages/lib/constants/document.ts:10
|
||||
msgid "Completed"
|
||||
@@ -561,8 +578,8 @@ msgstr "Document Terminé"
|
||||
msgid "Configure Direct Recipient"
|
||||
msgstr "Configurer le destinataire direct"
|
||||
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:577
|
||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:415
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:578
|
||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:416
|
||||
msgid "Configure the {0} field"
|
||||
msgstr "Configurer le champ {0}"
|
||||
|
||||
@@ -619,13 +636,13 @@ msgstr "Créer un compte"
|
||||
msgid "Custom Text"
|
||||
msgstr "Texte personnalisé"
|
||||
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:934
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:938
|
||||
#: packages/ui/primitives/document-flow/types.ts:53
|
||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:729
|
||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:733
|
||||
msgid "Date"
|
||||
msgstr "Date"
|
||||
|
||||
#: packages/ui/primitives/document-flow/add-settings.tsx:313
|
||||
#: packages/ui/primitives/document-flow/add-settings.tsx:325
|
||||
#: packages/ui/primitives/template-flow/add-template-settings.tsx:408
|
||||
msgid "Date Format"
|
||||
msgstr "Format de date"
|
||||
@@ -642,16 +659,16 @@ msgstr "Vous n'avez pas demandé de changement de mot de passe ? Nous sommes ici
|
||||
msgid "Direct link receiver"
|
||||
msgstr "Receveur de lien direct"
|
||||
|
||||
#: packages/lib/jobs/definitions/emails/send-rejection-emails.ts:149
|
||||
#: packages/lib/jobs/definitions/emails/send-rejection-emails.handler.ts:140
|
||||
msgid "Document \"{0}\" - Rejected by {1}"
|
||||
msgstr "Document \"{0}\" - Rejeté par {1}"
|
||||
|
||||
#: packages/lib/jobs/definitions/emails/send-rejection-emails.ts:109
|
||||
#: packages/lib/jobs/definitions/emails/send-rejection-emails.handler.ts:100
|
||||
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:216
|
||||
#: packages/ui/primitives/document-flow/add-settings.tsx:227
|
||||
#: packages/ui/primitives/template-flow/add-template-settings.tsx:202
|
||||
msgid "Document access"
|
||||
msgstr "Accès au document"
|
||||
@@ -670,7 +687,8 @@ msgstr "Document Annulé"
|
||||
msgid "Document completed"
|
||||
msgstr "Document terminé"
|
||||
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:168
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:208
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:286
|
||||
msgid "Document completed email"
|
||||
msgstr "E-mail de document complété"
|
||||
|
||||
@@ -679,7 +697,7 @@ 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:574
|
||||
#: packages/lib/server-only/template/create-document-from-direct-template.ts:585
|
||||
msgid "Document created from direct template"
|
||||
msgstr "Document créé à partir d'un modèle direct"
|
||||
|
||||
@@ -691,7 +709,7 @@ msgstr "Création de document"
|
||||
msgid "Document deleted"
|
||||
msgstr "Document supprimé"
|
||||
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:207
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:247
|
||||
msgid "Document deleted email"
|
||||
msgstr "E-mail de document supprimé"
|
||||
|
||||
@@ -716,7 +734,7 @@ msgstr "Document déplacé vers l'équipe"
|
||||
msgid "Document opened"
|
||||
msgstr "Document ouvert"
|
||||
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:128
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:168
|
||||
msgid "Document pending email"
|
||||
msgstr "E-mail de document en attente"
|
||||
|
||||
@@ -757,8 +775,8 @@ msgstr "Brouillon"
|
||||
msgid "Drag & drop your PDF here."
|
||||
msgstr "Faites glisser et déposez votre PDF ici."
|
||||
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:1065
|
||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:860
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:1069
|
||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:864
|
||||
msgid "Dropdown"
|
||||
msgstr "Liste déroulante"
|
||||
|
||||
@@ -767,12 +785,12 @@ msgid "Dropdown options"
|
||||
msgstr "Options de liste déroulante"
|
||||
|
||||
#: packages/lib/constants/document.ts:28
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:882
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:886
|
||||
#: packages/ui/primitives/document-flow/add-signature.tsx:273
|
||||
#: 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:677
|
||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:681
|
||||
#: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:471
|
||||
#: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:478
|
||||
msgid "Email"
|
||||
@@ -794,7 +812,7 @@ msgstr "Email renvoyé"
|
||||
msgid "Email sent"
|
||||
msgstr "Email envoyé"
|
||||
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:1130
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:1134
|
||||
msgid "Empty field"
|
||||
msgstr "Champ vide"
|
||||
|
||||
@@ -807,8 +825,8 @@ msgstr "Activer la signature de lien direct"
|
||||
msgid "Enable signing order"
|
||||
msgstr "Activer l'ordre de signature"
|
||||
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:802
|
||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:597
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:806
|
||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:601
|
||||
msgid "Enable Typed Signatures"
|
||||
msgstr "Activer les signatures tapées"
|
||||
|
||||
@@ -816,17 +834,17 @@ msgstr "Activer les signatures tapées"
|
||||
msgid "Enter password"
|
||||
msgstr "Entrez le mot de passe"
|
||||
|
||||
#: packages/ui/primitives/document-flow/field-item-advanced-settings.tsx:257
|
||||
#: packages/ui/primitives/document-flow/field-item-advanced-settings.tsx:258
|
||||
#: packages/ui/primitives/pdf-viewer.tsx:166
|
||||
msgid "Error"
|
||||
msgstr "Erreur"
|
||||
|
||||
#: packages/ui/primitives/document-flow/add-settings.tsx:283
|
||||
#: packages/ui/primitives/document-flow/add-settings.tsx:295
|
||||
#: packages/ui/primitives/template-flow/add-template-settings.tsx:378
|
||||
msgid "External ID"
|
||||
msgstr "ID externe"
|
||||
|
||||
#: packages/ui/primitives/document-flow/field-item-advanced-settings.tsx:258
|
||||
#: packages/ui/primitives/document-flow/field-item-advanced-settings.tsx:259
|
||||
msgid "Failed to save settings."
|
||||
msgstr "Échec de l'enregistrement des paramètres."
|
||||
|
||||
@@ -896,7 +914,7 @@ msgstr "Authentification d'action de destinataire globale"
|
||||
msgid "Go Back"
|
||||
msgstr "Retourner"
|
||||
|
||||
#: packages/ui/primitives/signature-pad/signature-pad.tsx:545
|
||||
#: packages/ui/primitives/signature-pad/signature-pad.tsx:552
|
||||
msgid "Green"
|
||||
msgstr "Vert"
|
||||
|
||||
@@ -947,7 +965,7 @@ msgstr "Rejoindre {teamName} sur Documenso"
|
||||
msgid "Label"
|
||||
msgstr "Étiquette"
|
||||
|
||||
#: packages/ui/primitives/document-flow/add-settings.tsx:176
|
||||
#: packages/ui/primitives/document-flow/add-settings.tsx:187
|
||||
#: packages/ui/primitives/template-flow/add-template-settings.tsx:162
|
||||
msgid "Language"
|
||||
msgstr "Langue"
|
||||
@@ -983,12 +1001,12 @@ msgstr "Message <0>(Optionnel)</0>"
|
||||
msgid "Min"
|
||||
msgstr "Min"
|
||||
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:908
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:912
|
||||
#: packages/ui/primitives/document-flow/add-signature.tsx:299
|
||||
#: 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:703
|
||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:707
|
||||
#: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:506
|
||||
#: packages/ui/primitives/template-flow/add-template-placeholder-recipients.tsx:512
|
||||
msgid "Name"
|
||||
@@ -1006,8 +1024,8 @@ msgstr "Nécessite une signature"
|
||||
msgid "Needs to view"
|
||||
msgstr "Nécessite une visualisation"
|
||||
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:693
|
||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:516
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:697
|
||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:520
|
||||
msgid "No recipient matching this description was found."
|
||||
msgstr "Aucun destinataire correspondant à cette description n'a été trouvé."
|
||||
|
||||
@@ -1015,8 +1033,8 @@ msgstr "Aucun destinataire correspondant à cette description n'a été trouvé.
|
||||
msgid "No recipients"
|
||||
msgstr "Aucun destinataire"
|
||||
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:708
|
||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:531
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:712
|
||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:535
|
||||
msgid "No recipients with this role"
|
||||
msgstr "Aucun destinataire avec ce rôle"
|
||||
|
||||
@@ -1044,9 +1062,9 @@ msgstr "Aucune valeur trouvée."
|
||||
msgid "None"
|
||||
msgstr "Aucun"
|
||||
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:986
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:990
|
||||
#: packages/ui/primitives/document-flow/types.ts:56
|
||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:781
|
||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:785
|
||||
msgid "Number"
|
||||
msgstr "Numéro"
|
||||
|
||||
@@ -1112,15 +1130,15 @@ msgstr "Veuillez {0} votre document<0/>\"{documentName}\""
|
||||
msgid "Please {action} your document {documentName}"
|
||||
msgstr "Veuillez {action} votre document {documentName}"
|
||||
|
||||
#: packages/lib/jobs/definitions/emails/send-signing-email.ts:111
|
||||
#: packages/lib/jobs/definitions/emails/send-signing-email.handler.ts:99
|
||||
msgid "Please {recipientActionVerb} this document"
|
||||
msgstr "Veuillez {recipientActionVerb} ce document"
|
||||
|
||||
#: packages/lib/jobs/definitions/emails/send-signing-email.ts:125
|
||||
#: packages/lib/jobs/definitions/emails/send-signing-email.handler.ts:113
|
||||
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
|
||||
#: packages/lib/jobs/definitions/emails/send-signing-email.handler.ts:105
|
||||
msgid "Please {recipientActionVerb} your document"
|
||||
msgstr "Veuillez {recipientActionVerb} votre document"
|
||||
|
||||
@@ -1167,24 +1185,28 @@ msgid "Recipient"
|
||||
msgstr "Destinataire"
|
||||
|
||||
#: packages/ui/components/recipient/recipient-action-auth-select.tsx:39
|
||||
#: packages/ui/primitives/document-flow/add-settings.tsx:257
|
||||
#: packages/ui/primitives/document-flow/add-settings.tsx:269
|
||||
#: packages/ui/primitives/template-flow/add-template-settings.tsx:291
|
||||
msgid "Recipient action authentication"
|
||||
msgstr "Authentification d'action de destinataire"
|
||||
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:89
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:129
|
||||
msgid "Recipient removed email"
|
||||
msgstr "E-mail de destinataire supprimé"
|
||||
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:50
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:51
|
||||
msgid "Recipient signed email"
|
||||
msgstr ""
|
||||
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:90
|
||||
msgid "Recipient signing request email"
|
||||
msgstr "E-mail de demande de signature de destinataire"
|
||||
|
||||
#: packages/ui/primitives/signature-pad/signature-pad.tsx:531
|
||||
#: packages/ui/primitives/signature-pad/signature-pad.tsx:538
|
||||
msgid "Red"
|
||||
msgstr "Rouge"
|
||||
|
||||
#: packages/ui/primitives/document-flow/add-settings.tsx:371
|
||||
#: packages/ui/primitives/document-flow/add-settings.tsx:383
|
||||
#: packages/ui/primitives/template-flow/add-template-settings.tsx:461
|
||||
msgid "Redirect URL"
|
||||
msgstr "URL de redirection"
|
||||
@@ -1217,7 +1239,7 @@ msgstr "Rappel : Veuillez {recipientActionVerb} ce document"
|
||||
msgid "Reminder: Please {recipientActionVerb} your document"
|
||||
msgstr "Rappel : Veuillez {recipientActionVerb} votre document"
|
||||
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:1117
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:1121
|
||||
msgid "Remove"
|
||||
msgstr "Retirer"
|
||||
|
||||
@@ -1245,11 +1267,11 @@ msgstr "Soyez assuré, votre document eststrictement confidentiel et ne sera jam
|
||||
msgid "Rows per page"
|
||||
msgstr "Lignes par page"
|
||||
|
||||
#: packages/ui/primitives/document-flow/field-item-advanced-settings.tsx:355
|
||||
#: packages/ui/primitives/document-flow/field-item-advanced-settings.tsx:356
|
||||
msgid "Save"
|
||||
msgstr "Sauvegarder"
|
||||
|
||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:893
|
||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:897
|
||||
msgid "Save Template"
|
||||
msgstr "Sauvegarder le modèle"
|
||||
|
||||
@@ -1285,15 +1307,19 @@ msgstr "Envoyer"
|
||||
msgid "Send Document"
|
||||
msgstr "Envoyer le document"
|
||||
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:158
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:198
|
||||
msgid "Send document completed email"
|
||||
msgstr "Envoyer l'e-mail de document complété"
|
||||
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:197
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:276
|
||||
msgid "Send document completed email to the owner"
|
||||
msgstr ""
|
||||
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:237
|
||||
msgid "Send document deleted email"
|
||||
msgstr "Envoyer l'e-mail de document supprimé"
|
||||
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:118
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:158
|
||||
msgid "Send document pending email"
|
||||
msgstr "Envoyer l'e-mail de document en attente"
|
||||
|
||||
@@ -1301,11 +1327,15 @@ msgstr "Envoyer l'e-mail de document en attente"
|
||||
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
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:119
|
||||
msgid "Send recipient removed email"
|
||||
msgstr "Envoyer l'e-mail de destinataire supprimé"
|
||||
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:40
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:41
|
||||
msgid "Send recipient signed email"
|
||||
msgstr ""
|
||||
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:80
|
||||
msgid "Send recipient signing request email"
|
||||
msgstr "Envoyer l'e-mail de demande de signature de destinataire"
|
||||
|
||||
@@ -1338,11 +1368,11 @@ msgstr "Signer le document"
|
||||
msgid "Sign In"
|
||||
msgstr "Se connecter"
|
||||
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:830
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:834
|
||||
#: packages/ui/primitives/document-flow/add-signature.tsx:324
|
||||
#: 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:625
|
||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:629
|
||||
msgid "Signature"
|
||||
msgstr "Signature"
|
||||
|
||||
@@ -1366,8 +1396,8 @@ msgstr "Les signataires doivent avoir des e-mails uniques"
|
||||
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
|
||||
#: packages/lib/server-only/document/send-completed-email.ts:119
|
||||
#: packages/lib/server-only/document/send-completed-email.ts:199
|
||||
msgid "Signing Complete!"
|
||||
msgstr "Signature Complète !"
|
||||
|
||||
@@ -1421,9 +1451,9 @@ msgstr "Email d'équipe supprimé pour {teamName} sur Documenso"
|
||||
msgid "Template title"
|
||||
msgstr "Titre du modèle"
|
||||
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:960
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:964
|
||||
#: packages/ui/primitives/document-flow/types.ts:52
|
||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:755
|
||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:759
|
||||
msgid "Text"
|
||||
msgstr "Texte"
|
||||
|
||||
@@ -1515,7 +1545,7 @@ msgstr "Cela peut être remplacé par le paramétrage direct des exigences d'aut
|
||||
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
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:768
|
||||
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."
|
||||
|
||||
@@ -1531,15 +1561,19 @@ msgstr "Ce document a été envoyé via <0>Documenso.</0>"
|
||||
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
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:56
|
||||
msgid "This email is sent to the document owner when a recipient has signed the document."
|
||||
msgstr ""
|
||||
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:134
|
||||
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
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:95
|
||||
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
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:173
|
||||
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é."
|
||||
|
||||
@@ -1551,7 +1585,7 @@ msgstr "Ce champ ne peut pas être modifié ou supprimé. Lorsque vous partagez
|
||||
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
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:1101
|
||||
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."
|
||||
|
||||
@@ -1559,29 +1593,33 @@ msgstr "Ce destinataire ne peut plus être modifié car il a signé un champ ou
|
||||
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
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:252
|
||||
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
|
||||
#: packages/ui/components/document/document-email-checkboxes.tsx:213
|
||||
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/document/document-email-checkboxes.tsx:291
|
||||
msgid "This will be sent to the document owner once the document has been fully completed."
|
||||
msgstr ""
|
||||
|
||||
#: 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:347
|
||||
#: packages/ui/primitives/document-flow/add-settings.tsx:359
|
||||
#: packages/ui/primitives/template-flow/add-template-settings.tsx:438
|
||||
msgid "Time Zone"
|
||||
msgstr "Fuseau horaire"
|
||||
|
||||
#: packages/ui/primitives/document-flow/add-settings.tsx:155
|
||||
#: packages/ui/primitives/document-flow/add-settings.tsx:166
|
||||
msgid "Title"
|
||||
msgstr "Titre"
|
||||
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:1080
|
||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:873
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:1084
|
||||
#: packages/ui/primitives/template-flow/add-template-fields.tsx:877
|
||||
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}."
|
||||
|
||||
@@ -1597,9 +1635,9 @@ msgstr "Mettez à jour le rôle et ajoutez des champs selon les besoins pour le
|
||||
msgid "Upgrade"
|
||||
msgstr "Améliorer"
|
||||
|
||||
#: packages/ui/primitives/signature-pad/signature-pad.tsx:509
|
||||
#: packages/ui/primitives/signature-pad/signature-pad.tsx:516
|
||||
msgid "Upload Signature"
|
||||
msgstr ""
|
||||
msgstr "Importer une signature"
|
||||
|
||||
#: packages/ui/primitives/document-dropzone.tsx:70
|
||||
msgid "Upload Template Document"
|
||||
@@ -1726,7 +1764,7 @@ msgstr "Vous avez été invité à rejoindre {0} sur Documenso"
|
||||
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:327
|
||||
#: packages/lib/server-only/recipient/set-recipients-for-document.ts:337
|
||||
msgid "You have been removed from a document"
|
||||
msgstr "Vous avez été supprimé d'un document"
|
||||
|
||||
@@ -1734,7 +1772,7 @@ msgstr "Vous avez été supprimé d'un document"
|
||||
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/jobs/definitions/emails/send-signing-email.handler.ts:103
|
||||
#: 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."
|
||||
|
||||
@@ -96,11 +96,11 @@ msgstr "Communauté"
|
||||
|
||||
#: apps/marketing/src/app/(marketing)/open/monthly-completed-documents-chart.tsx:55
|
||||
msgid "Completed Documents"
|
||||
msgstr "Documents complets"
|
||||
msgstr "Documents finalisés"
|
||||
|
||||
#: apps/marketing/src/app/(marketing)/open/monthly-completed-documents-chart.tsx:33
|
||||
msgid "Completed Documents per Month"
|
||||
msgstr "Documents complets par mois"
|
||||
msgstr "Documents finalisés par mois"
|
||||
|
||||
#: apps/marketing/src/components/(marketing)/share-connect-paid-widget-bento.tsx:65
|
||||
msgid "Connections"
|
||||
@@ -140,7 +140,7 @@ msgstr "Lien Direct"
|
||||
|
||||
#: 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 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."
|
||||
msgstr "Documenso est un projet communautaire 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."
|
||||
|
||||
#: apps/marketing/src/app/(marketing)/open/typefully.tsx:28
|
||||
msgid "Documenso on X"
|
||||
@@ -175,7 +175,7 @@ msgstr "Engagement"
|
||||
|
||||
#: apps/marketing/src/app/(marketing)/singleplayer/client.tsx:64
|
||||
msgid "Enter your details."
|
||||
msgstr "Entrez vos détails."
|
||||
msgstr "Entrez vos informations."
|
||||
|
||||
#: apps/marketing/src/components/(marketing)/enterprise.tsx:16
|
||||
msgid "Enterprise Compliance, License or Technical Needs?"
|
||||
@@ -207,7 +207,7 @@ msgstr "Pour les entreprises cherchant à se développer au sein de plusieurs é
|
||||
|
||||
#: apps/marketing/src/components/(marketing)/pricing-table.tsx:85
|
||||
msgid "For small teams and individuals with basic needs."
|
||||
msgstr "Pour les petites équipes et les individus ayant des besoins de base."
|
||||
msgstr "Pour les petites équipes et les particuliers ayant des besoins simples."
|
||||
|
||||
#: apps/marketing/src/components/(marketing)/pricing-table.tsx:80
|
||||
msgid "Free"
|
||||
@@ -248,19 +248,19 @@ msgstr "Obtenez les dernières nouvelles de Documenso, y compris les mises à jo
|
||||
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:233
|
||||
msgid "GitHub: Total Merged PRs"
|
||||
msgstr "GitHub : Total des PRs fusionnées"
|
||||
msgstr "GitHub : Nombre total des PRs fusionnées"
|
||||
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:251
|
||||
msgid "GitHub: Total Open Issues"
|
||||
msgstr "GitHub : Total des problèmes ouverts"
|
||||
msgstr "GitHub : Nombre total d'issues ouvertes"
|
||||
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:225
|
||||
msgid "GitHub: Total Stars"
|
||||
msgstr "GitHub : Nombre total d'étoiles"
|
||||
msgstr "GitHub : Nombre total de stars"
|
||||
|
||||
#: apps/marketing/src/app/(marketing)/open/salary-bands.tsx:23
|
||||
msgid "Global Salary Bands"
|
||||
msgstr "Bandes de salaire globales"
|
||||
msgstr "Fourchettes salariales mondiales"
|
||||
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:261
|
||||
msgid "Growth"
|
||||
@@ -420,7 +420,7 @@ msgstr "Économisez 60 $ ou 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 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."
|
||||
msgstr "En toute sécurité. 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."
|
||||
|
||||
#: apps/marketing/src/components/(marketing)/share-connect-paid-widget-bento.tsx:37
|
||||
msgid "Send, connect, receive and embed everywhere."
|
||||
@@ -464,11 +464,11 @@ msgstr "Intelligent."
|
||||
|
||||
#: apps/marketing/src/components/(marketing)/hero.tsx:132
|
||||
msgid "Star on GitHub"
|
||||
msgstr "Étoile sur GitHub"
|
||||
msgstr "Star sur GitHub"
|
||||
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:226
|
||||
msgid "Stars"
|
||||
msgstr "Étoiles"
|
||||
msgstr "Stars"
|
||||
|
||||
#: apps/marketing/src/components/(marketing)/footer.tsx:40
|
||||
#: apps/marketing/src/components/(marketing)/mobile-navigation.tsx:44
|
||||
@@ -499,7 +499,7 @@ msgstr "Boutique de modèles (Bientôt)."
|
||||
|
||||
#: apps/marketing/src/app/(marketing)/pricing/page.tsx:138
|
||||
msgid "That's awesome. You can take a look at the current <0>Issues</0> and join our <1>Discord Community</1> 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 "C'est génial. Vous pouvez consulter les <0>Problèmes</0> actuels et rejoindre notre <1>Communauté Discord</1> 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 ❤️"
|
||||
msgstr "C'est génial. Vous pouvez consulter les <0>Issues</0> actuelles et rejoindre notre <1>Communauté Discord</1> 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 ❤️"
|
||||
|
||||
#: 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."
|
||||
@@ -512,12 +512,12 @@ msgstr "Titre"
|
||||
#: 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 "Documents totalisés complétés"
|
||||
msgstr "Nombre total de documents finalisés"
|
||||
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:267
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:268
|
||||
msgid "Total Customers"
|
||||
msgstr "Total des clients"
|
||||
msgstr "Nombre total de clients"
|
||||
|
||||
#: apps/marketing/src/app/(marketing)/open/funding-raised.tsx:29
|
||||
msgid "Total Funding Raised"
|
||||
@@ -527,7 +527,7 @@ msgstr "Total des fonds levés"
|
||||
#: 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 des utilisateurs"
|
||||
msgstr "Nombre total d'utilisateurs"
|
||||
|
||||
#: apps/marketing/src/components/(marketing)/open-build-template-bento.tsx:31
|
||||
msgid "Truly your own."
|
||||
@@ -536,7 +536,7 @@ msgstr "Vraiment le vôtre."
|
||||
#: apps/marketing/src/components/(marketing)/callout.tsx:27
|
||||
#: apps/marketing/src/components/(marketing)/hero.tsx:123
|
||||
msgid "Try our Free Plan"
|
||||
msgstr "Essayez notre plan gratuit"
|
||||
msgstr "Essayez notre abonnement gratuit"
|
||||
|
||||
#: apps/marketing/src/app/(marketing)/open/typefully.tsx:20
|
||||
msgid "Twitter Stats"
|
||||
@@ -569,7 +569,7 @@ msgstr "Nous sommes heureux de vous aider à <0>support@documenso.com</0> ou <1>
|
||||
|
||||
#: apps/marketing/src/app/(marketing)/pricing/page.tsx:89
|
||||
msgid "What is the difference between the plans?"
|
||||
msgstr "Quelle est la différence entre les plans ?"
|
||||
msgstr "Quelle est la différence entre les abonnements ?"
|
||||
|
||||
#: 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."
|
||||
@@ -577,7 +577,7 @@ msgstr "En ce qui concerne l'envoi ou la réception d'un contrat, vous pouvez co
|
||||
|
||||
#: apps/marketing/src/app/(marketing)/pricing/page.tsx:191
|
||||
msgid "Where can I get support?"
|
||||
msgstr "Où puis-je obtenir du support ?"
|
||||
msgstr "Où puis-je obtenir de l'aide ?"
|
||||
|
||||
#: apps/marketing/src/app/(marketing)/pricing/page.tsx:177
|
||||
msgid "Why should I prefer Documenso over DocuSign or some other signing tool?"
|
||||
@@ -597,7 +597,7 @@ msgstr "Oui ! Documenso est proposé sous la licence open source GNU AGPL V3. Ce
|
||||
|
||||
#: 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 "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."
|
||||
msgstr "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 utilisateurs 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."
|
||||
|
||||
#: apps/marketing/src/components/(marketing)/carousel.tsx:272
|
||||
msgid "Your browser does not support the video tag."
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -6,6 +6,7 @@ import { DocumentDistributionMethod } from '@documenso/prisma/client';
|
||||
export enum DocumentEmailEvents {
|
||||
RecipientSigningRequest = 'recipientSigningRequest',
|
||||
RecipientRemoved = 'recipientRemoved',
|
||||
RecipientSigned = 'recipientSigned',
|
||||
DocumentPending = 'documentPending',
|
||||
DocumentCompleted = 'documentCompleted',
|
||||
DocumentDeleted = 'documentDeleted',
|
||||
@@ -16,6 +17,7 @@ export const ZDocumentEmailSettingsSchema = z
|
||||
.object({
|
||||
recipientSigningRequest: z.boolean().default(true),
|
||||
recipientRemoved: z.boolean().default(true),
|
||||
recipientSigned: z.boolean().default(true),
|
||||
documentPending: z.boolean().default(true),
|
||||
documentCompleted: z.boolean().default(true),
|
||||
documentDeleted: z.boolean().default(true),
|
||||
@@ -25,6 +27,7 @@ export const ZDocumentEmailSettingsSchema = z
|
||||
.catch(() => ({
|
||||
recipientSigningRequest: true,
|
||||
recipientRemoved: true,
|
||||
recipientSigned: true,
|
||||
documentPending: true,
|
||||
documentCompleted: true,
|
||||
documentDeleted: true,
|
||||
@@ -48,6 +51,7 @@ export const extractDerivedDocumentEmailSettings = (
|
||||
return {
|
||||
recipientSigningRequest: false,
|
||||
recipientRemoved: false,
|
||||
recipientSigned: false,
|
||||
documentPending: false,
|
||||
documentCompleted: false,
|
||||
documentDeleted: false,
|
||||
|
||||
51
packages/lib/utils/advanced-fields-helpers.ts
Normal file
51
packages/lib/utils/advanced-fields-helpers.ts
Normal file
@@ -0,0 +1,51 @@
|
||||
import { type Field, FieldType } from '@documenso/prisma/client';
|
||||
|
||||
import { ZFieldMetaSchema } from '../types/field-meta';
|
||||
|
||||
// Currently it seems that the majority of fields have advanced fields for font reasons.
|
||||
// This array should only contain fields that have an optional setting in the fieldMeta.
|
||||
export const ADVANCED_FIELD_TYPES_WITH_OPTIONAL_SETTING: FieldType[] = [
|
||||
FieldType.NUMBER,
|
||||
FieldType.TEXT,
|
||||
FieldType.DROPDOWN,
|
||||
FieldType.RADIO,
|
||||
FieldType.CHECKBOX,
|
||||
];
|
||||
|
||||
/**
|
||||
* Whether a field is required to be inserted.
|
||||
*/
|
||||
export const isRequiredField = (field: Field) => {
|
||||
// All fields without the optional metadata are assumed to be required.
|
||||
if (!ADVANCED_FIELD_TYPES_WITH_OPTIONAL_SETTING.includes(field.type)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
// Not sure why fieldMeta can be optional for advanced fields, but it is.
|
||||
// Therefore we must assume if there is no fieldMeta, then the field is optional.
|
||||
if (!field.fieldMeta) {
|
||||
return false;
|
||||
}
|
||||
|
||||
const parsedData = ZFieldMetaSchema.safeParse(field.fieldMeta);
|
||||
|
||||
// If it fails, assume the field is optional.
|
||||
// This needs to be logged somewhere.
|
||||
if (!parsedData.success) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return parsedData.data?.required === true;
|
||||
};
|
||||
|
||||
/**
|
||||
* Whether the provided field is required and not inserted.
|
||||
*/
|
||||
export const isFieldUnsignedAndRequired = (field: Field) =>
|
||||
isRequiredField(field) && !field.inserted;
|
||||
|
||||
/**
|
||||
* Whether the provided fields contains a field that is required to be inserted.
|
||||
*/
|
||||
export const fieldsContainUnsignedRequiredField = (fields: Field[]) =>
|
||||
fields.some(isFieldUnsignedAndRequired);
|
||||
@@ -1,3 +1,4 @@
|
||||
import { AppError, AppErrorCode } from '@documenso/lib/errors/app-error';
|
||||
import { findDocuments } from '@documenso/lib/server-only/admin/get-all-documents';
|
||||
import { getEntireDocument } from '@documenso/lib/server-only/admin/get-entire-document';
|
||||
import { updateRecipient } from '@documenso/lib/server-only/admin/update-recipient';
|
||||
@@ -7,6 +8,8 @@ import { sendDeleteEmail } from '@documenso/lib/server-only/document/send-delete
|
||||
import { superDeleteDocument } from '@documenso/lib/server-only/document/super-delete-document';
|
||||
import { upsertSiteSetting } from '@documenso/lib/server-only/site-settings/upsert-site-setting';
|
||||
import { deleteUser } from '@documenso/lib/server-only/user/delete-user';
|
||||
import { disableUser } from '@documenso/lib/server-only/user/disable-user';
|
||||
import { enableUser } from '@documenso/lib/server-only/user/enable-user';
|
||||
import { getUserById } from '@documenso/lib/server-only/user/get-user-by-id';
|
||||
import { extractNextApiRequestMetadata } from '@documenso/lib/universal/extract-request-metadata';
|
||||
import { DocumentStatus } from '@documenso/prisma/client';
|
||||
@@ -15,6 +18,8 @@ import { adminProcedure, router } from '../trpc';
|
||||
import {
|
||||
ZAdminDeleteDocumentMutationSchema,
|
||||
ZAdminDeleteUserMutationSchema,
|
||||
ZAdminDisableUserMutationSchema,
|
||||
ZAdminEnableUserMutationSchema,
|
||||
ZAdminFindDocumentsQuerySchema,
|
||||
ZAdminResealDocumentMutationSchema,
|
||||
ZAdminUpdateProfileMutationSchema,
|
||||
@@ -22,6 +27,10 @@ import {
|
||||
ZAdminUpdateSiteSettingMutationSchema,
|
||||
} from './schema';
|
||||
|
||||
export const ZRetrieveUserByIdQuerySchema = z.object({
|
||||
id: z.number().min(1),
|
||||
});
|
||||
|
||||
export const adminRouter = router({
|
||||
findDocuments: adminProcedure.input(ZAdminFindDocumentsQuerySchema).query(async ({ input }) => {
|
||||
const { query, page, perPage } = input;
|
||||
@@ -29,6 +38,12 @@ export const adminRouter = router({
|
||||
return await findDocuments({ query, page, perPage });
|
||||
}),
|
||||
|
||||
getUser: adminProcedure.input(ZRetrieveUserByIdQuerySchema).query(async ({ input }) => {
|
||||
const { id } = input;
|
||||
|
||||
return await getUserById({ id });
|
||||
}),
|
||||
|
||||
updateUser: adminProcedure
|
||||
.input(ZAdminUpdateProfileMutationSchema)
|
||||
.mutation(async ({ input }) => {
|
||||
@@ -70,13 +85,43 @@ export const adminRouter = router({
|
||||
return await sealDocument({ documentId: id, isResealing });
|
||||
}),
|
||||
|
||||
enableUser: adminProcedure.input(ZAdminEnableUserMutationSchema).mutation(async ({ input }) => {
|
||||
const { id } = input;
|
||||
|
||||
const user = await getUserById({ id }).catch(() => null);
|
||||
|
||||
if (!user) {
|
||||
throw new AppError(AppErrorCode.NOT_FOUND, {
|
||||
message: 'User not found',
|
||||
});
|
||||
}
|
||||
|
||||
return await enableUser({ id });
|
||||
}),
|
||||
|
||||
disableUser: adminProcedure.input(ZAdminDisableUserMutationSchema).mutation(async ({ input }) => {
|
||||
const { id } = input;
|
||||
|
||||
const user = await getUserById({ id }).catch(() => null);
|
||||
|
||||
if (!user) {
|
||||
throw new AppError(AppErrorCode.NOT_FOUND, {
|
||||
message: 'User not found',
|
||||
});
|
||||
}
|
||||
|
||||
return await disableUser({ id });
|
||||
}),
|
||||
|
||||
deleteUser: adminProcedure.input(ZAdminDeleteUserMutationSchema).mutation(async ({ input }) => {
|
||||
const { id, email } = input;
|
||||
const { id } = input;
|
||||
|
||||
const user = await getUserById({ id });
|
||||
const user = await getUserById({ id }).catch(() => null);
|
||||
|
||||
if (user.email !== email) {
|
||||
throw new Error('Email does not match');
|
||||
if (!user) {
|
||||
throw new AppError(AppErrorCode.NOT_FOUND, {
|
||||
message: 'User not found',
|
||||
});
|
||||
}
|
||||
|
||||
return await deleteUser({ id });
|
||||
|
||||
@@ -43,11 +43,22 @@ export type TAdminResealDocumentMutationSchema = z.infer<typeof ZAdminResealDocu
|
||||
|
||||
export const ZAdminDeleteUserMutationSchema = z.object({
|
||||
id: z.number().min(1),
|
||||
email: z.string().email(),
|
||||
});
|
||||
|
||||
export type TAdminDeleteUserMutationSchema = z.infer<typeof ZAdminDeleteUserMutationSchema>;
|
||||
|
||||
export const ZAdminEnableUserMutationSchema = z.object({
|
||||
id: z.number().min(1),
|
||||
});
|
||||
|
||||
export type TAdminEnableUserMutationSchema = z.infer<typeof ZAdminEnableUserMutationSchema>;
|
||||
|
||||
export const ZAdminDisableUserMutationSchema = z.object({
|
||||
id: z.number().min(1),
|
||||
});
|
||||
|
||||
export type TAdminDisableUserMutationSchema = z.infer<typeof ZAdminDisableUserMutationSchema>;
|
||||
|
||||
export const ZAdminDeleteDocumentMutationSchema = z.object({
|
||||
id: z.number().min(1),
|
||||
reason: z.string(),
|
||||
|
||||
@@ -10,14 +10,20 @@ export const ZCurrentPasswordSchema = z
|
||||
|
||||
export const ZPasswordSchema = z
|
||||
.string()
|
||||
.regex(new RegExp('.*[A-Z].*'), { message: 'One uppercase character' })
|
||||
.regex(new RegExp('.*[a-z].*'), { message: 'One lowercase character' })
|
||||
.regex(new RegExp('.*\\d.*'), { message: 'One number' })
|
||||
.regex(new RegExp('.*[`~<>?,./!@#$%^&*()\\-_+="\'|{}\\[\\];:\\\\].*'), {
|
||||
message: 'One special character is required',
|
||||
})
|
||||
.min(8, { message: 'Must be at least 8 characters in length' })
|
||||
.max(72, { message: 'Cannot be more than 72 characters in length' });
|
||||
.max(72, { message: 'Cannot be more than 72 characters in length' })
|
||||
.refine((value) => value.length > 25 || /[A-Z]/.test(value), {
|
||||
message: 'One uppercase character',
|
||||
})
|
||||
.refine((value) => value.length > 25 || /[a-z]/.test(value), {
|
||||
message: 'One lowercase character',
|
||||
})
|
||||
.refine((value) => value.length > 25 || /\d/.test(value), {
|
||||
message: 'One number',
|
||||
})
|
||||
.refine((value) => value.length > 25 || /[`~<>?,./!@#$%^&*()\-_"'+=|{}[\];:\\]/.test(value), {
|
||||
message: 'One special character is required',
|
||||
});
|
||||
|
||||
export const ZSignUpMutationSchema = z.object({
|
||||
name: z.string().min(1),
|
||||
|
||||
@@ -43,6 +43,7 @@ import {
|
||||
updateDocumentSettings,
|
||||
} from '@documenso/lib/server-only/document/update-document-settings';
|
||||
import { updateTitle } from '@documenso/lib/server-only/document/update-title';
|
||||
import { createOrGetShareLink } from '@documenso/lib/server-only/share/create-or-get-share-link';
|
||||
import { symmetricEncrypt } from '@documenso/lib/universal/crypto';
|
||||
import { extractNextApiRequestMetadata } from '@documenso/lib/universal/extract-request-metadata';
|
||||
import { DocumentStatus } from '@documenso/prisma/client';
|
||||
@@ -70,6 +71,10 @@ import {
|
||||
ZUpdateTypedSignatureSettingsMutationSchema,
|
||||
} from './schema';
|
||||
|
||||
export const ZCreateOrGetShareLinkMutationSchema = z.object({
|
||||
documentId: z.number(),
|
||||
token: z.string().optional(),
|
||||
});
|
||||
export const documentRouter = router({
|
||||
/**
|
||||
* @private
|
||||
@@ -97,6 +102,24 @@ export const documentRouter = router({
|
||||
});
|
||||
}),
|
||||
|
||||
createOrGetShareLink: procedure
|
||||
.input(ZCreateOrGetShareLinkMutationSchema)
|
||||
.mutation(async ({ ctx, input }) => {
|
||||
const { documentId, token } = input;
|
||||
|
||||
if (token) {
|
||||
return await createOrGetShareLink({ documentId, token });
|
||||
}
|
||||
|
||||
if (!ctx.user?.id) {
|
||||
throw new Error(
|
||||
'You must either provide a token or be logged in to create a sharing link.',
|
||||
);
|
||||
}
|
||||
|
||||
return await createOrGetShareLink({ documentId, userId: ctx.user.id });
|
||||
}),
|
||||
|
||||
/**
|
||||
* @public
|
||||
*/
|
||||
|
||||
@@ -33,7 +33,8 @@ export const fieldRouter = router({
|
||||
method: 'GET',
|
||||
path: '/field/{fieldId}',
|
||||
summary: 'Get field',
|
||||
description: 'Returns a document or template field',
|
||||
description:
|
||||
'Returns a single field. If you want to retrieve all the fields for a document or template, use the "Get Document" or "Get Template" request.',
|
||||
tags: ['Fields'],
|
||||
},
|
||||
})
|
||||
@@ -119,7 +120,7 @@ export const fieldRouter = router({
|
||||
}),
|
||||
|
||||
/**
|
||||
* @internal
|
||||
* @private
|
||||
*/
|
||||
signFieldWithToken: procedure
|
||||
.input(ZSignFieldWithTokenMutationSchema)
|
||||
@@ -138,7 +139,7 @@ export const fieldRouter = router({
|
||||
}),
|
||||
|
||||
/**
|
||||
* @internal
|
||||
* @private
|
||||
*/
|
||||
removeSignedFieldWithToken: procedure
|
||||
.input(ZRemovedSignedFieldWithTokenMutationSchema)
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
import { deleteUser } from '@documenso/lib/server-only/user/delete-user';
|
||||
|
||||
import { authenticatedProcedure } from '../trpc';
|
||||
|
||||
export const deleteAccountRoute = authenticatedProcedure.mutation(async ({ ctx }) => {
|
||||
return await deleteUser({
|
||||
id: ctx.user.id,
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,19 @@
|
||||
import { z } from 'zod';
|
||||
|
||||
import { findUserSecurityAuditLogs } from '@documenso/lib/server-only/user/find-user-security-audit-logs';
|
||||
|
||||
import { authenticatedProcedure } from '../trpc';
|
||||
|
||||
export const ZFindUserSecurityAuditLogsRequestSchema = z.object({
|
||||
page: z.number().optional(),
|
||||
perPage: z.number().optional(),
|
||||
});
|
||||
|
||||
export const findUserSecurityAuditLogsRoute = authenticatedProcedure
|
||||
.input(ZFindUserSecurityAuditLogsRequestSchema)
|
||||
.query(async ({ input, ctx }) => {
|
||||
return await findUserSecurityAuditLogs({
|
||||
userId: ctx.user.id,
|
||||
...input,
|
||||
});
|
||||
});
|
||||
19
packages/trpc/server/profile-router/forgot-password-route.ts
Normal file
19
packages/trpc/server/profile-router/forgot-password-route.ts
Normal file
@@ -0,0 +1,19 @@
|
||||
import { z } from 'zod';
|
||||
|
||||
import { forgotPassword } from '@documenso/lib/server-only/user/forgot-password';
|
||||
|
||||
import { procedure } from '../trpc';
|
||||
|
||||
export const ZForgotPasswordRequestSchema = z.object({
|
||||
email: z.string().email().min(1),
|
||||
});
|
||||
|
||||
export const forgotPasswordRoute = procedure
|
||||
.input(ZForgotPasswordRequestSchema)
|
||||
.mutation(async ({ input }) => {
|
||||
const { email } = input;
|
||||
|
||||
return await forgotPassword({
|
||||
email,
|
||||
});
|
||||
});
|
||||
24
packages/trpc/server/profile-router/reset-password-route.ts
Normal file
24
packages/trpc/server/profile-router/reset-password-route.ts
Normal file
@@ -0,0 +1,24 @@
|
||||
import { z } from 'zod';
|
||||
|
||||
import { resetPassword } from '@documenso/lib/server-only/user/reset-password';
|
||||
import { extractNextApiRequestMetadata } from '@documenso/lib/universal/extract-request-metadata';
|
||||
|
||||
import { ZPasswordSchema } from '../auth-router/schema';
|
||||
import { procedure } from '../trpc';
|
||||
|
||||
export const ZResetPasswordRequestSchema = z.object({
|
||||
password: ZPasswordSchema,
|
||||
token: z.string().min(1),
|
||||
});
|
||||
|
||||
export const resetPasswordRoute = procedure
|
||||
.input(ZResetPasswordRequestSchema)
|
||||
.mutation(async ({ input, ctx }) => {
|
||||
const { password, token } = input;
|
||||
|
||||
return await resetPassword({
|
||||
token,
|
||||
password,
|
||||
requestMetadata: extractNextApiRequestMetadata(ctx.req),
|
||||
});
|
||||
});
|
||||
@@ -1,152 +1,22 @@
|
||||
import { IS_BILLING_ENABLED } from '@documenso/lib/constants/app';
|
||||
import { AppError, AppErrorCode } from '@documenso/lib/errors/app-error';
|
||||
import { jobsClient } from '@documenso/lib/jobs/client';
|
||||
import { setAvatarImage } from '@documenso/lib/server-only/profile/set-avatar-image';
|
||||
import { getSubscriptionsByUserId } from '@documenso/lib/server-only/subscription/get-subscriptions-by-user-id';
|
||||
import { deleteUser } from '@documenso/lib/server-only/user/delete-user';
|
||||
import { findUserSecurityAuditLogs } from '@documenso/lib/server-only/user/find-user-security-audit-logs';
|
||||
import { forgotPassword } from '@documenso/lib/server-only/user/forgot-password';
|
||||
import { getUserById } from '@documenso/lib/server-only/user/get-user-by-id';
|
||||
import { resetPassword } from '@documenso/lib/server-only/user/reset-password';
|
||||
import { updatePassword } from '@documenso/lib/server-only/user/update-password';
|
||||
import { updateProfile } from '@documenso/lib/server-only/user/update-profile';
|
||||
import { updatePublicProfile } from '@documenso/lib/server-only/user/update-public-profile';
|
||||
import { extractNextApiRequestMetadata } from '@documenso/lib/universal/extract-request-metadata';
|
||||
import { SubscriptionStatus } from '@documenso/prisma/client';
|
||||
|
||||
import { adminProcedure, authenticatedProcedure, procedure, router } from '../trpc';
|
||||
import {
|
||||
ZConfirmEmailMutationSchema,
|
||||
ZFindUserSecurityAuditLogsSchema,
|
||||
ZForgotPasswordFormSchema,
|
||||
ZResetPasswordFormSchema,
|
||||
ZRetrieveUserByIdQuerySchema,
|
||||
ZSetProfileImageMutationSchema,
|
||||
ZUpdatePasswordMutationSchema,
|
||||
ZUpdateProfileMutationSchema,
|
||||
ZUpdatePublicProfileMutationSchema,
|
||||
} from './schema';
|
||||
import { router } from '../trpc';
|
||||
import { deleteAccountRoute } from './delete-account-route';
|
||||
import { findUserSecurityAuditLogsRoute } from './find-user-security-audit-logs-route';
|
||||
import { forgotPasswordRoute } from './forgot-password-route';
|
||||
import { resetPasswordRoute } from './reset-password-route';
|
||||
import { sendConfirmationEmailRoute } from './send-confirmation-email-route';
|
||||
import { setProfileImageRoute } from './set-profile-image-route';
|
||||
import { updatePasswordRoute } from './update-password-route';
|
||||
import { updateProfileRoute } from './update-profile-route';
|
||||
import { updatePublicProfileRoute } from './update-public-profile-route';
|
||||
|
||||
export const profileRouter = router({
|
||||
findUserSecurityAuditLogs: authenticatedProcedure
|
||||
.input(ZFindUserSecurityAuditLogsSchema)
|
||||
.query(async ({ input, ctx }) => {
|
||||
return await findUserSecurityAuditLogs({
|
||||
userId: ctx.user.id,
|
||||
...input,
|
||||
});
|
||||
}),
|
||||
|
||||
getUser: adminProcedure.input(ZRetrieveUserByIdQuerySchema).query(async ({ input }) => {
|
||||
const { id } = input;
|
||||
|
||||
return await getUserById({ id });
|
||||
}),
|
||||
|
||||
updateProfile: authenticatedProcedure
|
||||
.input(ZUpdateProfileMutationSchema)
|
||||
.mutation(async ({ input, ctx }) => {
|
||||
const { name, signature } = input;
|
||||
|
||||
return await updateProfile({
|
||||
userId: ctx.user.id,
|
||||
name,
|
||||
signature,
|
||||
requestMetadata: extractNextApiRequestMetadata(ctx.req),
|
||||
});
|
||||
}),
|
||||
|
||||
updatePublicProfile: authenticatedProcedure
|
||||
.input(ZUpdatePublicProfileMutationSchema)
|
||||
.mutation(async ({ input, ctx }) => {
|
||||
const { url, bio, enabled } = input;
|
||||
|
||||
if (IS_BILLING_ENABLED() && url !== undefined && url.length < 6) {
|
||||
const subscriptions = await getSubscriptionsByUserId({
|
||||
userId: ctx.user.id,
|
||||
}).then((subscriptions) =>
|
||||
subscriptions.filter((s) => s.status === SubscriptionStatus.ACTIVE),
|
||||
);
|
||||
|
||||
if (subscriptions.length === 0) {
|
||||
throw new AppError(AppErrorCode.PREMIUM_PROFILE_URL, {
|
||||
message: 'Only subscribers can have a username shorter than 6 characters',
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
const user = await updatePublicProfile({
|
||||
userId: ctx.user.id,
|
||||
data: {
|
||||
url,
|
||||
bio,
|
||||
enabled,
|
||||
},
|
||||
});
|
||||
|
||||
return { success: true, url: user.url };
|
||||
}),
|
||||
|
||||
updatePassword: authenticatedProcedure
|
||||
.input(ZUpdatePasswordMutationSchema)
|
||||
.mutation(async ({ input, ctx }) => {
|
||||
const { password, currentPassword } = input;
|
||||
|
||||
return await updatePassword({
|
||||
userId: ctx.user.id,
|
||||
password,
|
||||
currentPassword,
|
||||
requestMetadata: extractNextApiRequestMetadata(ctx.req),
|
||||
});
|
||||
}),
|
||||
|
||||
forgotPassword: procedure.input(ZForgotPasswordFormSchema).mutation(async ({ input }) => {
|
||||
const { email } = input;
|
||||
|
||||
return await forgotPassword({
|
||||
email,
|
||||
});
|
||||
}),
|
||||
|
||||
resetPassword: procedure.input(ZResetPasswordFormSchema).mutation(async ({ input, ctx }) => {
|
||||
const { password, token } = input;
|
||||
|
||||
return await resetPassword({
|
||||
token,
|
||||
password,
|
||||
requestMetadata: extractNextApiRequestMetadata(ctx.req),
|
||||
});
|
||||
}),
|
||||
|
||||
sendConfirmationEmail: procedure
|
||||
.input(ZConfirmEmailMutationSchema)
|
||||
.mutation(async ({ input }) => {
|
||||
const { email } = input;
|
||||
|
||||
await jobsClient.triggerJob({
|
||||
name: 'send.signup.confirmation.email',
|
||||
payload: {
|
||||
email,
|
||||
},
|
||||
});
|
||||
}),
|
||||
|
||||
deleteAccount: authenticatedProcedure.mutation(async ({ ctx }) => {
|
||||
return await deleteUser({
|
||||
id: ctx.user.id,
|
||||
});
|
||||
}),
|
||||
|
||||
setProfileImage: authenticatedProcedure
|
||||
.input(ZSetProfileImageMutationSchema)
|
||||
.mutation(async ({ input, ctx }) => {
|
||||
const { bytes, teamId } = input;
|
||||
|
||||
return await setAvatarImage({
|
||||
userId: ctx.user.id,
|
||||
teamId,
|
||||
bytes,
|
||||
requestMetadata: extractNextApiRequestMetadata(ctx.req),
|
||||
});
|
||||
}),
|
||||
findUserSecurityAuditLogs: findUserSecurityAuditLogsRoute,
|
||||
updateProfile: updateProfileRoute,
|
||||
updatePublicProfile: updatePublicProfileRoute,
|
||||
updatePassword: updatePasswordRoute,
|
||||
forgotPassword: forgotPasswordRoute,
|
||||
resetPassword: resetPasswordRoute,
|
||||
sendConfirmationEmail: sendConfirmationEmailRoute,
|
||||
deleteAccount: deleteAccountRoute,
|
||||
setProfileImage: setProfileImageRoute,
|
||||
});
|
||||
|
||||
@@ -1,79 +0,0 @@
|
||||
import { z } from 'zod';
|
||||
|
||||
import { ZCurrentPasswordSchema, ZPasswordSchema } from '../auth-router/schema';
|
||||
|
||||
export const MAX_PROFILE_BIO_LENGTH = 256;
|
||||
|
||||
export const ZFindUserSecurityAuditLogsSchema = z.object({
|
||||
page: z.number().optional(),
|
||||
perPage: z.number().optional(),
|
||||
});
|
||||
|
||||
export type TFindUserSecurityAuditLogsSchema = z.infer<typeof ZFindUserSecurityAuditLogsSchema>;
|
||||
|
||||
export const ZRetrieveUserByIdQuerySchema = z.object({
|
||||
id: z.number().min(1),
|
||||
});
|
||||
|
||||
export type TRetrieveUserByIdQuerySchema = z.infer<typeof ZRetrieveUserByIdQuerySchema>;
|
||||
|
||||
export const ZUpdateProfileMutationSchema = z.object({
|
||||
name: z.string().min(1),
|
||||
signature: z.string(),
|
||||
});
|
||||
|
||||
export type TUpdateProfileMutationSchema = z.infer<typeof ZUpdateProfileMutationSchema>;
|
||||
|
||||
export const ZUpdatePublicProfileMutationSchema = z.object({
|
||||
bio: z
|
||||
.string()
|
||||
.max(MAX_PROFILE_BIO_LENGTH, {
|
||||
message: `Bio must be shorter than ${MAX_PROFILE_BIO_LENGTH + 1} characters`,
|
||||
})
|
||||
.optional(),
|
||||
enabled: z.boolean().optional(),
|
||||
url: z
|
||||
.string()
|
||||
.trim()
|
||||
.toLowerCase()
|
||||
.min(1, { message: 'Please enter a valid username.' })
|
||||
.regex(/^[a-z0-9-]+$/, {
|
||||
message: 'Username can only container alphanumeric characters and dashes.',
|
||||
})
|
||||
.optional(),
|
||||
});
|
||||
|
||||
export type TUpdatePublicProfileMutationSchema = z.infer<typeof ZUpdatePublicProfileMutationSchema>;
|
||||
|
||||
export const ZUpdatePasswordMutationSchema = z.object({
|
||||
currentPassword: ZCurrentPasswordSchema,
|
||||
password: ZPasswordSchema,
|
||||
});
|
||||
|
||||
export type TUpdatePasswordMutationSchema = z.infer<typeof ZUpdatePasswordMutationSchema>;
|
||||
|
||||
export const ZForgotPasswordFormSchema = z.object({
|
||||
email: z.string().email().min(1),
|
||||
});
|
||||
|
||||
export type TForgotPasswordFormSchema = z.infer<typeof ZForgotPasswordFormSchema>;
|
||||
|
||||
export const ZResetPasswordFormSchema = z.object({
|
||||
password: ZPasswordSchema,
|
||||
token: z.string().min(1),
|
||||
});
|
||||
|
||||
export type TResetPasswordFormSchema = z.infer<typeof ZResetPasswordFormSchema>;
|
||||
|
||||
export const ZConfirmEmailMutationSchema = z.object({
|
||||
email: z.string().email().min(1),
|
||||
});
|
||||
|
||||
export type TConfirmEmailMutationSchema = z.infer<typeof ZConfirmEmailMutationSchema>;
|
||||
|
||||
export const ZSetProfileImageMutationSchema = z.object({
|
||||
bytes: z.string().nullish(),
|
||||
teamId: z.number().min(1).nullish(),
|
||||
});
|
||||
|
||||
export type TSetProfileImageMutationSchema = z.infer<typeof ZSetProfileImageMutationSchema>;
|
||||
@@ -0,0 +1,22 @@
|
||||
import { z } from 'zod';
|
||||
|
||||
import { jobsClient } from '@documenso/lib/jobs/client';
|
||||
|
||||
import { procedure } from '../trpc';
|
||||
|
||||
export const ZSendConfirmationEmailRequestSchema = z.object({
|
||||
email: z.string().email().min(1),
|
||||
});
|
||||
|
||||
export const sendConfirmationEmailRoute = procedure
|
||||
.input(ZSendConfirmationEmailRequestSchema)
|
||||
.mutation(async ({ input }) => {
|
||||
const { email } = input;
|
||||
|
||||
await jobsClient.triggerJob({
|
||||
name: 'send.signup.confirmation.email',
|
||||
payload: {
|
||||
email,
|
||||
},
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,24 @@
|
||||
import { z } from 'zod';
|
||||
|
||||
import { setAvatarImage } from '@documenso/lib/server-only/profile/set-avatar-image';
|
||||
import { extractNextApiRequestMetadata } from '@documenso/lib/universal/extract-request-metadata';
|
||||
|
||||
import { authenticatedProcedure } from '../trpc';
|
||||
|
||||
export const ZSetProfileImageRequestSchema = z.object({
|
||||
bytes: z.string().nullish(),
|
||||
teamId: z.number().min(1).nullish(),
|
||||
});
|
||||
|
||||
export const setProfileImageRoute = authenticatedProcedure
|
||||
.input(ZSetProfileImageRequestSchema)
|
||||
.mutation(async ({ input, ctx }) => {
|
||||
const { bytes, teamId } = input;
|
||||
|
||||
return await setAvatarImage({
|
||||
userId: ctx.user.id,
|
||||
teamId,
|
||||
bytes,
|
||||
requestMetadata: extractNextApiRequestMetadata(ctx.req),
|
||||
});
|
||||
});
|
||||
25
packages/trpc/server/profile-router/update-password-route.ts
Normal file
25
packages/trpc/server/profile-router/update-password-route.ts
Normal file
@@ -0,0 +1,25 @@
|
||||
import { z } from 'zod';
|
||||
|
||||
import { updatePassword } from '@documenso/lib/server-only/user/update-password';
|
||||
import { extractNextApiRequestMetadata } from '@documenso/lib/universal/extract-request-metadata';
|
||||
|
||||
import { ZCurrentPasswordSchema, ZPasswordSchema } from '../auth-router/schema';
|
||||
import { authenticatedProcedure } from '../trpc';
|
||||
|
||||
export const ZUpdatePasswordRequestSchema = z.object({
|
||||
currentPassword: ZCurrentPasswordSchema,
|
||||
password: ZPasswordSchema,
|
||||
});
|
||||
|
||||
export const updatePasswordRoute = authenticatedProcedure
|
||||
.input(ZUpdatePasswordRequestSchema)
|
||||
.mutation(async ({ input, ctx }) => {
|
||||
const { password, currentPassword } = input;
|
||||
|
||||
return await updatePassword({
|
||||
userId: ctx.user.id,
|
||||
password,
|
||||
currentPassword,
|
||||
requestMetadata: extractNextApiRequestMetadata(ctx.req),
|
||||
});
|
||||
});
|
||||
24
packages/trpc/server/profile-router/update-profile-route.ts
Normal file
24
packages/trpc/server/profile-router/update-profile-route.ts
Normal file
@@ -0,0 +1,24 @@
|
||||
import { z } from 'zod';
|
||||
|
||||
import { updateProfile } from '@documenso/lib/server-only/user/update-profile';
|
||||
import { extractNextApiRequestMetadata } from '@documenso/lib/universal/extract-request-metadata';
|
||||
|
||||
import { authenticatedProcedure } from '../trpc';
|
||||
|
||||
export const ZUpdateProfileRequestSchema = z.object({
|
||||
name: z.string().min(1),
|
||||
signature: z.string(),
|
||||
});
|
||||
|
||||
export const updateProfileRoute = authenticatedProcedure
|
||||
.input(ZUpdateProfileRequestSchema)
|
||||
.mutation(async ({ input, ctx }) => {
|
||||
const { name, signature } = input;
|
||||
|
||||
return await updateProfile({
|
||||
userId: ctx.user.id,
|
||||
name,
|
||||
signature,
|
||||
requestMetadata: extractNextApiRequestMetadata(ctx.req),
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,60 @@
|
||||
import { z } from 'zod';
|
||||
|
||||
import { IS_BILLING_ENABLED } from '@documenso/lib/constants/app';
|
||||
import { AppError, AppErrorCode } from '@documenso/lib/errors/app-error';
|
||||
import { getSubscriptionsByUserId } from '@documenso/lib/server-only/subscription/get-subscriptions-by-user-id';
|
||||
import { updatePublicProfile } from '@documenso/lib/server-only/user/update-public-profile';
|
||||
import { SubscriptionStatus } from '@documenso/prisma/client';
|
||||
|
||||
import { authenticatedProcedure } from '../trpc';
|
||||
|
||||
export const MAX_PROFILE_BIO_LENGTH = 256;
|
||||
|
||||
export const ZUpdatePublicProfileRequestSchema = z.object({
|
||||
bio: z
|
||||
.string()
|
||||
.max(MAX_PROFILE_BIO_LENGTH, {
|
||||
message: `Bio must be shorter than ${MAX_PROFILE_BIO_LENGTH + 1} characters`,
|
||||
})
|
||||
.optional(),
|
||||
enabled: z.boolean().optional(),
|
||||
url: z
|
||||
.string()
|
||||
.trim()
|
||||
.toLowerCase()
|
||||
.min(1, { message: 'Please enter a valid username.' })
|
||||
.regex(/^[a-z0-9-]+$/, {
|
||||
message: 'Username can only container alphanumeric characters and dashes.',
|
||||
})
|
||||
.optional(),
|
||||
});
|
||||
export const updatePublicProfileRoute = authenticatedProcedure
|
||||
.input(ZUpdatePublicProfileRequestSchema)
|
||||
.mutation(async ({ input, ctx }) => {
|
||||
const { url, bio, enabled } = input;
|
||||
|
||||
if (IS_BILLING_ENABLED() && url !== undefined && url.length < 6) {
|
||||
const subscriptions = await getSubscriptionsByUserId({
|
||||
userId: ctx.user.id,
|
||||
}).then((subscriptions) =>
|
||||
subscriptions.filter((s) => s.status === SubscriptionStatus.ACTIVE),
|
||||
);
|
||||
|
||||
if (subscriptions.length === 0) {
|
||||
throw new AppError(AppErrorCode.PREMIUM_PROFILE_URL, {
|
||||
message: 'Only subscribers can have a username shorter than 6 characters',
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
const user = await updatePublicProfile({
|
||||
userId: ctx.user.id,
|
||||
data: {
|
||||
url,
|
||||
bio,
|
||||
enabled,
|
||||
},
|
||||
});
|
||||
|
||||
return { success: true, url: user.url };
|
||||
});
|
||||
@@ -0,0 +1,27 @@
|
||||
import { z } from 'zod';
|
||||
|
||||
import { completeDocumentWithToken } from '@documenso/lib/server-only/document/complete-document-with-token';
|
||||
import { ZRecipientActionAuthSchema } from '@documenso/lib/types/document-auth';
|
||||
import { extractNextApiRequestMetadata } from '@documenso/lib/universal/extract-request-metadata';
|
||||
|
||||
import { procedure } from '../trpc';
|
||||
|
||||
export const ZCompleteDocumentWithTokenRequestSchema = z.object({
|
||||
token: z.string(),
|
||||
documentId: z.number(),
|
||||
authOptions: ZRecipientActionAuthSchema.optional(),
|
||||
});
|
||||
|
||||
export const completeDocumentWithTokenRoute = procedure
|
||||
.input(ZCompleteDocumentWithTokenRequestSchema)
|
||||
.mutation(async ({ input, ctx }) => {
|
||||
const { token, documentId, authOptions } = input;
|
||||
|
||||
return await completeDocumentWithToken({
|
||||
token,
|
||||
documentId,
|
||||
authOptions,
|
||||
userId: ctx.user?.id,
|
||||
requestMetadata: extractNextApiRequestMetadata(ctx.req),
|
||||
});
|
||||
});
|
||||
38
packages/trpc/server/recipient-router/get-recipient-route.ts
Normal file
38
packages/trpc/server/recipient-router/get-recipient-route.ts
Normal file
@@ -0,0 +1,38 @@
|
||||
import { z } from 'zod';
|
||||
|
||||
import { getRecipientById } from '@documenso/lib/server-only/recipient/get-recipient-by-id';
|
||||
import { FieldSchema, RecipientSchema } from '@documenso/prisma/generated/zod';
|
||||
|
||||
import { authenticatedProcedure } from '../trpc';
|
||||
|
||||
export const ZGetRecipientRequestSchema = z.object({
|
||||
recipientId: z.number(),
|
||||
teamId: z.number().optional(),
|
||||
});
|
||||
|
||||
export const ZGetRecipientResponseSchema = RecipientSchema.extend({
|
||||
Field: FieldSchema.array(),
|
||||
});
|
||||
|
||||
export const getRecipientRoute = authenticatedProcedure
|
||||
.meta({
|
||||
openapi: {
|
||||
method: 'GET',
|
||||
path: '/recipient/{recipientId}',
|
||||
summary: 'Get recipient',
|
||||
description:
|
||||
'Returns a single recipient. If you want to retrieve all the recipients for a document or template, use the "Get Document" or "Get Template" request.',
|
||||
tags: ['Recipients'],
|
||||
},
|
||||
})
|
||||
.input(ZGetRecipientRequestSchema)
|
||||
.output(ZGetRecipientResponseSchema)
|
||||
.query(async ({ input, ctx }) => {
|
||||
const { recipientId, teamId } = input;
|
||||
|
||||
return await getRecipientById({
|
||||
userId: ctx.user.id,
|
||||
teamId,
|
||||
recipientId,
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,27 @@
|
||||
import { z } from 'zod';
|
||||
|
||||
import { rejectDocumentWithToken } from '@documenso/lib/server-only/document/reject-document-with-token';
|
||||
import { ZRecipientActionAuthSchema } from '@documenso/lib/types/document-auth';
|
||||
import { extractNextApiRequestMetadata } from '@documenso/lib/universal/extract-request-metadata';
|
||||
|
||||
import { procedure } from '../trpc';
|
||||
|
||||
export const ZRejectDocumentWithTokenMutationSchema = z.object({
|
||||
token: z.string(),
|
||||
documentId: z.number(),
|
||||
reason: z.string(),
|
||||
authOptions: ZRecipientActionAuthSchema.optional(),
|
||||
});
|
||||
|
||||
export const rejectDocumentWithTokenRoute = procedure
|
||||
.input(ZRejectDocumentWithTokenMutationSchema)
|
||||
.mutation(async ({ input, ctx }) => {
|
||||
const { token, documentId, reason } = input;
|
||||
|
||||
return await rejectDocumentWithToken({
|
||||
token,
|
||||
documentId,
|
||||
reason,
|
||||
requestMetadata: extractNextApiRequestMetadata(ctx.req),
|
||||
});
|
||||
});
|
||||
@@ -1,119 +1,21 @@
|
||||
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 {
|
||||
ZSetRecipientsForDocumentResponseSchema,
|
||||
setRecipientsForDocument,
|
||||
} from '@documenso/lib/server-only/recipient/set-recipients-for-document';
|
||||
import {
|
||||
ZSetRecipientsForTemplateResponseSchema,
|
||||
setRecipientsForTemplate,
|
||||
} from '@documenso/lib/server-only/recipient/set-recipients-for-template';
|
||||
import { extractNextApiRequestMetadata } from '@documenso/lib/universal/extract-request-metadata';
|
||||
|
||||
import { authenticatedProcedure, procedure, router } from '../trpc';
|
||||
import {
|
||||
ZAddSignersMutationSchema,
|
||||
ZAddTemplateSignersMutationSchema,
|
||||
ZCompleteDocumentWithTokenMutationSchema,
|
||||
ZRejectDocumentWithTokenMutationSchema,
|
||||
} from './schema';
|
||||
import { router } from '../trpc';
|
||||
import { completeDocumentWithTokenRoute } from './complete-document-with-token-route';
|
||||
import { getRecipientRoute } from './get-recipient-route';
|
||||
import { rejectDocumentWithTokenRoute } from './reject-document-with-token-route';
|
||||
import { setDocumentRecipientsRoute } from './set-document-recipients-route';
|
||||
import { setTemplateRecipientsRoute } from './set-template-recipients-route';
|
||||
|
||||
export const recipientRouter = router({
|
||||
/**
|
||||
* @internal
|
||||
* Public endpoints.
|
||||
*/
|
||||
addSigners: authenticatedProcedure
|
||||
.meta({
|
||||
openapi: {
|
||||
method: 'POST',
|
||||
path: '/document/{documentId}/recipient/set',
|
||||
summary: 'Set document recipients',
|
||||
tags: ['Recipients'],
|
||||
},
|
||||
})
|
||||
.input(ZAddSignersMutationSchema)
|
||||
.output(ZSetRecipientsForDocumentResponseSchema)
|
||||
.mutation(async ({ input, ctx }) => {
|
||||
const { documentId, teamId, signers } = input;
|
||||
|
||||
return await setRecipientsForDocument({
|
||||
userId: ctx.user.id,
|
||||
documentId,
|
||||
teamId,
|
||||
recipients: signers.map((signer) => ({
|
||||
id: signer.nativeId,
|
||||
email: signer.email,
|
||||
name: signer.name,
|
||||
role: signer.role,
|
||||
signingOrder: signer.signingOrder,
|
||||
actionAuth: signer.actionAuth,
|
||||
})),
|
||||
requestMetadata: extractNextApiRequestMetadata(ctx.req),
|
||||
});
|
||||
}),
|
||||
getRecipient: getRecipientRoute,
|
||||
setDocumentRecipients: setDocumentRecipientsRoute,
|
||||
setTemplateRecipients: setTemplateRecipientsRoute,
|
||||
|
||||
/**
|
||||
* @internal
|
||||
* Private endpoints.
|
||||
*/
|
||||
addTemplateSigners: authenticatedProcedure
|
||||
.meta({
|
||||
openapi: {
|
||||
method: 'POST',
|
||||
path: '/template/{templateId}/recipient/set',
|
||||
summary: 'Set template recipients',
|
||||
tags: ['Recipients'],
|
||||
},
|
||||
})
|
||||
.input(ZAddTemplateSignersMutationSchema)
|
||||
.output(ZSetRecipientsForTemplateResponseSchema)
|
||||
.mutation(async ({ input, ctx }) => {
|
||||
const { templateId, signers, teamId } = input;
|
||||
|
||||
return await setRecipientsForTemplate({
|
||||
userId: ctx.user.id,
|
||||
teamId,
|
||||
templateId,
|
||||
recipients: signers.map((signer) => ({
|
||||
id: signer.nativeId,
|
||||
email: signer.email,
|
||||
name: signer.name,
|
||||
role: signer.role,
|
||||
signingOrder: signer.signingOrder,
|
||||
actionAuth: signer.actionAuth,
|
||||
})),
|
||||
});
|
||||
}),
|
||||
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
completeDocumentWithToken: procedure
|
||||
.input(ZCompleteDocumentWithTokenMutationSchema)
|
||||
.mutation(async ({ input, ctx }) => {
|
||||
const { token, documentId, authOptions } = input;
|
||||
|
||||
return await completeDocumentWithToken({
|
||||
token,
|
||||
documentId,
|
||||
authOptions,
|
||||
userId: ctx.user?.id,
|
||||
requestMetadata: extractNextApiRequestMetadata(ctx.req),
|
||||
});
|
||||
}),
|
||||
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
rejectDocumentWithToken: procedure
|
||||
.input(ZRejectDocumentWithTokenMutationSchema)
|
||||
.mutation(async ({ input, ctx }) => {
|
||||
const { token, documentId, reason } = input;
|
||||
|
||||
return await rejectDocumentWithToken({
|
||||
token,
|
||||
documentId,
|
||||
reason,
|
||||
requestMetadata: extractNextApiRequestMetadata(ctx.req),
|
||||
});
|
||||
}),
|
||||
completeDocumentWithToken: completeDocumentWithTokenRoute,
|
||||
rejectDocumentWithToken: rejectDocumentWithTokenRoute,
|
||||
});
|
||||
|
||||
@@ -1,82 +0,0 @@
|
||||
import { z } from 'zod';
|
||||
|
||||
import {
|
||||
ZRecipientActionAuthSchema,
|
||||
ZRecipientActionAuthTypesSchema,
|
||||
} from '@documenso/lib/types/document-auth';
|
||||
import { RecipientRole } from '@documenso/prisma/client';
|
||||
|
||||
export const ZAddSignersMutationSchema = z
|
||||
.object({
|
||||
documentId: z.number(),
|
||||
teamId: z.number().optional(),
|
||||
signers: z.array(
|
||||
z.object({
|
||||
nativeId: z.number().optional(),
|
||||
email: z.string().email().min(1),
|
||||
name: z.string(),
|
||||
role: z.nativeEnum(RecipientRole),
|
||||
signingOrder: z.number().optional(),
|
||||
actionAuth: ZRecipientActionAuthTypesSchema.optional().nullable(),
|
||||
}),
|
||||
),
|
||||
})
|
||||
.refine(
|
||||
(schema) => {
|
||||
const emails = schema.signers.map((signer) => signer.email.toLowerCase());
|
||||
|
||||
return new Set(emails).size === emails.length;
|
||||
},
|
||||
// Dirty hack to handle errors when .root is populated for an array type
|
||||
{ message: 'Signers must have unique emails', path: ['signers__root'] },
|
||||
);
|
||||
|
||||
export type TAddSignersMutationSchema = z.infer<typeof ZAddSignersMutationSchema>;
|
||||
|
||||
export const ZAddTemplateSignersMutationSchema = z
|
||||
.object({
|
||||
teamId: z.number().optional(),
|
||||
templateId: z.number(),
|
||||
signers: z.array(
|
||||
z.object({
|
||||
nativeId: z.number().optional(),
|
||||
email: z.string().email().min(1),
|
||||
name: z.string(),
|
||||
role: z.nativeEnum(RecipientRole),
|
||||
signingOrder: z.number().optional(),
|
||||
actionAuth: ZRecipientActionAuthTypesSchema.optional().nullable(),
|
||||
}),
|
||||
),
|
||||
})
|
||||
.refine(
|
||||
(schema) => {
|
||||
const emails = schema.signers.map((signer) => signer.email.toLowerCase());
|
||||
|
||||
return new Set(emails).size === emails.length;
|
||||
},
|
||||
// Dirty hack to handle errors when .root is populated for an array type
|
||||
{ message: 'Signers must have unique emails', path: ['signers__root'] },
|
||||
);
|
||||
|
||||
export type TAddTemplateSignersMutationSchema = z.infer<typeof ZAddTemplateSignersMutationSchema>;
|
||||
|
||||
export const ZCompleteDocumentWithTokenMutationSchema = z.object({
|
||||
token: z.string(),
|
||||
documentId: z.number(),
|
||||
authOptions: ZRecipientActionAuthSchema.optional(),
|
||||
});
|
||||
|
||||
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
|
||||
>;
|
||||
@@ -0,0 +1,70 @@
|
||||
import { z } from 'zod';
|
||||
|
||||
import { setRecipientsForDocument } from '@documenso/lib/server-only/recipient/set-recipients-for-document';
|
||||
import { ZRecipientActionAuthTypesSchema } from '@documenso/lib/types/document-auth';
|
||||
import { extractNextApiRequestMetadata } from '@documenso/lib/universal/extract-request-metadata';
|
||||
import { RecipientRole } from '@documenso/prisma/client';
|
||||
import { RecipientSchema } from '@documenso/prisma/generated/zod';
|
||||
|
||||
import { authenticatedProcedure } from '../trpc';
|
||||
|
||||
export const ZSetDocumentRecipientsRequestSchema = z
|
||||
.object({
|
||||
documentId: z.number(),
|
||||
teamId: z.number().optional(),
|
||||
signers: z.array(
|
||||
z.object({
|
||||
nativeId: z.number().optional(),
|
||||
email: z.string().email().min(1),
|
||||
name: z.string(),
|
||||
role: z.nativeEnum(RecipientRole),
|
||||
signingOrder: z.number().optional(),
|
||||
actionAuth: ZRecipientActionAuthTypesSchema.optional().nullable(),
|
||||
}),
|
||||
),
|
||||
})
|
||||
.refine(
|
||||
(schema) => {
|
||||
const emails = schema.signers.map((signer) => signer.email.toLowerCase());
|
||||
|
||||
return new Set(emails).size === emails.length;
|
||||
},
|
||||
// Dirty hack to handle errors when .root is populated for an array type
|
||||
{ message: 'Signers must have unique emails', path: ['signers__root'] },
|
||||
);
|
||||
|
||||
export const ZSetDocumentRecipientsResponseSchema = z.object({
|
||||
recipients: RecipientSchema.array(),
|
||||
});
|
||||
|
||||
export const setDocumentRecipientsRoute = authenticatedProcedure
|
||||
.meta({
|
||||
openapi: {
|
||||
method: 'POST',
|
||||
path: '/document/{documentId}/recipient/set',
|
||||
summary: 'Set document recipients',
|
||||
description:
|
||||
'Replace the document recipients with the provided list of recipients. Recipients with the same ID will be updated and retain their fields. Recipients missing from the original document will be removed.',
|
||||
tags: ['Recipients'],
|
||||
},
|
||||
})
|
||||
.input(ZSetDocumentRecipientsRequestSchema)
|
||||
.output(ZSetDocumentRecipientsResponseSchema)
|
||||
.mutation(async ({ input, ctx }) => {
|
||||
const { documentId, teamId, signers } = input;
|
||||
|
||||
return await setRecipientsForDocument({
|
||||
userId: ctx.user.id,
|
||||
documentId,
|
||||
teamId,
|
||||
recipients: signers.map((signer) => ({
|
||||
id: signer.nativeId,
|
||||
email: signer.email,
|
||||
name: signer.name,
|
||||
role: signer.role,
|
||||
signingOrder: signer.signingOrder,
|
||||
actionAuth: signer.actionAuth,
|
||||
})),
|
||||
requestMetadata: extractNextApiRequestMetadata(ctx.req),
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,68 @@
|
||||
import { z } from 'zod';
|
||||
|
||||
import { setRecipientsForTemplate } from '@documenso/lib/server-only/recipient/set-recipients-for-template';
|
||||
import { ZRecipientActionAuthTypesSchema } from '@documenso/lib/types/document-auth';
|
||||
import { RecipientRole } from '@documenso/prisma/client';
|
||||
import { RecipientSchema } from '@documenso/prisma/generated/zod';
|
||||
|
||||
import { authenticatedProcedure } from '../trpc';
|
||||
|
||||
export const ZSetTemplateRecipientRequestSchema = z
|
||||
.object({
|
||||
teamId: z.number().optional(),
|
||||
templateId: z.number(),
|
||||
signers: z.array(
|
||||
z.object({
|
||||
nativeId: z.number().optional(),
|
||||
email: z.string().email().min(1),
|
||||
name: z.string(),
|
||||
role: z.nativeEnum(RecipientRole),
|
||||
signingOrder: z.number().optional(),
|
||||
actionAuth: ZRecipientActionAuthTypesSchema.optional().nullable(),
|
||||
}),
|
||||
),
|
||||
})
|
||||
.refine(
|
||||
(schema) => {
|
||||
const emails = schema.signers.map((signer) => signer.email.toLowerCase());
|
||||
|
||||
return new Set(emails).size === emails.length;
|
||||
},
|
||||
// Dirty hack to handle errors when .root is populated for an array type
|
||||
{ message: 'Signers must have unique emails', path: ['signers__root'] },
|
||||
);
|
||||
|
||||
export const ZSetTemplateRecipientsResponseSchema = z.object({
|
||||
recipients: RecipientSchema.array(),
|
||||
});
|
||||
|
||||
export const setTemplateRecipientsRoute = authenticatedProcedure
|
||||
.meta({
|
||||
openapi: {
|
||||
method: 'POST',
|
||||
path: '/template/{templateId}/recipient/set',
|
||||
summary: 'Set template recipients',
|
||||
description:
|
||||
'Replace the template recipients with the provided list of recipients. Recipients with the same ID will be updated and retain their fields. Recipients missing from the original template will be removed.',
|
||||
tags: ['Recipients'],
|
||||
},
|
||||
})
|
||||
.input(ZSetTemplateRecipientRequestSchema)
|
||||
.output(ZSetTemplateRecipientsResponseSchema)
|
||||
.mutation(async ({ input, ctx }) => {
|
||||
const { templateId, signers, teamId } = input;
|
||||
|
||||
return await setRecipientsForTemplate({
|
||||
userId: ctx.user.id,
|
||||
teamId,
|
||||
templateId,
|
||||
recipients: signers.map((signer) => ({
|
||||
id: signer.nativeId,
|
||||
email: signer.email,
|
||||
name: signer.name,
|
||||
role: signer.role,
|
||||
signingOrder: signer.signingOrder,
|
||||
actionAuth: signer.actionAuth,
|
||||
})),
|
||||
});
|
||||
});
|
||||
@@ -5,8 +5,6 @@ import { documentRouter } from './document-router/router';
|
||||
import { fieldRouter } from './field-router/router';
|
||||
import { profileRouter } from './profile-router/router';
|
||||
import { recipientRouter } from './recipient-router/router';
|
||||
import { shareLinkRouter } from './share-link-router/router';
|
||||
import { singleplayerRouter } from './singleplayer-router/router';
|
||||
import { teamRouter } from './team-router/router';
|
||||
import { templateRouter } from './template-router/router';
|
||||
import { router } from './trpc';
|
||||
@@ -20,9 +18,7 @@ export const appRouter = router({
|
||||
field: fieldRouter,
|
||||
recipient: recipientRouter,
|
||||
admin: adminRouter,
|
||||
shareLink: shareLinkRouter,
|
||||
apiToken: apiTokenRouter,
|
||||
singleplayer: singleplayerRouter,
|
||||
team: teamRouter,
|
||||
template: templateRouter,
|
||||
webhook: webhookRouter,
|
||||
|
||||
@@ -1,24 +0,0 @@
|
||||
import { createOrGetShareLink } from '@documenso/lib/server-only/share/create-or-get-share-link';
|
||||
|
||||
import { procedure, router } from '../trpc';
|
||||
import { ZCreateOrGetShareLinkMutationSchema } from './schema';
|
||||
|
||||
export const shareLinkRouter = router({
|
||||
createOrGetShareLink: procedure
|
||||
.input(ZCreateOrGetShareLinkMutationSchema)
|
||||
.mutation(async ({ ctx, input }) => {
|
||||
const { documentId, token } = input;
|
||||
|
||||
if (token) {
|
||||
return await createOrGetShareLink({ documentId, token });
|
||||
}
|
||||
|
||||
if (!ctx.user?.id) {
|
||||
throw new Error(
|
||||
'You must either provide a token or be logged in to create a sharing link.',
|
||||
);
|
||||
}
|
||||
|
||||
return await createOrGetShareLink({ documentId, userId: ctx.user.id });
|
||||
}),
|
||||
});
|
||||
@@ -1,10 +0,0 @@
|
||||
import { z } from 'zod';
|
||||
|
||||
export const ZCreateOrGetShareLinkMutationSchema = z.object({
|
||||
documentId: z.number(),
|
||||
token: z.string().optional(),
|
||||
});
|
||||
|
||||
export type TCreateOrGetShareLinkMutationSchema = z.infer<
|
||||
typeof ZCreateOrGetShareLinkMutationSchema
|
||||
>;
|
||||
@@ -1,42 +0,0 @@
|
||||
import { DateTime } from 'luxon';
|
||||
import { match } from 'ts-pattern';
|
||||
|
||||
import { FieldType, Prisma } from '@documenso/prisma/client';
|
||||
|
||||
import type { TCreateSinglePlayerDocumentMutationSchema } from './schema';
|
||||
|
||||
/**
|
||||
* Map the fields provided by the user to fields compatible with Prisma.
|
||||
*
|
||||
* Signature fields are handled separately.
|
||||
*
|
||||
* @param field The field passed in by the user.
|
||||
* @param signer The details of the person who is signing this document.
|
||||
* @returns A field compatible with Prisma.
|
||||
*/
|
||||
export const mapField = (
|
||||
field: TCreateSinglePlayerDocumentMutationSchema['fields'][number],
|
||||
signer: TCreateSinglePlayerDocumentMutationSchema['signer'],
|
||||
) => {
|
||||
const customText = match(field.type)
|
||||
.with(FieldType.DATE, () => DateTime.now().toFormat('yyyy-MM-dd hh:mm a'))
|
||||
.with(FieldType.EMAIL, () => signer.email)
|
||||
.with(FieldType.NAME, () => signer.name)
|
||||
.with(FieldType.TEXT, () => signer.customText)
|
||||
.with(FieldType.NUMBER, () => signer.customText)
|
||||
.with(FieldType.RADIO, () => signer.customText)
|
||||
.with(FieldType.CHECKBOX, () => signer.customText)
|
||||
.with(FieldType.DROPDOWN, () => signer.customText)
|
||||
.otherwise(() => '');
|
||||
|
||||
return {
|
||||
type: field.type,
|
||||
page: field.page,
|
||||
positionX: new Prisma.Decimal(field.positionX),
|
||||
positionY: new Prisma.Decimal(field.positionY),
|
||||
width: new Prisma.Decimal(field.width),
|
||||
height: new Prisma.Decimal(field.height),
|
||||
customText,
|
||||
inserted: true,
|
||||
};
|
||||
};
|
||||
@@ -1,182 +0,0 @@
|
||||
import { createElement } from 'react';
|
||||
|
||||
import { PDFDocument } from 'pdf-lib';
|
||||
|
||||
import { mailer } from '@documenso/email/mailer';
|
||||
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';
|
||||
import { insertFieldInPDF } from '@documenso/lib/server-only/pdf/insert-field-in-pdf';
|
||||
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,
|
||||
DocumentStatus,
|
||||
FieldType,
|
||||
ReadStatus,
|
||||
SendStatus,
|
||||
SigningStatus,
|
||||
} from '@documenso/prisma/client';
|
||||
import { signPdf } from '@documenso/signing';
|
||||
|
||||
import { procedure, router } from '../trpc';
|
||||
import { mapField } from './helper';
|
||||
import { ZCreateSinglePlayerDocumentMutationSchema } from './schema';
|
||||
|
||||
export const singleplayerRouter = router({
|
||||
createSinglePlayerDocument: procedure
|
||||
.input(ZCreateSinglePlayerDocumentMutationSchema)
|
||||
.mutation(async ({ input }) => {
|
||||
const { signer, fields, documentData, documentName, fieldMeta } = input;
|
||||
|
||||
const document = await getFile({
|
||||
data: documentData.data,
|
||||
type: documentData.type,
|
||||
});
|
||||
|
||||
const doc = await PDFDocument.load(document);
|
||||
|
||||
const createdAt = new Date();
|
||||
|
||||
const isBase64 = signer.signature.startsWith('data:image/png;base64,');
|
||||
const signatureImageAsBase64 = isBase64 ? signer.signature : null;
|
||||
const typedSignature = !isBase64 ? signer.signature : null;
|
||||
|
||||
// Update the document with the fields inserted.
|
||||
for (const field of fields) {
|
||||
const isSignatureField = field.type === FieldType.SIGNATURE;
|
||||
|
||||
await insertFieldInPDF(doc, {
|
||||
...mapField(field, signer),
|
||||
Signature: isSignatureField
|
||||
? {
|
||||
created: createdAt,
|
||||
signatureImageAsBase64,
|
||||
typedSignature,
|
||||
// Dummy data.
|
||||
id: -1,
|
||||
recipientId: -1,
|
||||
fieldId: -1,
|
||||
}
|
||||
: null,
|
||||
// Dummy data.
|
||||
id: -1,
|
||||
secondaryId: '-1',
|
||||
documentId: -1,
|
||||
templateId: null,
|
||||
recipientId: -1,
|
||||
fieldMeta: fieldMeta || null,
|
||||
});
|
||||
}
|
||||
|
||||
const unsignedPdfBytes = await doc.save();
|
||||
|
||||
const signedPdfBuffer = await signPdf({ pdf: Buffer.from(unsignedPdfBytes) });
|
||||
|
||||
const { token } = await prisma.$transaction(
|
||||
async (tx) => {
|
||||
const token = alphaid();
|
||||
|
||||
// Fetch service user who will be the owner of the document.
|
||||
const serviceUser = await tx.user.findFirstOrThrow({
|
||||
where: {
|
||||
email: SERVICE_USER_EMAIL,
|
||||
},
|
||||
});
|
||||
|
||||
const { id: documentDataId } = await putPdfFile({
|
||||
name: `${documentName}.pdf`,
|
||||
type: 'application/pdf',
|
||||
arrayBuffer: async () => Promise.resolve(signedPdfBuffer),
|
||||
});
|
||||
|
||||
// Create document.
|
||||
const document = await tx.document.create({
|
||||
data: {
|
||||
source: DocumentSource.DOCUMENT,
|
||||
title: documentName,
|
||||
status: DocumentStatus.COMPLETED,
|
||||
documentDataId,
|
||||
userId: serviceUser.id,
|
||||
createdAt,
|
||||
},
|
||||
});
|
||||
|
||||
// Create recipient.
|
||||
const recipient = await tx.recipient.create({
|
||||
data: {
|
||||
documentId: document.id,
|
||||
name: signer.name,
|
||||
email: signer.email,
|
||||
token,
|
||||
signedAt: createdAt,
|
||||
readStatus: ReadStatus.OPENED,
|
||||
signingStatus: SigningStatus.SIGNED,
|
||||
sendStatus: SendStatus.SENT,
|
||||
},
|
||||
});
|
||||
|
||||
// Create fields and signatures.
|
||||
await Promise.all(
|
||||
fields.map(async (field) => {
|
||||
const insertedField = await tx.field.create({
|
||||
data: {
|
||||
documentId: document.id,
|
||||
recipientId: recipient.id,
|
||||
...mapField(field, signer),
|
||||
},
|
||||
});
|
||||
|
||||
if (field.type === FieldType.SIGNATURE || field.type === FieldType.FREE_SIGNATURE) {
|
||||
await tx.signature.create({
|
||||
data: {
|
||||
fieldId: insertedField.id,
|
||||
signatureImageAsBase64,
|
||||
typedSignature,
|
||||
recipientId: recipient.id,
|
||||
},
|
||||
});
|
||||
}
|
||||
}),
|
||||
);
|
||||
|
||||
return { document, token };
|
||||
},
|
||||
{
|
||||
maxWait: 5000,
|
||||
timeout: 30000,
|
||||
},
|
||||
);
|
||||
|
||||
const template = createElement(DocumentSelfSignedEmailTemplate, {
|
||||
documentName: documentName,
|
||||
assetBaseUrl: NEXT_PUBLIC_WEBAPP_URL() || 'http://localhost:3000',
|
||||
});
|
||||
|
||||
const [html, text] = await Promise.all([
|
||||
renderEmailWithI18N(template),
|
||||
renderEmailWithI18N(template, { plainText: true }),
|
||||
]);
|
||||
|
||||
// Send email to signer.
|
||||
await mailer.sendMail({
|
||||
to: {
|
||||
address: signer.email,
|
||||
name: signer.name,
|
||||
},
|
||||
from: {
|
||||
name: FROM_NAME,
|
||||
address: FROM_ADDRESS,
|
||||
},
|
||||
subject: 'Document signed',
|
||||
html,
|
||||
text,
|
||||
attachments: [{ content: signedPdfBuffer, filename: documentName }],
|
||||
});
|
||||
|
||||
return token;
|
||||
}),
|
||||
});
|
||||
@@ -1,33 +0,0 @@
|
||||
import { z } from 'zod';
|
||||
|
||||
import { ZFieldMetaSchema } from '@documenso/lib/types/field-meta';
|
||||
import { DocumentDataType, FieldType } from '@documenso/prisma/client';
|
||||
|
||||
export const ZCreateSinglePlayerDocumentMutationSchema = z.object({
|
||||
documentData: z.object({
|
||||
data: z.string(),
|
||||
type: z.nativeEnum(DocumentDataType),
|
||||
}),
|
||||
documentName: z.string(),
|
||||
signer: z.object({
|
||||
email: z.string().email().min(1),
|
||||
name: z.string(),
|
||||
signature: z.string(),
|
||||
customText: z.string(),
|
||||
}),
|
||||
fields: z.array(
|
||||
z.object({
|
||||
page: z.number(),
|
||||
type: z.nativeEnum(FieldType),
|
||||
positionX: z.number(),
|
||||
positionY: z.number(),
|
||||
width: z.number(),
|
||||
height: z.number(),
|
||||
}),
|
||||
),
|
||||
fieldMeta: ZFieldMetaSchema,
|
||||
});
|
||||
|
||||
export type TCreateSinglePlayerDocumentMutationSchema = z.infer<
|
||||
typeof ZCreateSinglePlayerDocumentMutationSchema
|
||||
>;
|
||||
@@ -0,0 +1,18 @@
|
||||
import { z } from 'zod';
|
||||
|
||||
import { acceptTeamInvitation } from '@documenso/lib/server-only/team/accept-team-invitation';
|
||||
|
||||
import { authenticatedProcedure } from '../trpc';
|
||||
|
||||
export const ZAcceptTeamInvitationRequestSchema = z.object({
|
||||
teamId: z.number(),
|
||||
});
|
||||
|
||||
export const acceptTeamInvitationRoute = authenticatedProcedure
|
||||
.input(ZAcceptTeamInvitationRequestSchema)
|
||||
.mutation(async ({ input, ctx }) => {
|
||||
return await acceptTeamInvitation({
|
||||
teamId: input.teamId,
|
||||
userId: ctx.user.id,
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,18 @@
|
||||
import { z } from 'zod';
|
||||
|
||||
import { createTeamBillingPortal } from '@documenso/lib/server-only/team/create-team-billing-portal';
|
||||
|
||||
import { authenticatedProcedure } from '../trpc';
|
||||
|
||||
export const ZCreateBillingPortalRequestSchema = z.object({
|
||||
teamId: z.number(),
|
||||
});
|
||||
|
||||
export const createBillingPortalRoute = authenticatedProcedure
|
||||
.input(ZCreateBillingPortalRequestSchema)
|
||||
.mutation(async ({ input, ctx }) => {
|
||||
return await createTeamBillingPortal({
|
||||
userId: ctx.user.id,
|
||||
...input,
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,33 @@
|
||||
import { z } from 'zod';
|
||||
|
||||
import { createTeamEmailVerification } from '@documenso/lib/server-only/team/create-team-email-verification';
|
||||
|
||||
import { authenticatedProcedure } from '../trpc';
|
||||
|
||||
export const ZCreateTeamEmailVerificationRequestSchema = z.object({
|
||||
teamId: z.number(),
|
||||
name: z.string().trim().min(1, { message: 'Please enter a valid name.' }),
|
||||
email: z.string().trim().email().toLowerCase().min(1, 'Please enter a valid email.'),
|
||||
});
|
||||
|
||||
export const createTeamEmailVerificationRoute = authenticatedProcedure
|
||||
// .meta({
|
||||
// openapi: {
|
||||
// method: 'POST',
|
||||
// path: '/team/{teamId}/email/create',
|
||||
// summary: 'Create team email',
|
||||
// description: 'Add an email to a team and send an email request to verify it',
|
||||
// tags: ['Teams'],
|
||||
// },
|
||||
// })
|
||||
.input(ZCreateTeamEmailVerificationRequestSchema)
|
||||
.mutation(async ({ input, ctx }) => {
|
||||
return await createTeamEmailVerification({
|
||||
teamId: input.teamId,
|
||||
userId: ctx.user.id,
|
||||
data: {
|
||||
email: input.email,
|
||||
name: input.name,
|
||||
},
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,36 @@
|
||||
import { z } from 'zod';
|
||||
|
||||
import { createTeamMemberInvites } from '@documenso/lib/server-only/team/create-team-member-invites';
|
||||
import { TeamMemberRole } from '@documenso/prisma/client';
|
||||
|
||||
import { authenticatedProcedure } from '../trpc';
|
||||
|
||||
export const ZCreateTeamMemberInvitesRequestSchema = z.object({
|
||||
teamId: z.number(),
|
||||
invitations: z.array(
|
||||
z.object({
|
||||
email: z.string().email().toLowerCase(),
|
||||
role: z.nativeEnum(TeamMemberRole),
|
||||
}),
|
||||
),
|
||||
});
|
||||
|
||||
export const createTeamMemberInvitesRoute = authenticatedProcedure
|
||||
// .meta({
|
||||
// openapi: {
|
||||
// method: 'POST',
|
||||
// path: '/team/{teamId}/member/invite',
|
||||
// summary: 'Invite members',
|
||||
// description: 'Send email invitations to users to join the team',
|
||||
// tags: ['Teams'],
|
||||
// },
|
||||
// })
|
||||
.input(ZCreateTeamMemberInvitesRequestSchema)
|
||||
.output(z.unknown())
|
||||
.mutation(async ({ input, ctx }) => {
|
||||
return await createTeamMemberInvites({
|
||||
userId: ctx.user.id,
|
||||
userName: ctx.user.name ?? '',
|
||||
...input,
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,19 @@
|
||||
import { z } from 'zod';
|
||||
|
||||
import { createTeamPendingCheckoutSession } from '@documenso/lib/server-only/team/create-team-checkout-session';
|
||||
|
||||
import { authenticatedProcedure } from '../trpc';
|
||||
|
||||
export const ZCreateTeamPendingCheckoutRouteRequestSchema = z.object({
|
||||
interval: z.union([z.literal('monthly'), z.literal('yearly')]),
|
||||
pendingTeamId: z.number(),
|
||||
});
|
||||
|
||||
export const createTeamPendingCheckoutRoute = authenticatedProcedure
|
||||
.input(ZCreateTeamPendingCheckoutRouteRequestSchema)
|
||||
.mutation(async ({ input, ctx }) => {
|
||||
return await createTeamPendingCheckoutSession({
|
||||
userId: ctx.user.id,
|
||||
...input,
|
||||
});
|
||||
});
|
||||
29
packages/trpc/server/team-router/create-team-route.ts
Normal file
29
packages/trpc/server/team-router/create-team-route.ts
Normal file
@@ -0,0 +1,29 @@
|
||||
import { z } from 'zod';
|
||||
|
||||
import { createTeam } from '@documenso/lib/server-only/team/create-team';
|
||||
|
||||
import { authenticatedProcedure } from '../trpc';
|
||||
import { ZTeamNameSchema, ZTeamUrlSchema } from './schema';
|
||||
|
||||
export const ZCreateTeamRequestSchema = z.object({
|
||||
teamName: ZTeamNameSchema,
|
||||
teamUrl: ZTeamUrlSchema,
|
||||
});
|
||||
|
||||
export const createTeamRoute = authenticatedProcedure
|
||||
// .meta({
|
||||
// openapi: {
|
||||
// method: 'POST',
|
||||
// path: '/team/create',
|
||||
// summary: 'Create team',
|
||||
// tags: ['Teams'],
|
||||
// },
|
||||
// })
|
||||
.input(ZCreateTeamRequestSchema)
|
||||
.output(z.unknown())
|
||||
.mutation(async ({ input, ctx }) => {
|
||||
return await createTeam({
|
||||
userId: ctx.user.id,
|
||||
...input,
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,18 @@
|
||||
import { z } from 'zod';
|
||||
|
||||
import { declineTeamInvitation } from '@documenso/lib/server-only/team/decline-team-invitation';
|
||||
|
||||
import { authenticatedProcedure } from '../trpc';
|
||||
|
||||
export const ZDeclineTeamInvitationRequestSchema = z.object({
|
||||
teamId: z.number(),
|
||||
});
|
||||
|
||||
export const declineTeamInvitationRoute = authenticatedProcedure
|
||||
.input(ZDeclineTeamInvitationRequestSchema)
|
||||
.mutation(async ({ input, ctx }) => {
|
||||
return await declineTeamInvitation({
|
||||
teamId: input.teamId,
|
||||
userId: ctx.user.id,
|
||||
});
|
||||
});
|
||||
28
packages/trpc/server/team-router/delete-team-email-route.ts
Normal file
28
packages/trpc/server/team-router/delete-team-email-route.ts
Normal file
@@ -0,0 +1,28 @@
|
||||
import { z } from 'zod';
|
||||
|
||||
import { deleteTeamEmail } from '@documenso/lib/server-only/team/delete-team-email';
|
||||
|
||||
import { authenticatedProcedure } from '../trpc';
|
||||
|
||||
export const ZDeleteTeamEmailRequestSchema = z.object({
|
||||
teamId: z.number(),
|
||||
});
|
||||
|
||||
export const deleteTeamEmailRequestRoute = authenticatedProcedure
|
||||
// .meta({
|
||||
// openapi: {
|
||||
// method: 'POST',
|
||||
// path: '/team/{teamId}/email/delete',
|
||||
// summary: 'Delete team email',
|
||||
// description: '',
|
||||
// tags: ['Teams'],
|
||||
// },
|
||||
// })
|
||||
.input(ZDeleteTeamEmailRequestSchema)
|
||||
.mutation(async ({ input, ctx }) => {
|
||||
return await deleteTeamEmail({
|
||||
userId: ctx.user.id,
|
||||
userEmail: ctx.user.email,
|
||||
...input,
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,26 @@
|
||||
import { z } from 'zod';
|
||||
|
||||
import { deleteTeamEmailVerification } from '@documenso/lib/server-only/team/delete-team-email-verification';
|
||||
|
||||
import { authenticatedProcedure } from '../trpc';
|
||||
|
||||
export const ZDeleteTeamEmailVerificationRequestSchema = z.object({
|
||||
teamId: z.number(),
|
||||
});
|
||||
|
||||
export const deleteTeamEmailVerificationRoute = authenticatedProcedure
|
||||
// .meta({
|
||||
// openapi: {
|
||||
// method: 'POST',
|
||||
// path: '/team/{teamId}/email/verify/delete',
|
||||
// summary: 'Delete team email verification',
|
||||
// tags: ['Teams'],
|
||||
// },
|
||||
// })
|
||||
.input(ZDeleteTeamEmailVerificationRequestSchema)
|
||||
.mutation(async ({ input, ctx }) => {
|
||||
return await deleteTeamEmailVerification({
|
||||
userId: ctx.user.id,
|
||||
...input,
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,29 @@
|
||||
import { z } from 'zod';
|
||||
|
||||
import { deleteTeamMemberInvitations } from '@documenso/lib/server-only/team/delete-team-invitations';
|
||||
|
||||
import { authenticatedProcedure } from '../trpc';
|
||||
|
||||
export const ZDeleteTeamMemberInvitationsRequestSchema = z.object({
|
||||
teamId: z.number(),
|
||||
invitationIds: z.array(z.number()),
|
||||
});
|
||||
|
||||
export const deleteTeamMemberInvitationRoute = authenticatedProcedure
|
||||
// .meta({
|
||||
// openapi: {
|
||||
// method: 'POST',
|
||||
// path: '/team/{teamId}/member/invite/delete',
|
||||
// summary: 'Delete member invite',
|
||||
// description: 'Delete a pending team member invite',
|
||||
// tags: ['Teams'],
|
||||
// },
|
||||
// })
|
||||
.input(ZDeleteTeamMemberInvitationsRequestSchema)
|
||||
.output(z.unknown())
|
||||
.mutation(async ({ input, ctx }) => {
|
||||
return await deleteTeamMemberInvitations({
|
||||
userId: ctx.user.id,
|
||||
...input,
|
||||
});
|
||||
});
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user