mirror of
https://github.com/documenso/documenso.git
synced 2025-11-14 08:42:12 +10:00
Merge branch 'main' into staging
This commit is contained in:
@ -32,7 +32,7 @@ test.describe('[EE_ONLY]', () => {
|
||||
await apiSignin({
|
||||
page,
|
||||
email: user.email,
|
||||
redirectPath: `/templates/${template.id}`,
|
||||
redirectPath: `/templates/${template.id}/edit`,
|
||||
});
|
||||
|
||||
// Set EE action auth.
|
||||
@ -74,7 +74,7 @@ test.describe('[EE_ONLY]', () => {
|
||||
await apiSignin({
|
||||
page,
|
||||
email: teamMemberUser.email,
|
||||
redirectPath: `/t/${team.url}/templates/${template.id}`,
|
||||
redirectPath: `/t/${team.url}/templates/${template.id}/edit`,
|
||||
});
|
||||
|
||||
// Set EE action auth.
|
||||
@ -110,7 +110,7 @@ test.describe('[EE_ONLY]', () => {
|
||||
await apiSignin({
|
||||
page,
|
||||
email: teamMemberUser.email,
|
||||
redirectPath: `/templates/${template.id}`,
|
||||
redirectPath: `/templates/${template.id}/edit`,
|
||||
});
|
||||
|
||||
// Global action auth should not be visible.
|
||||
@ -132,7 +132,7 @@ test('[TEMPLATE_FLOW]: add settings', async ({ page }) => {
|
||||
await apiSignin({
|
||||
page,
|
||||
email: user.email,
|
||||
redirectPath: `/templates/${template.id}`,
|
||||
redirectPath: `/templates/${template.id}/edit`,
|
||||
});
|
||||
|
||||
// Set title.
|
||||
|
||||
@ -31,7 +31,7 @@ test.describe('[EE_ONLY]', () => {
|
||||
await apiSignin({
|
||||
page,
|
||||
email: user.email,
|
||||
redirectPath: `/templates/${template.id}`,
|
||||
redirectPath: `/templates/${template.id}/edit`,
|
||||
});
|
||||
|
||||
// Save the settings by going to the next step.
|
||||
@ -81,7 +81,7 @@ test('[TEMPLATE_FLOW]: add placeholder', async ({ page }) => {
|
||||
await apiSignin({
|
||||
page,
|
||||
email: user.email,
|
||||
redirectPath: `/templates/${template.id}`,
|
||||
redirectPath: `/templates/${template.id}/edit`,
|
||||
});
|
||||
|
||||
// Save the settings by going to the next step.
|
||||
|
||||
@ -37,7 +37,7 @@ test('[TEMPLATE]: should create a document from a template', async ({ page }) =>
|
||||
await apiSignin({
|
||||
page,
|
||||
email: user.email,
|
||||
redirectPath: `/templates/${template.id}`,
|
||||
redirectPath: `/templates/${template.id}/edit`,
|
||||
});
|
||||
|
||||
// Set template title.
|
||||
@ -172,7 +172,7 @@ test('[TEMPLATE]: should create a team document from a team template', async ({
|
||||
await apiSignin({
|
||||
page,
|
||||
email: owner.email,
|
||||
redirectPath: `/t/${team.url}/templates/${template.id}`,
|
||||
redirectPath: `/t/${team.url}/templates/${template.id}/edit`,
|
||||
});
|
||||
|
||||
// Set template title.
|
||||
|
||||
@ -1,10 +1,56 @@
|
||||
import type { Transporter } from 'nodemailer';
|
||||
import { createTransport } from 'nodemailer';
|
||||
|
||||
import { ResendTransport } from '@documenso/nodemailer-resend';
|
||||
|
||||
import { MailChannelsTransport } from './transports/mailchannels';
|
||||
|
||||
const getTransport = () => {
|
||||
/**
|
||||
* Creates a Nodemailer transport object for sending emails.
|
||||
*
|
||||
* This function uses various environment variables to configure the appropriate
|
||||
* email transport mechanism. It supports multiple types of email transports,
|
||||
* including MailChannels, Resend, and different SMTP configurations.
|
||||
*
|
||||
* @returns {Transporter} A configured Nodemailer transporter instance.
|
||||
*
|
||||
* Supported Transports:
|
||||
* - **mailchannels**: Uses MailChannelsTransport, requiring:
|
||||
* - `NEXT_PRIVATE_MAILCHANNELS_API_KEY`: API key for MailChannels
|
||||
* - `NEXT_PRIVATE_MAILCHANNELS_ENDPOINT`: Endpoint for MailChannels (optional)
|
||||
* - **resend**: Uses ResendTransport, requiring:
|
||||
* - `NEXT_PRIVATE_RESEND_API_KEY`: API key for Resend
|
||||
* - **smtp-api**: Uses a custom SMTP API configuration, requiring:
|
||||
* - `NEXT_PRIVATE_SMTP_HOST`: The SMTP server host
|
||||
* - `NEXT_PRIVATE_SMTP_APIKEY`: The API key for SMTP authentication
|
||||
* - `NEXT_PRIVATE_SMTP_APIKEY_USER`: The username for SMTP authentication (default: 'apikey')
|
||||
* - **smtp-auth** (default): Uses a standard SMTP configuration, requiring:
|
||||
* - `NEXT_PRIVATE_SMTP_HOST`: The SMTP server host (default: 'localhost:2500')
|
||||
* - `NEXT_PRIVATE_SMTP_PORT`: The port to connect to (default: 587)
|
||||
* - `NEXT_PRIVATE_SMTP_SECURE`: Whether to use SSL/TLS (default: false)
|
||||
* - `NEXT_PRIVATE_SMTP_UNSAFE_IGNORE_TLS`: Whether to ignore TLS (default: false)
|
||||
* - `NEXT_PRIVATE_SMTP_USERNAME`: The username for SMTP authentication
|
||||
* - `NEXT_PRIVATE_SMTP_PASSWORD`: The password for SMTP authentication
|
||||
* - `NEXT_PRIVATE_SMTP_SERVICE`: The SMTP service provider (e.g., "gmail"). This option is used
|
||||
* when integrating with well-known services (like Gmail), enabling simplified configuration.
|
||||
*
|
||||
* Example Usage:
|
||||
* ```env
|
||||
* NEXT_PRIVATE_SMTP_TRANSPORT='smtp-auth';
|
||||
* NEXT_PRIVATE_SMTP_HOST='smtp.example.com';
|
||||
* NEXT_PRIVATE_SMTP_PORT=587;
|
||||
* NEXT_PRIVATE_SMTP_SERVICE='gmail';
|
||||
* NEXT_PRIVATE_SMTP_SECURE='true';
|
||||
* NEXT_PRIVATE_SMTP_USERNAME='your-email@gmail.com';
|
||||
* NEXT_PRIVATE_SMTP_PASSWORD='your-password';
|
||||
* ```
|
||||
*
|
||||
* Notes:
|
||||
* - Ensure that the required environment variables for each transport type are set.
|
||||
* - If `NEXT_PRIVATE_SMTP_TRANSPORT` is not specified, the default is `smtp-auth`.
|
||||
* - `NEXT_PRIVATE_SMTP_SERVICE` is optional and used specifically for well-known services like Gmail.
|
||||
*/
|
||||
const getTransport = (): Transporter => {
|
||||
const transport = process.env.NEXT_PRIVATE_SMTP_TRANSPORT ?? 'smtp-auth';
|
||||
|
||||
if (transport === 'mailchannels') {
|
||||
@ -53,6 +99,9 @@ const getTransport = () => {
|
||||
pass: process.env.NEXT_PRIVATE_SMTP_PASSWORD ?? '',
|
||||
}
|
||||
: undefined,
|
||||
...(process.env.NEXT_PRIVATE_SMTP_SERVICE
|
||||
? { service: process.env.NEXT_PRIVATE_SMTP_SERVICE }
|
||||
: {}),
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
18
packages/lib/constants/document.ts
Normal file
18
packages/lib/constants/document.ts
Normal file
@ -0,0 +1,18 @@
|
||||
import type { MessageDescriptor } from '@lingui/core';
|
||||
import { msg } from '@lingui/macro';
|
||||
|
||||
import { DocumentStatus } from '@documenso/prisma/client';
|
||||
|
||||
export const DOCUMENT_STATUS: {
|
||||
[status in DocumentStatus]: { description: MessageDescriptor };
|
||||
} = {
|
||||
[DocumentStatus.COMPLETED]: {
|
||||
description: msg`Completed`,
|
||||
},
|
||||
[DocumentStatus.DRAFT]: {
|
||||
description: msg`Draft`,
|
||||
},
|
||||
[DocumentStatus.PENDING]: {
|
||||
description: msg`Pending`,
|
||||
},
|
||||
};
|
||||
@ -78,13 +78,3 @@ export const RECIPIENT_ROLE_SIGNING_REASONS = {
|
||||
[RecipientRole.CC]: msg`I am required to receive a copy of this document`,
|
||||
[RecipientRole.VIEWER]: msg`I am a viewer of this document`,
|
||||
} satisfies Record<keyof typeof RecipientRole, MessageDescriptor>;
|
||||
|
||||
/**
|
||||
* Raw english descriptions for certificates.
|
||||
*/
|
||||
export const RECIPIENT_ROLE_SIGNING_REASONS_ENG = {
|
||||
[RecipientRole.SIGNER]: `I am a signer of this document`,
|
||||
[RecipientRole.APPROVER]: `I am an approver of this document`,
|
||||
[RecipientRole.CC]: `I am required to receive a copy of this document`,
|
||||
[RecipientRole.VIEWER]: `I am a viewer of this document`,
|
||||
} satisfies Record<keyof typeof RecipientRole, string>;
|
||||
|
||||
@ -115,9 +115,11 @@ export const SEND_SIGNING_EMAIL_JOB_DEFINITION = {
|
||||
|
||||
if (isTeamDocument && team) {
|
||||
emailSubject = i18n._(msg`${team.name} invited you to ${recipientActionVerb} a document`);
|
||||
emailMessage = i18n._(
|
||||
msg`${user.name} on behalf of ${team.name} has invited you to ${recipientActionVerb} the document "${document.title}".`,
|
||||
);
|
||||
emailMessage =
|
||||
customEmail?.message ||
|
||||
i18n._(
|
||||
msg`${user.name} on behalf of ${team.name} has invited you to ${recipientActionVerb} the document "${document.title}".`,
|
||||
);
|
||||
}
|
||||
|
||||
const customEmailTemplate = {
|
||||
|
||||
@ -2,12 +2,15 @@
|
||||
|
||||
import { createElement } from 'react';
|
||||
|
||||
import { msg } from '@lingui/macro';
|
||||
|
||||
import { mailer } from '@documenso/email/mailer';
|
||||
import DocumentCancelTemplate from '@documenso/email/templates/document-cancel';
|
||||
import { prisma } from '@documenso/prisma';
|
||||
import type { Document, DocumentMeta, Recipient, User } from '@documenso/prisma/client';
|
||||
import { DocumentStatus, SendStatus } from '@documenso/prisma/client';
|
||||
|
||||
import { getI18nInstance } from '../../client-only/providers/i18n.server';
|
||||
import { NEXT_PUBLIC_WEBAPP_URL } from '../../constants/app';
|
||||
import { FROM_ADDRESS, FROM_NAME } from '../../constants/email';
|
||||
import { DOCUMENT_AUDIT_LOG_TYPE } from '../../types/document-audit-logs';
|
||||
@ -192,10 +195,12 @@ const handleDocumentOwnerDelete = async ({
|
||||
});
|
||||
|
||||
const [html, text] = await Promise.all([
|
||||
renderEmailWithI18N(template),
|
||||
renderEmailWithI18N(template, { plainText: true }),
|
||||
renderEmailWithI18N(template, { lang: document.documentMeta?.language }),
|
||||
renderEmailWithI18N(template, { lang: document.documentMeta?.language, plainText: true }),
|
||||
]);
|
||||
|
||||
const i18n = await getI18nInstance(document.documentMeta?.language);
|
||||
|
||||
await mailer.sendMail({
|
||||
to: {
|
||||
address: recipient.email,
|
||||
@ -205,7 +210,7 @@ const handleDocumentOwnerDelete = async ({
|
||||
name: FROM_NAME,
|
||||
address: FROM_ADDRESS,
|
||||
},
|
||||
subject: 'Document Cancelled',
|
||||
subject: i18n._(msg`Document Cancelled`),
|
||||
html,
|
||||
text,
|
||||
});
|
||||
|
||||
@ -3,7 +3,14 @@ import { P, match } from 'ts-pattern';
|
||||
|
||||
import { prisma } from '@documenso/prisma';
|
||||
import { RecipientRole, SigningStatus, TeamMemberRole } from '@documenso/prisma/client';
|
||||
import type { Document, Prisma, Team, TeamEmail, User } from '@documenso/prisma/client';
|
||||
import type {
|
||||
Document,
|
||||
DocumentSource,
|
||||
Prisma,
|
||||
Team,
|
||||
TeamEmail,
|
||||
User,
|
||||
} from '@documenso/prisma/client';
|
||||
import { ExtendedDocumentStatus } from '@documenso/prisma/types/extended-document-status';
|
||||
|
||||
import { DocumentVisibility } from '../../types/document-visibility';
|
||||
@ -16,6 +23,8 @@ export type FindDocumentsOptions = {
|
||||
userId: number;
|
||||
teamId?: number;
|
||||
term?: string;
|
||||
templateId?: number;
|
||||
source?: DocumentSource;
|
||||
status?: ExtendedDocumentStatus;
|
||||
page?: number;
|
||||
perPage?: number;
|
||||
@ -32,6 +41,8 @@ export const findDocuments = async ({
|
||||
userId,
|
||||
teamId,
|
||||
term,
|
||||
templateId,
|
||||
source,
|
||||
status = ExtendedDocumentStatus.ALL,
|
||||
page = 1,
|
||||
perPage = 10,
|
||||
@ -40,44 +51,37 @@ export const findDocuments = async ({
|
||||
senderIds,
|
||||
search,
|
||||
}: FindDocumentsOptions) => {
|
||||
const { user, team } = await prisma.$transaction(async (tx) => {
|
||||
const user = await tx.user.findFirstOrThrow({
|
||||
const user = await prisma.user.findFirstOrThrow({
|
||||
where: {
|
||||
id: userId,
|
||||
},
|
||||
});
|
||||
|
||||
let team = null;
|
||||
|
||||
if (teamId !== undefined) {
|
||||
team = await prisma.team.findFirstOrThrow({
|
||||
where: {
|
||||
id: userId,
|
||||
id: teamId,
|
||||
members: {
|
||||
some: {
|
||||
userId,
|
||||
},
|
||||
},
|
||||
},
|
||||
include: {
|
||||
teamEmail: true,
|
||||
members: {
|
||||
where: {
|
||||
userId,
|
||||
},
|
||||
select: {
|
||||
role: true,
|
||||
},
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
let team = null;
|
||||
|
||||
if (teamId !== undefined) {
|
||||
team = await tx.team.findFirstOrThrow({
|
||||
where: {
|
||||
id: teamId,
|
||||
members: {
|
||||
some: {
|
||||
userId,
|
||||
},
|
||||
},
|
||||
},
|
||||
include: {
|
||||
teamEmail: true,
|
||||
members: {
|
||||
where: {
|
||||
userId,
|
||||
},
|
||||
select: {
|
||||
role: true,
|
||||
},
|
||||
},
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
return {
|
||||
user,
|
||||
team,
|
||||
};
|
||||
});
|
||||
}
|
||||
|
||||
const orderByColumn = orderBy?.column ?? 'createdAt';
|
||||
const orderByDirection = orderBy?.direction ?? 'desc';
|
||||
@ -197,8 +201,27 @@ export const findDocuments = async ({
|
||||
};
|
||||
}
|
||||
|
||||
const whereAndClause: Prisma.DocumentWhereInput['AND'] = [
|
||||
{ ...termFilters },
|
||||
{ ...filters },
|
||||
{ ...deletedFilter },
|
||||
{ ...searchFilter },
|
||||
];
|
||||
|
||||
if (templateId) {
|
||||
whereAndClause.push({
|
||||
templateId,
|
||||
});
|
||||
}
|
||||
|
||||
if (source) {
|
||||
whereAndClause.push({
|
||||
source,
|
||||
});
|
||||
}
|
||||
|
||||
const whereClause: Prisma.DocumentWhereInput = {
|
||||
AND: [{ ...termFilters }, { ...filters }, { ...deletedFilter }, { ...searchFilter }],
|
||||
AND: whereAndClause,
|
||||
};
|
||||
|
||||
if (period) {
|
||||
|
||||
@ -106,17 +106,25 @@ export const resendDocument = async ({
|
||||
._(RECIPIENT_ROLES_DESCRIPTION[recipient.role].actionVerb)
|
||||
.toLowerCase();
|
||||
|
||||
let emailMessage = msg`${customEmail?.message || ''}`;
|
||||
let emailSubject = msg`Reminder: Please ${recipientActionVerb} this document`;
|
||||
let emailMessage = customEmail?.message || '';
|
||||
let emailSubject = i18n._(msg`Reminder: Please ${recipientActionVerb} this document`);
|
||||
|
||||
if (selfSigner) {
|
||||
emailMessage = msg`You have initiated the document ${`"${document.title}"`} that requires you to ${recipientActionVerb} it.`;
|
||||
emailSubject = msg`Reminder: Please ${recipientActionVerb} your document`;
|
||||
emailMessage = i18n._(
|
||||
msg`You have initiated the document ${`"${document.title}"`} that requires you to ${recipientActionVerb} it.`,
|
||||
);
|
||||
emailSubject = i18n._(msg`Reminder: Please ${recipientActionVerb} your document`);
|
||||
}
|
||||
|
||||
if (isTeamDocument && document.team) {
|
||||
emailSubject = msg`Reminder: ${document.team.name} invited you to ${recipientActionVerb} a document`;
|
||||
emailMessage = msg`${user.name} on behalf of ${document.team.name} has invited you to ${recipientActionVerb} the document "${document.title}".`;
|
||||
emailSubject = i18n._(
|
||||
msg`Reminder: ${document.team.name} invited you to ${recipientActionVerb} a document`,
|
||||
);
|
||||
emailMessage =
|
||||
customEmail?.message ||
|
||||
i18n._(
|
||||
msg`${user.name} on behalf of ${document.team.name} has invited you to ${recipientActionVerb} the document "${document.title}".`,
|
||||
);
|
||||
}
|
||||
|
||||
const customEmailTemplate = {
|
||||
@ -134,7 +142,7 @@ export const resendDocument = async ({
|
||||
inviterEmail: isTeamDocument ? document.team?.teamEmail?.email || user.email : user.email,
|
||||
assetBaseUrl,
|
||||
signDocumentLink,
|
||||
customBody: renderCustomEmailTemplate(i18n._(emailMessage), customEmailTemplate),
|
||||
customBody: renderCustomEmailTemplate(emailMessage, customEmailTemplate),
|
||||
role: recipient.role,
|
||||
selfSigner,
|
||||
isTeamInvite: isTeamDocument,
|
||||
@ -165,7 +173,7 @@ export const resendDocument = async ({
|
||||
i18n._(msg`Reminder: ${customEmail.subject}`),
|
||||
customEmailTemplate,
|
||||
)
|
||||
: i18n._(emailSubject),
|
||||
: emailSubject,
|
||||
html,
|
||||
text,
|
||||
});
|
||||
|
||||
@ -42,6 +42,13 @@ export const getTemplateById = async ({ id, userId, teamId }: GetTemplateByIdOpt
|
||||
templateMeta: true,
|
||||
Recipient: true,
|
||||
Field: true,
|
||||
User: {
|
||||
select: {
|
||||
id: true,
|
||||
name: true,
|
||||
email: true,
|
||||
},
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
|
||||
@ -8,7 +8,7 @@ msgstr ""
|
||||
"Language: de\n"
|
||||
"Project-Id-Version: documenso-app\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2024-11-05 02:04\n"
|
||||
"PO-Revision-Date: 2024-11-05 09:34\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: German\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
@ -96,6 +96,90 @@ msgstr "{memberEmail} ist dem folgenden Team beigetreten"
|
||||
msgid "{memberEmail} left the following team"
|
||||
msgstr "{memberEmail} hat das folgende Team verlassen"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:263
|
||||
msgid "{prefix} added a field"
|
||||
msgstr "{prefix} hat ein Feld hinzugefügt"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:275
|
||||
msgid "{prefix} added a recipient"
|
||||
msgstr "{prefix} hat einen Empfänger hinzugefügt"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:287
|
||||
msgid "{prefix} created the document"
|
||||
msgstr "{prefix} hat das Dokument erstellt"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:291
|
||||
msgid "{prefix} deleted the document"
|
||||
msgstr "{prefix} hat das Dokument gelöscht"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:335
|
||||
msgid "{prefix} moved the document to team"
|
||||
msgstr "{prefix} hat das Dokument ins Team verschoben"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:319
|
||||
msgid "{prefix} opened the document"
|
||||
msgstr "{prefix} hat das Dokument geöffnet"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:267
|
||||
msgid "{prefix} removed a field"
|
||||
msgstr "{prefix} hat ein Feld entfernt"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:279
|
||||
msgid "{prefix} removed a recipient"
|
||||
msgstr "{prefix} hat einen Empfänger entfernt"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:355
|
||||
msgid "{prefix} resent an email to {0}"
|
||||
msgstr "{prefix} hat eine E-Mail an {0} erneut gesendet"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:356
|
||||
msgid "{prefix} sent an email to {0}"
|
||||
msgstr "{prefix} hat eine E-Mail an {0} gesendet"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:331
|
||||
msgid "{prefix} sent the document"
|
||||
msgstr "{prefix} hat das Dokument gesendet"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:295
|
||||
msgid "{prefix} signed a field"
|
||||
msgstr "{prefix} hat ein Feld unterschrieben"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:299
|
||||
msgid "{prefix} unsigned a field"
|
||||
msgstr "{prefix} hat ein Feld ungültig gemacht"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:271
|
||||
msgid "{prefix} updated a field"
|
||||
msgstr "{prefix} hat ein Feld aktualisiert"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:283
|
||||
msgid "{prefix} updated a recipient"
|
||||
msgstr "{prefix} hat einen Empfänger aktualisiert"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:315
|
||||
msgid "{prefix} updated the document"
|
||||
msgstr "{prefix} hat das Dokument aktualisiert"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:307
|
||||
msgid "{prefix} updated the document access auth requirements"
|
||||
msgstr "{prefix} hat die Anforderungen an die Dokumentenzugriffsautorisierung aktualisiert"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:327
|
||||
msgid "{prefix} updated the document external ID"
|
||||
msgstr "{prefix} hat die externe ID des Dokuments aktualisiert"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:311
|
||||
msgid "{prefix} updated the document signing auth requirements"
|
||||
msgstr "{prefix} hat die Authentifizierungsanforderungen für die Dokumentenunterzeichnung aktualisiert"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:323
|
||||
msgid "{prefix} updated the document title"
|
||||
msgstr "{prefix} hat den Titel des Dokuments aktualisiert"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:303
|
||||
msgid "{prefix} updated the document visibility"
|
||||
msgstr "{prefix} hat die Sichtbarkeit des Dokuments aktualisiert"
|
||||
|
||||
#: packages/email/templates/document-created-from-direct-template.tsx:55
|
||||
msgid "{recipientName} {action} a document by using one of your direct links"
|
||||
msgstr "{recipientName} {action} ein Dokument, indem Sie einen Ihrer direkten Links verwenden"
|
||||
@ -104,6 +188,26 @@ msgstr "{recipientName} {action} ein Dokument, indem Sie einen Ihrer direkten Li
|
||||
msgid "{teamName} ownership transfer request"
|
||||
msgstr "Anfrage zur Übertragung des Eigentums von {teamName}"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:343
|
||||
msgid "{userName} approved the document"
|
||||
msgstr "{userName} hat das Dokument genehmigt"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:344
|
||||
msgid "{userName} CC'd the document"
|
||||
msgstr "{userName} hat das Dokument in CC gesetzt"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:345
|
||||
msgid "{userName} completed their task"
|
||||
msgstr "{userName} hat ihre Aufgabe abgeschlossen"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:341
|
||||
msgid "{userName} signed the document"
|
||||
msgstr "{userName} hat das Dokument unterschrieben"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:342
|
||||
msgid "{userName} viewed the document"
|
||||
msgstr "{userName} hat das Dokument angesehen"
|
||||
|
||||
#: packages/ui/primitives/data-table-pagination.tsx:41
|
||||
msgid "{visibleRows, plural, one {Showing # result.} other {Showing # results.}}"
|
||||
msgstr "{visibleRows, plural, one {Eine # Ergebnis wird angezeigt.} other {# Ergebnisse werden angezeigt.}}"
|
||||
@ -150,10 +254,34 @@ msgstr "<0>Passkey erforderlich</0> - Der Empfänger muss ein Konto haben und de
|
||||
msgid "A document was created by your direct template that requires you to {recipientActionVerb} it."
|
||||
msgstr "Ein Dokument wurde von deiner direkten Vorlage erstellt, das erfordert, dass du {recipientActionVerb}."
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:262
|
||||
msgid "A field was added"
|
||||
msgstr "Ein Feld wurde hinzugefügt"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:266
|
||||
msgid "A field was removed"
|
||||
msgstr "Ein Feld wurde entfernt"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:270
|
||||
msgid "A field was updated"
|
||||
msgstr "Ein Feld wurde aktualisiert"
|
||||
|
||||
#: packages/lib/jobs/definitions/emails/send-team-member-joined-email.ts:90
|
||||
msgid "A new member has joined your team"
|
||||
msgstr "Ein neues Mitglied ist deinem Team beigetreten"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:274
|
||||
msgid "A recipient was added"
|
||||
msgstr "Ein Empfänger wurde hinzugefügt"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:278
|
||||
msgid "A recipient was removed"
|
||||
msgstr "Ein Empfänger wurde entfernt"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:282
|
||||
msgid "A recipient was updated"
|
||||
msgstr "Ein Empfänger wurde aktualisiert"
|
||||
|
||||
#: packages/lib/server-only/team/create-team-email-verification.ts:142
|
||||
msgid "A request to use your email has been initiated by {teamName} on Documenso"
|
||||
msgstr "Eine Anfrage zur Verwendung deiner E-Mail wurde von {teamName} auf Documenso initiiert"
|
||||
@ -368,6 +496,7 @@ msgstr "Schließen"
|
||||
|
||||
#: packages/email/template-components/template-document-completed.tsx:35
|
||||
#: packages/email/template-components/template-document-self-signed.tsx:36
|
||||
#: packages/lib/constants/document.ts:10
|
||||
msgid "Completed"
|
||||
msgstr "Abgeschlossen"
|
||||
|
||||
@ -450,10 +579,24 @@ msgstr "Empfänger des direkten Links"
|
||||
msgid "Document access"
|
||||
msgstr "Dokumentenzugriff"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:306
|
||||
msgid "Document access auth updated"
|
||||
msgstr "Die Authentifizierung für den Dokumentenzugriff wurde aktualisiert"
|
||||
|
||||
#: packages/lib/server-only/document/delete-document.ts:213
|
||||
#: packages/lib/server-only/document/super-delete-document.ts:75
|
||||
msgid "Document Cancelled"
|
||||
msgstr "Dokument storniert"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:359
|
||||
#: packages/lib/utils/document-audit-logs.ts:360
|
||||
msgid "Document completed"
|
||||
msgstr "Dokument abgeschlossen"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:286
|
||||
msgid "Document created"
|
||||
msgstr "Dokument erstellt"
|
||||
|
||||
#: packages/email/templates/document-created-from-direct-template.tsx:30
|
||||
#: packages/lib/server-only/template/create-document-from-direct-template.ts:554
|
||||
msgid "Document created from direct template"
|
||||
@ -463,15 +606,55 @@ msgstr "Dokument erstellt aus direkter Vorlage"
|
||||
msgid "Document Creation"
|
||||
msgstr "Dokumenterstellung"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:290
|
||||
msgid "Document deleted"
|
||||
msgstr "Dokument gelöscht"
|
||||
|
||||
#: packages/lib/server-only/document/send-delete-email.ts:58
|
||||
msgid "Document Deleted!"
|
||||
msgstr "Dokument gelöscht!"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:326
|
||||
msgid "Document external ID updated"
|
||||
msgstr "Externe ID des Dokuments aktualisiert"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:334
|
||||
msgid "Document moved to team"
|
||||
msgstr "Dokument ins Team verschoben"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:318
|
||||
msgid "Document opened"
|
||||
msgstr "Dokument geöffnet"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:330
|
||||
msgid "Document sent"
|
||||
msgstr "Dokument gesendet"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:310
|
||||
msgid "Document signing auth updated"
|
||||
msgstr "Dokument unterzeichnen Authentifizierung aktualisiert"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:322
|
||||
msgid "Document title updated"
|
||||
msgstr "Dokumenttitel aktualisiert"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:314
|
||||
msgid "Document updated"
|
||||
msgstr "Dokument aktualisiert"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:302
|
||||
msgid "Document visibility updated"
|
||||
msgstr "Sichtbarkeit des Dokuments aktualisiert"
|
||||
|
||||
#: packages/email/template-components/template-document-completed.tsx:64
|
||||
#: packages/ui/components/document/document-download-button.tsx:68
|
||||
msgid "Download"
|
||||
msgstr "Herunterladen"
|
||||
|
||||
#: packages/lib/constants/document.ts:13
|
||||
msgid "Draft"
|
||||
msgstr "Entwurf"
|
||||
|
||||
#: packages/ui/primitives/document-dropzone.tsx:162
|
||||
msgid "Drag & drop your PDF here."
|
||||
msgstr "Ziehen Sie Ihr PDF hierher."
|
||||
@ -504,6 +687,14 @@ msgstr "E-Mail ist erforderlich"
|
||||
msgid "Email Options"
|
||||
msgstr "E-Mail-Optionen"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:353
|
||||
msgid "Email resent"
|
||||
msgstr "E-Mail erneut gesendet"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:353
|
||||
msgid "Email sent"
|
||||
msgstr "E-Mail gesendet"
|
||||
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:1123
|
||||
msgid "Empty field"
|
||||
msgstr "Leeres Feld"
|
||||
@ -564,6 +755,14 @@ msgstr "Feldbeschriftung"
|
||||
msgid "Field placeholder"
|
||||
msgstr "Feldplatzhalter"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:294
|
||||
msgid "Field signed"
|
||||
msgstr "Feld unterschrieben"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:298
|
||||
msgid "Field unsigned"
|
||||
msgstr "Feld nicht unterschrieben"
|
||||
|
||||
#: packages/ui/primitives/document-flow/field-items-advanced-settings/date-field.tsx:56
|
||||
#: packages/ui/primitives/document-flow/field-items-advanced-settings/email-field.tsx:38
|
||||
#: packages/ui/primitives/document-flow/field-items-advanced-settings/initials-field.tsx:38
|
||||
@ -774,6 +973,10 @@ msgstr "Passwort erfolgreich zurückgesetzt"
|
||||
msgid "Password updated!"
|
||||
msgstr "Passwort aktualisiert!"
|
||||
|
||||
#: packages/lib/constants/document.ts:16
|
||||
msgid "Pending"
|
||||
msgstr "Ausstehend"
|
||||
|
||||
#: packages/email/templates/document-pending.tsx:17
|
||||
msgid "Pending Document"
|
||||
msgstr "Ausstehendes Dokument"
|
||||
@ -841,6 +1044,10 @@ msgstr "Nur lesen"
|
||||
msgid "Receives copy"
|
||||
msgstr "Erhält Kopie"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:338
|
||||
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/template-flow/add-template-settings.tsx:208
|
||||
@ -1248,6 +1455,10 @@ msgstr "Wir haben dein Passwort wie gewünscht geändert. Du kannst dich jetzt m
|
||||
msgid "Welcome to Documenso!"
|
||||
msgstr "Willkommen bei Documenso!"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:258
|
||||
msgid "You"
|
||||
msgstr "Du"
|
||||
|
||||
#: packages/ui/primitives/document-flow/send-document-action-dialog.tsx:44
|
||||
msgid "You are about to send this document to the recipients. Are you sure you want to continue?"
|
||||
msgstr "Sie sind dabei, dieses Dokument an die Empfänger zu senden. Sind Sie sicher, dass Sie fortfahren möchten?"
|
||||
@ -1309,4 +1520,3 @@ msgstr "Dein Passwort wurde aktualisiert."
|
||||
#: packages/email/templates/team-delete.tsx:30
|
||||
msgid "Your team has been deleted"
|
||||
msgstr "Dein Team wurde gelöscht"
|
||||
|
||||
|
||||
@ -8,7 +8,7 @@ msgstr ""
|
||||
"Language: de\n"
|
||||
"Project-Id-Version: documenso-app\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2024-11-05 02:04\n"
|
||||
"PO-Revision-Date: 2024-11-05 09:34\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: German\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
@ -42,7 +42,7 @@ msgstr "Dokument hinzufügen"
|
||||
msgid "Add More Users for {0}"
|
||||
msgstr "Mehr Benutzer hinzufügen für {0}"
|
||||
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:164
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:165
|
||||
msgid "All our metrics, finances, and learnings are public. We believe in transparency and want to share our journey with you. You can read more about why here: <0>Announcing Open Metrics</0>"
|
||||
msgstr "Alle unsere Kennzahlen, Finanzen und Erkenntnisse sind öffentlich. Wir glauben an Transparenz und möchten unsere Reise mit Ihnen teilen. Mehr erfahren Sie hier: <0>Ankündigung Offene Kennzahlen</0>"
|
||||
|
||||
@ -90,7 +90,7 @@ msgstr "Änderungsprotokoll"
|
||||
msgid "Choose a template from the community app store. Or submit your own template for others to use."
|
||||
msgstr "Wählen Sie eine Vorlage aus dem Community-App-Store. Oder reichen Sie Ihre eigene Vorlage ein, damit andere sie benutzen können."
|
||||
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:218
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:219
|
||||
msgid "Community"
|
||||
msgstr "Gemeinschaft"
|
||||
|
||||
@ -193,7 +193,7 @@ msgstr "Schnell."
|
||||
msgid "Faster, smarter and more beautiful."
|
||||
msgstr "Schneller, intelligenter und schöner."
|
||||
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:209
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:210
|
||||
msgid "Finances"
|
||||
msgstr "Finanzen"
|
||||
|
||||
@ -246,15 +246,15 @@ msgstr "Fangen Sie heute an."
|
||||
msgid "Get the latest news from Documenso, including product updates, team announcements and more!"
|
||||
msgstr "Erhalten Sie die neuesten Nachrichten von Documenso, einschließlich Produkt-Updates, Team-Ankündigungen und mehr!"
|
||||
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:232
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:233
|
||||
msgid "GitHub: Total Merged PRs"
|
||||
msgstr "GitHub: Gesamte PRs zusammengeführt"
|
||||
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:250
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:251
|
||||
msgid "GitHub: Total Open Issues"
|
||||
msgstr "GitHub: Gesamte offene Issues"
|
||||
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:224
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:225
|
||||
msgid "GitHub: Total Stars"
|
||||
msgstr "GitHub: Gesamtanzahl Sterne"
|
||||
|
||||
@ -262,7 +262,7 @@ msgstr "GitHub: Gesamtanzahl Sterne"
|
||||
msgid "Global Salary Bands"
|
||||
msgstr "Globale Gehaltsbänder"
|
||||
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:260
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:261
|
||||
msgid "Growth"
|
||||
msgstr "Wachstum"
|
||||
|
||||
@ -286,7 +286,7 @@ msgstr "Integrierte Zahlungen mit Stripe, sodass Sie sich keine Sorgen ums Bezah
|
||||
msgid "Integrates with all your favourite tools."
|
||||
msgstr "Integriert sich mit all Ihren Lieblingstools."
|
||||
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:288
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:289
|
||||
msgid "Is there more?"
|
||||
msgstr "Gibt es mehr?"
|
||||
|
||||
@ -310,11 +310,11 @@ msgstr "Standort"
|
||||
msgid "Make it your own through advanced customization and adjustability."
|
||||
msgstr "Machen Sie es zu Ihrem eigenen durch erweiterte Anpassung und Einstellbarkeit."
|
||||
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:198
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:199
|
||||
msgid "Merged PR's"
|
||||
msgstr "Zusammengeführte PRs"
|
||||
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:233
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:234
|
||||
msgid "Merged PRs"
|
||||
msgstr "Zusammengeführte PRs"
|
||||
|
||||
@ -345,8 +345,8 @@ msgstr "Keine Kreditkarte erforderlich"
|
||||
msgid "None of these work for you? Try self-hosting!"
|
||||
msgstr "Keines dieser Angebote passt zu Ihnen? Versuchen Sie das Selbst-Hosting!"
|
||||
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:193
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:251
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:194
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:252
|
||||
msgid "Open Issues"
|
||||
msgstr "Offene Issues"
|
||||
|
||||
@ -354,7 +354,7 @@ msgstr "Offene Issues"
|
||||
msgid "Open Source or Hosted."
|
||||
msgstr "Open Source oder Hosted."
|
||||
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:160
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:161
|
||||
#: apps/marketing/src/components/(marketing)/footer.tsx:37
|
||||
#: apps/marketing/src/components/(marketing)/header.tsx:64
|
||||
#: apps/marketing/src/components/(marketing)/mobile-navigation.tsx:40
|
||||
@ -466,7 +466,7 @@ msgstr "Intelligent."
|
||||
msgid "Star on GitHub"
|
||||
msgstr "Auf GitHub favorisieren"
|
||||
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:225
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:226
|
||||
msgid "Stars"
|
||||
msgstr "Favoriten"
|
||||
|
||||
@ -501,7 +501,7 @@ msgstr "Vorlagen-Shop (Demnächst)."
|
||||
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 "Das ist großartig. Sie können sich die aktuellen <0>Issues</0> ansehen und unserer <1>Discord-Community</1> beitreten, um auf dem neuesten Stand zu bleiben, was die aktuellen Prioritäten sind. In jedem Fall sind wir eine offene Gemeinschaft und begrüßen jegliche Beiträge, technische und nicht-technische ❤️"
|
||||
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:292
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:293
|
||||
msgid "This page is evolving as we learn what makes a great signing company. We'll update it when we have more to share."
|
||||
msgstr "Diese Seite entwickelt sich weiter, während wir lernen, was ein großartiges Signing-Unternehmen ausmacht. Wir werden sie aktualisieren, wenn wir mehr zu teilen haben."
|
||||
|
||||
@ -514,8 +514,8 @@ msgstr "Titel"
|
||||
msgid "Total Completed Documents"
|
||||
msgstr "Insgesamt Abgeschlossene Dokumente"
|
||||
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:266
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:267
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:268
|
||||
msgid "Total Customers"
|
||||
msgstr "Insgesamt Kunden"
|
||||
|
||||
@ -602,4 +602,3 @@ msgstr "Sie können Documenso kostenlos selbst hosten oder unsere sofort einsatz
|
||||
#: apps/marketing/src/components/(marketing)/carousel.tsx:272
|
||||
msgid "Your browser does not support the video tag."
|
||||
msgstr "Ihr Browser unterstützt das Video-Tag nicht."
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -91,6 +91,90 @@ msgstr "{memberEmail} joined the following team"
|
||||
msgid "{memberEmail} left the following team"
|
||||
msgstr "{memberEmail} left the following team"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:263
|
||||
msgid "{prefix} added a field"
|
||||
msgstr "{prefix} added a field"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:275
|
||||
msgid "{prefix} added a recipient"
|
||||
msgstr "{prefix} added a recipient"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:287
|
||||
msgid "{prefix} created the document"
|
||||
msgstr "{prefix} created the document"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:291
|
||||
msgid "{prefix} deleted the document"
|
||||
msgstr "{prefix} deleted the document"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:335
|
||||
msgid "{prefix} moved the document to team"
|
||||
msgstr "{prefix} moved the document to team"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:319
|
||||
msgid "{prefix} opened the document"
|
||||
msgstr "{prefix} opened the document"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:267
|
||||
msgid "{prefix} removed a field"
|
||||
msgstr "{prefix} removed a field"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:279
|
||||
msgid "{prefix} removed a recipient"
|
||||
msgstr "{prefix} removed a recipient"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:355
|
||||
msgid "{prefix} resent an email to {0}"
|
||||
msgstr "{prefix} resent an email to {0}"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:356
|
||||
msgid "{prefix} sent an email to {0}"
|
||||
msgstr "{prefix} sent an email to {0}"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:331
|
||||
msgid "{prefix} sent the document"
|
||||
msgstr "{prefix} sent the document"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:295
|
||||
msgid "{prefix} signed a field"
|
||||
msgstr "{prefix} signed a field"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:299
|
||||
msgid "{prefix} unsigned a field"
|
||||
msgstr "{prefix} unsigned a field"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:271
|
||||
msgid "{prefix} updated a field"
|
||||
msgstr "{prefix} updated a field"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:283
|
||||
msgid "{prefix} updated a recipient"
|
||||
msgstr "{prefix} updated a recipient"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:315
|
||||
msgid "{prefix} updated the document"
|
||||
msgstr "{prefix} updated the document"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:307
|
||||
msgid "{prefix} updated the document access auth requirements"
|
||||
msgstr "{prefix} updated the document access auth requirements"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:327
|
||||
msgid "{prefix} updated the document external ID"
|
||||
msgstr "{prefix} updated the document external ID"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:311
|
||||
msgid "{prefix} updated the document signing auth requirements"
|
||||
msgstr "{prefix} updated the document signing auth requirements"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:323
|
||||
msgid "{prefix} updated the document title"
|
||||
msgstr "{prefix} updated the document title"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:303
|
||||
msgid "{prefix} updated the document visibility"
|
||||
msgstr "{prefix} updated the document visibility"
|
||||
|
||||
#: packages/email/templates/document-created-from-direct-template.tsx:55
|
||||
msgid "{recipientName} {action} a document by using one of your direct links"
|
||||
msgstr "{recipientName} {action} a document by using one of your direct links"
|
||||
@ -99,6 +183,26 @@ msgstr "{recipientName} {action} a document by using one of your direct links"
|
||||
msgid "{teamName} ownership transfer request"
|
||||
msgstr "{teamName} ownership transfer request"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:343
|
||||
msgid "{userName} approved the document"
|
||||
msgstr "{userName} approved the document"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:344
|
||||
msgid "{userName} CC'd the document"
|
||||
msgstr "{userName} CC'd the document"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:345
|
||||
msgid "{userName} completed their task"
|
||||
msgstr "{userName} completed their task"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:341
|
||||
msgid "{userName} signed the document"
|
||||
msgstr "{userName} signed the document"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:342
|
||||
msgid "{userName} viewed the document"
|
||||
msgstr "{userName} viewed the document"
|
||||
|
||||
#: packages/ui/primitives/data-table-pagination.tsx:41
|
||||
msgid "{visibleRows, plural, one {Showing # result.} other {Showing # results.}}"
|
||||
msgstr "{visibleRows, plural, one {Showing # result.} other {Showing # results.}}"
|
||||
@ -145,10 +249,34 @@ msgstr "<0>Require passkey</0> - The recipient must have an account and passkey
|
||||
msgid "A document was created by your direct template that requires you to {recipientActionVerb} it."
|
||||
msgstr "A document was created by your direct template that requires you to {recipientActionVerb} it."
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:262
|
||||
msgid "A field was added"
|
||||
msgstr "A field was added"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:266
|
||||
msgid "A field was removed"
|
||||
msgstr "A field was removed"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:270
|
||||
msgid "A field was updated"
|
||||
msgstr "A field was updated"
|
||||
|
||||
#: packages/lib/jobs/definitions/emails/send-team-member-joined-email.ts:90
|
||||
msgid "A new member has joined your team"
|
||||
msgstr "A new member has joined your team"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:274
|
||||
msgid "A recipient was added"
|
||||
msgstr "A recipient was added"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:278
|
||||
msgid "A recipient was removed"
|
||||
msgstr "A recipient was removed"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:282
|
||||
msgid "A recipient was updated"
|
||||
msgstr "A recipient was updated"
|
||||
|
||||
#: packages/lib/server-only/team/create-team-email-verification.ts:142
|
||||
msgid "A request to use your email has been initiated by {teamName} on Documenso"
|
||||
msgstr "A request to use your email has been initiated by {teamName} on Documenso"
|
||||
@ -363,6 +491,7 @@ msgstr "Close"
|
||||
|
||||
#: packages/email/template-components/template-document-completed.tsx:35
|
||||
#: packages/email/template-components/template-document-self-signed.tsx:36
|
||||
#: packages/lib/constants/document.ts:10
|
||||
msgid "Completed"
|
||||
msgstr "Completed"
|
||||
|
||||
@ -445,10 +574,24 @@ msgstr "Direct link receiver"
|
||||
msgid "Document access"
|
||||
msgstr "Document access"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:306
|
||||
msgid "Document access auth updated"
|
||||
msgstr "Document access auth updated"
|
||||
|
||||
#: packages/lib/server-only/document/delete-document.ts:213
|
||||
#: packages/lib/server-only/document/super-delete-document.ts:75
|
||||
msgid "Document Cancelled"
|
||||
msgstr "Document Cancelled"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:359
|
||||
#: packages/lib/utils/document-audit-logs.ts:360
|
||||
msgid "Document completed"
|
||||
msgstr "Document completed"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:286
|
||||
msgid "Document created"
|
||||
msgstr "Document created"
|
||||
|
||||
#: packages/email/templates/document-created-from-direct-template.tsx:30
|
||||
#: packages/lib/server-only/template/create-document-from-direct-template.ts:554
|
||||
msgid "Document created from direct template"
|
||||
@ -458,15 +601,55 @@ msgstr "Document created from direct template"
|
||||
msgid "Document Creation"
|
||||
msgstr "Document Creation"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:290
|
||||
msgid "Document deleted"
|
||||
msgstr "Document deleted"
|
||||
|
||||
#: packages/lib/server-only/document/send-delete-email.ts:58
|
||||
msgid "Document Deleted!"
|
||||
msgstr "Document Deleted!"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:326
|
||||
msgid "Document external ID updated"
|
||||
msgstr "Document external ID updated"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:334
|
||||
msgid "Document moved to team"
|
||||
msgstr "Document moved to team"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:318
|
||||
msgid "Document opened"
|
||||
msgstr "Document opened"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:330
|
||||
msgid "Document sent"
|
||||
msgstr "Document sent"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:310
|
||||
msgid "Document signing auth updated"
|
||||
msgstr "Document signing auth updated"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:322
|
||||
msgid "Document title updated"
|
||||
msgstr "Document title updated"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:314
|
||||
msgid "Document updated"
|
||||
msgstr "Document updated"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:302
|
||||
msgid "Document visibility updated"
|
||||
msgstr "Document visibility updated"
|
||||
|
||||
#: packages/email/template-components/template-document-completed.tsx:64
|
||||
#: packages/ui/components/document/document-download-button.tsx:68
|
||||
msgid "Download"
|
||||
msgstr "Download"
|
||||
|
||||
#: packages/lib/constants/document.ts:13
|
||||
msgid "Draft"
|
||||
msgstr "Draft"
|
||||
|
||||
#: packages/ui/primitives/document-dropzone.tsx:162
|
||||
msgid "Drag & drop your PDF here."
|
||||
msgstr "Drag & drop your PDF here."
|
||||
@ -499,6 +682,14 @@ msgstr "Email is required"
|
||||
msgid "Email Options"
|
||||
msgstr "Email Options"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:353
|
||||
msgid "Email resent"
|
||||
msgstr "Email resent"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:353
|
||||
msgid "Email sent"
|
||||
msgstr "Email sent"
|
||||
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:1123
|
||||
msgid "Empty field"
|
||||
msgstr "Empty field"
|
||||
@ -559,6 +750,14 @@ msgstr "Field label"
|
||||
msgid "Field placeholder"
|
||||
msgstr "Field placeholder"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:294
|
||||
msgid "Field signed"
|
||||
msgstr "Field signed"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:298
|
||||
msgid "Field unsigned"
|
||||
msgstr "Field unsigned"
|
||||
|
||||
#: packages/ui/primitives/document-flow/field-items-advanced-settings/date-field.tsx:56
|
||||
#: packages/ui/primitives/document-flow/field-items-advanced-settings/email-field.tsx:38
|
||||
#: packages/ui/primitives/document-flow/field-items-advanced-settings/initials-field.tsx:38
|
||||
@ -769,6 +968,10 @@ msgstr "Password Reset Successful"
|
||||
msgid "Password updated!"
|
||||
msgstr "Password updated!"
|
||||
|
||||
#: packages/lib/constants/document.ts:16
|
||||
msgid "Pending"
|
||||
msgstr "Pending"
|
||||
|
||||
#: packages/email/templates/document-pending.tsx:17
|
||||
msgid "Pending Document"
|
||||
msgstr "Pending Document"
|
||||
@ -836,6 +1039,10 @@ msgstr "Read only"
|
||||
msgid "Receives copy"
|
||||
msgstr "Receives copy"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:338
|
||||
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/template-flow/add-template-settings.tsx:208
|
||||
@ -1243,6 +1450,10 @@ msgstr "We've changed your password as you asked. You can now sign in with your
|
||||
msgid "Welcome to Documenso!"
|
||||
msgstr "Welcome to Documenso!"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:258
|
||||
msgid "You"
|
||||
msgstr "You"
|
||||
|
||||
#: packages/ui/primitives/document-flow/send-document-action-dialog.tsx:44
|
||||
msgid "You are about to send this document to the recipients. Are you sure you want to continue?"
|
||||
msgstr "You are about to send this document to the recipients. Are you sure you want to continue?"
|
||||
|
||||
@ -37,7 +37,7 @@ msgstr "Add document"
|
||||
msgid "Add More Users for {0}"
|
||||
msgstr "Add More Users for {0}"
|
||||
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:164
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:165
|
||||
msgid "All our metrics, finances, and learnings are public. We believe in transparency and want to share our journey with you. You can read more about why here: <0>Announcing Open Metrics</0>"
|
||||
msgstr "All our metrics, finances, and learnings are public. We believe in transparency and want to share our journey with you. You can read more about why here: <0>Announcing Open Metrics</0>"
|
||||
|
||||
@ -85,7 +85,7 @@ msgstr "Changelog"
|
||||
msgid "Choose a template from the community app store. Or submit your own template for others to use."
|
||||
msgstr "Choose a template from the community app store. Or submit your own template for others to use."
|
||||
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:218
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:219
|
||||
msgid "Community"
|
||||
msgstr "Community"
|
||||
|
||||
@ -188,7 +188,7 @@ msgstr "Fast."
|
||||
msgid "Faster, smarter and more beautiful."
|
||||
msgstr "Faster, smarter and more beautiful."
|
||||
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:209
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:210
|
||||
msgid "Finances"
|
||||
msgstr "Finances"
|
||||
|
||||
@ -241,15 +241,15 @@ msgstr "Get started today."
|
||||
msgid "Get the latest news from Documenso, including product updates, team announcements and more!"
|
||||
msgstr "Get the latest news from Documenso, including product updates, team announcements and more!"
|
||||
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:232
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:233
|
||||
msgid "GitHub: Total Merged PRs"
|
||||
msgstr "GitHub: Total Merged PRs"
|
||||
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:250
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:251
|
||||
msgid "GitHub: Total Open Issues"
|
||||
msgstr "GitHub: Total Open Issues"
|
||||
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:224
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:225
|
||||
msgid "GitHub: Total Stars"
|
||||
msgstr "GitHub: Total Stars"
|
||||
|
||||
@ -257,7 +257,7 @@ msgstr "GitHub: Total Stars"
|
||||
msgid "Global Salary Bands"
|
||||
msgstr "Global Salary Bands"
|
||||
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:260
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:261
|
||||
msgid "Growth"
|
||||
msgstr "Growth"
|
||||
|
||||
@ -281,7 +281,7 @@ msgstr "Integrated payments with Stripe so you don’t have to worry about getti
|
||||
msgid "Integrates with all your favourite tools."
|
||||
msgstr "Integrates with all your favourite tools."
|
||||
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:288
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:289
|
||||
msgid "Is there more?"
|
||||
msgstr "Is there more?"
|
||||
|
||||
@ -305,11 +305,11 @@ msgstr "Location"
|
||||
msgid "Make it your own through advanced customization and adjustability."
|
||||
msgstr "Make it your own through advanced customization and adjustability."
|
||||
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:198
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:199
|
||||
msgid "Merged PR's"
|
||||
msgstr "Merged PR's"
|
||||
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:233
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:234
|
||||
msgid "Merged PRs"
|
||||
msgstr "Merged PRs"
|
||||
|
||||
@ -340,8 +340,8 @@ msgstr "No Credit Card required"
|
||||
msgid "None of these work for you? Try self-hosting!"
|
||||
msgstr "None of these work for you? Try self-hosting!"
|
||||
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:193
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:251
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:194
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:252
|
||||
msgid "Open Issues"
|
||||
msgstr "Open Issues"
|
||||
|
||||
@ -349,7 +349,7 @@ msgstr "Open Issues"
|
||||
msgid "Open Source or Hosted."
|
||||
msgstr "Open Source or Hosted."
|
||||
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:160
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:161
|
||||
#: apps/marketing/src/components/(marketing)/footer.tsx:37
|
||||
#: apps/marketing/src/components/(marketing)/header.tsx:64
|
||||
#: apps/marketing/src/components/(marketing)/mobile-navigation.tsx:40
|
||||
@ -461,7 +461,7 @@ msgstr "Smart."
|
||||
msgid "Star on GitHub"
|
||||
msgstr "Star on GitHub"
|
||||
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:225
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:226
|
||||
msgid "Stars"
|
||||
msgstr "Stars"
|
||||
|
||||
@ -496,7 +496,7 @@ msgstr "Template Store (Soon)."
|
||||
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 "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 ❤️"
|
||||
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:292
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:293
|
||||
msgid "This page is evolving as we learn what makes a great signing company. We'll update it when we have more to share."
|
||||
msgstr "This page is evolving as we learn what makes a great signing company. We'll update it when we have more to share."
|
||||
|
||||
@ -509,8 +509,8 @@ msgstr "Title"
|
||||
msgid "Total Completed Documents"
|
||||
msgstr "Total Completed Documents"
|
||||
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:266
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:267
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:268
|
||||
msgid "Total Customers"
|
||||
msgstr "Total Customers"
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -8,7 +8,7 @@ msgstr ""
|
||||
"Language: es\n"
|
||||
"Project-Id-Version: documenso-app\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2024-11-05 02:04\n"
|
||||
"PO-Revision-Date: 2024-11-05 09:34\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Spanish\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
@ -96,6 +96,90 @@ msgstr "{memberEmail} se unió al siguiente equipo"
|
||||
msgid "{memberEmail} left the following team"
|
||||
msgstr "{memberEmail} dejó el siguiente equipo"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:263
|
||||
msgid "{prefix} added a field"
|
||||
msgstr "{prefix} agregó un campo"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:275
|
||||
msgid "{prefix} added a recipient"
|
||||
msgstr "{prefix} agregó un destinatario"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:287
|
||||
msgid "{prefix} created the document"
|
||||
msgstr "{prefix} creó el documento"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:291
|
||||
msgid "{prefix} deleted the document"
|
||||
msgstr "{prefix} eliminó el documento"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:335
|
||||
msgid "{prefix} moved the document to team"
|
||||
msgstr "{prefix} movió el documento al equipo"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:319
|
||||
msgid "{prefix} opened the document"
|
||||
msgstr "{prefix} abrió el documento"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:267
|
||||
msgid "{prefix} removed a field"
|
||||
msgstr "{prefix} eliminó un campo"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:279
|
||||
msgid "{prefix} removed a recipient"
|
||||
msgstr "{prefix} eliminó un destinatario"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:355
|
||||
msgid "{prefix} resent an email to {0}"
|
||||
msgstr "{prefix} reenviaron un correo electrónico a {0}"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:356
|
||||
msgid "{prefix} sent an email to {0}"
|
||||
msgstr "{prefix} envió un correo electrónico a {0}"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:331
|
||||
msgid "{prefix} sent the document"
|
||||
msgstr "{prefix} envió el documento"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:295
|
||||
msgid "{prefix} signed a field"
|
||||
msgstr "{prefix} firmó un campo"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:299
|
||||
msgid "{prefix} unsigned a field"
|
||||
msgstr "{prefix} no firmó un campo"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:271
|
||||
msgid "{prefix} updated a field"
|
||||
msgstr "{prefix} actualizó un campo"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:283
|
||||
msgid "{prefix} updated a recipient"
|
||||
msgstr "{prefix} actualizó un destinatario"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:315
|
||||
msgid "{prefix} updated the document"
|
||||
msgstr "{prefix} actualizó el documento"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:307
|
||||
msgid "{prefix} updated the document access auth requirements"
|
||||
msgstr "{prefix} actualizó los requisitos de autorización de acceso al documento"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:327
|
||||
msgid "{prefix} updated the document external ID"
|
||||
msgstr "{prefix} actualizó el ID externo del documento"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:311
|
||||
msgid "{prefix} updated the document signing auth requirements"
|
||||
msgstr "{prefix} actualizó los requisitos de autenticación para la firma del documento"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:323
|
||||
msgid "{prefix} updated the document title"
|
||||
msgstr "{prefix} actualizó el título del documento"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:303
|
||||
msgid "{prefix} updated the document visibility"
|
||||
msgstr "{prefix} actualizó la visibilidad del documento"
|
||||
|
||||
#: packages/email/templates/document-created-from-direct-template.tsx:55
|
||||
msgid "{recipientName} {action} a document by using one of your direct links"
|
||||
msgstr "{recipientName} {action} un documento utilizando uno de tus enlaces directos"
|
||||
@ -104,6 +188,26 @@ msgstr "{recipientName} {action} un documento utilizando uno de tus enlaces dire
|
||||
msgid "{teamName} ownership transfer request"
|
||||
msgstr "solicitud de transferencia de propiedad de {teamName}"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:343
|
||||
msgid "{userName} approved the document"
|
||||
msgstr "{userName} aprobó el documento"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:344
|
||||
msgid "{userName} CC'd the document"
|
||||
msgstr "{userName} envió una copia del documento"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:345
|
||||
msgid "{userName} completed their task"
|
||||
msgstr "{userName} completó su tarea"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:341
|
||||
msgid "{userName} signed the document"
|
||||
msgstr "{userName} firmó el documento"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:342
|
||||
msgid "{userName} viewed the document"
|
||||
msgstr "{userName} vio el documento"
|
||||
|
||||
#: packages/ui/primitives/data-table-pagination.tsx:41
|
||||
msgid "{visibleRows, plural, one {Showing # result.} other {Showing # results.}}"
|
||||
msgstr "{visibleRows, plural, one {Mostrando # resultado.} other {Mostrando # resultados.}}"
|
||||
@ -150,10 +254,34 @@ msgstr "<0>Requerir clave de acceso</0> - El destinatario debe tener una cuenta
|
||||
msgid "A document was created by your direct template that requires you to {recipientActionVerb} it."
|
||||
msgstr "Se creó un documento a partir de tu plantilla directa que requiere que {recipientActionVerb}."
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:262
|
||||
msgid "A field was added"
|
||||
msgstr "Se añadió un campo"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:266
|
||||
msgid "A field was removed"
|
||||
msgstr "Se eliminó un campo"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:270
|
||||
msgid "A field was updated"
|
||||
msgstr "Se actualizó un campo"
|
||||
|
||||
#: packages/lib/jobs/definitions/emails/send-team-member-joined-email.ts:90
|
||||
msgid "A new member has joined your team"
|
||||
msgstr "Un nuevo miembro se ha unido a tu equipo"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:274
|
||||
msgid "A recipient was added"
|
||||
msgstr "Se añadió un destinatario"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:278
|
||||
msgid "A recipient was removed"
|
||||
msgstr "Se eliminó un destinatario"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:282
|
||||
msgid "A recipient was updated"
|
||||
msgstr "Se actualizó un destinatario"
|
||||
|
||||
#: packages/lib/server-only/team/create-team-email-verification.ts:142
|
||||
msgid "A request to use your email has been initiated by {teamName} on Documenso"
|
||||
msgstr "Se ha iniciado una solicitud para utilizar tu correo electrónico por {teamName} en Documenso"
|
||||
@ -368,6 +496,7 @@ msgstr "Cerrar"
|
||||
|
||||
#: packages/email/template-components/template-document-completed.tsx:35
|
||||
#: packages/email/template-components/template-document-self-signed.tsx:36
|
||||
#: packages/lib/constants/document.ts:10
|
||||
msgid "Completed"
|
||||
msgstr "Completado"
|
||||
|
||||
@ -450,10 +579,24 @@ msgstr "Receptor de enlace directo"
|
||||
msgid "Document access"
|
||||
msgstr "Acceso al documento"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:306
|
||||
msgid "Document access auth updated"
|
||||
msgstr "Se actualizó la autenticación de acceso al documento"
|
||||
|
||||
#: packages/lib/server-only/document/delete-document.ts:213
|
||||
#: packages/lib/server-only/document/super-delete-document.ts:75
|
||||
msgid "Document Cancelled"
|
||||
msgstr "Documento cancelado"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:359
|
||||
#: packages/lib/utils/document-audit-logs.ts:360
|
||||
msgid "Document completed"
|
||||
msgstr "Documento completado"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:286
|
||||
msgid "Document created"
|
||||
msgstr "Documento creado"
|
||||
|
||||
#: packages/email/templates/document-created-from-direct-template.tsx:30
|
||||
#: packages/lib/server-only/template/create-document-from-direct-template.ts:554
|
||||
msgid "Document created from direct template"
|
||||
@ -463,15 +606,55 @@ msgstr "Documento creado a partir de plantilla directa"
|
||||
msgid "Document Creation"
|
||||
msgstr "Creación de documento"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:290
|
||||
msgid "Document deleted"
|
||||
msgstr "Documento eliminado"
|
||||
|
||||
#: packages/lib/server-only/document/send-delete-email.ts:58
|
||||
msgid "Document Deleted!"
|
||||
msgstr "¡Documento eliminado!"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:326
|
||||
msgid "Document external ID updated"
|
||||
msgstr "ID externo del documento actualizado"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:334
|
||||
msgid "Document moved to team"
|
||||
msgstr "Documento movido al equipo"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:318
|
||||
msgid "Document opened"
|
||||
msgstr "Documento abierto"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:330
|
||||
msgid "Document sent"
|
||||
msgstr "Documento enviado"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:310
|
||||
msgid "Document signing auth updated"
|
||||
msgstr "Se actualizó la autenticación de firma del documento"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:322
|
||||
msgid "Document title updated"
|
||||
msgstr "Título del documento actualizado"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:314
|
||||
msgid "Document updated"
|
||||
msgstr "Documento actualizado"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:302
|
||||
msgid "Document visibility updated"
|
||||
msgstr "Visibilidad del documento actualizada"
|
||||
|
||||
#: packages/email/template-components/template-document-completed.tsx:64
|
||||
#: packages/ui/components/document/document-download-button.tsx:68
|
||||
msgid "Download"
|
||||
msgstr "Descargar"
|
||||
|
||||
#: packages/lib/constants/document.ts:13
|
||||
msgid "Draft"
|
||||
msgstr "Borrador"
|
||||
|
||||
#: packages/ui/primitives/document-dropzone.tsx:162
|
||||
msgid "Drag & drop your PDF here."
|
||||
msgstr "Arrastre y suelte su PDF aquí."
|
||||
@ -504,6 +687,14 @@ msgstr "Se requiere email"
|
||||
msgid "Email Options"
|
||||
msgstr "Opciones de correo electrónico"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:353
|
||||
msgid "Email resent"
|
||||
msgstr "Correo electrónico reeenviado"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:353
|
||||
msgid "Email sent"
|
||||
msgstr "Correo electrónico enviado"
|
||||
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:1123
|
||||
msgid "Empty field"
|
||||
msgstr "Campo vacío"
|
||||
@ -564,6 +755,14 @@ msgstr "Etiqueta de campo"
|
||||
msgid "Field placeholder"
|
||||
msgstr "Marcador de posición de campo"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:294
|
||||
msgid "Field signed"
|
||||
msgstr "Campo firmado"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:298
|
||||
msgid "Field unsigned"
|
||||
msgstr "Campo no firmado"
|
||||
|
||||
#: packages/ui/primitives/document-flow/field-items-advanced-settings/date-field.tsx:56
|
||||
#: packages/ui/primitives/document-flow/field-items-advanced-settings/email-field.tsx:38
|
||||
#: packages/ui/primitives/document-flow/field-items-advanced-settings/initials-field.tsx:38
|
||||
@ -774,6 +973,10 @@ msgstr "Restablecimiento de contraseña exitoso"
|
||||
msgid "Password updated!"
|
||||
msgstr "¡Contraseña actualizada!"
|
||||
|
||||
#: packages/lib/constants/document.ts:16
|
||||
msgid "Pending"
|
||||
msgstr "Pendiente"
|
||||
|
||||
#: packages/email/templates/document-pending.tsx:17
|
||||
msgid "Pending Document"
|
||||
msgstr "Documento pendiente"
|
||||
@ -841,6 +1044,10 @@ msgstr "Solo lectura"
|
||||
msgid "Receives copy"
|
||||
msgstr "Recibe copia"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:338
|
||||
msgid "Recipient"
|
||||
msgstr "Destinatario"
|
||||
|
||||
#: packages/ui/components/recipient/recipient-action-auth-select.tsx:39
|
||||
#: packages/ui/primitives/document-flow/add-settings.tsx:257
|
||||
#: packages/ui/primitives/template-flow/add-template-settings.tsx:208
|
||||
@ -1248,6 +1455,10 @@ msgstr "Hemos cambiado tu contraseña como solicitaste. Ahora puedes iniciar ses
|
||||
msgid "Welcome to Documenso!"
|
||||
msgstr "¡Bienvenido a Documenso!"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:258
|
||||
msgid "You"
|
||||
msgstr "Tú"
|
||||
|
||||
#: packages/ui/primitives/document-flow/send-document-action-dialog.tsx:44
|
||||
msgid "You are about to send this document to the recipients. Are you sure you want to continue?"
|
||||
msgstr "Está a punto de enviar este documento a los destinatarios. ¿Está seguro de que desea continuar?"
|
||||
@ -1309,4 +1520,3 @@ msgstr "Tu contraseña ha sido actualizada."
|
||||
#: packages/email/templates/team-delete.tsx:30
|
||||
msgid "Your team has been deleted"
|
||||
msgstr "Tu equipo ha sido eliminado"
|
||||
|
||||
|
||||
@ -8,7 +8,7 @@ msgstr ""
|
||||
"Language: es\n"
|
||||
"Project-Id-Version: documenso-app\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2024-11-05 02:04\n"
|
||||
"PO-Revision-Date: 2024-11-05 09:34\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Spanish\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
@ -42,7 +42,7 @@ msgstr "Agregar documento"
|
||||
msgid "Add More Users for {0}"
|
||||
msgstr "Agregar más usuarios por {0}"
|
||||
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:164
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:165
|
||||
msgid "All our metrics, finances, and learnings are public. We believe in transparency and want to share our journey with you. You can read more about why here: <0>Announcing Open Metrics</0>"
|
||||
msgstr "Todos nuestros métricas, finanzas y aprendizajes son públicos. Creemos en la transparencia y queremos compartir nuestro viaje contigo. Puedes leer más sobre por qué aquí: <0>Anunciando Métricas Abiertas</0>"
|
||||
|
||||
@ -90,7 +90,7 @@ msgstr "Registro de cambios"
|
||||
msgid "Choose a template from the community app store. Or submit your own template for others to use."
|
||||
msgstr "Elige una plantilla de la tienda de aplicaciones de la comunidad. O envía tu propia plantilla para que otros la usen."
|
||||
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:218
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:219
|
||||
msgid "Community"
|
||||
msgstr "Comunidad"
|
||||
|
||||
@ -193,7 +193,7 @@ msgstr "Rápido."
|
||||
msgid "Faster, smarter and more beautiful."
|
||||
msgstr "Más rápido, más inteligente y más hermoso."
|
||||
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:209
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:210
|
||||
msgid "Finances"
|
||||
msgstr "Finanzas"
|
||||
|
||||
@ -246,15 +246,15 @@ msgstr "Comienza hoy."
|
||||
msgid "Get the latest news from Documenso, including product updates, team announcements and more!"
|
||||
msgstr "¡Obtén las últimas noticias de Documenso, incluidas actualizaciones de productos, anuncios del equipo y más!"
|
||||
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:232
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:233
|
||||
msgid "GitHub: Total Merged PRs"
|
||||
msgstr "GitHub: Total de PRs fusionados"
|
||||
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:250
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:251
|
||||
msgid "GitHub: Total Open Issues"
|
||||
msgstr "GitHub: Total de problemas abiertos"
|
||||
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:224
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:225
|
||||
msgid "GitHub: Total Stars"
|
||||
msgstr "GitHub: Total de estrellas"
|
||||
|
||||
@ -262,7 +262,7 @@ msgstr "GitHub: Total de estrellas"
|
||||
msgid "Global Salary Bands"
|
||||
msgstr "Bandas salariales globales"
|
||||
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:260
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:261
|
||||
msgid "Growth"
|
||||
msgstr "Crecimiento"
|
||||
|
||||
@ -286,7 +286,7 @@ msgstr "Pagos integrados con Stripe para que no tengas que preocuparte por cobra
|
||||
msgid "Integrates with all your favourite tools."
|
||||
msgstr "Se integra con todas tus herramientas favoritas."
|
||||
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:288
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:289
|
||||
msgid "Is there more?"
|
||||
msgstr "¿Hay más?"
|
||||
|
||||
@ -310,11 +310,11 @@ msgstr "Ubicación"
|
||||
msgid "Make it your own through advanced customization and adjustability."
|
||||
msgstr "Hazlo tuyo a través de personalización y ajustabilidad avanzadas."
|
||||
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:198
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:199
|
||||
msgid "Merged PR's"
|
||||
msgstr "PRs fusionados"
|
||||
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:233
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:234
|
||||
msgid "Merged PRs"
|
||||
msgstr "PRs fusionados"
|
||||
|
||||
@ -345,8 +345,8 @@ msgstr "No se requiere tarjeta de crédito"
|
||||
msgid "None of these work for you? Try self-hosting!"
|
||||
msgstr "¿Ninguna de estas opciones funciona para ti? ¡Prueba el autoalojamiento!"
|
||||
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:193
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:251
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:194
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:252
|
||||
msgid "Open Issues"
|
||||
msgstr "Problemas Abiertos"
|
||||
|
||||
@ -354,7 +354,7 @@ msgstr "Problemas Abiertos"
|
||||
msgid "Open Source or Hosted."
|
||||
msgstr "Código Abierto o Alojado."
|
||||
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:160
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:161
|
||||
#: apps/marketing/src/components/(marketing)/footer.tsx:37
|
||||
#: apps/marketing/src/components/(marketing)/header.tsx:64
|
||||
#: apps/marketing/src/components/(marketing)/mobile-navigation.tsx:40
|
||||
@ -466,7 +466,7 @@ msgstr "Inteligente."
|
||||
msgid "Star on GitHub"
|
||||
msgstr "Estrella en GitHub"
|
||||
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:225
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:226
|
||||
msgid "Stars"
|
||||
msgstr "Estrellas"
|
||||
|
||||
@ -501,7 +501,7 @@ msgstr "Tienda de Plantillas (Pronto)."
|
||||
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 "Eso es increíble. Puedes echar un vistazo a los <0>Problemas</0> actuales y unirte a nuestra <1>Comunidad de Discord</1> para mantenerte al día sobre cuáles son las prioridades actuales. En cualquier caso, somos una comunidad abierta y agradecemos todas las aportaciones, técnicas y no técnicas ❤️"
|
||||
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:292
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:293
|
||||
msgid "This page is evolving as we learn what makes a great signing company. We'll update it when we have more to share."
|
||||
msgstr "Esta página está evolucionando a medida que aprendemos lo que hace una gran empresa de firmas. La actualizaremos cuando tengamos más para compartir."
|
||||
|
||||
@ -514,8 +514,8 @@ msgstr "Título"
|
||||
msgid "Total Completed Documents"
|
||||
msgstr "Total de Documentos Completados"
|
||||
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:266
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:267
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:268
|
||||
msgid "Total Customers"
|
||||
msgstr "Total de Clientes"
|
||||
|
||||
@ -602,4 +602,3 @@ msgstr "Puedes autoalojar Documenso de forma gratuita o usar nuestra versión al
|
||||
#: apps/marketing/src/components/(marketing)/carousel.tsx:272
|
||||
msgid "Your browser does not support the video tag."
|
||||
msgstr "Tu navegador no soporta la etiqueta de video."
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -8,7 +8,7 @@ msgstr ""
|
||||
"Language: fr\n"
|
||||
"Project-Id-Version: documenso-app\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2024-11-05 02:04\n"
|
||||
"PO-Revision-Date: 2024-11-05 09:34\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: French\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
@ -96,6 +96,90 @@ msgstr "{memberEmail} a rejoint l'équipe suivante"
|
||||
msgid "{memberEmail} left the following team"
|
||||
msgstr "{memberEmail} a quitté l'équipe suivante"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:263
|
||||
msgid "{prefix} added a field"
|
||||
msgstr "{prefix} a ajouté un champ"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:275
|
||||
msgid "{prefix} added a recipient"
|
||||
msgstr "{prefix} a ajouté un destinataire"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:287
|
||||
msgid "{prefix} created the document"
|
||||
msgstr "{prefix} a créé le document"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:291
|
||||
msgid "{prefix} deleted the document"
|
||||
msgstr "{prefix} a supprimé le document"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:335
|
||||
msgid "{prefix} moved the document to team"
|
||||
msgstr "{prefix} a déplacé le document vers l'équipe"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:319
|
||||
msgid "{prefix} opened the document"
|
||||
msgstr "{prefix} a ouvert le document"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:267
|
||||
msgid "{prefix} removed a field"
|
||||
msgstr "{prefix} a supprimé un champ"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:279
|
||||
msgid "{prefix} removed a recipient"
|
||||
msgstr "{prefix} a supprimé un destinataire"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:355
|
||||
msgid "{prefix} resent an email to {0}"
|
||||
msgstr "{prefix} a renvoyé un e-mail à {0}"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:356
|
||||
msgid "{prefix} sent an email to {0}"
|
||||
msgstr "{prefix} a envoyé un email à {0}"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:331
|
||||
msgid "{prefix} sent the document"
|
||||
msgstr "{prefix} a envoyé le document"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:295
|
||||
msgid "{prefix} signed a field"
|
||||
msgstr "{prefix} a signé un champ"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:299
|
||||
msgid "{prefix} unsigned a field"
|
||||
msgstr "{prefix} n'a pas signé un champ"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:271
|
||||
msgid "{prefix} updated a field"
|
||||
msgstr "{prefix} a mis à jour un champ"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:283
|
||||
msgid "{prefix} updated a recipient"
|
||||
msgstr "{prefix} a mis à jour un destinataire"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:315
|
||||
msgid "{prefix} updated the document"
|
||||
msgstr "{prefix} a mis à jour le document"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:307
|
||||
msgid "{prefix} updated the document access auth requirements"
|
||||
msgstr "{prefix} a mis à jour les exigences d'authentification d'accès au document"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:327
|
||||
msgid "{prefix} updated the document external ID"
|
||||
msgstr "{prefix} a mis à jour l'ID externe du document"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:311
|
||||
msgid "{prefix} updated the document signing auth requirements"
|
||||
msgstr "{prefix} a mis à jour les exigences d'authentification pour la signature du document"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:323
|
||||
msgid "{prefix} updated the document title"
|
||||
msgstr "{prefix} a mis à jour le titre du document"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:303
|
||||
msgid "{prefix} updated the document visibility"
|
||||
msgstr "{prefix} a mis à jour la visibilité du document"
|
||||
|
||||
#: packages/email/templates/document-created-from-direct-template.tsx:55
|
||||
msgid "{recipientName} {action} a document by using one of your direct links"
|
||||
msgstr "{recipientName} {action} un document en utilisant l'un de vos liens directs"
|
||||
@ -104,6 +188,26 @@ msgstr "{recipientName} {action} un document en utilisant l'un de vos liens dire
|
||||
msgid "{teamName} ownership transfer request"
|
||||
msgstr "Demande de transfert de propriété de {teamName}"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:343
|
||||
msgid "{userName} approved the document"
|
||||
msgstr "{userName} a approuvé le document"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:344
|
||||
msgid "{userName} CC'd the document"
|
||||
msgstr "{userName} a mis en copie le document"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:345
|
||||
msgid "{userName} completed their task"
|
||||
msgstr "{userName} a complété sa tâche"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:341
|
||||
msgid "{userName} signed the document"
|
||||
msgstr "{userName} a signé le document"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:342
|
||||
msgid "{userName} viewed the document"
|
||||
msgstr "{userName} a consulté le document"
|
||||
|
||||
#: packages/ui/primitives/data-table-pagination.tsx:41
|
||||
msgid "{visibleRows, plural, one {Showing # result.} other {Showing # results.}}"
|
||||
msgstr "{visibleRows, plural, one {Affichage de # résultat.} other {Affichage de # résultats.}}"
|
||||
@ -150,10 +254,34 @@ msgstr "<0>Exiger une clé d'accès</0> - Le destinataire doit avoir un compte e
|
||||
msgid "A document was created by your direct template that requires you to {recipientActionVerb} it."
|
||||
msgstr "Un document a été créé par votre modèle direct qui nécessite que vous {recipientActionVerb} celui-ci."
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:262
|
||||
msgid "A field was added"
|
||||
msgstr "Un champ a été ajouté"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:266
|
||||
msgid "A field was removed"
|
||||
msgstr "Un champ a été supprimé"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:270
|
||||
msgid "A field was updated"
|
||||
msgstr "Un champ a été mis à jour"
|
||||
|
||||
#: packages/lib/jobs/definitions/emails/send-team-member-joined-email.ts:90
|
||||
msgid "A new member has joined your team"
|
||||
msgstr "Un nouveau membre a rejoint votre équipe"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:274
|
||||
msgid "A recipient was added"
|
||||
msgstr "Un destinataire a été ajouté"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:278
|
||||
msgid "A recipient was removed"
|
||||
msgstr "Un destinataire a été supprimé"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:282
|
||||
msgid "A recipient was updated"
|
||||
msgstr "Un destinataire a été mis à jour"
|
||||
|
||||
#: packages/lib/server-only/team/create-team-email-verification.ts:142
|
||||
msgid "A request to use your email has been initiated by {teamName} on Documenso"
|
||||
msgstr "Une demande d'utilisation de votre email a été initiée par {teamName} sur Documenso"
|
||||
@ -368,6 +496,7 @@ msgstr "Fermer"
|
||||
|
||||
#: packages/email/template-components/template-document-completed.tsx:35
|
||||
#: packages/email/template-components/template-document-self-signed.tsx:36
|
||||
#: packages/lib/constants/document.ts:10
|
||||
msgid "Completed"
|
||||
msgstr "Terminé"
|
||||
|
||||
@ -450,10 +579,24 @@ msgstr "Receveur de lien direct"
|
||||
msgid "Document access"
|
||||
msgstr "Accès au document"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:306
|
||||
msgid "Document access auth updated"
|
||||
msgstr "L'authentification d'accès au document a été mise à jour"
|
||||
|
||||
#: packages/lib/server-only/document/delete-document.ts:213
|
||||
#: packages/lib/server-only/document/super-delete-document.ts:75
|
||||
msgid "Document Cancelled"
|
||||
msgstr "Document Annulé"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:359
|
||||
#: packages/lib/utils/document-audit-logs.ts:360
|
||||
msgid "Document completed"
|
||||
msgstr "Document terminé"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:286
|
||||
msgid "Document created"
|
||||
msgstr "Document créé"
|
||||
|
||||
#: packages/email/templates/document-created-from-direct-template.tsx:30
|
||||
#: packages/lib/server-only/template/create-document-from-direct-template.ts:554
|
||||
msgid "Document created from direct template"
|
||||
@ -463,15 +606,55 @@ msgstr "Document créé à partir d'un modèle direct"
|
||||
msgid "Document Creation"
|
||||
msgstr "Création de document"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:290
|
||||
msgid "Document deleted"
|
||||
msgstr "Document supprimé"
|
||||
|
||||
#: packages/lib/server-only/document/send-delete-email.ts:58
|
||||
msgid "Document Deleted!"
|
||||
msgstr "Document Supprimé !"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:326
|
||||
msgid "Document external ID updated"
|
||||
msgstr "ID externe du document mis à jour"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:334
|
||||
msgid "Document moved to team"
|
||||
msgstr "Document déplacé vers l'équipe"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:318
|
||||
msgid "Document opened"
|
||||
msgstr "Document ouvert"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:330
|
||||
msgid "Document sent"
|
||||
msgstr "Document envoyé"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:310
|
||||
msgid "Document signing auth updated"
|
||||
msgstr "Authentification de signature de document mise à jour"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:322
|
||||
msgid "Document title updated"
|
||||
msgstr "Titre du document mis à jour"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:314
|
||||
msgid "Document updated"
|
||||
msgstr "Document mis à jour"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:302
|
||||
msgid "Document visibility updated"
|
||||
msgstr "Visibilité du document mise à jour"
|
||||
|
||||
#: packages/email/template-components/template-document-completed.tsx:64
|
||||
#: packages/ui/components/document/document-download-button.tsx:68
|
||||
msgid "Download"
|
||||
msgstr "Télécharger"
|
||||
|
||||
#: packages/lib/constants/document.ts:13
|
||||
msgid "Draft"
|
||||
msgstr "Brouillon"
|
||||
|
||||
#: packages/ui/primitives/document-dropzone.tsx:162
|
||||
msgid "Drag & drop your PDF here."
|
||||
msgstr "Faites glisser et déposez votre PDF ici."
|
||||
@ -504,6 +687,14 @@ msgstr "L'email est requis"
|
||||
msgid "Email Options"
|
||||
msgstr "Options d'email"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:353
|
||||
msgid "Email resent"
|
||||
msgstr "Email renvoyé"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:353
|
||||
msgid "Email sent"
|
||||
msgstr "Email envoyé"
|
||||
|
||||
#: packages/ui/primitives/document-flow/add-fields.tsx:1123
|
||||
msgid "Empty field"
|
||||
msgstr "Champ vide"
|
||||
@ -564,6 +755,14 @@ msgstr "Étiquette du champ"
|
||||
msgid "Field placeholder"
|
||||
msgstr "Espace réservé du champ"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:294
|
||||
msgid "Field signed"
|
||||
msgstr "Champ signé"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:298
|
||||
msgid "Field unsigned"
|
||||
msgstr "Champ non signé"
|
||||
|
||||
#: packages/ui/primitives/document-flow/field-items-advanced-settings/date-field.tsx:56
|
||||
#: packages/ui/primitives/document-flow/field-items-advanced-settings/email-field.tsx:38
|
||||
#: packages/ui/primitives/document-flow/field-items-advanced-settings/initials-field.tsx:38
|
||||
@ -774,6 +973,10 @@ msgstr "Réinitialisation du mot de passe réussie"
|
||||
msgid "Password updated!"
|
||||
msgstr "Mot de passe mis à jour !"
|
||||
|
||||
#: packages/lib/constants/document.ts:16
|
||||
msgid "Pending"
|
||||
msgstr "En attente"
|
||||
|
||||
#: packages/email/templates/document-pending.tsx:17
|
||||
msgid "Pending Document"
|
||||
msgstr "Document En Attente"
|
||||
@ -841,6 +1044,10 @@ msgstr "Lecture seule"
|
||||
msgid "Receives copy"
|
||||
msgstr "Recevoir une copie"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:338
|
||||
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/template-flow/add-template-settings.tsx:208
|
||||
@ -1248,6 +1455,10 @@ msgstr "Nous avons changé votre mot de passe comme demandé. Vous pouvez mainte
|
||||
msgid "Welcome to Documenso!"
|
||||
msgstr "Bienvenue sur Documenso !"
|
||||
|
||||
#: packages/lib/utils/document-audit-logs.ts:258
|
||||
msgid "You"
|
||||
msgstr "Vous"
|
||||
|
||||
#: packages/ui/primitives/document-flow/send-document-action-dialog.tsx:44
|
||||
msgid "You are about to send this document to the recipients. Are you sure you want to continue?"
|
||||
msgstr "Vous êtes sur le point d'envoyer ce document aux destinataires. Êtes-vous sûr de vouloir continuer ?"
|
||||
@ -1309,4 +1520,3 @@ msgstr "Votre mot de passe a été mis à jour."
|
||||
#: packages/email/templates/team-delete.tsx:30
|
||||
msgid "Your team has been deleted"
|
||||
msgstr "Votre équipe a été supprimée"
|
||||
|
||||
|
||||
@ -8,7 +8,7 @@ msgstr ""
|
||||
"Language: fr\n"
|
||||
"Project-Id-Version: documenso-app\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"PO-Revision-Date: 2024-11-05 02:04\n"
|
||||
"PO-Revision-Date: 2024-11-05 09:34\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: French\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
@ -42,7 +42,7 @@ msgstr "Ajouter un document"
|
||||
msgid "Add More Users for {0}"
|
||||
msgstr "Ajouter plus d'utilisateurs pour {0}"
|
||||
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:164
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:165
|
||||
msgid "All our metrics, finances, and learnings are public. We believe in transparency and want to share our journey with you. You can read more about why here: <0>Announcing Open Metrics</0>"
|
||||
msgstr "Tous nos indicateurs, finances et apprentissages sont publics. Nous croyons en la transparence et souhaitons partager notre parcours avec vous. Vous pouvez en lire plus sur pourquoi ici : <0>Annonce de Open Metrics</0>"
|
||||
|
||||
@ -90,7 +90,7 @@ msgstr "Changelog"
|
||||
msgid "Choose a template from the community app store. Or submit your own template for others to use."
|
||||
msgstr "Choisissez un modèle dans la boutique d'applications communautaires. Ou soumettez votre propre modèle pour que d'autres puissent l'utiliser."
|
||||
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:218
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:219
|
||||
msgid "Community"
|
||||
msgstr "Communauté"
|
||||
|
||||
@ -193,7 +193,7 @@ msgstr "Rapide."
|
||||
msgid "Faster, smarter and more beautiful."
|
||||
msgstr "Plus rapide, plus intelligent et plus beau."
|
||||
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:209
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:210
|
||||
msgid "Finances"
|
||||
msgstr "Finances"
|
||||
|
||||
@ -246,15 +246,15 @@ msgstr "Commencez aujourd'hui."
|
||||
msgid "Get the latest news from Documenso, including product updates, team announcements and more!"
|
||||
msgstr "Obtenez les dernières nouvelles de Documenso, y compris les mises à jour de produits, les annonces d'équipe et plus encore !"
|
||||
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:232
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:233
|
||||
msgid "GitHub: Total Merged PRs"
|
||||
msgstr "GitHub : Total des PRs fusionnées"
|
||||
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:250
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:251
|
||||
msgid "GitHub: Total Open Issues"
|
||||
msgstr "GitHub : Total des problèmes ouverts"
|
||||
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:224
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:225
|
||||
msgid "GitHub: Total Stars"
|
||||
msgstr "GitHub : Nombre total d'étoiles"
|
||||
|
||||
@ -262,7 +262,7 @@ msgstr "GitHub : Nombre total d'étoiles"
|
||||
msgid "Global Salary Bands"
|
||||
msgstr "Bandes de salaire globales"
|
||||
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:260
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:261
|
||||
msgid "Growth"
|
||||
msgstr "Croissance"
|
||||
|
||||
@ -286,7 +286,7 @@ msgstr "Paiements intégrés avec Stripe afin que vous n'ayez pas à vous soucie
|
||||
msgid "Integrates with all your favourite tools."
|
||||
msgstr "S'intègre à tous vos outils préférés."
|
||||
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:288
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:289
|
||||
msgid "Is there more?"
|
||||
msgstr "Y a-t-il plus ?"
|
||||
|
||||
@ -310,11 +310,11 @@ msgstr "Emplacement"
|
||||
msgid "Make it your own through advanced customization and adjustability."
|
||||
msgstr "Faites-en votre propre grâce à une personnalisation avancée et un ajustement."
|
||||
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:198
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:199
|
||||
msgid "Merged PR's"
|
||||
msgstr "PRs fusionnées"
|
||||
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:233
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:234
|
||||
msgid "Merged PRs"
|
||||
msgstr "PRs fusionnées"
|
||||
|
||||
@ -345,8 +345,8 @@ msgstr "Aucune carte de crédit requise"
|
||||
msgid "None of these work for you? Try self-hosting!"
|
||||
msgstr "Aucune de ces options ne fonctionne pour vous ? Essayez l'hébergement autonome !"
|
||||
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:193
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:251
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:194
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:252
|
||||
msgid "Open Issues"
|
||||
msgstr "Problèmes ouverts"
|
||||
|
||||
@ -354,7 +354,7 @@ msgstr "Problèmes ouverts"
|
||||
msgid "Open Source or Hosted."
|
||||
msgstr "Open Source ou hébergé."
|
||||
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:160
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:161
|
||||
#: apps/marketing/src/components/(marketing)/footer.tsx:37
|
||||
#: apps/marketing/src/components/(marketing)/header.tsx:64
|
||||
#: apps/marketing/src/components/(marketing)/mobile-navigation.tsx:40
|
||||
@ -466,7 +466,7 @@ msgstr "Intelligent."
|
||||
msgid "Star on GitHub"
|
||||
msgstr "Étoile sur GitHub"
|
||||
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:225
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:226
|
||||
msgid "Stars"
|
||||
msgstr "Étoiles"
|
||||
|
||||
@ -501,7 +501,7 @@ msgstr "Boutique de modèles (Bientôt)."
|
||||
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 ❤️"
|
||||
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:292
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:293
|
||||
msgid "This page is evolving as we learn what makes a great signing company. We'll update it when we have more to share."
|
||||
msgstr "Cette page évolue à mesure que nous apprenons ce qui fait une grande entreprise de signature. Nous la mettrons à jour lorsque nous aurons plus à partager."
|
||||
|
||||
@ -514,8 +514,8 @@ msgstr "Titre"
|
||||
msgid "Total Completed Documents"
|
||||
msgstr "Documents totalisés complétés"
|
||||
|
||||
#: apps/marketing/src/app/(marketing)/open/page.tsx:266
|
||||
#: 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"
|
||||
|
||||
@ -602,4 +602,3 @@ msgstr "Vous pouvez auto-héberger Documenso gratuitement ou utiliser notre vers
|
||||
#: apps/marketing/src/components/(marketing)/carousel.tsx:272
|
||||
msgid "Your browser does not support the video tag."
|
||||
msgstr "Votre navigateur ne prend pas en charge la balise vidéo."
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -1,14 +1,10 @@
|
||||
import type { I18n } from '@lingui/core';
|
||||
import { msg } from '@lingui/macro';
|
||||
import { match } from 'ts-pattern';
|
||||
|
||||
import type {
|
||||
DocumentAuditLog,
|
||||
DocumentMeta,
|
||||
Field,
|
||||
Recipient,
|
||||
RecipientRole,
|
||||
} from '@documenso/prisma/client';
|
||||
import type { DocumentAuditLog, DocumentMeta, Field, Recipient } from '@documenso/prisma/client';
|
||||
import { RecipientRole } from '@documenso/prisma/client';
|
||||
|
||||
import { RECIPIENT_ROLES_DESCRIPTION_ENG } from '../constants/recipient-roles';
|
||||
import type {
|
||||
TDocumentAuditLog,
|
||||
TDocumentAuditLogDocumentMetaDiffSchema,
|
||||
@ -254,129 +250,119 @@ export const diffDocumentMetaChanges = (
|
||||
*
|
||||
* Provide a userId to prefix the action with the user, example 'X did Y'.
|
||||
*/
|
||||
export const formatDocumentAuditLogActionString = (
|
||||
export const formatDocumentAuditLogAction = (
|
||||
_: I18n['_'],
|
||||
auditLog: TDocumentAuditLog,
|
||||
userId?: number,
|
||||
) => {
|
||||
const { prefix, description } = formatDocumentAuditLogAction(auditLog, userId);
|
||||
|
||||
return prefix ? `${prefix} ${description}` : description;
|
||||
};
|
||||
|
||||
/**
|
||||
* Formats the audit log into a description of the action.
|
||||
*
|
||||
* Provide a userId to prefix the action with the user, example 'X did Y'.
|
||||
*/
|
||||
// Todo: Translations.
|
||||
export const formatDocumentAuditLogAction = (auditLog: TDocumentAuditLog, userId?: number) => {
|
||||
let prefix = userId === auditLog.userId ? 'You' : auditLog.name || auditLog.email || '';
|
||||
const prefix = userId === auditLog.userId ? _(msg`You`) : auditLog.name || auditLog.email || '';
|
||||
|
||||
const description = match(auditLog)
|
||||
.with({ type: DOCUMENT_AUDIT_LOG_TYPE.FIELD_CREATED }, () => ({
|
||||
anonymous: 'A field was added',
|
||||
identified: 'added a field',
|
||||
anonymous: msg`A field was added`,
|
||||
identified: msg`${prefix} added a field`,
|
||||
}))
|
||||
.with({ type: DOCUMENT_AUDIT_LOG_TYPE.FIELD_DELETED }, () => ({
|
||||
anonymous: 'A field was removed',
|
||||
identified: 'removed a field',
|
||||
anonymous: msg`A field was removed`,
|
||||
identified: msg`${prefix} removed a field`,
|
||||
}))
|
||||
.with({ type: DOCUMENT_AUDIT_LOG_TYPE.FIELD_UPDATED }, () => ({
|
||||
anonymous: 'A field was updated',
|
||||
identified: 'updated a field',
|
||||
anonymous: msg`A field was updated`,
|
||||
identified: msg`${prefix} updated a field`,
|
||||
}))
|
||||
.with({ type: DOCUMENT_AUDIT_LOG_TYPE.RECIPIENT_CREATED }, () => ({
|
||||
anonymous: 'A recipient was added',
|
||||
identified: 'added a recipient',
|
||||
anonymous: msg`A recipient was added`,
|
||||
identified: msg`${prefix} added a recipient`,
|
||||
}))
|
||||
.with({ type: DOCUMENT_AUDIT_LOG_TYPE.RECIPIENT_DELETED }, () => ({
|
||||
anonymous: 'A recipient was removed',
|
||||
identified: 'removed a recipient',
|
||||
anonymous: msg`A recipient was removed`,
|
||||
identified: msg`${prefix} removed a recipient`,
|
||||
}))
|
||||
.with({ type: DOCUMENT_AUDIT_LOG_TYPE.RECIPIENT_UPDATED }, () => ({
|
||||
anonymous: 'A recipient was updated',
|
||||
identified: 'updated a recipient',
|
||||
anonymous: msg`A recipient was updated`,
|
||||
identified: msg`${prefix} updated a recipient`,
|
||||
}))
|
||||
.with({ type: DOCUMENT_AUDIT_LOG_TYPE.DOCUMENT_CREATED }, () => ({
|
||||
anonymous: 'Document created',
|
||||
identified: 'created the document',
|
||||
anonymous: msg`Document created`,
|
||||
identified: msg`${prefix} created the document`,
|
||||
}))
|
||||
.with({ type: DOCUMENT_AUDIT_LOG_TYPE.DOCUMENT_DELETED }, () => ({
|
||||
anonymous: 'Document deleted',
|
||||
identified: 'deleted the document',
|
||||
anonymous: msg`Document deleted`,
|
||||
identified: msg`${prefix} deleted the document`,
|
||||
}))
|
||||
.with({ type: DOCUMENT_AUDIT_LOG_TYPE.DOCUMENT_FIELD_INSERTED }, () => ({
|
||||
anonymous: 'Field signed',
|
||||
identified: 'signed a field',
|
||||
anonymous: msg`Field signed`,
|
||||
identified: msg`${prefix} signed a field`,
|
||||
}))
|
||||
.with({ type: DOCUMENT_AUDIT_LOG_TYPE.DOCUMENT_FIELD_UNINSERTED }, () => ({
|
||||
anonymous: 'Field unsigned',
|
||||
identified: 'unsigned a field',
|
||||
anonymous: msg`Field unsigned`,
|
||||
identified: msg`${prefix} unsigned a field`,
|
||||
}))
|
||||
.with({ type: DOCUMENT_AUDIT_LOG_TYPE.DOCUMENT_VISIBILITY_UPDATED }, () => ({
|
||||
anonymous: 'Document visibility updated',
|
||||
identified: 'updated the document visibility',
|
||||
anonymous: msg`Document visibility updated`,
|
||||
identified: msg`${prefix} updated the document visibility`,
|
||||
}))
|
||||
.with({ type: DOCUMENT_AUDIT_LOG_TYPE.DOCUMENT_GLOBAL_AUTH_ACCESS_UPDATED }, () => ({
|
||||
anonymous: 'Document access auth updated',
|
||||
identified: 'updated the document access auth requirements',
|
||||
anonymous: msg`Document access auth updated`,
|
||||
identified: msg`${prefix} updated the document access auth requirements`,
|
||||
}))
|
||||
.with({ type: DOCUMENT_AUDIT_LOG_TYPE.DOCUMENT_GLOBAL_AUTH_ACTION_UPDATED }, () => ({
|
||||
anonymous: 'Document signing auth updated',
|
||||
identified: 'updated the document signing auth requirements',
|
||||
anonymous: msg`Document signing auth updated`,
|
||||
identified: msg`${prefix} updated the document signing auth requirements`,
|
||||
}))
|
||||
.with({ type: DOCUMENT_AUDIT_LOG_TYPE.DOCUMENT_META_UPDATED }, () => ({
|
||||
anonymous: 'Document updated',
|
||||
identified: 'updated the document',
|
||||
anonymous: msg`Document updated`,
|
||||
identified: msg`${prefix} updated the document`,
|
||||
}))
|
||||
.with({ type: DOCUMENT_AUDIT_LOG_TYPE.DOCUMENT_OPENED }, () => ({
|
||||
anonymous: 'Document opened',
|
||||
identified: 'opened the document',
|
||||
anonymous: msg`Document opened`,
|
||||
identified: msg`${prefix} opened the document`,
|
||||
}))
|
||||
.with({ type: DOCUMENT_AUDIT_LOG_TYPE.DOCUMENT_TITLE_UPDATED }, () => ({
|
||||
anonymous: 'Document title updated',
|
||||
identified: 'updated the document title',
|
||||
anonymous: msg`Document title updated`,
|
||||
identified: msg`${prefix} updated the document title`,
|
||||
}))
|
||||
.with({ type: DOCUMENT_AUDIT_LOG_TYPE.DOCUMENT_EXTERNAL_ID_UPDATED }, () => ({
|
||||
anonymous: 'Document external ID updated',
|
||||
identified: 'updated the document external ID',
|
||||
anonymous: msg`Document external ID updated`,
|
||||
identified: msg`${prefix} updated the document external ID`,
|
||||
}))
|
||||
.with({ type: DOCUMENT_AUDIT_LOG_TYPE.DOCUMENT_SENT }, () => ({
|
||||
anonymous: 'Document sent',
|
||||
identified: 'sent the document',
|
||||
anonymous: msg`Document sent`,
|
||||
identified: msg`${prefix} sent the document`,
|
||||
}))
|
||||
.with({ type: DOCUMENT_AUDIT_LOG_TYPE.DOCUMENT_MOVED_TO_TEAM }, () => ({
|
||||
anonymous: 'Document moved to team',
|
||||
identified: 'moved the document to team',
|
||||
anonymous: msg`Document moved to team`,
|
||||
identified: msg`${prefix} moved the document to team`,
|
||||
}))
|
||||
.with({ type: DOCUMENT_AUDIT_LOG_TYPE.DOCUMENT_RECIPIENT_COMPLETED }, ({ data }) => {
|
||||
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
|
||||
const action = RECIPIENT_ROLES_DESCRIPTION_ENG[data.recipientRole as RecipientRole]?.actioned;
|
||||
const userName = prefix || _(msg`Recipient`);
|
||||
|
||||
const value = action ? `${action.toLowerCase()} the document` : 'completed their task';
|
||||
const result = match(data.recipientRole)
|
||||
.with(RecipientRole.SIGNER, () => msg`${userName} signed the document`)
|
||||
.with(RecipientRole.VIEWER, () => msg`${userName} viewed the document`)
|
||||
.with(RecipientRole.APPROVER, () => msg`${userName} approved the document`)
|
||||
.with(RecipientRole.CC, () => msg`${userName} CC'd the document`)
|
||||
.otherwise(() => msg`${userName} completed their task`);
|
||||
|
||||
return {
|
||||
anonymous: `Recipient ${value}`,
|
||||
identified: value,
|
||||
anonymous: result,
|
||||
identified: result,
|
||||
};
|
||||
})
|
||||
.with({ type: DOCUMENT_AUDIT_LOG_TYPE.EMAIL_SENT }, ({ data }) => ({
|
||||
anonymous: `Email ${data.isResending ? 'resent' : 'sent'}`,
|
||||
identified: `${data.isResending ? 'resent' : 'sent'} an email to ${data.recipientEmail}`,
|
||||
anonymous: data.isResending ? msg`Email resent` : msg`Email sent`,
|
||||
identified: data.isResending
|
||||
? msg`${prefix} resent an email to ${data.recipientEmail}`
|
||||
: msg`${prefix} sent an email to ${data.recipientEmail}`,
|
||||
}))
|
||||
.with({ type: DOCUMENT_AUDIT_LOG_TYPE.DOCUMENT_COMPLETED }, () => ({
|
||||
anonymous: msg`Document completed`,
|
||||
identified: msg`Document completed`,
|
||||
}))
|
||||
.with({ type: DOCUMENT_AUDIT_LOG_TYPE.DOCUMENT_COMPLETED }, () => {
|
||||
// Clear the prefix since this should be considered an 'anonymous' event.
|
||||
prefix = '';
|
||||
|
||||
return {
|
||||
anonymous: 'Document completed',
|
||||
identified: 'Document completed',
|
||||
};
|
||||
})
|
||||
.exhaustive();
|
||||
|
||||
return {
|
||||
prefix,
|
||||
description: prefix ? description.identified : description.anonymous,
|
||||
description: _(prefix ? description.identified : description.anonymous),
|
||||
};
|
||||
};
|
||||
|
||||
@ -1,5 +1,9 @@
|
||||
import { type Field, type Recipient, RecipientRole, SigningStatus } from '@documenso/prisma/client';
|
||||
|
||||
import { NEXT_PUBLIC_WEBAPP_URL } from '../constants/app';
|
||||
|
||||
export const formatSigningLink = (token: string) => `${NEXT_PUBLIC_WEBAPP_URL()}/sign/${token}`;
|
||||
|
||||
/**
|
||||
* Whether a recipient can be modified by the document owner.
|
||||
*/
|
||||
|
||||
@ -11,6 +11,7 @@ import { createDocument } from '@documenso/lib/server-only/document/create-docum
|
||||
import { deleteDocument } from '@documenso/lib/server-only/document/delete-document';
|
||||
import { duplicateDocumentById } from '@documenso/lib/server-only/document/duplicate-document-by-id';
|
||||
import { findDocumentAuditLogs } from '@documenso/lib/server-only/document/find-document-audit-logs';
|
||||
import { findDocuments } from '@documenso/lib/server-only/document/find-documents';
|
||||
import { getDocumentById } from '@documenso/lib/server-only/document/get-document-by-id';
|
||||
import { getDocumentAndSenderByToken } from '@documenso/lib/server-only/document/get-document-by-token';
|
||||
import { getDocumentWithDetailsById } from '@documenso/lib/server-only/document/get-document-with-details-by-id';
|
||||
@ -31,6 +32,7 @@ import {
|
||||
ZDownloadAuditLogsMutationSchema,
|
||||
ZDownloadCertificateMutationSchema,
|
||||
ZFindDocumentAuditLogsQuerySchema,
|
||||
ZFindDocumentsQuerySchema,
|
||||
ZGetDocumentByIdQuerySchema,
|
||||
ZGetDocumentByTokenQuerySchema,
|
||||
ZGetDocumentWithDetailsByIdQuerySchema,
|
||||
@ -190,6 +192,37 @@ export const documentRouter = router({
|
||||
}
|
||||
}),
|
||||
|
||||
findDocuments: authenticatedProcedure
|
||||
.input(ZFindDocumentsQuerySchema)
|
||||
.query(async ({ input, ctx }) => {
|
||||
const { user } = ctx;
|
||||
|
||||
const { search, teamId, templateId, page, perPage, orderBy, source, status } = input;
|
||||
|
||||
try {
|
||||
const documents = await findDocuments({
|
||||
userId: user.id,
|
||||
teamId,
|
||||
templateId,
|
||||
search,
|
||||
source,
|
||||
status,
|
||||
page,
|
||||
perPage,
|
||||
orderBy,
|
||||
});
|
||||
|
||||
return documents;
|
||||
} catch (err) {
|
||||
console.error(err);
|
||||
|
||||
throw new TRPCError({
|
||||
code: 'BAD_REQUEST',
|
||||
message: 'We are unable to search for documents. Please try again later.',
|
||||
});
|
||||
}
|
||||
}),
|
||||
|
||||
findDocumentAuditLogs: authenticatedProcedure
|
||||
.input(ZFindDocumentAuditLogsQuerySchema)
|
||||
.query(async ({ input, ctx }) => {
|
||||
|
||||
@ -7,7 +7,30 @@ import {
|
||||
} from '@documenso/lib/types/document-auth';
|
||||
import { ZBaseTableSearchParamsSchema } from '@documenso/lib/types/search-params';
|
||||
import { isValidRedirectUrl } from '@documenso/lib/utils/is-valid-redirect-url';
|
||||
import { DocumentSigningOrder, FieldType, RecipientRole } from '@documenso/prisma/client';
|
||||
import {
|
||||
DocumentSigningOrder,
|
||||
DocumentSource,
|
||||
DocumentStatus,
|
||||
FieldType,
|
||||
RecipientRole,
|
||||
} from '@documenso/prisma/client';
|
||||
|
||||
export const ZFindDocumentsQuerySchema = ZBaseTableSearchParamsSchema.extend({
|
||||
teamId: z.number().min(1).optional(),
|
||||
templateId: z.number().min(1).optional(),
|
||||
search: z
|
||||
.string()
|
||||
.optional()
|
||||
.catch(() => undefined),
|
||||
source: z.nativeEnum(DocumentSource).optional(),
|
||||
status: z.nativeEnum(DocumentStatus).optional(),
|
||||
orderBy: z
|
||||
.object({
|
||||
column: z.enum(['createdAt']),
|
||||
direction: z.enum(['asc', 'desc']),
|
||||
})
|
||||
.optional(),
|
||||
}).omit({ query: true });
|
||||
|
||||
export const ZFindDocumentAuditLogsQuerySchema = ZBaseTableSearchParamsSchema.extend({
|
||||
documentId: z.number().min(1),
|
||||
|
||||
82
packages/ui/components/common/copy-text-button.tsx
Normal file
82
packages/ui/components/common/copy-text-button.tsx
Normal file
@ -0,0 +1,82 @@
|
||||
'use client';
|
||||
|
||||
import { useState } from 'react';
|
||||
|
||||
import { motion } from 'framer-motion';
|
||||
import { AnimatePresence } from 'framer-motion';
|
||||
import { CheckSquareIcon, CopyIcon } from 'lucide-react';
|
||||
|
||||
import { useCopyToClipboard } from '@documenso/lib/client-only/hooks/use-copy-to-clipboard';
|
||||
import { Button } from '@documenso/ui/primitives/button';
|
||||
|
||||
import { cn } from '../../lib/utils';
|
||||
|
||||
export type CopyTextButtonProps = {
|
||||
value: string;
|
||||
badgeContentUncopied?: React.ReactNode;
|
||||
badgeContentCopied?: React.ReactNode;
|
||||
onCopySuccess?: () => void;
|
||||
};
|
||||
|
||||
export const CopyTextButton = ({
|
||||
value,
|
||||
onCopySuccess,
|
||||
badgeContentUncopied,
|
||||
badgeContentCopied,
|
||||
}: CopyTextButtonProps) => {
|
||||
const [, copy] = useCopyToClipboard();
|
||||
|
||||
const [copiedTimeout, setCopiedTimeout] = useState<NodeJS.Timeout | null>(null);
|
||||
|
||||
const onCopy = async () => {
|
||||
await copy(value).then(() => onCopySuccess?.());
|
||||
|
||||
if (copiedTimeout) {
|
||||
clearTimeout(copiedTimeout);
|
||||
}
|
||||
|
||||
setCopiedTimeout(
|
||||
setTimeout(() => {
|
||||
setCopiedTimeout(null);
|
||||
}, 2000),
|
||||
);
|
||||
};
|
||||
|
||||
return (
|
||||
<Button
|
||||
type="button"
|
||||
variant="none"
|
||||
className="ml-2 h-7 rounded border bg-neutral-50 px-0.5 font-normal dark:border dark:border-neutral-500 dark:bg-neutral-600"
|
||||
onClick={async () => onCopy()}
|
||||
>
|
||||
<AnimatePresence mode="wait" initial={false}>
|
||||
<motion.div
|
||||
className="flex flex-row items-center"
|
||||
key={copiedTimeout ? 'copied' : 'copy'}
|
||||
initial={{ opacity: 0 }}
|
||||
animate={{ opacity: 1 }}
|
||||
exit={{ opacity: 0, transition: { duration: 0.1 } }}
|
||||
>
|
||||
{copiedTimeout ? badgeContentCopied : badgeContentUncopied}
|
||||
|
||||
<div
|
||||
className={cn(
|
||||
'flex h-6 w-6 items-center justify-center rounded transition-all hover:bg-neutral-200 hover:active:bg-neutral-300 dark:hover:bg-neutral-500 dark:hover:active:bg-neutral-400',
|
||||
{
|
||||
'ml-1': Boolean(badgeContentCopied || badgeContentUncopied),
|
||||
},
|
||||
)}
|
||||
>
|
||||
<div className="absolute">
|
||||
{copiedTimeout ? (
|
||||
<CheckSquareIcon className="h-3.5 w-3.5" />
|
||||
) : (
|
||||
<CopyIcon className="h-3.5 w-3.5" />
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
</motion.div>
|
||||
</AnimatePresence>
|
||||
</Button>
|
||||
);
|
||||
};
|
||||
Reference in New Issue
Block a user